@uiowa/uiowa-mfk
Version:
mfk, uiowa-mfk, uiowa-favorite-mfk, mfk-string
1 lines • 37.9 kB
Source Map (JSON)
{"version":3,"file":"uiowa-uiowa-mfk.mjs","sources":["../../../../projects/uiowa/uiowa-mfk/src/lib/models/mfk-field-name.ts","../../../../projects/uiowa/uiowa-mfk/src/lib/models/mfk-field-option.ts","../../../../projects/uiowa/uiowa-mfk/src/lib/models/mfk-string.ts","../../../../projects/uiowa/uiowa-mfk/src/lib/models/mfk-tools.ts","../../../../projects/uiowa/uiowa-mfk/src/lib/mfk-input/mfk-input.component.ts","../../../../projects/uiowa/uiowa-mfk/src/lib/mfk-input/mfk-input.component.html","../../../../projects/uiowa/uiowa-mfk/src/lib/mfk-string/mfk-string.component.ts","../../../../projects/uiowa/uiowa-mfk/src/lib/mfk-string/mfk-string.component.html","../../../../projects/uiowa/uiowa-mfk/src/lib/pipes/mfk-string-pipe.pipe.ts","../../../../projects/uiowa/uiowa-mfk/src/lib/pipes/who-key-string-pipe.pipe.ts","../../../../projects/uiowa/uiowa-mfk/src/lib/uiowa-mfk.module.ts","../../../../projects/uiowa/uiowa-mfk/src/public-api.ts","../../../../projects/uiowa/uiowa-mfk/src/uiowa-uiowa-mfk.ts"],"sourcesContent":["import { Mfk } from './mfk';\r\n\r\nexport class MfkFieldName {\r\n static FUND = 'fund' as keyof Mfk;\r\n static ORG = 'org' as keyof Mfk;\r\n static DEPT = 'dept' as keyof Mfk;\r\n static SUBDEPT = 'subdept' as keyof Mfk;\r\n static GRANTPGM = 'grantpgm' as keyof Mfk;\r\n static IACT = 'iact' as keyof Mfk;\r\n static OACT = 'oact' as keyof Mfk;\r\n static DACT = 'dact' as keyof Mfk;\r\n static FN = 'fn' as keyof Mfk;\r\n static CCTR = 'cctr' as keyof Mfk;\r\n static BRF = 'brf' as keyof Mfk;\r\n}\r\n","import { Mfk } from './mfk';\r\nimport { MfkFieldName } from './mfk-field-name';\r\n\r\n/**\r\n * Options for MFK field.\r\n *\r\n * allows to set field default value, set readonly attribute, set validation regex pattern. Example usage:\r\n *\r\n * ```typescript\r\n * new MfkFieldOption(MfkFieldName.IACT, '6218')\r\n * new MfkFieldOption(MfkFieldName.IACT, '6218', true)\r\n * new MfkFieldOption(MfkFieldName.BRF)\r\n * ```\r\n */\r\nexport class MfkFieldOption {\r\n readonly label: string;\r\n readonly width: number;\r\n readonly length: number;\r\n private readonly numericRegex = '^[0-9]+$';\r\n /**\r\n * Options for MFK field.\r\n *\r\n * allows to set field default value, set readonly attribute, set validation regex pattern. Example usage:\r\n *\r\n * ```typescript\r\n * new MfkFieldOption(MfkFieldName.IACT, '6218')\r\n * new MfkFieldOption(MfkFieldName.IACT, '6218', true)\r\n * new MfkFieldOption(MfkFieldName.BRF)\r\n * ```\r\n *\r\n * @param name (Required) the input field name. Use MfkFieldName type to get a proper value.\r\n * @param defaultValue (Optional) set a default value for this field. Default: ''.\r\n * @param readonly (Optional) set to true if the input field is readonly. Default: false.\r\n * @param valuePattern (Optional) set a regex for this field. Default: '^[0-9]+$'.\r\n */\r\n constructor(\r\n public readonly name: keyof Mfk,\r\n public readonly defaultValue: string = '',\r\n public readonly readonly: boolean = false,\r\n public readonly valuePattern: string = '^[0-9]+$'\r\n ) {\r\n switch (name) {\r\n case MfkFieldName.FUND:\r\n this.label = 'Fund';\r\n this.length = 3;\r\n break;\r\n case MfkFieldName.ORG:\r\n this.label = 'Org';\r\n this.length = 2;\r\n break;\r\n case MfkFieldName.DEPT:\r\n this.label = 'Dept';\r\n this.length = 4;\r\n break;\r\n case MfkFieldName.SUBDEPT:\r\n this.label = 'Subdept';\r\n this.length = 5;\r\n break;\r\n case MfkFieldName.GRANTPGM:\r\n this.label = `Grant/Pgm`;\r\n this.length = 8;\r\n break;\r\n case MfkFieldName.IACT:\r\n this.label = 'Iact';\r\n this.length = 4;\r\n break;\r\n case MfkFieldName.OACT:\r\n this.label = 'Oact';\r\n this.length = 3;\r\n break;\r\n case MfkFieldName.DACT:\r\n this.label = 'Dact';\r\n this.length = 5;\r\n break;\r\n case MfkFieldName.FN:\r\n this.label = 'Fn';\r\n this.length = 2;\r\n break;\r\n case MfkFieldName.CCTR:\r\n this.label = 'Cctr';\r\n this.length = 4;\r\n break;\r\n case MfkFieldName.BRF:\r\n this.label = 'Brf';\r\n this.length = 2;\r\n break;\r\n default:\r\n throw new Error(`MFK field name [${name.toUpperCase()}] is invalid.`);\r\n }\r\n\r\n this.width = this.length * 0.65 + 0.75;\r\n if (!valuePattern) {\r\n valuePattern = this.numericRegex;\r\n }\r\n if (this.readonly) {\r\n if (!this.defaultValue) {\r\n throw new Error(\r\n `Default value for readonly field [${name.toUpperCase()}] is required.`\r\n );\r\n }\r\n return; // if readonly, then don't validate default value\r\n }\r\n if (defaultValue) {\r\n if (defaultValue.length !== this.length) {\r\n throw new Error(\r\n `The default value [${defaultValue}] for ${name.toUpperCase()} is not ${\r\n this.length\r\n } digits long.`\r\n );\r\n }\r\n\r\n let reg = new RegExp(this.numericRegex);\r\n if (!reg.test(defaultValue)) {\r\n throw new Error(\r\n `The default value [${defaultValue}] for ${name.toUpperCase()} is not a number.`\r\n );\r\n }\r\n\r\n if (valuePattern !== this.numericRegex) {\r\n reg = new RegExp(valuePattern);\r\n if (!reg.test(defaultValue)) {\r\n throw new Error(\r\n `The default value [${defaultValue}] for ${name.toUpperCase()} doesn't match RegEx \"${valuePattern}\".`\r\n );\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import { Mfk } from './mfk';\r\n\r\nexport class MfkString {\r\n /**\r\n * MFK parsed from a string. Default value is an empty object.\r\n */\r\n readonly mfk: Mfk = {} as Mfk;\r\n\r\n readonly isValidMfk: boolean = false;\r\n\r\n /**\r\n * construct an MFK String and build an MFK object. Default MFK object is an empty object.\r\n * @param mfkString string. The constructor will strip out non-digit characters. The string length must be longer than 40.\r\n */\r\n constructor(public mfkString: string) {\r\n const s = mfkString.replace(/\\D/g, '');\r\n if (s && s.length >= 40) {\r\n this.mfk.fund = s.substring(0, 3);\r\n this.mfk.org = s.substring(3, 5);\r\n this.mfk.dept = s.substring(5, 9);\r\n this.mfk.subdept = s.substring(9, 14);\r\n this.mfk.grantpgm = s.substring(14, 22);\r\n this.mfk.iact = s.substring(22, 26);\r\n this.mfk.oact = s.substring(26, 29);\r\n this.mfk.dact = s.substring(29, 34);\r\n this.mfk.fn = s.substring(34, 36);\r\n this.mfk.cctr = s.substring(36, 40);\r\n if (s.length >= 42) {\r\n this.mfk.brf = s.substring(40, 42);\r\n }\r\n this.isValidMfk = true;\r\n }\r\n }\r\n}\r\n","import { Mfk } from './mfk';\r\nimport { MfkFieldName } from './mfk-field-name';\r\nimport { MfkString } from './mfk-string';\r\n\r\n/**\r\n * checks the equality of two Mfk objects\r\n * @param mfk1 an Mfk object\r\n * @param mfk2 an Mfk object\r\n */\r\nexport function areEqual(mfk1: Mfk, mfk2: Mfk): boolean {\r\n if (!mfk1 || !mfk2) {\r\n return false;\r\n }\r\n if (Object.keys(mfk1).length !== Object.keys(mfk2).length) {\r\n return false;\r\n }\r\n for (const k of Object.keys(mfk1)) {\r\n if (mfk1[k as keyof Mfk] !== mfk2[k as keyof Mfk]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n\r\n/**\r\n * converts an Mfk object to a string by joining 10 fields with '-' symbol.\r\n * @param mfk An Mfk object\r\n */\r\nexport function stringify(mfk: Mfk | null): string {\r\n if (!mfk) {\r\n return '';\r\n }\r\n const s = Object.keys(mfk)\r\n .filter((k) => k !== MfkFieldName.BRF)\r\n .map((k) => mfk[k as keyof Mfk])\r\n .join('-');\r\n return s;\r\n}\r\n\r\n/**\r\n * creates an empty Mfk object with all 10 fields being empty string\r\n */\r\nexport function emptyMfk(): Mfk {\r\n return {\r\n fund: '',\r\n org: '',\r\n dept: '',\r\n subdept: '',\r\n grantpgm: '',\r\n iact: '',\r\n oact: '',\r\n dact: '',\r\n fn: '',\r\n cctr: '',\r\n };\r\n}\r\n\r\n/**\r\n * checks if an Mfk object is in a valid format\r\n */\r\nexport function validFormat(mfk: Mfk): boolean {\r\n var mfkString = stringify(mfk);\r\n if (mfkString.length !== 49) {\r\n return false;\r\n }\r\n if (mfk.brf && mfk.brf.length !== 2) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\n/**\r\n * checks if each field of an Mfk object is in a valid format\r\n * returns an array of error messages\r\n * If the format is valid, then the returning array is empty.\r\n */\r\nexport function validateStructure(mfk: Mfk): string[] {\r\n const result: string[] = [];\r\n if (mfk.fund?.length !== 3) {\r\n result.push(`Invalid Fund: Length is incorrect (must be 3 digits)`);\r\n }\r\n if (mfk.org?.length !== 2) {\r\n result.push(`Invalid Org: Length is incorrect (must be 2 digits)`);\r\n }\r\n if (mfk.dept?.length !== 4) {\r\n result.push(`Invalid Dept: Length is incorrect (must be 4 digits)`);\r\n }\r\n if (mfk.subdept?.length !== 5) {\r\n result.push(`Invalid Subdept: Length is incorrect (must be 5 digits)`);\r\n }\r\n if (mfk.grantpgm?.length !== 8) {\r\n result.push(`Invalid Grant/Pgm: Length is incorrect (must be 8 digits)`);\r\n }\r\n if (mfk.iact?.length !== 4) {\r\n result.push(`Invalid Iact: Length is incorrect (must be 4 digits)`);\r\n }\r\n if (mfk.oact?.length !== 3) {\r\n result.push(`Invalid Oact: Length is incorrect (must be 3 digits)`);\r\n }\r\n if (mfk.dact?.length !== 5) {\r\n result.push(`Invalid Dact: Length is incorrect (must be 5 digits)`);\r\n }\r\n if (mfk.fn?.length !== 2) {\r\n result.push(`Invalid Fn: Length is incorrect (must be 2 digits)`);\r\n }\r\n if (mfk.cctr?.length !== 4) {\r\n result.push(`Invalid Cctr: Length is incorrect (must be 4 digits)`);\r\n }\r\n if (mfk.brf && mfk.brf.length !== 2) {\r\n result.push(`Invalid Brf: Length is incorrect (must be 2 digits)`);\r\n }\r\n return result;\r\n}\r\n\r\n/**\r\n * Convert a string to an MFK object\r\n * @param mfkString MFK string\r\n * @returns MFK object\r\n */\r\nexport function toMfk(mfkString: string): Mfk {\r\n var s = new MfkString(mfkString);\r\n return s.mfk;\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n QueryList,\r\n SimpleChanges,\r\n ViewChildren,\r\n} from '@angular/core';\r\nimport { DigitOnlyDirective } from '@uiowa/digit-only';\r\nimport { Mfk } from '../models/mfk';\r\nimport { MfkFieldName } from '../models/mfk-field-name';\r\nimport { MfkFieldOption } from '../models/mfk-field-option';\r\nimport { MfkString } from '../models/mfk-string';\r\nimport { areEqual, emptyMfk, stringify } from '../models/mfk-tools';\r\n\r\n@Component({\r\n selector: 'uiowa-mfk-input',\r\n standalone: false,\r\n templateUrl: './mfk-input.component.html',\r\n styleUrls: ['./mfk-input.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfkInputComponent implements OnInit, OnChanges {\r\n private _mfk: Mfk = emptyMfk();\r\n @Input()\r\n set mfk(mfk: Mfk) {\r\n mfk = Object.assign(emptyMfk(), mfk);\r\n this.options\r\n .filter((o) => o.defaultValue)\r\n .forEach((o) => {\r\n mfk[o.name] = mfk[o.name] || o.defaultValue;\r\n });\r\n this.options\r\n .filter((o) => o.readonly)\r\n .forEach((o) => {\r\n mfk[o.name] = o.defaultValue;\r\n });\r\n this._mfk = mfk;\r\n }\r\n get mfk(): Mfk {\r\n return this._mfk;\r\n }\r\n\r\n @Input() options: MfkFieldOption[] = [];\r\n @Output() mfkChange = new EventEmitter<Mfk>();\r\n @ViewChildren(DigitOnlyDirective)\r\n mfkInputFields!: QueryList<DigitOnlyDirective>;\r\n elementId = 'mfk-container_';\r\n elementName = 'mfk-container_';\r\n\r\n constructor(el: ElementRef) {\r\n const rand = Math.random().toString(36).substring(2);\r\n this.elementId +=\r\n el.nativeElement.getAttribute('id') ||\r\n el.nativeElement.getAttribute('name') ||\r\n rand;\r\n this.elementName +=\r\n el.nativeElement.getAttribute('name') ||\r\n el.nativeElement.getAttribute('id') ||\r\n rand;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['mfk'] && changes['mfk'].currentValue) {\r\n if (\r\n !areEqual(changes['mfk'].previousValue, changes['mfk'].currentValue)\r\n ) {\r\n this.mfk = changes['mfk'].currentValue;\r\n this.mfkChange.emit(this.mfk);\r\n }\r\n }\r\n if (changes['options'] || !this.options.length) {\r\n this.options = this.mergeOptions(changes['options']?.currentValue);\r\n this.mfk = this.mfk;\r\n this.mfkChange.emit(this.mfk);\r\n }\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n paste(e: ClipboardEvent) {\r\n const pastedInput: string =\r\n e.clipboardData?.getData('text/plain').replace(/\\D/g, '') ?? ''; // get a digit-only string\r\n if (!pastedInput) {\r\n return;\r\n }\r\n if (pastedInput.length >= 40) {\r\n const mfkString = new MfkString(pastedInput);\r\n if (mfkString.isValidMfk && !areEqual(this.mfk, mfkString.mfk)) {\r\n this.mfk = mfkString.mfk;\r\n this.originalMfk = stringify(this.mfk);\r\n this.mfkChange.emit(this.mfk);\r\n }\r\n }\r\n }\r\n\r\n onKeyup(e: KeyboardEvent) {\r\n if (this.originalMfk !== stringify(this.mfk)) {\r\n this.mfkChange.emit(this.mfk);\r\n }\r\n\r\n if (isNaN(Number(e.key))) {\r\n return; // only numbers can trigger auto jump feature.\r\n }\r\n\r\n const target = e.target as HTMLInputElement;\r\n const fieldName = target.name as keyof Mfk;\r\n if (this.mfk[fieldName]?.length === target.maxLength) {\r\n // auto jump to the next input field when current field is full\r\n const currentInputFieldIndex = this.options.findIndex(\r\n (o) => o.name === fieldName\r\n );\r\n for (let i = currentInputFieldIndex + 1; i < this.options.length; i++) {\r\n if (this.options[i].readonly) {\r\n continue;\r\n }\r\n const nextInputField = this.mfkInputFields.find(\r\n (v) => v.el.nativeElement['name'] === this.options[i].name\r\n );\r\n nextInputField?.el.nativeElement.focus();\r\n break;\r\n }\r\n }\r\n }\r\n\r\n private originalMfk = '';\r\n onKeydown(e: KeyboardEvent) {\r\n this.originalMfk = stringify(this.mfk);\r\n const target = e.target as HTMLInputElement;\r\n const fieldName = target.name as keyof Mfk;\r\n\r\n // handle \"tab\" key --> auto fill '0's if the input field has not completed\r\n if (e.key === 'Tab') {\r\n if (target.readOnly) {\r\n return;\r\n }\r\n while (this.mfk[fieldName]!.length < target.maxLength) {\r\n this.mfk[fieldName] = this.mfk[fieldName]!.concat('0');\r\n }\r\n }\r\n\r\n // handle \"backspace\" key\r\n if (\r\n (e.key === 'Backspace' || e.code === 'Backspace') &&\r\n this.mfk[fieldName]?.length === 0\r\n ) {\r\n const currentInputFieldIndex = this.options.findIndex(\r\n (o) => o.name === fieldName\r\n );\r\n // auto jump to the previous input field when current field is empty\r\n for (let i = currentInputFieldIndex - 1; i >= 0; i--) {\r\n if (this.options[i].readonly) {\r\n continue;\r\n }\r\n const prevInputField = this.mfkInputFields.find(\r\n (v) => v.el.nativeElement['name'] === this.options[i].name\r\n );\r\n prevInputField?.el.nativeElement.focus();\r\n break;\r\n }\r\n }\r\n }\r\n\r\n private mergeOptions(options: MfkFieldOption[] = []): MfkFieldOption[] {\r\n const result: MfkFieldOption[] = [\r\n new MfkFieldOption(MfkFieldName.FUND),\r\n new MfkFieldOption(MfkFieldName.ORG),\r\n new MfkFieldOption(MfkFieldName.DEPT),\r\n new MfkFieldOption(MfkFieldName.SUBDEPT),\r\n new MfkFieldOption(MfkFieldName.GRANTPGM),\r\n new MfkFieldOption(MfkFieldName.IACT),\r\n new MfkFieldOption(MfkFieldName.OACT),\r\n new MfkFieldOption(MfkFieldName.DACT),\r\n new MfkFieldOption(MfkFieldName.FN),\r\n new MfkFieldOption(MfkFieldName.CCTR),\r\n ];\r\n if (options && options.length > 0) {\r\n for (const option of options) {\r\n const fieldOption = result.find((o) => o.name === option.name);\r\n if (fieldOption) {\r\n const index = result.indexOf(fieldOption);\r\n result[index] = option;\r\n } else {\r\n result.push(option);\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n}\r\n","<form\r\n id=\"{{ elementId }}\"\r\n name=\"{{ elementName }}\"\r\n [attr.name]=\"elementName\"\r\n class=\"mfk-container\"\r\n>\r\n <div class=\"mfk-field\" *ngFor=\"let option of options\">\r\n <label for=\"{{ elementId + option.name }}\">\r\n {{ option.label }}\r\n </label>\r\n <input\r\n type=\"text\"\r\n id=\"{{ elementId + option.name }}\"\r\n name=\"{{ option.name }}\"\r\n [attr.name]=\"option.name\"\r\n [style.width.rem]=\"option.width\"\r\n [attr.aria-label]=\"option.name\"\r\n [attr.maxlength]=\"option.length\"\r\n [readOnly]=\"option.readonly\"\r\n [(ngModel)]=\"mfk[option.name]\"\r\n (paste)=\"paste($event)\"\r\n (keyup)=\"onKeyup($event)\"\r\n (keydown)=\"onKeydown($event)\"\r\n inputmode=\"numeric\"\r\n pattern=\"[0-9]*\"\r\n digitOnly\r\n />\r\n </div>\r\n</form>\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { Mfk } from '../models/mfk';\r\n\r\n@Component({\r\n selector: 'uiowa-mfk-string',\r\n standalone: false,\r\n templateUrl: './mfk-string.component.html',\r\n styleUrls: ['./mfk-string.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MfkStringComponent {\r\n @Input() mfk: Mfk | null | undefined = null;\r\n}\r\n","@if(mfk){\r\n<span>\r\n <span>{{ mfk.fund }}</span>\r\n <span>-{{ mfk.org }}</span>\r\n <span>-{{ mfk.dept }}</span>\r\n <span>-{{ mfk.subdept }}</span>\r\n <span>-{{ mfk.grantpgm }}</span>\r\n <span>-{{ mfk.iact }}</span>\r\n <span>-{{ mfk.oact }}</span>\r\n <span>-{{ mfk.dact }}</span>\r\n <span>-{{ mfk.fn }}</span>\r\n <span>-{{ mfk.cctr }}</span>\r\n @if(mfk.brf){ <span>-{{ mfk.brf }}</span> }\r\n</span>\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Mfk } from '../models/mfk';\r\nimport { stringify } from '../models/mfk-tools';\r\n\r\n@Pipe({\r\n name: 'mfkString',\r\n standalone: false,\r\n})\r\nexport class MfkStringPipePipe implements PipeTransform {\r\n transform(value: Mfk, ...args: unknown[]): string {\r\n return stringify(value);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Mfk } from '../models/mfk';\r\n\r\n@Pipe({\r\n name: 'whoKeyString',\r\n standalone: false,\r\n})\r\nexport class WhoKeyStringPipePipe implements PipeTransform {\r\n transform(value: Mfk, ...args: unknown[]): string {\r\n if (!value) {\r\n return '';\r\n }\r\n return (\r\n value.fund +\r\n '-' +\r\n value.org +\r\n '-' +\r\n value.dept +\r\n '-' +\r\n value.subdept +\r\n '-' +\r\n value.grantpgm +\r\n '-' +\r\n value.fn\r\n );\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { DigitOnlyDirective } from '@uiowa/digit-only';\r\n\r\nimport { MfkInputComponent } from './mfk-input/mfk-input.component';\r\nimport { MfkStringComponent } from './mfk-string/mfk-string.component';\r\nimport { MfkStringPipePipe } from './pipes/mfk-string-pipe.pipe';\r\nimport { WhoKeyStringPipePipe } from './pipes/who-key-string-pipe.pipe';\r\n\r\n@NgModule({\r\n declarations: [\r\n MfkInputComponent,\r\n MfkStringComponent,\r\n MfkStringPipePipe,\r\n WhoKeyStringPipePipe,\r\n ],\r\n imports: [CommonModule, FormsModule, DigitOnlyDirective],\r\n exports: [\r\n MfkInputComponent,\r\n MfkStringComponent,\r\n MfkStringPipePipe,\r\n WhoKeyStringPipePipe,\r\n DigitOnlyDirective,\r\n ],\r\n})\r\nexport class UiowaMfkModule {}\r\n","/*\r\n * Public API Surface of uiowa-mfk\r\n */\r\n\r\nexport * from './lib/mfk-input/mfk-input.component';\r\nexport * from './lib/mfk-string/mfk-string.component';\r\nexport * from './lib/models/mfk';\r\nexport * from './lib/models/mfk-field-name';\r\nexport * from './lib/models/mfk-field-option';\r\nexport * from './lib/models/mfk-string';\r\nexport * from './lib/models/mfk-tools';\r\nexport * from './lib/models/validated-mfk';\r\nexport * from './lib/pipes/mfk-string-pipe.pipe';\r\nexport * from './lib/pipes/who-key-string-pipe.pipe';\r\nexport * from './lib/uiowa-mfk.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;MAEa,YAAY,CAAA;AACvB,IAAA,OAAO,IAAI,GAAG,MAAmB;AACjC,IAAA,OAAO,GAAG,GAAG,KAAkB;AAC/B,IAAA,OAAO,IAAI,GAAG,MAAmB;AACjC,IAAA,OAAO,OAAO,GAAG,SAAsB;AACvC,IAAA,OAAO,QAAQ,GAAG,UAAuB;AACzC,IAAA,OAAO,IAAI,GAAG,MAAmB;AACjC,IAAA,OAAO,IAAI,GAAG,MAAmB;AACjC,IAAA,OAAO,IAAI,GAAG,MAAmB;AACjC,IAAA,OAAO,EAAE,GAAG,IAAiB;AAC7B,IAAA,OAAO,IAAI,GAAG,MAAmB;AACjC,IAAA,OAAO,GAAG,GAAG,KAAkB;;;ACVjC;;;;;;;;;;AAUG;MACU,cAAc,CAAA;AAsBP,IAAA,IAAA;AACA,IAAA,YAAA;AACA,IAAA,QAAA;AACA,IAAA,YAAA;AAxBT,IAAA,KAAK;AACL,IAAA,KAAK;AACL,IAAA,MAAM;IACE,YAAY,GAAG,UAAU;AAC1C;;;;;;;;;;;;;;;AAeG;IACH,WACkB,CAAA,IAAe,EACf,YAAuB,GAAA,EAAE,EACzB,QAAoB,GAAA,KAAK,EACzB,YAAA,GAAuB,UAAU,EAAA;QAHjC,IAAI,CAAA,IAAA,GAAJ,IAAI;QACJ,IAAY,CAAA,YAAA,GAAZ,YAAY;QACZ,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAY,CAAA,YAAA,GAAZ,YAAY;QAE5B,QAAQ,IAAI;YACV,KAAK,YAAY,CAAC,IAAI;AACpB,gBAAA,IAAI,CAAC,KAAK,GAAG,MAAM;AACnB,gBAAA,IAAI,CAAC,MAAM,GAAG,CAAC;gBACf;YACF,KAAK,YAAY,CAAC,GAAG;AACnB,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,gBAAA,IAAI,CAAC,MAAM,GAAG,CAAC;gBACf;YACF,KAAK,YAAY,CAAC,IAAI;AACpB,gBAAA,IAAI,CAAC,KAAK,GAAG,MAAM;AACnB,gBAAA,IAAI,CAAC,MAAM,GAAG,CAAC;gBACf;YACF,KAAK,YAAY,CAAC,OAAO;AACvB,gBAAA,IAAI,CAAC,KAAK,GAAG,SAAS;AACtB,gBAAA,IAAI,CAAC,MAAM,GAAG,CAAC;gBACf;YACF,KAAK,YAAY,CAAC,QAAQ;AACxB,gBAAA,IAAI,CAAC,KAAK,GAAG,CAAA,SAAA,CAAW;AACxB,gBAAA,IAAI,CAAC,MAAM,GAAG,CAAC;gBACf;YACF,KAAK,YAAY,CAAC,IAAI;AACpB,gBAAA,IAAI,CAAC,KAAK,GAAG,MAAM;AACnB,gBAAA,IAAI,CAAC,MAAM,GAAG,CAAC;gBACf;YACF,KAAK,YAAY,CAAC,IAAI;AACpB,gBAAA,IAAI,CAAC,KAAK,GAAG,MAAM;AACnB,gBAAA,IAAI,CAAC,MAAM,GAAG,CAAC;gBACf;YACF,KAAK,YAAY,CAAC,IAAI;AACpB,gBAAA,IAAI,CAAC,KAAK,GAAG,MAAM;AACnB,gBAAA,IAAI,CAAC,MAAM,GAAG,CAAC;gBACf;YACF,KAAK,YAAY,CAAC,EAAE;AAClB,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,gBAAA,IAAI,CAAC,MAAM,GAAG,CAAC;gBACf;YACF,KAAK,YAAY,CAAC,IAAI;AACpB,gBAAA,IAAI,CAAC,KAAK,GAAG,MAAM;AACnB,gBAAA,IAAI,CAAC,MAAM,GAAG,CAAC;gBACf;YACF,KAAK,YAAY,CAAC,GAAG;AACnB,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,gBAAA,IAAI,CAAC,MAAM,GAAG,CAAC;gBACf;AACF,YAAA;gBACE,MAAM,IAAI,KAAK,CAAC,CAAmB,gBAAA,EAAA,IAAI,CAAC,WAAW,EAAE,CAAe,aAAA,CAAA,CAAC;;QAGzE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI;QACtC,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,YAAY,GAAG,IAAI,CAAC,YAAY;;AAElC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;gBACtB,MAAM,IAAI,KAAK,CACb,CAAqC,kCAAA,EAAA,IAAI,CAAC,WAAW,EAAE,CAAgB,cAAA,CAAA,CACxE;;AAEH,YAAA,OAAO;;QAET,IAAI,YAAY,EAAE;YAChB,IAAI,YAAY,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;AACvC,gBAAA,MAAM,IAAI,KAAK,CACb,CAAsB,mBAAA,EAAA,YAAY,SAAS,IAAI,CAAC,WAAW,EAAE,WAC3D,IAAI,CAAC,MACP,CAAA,aAAA,CAAe,CAChB;;YAGH,IAAI,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;YACvC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AAC3B,gBAAA,MAAM,IAAI,KAAK,CACb,CAAA,mBAAA,EAAsB,YAAY,CAAA,MAAA,EAAS,IAAI,CAAC,WAAW,EAAE,CAAmB,iBAAA,CAAA,CACjF;;AAGH,YAAA,IAAI,YAAY,KAAK,IAAI,CAAC,YAAY,EAAE;AACtC,gBAAA,GAAG,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC;gBAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AAC3B,oBAAA,MAAM,IAAI,KAAK,CACb,CAAA,mBAAA,EAAsB,YAAY,CAAS,MAAA,EAAA,IAAI,CAAC,WAAW,EAAE,CAAA,sBAAA,EAAyB,YAAY,CAAA,EAAA,CAAI,CACvG;;;;;AAKV;;MC9HY,SAAS,CAAA;AAYD,IAAA,SAAA;AAXnB;;AAEG;IACM,GAAG,GAAQ,EAAS;IAEpB,UAAU,GAAY,KAAK;AAEpC;;;AAGG;AACH,IAAA,WAAA,CAAmB,SAAiB,EAAA;QAAjB,IAAS,CAAA,SAAA,GAAT,SAAS;QAC1B,MAAM,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE;AACvB,YAAA,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;AACjC,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;AAChC,YAAA,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;AACjC,YAAA,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;AACrC,YAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;AACvC,YAAA,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;AACnC,YAAA,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;AACnC,YAAA,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;AACnC,YAAA,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;AACjC,YAAA,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;AACnC,YAAA,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE;AAClB,gBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;;AAEpC,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;;;AAG3B;;AC7BD;;;;AAIG;AACa,SAAA,QAAQ,CAAC,IAAS,EAAE,IAAS,EAAA;AAC3C,IAAA,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE;AAClB,QAAA,OAAO,KAAK;;AAEd,IAAA,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;AACzD,QAAA,OAAO,KAAK;;IAEd,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACjC,IAAI,IAAI,CAAC,CAAc,CAAC,KAAK,IAAI,CAAC,CAAc,CAAC,EAAE;AACjD,YAAA,OAAO,KAAK;;;AAGhB,IAAA,OAAO,IAAI;AACb;AAEA;;;AAGG;AACG,SAAU,SAAS,CAAC,GAAe,EAAA;IACvC,IAAI,CAAC,GAAG,EAAE;AACR,QAAA,OAAO,EAAE;;AAEX,IAAA,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;SACtB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,YAAY,CAAC,GAAG;SACpC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAc,CAAC;SAC9B,IAAI,CAAC,GAAG,CAAC;AACZ,IAAA,OAAO,CAAC;AACV;AAEA;;AAEG;SACa,QAAQ,GAAA;IACtB,OAAO;AACL,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,GAAG,EAAE,EAAE;AACP,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,QAAQ,EAAE,EAAE;AACZ,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,EAAE,EAAE,EAAE;AACN,QAAA,IAAI,EAAE,EAAE;KACT;AACH;AAEA;;AAEG;AACG,SAAU,WAAW,CAAC,GAAQ,EAAA;AAClC,IAAA,IAAI,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC;AAC9B,IAAA,IAAI,SAAS,CAAC,MAAM,KAAK,EAAE,EAAE;AAC3B,QAAA,OAAO,KAAK;;AAEd,IAAA,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;AACnC,QAAA,OAAO,KAAK;;AAEd,IAAA,OAAO,IAAI;AACb;AAEA;;;;AAIG;AACG,SAAU,iBAAiB,CAAC,GAAQ,EAAA;IACxC,MAAM,MAAM,GAAa,EAAE;IAC3B,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,EAAE;AAC1B,QAAA,MAAM,CAAC,IAAI,CAAC,CAAA,oDAAA,CAAsD,CAAC;;IAErE,IAAI,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,EAAE;AACzB,QAAA,MAAM,CAAC,IAAI,CAAC,CAAA,mDAAA,CAAqD,CAAC;;IAEpE,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,EAAE;AAC1B,QAAA,MAAM,CAAC,IAAI,CAAC,CAAA,oDAAA,CAAsD,CAAC;;IAErE,IAAI,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,EAAE;AAC7B,QAAA,MAAM,CAAC,IAAI,CAAC,CAAA,uDAAA,CAAyD,CAAC;;IAExE,IAAI,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,CAAC,EAAE;AAC9B,QAAA,MAAM,CAAC,IAAI,CAAC,CAAA,yDAAA,CAA2D,CAAC;;IAE1E,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,EAAE;AAC1B,QAAA,MAAM,CAAC,IAAI,CAAC,CAAA,oDAAA,CAAsD,CAAC;;IAErE,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,EAAE;AAC1B,QAAA,MAAM,CAAC,IAAI,CAAC,CAAA,oDAAA,CAAsD,CAAC;;IAErE,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,EAAE;AAC1B,QAAA,MAAM,CAAC,IAAI,CAAC,CAAA,oDAAA,CAAsD,CAAC;;IAErE,IAAI,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,CAAC,EAAE;AACxB,QAAA,MAAM,CAAC,IAAI,CAAC,CAAA,kDAAA,CAAoD,CAAC;;IAEnE,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,EAAE;AAC1B,QAAA,MAAM,CAAC,IAAI,CAAC,CAAA,oDAAA,CAAsD,CAAC;;AAErE,IAAA,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;AACnC,QAAA,MAAM,CAAC,IAAI,CAAC,CAAA,mDAAA,CAAqD,CAAC;;AAEpE,IAAA,OAAO,MAAM;AACf;AAEA;;;;AAIG;AACG,SAAU,KAAK,CAAC,SAAiB,EAAA;AACrC,IAAA,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC;IAChC,OAAO,CAAC,CAAC,GAAG;AACd;;MC/Fa,iBAAiB,CAAA;IACpB,IAAI,GAAQ,QAAQ,EAAE;IAC9B,IACI,GAAG,CAAC,GAAQ,EAAA;QACd,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC;AACpC,QAAA,IAAI,CAAC;aACF,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY;AAC5B,aAAA,OAAO,CAAC,CAAC,CAAC,KAAI;AACb,YAAA,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY;AAC7C,SAAC,CAAC;AACJ,QAAA,IAAI,CAAC;aACF,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ;AACxB,aAAA,OAAO,CAAC,CAAC,CAAC,KAAI;YACb,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY;AAC9B,SAAC,CAAC;AACJ,QAAA,IAAI,CAAC,IAAI,GAAG,GAAG;;AAEjB,IAAA,IAAI,GAAG,GAAA;QACL,OAAO,IAAI,CAAC,IAAI;;IAGT,OAAO,GAAqB,EAAE;AAC7B,IAAA,SAAS,GAAG,IAAI,YAAY,EAAO;AAE7C,IAAA,cAAc;IACd,SAAS,GAAG,gBAAgB;IAC5B,WAAW,GAAG,gBAAgB;AAE9B,IAAA,WAAA,CAAY,EAAc,EAAA;AACxB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,SAAS;AACZ,YAAA,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC;AACnC,gBAAA,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC;AACrC,gBAAA,IAAI;AACN,QAAA,IAAI,CAAC,WAAW;AACd,YAAA,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC;AACrC,gBAAA,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC;AACnC,gBAAA,IAAI;;AAGR,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE;AACjD,YAAA,IACE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,EACpE;gBACA,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,YAAY;gBACtC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;;;AAGjC,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AAC9C,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC;AAClE,YAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;YACnB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;;;AAIjC,IAAA,QAAQ;AAER,IAAA,KAAK,CAAC,CAAiB,EAAA;QACrB,MAAM,WAAW,GACf,CAAC,CAAC,aAAa,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;QAClE,IAAI,CAAC,WAAW,EAAE;YAChB;;AAEF,QAAA,IAAI,WAAW,CAAC,MAAM,IAAI,EAAE,EAAE;AAC5B,YAAA,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC;AAC5C,YAAA,IAAI,SAAS,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE;AAC9D,gBAAA,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG;gBACxB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;gBACtC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;;;;AAKnC,IAAA,OAAO,CAAC,CAAgB,EAAA;QACtB,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC5C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;;QAG/B,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AACxB,YAAA,OAAO;;AAGT,QAAA,MAAM,MAAM,GAAG,CAAC,CAAC,MAA0B;AAC3C,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,IAAiB;AAC1C,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,SAAS,EAAE;;AAEpD,YAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CACnD,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,SAAS,CAC5B;AACD,YAAA,KAAK,IAAI,CAAC,GAAG,sBAAsB,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACrE,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;oBAC5B;;AAEF,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAC7C,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAC3D;AACD,gBAAA,cAAc,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;gBACxC;;;;IAKE,WAAW,GAAG,EAAE;AACxB,IAAA,SAAS,CAAC,CAAgB,EAAA;QACxB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;AACtC,QAAA,MAAM,MAAM,GAAG,CAAC,CAAC,MAA0B;AAC3C,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,IAAiB;;AAG1C,QAAA,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,EAAE;AACnB,YAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;gBACnB;;AAEF,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;AACrD,gBAAA,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,MAAM,CAAC,GAAG,CAAC;;;;AAK1D,QAAA,IACE,CAAC,CAAC,CAAC,GAAG,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW;YAChD,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,CAAC,EACjC;AACA,YAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CACnD,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,SAAS,CAC5B;;AAED,YAAA,KAAK,IAAI,CAAC,GAAG,sBAAsB,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBACpD,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;oBAC5B;;AAEF,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAC7C,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAC3D;AACD,gBAAA,cAAc,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;gBACxC;;;;IAKE,YAAY,CAAC,UAA4B,EAAE,EAAA;AACjD,QAAA,MAAM,MAAM,GAAqB;AAC/B,YAAA,IAAI,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC;AACrC,YAAA,IAAI,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC;AACpC,YAAA,IAAI,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC;AACrC,YAAA,IAAI,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC;AACxC,YAAA,IAAI,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC;AACzC,YAAA,IAAI,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC;AACrC,YAAA,IAAI,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC;AACrC,YAAA,IAAI,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC;AACrC,YAAA,IAAI,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC;AACnC,YAAA,IAAI,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC;SACtC;QACD,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,YAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC5B,gBAAA,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC;gBAC9D,IAAI,WAAW,EAAE;oBACf,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;AACzC,oBAAA,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM;;qBACjB;AACL,oBAAA,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;;;;AAIzB,QAAA,OAAO,MAAM;;wGArKJ,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAjB,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAuBd,kBAAkB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClDlC,43BA6BA,EAAA,MAAA,EAAA,CAAA,yzBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,sEAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,KAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDFa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EACf,UAAA,EAAA,KAAK,EAGA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,43BAAA,EAAA,MAAA,EAAA,CAAA,yzBAAA,CAAA,EAAA;+EAK3C,GAAG,EAAA,CAAA;sBADN;gBAmBQ,OAAO,EAAA,CAAA;sBAAf;gBACS,SAAS,EAAA,CAAA;sBAAlB;gBAED,cAAc,EAAA,CAAA;sBADb,YAAY;uBAAC,kBAAkB;;;MExCrB,kBAAkB,CAAA;IACpB,GAAG,GAA2B,IAAI;wGADhC,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,qGCV/B,ibAeA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FDLa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAChB,UAAA,EAAA,KAAK,EAGA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,ibAAA,EAAA;8BAGtC,GAAG,EAAA,CAAA;sBAAX;;;MEHU,iBAAiB,CAAA;AAC5B,IAAA,SAAS,CAAC,KAAU,EAAE,GAAG,IAAe,EAAA;AACtC,QAAA,OAAO,SAAS,CAAC,KAAK,CAAC;;wGAFd,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAAjB,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,WAAW;AACjB,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;;MCAY,oBAAoB,CAAA;AAC/B,IAAA,SAAS,CAAC,KAAU,EAAE,GAAG,IAAe,EAAA;QACtC,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,EAAE;;QAEX,QACE,KAAK,CAAC,IAAI;YACV,GAAG;AACH,YAAA,KAAK,CAAC,GAAG;YACT,GAAG;AACH,YAAA,KAAK,CAAC,IAAI;YACV,GAAG;AACH,YAAA,KAAK,CAAC,OAAO;YACb,GAAG;AACH,YAAA,KAAK,CAAC,QAAQ;YACd,GAAG;YACH,KAAK,CAAC,EAAE;;wGAhBD,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;sGAApB,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA;;;MCoBY,cAAc,CAAA;wGAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,iBAdvB,iBAAiB;YACjB,kBAAkB;YAClB,iBAAiB;AACjB,YAAA,oBAAoB,aAEZ,YAAY,EAAE,WAAW,EAAE,kBAAkB,aAErD,iBAAiB;YACjB,kBAAkB;YAClB,iBAAiB;YACjB,oBAAoB;YACpB,kBAAkB,CAAA,EAAA,CAAA;yGAGT,cAAc,EAAA,OAAA,EAAA,CATf,YAAY,EAAE,WAAW,CAAA,EAAA,CAAA;;4FASxB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAhB1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,iBAAiB;wBACjB,kBAAkB;wBAClB,iBAAiB;wBACjB,oBAAoB;AACrB,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,kBAAkB,CAAC;AACxD,oBAAA,OAAO,EAAE;wBACP,iBAAiB;wBACjB,kBAAkB;wBAClB,iBAAiB;wBACjB,oBAAoB;wBACpB,kBAAkB;AACnB,qBAAA;AACF,iBAAA;;;ACzBD;;AAEG;;ACFH;;AAEG;;;;"}