@klippa/ngx-enhancy-forms 20.0.2 → 20.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"klippa-ngx-enhancy-forms.mjs","sources":["../../../../projects/klippa/ngx-enhancy-forms/src/lib/util/values.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/util/arrays.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/util/dom.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/util/objects.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/util/angular.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/onRender.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/warning-icon/warning-icon.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/warning-icon/warning-icon.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elementIsTruncatedCb.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-element/form-element.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-element/form-element.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/value-accessor-base/value-accessor-base.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/loading-indicator/loading-indicator.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/loading-indicator/loading-indicator.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/button/button.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/button/button.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/checkbox/checkbox.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/checkbox/checkbox.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/email/email-input.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/email/email-input.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/number-input/number-input.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/number-input/number-input.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/password-field/password-field.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/password-field/password-field.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/select/select.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/select/select.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/select/select-footer/select-footer.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/select/select-footer/select-footer.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/sortable-items/sortable-items.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/sortable-items/sortable-items.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/text-input/text-input.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/text-input/text-input.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/toggle/toggle.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/toggle/toggle.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-caption/form-caption.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-caption/form-caption.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-error/form-error.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-error/form-error.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-validation-error/form-validation-error.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-submit-button/form-submit-button.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-submit-button/form-submit-button.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/value-accessor-base/multiple-value-accessor-base.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/validators/dateValidator.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/date-time-picker/date-time-picker.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/date-time-picker/date-time-picker.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/date-picker/date-picker.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/date-picker/date-picker.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/material.module.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/file-input/file-input.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/file-input/file-input.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/sortable-grouped-items/sortable-grouped-items.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/sortable-grouped-items/sortable-grouped-items.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/validators/timeValidator.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/hour-minute-input/hour-minute-input.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/hour-minute-input/hour-minute-input.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/radio/radio.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/radio/radio.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/withTooltip.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/text-area/text-area.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/text-area/text-area.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-caption-end/form-caption-end.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-caption-end/form-caption-end.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/ngx-enhancy-forms.module.ts","../../../../projects/klippa/ngx-enhancy-forms/src/public-api.ts","../../../../projects/klippa/ngx-enhancy-forms/src/klippa-ngx-enhancy-forms.ts"],"sourcesContent":["import { isString } from 'lodash-es';\n\nexport function stringIsSetAndFilled(s: string): boolean {\n\treturn isString(s) && s.length > 0;\n}\n\nexport function isNullOrUndefined(value: any): boolean {\n\treturn value === null || value === undefined;\n}\n\nexport function numberIsSet(value: any): boolean {\n\treturn isValueSet(value) && typeof value === 'number';\n}\n\nexport function isValueSet(value: any): boolean {\n\treturn value !== null && value !== undefined;\n}\n\nexport function stringOrArrayIsSetAndEmpty(value: any[] | string): boolean {\n\treturn value !== null && value !== undefined && value.length === 0;\n}\n\nexport function truncateString(s: string, length: number): string {\n\tif (s.length < length) {\n\t\treturn s;\n\t}\n\treturn s.substring(0, length) + '...';\n}\n\n","import { isArray } from 'lodash';\nimport { Newable } from './classes';\nimport { isValueSet } from './values';\n\nexport function removeDuplicatesFromArraysWithComparator(comparator: (e1: any, e2: any) => boolean, ...arrays: any[]): any {\n\tlet combined = [];\n\n\tfor (const array of arrays) {\n\t\tcombined = combined.concat(array);\n\t}\n\n\treturn combined.filter((c, i) => {\n\t\tconst firstOccurrenceIndex = combined.findIndex((c2) => comparator(c, c2));\n\t\treturn i === firstOccurrenceIndex;\n\t});\n}\n\nexport function removeDuplicatesFromArray<T>(array: Array<T>): Array<T> {\n\treturn array.filter((c, i) => {\n\t\tconst firstOccurrenceIndex = array.findIndex((c2) => c2 === c);\n\t\treturn i === firstOccurrenceIndex;\n\t});\n}\n\nexport function insertAtIndex(arr, index, item): void {\n\tarr.splice(index, 0, item);\n}\n\nexport function arrayIsSetAndFilled(arr: any): boolean {\n\treturn isArray(arr) && arr !== null && arr !== undefined && arr.length > 0;\n}\n\nexport function asArray(value: any): Array<any> {\n\tif (isValueSet(value)) {\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value;\n\t\t}\n\t\treturn [value];\n\t}\n\treturn [];\n}\n\nexport function splitArrayByCondition<T>(value: Array<T>, condition: (current: T) => boolean): Array<Array<T>> {\n\treturn value.reduce((acc, cur) => {\n\t\tif (condition(cur)) {\n\t\t\tacc.push([]);\n\t\t} else {\n\t\t\tacc[acc.length - 1].push(cur);\n\t\t}\n\t\treturn acc;\n\t}, [[]]);\n}\n\nexport function isArrayOf<T>(arr: Array<T | any>, kind: Newable<T>): arr is Array<T> {\n\treturn arr.reduce((acc, val) => acc && val instanceof kind, true);\n}\n\n","export function getAllLimitingContainers(element: Element): Array<HTMLElement> {\n\tconst result = [];\n\tlet current = element;\n\twhile (current.parentElement) {\n\t\tif (isLimitingContainer(current.parentElement)) {\n\t\t\tresult.push(current.parentElement);\n\t\t}\n\t\tcurrent = current.parentElement;\n\t}\n\treturn result;\n}\n\nexport function isLimitingContainer(element: Element): boolean {\n\treturn element.scrollHeight > element.clientHeight;\n}\n","function mergeArray(arrA: Array<any>, arrB: Array<any>): Array<any> {\n\tconst arr = new Array(Math.max(arrA.length, arrB.length));\n\n\tfor (let i = 0; i < arr.length; i++) {\n\t\tif (typeof arrA[i] === 'object' && typeof arrB[i] === 'object') {\n\t\t\tarr[i] = deepMerge(arrA[i], arrB[i]);\n\t\t} else {\n\t\t\tarr[i] = arrB[i] ?? arrA[i];\n\t\t}\n\t}\n\n\treturn arr;\n}\n\nexport function deepMerge<\n\tA extends object | Array<any>,\n\tB extends object | Array<any>\n>(objA: A, objB: B): A | B {\n\tif (Array.isArray(objA) || Array.isArray(objB)) {\n\t\tif (Array.isArray(objA) && Array.isArray(objB)) {\n\t\t\treturn mergeArray(objA, objB) as A | B;\n\t\t}\n\n\t\t// if a and b differ in type, prefer b.\n\t\treturn objB ?? objA;\n\t}\n\n\tconst merged: A | B = {} as A | B;\n\n\tconst keys = new Set<keyof A | keyof B>([\n\t\t...Object.keys(objA),\n\t\t...Object.keys(objB),\n\t] as Array<keyof A | keyof B>);\n\n\tkeys.forEach((key) => {\n\t\tconst a = objA[key as keyof A];\n\t\tconst b = objB[key as keyof B];\n\n\t\tif (typeof a === 'object' && typeof b === 'object') {\n\t\t\tmerged[key as keyof (A | B)] = deepMerge(a as any, b as any) as any;\n\t\t\treturn;\n\t\t}\n\n\t\t// if a and b differ in type, prefer b.\n\t\tmerged[key as keyof (A | B)] = (b ?? a) as any;\n\t});\n\n\treturn merged;\n}\n","import {\n\tComponent,\n\tDirective,\n\tEventEmitter,\n\tInput,\n\tOnChanges,\n\tOnDestroy,\n\tOnInit,\n\tOptional,\n\tOutput,\n\tSimpleChanges,\n\tSkipSelf,\n\tTemplateRef\n} from '@angular/core';\nimport {\n\tAbstractControl,\n\tFormArray,\n\tFormControl,\n\tFormGroup,\n\tUntypedFormArray,\n\tUntypedFormControl,\n\tUntypedFormGroup\n} from '@angular/forms';\nimport {FormElementComponent} from './form-element/form-element.component';\nimport {isValueSet} from '../util/values';\nimport {deepMerge} from '../util/objects';\nimport {cloneDeep} from 'lodash';\n\nexport const invalidFieldsSymbol = Symbol('Not all fields are valid');\n\nexport type OnInjectedEmitterType = {\n\tchildValue: Record<string, any>;\n\tparentValue: Record<string, any>;\n};\n\n@Directive({\n // tslint:disable-next-line:directive-selector\n selector: 'klp-sub-form',\n standalone: false\n})\nexport class SubFormDirective {\n\t@Input() injectInto: UntypedFormArray | UntypedFormGroup;\n\t@Input() at: number | string;\n\t@Input() manuallyTriggerInjection: boolean = false;\n\t@Input() allowInjectionToOverwrite: boolean = false;\n}\n\n@Component({\n selector: 'klp-form',\n templateUrl: './form.component.html',\n styleUrls: ['./form.component.scss'],\n standalone: false\n})\nexport class FormComponent implements OnInit, OnDestroy, OnChanges {\n\t@Input() public readOnly = false;\n\t@Input() public showErrorMessages = true;\n\t@Input() public errorMessageLocation: 'belowCaption' | 'rightOfCaption' = 'belowCaption';\n\t@Input() public formGroup: FormGroup;\n\t@Input() public formArray: FormArray;\n\t@Input() public warnings: Map<AbstractControl, string | TemplateRef<any>> = new Map<AbstractControl, string | TemplateRef<any>>();\n\t@Input() public immutableValues: Record<string, any> = {};\n\t@Input() public errors: Map<AbstractControl, string> = new Map<AbstractControl, string>();\n\t@Input() public patchValueInterceptor: (values: any) => Promise<any>;\n\t@Input() public allowSubmitOn: 'buttonAndEnter' | 'buttonOnly' = 'buttonAndEnter';\n\t@Output() public onInjected = new EventEmitter<OnInjectedEmitterType>();\n\n\tprivate topLevelFormControl: AbstractControl;\n\n\t// we keep track of what form controls are actually rendered. Only those count when looking at form validation\n\tprivate activeControls: Array<{\n\t\tformControl: UntypedFormControl;\n\t\tformElement: FormElementComponent;\n\t}> = [];\n\n\tconstructor(@SkipSelf() @Optional() private parent: FormComponent, @Optional() private subFormDirective: SubFormDirective) {\n\t}\n\n\tngOnInit(): void {\n\t\tthis.topLevelFormControl = this.formGroup ?? this.formArray;\n\t\tif (isValueSet(this.patchValueInterceptor)) {\n\t\t\tthis.addSupportForPatchValueInterceptor();\n\t\t}\n\t\tif (isValueSet(this.parent) && isValueSet(this.subFormDirective)) {\n\t\t\tif (this.subFormDirective.manuallyTriggerInjection) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// if the `formComponentToInject` is not set, just attach the first that requests an injection\n\t\t\tthis.attachAsSubForm();\n\t\t}\n\t}\n\n\tpublic _ext_attachAsSubForm(): void {\n\t\tif (!isValueSet(this.parent)) {\n\t\t\tthrow new Error('No parent to inject this form into was found.');\n\t\t}\n\t\tif (!isValueSet(this.subFormDirective)) {\n\t\t\tthrow new Error('Subform directive not found.');\n\t\t}\n\t\tthis.attachAsSubForm();\n\t}\n\n\tprivate attachAsSubForm(): void {\n\t\tconst injectInto = this.subFormDirective.injectInto;\n\t\tconst injectAt = this.subFormDirective.at;\n\t\tconst allowInjectionToOverwrite = this.subFormDirective.allowInjectionToOverwrite;\n\t\tif (injectInto instanceof UntypedFormArray) {\n\t\t\tif (!allowInjectionToOverwrite) {\n\t\t\t\tif (injectInto.at(injectAt as number) instanceof FormGroup || injectInto.at(injectAt as number) instanceof FormArray) {\n\t\t\t\t\tthrow new Error(`There already is a subform injected at ${injectAt}. Make sure this property does not have a formGroup or formArray already attached when linking it to a subForm.`);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (typeof injectAt !== 'number') {\n\t\t\t\tthrow new Error(`cannot index FormArray with ${typeof injectAt}`);\n\t\t\t}\n\t\t\tif (injectInto.at(injectAt)?.disabled) {\n\t\t\t\tthis.topLevelFormControl.disable();\n\t\t\t}\n\t\t\tconst source = injectInto.at(injectAt);\n\t\t\tconst parentValueBeforeInject = source?.value;\n\t\t\tconst childValueBeforeInject = this.topLevelFormControl.value;\n\t\t\tif (isValueSet(parentValueBeforeInject)) {\n\t\t\t\tthis.topLevelFormControl.patchValue(parentValueBeforeInject);\n\t\t\t}\n\t\t\tinjectInto.setControl(injectAt, this.topLevelFormControl);\n\t\t\tthis.onInjected.emit({\n\t\t\t\tchildValue: childValueBeforeInject,\n\t\t\t\tparentValue: parentValueBeforeInject,\n\t\t\t});\n\t\t} else if (injectInto instanceof UntypedFormGroup) {\n\t\t\tif (!allowInjectionToOverwrite) {\n\t\t\t\tif (injectInto.get(injectAt as string) instanceof FormGroup || injectInto.get(injectAt as string) instanceof FormArray) {\n\t\t\t\t\tthrow new Error(`There already is a subform injected at ${injectAt}. Make sure this property does not have a formGroup or formArray already attached when linking it to a subForm.`);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (typeof injectAt !== 'string') {\n\t\t\t\tthrow new Error(`cannot index FormGroup with ${typeof injectAt}`);\n\t\t\t}\n\t\t\tif (injectInto.get(injectAt)?.disabled) {\n\t\t\t\tthis.topLevelFormControl.disable();\n\t\t\t}\n\t\t\tconst source = injectInto.get(injectAt);\n\t\t\tconst parentValueBeforeInject = source?.value;\n\t\t\tconst childValueBeforeInject = this.topLevelFormControl.value;\n\t\t\tif (isValueSet(parentValueBeforeInject)) {\n\t\t\t\tthis.topLevelFormControl.patchValue(parentValueBeforeInject);\n\t\t\t}\n\t\t\tinjectInto.setControl(injectAt, this.topLevelFormControl);\n\t\t\tthis.onInjected.emit({\n\t\t\t\tchildValue: childValueBeforeInject,\n\t\t\t\tparentValue: parentValueBeforeInject,\n\t\t\t});\n\t\t}\n\t}\n\n\tngOnChanges(simpleChanges: SimpleChanges): void {\n\t\tif (simpleChanges.readOnly?.currentValue === true) {\n\t\t\tthis.activeControls.forEach(e => e.formControl.disable());\n\t\t}\n\t\tif (isValueSet(simpleChanges.warnings?.currentValue)) {\n\t\t\tthis.patchFormWarningsMap();\n\t\t}\n\t\tif (isValueSet(simpleChanges.errors?.currentValue)) {\n\t\t\tthis.patchFormErrorsMap();\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\tif (isValueSet(this.parent) && isValueSet(this.subFormDirective)) {\n\t\t\tconst injectInto = this.subFormDirective.injectInto;\n\t\t\tconst injectAt = this.subFormDirective.at;\n\t\t\tif (injectInto instanceof UntypedFormArray) {\n\t\t\t\tconst idx = injectInto.controls.findIndex(e => e === this.topLevelFormControl);\n\t\t\t\tif (idx === -1) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tinjectInto.removeAt(idx);\n\t\t\t} else if (injectInto instanceof UntypedFormGroup) {\n\t\t\t\tif (typeof injectAt !== 'string') {\n\t\t\t\t\tthrow new Error(`cannot index FormGroup with ${typeof injectAt}`);\n\t\t\t\t}\n\t\t\t\tif (injectInto.get(injectAt) !== this.topLevelFormControl) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tinjectInto.setControl(injectAt, new FormControl());\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate patchFormWarningsMap(): void {\n\t\tconst setFn = this.warnings.set;\n\t\tthis.warnings.set = (key: AbstractControl, value: string): Map<AbstractControl, string> => {\n\t\t\tconst prevVal = this.warnings.get(key);\n\t\t\tconst result = setFn.call(this.warnings, key, value);\n\t\t\tif (prevVal !== value) {\n\t\t\t\tthis.getFormElementByFormControl(key)?.determinePopupState();\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\n\t\tconst deleteFn = this.warnings.delete;\n\t\tthis.warnings.delete = (key: AbstractControl): boolean => {\n\t\t\tconst result = deleteFn.call(this.warnings, key);\n\t\t\tthis.getFormElementByFormControl(key)?.determinePopupState();\n\t\t\treturn result;\n\t\t};\n\t}\n\n\tprivate patchFormErrorsMap(): void {\n\t\tconst setFn = this.errors.set;\n\t\tthis.errors.set = (key: AbstractControl, value: string): Map<AbstractControl, string> => {\n\t\t\tconst prevVal = this.errors.get(key);\n\t\t\tconst result = setFn.call(this.errors, key, value);\n\t\t\tkey.setErrors({...key.errors, formLevel: value});\n\t\t\tif (prevVal !== value) {\n\t\t\t\tthis.getFormElementByFormControl(key)?.determinePopupState();\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\n\t\tconst deleteFn = this.errors.delete;\n\t\tthis.errors.delete = (key: AbstractControl): boolean => {\n\t\t\tconst newErrorsObject = key.errors;\n\t\t\tdelete newErrorsObject.formLevel;\n\t\t\tkey.setErrors(newErrorsObject);\n\t\t\tconst result = deleteFn.call(this.errors, key);\n\t\t\tthis.getFormElementByFormControl(key)?.determinePopupState();\n\t\t\treturn result;\n\t\t};\n\t}\n\n\tprivate addSupportForPatchValueInterceptor(): void {\n\t\tconst fn = this.topLevelFormControl.patchValue;\n\t\tconst newFn = (\n\t\t\tvalue: {\n\t\t\t\t[key: string]: any;\n\t\t\t},\n\t\t\toptions?: {\n\t\t\t\tonlySelf?: boolean;\n\t\t\t\temitEvent?: boolean;\n\t\t\t}\n\t\t): void => {\n\t\t\tthis.patchValueInterceptor(value).then((val) => {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tfn.call(this.topLevelFormControl, val, options);\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t\tthis.topLevelFormControl.patchValue = newFn;\n\t}\n\n\tpublic registerControl(formControl: UntypedFormControl, formElement: FormElementComponent): () => any {\n\t\tthis.activeControls.push({formControl, formElement});\n\t\tlet parentImmutableValueFn: () => any;\n\t\tif (this.parent) {\n\t\t\tparentImmutableValueFn = this.parent.registerControl(formControl, formElement);\n\t\t}\n\t\tif (this.readOnly) {\n\t\t\tformControl.disable();\n\t\t}\n\n\t\tconst enableFn: (opts?: { onlySelf?: boolean; emitEvent?: boolean }) => void = formControl.enable;\n\t\tformControl.enable = (opts?: { onlySelf?: boolean; emitEvent?: boolean }) => {\n\t\t\tif (!this.readOnly) {\n\t\t\t\tenableFn.call(formControl, opts);\n\t\t\t}\n\t\t};\n\n\t\tconst getImmutableValueFn = (): any => {\n\t\t\tconst path = this.getPathFromParentToControl(formControl);\n\t\t\tconst immutableValue = this.getImmutableValueFromPath(path);\n\t\t\tconst immutableValueFromParent = parentImmutableValueFn?.();\n\t\t\treturn cloneDeep(immutableValue !== undefined ? immutableValue : immutableValueFromParent);\n\t\t};\n\n\t\tconst setValueFn: (value: unknown, options?: {\n\t\t\tonlySelf?: boolean;\n\t\t\temitEvent?: boolean;\n\t\t\temitModelToViewChange?: boolean;\n\t\t\temitViewToModelChange?: boolean;\n\t\t}) => void = formControl.setValue;\n\t\tformControl.setValue = (value: unknown, options?: {\n\t\t\tonlySelf?: boolean;\n\t\t\temitEvent?: boolean;\n\t\t\temitModelToViewChange?: boolean;\n\t\t\temitViewToModelChange?: boolean;\n\t\t}) => {\n\t\t\tconst immutableValue = getImmutableValueFn();\n\t\t\tif (immutableValue !== undefined && options?.emitModelToViewChange !== true) {\n\t\t\t\tif (!isValueSet(options)) {\n\t\t\t\t\toptions = {};\n\t\t\t\t}\n\t\t\t\toptions.emitModelToViewChange = true;\n\t\t\t}\n\t\t\tsetValueFn.call(formControl, immutableValue !== undefined ? immutableValue : value, options);\n\t\t};\n\n\t\tconst immutableValue = getImmutableValueFn();\n\t\tif (immutableValue !== undefined) {\n\t\t\tformControl.setValue(immutableValue);\n\t\t}\n\n\t\treturn getImmutableValueFn;\n\t}\n\n\tprivate getPathFromParentToControl(control: AbstractControl): Array<string> {\n\t\tconst path = [];\n\t\tlet currentControl = control;\n\t\twhile (currentControl.parent) {\n\t\t\tconst parent = currentControl.parent;\n\t\t\tif (parent instanceof FormGroup) {\n\t\t\t\tconst key = Object.entries(parent.controls).find(([key, value]) => value === currentControl)[0];\n\t\t\t\tpath.push(key);\n\t\t\t} else if (parent instanceof FormArray) {\n\t\t\t\tconst idx = parent.controls.findIndex(e => e === currentControl);\n\t\t\t\tpath.push(idx);\n\t\t\t}\n\t\t\tcurrentControl = parent;\n\t\t}\n\t\treturn path.reverse();\n\t}\n\n\tprivate getImmutableValueFromPath(path: Array<string>): any {\n\t\tlet current = this.immutableValues;\n\t\tfor (const key of path) {\n\t\t\tif (!isValueSet(current?.[key])) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tcurrent = current[key];\n\t\t}\n\t\treturn current;\n\t}\n\n\tpublic unregisterControl(formControl: UntypedFormControl): void {\n\t\tconsole.log('this.activeControls before', this.activeControls.length);\n\t\tconsole.log(this.activeControls);\n\t\tthis.activeControls = this.activeControls.filter((e) => e.formControl !== formControl);\n\t\tconsole.log('this.activeControls after', this.activeControls.length);\n\t\tif (this.parent) {\n\t\t\tthis.parent.unregisterControl(formControl);\n\t\t}\n\t}\n\n\tprivate addFormGroupControls(formGroup: UntypedFormGroup, result: Array<UntypedFormControl>): void {\n\t\tObject.values(formGroup.controls).forEach((value) => {\n\t\t\tif (value instanceof UntypedFormGroup) {\n\t\t\t\tthis.addFormGroupControls(value, result);\n\t\t\t} else if (value instanceof UntypedFormArray) {\n\t\t\t\tthis.addFormArrayControls(value, result);\n\t\t\t} else if (value instanceof UntypedFormControl) {\n\t\t\t\tthis.addFormControl(value, result);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate addFormArrayControls(formArray: UntypedFormArray, result: Array<UntypedFormControl>): void {\n\t\tformArray.controls.forEach((value) => {\n\t\t\tif (value instanceof UntypedFormGroup) {\n\t\t\t\tthis.addFormGroupControls(value, result);\n\t\t\t} else if (value instanceof UntypedFormArray) {\n\t\t\t\tthis.addFormArrayControls(value, result);\n\t\t\t} else if (value instanceof UntypedFormControl) {\n\t\t\t\tthis.addFormControl(value, result);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate getAllFormControls(): Array<UntypedFormControl> {\n\t\tconst result = [];\n\t\tif (this.topLevelFormControl instanceof FormGroup) {\n\t\t\tthis.addFormGroupControls(this.topLevelFormControl, result);\n\t\t} else if (this.topLevelFormControl instanceof FormArray) {\n\t\t\tthis.addFormArrayControls(this.topLevelFormControl, result);\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate addFormControl(control: UntypedFormControl, result: Array<UntypedFormControl>): void {\n\t\tresult.push(control);\n\t}\n\n\tprivate disableInactiveFormControl(control: UntypedFormControl): void {\n\t\tif (!this.activeControls.some((e) => e.formControl === control)) {\n\t\t\tcontrol.disable();\n\t\t}\n\t}\n\n\tpublic getFormElementByFormControl(control: AbstractControl): FormElementComponent {\n\t\treturn this.activeControls.find((e) => e.formControl === control)?.formElement;\n\t}\n\n\tpublic getWarningToShow(control: AbstractControl): string | TemplateRef<any> {\n\t\treturn this.warnings.get(control);\n\t}\n\n\tpublic trySubmit(): Promise<any> {\n\t\tthis.topLevelFormControl.markAllAsTouched();\n\t\tconst allControls: Array<UntypedFormControl> = this.getAllFormControls();\n\t\tconst originalDisabledStates = allControls.map(e => {\n\t\t\treturn {control: e, disabled: e.disabled};\n\t\t});\n\t\tallControls.forEach(e => this.disableInactiveFormControl(e));\n\t\tallControls.forEach(e => e.updateValueAndValidity());\n\t\tconst formGroupValue = this.topLevelFormControl.value;\n\t\tif (this.topLevelFormControl instanceof FormGroup) {\n\t\t\tconst renderedAndEnabledValues = this.getRenderedFieldValuesFormGroup(this.topLevelFormControl, true);\n\t\t\tconst renderedButDisabledValues = this.getRenderedFieldValuesFormGroup(this.topLevelFormControl, false);\n\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tif (this.topLevelFormControl.pending) {\n\t\t\t\t\tconst sub = this.topLevelFormControl.statusChanges.subscribe((res) => {\n\t\t\t\t\t\tif (res !== 'PENDING') {\n\t\t\t\t\t\t\tsub.unsubscribe();\n\t\t\t\t\t\t\tthis.handleSubmission(originalDisabledStates, renderedAndEnabledValues, renderedButDisabledValues, formGroupValue)\n\t\t\t\t\t\t\t\t.then(resolve)\n\t\t\t\t\t\t\t\t.catch(reject);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tthis.handleSubmission(originalDisabledStates, renderedAndEnabledValues, renderedButDisabledValues, formGroupValue)\n\t\t\t\t\t\t.then(resolve)\n\t\t\t\t\t\t.catch(reject);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tthrow new Error('Submitting a FormArray as topLevel not supported (yet). Wrap it in a FormGroup.');\n\t}\n\n\tprivate handleSubmission(\n\t\toriginalDisabledStates: Array<{ control: FormControl<any>; disabled: boolean }>,\n\t\trenderedAndEnabledValues: Record<any, any>,\n\t\trenderedButDisabledValues: Record<any, any>,\n\t\tformGroupValue): Promise<any> {\n\t\tif (this.topLevelFormControl.invalid) {\n\t\t\tthis.activeControls.find((e) => e.formControl.invalid)?.formElement?.scrollTo();\n\t\t\tthis.setDisabledStatesForAllControls(originalDisabledStates);\n\t\t\treturn Promise.reject(invalidFieldsSymbol);\n\t\t} else {\n\t\t\tthis.setDisabledStatesForAllControls(originalDisabledStates);\n\t\t\tconst renderedValues = deepMerge(renderedAndEnabledValues, renderedButDisabledValues);\n\t\t\treturn Promise.resolve([formGroupValue, renderedValues]);\n\t\t}\n\t}\n\n\tprivate getRenderedFieldValuesFormGroup(formGroup: FormGroup, enabled: boolean, valueObject = {}): object {\n\t\tObject.entries(formGroup.controls).forEach(([name, control]) => {\n\t\t\tif (control instanceof FormControl && control.enabled === enabled && this.activeControls.some(e => e.formControl === control)) {\n\t\t\t\tvalueObject[name] = control.value;\n\t\t\t} else if (control instanceof FormArray) {\n\t\t\t\tvalueObject[name] = [];\n\t\t\t\tthis.getRenderedFieldValuesFormArray(control, enabled, valueObject[name]);\n\t\t\t} else if (control instanceof FormGroup) {\n\t\t\t\tvalueObject[name] = {};\n\t\t\t\tthis.getRenderedFieldValuesFormGroup(control, enabled, valueObject[name]);\n\t\t\t}\n\t\t});\n\t\treturn valueObject;\n\t}\n\n\tprivate getRenderedFieldValuesFormArray(formArray: FormArray, enabled: boolean, valueArray: Array<any>): void {\n\t\tformArray.controls.forEach((control: AbstractControl) => {\n\t\t\tif (control instanceof FormControl && control.enabled === enabled && this.activeControls.some(e => e.formControl === control)) {\n\t\t\t\tvalueArray.push(control.value);\n\t\t\t} else if (control instanceof FormArray) {\n\t\t\t\tconst newArray = [];\n\t\t\t\tvalueArray.push(newArray);\n\t\t\t\tthis.getRenderedFieldValuesFormArray(control, enabled, newArray);\n\t\t\t} else if (control instanceof FormGroup) {\n\t\t\t\tconst newObject = {};\n\t\t\t\tvalueArray.push(newObject);\n\t\t\t\tthis.getRenderedFieldValuesFormGroup(control, enabled, newObject);\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic _ext_getRenderedFieldValues(): Record<string, any> {\n\t\tif (this.topLevelFormControl instanceof FormGroup) {\n\t\t\tconst renderedAndEnabledValues = this.getRenderedFieldValuesFormGroup(this.topLevelFormControl, true);\n\t\t\tconst renderedButDisabledValues = this.getRenderedFieldValuesFormGroup(this.topLevelFormControl, false);\n\t\t\tconst allRenderedValues = deepMerge(renderedAndEnabledValues, renderedButDisabledValues);\n\t\t\treturn allRenderedValues;\n\t\t}\n\t\tthrow new Error('Getting values from a FormArray as topLevel is not supported (yet).');\n\t}\n\n\tprivate setDisabledStatesForAllControls(originalDisabledStates: Array<{\n\t\tcontrol: AbstractControl;\n\t\tdisabled: boolean\n\t}>): void {\n\t\toriginalDisabledStates.forEach((e) => {\n\t\t\tif (e.disabled) {\n\t\t\t\te.control.disable();\n\t\t\t} else {\n\t\t\t\te.control.enable();\n\t\t\t}\n\t\t});\n\t}\n}\n","<form>\n\t<ng-content></ng-content>\n</form>\n\n\n","export function runNextRenderCycle(fn: () => void): void {\n\tsetTimeout(fn);\n}\n\nexport function awaitableForNextCycle(): Promise<void> {\n\treturn new Promise((resolve) => {\n\t\tsetTimeout(resolve);\n\t});\n}\n","import {AfterViewInit, Directive, Input} from \"@angular/core\";\nimport {runNextRenderCycle} from \"./util/angular\";\n\n\n@Directive({\n selector: '[onRenderFn]',\n standalone: false\n})\nexport class OnRenderDirective implements AfterViewInit {\n\t@Input() onRenderFn: () => any;\n\n\tngAfterViewInit(): void {\n\t\trunNextRenderCycle(() => this.onRenderFn());\n\t}\n}\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'klp-form-warning-icon',\n templateUrl: './warning-icon.component.html',\n styleUrls: ['./warning-icon.component.scss'],\n standalone: false\n})\nexport class WarningIconComponent {\n\t@Input() variant: 'line' | 'fill' = 'line';\n}\n","@if (variant === 'line') {\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9.99976 7.49995V10.8333M9.99976 14.1666H10.0081M8.84585 3.24305L1.99178 15.0819C1.61161 15.7386 1.42153 16.0669 1.44962 16.3364C1.47412 16.5714 1.59727 16.785 1.7884 16.924C2.00753 17.0833 2.38691 17.0833 3.14569 17.0833H16.8538C17.6126 17.0833 17.992 17.0833 18.2111 16.924C18.4022 16.785 18.5254 16.5714 18.5499 16.3364C18.578 16.0669 18.3879 15.7386 18.0077 15.0819L11.1537 3.24305C10.7749 2.58875 10.5854 2.26159 10.3383 2.15172C10.1228 2.05587 9.87672 2.05587 9.66117 2.15172C9.41407 2.26159 9.22466 2.58875 8.84585 3.24305Z\" stroke=\"#ff8000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n}\n@if (variant === 'fill') {\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M10.6771 1.39035C10.246 1.19866 9.75387 1.19866 9.32277 1.39035C8.98983 1.53839 8.77355 1.79916 8.62305 2.01164C8.47508 2.22055 8.31666 2.49423 8.14243 2.79523L1.25313 14.6949C1.07821 14.997 0.919248 15.2715 0.811464 15.5045C0.701923 15.7413 0.583086 16.0596 0.62096 16.4229C0.669969 16.8929 0.916253 17.3201 1.29852 17.598C1.59393 17.8128 1.92892 17.8695 2.18872 17.8933C2.44435 17.9167 2.76156 17.9167 3.11063 17.9167H16.8892C17.2383 17.9167 17.5555 17.9167 17.8111 17.8933C18.0709 17.8695 18.4059 17.8128 18.7014 17.598C19.0836 17.3201 19.3299 16.8929 19.3789 16.4229C19.4168 16.0596 19.2979 15.7413 19.1884 15.5045C19.0806 15.2715 18.9217 14.997 18.7468 14.695L11.8574 2.7952C11.6832 2.49422 11.5248 2.22053 11.3768 2.01164C11.2263 1.79916 11.01 1.53839 10.6771 1.39035ZM10.8333 7.50004C10.8333 7.0398 10.4602 6.66671 9.99996 6.66671C9.53972 6.66671 9.16663 7.0398 9.16663 7.50004V10.8334C9.16663 11.2936 9.53972 11.6667 9.99996 11.6667C10.4602 11.6667 10.8333 11.2936 10.8333 10.8334V7.50004ZM9.99996 13.3334C9.53972 13.3334 9.16663 13.7065 9.16663 14.1667C9.16663 14.6269 9.53972 15 9.99996 15H10.0083C10.4685 15 10.8416 14.6269 10.8416 14.1667C10.8416 13.7065 10.4685 13.3334 10.0083 13.3334H9.99996Z\" fill=\"#ff8000\"/>\n </svg>\n}\n","import {AfterViewInit, Directive, ElementRef, Input, OnDestroy} from \"@angular/core\";\nimport {awaitableForNextCycle} from \"./util/angular\";\nimport {isValueSet} from \"./util/values\";\n\n\n@Directive({\n selector: '[elementIsTruncatedCb]',\n standalone: false\n})\nexport class ElementIsTruncatedCbComponent implements AfterViewInit, OnDestroy {\n\tprivate observer: MutationObserver;\n\n\t@Input() elementIsTruncatedCb = (isTruncated: boolean) => {};\n\tconstructor(private elementRef: ElementRef) {\n\n\t}\n\n\tngAfterViewInit(): void {\n\t\tif (!isValueSet(this.elementIsTruncatedCb)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst targetNode = this.elementRef.nativeElement;\n\n\t\tconst observerOptions = {\n\t\t\tchildList: true,\n\t\t\tattributes: true,\n\t\t\tsubtree: true\n\t\t};\n\n\t\tconst callback = () => {\n\t\t\tthis.checkForTruncation();\n\t\t};\n\n\t\tthis.observer = new MutationObserver(callback);\n\t\tthis.observer.observe(targetNode, observerOptions);\n\t\tthis.checkForTruncation();\n\t}\n\n\tprivate async checkForTruncation(): Promise<void> {\n\t\tawait awaitableForNextCycle();\n\t\tconst isTruncated = this.isTruncated(this.elementRef.nativeElement);\n\t\tif (isValueSet(isTruncated)) {\n\t\t\tthis.elementIsTruncatedCb(isTruncated);\n\t\t}\n\t}\n\n\tprivate isTruncated(element: HTMLElement): boolean {\n\t\tif (!(element.scrollWidth > 0)) {\n\t\t\treturn;\n\t\t}\n\t\tconst thisElementIsTruncated = element.scrollWidth > element.clientWidth;\n\t\tif (!thisElementIsTruncated) {\n\t\t\treturn Array.from(element.children).some((child) => this.isTruncated(child as HTMLElement));\n\t\t}\n\t\treturn thisElementIsTruncated;\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.observer?.disconnect();\n\t}\n}\n","import {\n\tAfterViewInit,\n\tComponent,\n\tContentChild,\n\tElementRef,\n\tInject,\n\tInjectionToken,\n\tInput, NgZone, OnDestroy,\n\tOptional,\n\tTemplateRef,\n\tViewChild\n} from '@angular/core';\nimport {AbstractControl, NG_VALUE_ACCESSOR, UntypedFormControl} from '@angular/forms';\nimport {ValueAccessorBase} from '../../elements/value-accessor-base/value-accessor-base.component';\nimport {CustomErrorMessages, FormErrorMessages} from '../../types';\nimport {isValueSet, stringIsSetAndFilled} from '../../util/values';\nimport {FormComponent} from '../form.component';\nimport {getAllLimitingContainers} from '../../util/dom';\nimport {Subscription} from \"rxjs\";\n\n\nexport const FORM_ERROR_MESSAGES = new InjectionToken<CustomErrorMessages>('form.error.messages');\n\nexport const DEFAULT_ERROR_MESSAGES: FormErrorMessages = {\n\tmin: 'Use a number larger than %min%',\n\tmax: 'Use a number smaller than %max%',\n\trequired: 'Required',\n\temail: 'Use a valid email address',\n\tminLength: 'Has to be longer than %minLength% character(s)',\n\tmaxLength: 'Has to be shorter than %maxLength% character(s)',\n\tpattern: 'This input is not valid',\n\tmatchPassword: 'Passwords must match',\n\tdate: 'Enter a valid date',\n};\n\ntype PopupState = 'onHover' | 'lockedOpen';\n\n@Component({\n selector: 'klp-form-element',\n templateUrl: './form-element.component.html',\n styleUrls: ['./form-element.component.scss'],\n standalone: false\n})\nexport class FormElementComponent implements AfterViewInit, OnDestroy {\n\tpublic attachedControl: AbstractControl;\n\t@Input() public caption: string;\n\t@Input() public direction: 'horizontal' | 'vertical' = 'horizontal';\n\t@Input() public captionSpacing: 'percentages' | 'none' = 'percentages';\n\t@Input() public verticalAlignment: 'center' | 'top' = 'center';\n\t@Input() public spaceDistribution: '40-60' | '34-66' | '30-70' | 'fixedInputWidth' | 'fixedCaptionWidth' = '40-60';\n\t@Input() public swapInputAndCaption = false;\n\t@Input() public errorMessageAsTooltip = false;\n\t@Input() public errorMessageHasMaxWidth = true;\n\t@ViewChild('internalComponentRef') public internalComponentRef: ElementRef;\n\t@ViewChild('tailTpl') public tailTpl: TemplateRef<any>;\n\t@ViewChild('captionDummyForSpaceCalculation') public captionDummyForSpaceCalculation: ElementRef;\n\t@ViewChild('absoluteAnchor') public absoluteAnchor: ElementRef;\n\t@ViewChild('fixedAnchor') public fixedAnchor: ElementRef;\n\t@ViewChild('fixedWrapper') public fixedWrapper: ElementRef;\n\t@ViewChild('inputContainer') public inputContainer: ElementRef;\n\t@ContentChild(NG_VALUE_ACCESSOR) fieldInput: ValueAccessorBase<any>;\n\n\tpublic captionRef: TemplateRef<any>;\n\tpublic captionEndRef: TemplateRef<any>;\n\tpublic errorMessages: FormErrorMessages = DEFAULT_ERROR_MESSAGES;\n\tpublic customErrorHandlers: Array<{ error: string; templateRef: TemplateRef<any> }> = [];\n\tprivate input: ValueAccessorBase<any>;\n\tpublic errorFullyVisible: boolean;\n\tprivate popupState: PopupState = 'onHover';\n\tprivate subscriptions: Array<Subscription> = [];\n\n\tconstructor(\n\t\t@Optional() private parent: FormComponent,\n\t\t@Inject(FORM_ERROR_MESSAGES) @Optional() private customMessages: CustomErrorMessages,\n\t\tprivate elRef: ElementRef,\n\t\tprivate ngZone: NgZone,\n\t) {\n\t}\n\n\tasync ngAfterViewInit(): Promise<void> {\n\t\tconst subscription = this.fieldInput?.onTouch.asObservable().subscribe(() => {\n\t\t\tthis.determinePopupState();\n\t\t});\n\t\tif (isValueSet(subscription)) {\n\t\t\tthis.subscriptions.push(subscription);\n\t\t}\n\t\tthis.ngZone.runOutsideAngular(() => {\n\t\t\tthis.inputContainer?.nativeElement.addEventListener('mouseenter', () => {\n\t\t\t\tthis.setErrorTooltipOffset();\n\t\t\t});\n\t\t});\n\t}\n\n\tpublic shouldShowErrorMessages(): boolean {\n\t\treturn this.parent?.showErrorMessages !== false;\n\t}\n\n\tpublic substituteParameters(message: string, parameters: Record<string, any>): string {\n\t\treturn Object.keys(parameters).reduce((msg, key) => {\n\t\t\treturn msg.replace(`%${key}%`, parameters[key]);\n\t\t}, message);\n\t}\n\n\tpublic registerControl(formControl: UntypedFormControl, input: ValueAccessorBase<any> = null): () => any {\n\t\tthis.attachedControl = formControl;\n\t\tthis.input = input;\n\t\tconst getImmutableValueFn = this.parent.registerControl(formControl, this);\n\n\n\t\tconst subscription = this.attachedControl.statusChanges.subscribe(() => {\n\t\t\tthis.determinePopupState();\n\t\t});\n\t\tthis.subscriptions.push(subscription);\n\t\tthis.determinePopupState();\n\t\treturn getImmutableValueFn;\n\t}\n\n\tpublic determinePopupState(): void {\n\t\tconst prevState = this.popupState;\n\t\tthis.initializeTailTpl();\n\t\tif (stringIsSetAndFilled(this.getErrorToShow())) {\n\t\t\tthis.popupState = 'onHover';\n\t\t} else if (isValueSet(this.getWarningToShow())) {\n\t\t\tthis.popupState = 'lockedOpen';\n\t\t} else {\n\t\t\tthis.popupState = 'onHover';\n\t\t}\n\n\t\tthis.setUpErrorTooltipListeners(prevState, this.popupState);\n\t}\n\n\tprivate setUpErrorTooltipListeners(prev: PopupState, current: PopupState): void {\n\t\tif (prev === current) {\n\t\t\treturn;\n\t\t}\n\t\tconst containers = [...getAllLimitingContainers(this.elRef.nativeElement), window];\n\t\tthis.ngZone.runOutsideAngular(() => {\n\t\t\tif (current === 'lockedOpen') {\n\t\t\t\tcontainers.forEach(e => {\n\t\t\t\t\te.addEventListener('scroll', this.setErrorTooltipOffset);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tcontainers.forEach(e => {\n\t\t\t\t\te.removeEventListener('scroll', this.setErrorTooltipOffset);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic unregisterControl(formControl: UntypedFormControl): void {\n\t\tthis.attachedControl = null;\n\t\tthis.parent.unregisterControl(formControl);\n\t}\n\n\tpublic getAttachedControl(): AbstractControl {\n\t\treturn this.attachedControl;\n\t}\n\n\tpublic getAttachedInput(): ValueAccessorBase<any> {\n\t\treturn this.input;\n\t}\n\n\tpublic registerErrorHandler(error: string, templateRef: TemplateRef<any>): void {\n\t\tthis.customErrorHandlers.push({error, templateRef});\n\t}\n\n\tpublic registerCaption(templateRef: TemplateRef<any>): void {\n\t\tthis.captionRef = templateRef;\n\t}\n\n\tpublic registerCaptionEnd(templateRef: TemplateRef<any>): void {\n\t\tthis.captionEndRef = templateRef;\n\t}\n\n\tpublic getWarningToShow(): string | TemplateRef<any> {\n\t\treturn this.parent?.getWarningToShow(this.attachedControl);\n\t}\n\n\tpublic getWarningToShowAsTemplateRef(): TemplateRef<any> {\n\t\tif (this.parent?.getWarningToShow(this.attachedControl) instanceof TemplateRef) {\n\t\t\treturn this.parent?.getWarningToShow(this.attachedControl) as TemplateRef<any>;\n\t\t}\n\t\tthrow new Error('Warning is not a TemplateRef');\n\t}\n\n\tpublic getWarningToShowIsTemplateRef(): boolean {\n\t\treturn this.getWarningToShow() instanceof TemplateRef;\n\t}\n\n\tgetErrorToShow(): string {\n\t\tconst firstError = Object.keys(this.attachedControl?.errors ?? {})[0];\n\t\tif (this.attachedControl?.touched !== true) {\n\t\t\treturn null;\n\t\t}\n\t\tif (!this.attachedControl?.errors) {\n\t\t\treturn null;\n\t\t}\n\t\treturn firstError;\n\t}\n\n\tgetCustomErrorHandler(error: string): { error: string; templateRef: TemplateRef<any> } {\n\t\treturn this.customErrorHandlers.find((e) => e.error === error);\n\t}\n\n\tshowDefaultError(error: string): boolean {\n\t\treturn this.getErrorToShow() === error && !this.customErrorHandlers.some((e) => e.error === error);\n\t}\n\n\tgetScrollableParent(node): any {\n\t\tif (node === window.document.documentElement) {\n\t\t\treturn window.document.documentElement;\n\t\t}\n\t\tconst overflowY = getComputedStyle(node).overflowY;\n\t\tif (node.clientHeight < node.scrollHeight && (overflowY === 'auto' || overflowY === 'scroll')) {\n\t\t\treturn node;\n\t\t} else {\n\t\t\treturn this.getScrollableParent(node.parentNode);\n\t\t}\n\t}\n\n\tscrollTo(): void {\n\t\tconst parent = this.getScrollableParent(this.internalComponentRef.nativeElement);\n\t\tconst parentTop = parent === window.document.documentElement ? 0 : parent.getBoundingClientRect().top;\n\t\tconst elementTop = this.internalComponentRef.nativeElement.getBoundingClientRect().top;\n\t\tconst parentScrollTop = parent.scrollTop;\n\t\tconst answer = elementTop - parentTop + parentScrollTop;\n\n\t\tparent.scrollTo({\n\t\t\ttop: answer - 30,\n\t\t\tbehavior: 'smooth'\n\t\t});\n\t}\n\n\tisRequired(): boolean {\n\t\tif (isValueSet(this.input)) {\n\t\t\treturn this.input.hasValidator('required');\n\t\t}\n\t\treturn false;\n\t}\n\n\tgetErrorMessage(key: keyof FormErrorMessages): string {\n\t\tif (key === 'formLevel') {\n\t\t\treturn this.attachedControl.errors?.formLevel;\n\t\t}\n\t\treturn this.customMessages?.[key]?.() ?? this.errorMessages[key];\n\t}\n\n\tpublic getErrorLocation(): 'belowCaption' | 'rightOfCaption' {\n\t\treturn this.parent?.errorMessageLocation ?? 'belowCaption';\n\t}\n\n\tpublic shouldShowErrorTooltipOpened(): boolean {\n\t\treturn this.popupState === 'lockedOpen';\n\t}\n\n\tpublic hasHoverableErrorTooltip(): boolean {\n\t\tif (!this.hasRightOfCaptionError() && !this.errorMessageAsTooltip) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this.popupState !== 'onHover') {\n\t\t\treturn false;\n\t\t}\n\t\tif (stringIsSetAndFilled(this.getErrorToShow())) {\n\t\t\treturn !this.errorFullyVisible;\n\t\t}\n\t\tif (isValueSet(this.getWarningToShow())) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic hasRightOfCaptionError(): boolean {\n\t\tif (this.errorMessageAsTooltip) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this.direction !== 'vertical' || this.getErrorLocation() !== 'rightOfCaption') {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\tpublic setErrorMessageIsTruncated = (isTruncated: boolean) => {\n\t\tthis.errorFullyVisible = !isTruncated;\n\t}\n\n\tpublic shouldShowWarningPopup(): boolean {\n\t\treturn isValueSet(this.getWarningToShow());\n\t}\n\n\tpublic closePopup(): void {\n\t\tconst prevState = this.popupState;\n\t\tthis.popupState = 'onHover';\n\t\tthis.setUpErrorTooltipListeners(prevState, this.popupState);\n\t}\n\n\tpublic togglePopup(): void {\n\t\tif (!this.errorMessageAsTooltip && !this.hasRightOfCaptionError()) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.errorFullyVisible) {\n\t\t\treturn;\n\t\t}\n\t\tconst prevState = this.popupState;\n\t\tif (this.popupState === 'lockedOpen') {\n\t\t\tthis.popupState = 'onHover';\n\t\t} else {\n\t\t\tthis.popupState = 'lockedOpen';\n\t\t}\n\t\tthis.setUpErrorTooltipListeners(prevState, this.popupState);\n\t}\n\n\tpublic setErrorTooltipOffset = (): void => {\n\t\tif (this.popupState !== 'lockedOpen' && this.popupState !== 'onHover') {\n\t\t\treturn;\n\t\t}\n\t\tconst popupOffsetY = this.absoluteAnchor?.nativeElement.getBoundingClientRect().top - this.fixedAnchor?.nativeElement.getBoundingClientRect().top;\n\t\tif (this.fixedWrapper?.nativeElement) {\n\t\t\tthis.fixedWrapper.nativeElement.style.transform = `translateY(${popupOffsetY}px)`;\n\t\t}\n\t};\n\n\tngOnDestroy(): void {\n\t\tthis.subscriptions.forEach(e => e.unsubscribe());\n\t}\n\n\tprivate initializeTailTpl(): void {\n\t\tif (stringIsSetAndFilled(this.getErrorToShow()) || isValueSet(this.getWarningToShow())) {\n\t\t\tif (!isValueSet(this.fieldInput?.getTailTpl())) {\n\t\t\t\tthis.fieldInput?.setTailTpl(this.tailTpl);\n\t\t\t}\n\t\t}\n\t}\n}\n","<div\n class=\"componentContainer\"\n\t[ngClass]=\"{\n\t\thasCaption: caption || captionRef,\n\t\tvertical: direction === 'vertical',\n\t\thorizontal: direction === 'horizontal',\n\t\ttopAlignment: verticalAlignment === 'top',\n\t\treverseOrder: swapInputAndCaption,\n\t\thasErrors: getErrorToShow() && attachedControl.touched,\n\t\tpercentageSpacing: captionSpacing === 'percentages' && spaceDistribution !== 'fixedInputWidth',\n\t\t'd40-60': spaceDistribution === '40-60',\n\t\t'd30-70': spaceDistribution === '30-70',\n\t\t'd34-66': spaceDistribution === '34-66',\n\t\t'fixedInputWidth': spaceDistribution === 'fixedInputWidth',\n\t\t'fixedCaptionWidth': spaceDistribution === 'fixedCaptionWidth'\n\t}\"\n >\n @if (direction === 'horizontal' && !errorMessageAsTooltip) {\n <div class=\"errorAboveInputContainer\">\n <div class=\"spacer\"></div>\n <ng-container [ngTemplateOutlet]=\"errorRef\"></ng-container>\n </div>\n }\n\n <div class=\"captionInputAndError\" #internalComponentRef>\n @if (hasRightOfCaptionError()) {\n <div class=\"captionDummyForSpaceCalculation\" #captionDummyForSpaceCalculation>\n <ng-container [ngTemplateOutlet]=\"captionTpl\" [ngTemplateOutletContext]=\"{forCalculation: true}\"></ng-container>\n </div>\n }\n <ng-container [ngTemplateOutlet]=\"captionTpl\"></ng-container>\n @if (direction === 'vertical' && getErrorLocation() === 'belowCaption' && !errorMessageAsTooltip) {\n <ng-container [ngTemplateOutlet]=\"errorRef\"></ng-container>\n }\n <div class=\"inputContainer\" #inputContainer>\n @if (errorMessageAsTooltip && shouldShowErrorMessages() && getErrorToShow()) {\n <div class=\"errorTooltipTriangle\"></div>\n <div class=\"errorTooltipTriangleWhite\"></div>\n <div class=\"errorTooltip\">\n <ng-container [ngTemplateOutlet]=\"errorRef\"></ng-container>\n </div>\n }\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n\n<ng-template #captionTpl let-forCalculation=\"forCalculation\">\n @if (caption || captionRef) {\n <div class=\"caption\"\n\t\t[ngClass]=\"{\n\t\t\twithErrorRightOfCaption: getErrorLocation() === 'rightOfCaption'\n\t\t}\"\n >\n @if (captionRef) {\n <div class=\"captionRefContainer\">\n <ng-container [ngTemplateOutlet]=\"captionRef\"></ng-container>\n @if (isRequired()) {\n <div> *</div>\n }\n </div>\n }\n @if (!captionRef) {\n <div class=\"captionText\">{{caption}}@if (isRequired()) {\n <span> *</span>\n }</div>\n }\n @if (hasRightOfCaptionError()) {\n <div class=\"rightOfCaptionError\" [ngClass]=\"{errorFullyVisible: errorFullyVisible, errorMessageHasMaxWidth: errorMessageHasMaxWidth}\">\n <ng-container [ngTemplateOutlet]=\"errorRef\" [ngTemplateOutletContext]=\"{forCalculation: forCalculation}\"></ng-container>\n </div>\n }\n @if (captionEndRef) {\n <div class=\"captionEndRefContainer\">\n <ng-container [ngTemplateOutlet]=\"captionEndRef\"></ng-container>\n </div>\n }\n </div>\n }\n</ng-template>\n\n<ng-template #errorRef let-forCalculation=\"forCalculation\">\n @if (shouldShowErrorMessages() && getErrorToShow()) {\n <div class=\"errorContainer\" [elementIsTruncatedCb]=\"forCalculation ? setErrorMessageIsTruncated : null\" [ngClass]=\"{horizontal: direction === 'horizontal', hasCaption: caption || captionRef, 'd30-70': spaceDistribution === '30-70', 'd34-66': spaceDistribution === '34-66'}\">\n @if (showDefaultError('min')) {\n <div>{{substituteParameters(getErrorMessage(\"min\"), {min: attachedControl.errors.min.min})}}</div>\n }\n @if (showDefaultError('max')) {\n <div>{{substituteParameters(getErrorMessage(\"max\"), {max: attachedControl.errors.max.max})}}</div>\n }\n @if (showDefaultError('required')) {\n <div>{{getErrorMessage(\"required\")}}</div>\n }\n @if (showDefaultError('email')) {\n <div>{{getErrorMessage(\"email\")}}</div>\n }\n @if (showDefaultError('minlength')) {\n <div>{{substituteParameters(getErrorMessage(\"minLength\"), {minLength: attachedControl.errors.minlength.requiredLength})}}</div>\n }\n @if (showDefaultError('maxlength')) {\n <div>{{substituteParameters(getErrorMessage(\"maxLength\"), {maxLength: attachedControl.errors.maxlength.requiredLength})}}</div>\n }\n @if (showDefaultError('pattern')) {\n <div>{{getErrorMessage(\"pattern\")}}</div>\n }\n @if (showDefaultError('MatchPassword')) {\n <div>{{getErrorMessage(\"matchPassword\")}}</div>\n }\n @if (showDefaultError('date')) {\n <div>{{getErrorMessage(\"date\")}}</div>\n }\n @if (showDefaultError('message')) {\n <div>{{attachedControl.errors.message.value}}</div>\n }\n @if (showDefaultError('formLevel')) {\n <div>{{getErrorMessage(\"formLevel\")}}</div>\n }\n <div [ngTemplateOutlet]=\"getCustomErrorHandler(getErrorToShow())?.templateRef\"></div>\n </div>\n }\n</ng-template>\n\n<ng-template #tailTpl>\n <div class=\"errorTooltipContainer\" [ngClass]=\"{alwaysOpen: shouldShowErrorTooltipOpened()}\">\n @if (hasHoverableErrorTooltip() || shouldShowErrorTooltipOpened()) {\n <div class=\"errorTooltipTriangle\"></div>\n <div class=\"errorTooltipTriangleWhite\"></div>\n <div class=\"absoluteAnchor\" #absoluteAnchor></div>\n <div class=\"fixedAnchor\" #fixedAnchor [onRenderFn]=\"setErrorTooltipOffset\"></div>\n <div class=\"fixedWrapper\" #fixedWrapper>\n <div class=\"errorTooltip\" [ngClass]=\"{noPointerEvents: !shouldShowErrorTooltipOpened()}\">\n <div class=\"errorTooltipInner\">\n <i class=\"closeBtn\" (click)=\"closePopup();\">×</i>\n @if (getErrorToShow()) {\n <ng-container [ngTemplateOutlet]=\"errorRef\"></ng-container>\n }\n @if (!getErrorToShow() && shouldShowWarningPopup()) {\n <div>\n @if (getWarningToShowIsTemplateRef()) {\n <ng-container [ngTemplateOutlet]=\"getWarningToShowAsTemplateRef()\"></ng-container>\n }\n @if (!getWarningToShowIsTemplateRef()) {\n <span>{{getWarningToShow()}}</span>\n }\n </div>\n }\n </div>\n </div>\n </div>\n }\n @if (getErrorToShow()) {\n <klp-form-warning-icon variant=\"fill\" (click)=\"togglePopup()\"></klp-form-warning-icon>\n }\n @if (!getErrorToShow() && getWarningToShow()) {\n <klp-form-warning-icon variant=\"line\" (click)=\"togglePopup()\"></klp-form-warning-icon>\n }\n </div>\n</ng-template>\n","import {ControlContainer, ControlValueAccessor, UntypedFormControl} from '@angular/forms';\nimport {\n\tComponent,\n\tElementRef,\n\tEventEmitter,\n\tHost,\n\tInput,\n\tOnDestroy,\n\tOnInit,\n\tOptional,\n\tOutput,\n\tTemplateRef,\n\tViewChild\n} from '@angular/core';\nimport {FormElementComponent} from '../../form/form-element/form-element.component';\nimport {isNullOrUndefined, isValueSet, stringIsSetAndFilled} from '../../util/values';\nimport {arrayIsSetAndFilled} from '../../util/arrays';\nimport {cloneDeep} from 'lodash';\n\n/**\n * This component is a base in order to create a component that supports ngModel.\n * Some important things to know about it:\n *\n * innerValue = your own inner state, which you should use to store the current state of what ngModel should be.\n * writeValue() = called by angular, when ngModel is changed from OUTSIDE of the component. Feel free to patch this method if you need inner logic to happen when ngModel is altered from the outside. Always remember to also call the super.writeValue if you do!\n * setInnerValueAndNotify() = call this when you want your ngModel to be updated from INSIDE of your component, and provide it to the OUTSIDE.\n * ngOnInit() = Used to support the angular reactive forms framework. If you use ngOnInit in your own component (which happens fairly often) you must not forget to call the super.ngOnInit() method.\n */\n\n@Component({\n selector: '',\n template: '',\n standalone: false\n})\nexport class ValueAccessorBase<T> implements ControlValueAccessor, OnInit, OnDestroy {\n\tpublic innerValue: T;\n\tpublic changed = new Array<(value: T) => void>();\n\tprivate touched = new Array<() => void>();\n\tprivate prevValue: T = null;\n\n\t@Input() public disabled = false;\n\t// needed to prevent race conditions\n\tprivate latestInnerValueChangedInterceptorPromise: Promise<void>;\n\t@Input() innerValueChangeInterceptor: (prev: T, cur: T) => Promise<void>;\n\t// we support both providing just the formControlName and the full formControl\n\t@Input() public formControlName: string = null;\n\t@Input() public formControl: UntypedFormControl = null;\n\t@Input() public inErrorState = false;\n\t@Input() getTailTplFn: () => TemplateRef<any>;\n\t@Output() public onTouch = new EventEmitter<void>();\n\t@ViewChild('nativeInputRef') nativeInputRef: ElementRef;\n\n\tprivate attachedFormControl: UntypedFormControl;\n\tprivate tailTpl: TemplateRef<any>;\n\tprivate getImmutableValueFn: () => T;\n\n\tconstructor(\n\t\t@Host() @Optional() protected parent: FormElementComponent,\n\t\t@Host() @Optional() protected controlContainer: ControlContainer\n\t) {\n\t}\n\n\tngOnInit(): void {\n\t\tif (this.formControl) {\n\t\t\tthis.attachedFormControl = this.formControl;\n\t\t} else if (stringIsSetAndFilled(this.formControlName)) {\n\t\t\tthis.attachedFormControl = this.controlContainer?.control.get(this.formControlName) as UntypedFormControl;\n\t\t\tif (isNullOrUndefined(this.attachedFormControl)) {\n\t\t\t\tthrow new Error(`Form element '${this.formControlName}' with caption '${this.parent?.caption}' is not declared in your FormGroup.`);\n\t\t\t}\n\t\t}\n\t\tif (this.attachedFormControl) {\n\t\t\tthis.disabled = this.attachedFormControl.disabled;\n\t\t\tthis.attachedFormControl.statusChanges.subscribe(() => {\n\t\t\t\tthis.disabled = this.attachedFormControl.disabled;\n\t\t\t});\n\t\t\tthis.getImmutableValueFn = this.parent?.registerControl(this.attachedFormControl, this);\n\t\t}\n\t}\n\n\tprotected getImmutableValue(): T {\n\t\treturn this.getImmutableValueFn?.();\n\t}\n\n\n\tisInErrorState(): boolean {\n\t\tif (this.inErrorState) {\n\t\t\treturn true;\n\t\t}\n\t\treturn this.attachedFormControl && this.attachedFormControl.status === 'INVALID' && this.attachedFormControl.touched;\n\t}\n\n\tngOnDestroy(): void {\n\t\tif (this.attachedFormControl) {\n\t\t\tthis.parent?.unregisterControl(this.attachedFormControl);\n\t\t}\n\t}\n\n\ttouch(): void {\n\t\tthis.touched.forEach((f) => f());\n\t\tthis.onTouch.emit();\n\t}\n\n\twriteValue(value: T): void {\n\t\tthis.prevValue = value;\n\t\tthis.innerValue = value;\n\t}\n\n\tregisterOnChange(fn: (value: T) => void): void {\n\t\tthis.changed.push(fn);\n\t}\n\n\tregisterOnTouched(fn: () => void): void {\n\t\tthis.touched.push(fn);\n\t}\n\n\tsetInnerValueAndNotify(value: T): void {\n\t\tconst actuallySetValue = (valueToSet: T): void => {\n\t\t\tthis.prevValue = valueToSet;\n\t\t\tthis.innerValue = valueToSet;\n\t\t\tthis.changed.forEach((fn) => fn(valueToSet));\n\t\t};\n\t\tif (isValueSet(this.innerValueChangeInterceptor)) {\n\t\t\tthis.latestInnerValueChangedInterceptorPromise = this.innerValueChangeInterceptor(this.prevValue, value);\n\t\t\tconst myPromise = this.latestInnerValueChangedInterceptorPromise;\n\t\t\tthis.latestInnerValueChangedInterceptorPromise.then(() => {\n\t\t\t\tif (this.latestInnerValueChangedInterceptorPromise === myPromise) {\n\t\t\t\t\tactuallySetValue(value);\n\t\t\t\t} else {\n\t\t\t\t\t// ignore outdated promises\n\t\t\t\t}\n\t\t\t}).catch(() => {\n\t\t\t\tif (this.latestInnerValueChangedInterceptorPromise === myPromise) {\n\t\t\t\t\tactuallySetValue(this.prevValue);\n\t\t\t\t} else {\n\t\t\t\t\t// ignore outdated promises\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tactuallySetValue(value);\n\t\t}\n\t}\n\n\tresetToNull(): void {\n\t\tthis.setInnerValueAndNotify(null);\n\t}\n\n\thasValidator(validatorName: string): boolean {\n\t\tconst validators = Object.keys(this.attachedFormControl?.validator?.({} as any) ?? {});\n\t\tif (arrayIsSetAndFilled(validators)) {\n\t\t\treturn validators.includes(validatorName);\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic focus = (): void => {\n\t\tif (isValueSet(this.nativeInputRef?.nativeElement)){\n\t\t\tthis.nativeInputRef?.nativeElement?.focus();\n\t\t}else {\n\t\t\tthrow new Error('the focus() method is not implemented in this element!');\n\t\t}\n\t}\n\n\tpublic setTailTpl = (tpl: TemplateRef<any>): void => {\n\t\tthis.tailTpl = tpl;\n\t}\n\tpublic getTailTpl = (): TemplateRef<any> => {\n\t\tif (isValueSet(this.getTailTplFn)) {\n\t\t\treturn this.getTailTplFn();\n\t\t}\n\t\treturn this.tailTpl;\n\t}\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'klp-form-loading-indicator',\n templateUrl: './loading-indicator.component.html',\n styleUrls: ['./loading-indicator.component.scss'],\n standalone: false\n})\nexport class LoadingIndicatorComponent {\n\t@Input() public variant: '3dots' | 'spinner' | 'textInput' | 'picker' = '3dots';\n\t@Input() public size: 'tiny' | 'small' | 'medium' | 'large' | 'huge' = 'medium';\n}\n","@if (variant === '3dots') {\n <div class=\"threeDots\" [ngClass]=\"[size]\">\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n </div>\n}\n\n@if (variant === 'spinner') {\n <div class=\"spinner\" [ngClass]=\"[size]\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <circle cx=\"24\" cy=\"4\" r=\"4\" fill=\"currentColor\" />\n <circle cx=\"12.19\" cy=\"7.86\" r=\"3.7\" fill=\"currentColor\" />\n <circle cx=\"5.02\" cy=\"17.68\" r=\"3.4\" fill=\"currentColor\" />\n <circle cx=\"5.02\" cy=\"30.32\" r=\"3.1\" fill=\"currentColor\" />\n <circle cx=\"12.19\" cy=\"40.14\" r=\"2.8\" fill=\"currentColor\" />\n <circle cx=\"24\" cy=\"44\" r=\"2.5\" fill=\"currentColor\" />\n <circle cx=\"35.81\" cy=\"40.14\" r=\"2.2\" fill=\"currentColor\" />\n <circle cx=\"42.98\" cy=\"30.32\" r=\"1.9\" fill=\"currentColor\" />\n <circle cx=\"42.98\" cy=\"17.68\" r=\"1.6\" fill=\"currentColor\" />\n <circle cx=\"35.81\" cy=\"7.86\" r=\"1.3\" fill=\"currentColor\" />\n </svg>\n </div>\n}\n\n@if (variant === 'textInput') {\n <div class=\"textInput\">\n <input\n disabled\n type=\"text\"\n class=\"form-control\"\n placeholder=\"Loading...\"\n >\n </div>\n}\n\n@if (variant === 'picker') {\n <div class=\"picker\">\n <input\n disabled\n type=\"text\"\n class=\"form-control\"\n placeholder=\"Loading...\"\n >\n <div class=\"chevronDown\"></div>\n </div>\n}\n","import { Component, HostBinding, Input } from '@angular/core';\nimport {isValueSet} from \"../../util/values\";\n\nexport type ButtonVariant = 'white'\n\t\t| 'greenFilled'\n\t\t| 'greenOutlined'\n\t\t| 'greenLink'\n\t\t| 'contextMenuItem'\n\t\t| 'redFilled'\n\t\t| 'redOutlined'\n\t\t| 'orangeFilled';\n\n@Component({\n selector: 'klp-form-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n standalone: false\n})\nexport class ButtonComponent {\n\t@Input() variant: ButtonVariant = 'white';\n\t@Input() size: 'small' | 'medium' | 'large' = 'medium';\n\t@Input() fullWidth = false;\n\t@Input() hasBorder = true;\n\t@Input() disabled = false;\n\t@Input() isLoading = false;\n\t@Input() type: 'button' | 'submit' = 'button';\n\t@Input() clickCallback: (event: Event) => Promise<any>;\n\n\t@HostBinding('class._fullWidth') get _() {\n\t\treturn this.fullWidth;\n\t}\n\n\tasync onClick(event: Event) {\n\t\tif (this.disabled) {\n\t\t\tevent.stopPropagation();\n\t\t\treturn;\n\t\t}\n\n\t\tif (isValueSet(this.clickCallback)) {\n\t\t\tthis.isLoading = true;\n\t\t\tawait this.clickCallback(event).finally(() => {\n\t\t\t\tthis.isLoading = false;\n\t\t\t});\n\t\t}\n\t}\n}\n","<button class=\"buttonFundamentals\"\n\t[ngClass]=\"[\n\t\tvariant,\n\t\tsize,\n\t\tfullWidth ? 'fullWidth' : '',\n\t\thasBorder ? '' : 'no-border',\n\t\tdisabled ? 'disabled' : ''\n\t]\"\n [type]=\"type\"\n (click)=\"onClick($event)\"\n >\n <div class=\"caption\" [ngClass]=\"{invisible: isLoading}\">\n <ng-content></ng-content>\n </div>\n @if (isLoading) {\n <div class=\"loadingSpinnerContainer\">\n <klp-form-loading-indicator variant=\"spinner\" size=\"small\"></klp-form-loading-indicator>\n </div>\n }\n</button>\n","import { Component, Input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ValueAccessorBase } from '../value-accessor-base/value-accessor-base.component';\n\n@Component({\n selector: 'klp-form-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: CheckboxComponent, multi: true }],\n standalone: false\n})\nexport class CheckboxComponent extends ValueAccessorBase<boolean> {\n\t@Input() caption: string;\n\t@Input() renderUndefinedAsIndeterminate = false;\n}\n","<div class=\"componentContainer\">\n <label>\n <div class=\"checkboxContainer\">\n <div class=\"checkBoxVisualContainer\">\n <input type=\"checkbox\" class=\"checkboxNative\"\n [(ngModel)]=\"innerValue\"\n (change)=\"setInnerValueAndNotify(innerValue); touch()\"\n [disabled]=\"disabled\"\n #nativeInputRef\n />\n <div class=\"checkboxVisual\" [ngClass]=\"{filledWithColor: innerValue === true || (renderUndefinedAsIndeterminate && innerValue === undefined)}\">\n @if (innerValue === true) {\n <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"9\" viewBox=\"0 0 12 9\" fill=\"none\">\n <path d=\"M10.3333 1L3.91667 7.41667L1 4.5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n }\n @if (renderUndefinedAsIndeterminate && innerValue === undefined) {\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"11\" height=\"2\" viewBox=\"0 0 11 2\" fill=\"none\">\n <path d=\"M1 1H9.16667\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n }\n </div>\n </div>\n </div>\n @if (caption) {\n <div class=\"caption\">{{ caption }}</div>\n }\n </label>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {ValueAccessorBase} from '../value-accessor-base/value-accessor-base.component';\n\n@Component({\n selector: 'klp-form-email-input',\n templateUrl: './email-input.component.html',\n styleUrls: ['./email-input.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: EmailInputComponent, multi: true }],\n standalone: false\n})\nexport class EmailInputComponent extends ValueAccessorBase<string> {\n\t@Input() placeholder = '';\n}\n","<div class=\"componentContainer\">\n\t<input\n\t\ttype=\"email\"\n\t\tclass=\"form-control\"\n\t\t[(ngModel)]=\"innerValue\"\n\t\t(input)=\"setInnerValueAndNotify($event.target.value)\"\n\t\t[placeholder]=\"placeholder\"\n\t\t(blur)=\"touch()\"\n\t\t[disabled]=\"disabled\"\n\t\t[ngClass]=\"{showErrors: isInErrorState()}\"\n\t\t#nativeInputRef\n\t/>\n\t<div class=\"tail\">\n\t\t<ng-container [ngTemplateOutlet]=\"getTailTpl()\"></ng-container>\n\t</div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {ValueAccessorBase} from \"../value-accessor-base/value-accessor-base.component\";\n\n@Component({\n selector: 'klp-form-number-input',\n templateUrl: './number-input.component.html',\n styleUrls: ['./number-input.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: NumberInputComponent, multi: true }],\n standalone: false\n})\nexport class NumberInputComponent extends ValueAccessorBase<string | number> {\n\t@Input() placeholder: string;\n\t@Input() parseNumber: boolean = false;\n\n\tsetInnerValueAndNotify(value: string | number): void {\n\t\tif (this.parseNumber && typeof value === 'string') {\n\t\t\tsuper.setInnerValueAndNotify(Number(value));\n\t\t} else {\n\t\t\tsuper.setInnerValueAndNotify(value);\n\t\t}\n\t}\n}\n","<input\n\ttype=\"number\"\n\tclass=\"form-control\"\n\t[(ngModel)]=\"innerValue\"\n\t(input)=\"setInnerValueAndNotify($event.target.value)\"\n\t[placeholder]=\"placeholder ? placeholder : ''\"\n\t[ngClass]=\"{showErrors: isInErrorState()}\"\n\t[disabled]=\"disabled\"\n\t#nativeInputRef\n/>\n","import {Component, Input} from '@angular/core';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {ValueAccessorBase} from '../value-accessor-base/value-accessor-base.component';\n\n@Component({\n selector: 'klp-form-password-field',\n templateUrl: './password-field.component.html',\n styleUrls: ['./password-field.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: PasswordFieldComponent, multi: true }],\n standalone: false\n})\nexport class PasswordFieldComponent extends ValueAccessorBase<string> {\n\t@Input() placeholder = 'Password';\n}\n","<input\n\ttype=\"password\"\n\tclass=\"form-control\"\n [ngClass]=\"{showErrors: isInErrorState()}\"\n\t[(ngModel)]=\"innerValue\"\n\t(input)=\"setInnerValueAndNotify($event.target.value)\"\n\t[placeholder]=\"placeholder\"\n\t(blur)=\"touch()\"\n\t[disabled]=\"disabled\"\n\t#nativeInputRef\n/>\n","import {\n\tAfterViewInit,\n\tComponent,\n\tContentChild,\n\tDirective,\n\tElementRef,\n\tEventEmitter,\n\tHost,\n\tInject,\n\tInjectionToken,\n\tInput, NgZone,\n\tOnChanges,\n\tOnDestroy,\n\tOptional,\n\tOutput,\n\tSimpleChanges,\n\tTemplateRef,\n\tViewChild\n} from '@angular/core';\nimport {ControlContainer, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {ValueAccessorBase} from '../value-accessor-base/value-accessor-base.component';\nimport {FormElementComponent} from '../../form/form-element/form-element.component';\nimport {isValueSet, stringIsSetAndFilled} from '../../util/values';\nimport {awaitableForNextCycle} from \"../../util/angular\";\n\nexport type AppSelectOptions = Array<AppSelectOption>;\nexport type AppSelectOption = {\n\tid: any;\n\tname: string;\n\tdescription?: string;\n\tactive?: boolean;\n\tdisabled?: boolean;\n};\n\nexport const SELECT_TRANSLATIONS = new InjectionToken<any>('klp.form.select.translations');\n\n@Directive({\n selector: '[klpSelectOptionTpl]',\n standalone: false\n})\nexport class KlpSelectOptionTemplateDirective {\n}\n\n@Component({\n selector: 'klp-form-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: SelectComponent, multi: true }],\n standalone: false\n})\nexport class SelectComponent extends ValueAccessorBase<string | string[]> implements OnChanges, AfterViewInit, OnDestroy {\n\t@Input() placeholder: string;\n\t@Input() prefix: string;\n\t@Input() orientation: 'vertical' | 'horizontal' = 'horizontal';\n\t@Input() options: AppSelectOptions;\n\t@Input() multiple = false;\n\t@Input() multipleDisplayedAsAmount = false;\n\t@Input() clearable = true;\n\t@Input() truncateOptions = true;\n\t@Input() withSeparatingLine = false;\n\t@Input() searchable = true;\n\t@Input() hasBorderLeft = true;\n\t@Input() hasBorderRight = true;\n\t@Input() public dropdownPosition: 'auto' | 'bottom' | 'top' | 'left' | 'right' = null;\n\t@Input() public dropdownAlignment: 'left' | 'right' = 'left';\n\t@Input() public customSearchFn: (term: string, item: { id: string; name: string; description: string }) => boolean;\n\t@Input() public footerElement: TemplateRef<any>;\n\t@Output() public onSearch = new EventEmitter<string>();\n\t@Output() public onEndReached = new EventEmitter<void>();\n\t@Output() public onOpened = new EventEmitter<void>();\n\t@Output() public onClosed = new EventEmitter<void>();\n\t@Output() public onBlur = new EventEmitter<void>();\n\t@Output() public onClear = new EventEmitter<void>();\n\t@Output() public onEnterKey = new EventEmitter<string>();\n\t@ViewChild('ngSelect') ngSelect;\n\t@ViewChild('tailRef') tailRef: ElementRef;\n\t@ViewChild('tailMockRef') tailMockRef: ElementRef;\n\t@ContentChild(KlpSelectOptionTemplateDirective, {read: TemplateRef}) customOptionTpl: TemplateRef<any>;\n\n\tprivate lastItemIndexReached = -1;\n\tpublic dropdownPositionToUse: 'auto' | 'bottom' | 'top' | 'left' | 'right' = 'bottom';\n\tprivate isOpen: boolean = false;\n\tprivate dropdownPanelOffsetX = 0;\n\tprivate dropdownPanelOffsetY = 0;\n\tprivate anchorAbsolute: HTMLDivElement;\n\tprivate anchorFixed: HTMLDivElement;\n\n\tconstructor(\n\t\t@Optional() @Host() protected parent: FormElementComponent,\n\t\t@Optional() @Host() protected controlContainer: ControlContainer,\n\t\t@Inject(SELECT_TRANSLATIONS) @Optional() private translations: any,\n\t\tprivate elRef: ElementRef,\n\t\tprivate ngZone: NgZone,\n\t) {\n\t\tsuper(parent, controlContainer);\n\t}\n\n\tngAfterViewInit(): void {\n\t\tthis.addPrefix();\n\t\tthis.addTail();\n\t\tthis.elRef.nativeElement.querySelector('input').addEventListener('keydown', this.keyListener);\n\t}\n\n\tprivate keyListener = (e) => {\n\t\tif (e.key === 'Enter') {\n\t\t\tthis.onEnterKey.emit(e.target.value);\n\n\t\t}\n\t}\n\n\tprivate addTail(): void {\n\t\tif (this.tailMockRef) {\n\t\t\tconst container = this.elRef.nativeElement.querySelector('.ng-select-container');\n\t\t\tconst arrowWrapper = this.elRef.nativeElement.querySelector('.ng-arrow-wrapper');\n\t\t\tcontainer.insertBefore(this.tailMockRef.nativeElement, arrowWrapper);\n\t\t}\n\t}\n\n\tprivate addPrefix(): void {\n\t\tif (stringIsSetAndFilled(this.prefix)) {\n\t\t\tconst container = this.elRef.nativeElement.querySelector('.ng-select-container');\n\t\t\tconst newNode = document.createElement('div');\n\t\t\tnewNode.className = 'prefix';\n\t\t\tnewNode.innerText = this.prefix;\n\t\t\tcontainer.insertBefore(newNode, container.children[0]);\n\t\t}\n\t}\n\n\tasync ngOnChanges(changes: SimpleChanges): Promise<void> {\n\t\tif (this.isOpen && isValueSet(changes.options)) {\n\t\t\tthis.lastItemIndexReached = -1;\n\t\t\t// waiting for the thing to render until we fire the event\n\t\t\tawait awaitableForNextCycle();\n\t\t\tawait this.setWidthBasedOnOptionsWidths();\n\t\t}\n\t\tif (changes.dropdownPosition) {\n\t\t\tthis.dropdownPositionToUse = this.dropdownPosition;\n\t\t}\n\t\tif (changes.prefix) {\n\t\t\tconst container = this.elRef?.nativeElement?.querySelector('.ng-select-container .prefix');\n\t\t\tif (isValueSet(container)) {\n\t\t\t\tcontainer.innerText = changes.prefix.currentValue;\n\t\t\t}\n\t\t}\n\t}\n\n\tgetDefaultTranslation(key: string): (x: any) => string {\n\t\tswitch (key) {\n\t\t\tcase 'placeholder':\n\t\t\t\treturn () => 'Pick an option';\n\t\t\tcase 'amountSelected':\n\t\t\t\treturn (amount) => `${amount} selected`;\n\t\t}\n\t}\n\n\tgetTranslation(key: string, params: any = null): string {\n\t\tif (key === 'placeholder' && stringIsSetAndFilled(this.placeholder)) {\n\t\t\treturn this.placeholder;\n\t\t}\n\t\treturn this.translations?.[key]?.(params) ?? this.getDefaultTranslation(key)(params);\n\t}\n\n\tonScroll(lastItemIndex: number): void {\n\t\tconst visibleItems = this.ngSelect?.itemsList?.filteredItems?.length ?? 0;\n\t\tif (this.lastItemIndexReached < lastItemIndex && lastItemIndex === visibleItems) {\n\t\t\tthis.onEndReached.emit();\n\t\t}\n\t\tthis.lastItemIndexReached = Math.max(lastItemIndex, this.lastItemIndexReached);\n\t\tthis.setWidthBasedOnOptionsWidths();\n\t}\n\n\tsearchQueryChanged(searchQuery: string): void {\n\t\tthis.onSearch.emit(searchQuery);\n\t}\n\n\tasync onOpen(): Promise<void> {\n\t\tthis.isOpen = true;\n\n\t\tif (this.orientation === 'horizontal' && !isValueSet(this.dropdownPosition)) {\n\t\t\tthis.determineDropdownPosition();\n\t\t}\n\n\t\tif (!this.truncateOptions) {\n\t\t\tthis.createAnchors();\n\t\t}\n\t\t// waiting for the thing to render until we fire the event\n\t\tawait awaitableForNextCycle();\n\t\tthis.onOpened.emit();\n\n\t\tawait this.setWidthBasedOnOptionsWidths();\n\t\tif (!this.truncateOptions) {\n\t\t\tthis.setFixedDropdownPanelPosition();\n\t\t\tthis.ngZone.runOutsideAngular(() => {\n\t\t\t\t[...this.getAllLimitingContainers(), window].forEach(e => e.addEventListener('scroll', this.setFixedDropdownPanelPosition));\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate createAnchors(): void {\n\t\tthis.anchorAbsolute = document.createElement('div');\n\t\tif (this.dropdownPositionToUse === 'top') {\n\t\t\tthis.elRef.nativeElement.prepend(this.anchorAbsolute);\n\t\t} else {\n\t\t\tthis.elRef.nativeElement.appendChild(this.anchorAbsolute);\n\t\t}\n\n\t\tthis.anchorFixed = document.createElement('div');\n\t\tthis.anchorFixed.style.position = 'fixed';\n\t\tthis.elRef.nativeElement.appendChild(this.anchorFixed);\n\t}\n\n\tprivate removeAnchors(): void {\n\t\tthis.elRef.nativeElement.removeChild(this.anchorAbsolute);\n\t\tthis.elRef.nativeElement.removeChild(this.anchorFixed);\n\t}\n\n\tprivate setFixedDropdownPanelPosition = () => {\n\t\tconst dropdownPanel = this.elRef.nativeElement.querySelector('ng-dropdown-panel');\n\t\tdropdownPanel.style.visibility = 'initial';\n\t\tif (this.orientation === 'vertical') {\n\t\t\treturn;\n\t\t}\n\t\tconst difference = this.anchorAbsolute.getBoundingClientRect().top - this.anchorFixed.getBoundingClientRect().top;\n\t\tthis.dropdownPanelOffsetY = difference;\n\n\t\tdropdownPanel.style.position = 'fixed';\n\t\tthis.setPanelOffsets();\n\t};\n\n\tprivate setWidthBasedOnOptionsWidths = async (): Promise<void> => {\n\t\tif (this.truncateOptions === false) {\n\t\t\tawait awaitableForNextCycle();\n\t\t\tif (!isValueSet(this.elRef.nativeElement.querySelector('.scrollable-content'))) {\n\t\t\t\tconst panel = this.elRef.nativeElement.querySelector('ng-dropdown-panel');\n\t\t\t\tpanel.style.width = `${this.elRef.nativeElement.clientWidth}px`;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.elRef.nativeElement.querySelector('.scrollable-content').classList.add('calculatingWidths');\n\t\t\tconst paddingForScrollbar = this.getScrollbarWidth();\n\t\t\tconst maxWidth = this.elRef.nativeElement.querySelector('.scrollable-content').getBoundingClientRect().width + paddingForScrollbar;\n\t\t\tthis.elRef.nativeElement.querySelector('.scrollable-content').classList.remove('calculatingWidths');\n\t\t\tconst dropdownPanel = this.elRef.nativeElement.querySelector('ng-dropdown-panel');\n\t\t\tif (dropdownPanel) {\n\t\t\t\tdropdownPanel.style.minWidth = `${this.elRef.nativeElement.clientWidth}px`;\n\t\t\t\tdropdownPanel.style.width = `${Math.max(this.elRef.nativeElement.clientWidth, maxWidth, dropdownPanel.getBoundingClientRect().width)}px`;\n\t\t\t\tawait awaitableForNextCycle();\n\t\t\t\tconst pickerWidth = this.elRef.nativeElement.getBoundingClientRect().width;\n\t\t\t\tconst dropdownPanelWidth = dropdownPanel.getBoundingClientRect().width;\n\n\t\t\t\tconst spaceLeftOfElRef = this.elRef.nativeElement.getBoundingClientRect().left;\n\t\t\t\tconst spaceRightOfElRef = window.innerWidth - (this.elRef.nativeElement.getBoundingClientRect().width + spaceLeftOfElRef);\n\t\t\t\tconst extraNeededSpace = dropdownPanelWidth - pickerWidth;\n\t\t\t\tif (this.dropdownAlignment === 'right') {\n\t\t\t\t\tif (extraNeededSpace > spaceLeftOfElRef) {\n\t\t\t\t\t\tthis.dropdownPanelOffsetX = -spaceLeftOfElRef + 10;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.dropdownPanelOffsetX = -extraNeededSpace;\n\t\t\t\t\t}\n\t\t\t\t} else if (extraNeededSpace > spaceRightOfElRef) {\n\t\t\t\t\tthis.dropdownPanelOffsetX = -extraNeededSpace + spaceRightOfElRef - 20;\n\t\t\t\t}\n\t\t\t\tthis.setPanelOffsets();\n\t\t\t}\n\t\t}\n\t};\n\n\tprivate getAllLimitingContainers(): Array<HTMLElement> {\n\t\tconst result = [];\n\t\tlet current = this.elRef.nativeElement;\n\t\twhile (current.parentElement) {\n\t\t\tif (this.isLimitingContainer(current.parentElement)) {\n\t\t\t\tresult.push(current.parentElement);\n\t\t\t}\n\t\t\tcurrent = current.parentElement;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate setPanelOffsets(): void {\n\t\tconst dropdownPanel = this.elRef.nativeElement.querySelector('ng-dropdown-panel');\n\t\tif (!isValueSet(dropdownPanel)) {\n\t\t\treturn;\n\t\t}\n\t\tconst scrollPositionOffset = `translate(${this.dropdownPanelOffsetX}px, ${this.dropdownPanelOffsetY}px)`;\n\t\tconst dropdownPositionOffset = this.dropdownPositionToUse === 'top' ? `translateY(-100%) translateY(-8px)` : 'translateY(8px)';\n\t\tif (this.orientation === 'vertical') {\n\t\t\tdropdownPanel.style.transformOrigin = 'top left';\n\t\t\tdropdownPanel.style.transform = `rotate(90deg) translateY(-${this.elRef.nativeElement.getBoundingClientRect().width}px)`;\n\t\t} else {\n\t\t\tdropdownPanel.style.transform = [scrollPositionOffset, dropdownPositionOffset].join(' ');\n\t\t}\n\t}\n\n\tprivate determineDropdownPosition(): void {\n\t\tconst bottomSpace = window.innerHeight - this.elRef.nativeElement.getBoundingClientRect().top;\n\t\tif (bottomSpace >= 330) {\n\t\t\tthis.dropdownPositionToUse = 'bottom';\n\t\t} else {\n\t\t\tthis.dropdownPositionToUse = 'top';\n\t\t}\n\t}\n\n\tprivate isLimitingContainer(element: Element): boolean {\n\t\tconst style = getComputedStyle(element);\n\t\tif (style.overflowY === 'auto') {\n\t\t\treturn true;\n\t\t}\n\t\tif (style.overflow === 'auto') {\n\t\t\treturn true;\n\t\t}\n\t\tif (style.overflowY === 'scroll') {\n\t\t\treturn true;\n\t\t}\n\t\tif (style.overflow === 'scroll') {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic focus = (): void => {\n\t\tthis.ngSelect.focus();\n\t}\n\n\tpublic open = (): void => {\n\t\tthis.ngSelect.open();\n\t}\n\n\tpublic close = (): void => {\n\t\tthis.ngSelect.close();\n\t}\n\n\tpublic onClose(): void {\n\t\t[...this.getAllLimitingContainers(), window].forEach(e => e.removeEventListener('scroll', this.setFixedDropdownPanelPosition));\n\t\t// Give angular a second to render the closed situation before emitting the close event\n\t\tsetTimeout(() => {\n\t\t\tthis.isOpen = false;\n\t\t\tif (!this.truncateOptions) {\n\t\t\t\tthis.removeAnchors();\n\t\t\t}\n\t\t\tthis.onClosed.emit();\n\t\t});\n\t}\n\n\tonFocus(): void {\n\t\tconst singleValueInputElement = this.elRef.nativeElement.querySelector('.ng-select-single .ng-input');\n\t\tconst prefixElement = this.elRef.nativeElement.querySelector('.ng-select-single .prefix');\n\t\tif (isValueSet(singleValueInputElement) && isValueSet(prefixElement)) {\n\t\t\tconst prefixWidth = prefixElement.getBoundingClientRect().width;\n\t\t\tconst spacing = '0.4rem';\n\t\t\tsingleValueInputElement.style.left = `calc(${prefixWidth}px + ${spacing})`;\n\t\t} else if (isValueSet(singleValueInputElement)) {\n\t\t\tsingleValueInputElement.style.left = `0px`;\n\t\t}\n\t}\n\n\tprivate getScrollbarWidth(): number {\n\t\t// Create a temporary div element\n\t\tconst div = document.createElement('div');\n\n\t\t// Set the style to measure the scrollbar\n\t\tdiv.style.overflow = 'scroll'; // Enable scrollbar\n\t\tdiv.style.width = '100px'; // Set a fixed width\n\t\tdiv.style.height = '100px'; // Set a fixed height\n\t\tdiv.style.position = 'absolute'; // Prevent the element from taking space in the layout\n\t\tdiv.style.top = '-9999px'; // Position it out of the viewport\n\n\t\t// Append the element to the body\n\t\tdocument.body.appendChild(div);\n\n\t\t// Get the width of the scrollbar\n\t\tconst scrollbarWidth = div.offsetWidth - div.clientWidth;\n\n\t\t// Remove the temporary element from the DOM\n\t\tdocument.body.removeChild(div);\n\n\t\treturn scrollbarWidth;\n\t}\n\n\tngOnDestroy(): void {\n\t\tsuper.ngOnDestroy();\n\t\tthis.elRef.nativeElement?.querySelector('input')?.removeEventListener('keydown', this.keyListener);\n\t}\n}\n","<ng-select\n #ngSelect\n [placeholder]=\"getTranslation('placeholder')\"\n bindLabel=\"name\"\n bindValue=\"id\"\n [items]=\"options\"\n [clearable]=\"clearable\"\n [(ngModel)]=\"innerValue\"\n [ngClass]=\"{showErrors: isInErrorState(), verticalOrientation: orientation === 'vertical', truncateOptions: truncateOptions, nonTruncatedOptions: !truncateOptions, withSeparatingLine: withSeparatingLine, noBorderLeft: !hasBorderLeft, noBorderRight: !hasBorderRight}\"\n (change)=\"setInnerValueAndNotify(innerValue)\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n (blur)=\"touch(); onBlur.emit()\"\n (clear)=\"onClear.emit()\"\n (search)=\"searchQueryChanged($event.term)\"\n [searchable]=\"searchable\"\n [dropdownPosition]=\"dropdownPositionToUse\"\n [searchFn]=\"customSearchFn\"\n [selectOnTab]=\"true\"\n [virtualScroll]=\"true\"\n (scroll)=\"onScroll($event.end)\"\n (open)=\"onOpen()\"\n (close)=\"onClose()\"\n (focus)=\"onFocus()\"\n >\n <ng-template let-item=\"item\" ng-option-tmp>\n @if (customOptionTpl) {\n <ng-container [ngTemplateOutlet]=\"customOptionTpl\" [ngTemplateOutletContext]=\"{item: item}\"></ng-container>\n }\n @if (!customOptionTpl) {\n <div [attr.data-cy]=\"item.id\">\n {{ item.name }}\n @if (item.description) {\n <div class=\"dropdown-item-description\">\n {{ item.description }}\n </div>\n }\n </div>\n }\n </ng-template>\n @if (multiple && multipleDisplayedAsAmount && innerValue?.length > 1) {\n <ng-template ng-multi-label-tmp>\n <div class=\"ng-value\">\n <span class=\"ng-value-label\">{{getTranslation('amountSelected', innerValue?.length)}}</span>\n </div>\n </ng-template>\n }\n @if (footerElement) {\n <ng-template ng-footer-tmp>\n <ng-container [ngTemplateOutlet]=\"footerElement\"></ng-container>\n </ng-template>\n }\n</ng-select>\n\n<div class=\"tail\" #tailRef>\n <ng-container [ngTemplateOutlet]=\"getTailTpl()\"></ng-container>\n</div>\n<!-- I need this mock to reserve the space. I cant use the normal tail because that opens the dropdown from ng-select -->\n<!-- I have no idea how to avoid that -->\n<div class=\"tailMock\" #tailMockRef>\n <ng-container [ngTemplateOutlet]=\"getTailTpl()\"></ng-container>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'klp-select-footer',\n templateUrl: './select-footer.component.html',\n styleUrls: ['./select-footer.component.scss'],\n standalone: false\n})\nexport class SelectFooterComponent {\n\t@Input() public prefix: string;\n\t@Input() public text: string;\n}\n","<div class=\"componentContainer\">\n\t<span class=\"prefix\">{{prefix}}</span>\n\t<span class=\"text\">{{text}}</span>\n</div>\n","import {\n\tAfterViewInit,\n\tComponent,\n\tContentChild,\n\tElementRef,\n\tHost,\n\tInput,\n\tNgZone,\n\tOnInit,\n\tOptional,\n\tQueryList,\n\tTemplateRef,\n\tViewChildren,\n} from '@angular/core';\nimport {ControlContainer, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {isValueSet} from '../../util/values';\nimport {ValueAccessorBase} from '../value-accessor-base/value-accessor-base.component';\nimport {FormElementComponent} from '../../form/form-element/form-element.component';\n\n@Component({\n selector: 'klp-form-sortable-items',\n templateUrl: './sortable-items.component.html',\n styleUrls: ['./sortable-items.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: SortableItemsComponent,\n multi: true,\n },\n ],\n standalone: false\n})\nexport class SortableItemsComponent\n\textends ValueAccessorBase<Array<any>>\n\timplements OnInit, AfterViewInit\n{\n\t@ContentChild(TemplateRef) template: TemplateRef<any>;\n\t@Input() sortableItemSize: 'sm' | 'lg' = 'lg';\n\n\t@ViewChildren('dragItem') dragItems: QueryList<ElementRef>;\n\tpublic dragSourceIndex: number;\n\tprivate currentDragPosition: number;\n\n\tprivate scrollInterval = null;\n\n\tconstructor(\n\t\t@Host() @Optional() protected parent: FormElementComponent,\n\t\t@Host() @Optional() protected controlContainer: ControlContainer,\n\t\tprivate ngZone: NgZone)\n\t{\n\t\tsuper(parent, controlContainer);\n\t}\n\n\tngAfterViewInit(): void {\n\t\tthis.setDragItemListeners();\n\t\tthis.dragItems.changes.subscribe(() => {\n\t\t\tthis.setDragItemListeners();\n\t\t});\n\t}\n\n\tprivate setDragItemListeners(): void {\n\t\tthis.dragItems.forEach(e => {\n\t\t\tthis.ngZone.runOutsideAngular(() => {\n\t\t\t\te.nativeElement.removeEventListener('dragstart', this.onDragStart);\n\t\t\t\te.nativeElement.removeEventListener('dragover', this.onDragOver);\n\t\t\t\te.nativeElement.removeEventListener('dragenter', this.onDragEnter);\n\t\t\t\te.nativeElement.removeEventListener('dragend', this.onDragEnd);\n\n\t\t\t\te.nativeElement.addEventListener('dragstart', this.onDragStart);\n\t\t\t\te.nativeElement.addEventListener('dragover', this.onDragOver);\n\t\t\t\te.nativeElement.addEventListener('dragenter', this.onDragEnter);\n\t\t\t\te.nativeElement.addEventListener('dragend', this.onDragEnd);\n\n\t\t\t\te.nativeElement.querySelector('.visual').style.transform = `translateY(0%)`;\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate onDragOver = (ev) => {\n\t\tev.preventDefault();\n\t}\n\n\tprivate onDragEnter = (ev) => {\n\t\tif (ev.clientY < 80) {\n\t\t\tthis.scrollPage(40);\n\t\t} else if (window.innerHeight - ev.clientY < 80) {\n\t\t\tthis.scrollPage(-40);\n\t\t} else {\n\t\t\tthis.stopScrolling();\n\t\t}\n\t\tev.dataTransfer.dropEffect = 'move';\n\t\tconst targetIndex = this.dragItems.map(e => e.nativeElement).findIndex(e => e === (ev.target as HTMLElement));\n\t\tif (targetIndex === -1) {\n\t\t\treturn;\n\t\t}\n\t\tthis.currentDragPosition = targetIndex;\n\t\tthis.dragItems.forEach((dragItem, i) => {\n\t\t\tif (this.dragSourceIndex === i) {\n\n\t\t\t\tif (this.dragSourceIndex > this.currentDragPosition) {\n\t\t\t\t\tconst heightsAbove = this.dragItems.filter((e, i) => {\n\t\t\t\t\t\tif (i >= this.dragSourceIndex) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn i > this.currentDragPosition - 1;\n\t\t\t\t\t}).reduce((acc, cur, i) => {\n\t\t\t\t\t\treturn acc + cur.nativeElement.getBoundingClientRect().height;\n\t\t\t\t\t}, 0);\n\t\t\t\t\tdragItem.nativeElement.querySelector('.visual').style.transform = `translateY(${-heightsAbove}px)`;\n\t\t\t\t}\n\n\t\t\t\telse if (this.dragSourceIndex < this.currentDragPosition) {\n\t\t\t\t\tconst heightsAbove = this.dragItems.filter((e, i) => {\n\t\t\t\t\t\tif (i <= this.dragSourceIndex) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn i <= this.currentDragPosition;\n\t\t\t\t\t}).reduce((acc, cur, i) => {\n\t\t\t\t\t\treturn acc + cur.nativeElement.getBoundingClientRect().height;\n\t\t\t\t\t}, 0);\n\t\t\t\t\tdragItem.nativeElement.querySelector('.visual').style.transform = `translateY(${heightsAbove}px)`;\n\t\t\t\t}\n\n\t\t\t\telse {\n\t\t\t\t\tdragItem.nativeElement.querySelector('.visual').style.transform = `translateY(${0}px)`;\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst heightOfCurrentlyDraggedItem = (this.dragItems.get(this.dragSourceIndex).nativeElement.getBoundingClientRect().height);\n\t\t\tif (this.shouldShoveDown(i)) {\n\t\t\t\tdragItem.nativeElement.querySelector('.visual').style.transform = `translateY(${heightOfCurrentlyDraggedItem}px)`;\n\t\t\t}\n\t\t\telse if (this.shouldShoveUp(i)) {\n\t\t\t\tdragItem.nativeElement.querySelector('.visual').style.transform = `translateY(${-heightOfCurrentlyDraggedItem}px)`;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdragItem.nativeElement.querySelector('.visual').style.transform = `translateY(0%)`;\n\t\t\t}\n\t\t});\n\n\t\tthis.currentDragPosition = targetIndex;\n\t}\n\n\tprivate onDragStart = (ev) => {\n\t\tev.dataTransfer.effectAllowed = 'move';\n\t\tthis.ngZone.run(() => {\n\t\t\tthis.dragSourceIndex = this.dragItems.map(e => e.nativeElement).findIndex(e => e === ev.target);\n\t\t\tthis.currentDragPosition = this.dragSourceIndex;\n\t\t});\n\t};\n\n\tprivate onDragEnd = (ev) => {\n\t\tthis.stopScrolling();\n\t\tconst movedElement = this.innerValue[this.dragSourceIndex];\n\t\tconst isMovedToLastPlace = this.currentDragPosition === this.innerValue.length - 1;\n\t\tthis.ngZone.run(() => {\n\t\t\tthis.innerValue = this.innerValue\n\t\t\t.filter((e, i) => i !== this.dragSourceIndex)\n\t\t\t.reduce((acc, cur, i) => {\n\t\t\t\tif (i === this.currentDragPosition) {\n\t\t\t\t\treturn [...acc, movedElement, cur];\n\t\t\t\t}\n\t\t\t\treturn [...acc, cur];\n\t\t\t}, []);\n\t\t\tif (isMovedToLastPlace) {\n\t\t\t\tthis.innerValue = [...this.innerValue, movedElement];\n\t\t\t}\n\t\t\tthis.dragItems.forEach((dragItem, i) => {\n\t\t\t\tdragItem.nativeElement.querySelector('.visual').style.transform = `translateY(0%)`;\n\t\t\t});\n\t\t\tthis.currentDragPosition = -1;\n\t\t\tthis.dragSourceIndex = -1;\n\t\t\tthis.setInnerValueAndNotify(this.innerValue);\n\t\t});\n\t}\n\n\tshouldShoveDown(index: number): boolean {\n\t\treturn this.dragSourceIndex > index && this.currentDragPosition <= index;\n\t}\n\n\tshouldShoveUp(index: number): boolean {\n\t\treturn this.dragSourceIndex < index && this.currentDragPosition >= index;\n\t}\n\n\tprivate scrollPage(scrollAmount: number): void {\n\t\tif (!isValueSet(this.scrollInterval)) {\n\t\t\tthis.scrollInterval = setInterval(() => {\n\t\t\t\twindow.scroll({\n\t\t\t\t\ttop: document.scrollingElement.scrollTop - scrollAmount,\n\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t});\n\t\t\t\tif (document.scrollingElement.scrollTop <= 100) {\n\t\t\t\t\tthis.stopScrolling();\n\t\t\t\t}\n\t\t\t}, 100);\n\t\t}\n\t}\n\n\tprivate stopScrolling(): void {\n\t\tclearInterval(this.scrollInterval);\n\t\tthis.scrollInterval = null;\n\t}\n}\n","<ng-template #listItem>\n @for (item of innerValue; track item; let index = $index) {\n <li\n class=\"sortableItem\"\n [draggable]=\"!disabled\"\n\t\t\t[ngClass]=\"{\n\t\t\tlargeSortableItem: sortableItemSize === 'lg',\n\t\t \tsmallSortableItem: sortableItemSize === 'sm',\n\t\t \t}\"\n #dragItem\n >\n <div class=\"visual\">\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item, index:index }\"></ng-container>\n </div>\n </li>\n }\n</ng-template>\n\n@if (!disabled) {\n <ol\n class=\"itemsContainer\"\n [ngClass]=\"{dragInProgress: dragSourceIndex >= 0}\"\n >\n <ng-container *ngTemplateOutlet=\"listItem\"></ng-container>\n </ol>\n}\n\n@if (disabled) {\n <ol class=\"itemsContainer disabled-mouse-cursor\">\n <ng-container *ngTemplateOutlet=\"listItem\"></ng-container>\n </ol>\n}\n","import {Component, EventEmitter, Input, Output, TemplateRef} from '@angular/core';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {ValueAccessorBase} from '../value-accessor-base/value-accessor-base.component';\n\n@Component({\n selector: 'klp-form-text-input',\n templateUrl: './text-input.component.html',\n styleUrls: ['./text-input.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: TextInputComponent, multi: true }],\n standalone: false\n})\nexport class TextInputComponent extends ValueAccessorBase<string> {\n\tprivate isPeekingPassword = false;\n\n\t@Input() placeholder: string;\n\t@Input() type: 'text' | 'password' = 'text';\n\t@Input() clearable = false;\n\t@Input() icon: 'search';\n\t@Input() hasBorderLeft = true;\n\t@Input() hasBorderRight = true;\n\t@Input() passwordPeekIcon: TemplateRef<any>;\n\t@Input() size: 'small' | 'medium' = 'medium';\n\t@Output() onBlur = new EventEmitter<void>();\n\n\tpublic togglePeakPassword(): void {\n\t\tthis.isPeekingPassword = !this.isPeekingPassword;\n\t}\n\n\tpublic getType(): 'text' | 'password' {\n\t\tif (this.type === 'text') {\n\t\t\treturn 'text';\n\t\t}\n\t\treturn this.isPeekingPassword ? 'text' : 'password';\n\t}\n}\n","<div class=\"componentContainer\" [ngClass]=\"{smallSized: size === 'small'}\">\n @if (icon?.length > 0) {\n @if (icon === 'search') {\n <i class=\"ti-search\"></i>\n }\n }\n <input\n [type]=\"getType()\"\n [(ngModel)]=\"innerValue\"\n [ngClass]=\"{showErrors: isInErrorState(), hasIcon: icon?.length > 0, hasClearButton: clearable, hasTail: getTailTpl(), noBorderLeft: !hasBorderLeft, noBorderRight: !hasBorderRight}\"\n (input)=\"setInnerValueAndNotify($event.target.value)\"\n [placeholder]=\"placeholder ? placeholder : ''\"\n (blur)=\"touch(); onBlur.emit()\"\n [disabled]='disabled'\n #nativeInputRef\n />\n <div class=\"tail\">\n <ng-container [ngTemplateOutlet]=\"getTailTpl()\"></ng-container>\n @if (clearable && innerValue?.length > 0) {\n <div class=\"clearIcon\" (click)=\"resetToNull()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M15 5L5 15M5 5L15 15\" stroke=\"#475467\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n }\n @if (passwordPeekIcon && type === 'password') {\n <div class=\"peakBtn\" (click)=\"togglePeakPassword()\">\n <ng-container [ngTemplateOutlet]=\"passwordPeekIcon\"></ng-container>\n </div>\n }\n </div>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {ValueAccessorBase} from '../value-accessor-base/value-accessor-base.component';\n\n@Component({\n selector: 'klp-form-toggle',\n templateUrl: './toggle.component.html',\n styleUrls: ['./toggle.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: ToggleComponent, multi: true }],\n standalone: false\n})\nexport class ToggleComponent extends ValueAccessorBase<boolean> {\n\t@Input() transparentBackground = true;\n}\n","<div class=\"componentContainer\" [ngClass]=\"{disabled: disabled}\">\n\t<div class=\"hiddenValue\" data-cy-value>{{innerValue}}</div>\n\t<input type=\"checkbox\" class=\"nativeCheckbox\"\n\t\t[(ngModel)]=\"innerValue\"\n\t\t(input)=\"setInnerValueAndNotify($event.target.checked); touch()\"\n\t\t[disabled]=\"disabled\"\n\t\t[ngClass]=\"{showErrors: isInErrorState()}\"\n\t #nativeInputRef\n\t/>\n\t<div class=\"toggleVisual\" [ngClass]=\"{transparentBackground: transparentBackground}\"></div>\n</div>\n","import {Component, ElementRef, Host, OnInit, Optional, TemplateRef, ViewChild} from '@angular/core';\nimport {FormElementComponent} from \"../form-element/form-element.component\";\nimport {isNullOrUndefined} from \"../../util/values\";\n\n@Component({\n selector: 'klp-form-caption',\n templateUrl: './form-caption.component.html',\n styleUrls: ['./form-caption.component.scss'],\n standalone: false\n})\nexport class FormCaptionComponent implements OnInit {\n\t@ViewChild('contentRef') public contentRef: TemplateRef<any>;\n\n\tconstructor(@Host() @Optional() private parent: FormElementComponent) {}\n\n\tngOnInit(): void {\n\t\t// this is being run next cycle, because we dont want to fail if the order of components is as follows:\n\t\t// <app-form-error />\n\t\t// <some-input />\n\t\t// That would fail, because the logic of the form error is run first, and at that moment, the `some-input` isnt registered yet\n\t\tsetTimeout(() => {\n\t\t\tthis.parent.registerCaption(this.contentRef);\n\t\t});\n\t}\n}\n","<ng-template #contentRef>\n\t<ng-content></ng-content>\n</ng-template>\n","import {Component, ContentChild, Directive, Host, Input, OnInit, Optional, TemplateRef, ViewChild} from '@angular/core';\nimport {FormElementComponent} from \"../form-element/form-element.component\";\nimport {ErrorTypes} from \"../../types\";\n\n@Component({\n selector: 'klp-form-error',\n templateUrl: './form-error.component.html',\n styleUrls: ['./form-error.component.scss'],\n standalone: false\n})\nexport class FormErrorComponent implements OnInit {\n\t@Input() error: ErrorTypes;\n\t@ViewChild('contentRef') public contentRef: TemplateRef<any>;\n\t@ContentChild(TemplateRef) contentChild: TemplateRef<any>;\n\tconstructor(@Host() @Optional() private parent: FormElementComponent) {}\n\n\tngOnInit(): void {\n\t\t// this is being run next cycle, because we dont want to fail if the order of components is as follows:\n\t\t// <app-form-error />\n\t\t// <some-input />\n\t\t// That would fail, because the logic of the form error is run first, and at that moment, the `some-input` isnt registered yet\n\t\tsetTimeout(() => {\n\t\t\tthis.parent.registerErrorHandler(this.error, this.contentRef);\n\t\t});\n\t}\n\n\tpublic getErrorValueMessage(): string {\n\t\treturn this.parent.getAttachedControl().errors[this.error];\n\t}\n}\n","<ng-template #contentRef>\n @if (error !== 'async') {\n <ng-container [ngTemplateOutlet]=\"contentChild\"></ng-container>\n }\n @if (error === 'async') {\n <div>{{getErrorValueMessage()}}</div>\n }\n</ng-template>\n","import { InjectionToken } from '@angular/core';\nimport { isArrayOf } from '../../util/arrays';\n\nexport class FormValidationError extends Error {\n\tpublic readonly name = 'FormValidationError';\n\tpublic readonly path: string;\n\n\tconstructor(path: string, message: string) {\n\t\tsuper(message);\n\t\tthis.path = path;\n\t}\n}\n\nexport type FormValidationErrors = Array<FormValidationError>;\n\nexport type FormErrorHandler = (error: any) => FormValidationErrors;\n\nexport const KLP_FORM_ERROR_HANDLER = new InjectionToken<FormErrorHandler>('KLP_FORM_ERROR_HANDLER');\n\n\nexport const DefaultErrorHandler: FormErrorHandler = (error: any) => {\n\tif (Array.isArray(error) && isArrayOf(error, FormValidationError)) {\n\t\t// If the error is an array of FormValidationErrors, then pass it along.\n\t\treturn error;\n\t} else if (error instanceof FormValidationError) {\n\t\t// If the error is a FormValidationError, then wrap it and pass it on.\n\t\treturn [error];\n\t}\n\n\tthrow error;\n};\n\n","import {Component, HostBinding, inject, Input, OnInit} from '@angular/core';\nimport {FormComponent, invalidFieldsSymbol} from '../form.component';\nimport { ButtonVariant } from '../../elements/button/button.component';\nimport { DefaultErrorHandler, FormValidationError, KLP_FORM_ERROR_HANDLER } from '../form-validation-error/form-validation-error';\n\nexport type SubmitButtonVariant = Extract<ButtonVariant,\n\t| 'greenFilled'\n\t| 'redFilled'\n\t| 'greenOutlined'\n\t| 'white'\n>;\n\n@Component({\n selector: 'klp-form-submit-button',\n templateUrl: './form-submit-button.component.html',\n styleUrls: ['./form-submit-button.component.scss'],\n standalone: false\n})\nexport class FormSubmitButtonComponent implements OnInit{\n\tprivate parentForm = inject(FormComponent, {optional: true});\n\tprivate handleError = inject(KLP_FORM_ERROR_HANDLER, {optional: true}) ?? DefaultErrorHandler;\n\tpublic buttonType: 'submit' | 'button' = 'submit';\n\n\t@Input() public isLoading = false;\n\t@Input() @HostBinding('class._fullWidth') public fullWidth = false;\n\t@Input() public variant: SubmitButtonVariant = 'greenFilled';\n\t@Input() public submitCallback: (renderedAndEnabledValues: object, allRenderedValues: object) => Promise<any>;\n\t@Input() public before: () => Promise<any> = () => Promise.resolve();\n\t@Input() public after: () => Promise<any> = () => Promise.resolve();\n\t@Input() public disabled: boolean = false;\n\n\tngOnInit(): void {\n\t\tif (this.parentForm.allowSubmitOn === 'buttonOnly') {\n\t\t\tthis.buttonType = 'button';\n\t\t} else {\n\t\t\tthis.buttonType = 'submit';\n\t\t}\n\t}\n\n\tprivate setValidationError = (e: FormValidationError) => {\n\t\tthis.parentForm.formGroup.get(e.path)?.setErrors({ message: { value: e.message }});\n\t}\n\n\tasync submitForm(): Promise<void> {\n\t\tawait this.before().catch(() => null);\n\n\t\ttry {\n\t\t\tconst [renderedAndEnabledValues, renderedValues] = await this.parentForm.trySubmit();\n\t\t\tthis.isLoading = true;\n\t\t\tawait this.submitCallback(renderedAndEnabledValues, renderedValues)\n\t\t\t\t.finally(() => this.isLoading = false);\n\t\t} catch (e) {\n\t\t\tif (e === invalidFieldsSymbol) {\n\t\t\t\treturn; // swallow the error, the framework will scroll to the field that needs attention\n\t\t\t}\n\t\t\tthis.handleError(e).forEach(this.setValidationError);\n\t\t\treturn;\n\t\t}\n\n\t\tawait this.after();\n\t}\n}\n","<klp-form-button\n\t\t[variant]=\"variant\"\n\t\t(click)=\"submitForm()\"\n\t\t[disabled]=\"isLoading || disabled\"\n\t\t[isLoading]=\"isLoading\"\n\t\t[fullWidth]=\"fullWidth\"\n\t\t[type]=\"buttonType\"\n\t\t[ngClass]=\"fullWidth ? 'fullWidth' : ''\"\n\t>\n\t<ng-content></ng-content>\n</klp-form-button>\n","import {Component, Host, Input, Optional} from '@angular/core';\nimport {ControlContainer} from '@angular/forms';\nimport {ValueAccessorBase} from './value-accessor-base.component';\nimport {FormElementComponent} from '../../form/form-element/form-element.component';\nimport {isValueSet} from '../../util/values';\n\n@Component({\n selector: '',\n template: '',\n standalone: false\n})\nexport class MultipleValueAccessorBase<T> extends ValueAccessorBase<Array<T> | T> {\n\t@Input() multiple = false;\n\n\tconstructor(\n\t\t@Host() @Optional() protected parent: FormElementComponent,\n\t\t@Host() @Optional() protected controlContainer: ControlContainer\n\t) {\n\t\tsuper(parent, controlContainer);\n\t}\n\n\twriteValue(value: Array<T> | T): void {\n\t\t// if the outside world passes a value in the wrong format, it should be corrected\n\t\tif (this.multiple && !Array.isArray(value)) {\n\t\t\tconst correctedVal = [value].filter(isValueSet);\n\t\t\tsuper.writeValue(correctedVal);\n\t\t\tsuper.setInnerValueAndNotify(correctedVal);\n\t\t} else if (!this.multiple && Array.isArray(value)) {\n\t\t\tconst correctedVal = value[0];\n\t\t\tsuper.writeValue(correctedVal);\n\t\t\tsuper.setInnerValueAndNotify(correctedVal);\n\t\t} else {\n\t\t\tsuper.writeValue(value);\n\t\t}\n\t}\n\n\tsetInnerValueAndNotify(value: T | Array<T>): void {\n\t\tif (this.multiple && !Array.isArray(value)) {\n\t\t\tsuper.setInnerValueAndNotify([value].filter(isValueSet));\n\t\t} else if (!this.multiple && Array.isArray(value)) {\n\t\t\tsuper.setInnerValueAndNotify(value[0]);\n\t\t} else {\n\t\t\tsuper.setInnerValueAndNotify(value);\n\t\t}\n\t}\n}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport const invalidDateKey = '--invalid_date--';\n\nexport function dateValidator(control: AbstractControl): ValidationErrors | null {\n\tconst invalid = control.value === invalidDateKey;\n\treturn invalid ? { date: control.value } : null;\n}\n","import {\n\tAfterViewInit,\n\tChangeDetectorRef,\n\tComponent,\n\tElementRef,\n\tHost,\n\tInject,\n\tInjectionToken,\n\tInput, NgZone,\n\tOnChanges,\n\tOnInit,\n\tOptional,\n\tSimpleChanges,\n\tViewChild\n} from '@angular/core';\nimport {ControlContainer, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {invalidDateKey} from '../../validators/dateValidator';\nimport {DateFilterFn, MatDatepicker} from '@angular/material/datepicker';\nimport {DateAdapter, MAT_DATE_FORMATS, MAT_NATIVE_DATE_FORMATS, MatDateFormats} from '@angular/material/core';\nimport {KlpDateFormats} from '../../types';\nimport {FormElementComponent} from '../../form/form-element/form-element.component';\nimport {MultipleValueAccessorBase} from '../value-accessor-base/multiple-value-accessor-base.component';\nimport {isValueSet, stringIsSetAndFilled} from '../../util/values';\nimport {endOfMonth, format as formatDate, startOfMonth, isSameDay} from 'date-fns';\nimport {arrayIsSetAndFilled, removeDuplicatesFromArray } from '../../util/arrays';\nimport {runNextRenderCycle} from \"../../util/angular\";\n\nexport const KLP_DATE_FORMATS = new InjectionToken<KlpDateFormats>('klp.form.date.formats');\nexport const DATE_TIME_PICKER_TRANSLATIONS = new InjectionToken<any>('klp.form.dateTime.translations');\nexport const DATE_PICKER_LOCALE = new InjectionToken<any>('klp.form.dateTime.locale');\n\nexport function matDateFormatsFactory(component: DateTimePickerComponent, dateFormats?: KlpDateFormats): MatDateFormats {\n\treturn dateFormats?.(component.format) ?? MAT_NATIVE_DATE_FORMATS;\n}\n\n@Component({\n selector: 'klp-form-date-time-picker',\n templateUrl: './date-time-picker.component.html',\n styleUrls: ['./date-time-picker.component.scss'],\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: DateTimePickerComponent, multi: true },\n {\n provide: MAT_DATE_FORMATS,\n deps: [DateTimePickerComponent, [new Optional(), KLP_DATE_FORMATS]],\n useFactory: matDateFormatsFactory,\n },\n ],\n standalone: false\n})\nexport class DateTimePickerComponent extends MultipleValueAccessorBase<Date | typeof invalidDateKey> implements OnInit, AfterViewInit, OnChanges {\n\t@Input() public minDate: Date = undefined;\n\t@Input() public maxDate: Date = undefined;\n\t@Input() public sameMonthOnly = false;\n\t@Input() public format = 'dd-MM-yyyy';\n\t@Input() public placeholder: string;\n\t@Input() public clearable = false;\n\t@Input() public showTimeInput = true;\n\t@Input() public initHour: string = null;\n\t@Input() public initMinute: string = null;\n\t@Input() public invalidTimeAsMidnight = false; // if the time is not valid, use 00:00 as the time\n\n\t@ViewChild('nativeInput') nativeInputRef: ElementRef;\n\t@ViewChild('picker') datePickerRef: MatDatepicker<Date>;\n\t@ViewChild('timeDoubleDropdown') timeDoubleDropdown: ElementRef;\n\n\topenPickerOnDate: Date = null;\n\tminDateStartOfDay: Date = undefined;\n\tmaxDateEndOfDay: Date = undefined;\n\n\t// this is passed as ngmodel and is used to set the initial date. But we also\n\t// use input and nativeInput callbacks to extend the validation logic so we\n\t// can distinguish between empty and invalid dates.\n\tvalueForMaterialDatePicker: Date;\n\thours: string; // string because it's a text input\n\tminutes: string; // string because it's a text input\n\tprotected selectedDates: Array<Date> = [];\n\tprivate datePickingClosingFn: () => void;\n\tprivate dateTouched = false;\n\tprivate hoursTouched = false;\n\tprivate minutesTouched = false;\n\tprotected dropdownVisible = false;\n\tprotected minutesOfHour: Array<number> = [];\n\tprotected Number = Number;\n\n\tconstructor(\n\t\t@Host() @Optional() protected parent: FormElementComponent,\n\t\t@Host() @Optional() protected controlContainer: ControlContainer,\n\t\t@Inject(DATE_TIME_PICKER_TRANSLATIONS) @Optional() private translations: any,\n\t\t@Inject(DATE_PICKER_LOCALE) @Optional() private datePickerLocale: any,\n\t\tprivate dateAdapter: DateAdapter<Date>,\n\t\tprivate elRef: ElementRef,\n\t\tprivate cdr: ChangeDetectorRef,\n\t\tprivate ngZone: NgZone,\n\t) {\n\t\tsuper(parent, controlContainer);\n\t\tif (isValueSet(datePickerLocale)) {\n\t\t\tdateAdapter.setLocale(datePickerLocale());\n\t\t}\n\t}\n\n\tngOnInit(): void {\n\t\tsuper.ngOnInit();\n\t\tif (this.multiple) {\n\t\t\tthis.placeholder = '';\n\t\t\tthis.showTimeInput = false;\n\t\t}\n\t\tthis.hours = this.initHour;\n\t\tthis.minutes = this.initMinute;\n\t\tthis.minutesOfHour = Array.from({length: 60}, (v, k) => k).filter(e => e % 5 === 0);\n\t}\n\n\n\n\tngAfterViewInit(): void {\n\t\tif (this.multiple) {\n\t\t\t// we are going to overwrite the datepicker closing fn later, so we are saving it here to restore it when needed\n\t\t\tthis.datePickingClosingFn = this.datePickerRef.close;\n\t\t}\n\t}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (changes.minDate) {\n\t\t\tthis.determineMinAndMaxDates();\n\t\t}\n\t\tif (changes.maxDate) {\n\t\t\tthis.determineMinAndMaxDates();\n\t\t}\n\t}\n\n\tsetMinDate(minDate: Date): void {\n\t\tif (minDate) {\n\t\t\tthis.minDateStartOfDay = new Date(minDate);\n\t\t\tthis.minDateStartOfDay.setHours(0, 0, 0, 0);\n\t\t} else {\n\t\t\tthis.minDateStartOfDay = undefined;\n\t\t}\n\t}\n\n\tsetMaxDate(maxDate: Date): void {\n\t\tif (maxDate) {\n\t\t\tthis.maxDateEndOfDay = new Date(maxDate);\n\t\t\tthis.maxDateEndOfDay.setHours(23, 59, 59, 999);\n\t\t} else {\n\t\t\tthis.maxDateEndOfDay = undefined;\n\t\t}\n\t}\n\n\tgetSelectedMonths(): number {\n\t\treturn removeDuplicatesFromArray(this.selectedDates.map((e) => formatDate(e, 'MMMM'))).length;\n\t}\n\n\t// dateChanged is called when the output of the datepicker is changed and\n\t// parsed correctly. If the date is invalid, it will be called the first time\n\t// with null but never again until a valid input is provided.\n\tdateChanged(event: any): void {\n\t\tconst date = event.value;\n\t\tif (this.multiple) {\n\t\t\tthis.datePickerRef.close = () => {\n\t\t\t};\n\n\t\t\tif (this.selectedDates.some((e) => isSameDay(e, date))) {\n\t\t\t\tthis.selectedDates = this.selectedDates.filter((e) => !isSameDay(e, date));\n\t\t\t} else {\n\t\t\t\tthis.selectedDates = [...this.selectedDates, date];\n\t\t\t}\n\t\t\t// START HACK\n\t\t\t// the date picker does not provide any rerender calls. Therefore, we are going to change the minDate in order to force the render\n\t\t\t// This is needed to show all selected days in our date picker\n\t\t\t// We also set the innerValue to null (with this.valueForMaterialDatePicker = null;), otherwise you can not\n\t\t\t// deselect your last picked date\n\t\t\tthis.cdr.detectChanges();\n\t\t\tthis.valueForMaterialDatePicker = null;\n\t\t\tconst oldMinDate = this.minDateStartOfDay;\n\t\t\tthis.minDateStartOfDay = new Date(0);\n\t\t\tthis.cdr.detectChanges();\n\t\t\tthis.minDateStartOfDay = oldMinDate;\n\t\t\t// END HACK\n\n\t\t\tif (this.sameMonthOnly) {\n\t\t\t\tif (this.selectedDates.length >= 2) {\n\t\t\t\t\tif (date < startOfMonth(this.selectedDates[0]) || date > endOfMonth(this.selectedDates[0])) {\n\t\t\t\t\t\tthis.selectedDates = [date];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.determineMinAndMaxDates();\n\t\t\t}\n\n\t\t\tthis.setInnerValueAndNotify(this.selectedDates);\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.datePickerRef.close = this.datePickingClosingFn;\n\t\t\t});\n\t\t} else {\n\t\t\tthis.notifyNewDate();\n\t\t}\n\t}\n\n\tdetermineMinAndMaxDates(): void {\n\t\tif (this.sameMonthOnly) {\n\t\t\tif (this.selectedDates.length >= 2) {\n\t\t\t\tthis.setMinDate(startOfMonth(this.selectedDates[0]));\n\t\t\t\tthis.setMaxDate(endOfMonth(this.selectedDates[0]));\n\t\t\t} else {\n\t\t\t\tthis.setMinDate(this.minDate);\n\t\t\t\tthis.setMaxDate(this.maxDate);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.setMinDate(this.minDate);\n\t\t\tthis.setMaxDate(this.maxDate);\n\t\t}\n\t}\n\n\tnotifyNewDate(): void {\n\t\tconst nativeInputValue = this.nativeInputRef.nativeElement.value;\n\t\tconst parsedHours = Number(this.hours);\n\t\tconst parsedMinutes = Number(this.minutes);\n\n\t\t// if we dont have the time element\n\t\tif (!this.showTimeInput) {\n\t\t\tif (!stringIsSetAndFilled(nativeInputValue)) {\n\t\t\t\tthis.setInnerValueAndNotify(null);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.valueForMaterialDatePicker instanceof Date) {\n\t\t\t\tthis.setInnerValueAndNotify(this.valueForMaterialDatePicker);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t// when all inputs are empty\n\t\tif (!stringIsSetAndFilled(nativeInputValue) && !stringIsSetAndFilled(this.hours) && !stringIsSetAndFilled(this.minutes)) {\n\t\t\tthis.setInnerValueAndNotify(null);\n\t\t\treturn;\n\t\t}\n\t\t// if we have date and time\n\t\tif (\n\t\t\tstringIsSetAndFilled(this.hours) &&\n\t\t\tNumber.isFinite(parsedHours) &&\n\t\t\tparsedHours >= 0 &&\n\t\t\tparsedHours <= 23 &&\n\t\t\tstringIsSetAndFilled(this.minutes) &&\n\t\t\tNumber.isFinite(parsedMinutes) &&\n\t\t\tparsedMinutes >= 0 &&\n\t\t\tparsedMinutes <= 59 &&\n\t\t\tthis.valueForMaterialDatePicker instanceof Date\n\t\t) {\n\t\t\tconst newDateWithHours = new Date(this.valueForMaterialDatePicker.setHours(parsedHours));\n\t\t\tconst newDateWithMinutes = new Date(newDateWithHours.setMinutes(parsedMinutes));\n\t\t\tthis.setInnerValueAndNotify(newDateWithMinutes);\n\t\t\treturn;\n\t\t}\n\t\tif (this.invalidTimeAsMidnight) {\n\t\t\tif (this.valueForMaterialDatePicker instanceof Date) {\n\t\t\t\tthis.setInnerValueAndNotify(this.valueForMaterialDatePicker);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t// all other cases, we are not in a valid state\n\t\tthis.setInnerValueAndNotify(invalidDateKey);\n\t}\n\n\twriteValue(value: Date | Array<Date> | typeof invalidDateKey): void {\n\t\tsuper.writeValue(value);\n\t\tif (Array.isArray(value)) {\n\t\t\tthis.selectedDates = value;\n\t\t\tthis.determineMinAndMaxDates();\n\t\t\tthis.valueForMaterialDatePicker = null;\n\t\t\tif (arrayIsSetAndFilled(value)) {\n\t\t\t\tthis.openPickerOnDate = this.selectedDates[0];\n\t\t\t}\n\t\t} else {\n\t\t\tthis.valueForMaterialDatePicker = value === invalidDateKey ? null : value;\n\t\t\tif (value instanceof Date) {\n\t\t\t\tthis.hours = String(value.getHours());\n\t\t\t\tthis.minutes = String(value.getMinutes());\n\t\t\t\tthis.formatTime();\n\t\t\t\tthis.openPickerOnDate = value;\n\t\t\t} else {\n\t\t\t\tthis.hours = this.initHour ?? '';\n\t\t\t\tthis.minutes = this.initMinute ?? '';\n\t\t\t\tthis.openPickerOnDate = null;\n\t\t\t\tthis.selectedDates = [];\n\t\t\t}\n\t\t}\n\t}\n\n\t// nativeValueChanged is called when the internal text value changes, but not\n\t// when the date is changed via the date picker. We need this so that we can\n\t// determine if the datepicker is empty or invalid.\n\tnativeValueChanged(): void {\n\t\tif (this.datePickerRef.opened) {\n\t\t\t// if the user is typing instead of using the picker, close it.\n\t\t\tthis.datePickerRef.close();\n\t\t}\n\t\tthis.notifyNewDate();\n\t}\n\n\tresetToNull(): void {\n\t\tthis.setInnerValueAndNotify(null);\n\t\tthis.valueForMaterialDatePicker = null;\n\t\tthis.nativeInputRef.nativeElement.value = null;\n\t\tthis.hours = '';\n\t\tthis.minutes = '';\n\t\tthis.selectedDates = [];\n\t}\n\n\tisSelected = (d: Date) => {\n\t\tif (this.multiple) {\n\t\t\treturn this.selectedDates.some((e) => isSameDay(e, d)) ? 'selected' : '';\n\t\t}\n\t\treturn '';\n\t};\n\tfilterDates: DateFilterFn<any> = (e) => {\n\t\tif (this.disabled) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t};\n\n\n\tformatTime(): void {\n\t\tif (Number.isFinite(Number(this.hours)) && this.hours.length === 1) {\n\t\t\tthis.hours = '0' + this.hours;\n\t\t}\n\t\tif (Number.isFinite(Number(this.minutes)) && this.minutes.length === 1) {\n\t\t\tthis.minutes = '0' + this.minutes;\n\t\t}\n\t}\n\n\ttouchDate(): void {\n\t\tthis.dateTouched = true;\n\t\tthis.determineAllTouched();\n\t}\n\n\ttouchHours(): void {\n\t\tthis.hoursTouched = true;\n\t\tthis.determineAllTouched();\n\t}\n\n\ttouchMinutes(): void {\n\t\tthis.minutesTouched = true;\n\t\tthis.determineAllTouched();\n\t}\n\n\tdetermineAllTouched(): void {\n\t\tif ((this.dateTouched && this.hoursTouched && this.minutesTouched) || (this.dateTouched && !this.showTimeInput)) {\n\t\t\tthis.touch();\n\t\t}\n\t}\n\n\n\tgetDefaultTranslation(key: string): (x: any) => string {\n\t\tswitch (key) {\n\t\t\tcase 'placeholder':\n\t\t\t\treturn () => 'Select date';\n\t\t\tcase 'selectDays':\n\t\t\t\treturn () => 'Select day(s)';\n\t\t\tcase 'selectedDate':\n\t\t\t\treturn (d: Date) => d.toLocaleDateString();\n\t\t\tcase 'daysSelected':\n\t\t\t\treturn (amount) => `${amount} days selected`;\n\t\t\tcase 'selectedInMonth':\n\t\t\t\treturn (d: Date) => ` in ${formatDate(d, 'MMMM')}`;\n\t\t}\n\t}\n\n\tgetTranslation(key: string, params: any = null): string {\n\t\tif (key === 'placeholder' && this.multiple) {\n\t\t\treturn '';\n\t\t}\n\t\tif (key === 'placeholder' && stringIsSetAndFilled(this.placeholder)) {\n\t\t\treturn this.placeholder;\n\t\t}\n\t\treturn this.translations?.[key]?.(params) ?? this.getDefaultTranslation(key)(params);\n\t}\n\n\tcounter(i: number): Array<number> {\n\t\treturn new Array(i).fill(0).map((x, j) => j);\n\t}\n\n\tsetHour(hour: number): void {\n\t\tthis.hours = hour > 9 ? String(hour) : '0' + hour;\n\t\tthis.notifyNewDate();\n\t}\n\n\tsetMinute(minute: number): void {\n\t\tthis.minutes = minute > 9 ? String(minute) : '0' + minute;\n\t\tthis.notifyNewDate();\n\t}\n\n\tblurredHours(): void {\n\t\tthis.formatTime();\n\t\tthis.touchHours();\n\t}\n\n\tblurredMinutes(): void {\n\t\tthis.formatTime();\n\t\tthis.touchMinutes();\n\t}\n\n\tisActive(toCheck: number, actualValue: string): boolean {\n\t\tif (!stringIsSetAndFilled(actualValue)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn Number(actualValue) === toCheck;\n\t}\n\n\ttimeDropdownRendered = () => {\n\t\trunNextRenderCycle(() => {\n\t\t\tthis.ngZone.runOutsideAngular(() => {\n\t\t\t\tdocument.addEventListener('mousedown', this.clickHandlerForTimeDropdown);\n\t\t\t});\n\t\t});\n\n\t\tconst activeHour = this.timeDoubleDropdown.nativeElement.querySelector('.hourOfDay .isActive');\n\t\tconst activeMinute = this.timeDoubleDropdown.nativeElement.querySelector('.minuteOfHour .isActive');\n\t\tconst activeHourParent = activeHour?.parentElement;\n\t\tconst activeMinuteParent = activeMinute?.parentElement;\n\t\tif (activeHourParent) {\n\t\t\tactiveHourParent.scrollTop = activeHour?.offsetTop - 110;\n\t\t}\n\t\tif (activeMinuteParent) {\n\t\t\tactiveMinuteParent.scrollTop = activeMinute?.offsetTop - 110;\n\t\t}\n\t}\n\n\tclickHandlerForTimeDropdown = (event: MouseEvent) => {\n\t\tif (this.dropdownVisible) {\n\t\t\tconst dropdown = this.elRef.nativeElement.querySelector('.timeDoubleDropdown');\n\t\t\tif (!dropdown.contains(event.target)) {\n\t\t\t\tthis.ngZone.run(() => {\n\t\t\t\t\tthis.dropdownVisible = false;\n\t\t\t\t\tdocument.removeEventListener('mousedown', this.clickHandlerForTimeDropdown);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\n\tshizzle() {\n\t\tconsole.log('a');\n\t\tthis.datePickerRef.open();\n\t}\n}\n","<div class=\"componentContainer\" [ngClass]=\"{showErrors: isInErrorState()}\" [ngClass]=\"{disabled: disabled}\">\n <div class=\"dateContainer\" [ngClass]=\"{noRightBorder: !showTimeInput && clearable && !disabled, disabled: disabled}\">\n <mat-form-field floatLabel=\"never\">\n @if (multiple) {\n <div class=\"daysSelectedCaption\" (click)=\"picker.open()\" [ngClass]=\"{disabled: disabled}\">\n @if (selectedDates.length >= 2) {\n <span>{{getTranslation('daysSelected', selectedDates.length)}}</span>\n @if (getSelectedMonths() === 1) {\n <span>{{getTranslation('selectedInMonth', selectedDates[0])}}</span>\n }\n }\n @if (selectedDates.length === 1) {\n <span>{{getTranslation('selectedDate', selectedDates[0])}}</span>\n }\n @if (selectedDates.length === 0) {\n <span class=\"placeholderForMultipleSelection\">{{getTranslation('selectDays')}}</span>\n }\n </div>\n }\n\n @if (disabled) {\n <div class=\"disabledClickArea\" (click)=\"picker.open()\"></div>\n }\n <input\n #nativeInput\n matInput\n [matDatepicker]=\"picker\"\n [matDatepickerFilter]=\"filterDates\"\n [(ngModel)]=\"valueForMaterialDatePicker\"\n (dateInput)=\"dateChanged($event)\"\n (input)=\"nativeValueChanged()\"\n (click)=\"picker.open()\"\n [min]=\"minDateStartOfDay\"\n [max]=\"maxDateEndOfDay\"\n [placeholder]=\"getTranslation('placeholder')\"\n (blur)=\"touchDate()\"\n [ngClass]=\"{inputForMultipleDays: multiple, disabled: disabled}\"\n >\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker\n #picker\n [dateClass]=\"isSelected\"\n [startAt]=\"openPickerOnDate\"\n ></mat-datepicker>\n </mat-form-field>\n <div class=\"tail\">\n <ng-container [ngTemplateOutlet]=\"getTailTpl()\"></ng-container>\n </div>\n </div>\n @if (showTimeInput) {\n <div class=\"timeContainer\" [ngClass]=\"{disabled: disabled}\">\n <div class=\"timeContainerInner\">\n <svg class=\"clockIcon\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" (click)=\"hourInput.focus()\">\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#888da8\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <input #hourInput maxlength=\"2\" placeholder=\"__\" [disabled]=\"disabled\" [(ngModel)]=\"hours\" (ngModelChange)=\"notifyNewDate()\" (focus)=\"dropdownVisible = true\" (blur)=\"blurredHours();\">\n <div class=\"divider\">:</div>\n <input maxlength=\"2\" placeholder=\"__\" [disabled]=\"disabled\" [(ngModel)]=\"minutes\" (ngModelChange)=\"notifyNewDate()\" (focus)=\"dropdownVisible = true\" (blur)=\"blurredMinutes();\">\n </div>\n @if (dropdownVisible) {\n <div class=\"timeDoubleDropdown\" #timeDoubleDropdown [onRenderFn]=\"timeDropdownRendered\">\n <div class=\"hourOfDay\">\n @for (hour of counter(24); track hour) {\n <div class=\"entry\" (mousedown)=\"setHour(hour)\" [ngClass]=\"{isActive: isActive(hour, hours)}\">{{hour > 9 ? hour : '0' + hour }}</div>\n }\n </div>\n <div class=\"minuteOfHour\">\n @for (minute of minutesOfHour; track minute) {\n <div class=\"entry\" (mousedown)=\"setMinute(minute)\" [ngClass]=\"{isActive: isActive(minute, minutes)}\">{{minute > 9 ? minute : '0' + minute}}</div>\n }\n </div>\n </div>\n }\n </div>\n }\n</div>\n","import {Component, Host, Inject, InjectionToken, Input, Optional} from '@angular/core';\nimport {ControlContainer, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {format as dateFormat, parse} from 'date-fns';\nimport {MultipleValueAccessorBase} from '../value-accessor-base/multiple-value-accessor-base.component';\nimport {invalidDateKey} from '../../validators/dateValidator';\nimport {isNullOrUndefined, stringIsSetAndFilled} from '../../util/values';\nimport {FormElementComponent} from '../../form/form-element/form-element.component';\n\nexport const DATE_PICKER_TRANSLATIONS = new InjectionToken<any>('klp.form.date.translations');\n\n@Component({\n selector: 'klp-form-date-picker',\n templateUrl: './date-picker.component.html',\n styleUrls: ['./date-picker.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: DatePickerComponent, multi: true }],\n standalone: false\n})\nexport class DatePickerComponent extends MultipleValueAccessorBase<string | typeof invalidDateKey> {\n\t@Input() public minDate: Date = undefined;\n\t@Input() public maxDate: Date = undefined;\n\t@Input() public sameMonthOnly = false;\n\t@Input() public format = 'dd-MM-yyyy';\n\t@Input() public placeholder: string;\n\t@Input() public clearable = false;\n\n\tpublic dateValue: Date | Array<Date>;\n\n\tconstructor(\n\t\t@Host() @Optional() protected parent: FormElementComponent,\n\t\t@Host() @Optional() protected controlContainer: ControlContainer,\n\t\t@Inject(DATE_PICKER_TRANSLATIONS) @Optional() private translations: any,\n\t) {\n\t\tsuper(parent, controlContainer);\n\t}\n\n\twriteValue(value: string | Array<string> | typeof invalidDateKey): void {\n\t\tif (value === invalidDateKey) {\n\t\t\tsuper.writeValue(invalidDateKey);\n\t\t} else if (isNullOrUndefined(value)) {\n\t\t\tthis.dateValue = this.multiple ? [] : null;\n\t\t\tsuper.writeValue(this.multiple ? [] : null);\n\t\t} else {\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tthis.dateValue = value.map((e) => parse(e, 'yyyy-MM-dd', new Date()));\n\t\t\t} else {\n\t\t\t\tthis.dateValue = parse(value, 'yyyy-MM-dd', new Date());\n\t\t\t}\n\t\t\tsuper.writeValue(value);\n\t\t}\n\t}\n\n\tdateChanged(value: Date | Array<Date> | typeof invalidDateKey): void {\n\t\tif (value === invalidDateKey) {\n\t\t\tthis.setInnerValueAndNotify(invalidDateKey);\n\t\t} else if (isNullOrUndefined(value)) {\n\t\t\tthis.dateValue = this.multiple ? [] : null;\n\t\t\tthis.setInnerValueAndNotify(this.multiple ? [] : null);\n\t\t} else {\n\t\t\tthis.dateValue = value;\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tthis.setInnerValueAndNotify(value.map((e) => dateFormat(e, 'yyyy-MM-dd')));\n\t\t\t} else {\n\t\t\t\tthis.setInnerValueAndNotify(dateFormat(value, 'yyyy-MM-dd'));\n\t\t\t}\n\t\t}\n\t}\n\n\tgetDefaultTranslation(key: string): (x: any) => string {\n\t\tswitch (key) {\n\t\t\tcase 'placeholder':\n\t\t\t\treturn () => 'Select date';\n\t\t}\n\t}\n\n\tgetTranslation(key: string, params: any = null): string {\n\t\tif (key === 'placeholder' && this.multiple) {\n\t\t\treturn '';\n\t\t}\n\t\tif (key === 'placeholder' && stringIsSetAndFilled(this.placeholder)) {\n\t\t\treturn this.placeholder;\n\t\t}\n\t\treturn this.translations?.[key]?.(params) ?? this.getDefaultTranslation(key)(params);\n\t}\n}\n","<div class=\"componentContainer\" [ngClass]=\"{showErrors: isInErrorState()}\">\n\t<klp-form-date-time-picker\n\t\t[multiple]=\"multiple\"\n\t\t[disabled]=\"disabled\"\n\t\t[(ngModel)]=\"dateValue\"\n\t\t(ngModelChange)=\"dateChanged($event)\"\n\t\t[minDate]=\"minDate\"\n\t\t[maxDate]=\"maxDate\"\n\t\t[sameMonthOnly]=\"sameMonthOnly\"\n\t\t[format]=\"format\"\n\t\t[placeholder]=\"getTranslation('placeholder')\"\n\t\t[clearable]=\"clearable\"\n\t\t[showTimeInput]=\"false\"\n\t\t(onTouch)=\"touch()\"\n\t></klp-form-date-time-picker>\n\t<div class=\"tail\">\n\t\t<ng-container [ngTemplateOutlet]=\"getTailTpl()\"></ng-container>\n\t</div>\n</div>\n","// material.module.ts\n\nimport { NgModule } from '@angular/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\n\n@NgModule({\n\timports: [MatDatepickerModule, MatFormFieldModule, MatNativeDateModule, MatInputModule, MatButtonModule],\n\texports: [MatDatepickerModule, MatFormFieldModule, MatNativeDateModule, MatInputModule, MatButtonModule],\n\tproviders: [MatDatepickerModule],\n})\nexport class MaterialModule {}\n","import {Component, ElementRef, Input, ViewChild} from '@angular/core';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {MultipleValueAccessorBase} from '../value-accessor-base/multiple-value-accessor-base.component';\nimport {isValueSet} from '../../util/values';\nimport { arrayIsSetAndFilled } from '../../util/arrays';\n\n@Component({\n selector: 'klp-form-file-input',\n templateUrl: './file-input.component.html',\n styleUrls: ['./file-input.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: FileInputComponent, multi: true }],\n standalone: false\n})\nexport class FileInputComponent extends MultipleValueAccessorBase<File> {\n\t@Input() isLoading = false;\n\t@Input() clearable = false;\n\t@Input() onlyShowUploadButton = false;\n\t@Input() useFullParentSize = false;\n\t@Input() buttonText: string;\n\t@Input() fullyCustom = false;\n\t@ViewChild('nativeInputRef') nativeInputRef: ElementRef<HTMLInputElement>;\n\n\tpublic onChange(files: FileList): void {\n\t\tconst result = [];\n\t\tfor (let i = 0; i < files.length; i++) {\n\t\t\tresult.push(files.item(i));\n\t\t}\n\t\tthis.setInnerValueAndNotify(result);\n\t\t// to make sure we can select the same file again\n\t\tthis.nativeInputRef.nativeElement.value = null;\n\t}\n\n\tpublic getFileNames(): string {\n\t\tif (Array.isArray(this.innerValue)) {\n\t\t\treturn this.innerValue.map(e => e.name).join(', ');\n\t\t} else if (this.innerValue instanceof File) {\n\t\t\treturn this.innerValue.name;\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic shouldShowClearButton(): boolean {\n\t\tif (this.onlyShowUploadButton) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this.multiple) {\n\t\t\tif (arrayIsSetAndFilled(this.innerValue)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\tif (isValueSet(this.innerValue)) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic uploadFileClicked(): void {\n\t\tthis.nativeInputRef.nativeElement.click();\n\t}\n}\n","@if (fullyCustom) {\n <div class=\"fullyCustom\">\n <input\n type=\"file\"\n #nativeInputRef\n (change)=\"onChange($event.target.files)\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n />\n <div (click)=\"uploadFileClicked()\">\n <ng-container [ngTemplateOutlet]=\"contentTpl\"></ng-container>\n </div>\n </div>\n}\n\n@if (!fullyCustom) {\n <div class=\"componentContainer\" [ngClass]=\"{fullParentSize: useFullParentSize, showErrors: isInErrorState()}\"\n >\n <div class=\"buttonContainer\">\n <input\n type=\"file\"\n #nativeInputRef\n (change)=\"onChange($event.target.files)\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n >\n <klp-form-button\n class=\"uploadButton\"\n [isLoading]=\"isLoading\"\n [disabled]=\"disabled\"\n (click)=\"uploadFileClicked()\"\n >\n <div class=\"innerButton\">\n @if (buttonText) {\n <span>{{ buttonText }}</span>\n }\n @if (!buttonText) {\n <div>\n <ng-container [ngTemplateOutlet]=\"contentTpl\"></ng-container>\n </div>\n }\n <div class=\"tail\">\n <ng-container [ngTemplateOutlet]=\"getTailTpl()\"></ng-container>\n </div>\n </div>\n </klp-form-button>\n </div>\n @if (!onlyShowUploadButton) {\n <div class=\"fileName\">\n {{ getFileNames() }}\n </div>\n }\n @if (shouldShowClearButton()) {\n <klp-form-button class=\"clearButton\" variant=\"white\" (click)=\"resetToNull()\">X\n </klp-form-button>\n }\n </div>\n}\n\n<ng-template #contentTpl>\n <ng-content></ng-content>\n</ng-template>\n","import {Component, ContentChild, TemplateRef} from '@angular/core';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {arrayIsSetAndFilled, splitArrayByCondition} from '../../util/arrays';\nimport {ValueAccessorBase} from '../value-accessor-base/value-accessor-base.component';\n\n@Component({\n selector: 'klp-form-sortable-grouped-items',\n templateUrl: './sortable-grouped-items.component.html',\n styleUrls: ['./sortable-grouped-items.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: SortableGroupedItemsComponent, multi: true }],\n standalone: false\n})\nexport class SortableGroupedItemsComponent<T> extends ValueAccessorBase<Array<Array<T>>> {\n\tpublic items: Array<T | string>;\n\t@ContentChild(TemplateRef) template: TemplateRef<any>;\n\treloader = true; // sortable items doesnt correctly update, so we have this boolean that flips to rerender the sortable items comp\n\n\twriteValue(value: Array<Array<T>>): void {\n\t\tsuper.writeValue(value);\n\t\tthis.reloader = false;\n\t\tsetTimeout(() => {\n\t\t\tif (arrayIsSetAndFilled(value)) {\n\t\t\t\tthis.items = value.flatMap(e => [...e, '']);\n\t\t\t} else {\n\t\t\t\tthis.items = [];\n\t\t\t}\n\t\t\tthis.reloader = true;\n\t\t});\n\t}\n\n\tpublic onItemsRearranged(value: Array<T | string>): void {\n\t\tconst result: Array<Array<T>> = splitArrayByCondition(value, e => e === '').filter(arrayIsSetAndFilled) as any;\n\t\tthis.setInnerValueAndNotify(result);\n\t\tthis.reloader = false;\n\t\tsetTimeout(() => {\n\t\t\tthis.items = [...this.items, ''].filter((e, i) => {\n\t\t\t\tif (i === 0 && e === '') {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (e === '' && this.items[i - 1] === '') {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t});\n\t\t\tthis.reloader = true;\n\t\t});\n\t}\n}\n","<ng-container>\n <klp-form-sortable-items\n [(ngModel)]=\"items\"\n (ngModelChange)=\"onItemsRearranged($event)\"\n >\n <ng-template let-item=\"item\">\n @if (template) {\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item }\"></ng-container>\n }\n @if (!template) {\n <div>{{item}}</div>\n }\n </ng-template>\n </klp-form-sortable-items>\n</ng-container>\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport const invalidTimeKey = '--invalid_time--';\n\nexport function timeValidator(control: AbstractControl): ValidationErrors | null {\n\tconst invalid = control.value === invalidTimeKey;\n\treturn invalid ? { date: control.value } : null;\n}\n","import {Component, Input} from '@angular/core';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {ValueAccessorBase} from '../value-accessor-base/value-accessor-base.component';\nimport {stringIsSetAndFilled} from '../../util/values';\nimport {invalidTimeKey} from '../../validators/timeValidator';\n\n\n@Component({\n selector: 'klp-form-hour-minute-input',\n templateUrl: './hour-minute-input.component.html',\n styleUrls: ['./hour-minute-input.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: HourMinuteInputComponent, multi: true }],\n standalone: false\n})\nexport class HourMinuteInputComponent extends ValueAccessorBase<number | typeof invalidTimeKey> {\n\tpublic hours: string; // string because it's a text input\n\tpublic minutes: string; // string because it's a text input\n\n\t@Input() placeholders: Array<string> = ['hour', 'min'];\n\n\tprivate hoursTouched = false;\n\tprivate minutesTouched = false;\n\n\tformatHours(): void {\n\t\tif (!stringIsSetAndFilled(this.hours)) {\n\t\t\tthis.hours = '0';\n\t\t}\n\t}\n\n\tformatMinutes(): void {\n\t\tif (!stringIsSetAndFilled(this.minutes)) {\n\t\t\tthis.minutes = '0';\n\t\t}\n\t}\n\n\tformatTime(): void {\n\t\tif (Number.isFinite(Number(this.hours)) && this.hours.length === 1) {\n\t\t\tthis.hours = '0' + this.hours;\n\t\t}\n\t\tif (Number.isFinite(Number(this.minutes)) && this.minutes.length === 1) {\n\t\t\tthis.minutes = '0' + this.minutes;\n\t\t}\n\t}\n\n\twriteValue(value: number | typeof invalidTimeKey): void {\n\t\tif (Number.isFinite(value)) {\n\t\t\tthis.hours = Math.floor(value as number / 60) + '';\n\t\t\tthis.minutes = value as number % 60 + '';\n\t\t\tthis.formatTime();\n\t\t\tsuper.writeValue(value);\n\t\t} else {\n\t\t\tthis.hours = '';\n\t\t\tthis.minutes = '';\n\t\t\tsuper.writeValue(invalidTimeKey);\n\t\t}\n\t}\n\n\tnotifyNewTime(): void {\n\t\tconst parsedHours = Number(this.hours);\n\t\tconst parsedMinutes = Number(this.minutes);\n\n\t\t// when all inputs are empty\n\t\tif (!stringIsSetAndFilled(this.hours) && !stringIsSetAndFilled(this.minutes)) {\n\t\t\tthis.setInnerValueAndNotify(null);\n\t\t\treturn;\n\t\t}\n\t\t// if we have valid time\n\t\tif (\n\t\t\tNumber.isFinite(parsedHours) &&\n\t\t\tparsedHours >= 0 &&\n\t\t\tparsedHours <= 9999 &&\n\t\t\tNumber.isFinite(parsedMinutes) &&\n\t\t\tparsedMinutes >= 0 &&\n\t\t\tparsedMinutes <= 59\n\t\t) {\n\t\t\tthis.setInnerValueAndNotify(parsedHours * 60 + parsedMinutes);\n\t\t\treturn;\n\t\t}\n\t\t// all other cases, we are not in a valid state\n\t\tthis.setInnerValueAndNotify(invalidTimeKey);\n\t}\n\n\ttouchHours(): void {\n\t\tthis.hoursTouched = true;\n\t\tthis.determineAllTouched();\n\t}\n\n\ttouchMinutes(): void {\n\t\tthis.minutesTouched = true;\n\t\tthis.determineAllTouched();\n\t}\n\n\tdetermineAllTouched(): void {\n\t\tif (this.hoursTouched && this.minutesTouched) {\n\t\t\tthis.touch();\n\t\t}\n\t}\n}\n","<div class=\"componentContainer\" [ngClass]=\"{disabled: disabled}\" [ngClass]=\"{showErrors: isInErrorState()}\">\n\t<input class=\"hourInput\" maxlength=\"4\" [placeholder]=\"placeholders[0]\" [disabled]=\"disabled\" [(ngModel)]=\"hours\" (blur)=\"formatHours(); formatTime(); touchHours(); notifyNewTime()\" (ngModelChange)=\"notifyNewTime()\" #nativeInputRef>\n\t<div class=\"divider\">:</div>\n\t<input maxlength=\"2\" [placeholder]=\"placeholders[1]\" [disabled]=\"disabled\" [(ngModel)]=\"minutes\" (blur)=\"formatMinutes(); formatTime(); touchMinutes(); notifyNewTime()\" (ngModelChange)=\"notifyNewTime()\">\n\t<div class=\"tail\">\n\t\t<ng-container [ngTemplateOutlet]=\"getTailTpl()\"></ng-container>\n\t</div>\n</div>\n","import { Component, Input} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ValueAccessorBase } from '../value-accessor-base/value-accessor-base.component';\n\nexport enum Orientation {\n\tCOLUMN = 'column',\n\tROW = 'row'\n}\nexport type RadioOptions = Array<RadioOption>;\nexport type RadioOption = {\n\tid: any;\n\tname: string;\n\tdescription?: string;\n};\n\n\n@Component({\n selector: 'klp-form-radio',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: RadioComponent, multi: true }],\n standalone: false\n})\nexport class RadioComponent extends ValueAccessorBase<string>{\n\t@Input() options: RadioOptions;\n\t@Input() orientation: Orientation = Orientation.ROW;\n\t@Input() variant: 'classic' | 'button' | 'buttonGray' = 'classic';\n\t@Input() size: 'small' | 'medium' = 'medium';\n\tpublic Orientation = Orientation;\n}\n\n","<div class=\"componentContainer\" [ngClass]=\"{'verticallyOriented': orientation === Orientation.COLUMN, 'horizontallyOriented': orientation === Orientation.ROW, buttonGray: variant === 'buttonGray', sizeSmall: size === 'small'}\">\n @for (option of options; track option) {\n <button class=\"optionContainer\"\n [ngClass]=\"{classic: variant === 'classic', button: variant === 'button', buttonGray: variant === 'buttonGray', isSelected: innerValue === option.id}\"\n (click)=\"setInnerValueAndNotify(option.id)\"\n >\n <div class=\"radioAndName\">\n @if (variant === 'classic') {\n <div class=\"selectedRadioBtnContainer\">\n @if (innerValue === option.id) {\n <div class=\"selected\"></div>\n }\n </div>\n }\n <div class=\"nameAndDescription\">\n <div>{{option.name}}</div>\n @if (option.description) {\n <div class=\"description\">{{option.description}}</div>\n }\n </div>\n </div>\n </button>\n }\n</div>\n","import {\n\tApplicationRef,\n\tDirective,\n\tElementRef,\n\tEmbeddedViewRef,\n\tInput, NgZone,\n\tTemplateRef\n} from \"@angular/core\";\nimport {stringIsSetAndFilled} from \"./util/values\";\n\nconst triangleSize = '12px';\nconst zIndexStart = 99999999;\n\nconst colors = {\n\torange: { noAlpha: 'rgb(255, 128, 0)', withAlpha: 'rgba(255, 128, 0, 0.1254901961)', background: 'rgb(255, 255, 255)'},\n\tblack: { noAlpha: 'rgb(40, 40, 40)', withAlpha: 'rgba(40, 40, 40, 0.1254901961)', background: 'rgb(255, 255, 255)'},\n\twhiteOnBlack: { noAlpha: 'rgb(255, 255, 255)', withAlpha: 'rgba(255, 255, 255, 0.1254901961)', background: 'rgba(12, 17, 29)'},\n};\n\n@Directive({\n selector: '[klpWithTooltip]',\n standalone: false\n})\nexport class WithTooltipDirective {\n\tprivate div: HTMLElement;\n\tprivate triangle: HTMLElement;\n\tprivate triangleWhite: HTMLElement;\n\t@Input() klpWithTooltip: 'orange'| 'black' | 'whiteOnBlack' = 'orange';\n\t@Input() tooltipText: string;\n\t@Input() tooltipTemplate: TemplateRef<any>;\n\t@Input() tooltipMinWidth;\n\t@Input() tooltipMaxWidth = 200;\n\t@Input() position: 'top' | 'bottom' = 'top';\n\tprivate templateInstance: HTMLElement;\n\tprivate viewRefForTemplate: EmbeddedViewRef<any>;\n\tconstructor(private el: ElementRef, private appRef: ApplicationRef, private ngZone: NgZone) {\n\t\tthis.ngZone.runOutsideAngular(() => {\n\t\t\tel.nativeElement.addEventListener('mouseenter', () => {\n\t\t\t\tif (this.tooltipTemplate) {\n\t\t\t\t\tthis.hookUpTemplate();\n\t\t\t\t}\n\t\t\t\tlet textToDisplay: string;\n\t\t\t\tif (!this.templateInstance) {\n\t\t\t\t\ttextToDisplay = this.tooltipText || el.nativeElement.innerText.trim();\n\t\t\t\t}\n\t\t\t\tif (!stringIsSetAndFilled(this.klpWithTooltip)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!stringIsSetAndFilled(textToDisplay) && !this.tooltipTemplate) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (stringIsSetAndFilled(this.tooltipText)) {\n\t\t\t\t\tif (this.tooltipText === el.nativeElement.innerText) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t} else if (this.tooltipTemplate) {\n\t\t\t\t\t// no need to check here, just render the template\n\t\t\t\t} else {\n\t\t\t\t\tif (el.nativeElement.offsetWidth >= el.nativeElement.scrollWidth) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (getComputedStyle(el.nativeElement).position === 'static') {\n\t\t\t\t\tel.nativeElement.style.position = 'relative';\n\t\t\t\t}\n\n\t\t\t\tthis.div = document.createElement('div');\n\t\t\t\tthis.div.style.zIndex = `${zIndexStart + 2}`;\n\t\t\t\tthis.div.style.color = `${colors[this.klpWithTooltip].noAlpha}`;\n\t\t\t\tthis.div.style.backgroundColor = `${colors[this.klpWithTooltip].background}`;\n\t\t\t\tthis.div.style.position = 'fixed';\n\t\t\t\tthis.div.style.left = `${el.nativeElement.getBoundingClientRect().x}px`;\n\t\t\t\tif (this.position === 'top') {\n\t\t\t\t\tthis.div.style.top = `${el.nativeElement.getBoundingClientRect().y}px`;\n\t\t\t\t\tthis.div.style.transform = `translate(calc(-100% + ${el.nativeElement.getBoundingClientRect().width}px), calc(-100% - 0.3rem))`;\n\t\t\t\t} else if (this.position === 'bottom') {\n\t\t\t\t\tthis.div.style.top = `${el.nativeElement.getBoundingClientRect().y + el.nativeElement.getBoundingClientRect().height}px`;\n\t\t\t\t\tthis.div.style.transform = `translate(calc(-100% + ${el.nativeElement.getBoundingClientRect().width}px), calc(0% + 0.3rem))`;\n\t\t\t\t}\n\t\t\t\tif (this.tooltipMinWidth > 0) {\n\t\t\t\t\tthis.div.style.minWidth = `${this.tooltipMinWidth}px`;\n\t\t\t\t}\n\t\t\t\tthis.div.style.maxWidth = `${this.tooltipMaxWidth}px`;\n\t\t\t\tthis.div.style.whiteSpace = 'break-spaces';\n\t\t\t\tthis.div.style.border = `1px solid ${colors[this.klpWithTooltip].withAlpha}`;\n\t\t\t\tthis.div.style.boxShadow = `2px 3px 10px 0px ${colors[this.klpWithTooltip].withAlpha}`;\n\t\t\t\tthis.div.style.padding = '0.3rem 0.5rem';\n\t\t\t\tthis.div.style.boxSizing = 'border-box';\n\t\t\t\tthis.div.style.borderRadius = '3px';\n\t\t\t\tthis.div.style.wordBreak = 'break-word';\n\t\t\t\tif (stringIsSetAndFilled(textToDisplay)) {\n\t\t\t\t\tthis.div.textContent = textToDisplay;\n\t\t\t\t} else if (this.templateInstance) {\n\t\t\t\t\tthis.div.style.maxWidth = 'none';\n\t\t\t\t\tthis.div.style.visibility = 'hidden';\n\t\t\t\t\tthis.div.appendChild(this.templateInstance);\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tconst color = getComputedStyle(this.templateInstance).backgroundColor || getComputedStyle(this.templateInstance).background;\n\t\t\t\t\t\tthis.div.style.backgroundColor = color;\n\t\t\t\t\t\tthis.div.style.visibility = 'visible';\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tel.nativeElement.prepend(this.div);\n\n\t\t\t\tthis.triangle = document.createElement('div');\n\t\t\t\tthis.triangle.style.zIndex = `${zIndexStart + 1}`;\n\t\t\t\tthis.triangle.style.position = 'fixed';\n\t\t\t\tthis.triangle.style.left = `calc(${el.nativeElement.getBoundingClientRect().x + el.nativeElement.getBoundingClientRect().width}px - 0.8rem)`;\n\t\t\t\tif (this.position === 'top') {\n\t\t\t\t\tthis.triangle.style.top = `${el.nativeElement.getBoundingClientRect().y}px`;\n\t\t\t\t\tthis.triangle.style.transform = `translate(-50%, calc(-100% + 0.1rem))`;\n\t\t\t\t} else if (this.position === 'bottom') {\n\t\t\t\t\tthis.triangle.style.top = `${el.nativeElement.getBoundingClientRect().y + el.nativeElement.getBoundingClientRect().height}px`;\n\t\t\t\t\tthis.triangle.style.transform = `translate(-50%, 0rem) rotate(180deg)`;\n\t\t\t\t}\n\t\t\t\tthis.triangle.style.width = '0';\n\t\t\t\tthis.triangle.style.height = '0';\n\t\t\t\tthis.triangle.style.borderLeft = `${triangleSize} solid transparent`;\n\t\t\t\tthis.triangle.style.borderRight = `${triangleSize} solid transparent`;\n\t\t\t\tthis.triangle.style.borderTop = `${triangleSize} solid ${colors[this.klpWithTooltip].withAlpha}`;\n\t\t\t\tel.nativeElement.prepend(this.triangle);\n\n\t\t\t\tthis.triangleWhite = document.createElement('div');\n\t\t\t\tthis.triangleWhite.style.zIndex = `${zIndexStart + 3}`;\n\t\t\t\tthis.triangleWhite.style.position = 'fixed';\n\t\t\t\tthis.triangleWhite.style.left = `calc(${el.nativeElement.getBoundingClientRect().x + el.nativeElement.getBoundingClientRect().width}px - 0.8rem)`;\n\t\t\t\tif (this.position === 'top') {\n\t\t\t\t\tthis.triangleWhite.style.top = `${el.nativeElement.getBoundingClientRect().y}px`;\n\t\t\t\t\tthis.triangleWhite.style.transform = `translate(-50%, calc(-100% + 0.1rem - 2px))`;\n\t\t\t\t} else if (this.position === 'bottom') {\n\t\t\t\t\tthis.triangleWhite.style.top = `${el.nativeElement.getBoundingClientRect().y + el.nativeElement.getBoundingClientRect().height}px`;\n\t\t\t\t\tthis.triangleWhite.style.transform = `translate(-50%, -2px) rotate(180deg)`;\n\t\t\t\t}\n\t\t\t\tthis.triangleWhite.style.width = '0';\n\t\t\t\tthis.triangleWhite.style.height = '0';\n\t\t\t\tthis.triangleWhite.style.borderLeft = `${triangleSize} solid transparent`;\n\t\t\t\tthis.triangleWhite.style.borderRight = `${triangleSize} solid transparent`;\n\n\t\t\t\tif (stringIsSetAndFilled(textToDisplay)) {\n\t\t\t\t\tthis.triangleWhite.style.borderTop = `${triangleSize} solid ${colors[this.klpWithTooltip].background}`;\n\t\t\t\t} else if (this.templateInstance) {\n\t\t\t\t\tthis.div.style.visibility = 'hidden';\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tconst color = getComputedStyle(this.templateInstance).backgroundColor || getComputedStyle(this.templateInstance).background;\n\t\t\t\t\t\tthis.triangleWhite.style.borderTop = `${triangleSize} solid ${color}`;\n\t\t\t\t\t\tthis.div.style.visibility = 'visible';\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tel.nativeElement.prepend(this.triangleWhite);\n\t\t\t});\n\n\t\t\tel.nativeElement.addEventListener('mouseleave', () => {\n\t\t\t\tif (this.tooltipTemplate) {\n\t\t\t\t\tthis.cleanUpTemplate();\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tel.nativeElement.removeChild(this.div);\n\t\t\t\t} catch (ex) {}\n\t\t\t\ttry {\n\t\t\t\t\tel.nativeElement.removeChild(this.triangle);\n\t\t\t\t} catch (ex) {}\n\t\t\t\ttry {\n\t\t\t\t\tel.nativeElement.removeChild(this.triangleWhite);\n\t\t\t\t} catch (ex) {}\n\t\t\t});\n\t\t});\n\t}\n\n\tpublic hookUpTemplate(): void {\n\t\tthis.viewRefForTemplate = this.tooltipTemplate.createEmbeddedView(null);\n\t\tthis.appRef.attachView(this.viewRefForTemplate);\n\t\tthis.templateInstance = this.viewRefForTemplate.rootNodes[0];\n\t}\n\n\tpublic cleanUpTemplate(): void {\n\t\tthis.appRef.detachView(this.viewRefForTemplate);\n\t\tthis.viewRefForTemplate.destroy();\n\t}\n}\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {ValueAccessorBase} from '../value-accessor-base/value-accessor-base.component';\n\n@Component({\n selector: 'klp-form-text-area',\n templateUrl: './text-area.component.html',\n styleUrls: ['./text-area.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: TextAreaComponent, multi: true }],\n standalone: false\n})\nexport class TextAreaComponent extends ValueAccessorBase<string> {\n\t@Input() placeholder: string;\n\t@Output() onBlur = new EventEmitter<void>();\n}\n","<div class=\"componentContainer\">\n\t<textarea\n\t\t[(ngModel)]=\"innerValue\"\n\t\t[ngClass]=\"{showErrors: isInErrorState()}\"\n\t\t(input)=\"setInnerValueAndNotify($event.target.value)\"\n\t\t[placeholder]=\"placeholder ? placeholder : ''\"\n\t\t(blur)=\"touch(); onBlur.emit()\"\n\t\t[disabled]='disabled'\n\t\t#nativeInputRef\n\t></textarea>\n</div>\n","import {Component, ElementRef, Host, OnDestroy, OnInit, Optional, TemplateRef, ViewChild} from '@angular/core';\nimport {FormElementComponent} from \"../form-element/form-element.component\";\n\n@Component({\n selector: 'klp-form-caption-end',\n templateUrl: './form-caption-end.component.html',\n styleUrls: ['./form-caption-end.component.scss'],\n standalone: false\n})\nexport class FormCaptionEndComponent implements OnInit, OnDestroy {\n\t@ViewChild('contentRef') public contentRef: TemplateRef<any>;\n\n\tconstructor(@Host() @Optional() private parent: FormElementComponent) {}\n\n\tngOnInit(): void {\n\t\t// this is being run next cycle, because we dont want to fail if the order of components is as follows:\n\t\t// <app-form-error />\n\t\t// <some-input />\n\t\t// That would fail, because the logic of the form error is run first, and at that moment, the `some-input` isnt registered yet\n\t\tsetTimeout(() => {\n\t\t\tthis.parent.registerCaptionEnd(this.contentRef);\n\t\t});\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.parent.registerCaptionEnd(null);\n\t}\n}\n","<ng-template #contentRef>\n\t<ng-content></ng-content>\n</ng-template>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule} from '@angular/forms';\nimport {ValueAccessorBase} from './elements/value-accessor-base/value-accessor-base.component';\nimport {ButtonComponent} from './elements/button/button.component';\nimport {CheckboxComponent} from './elements/checkbox/checkbox.component';\nimport {EmailInputComponent} from './elements/email/email-input.component';\nimport {LoadingIndicatorComponent} from './elements/loading-indicator/loading-indicator.component';\nimport {NumberInputComponent} from './elements/number-input/number-input.component';\nimport {PasswordFieldComponent} from './elements/password-field/password-field.component';\nimport {KlpSelectOptionTemplateDirective, SelectComponent} from './elements/select/select.component';\nimport {SelectFooterComponent} from './elements/select/select-footer/select-footer.component';\nimport {SortableItemsComponent} from './elements/sortable-items/sortable-items.component';\nimport {TextInputComponent} from './elements/text-input/text-input.component';\nimport {ToggleComponent} from './elements/toggle/toggle.component';\nimport {FormCaptionComponent} from './form/form-caption/form-caption.component';\nimport {FormElementComponent} from './form/form-element/form-element.component';\nimport {FormErrorComponent} from './form/form-error/form-error.component';\nimport {FormSubmitButtonComponent} from './form/form-submit-button/form-submit-button.component';\nimport {FormComponent, SubFormDirective} from './form/form.component';\nimport {NgSelectModule} from '@ng-select/ng-select';\nimport {DatePickerComponent} from './elements/date-picker/date-picker.component';\nimport {DateTimePickerComponent} from './elements/date-time-picker/date-time-picker.component';\nimport {MaterialModule} from './material.module';\nimport {MultipleValueAccessorBase} from './elements/value-accessor-base/multiple-value-accessor-base.component';\nimport {FileInputComponent} from './elements/file-input/file-input.component';\nimport {SortableGroupedItemsComponent} from './elements/sortable-grouped-items/sortable-grouped-items.component';\nimport {HourMinuteInputComponent} from './elements/hour-minute-input/hour-minute-input.component';\nimport {RadioComponent} from './elements/radio/radio.component';\nimport {WithTooltipDirective} from './withTooltip.component';\nimport {WarningIconComponent} from './warning-icon/warning-icon.component';\nimport {ElementIsTruncatedCbComponent} from './elementIsTruncatedCb.component';\nimport {OnRenderDirective} from './onRender.component';\nimport {TextAreaComponent} from './elements/text-area/text-area.component';\nimport {FormCaptionEndComponent} from './form/form-caption-end/form-caption-end.component';\n\n@NgModule({\n\timports: [\n\t\tCommonModule,\n\t\tFormsModule,\n\t\tNgSelectModule,\n\t\tMaterialModule,\n\t],\n\tdeclarations: [\n\t\tValueAccessorBase,\n\t\tMultipleValueAccessorBase,\n\t\tButtonComponent,\n\t\tCheckboxComponent,\n\t\tDatePickerComponent,\n\t\tDateTimePickerComponent,\n\t\tEmailInputComponent,\n\t\tLoadingIndicatorComponent,\n\t\tNumberInputComponent,\n\t\tPasswordFieldComponent,\n\t\tSelectComponent,\n\t\tKlpSelectOptionTemplateDirective,\n\t\tSelectFooterComponent,\n\t\tSortableItemsComponent,\n\t\tSortableGroupedItemsComponent,\n\t\tTextInputComponent,\n\t\tTextAreaComponent,\n\t\tToggleComponent,\n\t\tFileInputComponent,\n\t\tFormCaptionComponent,\n\t\tFormCaptionEndComponent,\n\t\tFormElementComponent,\n\t\tFormErrorComponent,\n\t\tFormSubmitButtonComponent,\n\t\tFormComponent,\n\t\tSubFormDirective,\n\t\tHourMinuteInputComponent,\n\t\tRadioComponent,\n\t\tWithTooltipDirective,\n\t\tOnRenderDirective,\n\t\tWarningIconComponent,\n\t\tElementIsTruncatedCbComponent,\n\t],\n\texports: [\n\t\tValueAccessorBase,\n\t\tMultipleValueAccessorBase,\n\t\tButtonComponent,\n\t\tDatePickerComponent,\n\t\tDateTimePickerComponent,\n\t\tCheckboxComponent,\n\t\tEmailInputComponent,\n\t\tLoadingIndicatorComponent,\n\t\tNumberInputComponent,\n\t\tPasswordFieldComponent,\n\t\tSelectComponent,\n\t\tKlpSelectOptionTemplateDirective,\n\t\tSelectFooterComponent,\n\t\tSortableItemsComponent,\n\t\tSortableGroupedItemsComponent,\n\t\tTextInputComponent,\n\t\tTextAreaComponent,\n\t\tToggleComponent,\n\t\tFileInputComponent,\n\t\tFormCaptionComponent,\n\t\tFormCaptionEndComponent,\n\t\tFormElementComponent,\n\t\tFormErrorComponent,\n\t\tFormSubmitButtonComponent,\n\t\tFormComponent,\n\t\tSubFormDirective,\n\t\tHourMinuteInputComponent,\n\t\tRadioComponent,\n\t\tWithTooltipDirective,\n\t\tOnRenderDirective,\n\t\tElementIsTruncatedCbComponent,\n\t]\n})\nexport class NgxEnhancyFormsModule {}\n","/*\n * Public API Surface of ngx-enhancy-forms\n */\n\nexport * from './lib/ngx-enhancy-forms.module';\n\nexport * from './lib/elements/button/button.component';\nexport * from './lib/elements/checkbox/checkbox.component';\nexport * from './lib/elements/radio/radio.component';\nexport * from './lib/elements/radio/radio.component';\nexport * from './lib/elements/date-picker/date-picker.component';\nexport * from './lib/elements/date-time-picker/date-time-picker.component';\nexport * from './lib/elements/email/email-input.component';\nexport * from './lib/elements/loading-indicator/loading-indicator.component';\nexport * from './lib/elements/number-input/number-input.component';\nexport * from './lib/elements/password-field/password-field.component';\nexport * from './lib/elements/select/select-footer/select-footer.component';\nexport * from './lib/elements/select/select.component';\nexport * from './lib/elements/sortable-items/sortable-items.component';\nexport * from './lib/elements/sortable-grouped-items/sortable-grouped-items.component';\nexport * from './lib/elements/text-input/text-input.component';\nexport * from './lib/elements/text-area/text-area.component';\nexport * from './lib/elements/toggle/toggle.component';\nexport * from './lib/elements/file-input/file-input.component';\nexport * from './lib/elements/hour-minute-input/hour-minute-input.component';\nexport * from './lib/elements/value-accessor-base/value-accessor-base.component';\nexport * from './lib/elements/value-accessor-base/multiple-value-accessor-base.component';\n\nexport * from './lib/withTooltip.component';\nexport * from './lib/onRender.component';\nexport * from './lib/elementIsTruncatedCb.component';\n\nexport * from './lib/form/form.component';\nexport * from './lib/form/form-caption/form-caption.component';\nexport * from './lib/form/form-caption-end/form-caption-end.component';\nexport * from './lib/form/form-element/form-element.component';\nexport * from './lib/form/form-error/form-error.component';\nexport * from './lib/form/form-submit-button/form-submit-button.component';\nexport * from './lib/form/form-validation-error/form-validation-error';\n\nexport * from './lib/validators/dateValidator';\n\nexport * from './lib/types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3.OnRenderDirective","i4.WarningIconComponent","i5.ElementIsTruncatedCbComponent","i1.FormElementComponent","i2.LoadingIndicatorComponent","i3","i2.ButtonComponent","formatDate","i4","i8.OnRenderDirective","dateFormat","i4.DateTimePickerComponent","i3.SortableItemsComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAEM,SAAU,oBAAoB,CAAC,CAAS,EAAA;IAC7C,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;AACnC;AAEM,SAAU,iBAAiB,CAAC,KAAU,EAAA;AAC3C,IAAA,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;AAC7C;AAEM,SAAU,WAAW,CAAC,KAAU,EAAA;IACrC,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ;AACtD;AAEM,SAAU,UAAU,CAAC,KAAU,EAAA;AACpC,IAAA,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;AAC7C;AAEM,SAAU,0BAA0B,CAAC,KAAqB,EAAA;AAC/D,IAAA,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AACnE;AAEM,SAAU,cAAc,CAAC,CAAS,EAAE,MAAc,EAAA;AACvD,IAAA,IAAI,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE;AACtB,QAAA,OAAO,CAAC;IACT;IACA,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,KAAK;AACtC;;SCvBgB,wCAAwC,CAAC,UAAyC,EAAE,GAAG,MAAa,EAAA;IACnH,IAAI,QAAQ,GAAG,EAAE;AAEjB,IAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC3B,QAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;IAClC;IAEA,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAC/B,QAAA,MAAM,oBAAoB,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1E,OAAO,CAAC,KAAK,oBAAoB;AAClC,IAAA,CAAC,CAAC;AACH;AAEM,SAAU,yBAAyB,CAAI,KAAe,EAAA;IAC3D,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAC5B,QAAA,MAAM,oBAAoB,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9D,OAAO,CAAC,KAAK,oBAAoB;AAClC,IAAA,CAAC,CAAC;AACH;SAEgB,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAA;IAC7C,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC;AAC3B;AAEM,SAAU,mBAAmB,CAAC,GAAQ,EAAA;AAC3C,IAAA,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;AAC3E;AAEM,SAAU,OAAO,CAAC,KAAU,EAAA;AACjC,IAAA,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;AACtB,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACzB,YAAA,OAAO,KAAK;QACb;QACA,OAAO,CAAC,KAAK,CAAC;IACf;AACA,IAAA,OAAO,EAAE;AACV;AAEM,SAAU,qBAAqB,CAAI,KAAe,EAAE,SAAkC,EAAA;IAC3F,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAI;AAChC,QAAA,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;AACnB,YAAA,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACb;aAAO;AACN,YAAA,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC9B;AACA,QAAA,OAAO,GAAG;AACX,IAAA,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACT;AAEM,SAAU,SAAS,CAAI,GAAmB,EAAE,IAAgB,EAAA;AACjE,IAAA,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,GAAG,YAAY,IAAI,EAAE,IAAI,CAAC;AAClE;;ACvDM,SAAU,wBAAwB,CAAC,OAAgB,EAAA;IACxD,MAAM,MAAM,GAAG,EAAE;IACjB,IAAI,OAAO,GAAG,OAAO;AACrB,IAAA,OAAO,OAAO,CAAC,aAAa,EAAE;AAC7B,QAAA,IAAI,mBAAmB,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;AAC/C,YAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QACnC;AACA,QAAA,OAAO,GAAG,OAAO,CAAC,aAAa;IAChC;AACA,IAAA,OAAO,MAAM;AACd;AAEM,SAAU,mBAAmB,CAAC,OAAgB,EAAA;AACnD,IAAA,OAAO,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY;AACnD;;ACdA,SAAS,UAAU,CAAC,IAAgB,EAAE,IAAgB,EAAA;AACrD,IAAA,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAEzD,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,QAAA,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AAC/D,YAAA,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACrC;aAAO;AACN,YAAA,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QAC5B;IACD;AAEA,IAAA,OAAO,GAAG;AACX;AAEM,SAAU,SAAS,CAGvB,IAAO,EAAE,IAAO,EAAA;AACjB,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC/C,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC/C,YAAA,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,CAAU;QACvC;;QAGA,OAAO,IAAI,IAAI,IAAI;IACpB;IAEA,MAAM,MAAM,GAAU,EAAW;AAEjC,IAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAoB;AACvC,QAAA,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACpB,QAAA,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACQ,KAAA,CAAC;AAE9B,IAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACpB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAc,CAAC;AAC9B,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAc,CAAC;QAE9B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;YACnD,MAAM,CAAC,GAAoB,CAAC,GAAG,SAAS,CAAC,CAAQ,EAAE,CAAQ,CAAQ;YACnE;QACD;;QAGA,MAAM,CAAC,GAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAQ;AAC/C,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,MAAM;AACd;;MCpBa,mBAAmB,GAAG,MAAM,CAAC,0BAA0B;MAYvD,gBAAgB,CAAA;AAL7B,IAAA,WAAA,GAAA;QAQU,IAAA,CAAA,wBAAwB,GAAY,KAAK;QACzC,IAAA,CAAA,yBAAyB,GAAY,KAAK;AACnD,IAAA;+GALY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAhB,gBAAgB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAEC;;sBACA;;sBACA;;sBACA;;MASW,aAAa,CAAA;IAqBzB,WAAA,CAA4C,MAAqB,EAAsB,gBAAkC,EAAA;QAA7E,IAAA,CAAA,MAAM,GAAN,MAAM;QAAqC,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QApBvF,IAAA,CAAA,QAAQ,GAAG,KAAK;QAChB,IAAA,CAAA,iBAAiB,GAAG,IAAI;QACxB,IAAA,CAAA,oBAAoB,GAAsC,cAAc;AAGxE,QAAA,IAAA,CAAA,QAAQ,GAAoD,IAAI,GAAG,EAA8C;QACjH,IAAA,CAAA,eAAe,GAAwB,EAAE;AACzC,QAAA,IAAA,CAAA,MAAM,GAAiC,IAAI,GAAG,EAA2B;QAEzE,IAAA,CAAA,aAAa,GAAoC,gBAAgB;AAChE,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAyB;;QAK/D,IAAA,CAAA,cAAc,GAGjB,EAAE;IAGP;IAEA,QAAQ,GAAA;QACP,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS;AAC3D,QAAA,IAAI,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE;YAC3C,IAAI,CAAC,kCAAkC,EAAE;QAC1C;AACA,QAAA,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;AACjE,YAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,EAAE;gBACnD;YACD;;YAEA,IAAI,CAAC,eAAe,EAAE;QACvB;IACD;IAEO,oBAAoB,GAAA;QAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC7B,YAAA,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC;QACjE;QACA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;AACvC,YAAA,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC;QAChD;QACA,IAAI,CAAC,eAAe,EAAE;IACvB;IAEQ,eAAe,GAAA;AACtB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU;AACnD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE;AACzC,QAAA,MAAM,yBAAyB,GAAG,IAAI,CAAC,gBAAgB,CAAC,yBAAyB;AACjF,QAAA,IAAI,UAAU,YAAY,gBAAgB,EAAE;YAC3C,IAAI,CAAC,yBAAyB,EAAE;AAC/B,gBAAA,IAAI,UAAU,CAAC,EAAE,CAAC,QAAkB,CAAC,YAAY,SAAS,IAAI,UAAU,CAAC,EAAE,CAAC,QAAkB,CAAC,YAAY,SAAS,EAAE;AACrH,oBAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,QAAQ,CAAA,+GAAA,CAAiH,CAAC;gBACrL;YACD;AACA,YAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;gBACjC,MAAM,IAAI,KAAK,CAAC,CAAA,4BAAA,EAA+B,OAAO,QAAQ,CAAA,CAAE,CAAC;YAClE;YACA,IAAI,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE;AACtC,gBAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE;YACnC;YACA,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC;AACtC,YAAA,MAAM,uBAAuB,GAAG,MAAM,EAAE,KAAK;AAC7C,YAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK;AAC7D,YAAA,IAAI,UAAU,CAAC,uBAAuB,CAAC,EAAE;AACxC,gBAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,uBAAuB,CAAC;YAC7D;YACA,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,mBAAmB,CAAC;AACzD,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACpB,gBAAA,UAAU,EAAE,sBAAsB;AAClC,gBAAA,WAAW,EAAE,uBAAuB;AACpC,aAAA,CAAC;QACH;AAAO,aAAA,IAAI,UAAU,YAAY,gBAAgB,EAAE;YAClD,IAAI,CAAC,yBAAyB,EAAE;AAC/B,gBAAA,IAAI,UAAU,CAAC,GAAG,CAAC,QAAkB,CAAC,YAAY,SAAS,IAAI,UAAU,CAAC,GAAG,CAAC,QAAkB,CAAC,YAAY,SAAS,EAAE;AACvH,oBAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,QAAQ,CAAA,+GAAA,CAAiH,CAAC;gBACrL;YACD;AACA,YAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;gBACjC,MAAM,IAAI,KAAK,CAAC,CAAA,4BAAA,EAA+B,OAAO,QAAQ,CAAA,CAAE,CAAC;YAClE;YACA,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE;AACvC,gBAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE;YACnC;YACA,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;AACvC,YAAA,MAAM,uBAAuB,GAAG,MAAM,EAAE,KAAK;AAC7C,YAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK;AAC7D,YAAA,IAAI,UAAU,CAAC,uBAAuB,CAAC,EAAE;AACxC,gBAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,uBAAuB,CAAC;YAC7D;YACA,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,mBAAmB,CAAC;AACzD,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACpB,gBAAA,UAAU,EAAE,sBAAsB;AAClC,gBAAA,WAAW,EAAE,uBAAuB;AACpC,aAAA,CAAC;QACH;IACD;AAEA,IAAA,WAAW,CAAC,aAA4B,EAAA;QACvC,IAAI,aAAa,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,EAAE;AAClD,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QAC1D;QACA,IAAI,UAAU,CAAC,aAAa,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE;YACrD,IAAI,CAAC,oBAAoB,EAAE;QAC5B;QACA,IAAI,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE;YACnD,IAAI,CAAC,kBAAkB,EAAE;QAC1B;IACD;IAEA,WAAW,GAAA;AACV,QAAA,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;AACjE,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU;AACnD,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE;AACzC,YAAA,IAAI,UAAU,YAAY,gBAAgB,EAAE;AAC3C,gBAAA,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,mBAAmB,CAAC;AAC9E,gBAAA,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;oBACf;gBACD;AACA,gBAAA,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;YACzB;AAAO,iBAAA,IAAI,UAAU,YAAY,gBAAgB,EAAE;AAClD,gBAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;oBACjC,MAAM,IAAI,KAAK,CAAC,CAAA,4BAAA,EAA+B,OAAO,QAAQ,CAAA,CAAE,CAAC;gBAClE;gBACA,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,mBAAmB,EAAE;oBAC1D;gBACD;gBACA,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,WAAW,EAAE,CAAC;YACnD;QACD;IACD;IAEQ,oBAAoB,GAAA;AAC3B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG;QAC/B,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,GAAoB,EAAE,KAAa,KAAkC;YACzF,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;AACtC,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC;AACpD,YAAA,IAAI,OAAO,KAAK,KAAK,EAAE;gBACtB,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,EAAE,mBAAmB,EAAE;YAC7D;AACA,YAAA,OAAO,MAAM;AACd,QAAA,CAAC;AAED,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM;QACrC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAoB,KAAa;AACxD,YAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC;YAChD,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,EAAE,mBAAmB,EAAE;AAC5D,YAAA,OAAO,MAAM;AACd,QAAA,CAAC;IACF;IAEQ,kBAAkB,GAAA;AACzB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG;QAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,GAAoB,EAAE,KAAa,KAAkC;YACvF,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;AACpC,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC;AAClD,YAAA,GAAG,CAAC,SAAS,CAAC,EAAC,GAAG,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAC,CAAC;AAChD,YAAA,IAAI,OAAO,KAAK,KAAK,EAAE;gBACtB,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,EAAE,mBAAmB,EAAE;YAC7D;AACA,YAAA,OAAO,MAAM;AACd,QAAA,CAAC;AAED,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;QACnC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAoB,KAAa;AACtD,YAAA,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM;YAClC,OAAO,eAAe,CAAC,SAAS;AAChC,YAAA,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC;AAC9B,YAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC;YAC9C,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,EAAE,mBAAmB,EAAE;AAC5D,YAAA,OAAO,MAAM;AACd,QAAA,CAAC;IACF;IAEQ,kCAAkC,GAAA;AACzC,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU;AAC9C,QAAA,MAAM,KAAK,GAAG,CACb,KAEC,EACD,OAGC,KACQ;YACT,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAI;gBAC9C,UAAU,CAAC,MAAK;oBACf,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE,OAAO,CAAC;AAChD,gBAAA,CAAC,CAAC;AACH,YAAA,CAAC,CAAC;AACH,QAAA,CAAC;AACD,QAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,GAAG,KAAK;IAC5C;IAEO,eAAe,CAAC,WAA+B,EAAE,WAAiC,EAAA;QACxF,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAC,WAAW,EAAE,WAAW,EAAC,CAAC;AACpD,QAAA,IAAI,sBAAiC;AACrC,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YAChB,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,WAAW,CAAC;QAC/E;AACA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,WAAW,CAAC,OAAO,EAAE;QACtB;AAEA,QAAA,MAAM,QAAQ,GAAiE,WAAW,CAAC,MAAM;AACjG,QAAA,WAAW,CAAC,MAAM,GAAG,CAAC,IAAkD,KAAI;AAC3E,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACnB,gBAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;YACjC;AACD,QAAA,CAAC;QAED,MAAM,mBAAmB,GAAG,MAAU;YACrC,MAAM,IAAI,GAAG,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC;YACzD,MAAM,cAAc,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC;AAC3D,YAAA,MAAM,wBAAwB,GAAG,sBAAsB,IAAI;AAC3D,YAAA,OAAO,SAAS,CAAC,cAAc,KAAK,SAAS,GAAG,cAAc,GAAG,wBAAwB,CAAC;AAC3F,QAAA,CAAC;AAED,QAAA,MAAM,UAAU,GAKH,WAAW,CAAC,QAAQ;QACjC,WAAW,CAAC,QAAQ,GAAG,CAAC,KAAc,EAAE,OAKvC,KAAI;AACJ,YAAA,MAAM,cAAc,GAAG,mBAAmB,EAAE;YAC5C,IAAI,cAAc,KAAK,SAAS,IAAI,OAAO,EAAE,qBAAqB,KAAK,IAAI,EAAE;AAC5E,gBAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;oBACzB,OAAO,GAAG,EAAE;gBACb;AACA,gBAAA,OAAO,CAAC,qBAAqB,GAAG,IAAI;YACrC;AACA,YAAA,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,KAAK,SAAS,GAAG,cAAc,GAAG,KAAK,EAAE,OAAO,CAAC;AAC7F,QAAA,CAAC;AAED,QAAA,MAAM,cAAc,GAAG,mBAAmB,EAAE;AAC5C,QAAA,IAAI,cAAc,KAAK,SAAS,EAAE;AACjC,YAAA,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC;QACrC;AAEA,QAAA,OAAO,mBAAmB;IAC3B;AAEQ,IAAA,0BAA0B,CAAC,OAAwB,EAAA;QAC1D,MAAM,IAAI,GAAG,EAAE;QACf,IAAI,cAAc,GAAG,OAAO;AAC5B,QAAA,OAAO,cAAc,CAAC,MAAM,EAAE;AAC7B,YAAA,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM;AACpC,YAAA,IAAI,MAAM,YAAY,SAAS,EAAE;AAChC,gBAAA,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,KAAK,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC;AAC/F,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YACf;AAAO,iBAAA,IAAI,MAAM,YAAY,SAAS,EAAE;AACvC,gBAAA,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,cAAc,CAAC;AAChE,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YACf;YACA,cAAc,GAAG,MAAM;QACxB;AACA,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE;IACtB;AAEQ,IAAA,yBAAyB,CAAC,IAAmB,EAAA;AACpD,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,eAAe;AAClC,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACvB,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,EAAE;AAChC,gBAAA,OAAO,SAAS;YACjB;AACA,YAAA,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;QACvB;AACA,QAAA,OAAO,OAAO;IACf;AAEO,IAAA,iBAAiB,CAAC,WAA+B,EAAA;QACvD,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AACrE,QAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;QAChC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC;QACtF,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AACpE,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AAChB,YAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC;QAC3C;IACD;IAEQ,oBAAoB,CAAC,SAA2B,EAAE,MAAiC,EAAA;AAC1F,QAAA,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACnD,YAAA,IAAI,KAAK,YAAY,gBAAgB,EAAE;AACtC,gBAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC;YACzC;AAAO,iBAAA,IAAI,KAAK,YAAY,gBAAgB,EAAE;AAC7C,gBAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC;YACzC;AAAO,iBAAA,IAAI,KAAK,YAAY,kBAAkB,EAAE;AAC/C,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC;YACnC;AACD,QAAA,CAAC,CAAC;IACH;IAEQ,oBAAoB,CAAC,SAA2B,EAAE,MAAiC,EAAA;QAC1F,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACpC,YAAA,IAAI,KAAK,YAAY,gBAAgB,EAAE;AACtC,gBAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC;YACzC;AAAO,iBAAA,IAAI,KAAK,YAAY,gBAAgB,EAAE;AAC7C,gBAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC;YACzC;AAAO,iBAAA,IAAI,KAAK,YAAY,kBAAkB,EAAE;AAC/C,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC;YACnC;AACD,QAAA,CAAC,CAAC;IACH;IAEQ,kBAAkB,GAAA;QACzB,MAAM,MAAM,GAAG,EAAE;AACjB,QAAA,IAAI,IAAI,CAAC,mBAAmB,YAAY,SAAS,EAAE;YAClD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC;QAC5D;AAAO,aAAA,IAAI,IAAI,CAAC,mBAAmB,YAAY,SAAS,EAAE;YACzD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC;QAC5D;AACA,QAAA,OAAO,MAAM;IACd;IAEQ,cAAc,CAAC,OAA2B,EAAE,MAAiC,EAAA;AACpF,QAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;IACrB;AAEQ,IAAA,0BAA0B,CAAC,OAA2B,EAAA;AAC7D,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,KAAK,OAAO,CAAC,EAAE;YAChE,OAAO,CAAC,OAAO,EAAE;QAClB;IACD;AAEO,IAAA,2BAA2B,CAAC,OAAwB,EAAA;AAC1D,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,KAAK,OAAO,CAAC,EAAE,WAAW;IAC/E;AAEO,IAAA,gBAAgB,CAAC,OAAwB,EAAA;QAC/C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;IAClC;IAEO,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE;AAC3C,QAAA,MAAM,WAAW,GAA8B,IAAI,CAAC,kBAAkB,EAAE;QACxE,MAAM,sBAAsB,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAG;YAClD,OAAO,EAAC,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAC;AAC1C,QAAA,CAAC,CAAC;AACF,QAAA,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;AAC5D,QAAA,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,sBAAsB,EAAE,CAAC;AACpD,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK;AACrD,QAAA,IAAI,IAAI,CAAC,mBAAmB,YAAY,SAAS,EAAE;AAClD,YAAA,MAAM,wBAAwB,GAAG,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC;AACrG,YAAA,MAAM,yBAAyB,GAAG,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC;YAEvG,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACtC,gBAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE;AACrC,oBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AACpE,wBAAA,IAAI,GAAG,KAAK,SAAS,EAAE;4BACtB,GAAG,CAAC,WAAW,EAAE;4BACjB,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,cAAc;iCAC/G,IAAI,CAAC,OAAO;iCACZ,KAAK,CAAC,MAAM,CAAC;wBAChB;AACD,oBAAA,CAAC,CAAC;gBACH;qBAAO;oBACN,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,cAAc;yBAC/G,IAAI,CAAC,OAAO;yBACZ,KAAK,CAAC,MAAM,CAAC;gBAChB;AACD,YAAA,CAAC,CAAC;QACH;AACA,QAAA,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC;IACnG;AAEQ,IAAA,gBAAgB,CACvB,sBAA+E,EAC/E,wBAA0C,EAC1C,yBAA2C,EAC3C,cAAc,EAAA;AACd,QAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE;YACrC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE;AAC/E,YAAA,IAAI,CAAC,+BAA+B,CAAC,sBAAsB,CAAC;AAC5D,YAAA,OAAO,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC;QAC3C;aAAO;AACN,YAAA,IAAI,CAAC,+BAA+B,CAAC,sBAAsB,CAAC;YAC5D,MAAM,cAAc,GAAG,SAAS,CAAC,wBAAwB,EAAE,yBAAyB,CAAC;YACrF,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QACzD;IACD;AAEQ,IAAA,+BAA+B,CAAC,SAAoB,EAAE,OAAgB,EAAE,WAAW,GAAG,EAAE,EAAA;AAC/F,QAAA,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,KAAI;YAC9D,IAAI,OAAO,YAAY,WAAW,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,OAAO,CAAC,EAAE;AAC9H,gBAAA,WAAW,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK;YAClC;AAAO,iBAAA,IAAI,OAAO,YAAY,SAAS,EAAE;AACxC,gBAAA,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE;AACtB,gBAAA,IAAI,CAAC,+BAA+B,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;YAC1E;AAAO,iBAAA,IAAI,OAAO,YAAY,SAAS,EAAE;AACxC,gBAAA,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE;AACtB,gBAAA,IAAI,CAAC,+BAA+B,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;YAC1E;AACD,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,WAAW;IACnB;AAEQ,IAAA,+BAA+B,CAAC,SAAoB,EAAE,OAAgB,EAAE,UAAsB,EAAA;QACrG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAwB,KAAI;YACvD,IAAI,OAAO,YAAY,WAAW,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,OAAO,CAAC,EAAE;AAC9H,gBAAA,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAC/B;AAAO,iBAAA,IAAI,OAAO,YAAY,SAAS,EAAE;gBACxC,MAAM,QAAQ,GAAG,EAAE;AACnB,gBAAA,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACzB,IAAI,CAAC,+BAA+B,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;YACjE;AAAO,iBAAA,IAAI,OAAO,YAAY,SAAS,EAAE;gBACxC,MAAM,SAAS,GAAG,EAAE;AACpB,gBAAA,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC1B,IAAI,CAAC,+BAA+B,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC;YAClE;AACD,QAAA,CAAC,CAAC;IACH;IAEO,2BAA2B,GAAA;AACjC,QAAA,IAAI,IAAI,CAAC,mBAAmB,YAAY,SAAS,EAAE;AAClD,YAAA,MAAM,wBAAwB,GAAG,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC;AACrG,YAAA,MAAM,yBAAyB,GAAG,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC;YACvG,MAAM,iBAAiB,GAAG,SAAS,CAAC,wBAAwB,EAAE,yBAAyB,CAAC;AACxF,YAAA,OAAO,iBAAiB;QACzB;AACA,QAAA,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC;IACvF;AAEQ,IAAA,+BAA+B,CAAC,sBAGtC,EAAA;AACD,QAAA,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACpC,YAAA,IAAI,CAAC,CAAC,QAAQ,EAAE;AACf,gBAAA,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE;YACpB;iBAAO;AACN,gBAAA,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE;YACnB;AACD,QAAA,CAAC,CAAC;IACH;+GA1bY,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,qcCrD1B,oDAKA,EAAA,MAAA,EAAA,CAAA,yEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,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,CAAA,EAAA,CAAA,CAAA;;4FDgDa,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,cAGR,KAAK,EAAA,QAAA,EAAA,oDAAA,EAAA,MAAA,EAAA,CAAA,yEAAA,CAAA,EAAA;;0BAuBP;;0BAAY;;0BAA2C;;sBApBnE;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;AEhEI,SAAU,kBAAkB,CAAC,EAAc,EAAA;IAChD,UAAU,CAAC,EAAE,CAAC;AACf;SAEgB,qBAAqB,GAAA;AACpC,IAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;QAC9B,UAAU,CAAC,OAAO,CAAC;AACpB,IAAA,CAAC,CAAC;AACH;;MCAa,iBAAiB,CAAA;IAG7B,eAAe,GAAA;QACd,kBAAkB,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IAC5C;+GALY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAjB,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAEC;;;MCDW,oBAAoB,CAAA;AANjC,IAAA,WAAA,GAAA;QAOU,IAAA,CAAA,OAAO,GAAoB,MAAM;AAC1C,IAAA;+GAFY,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,kHCRjC,urEAUA,EAAA,MAAA,EAAA,CAAA,0EAAA,CAAA,EAAA,CAAA,CAAA;;4FDFa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,cAGrB,KAAK,EAAA,QAAA,EAAA,urEAAA,EAAA,MAAA,EAAA,CAAA,0EAAA,CAAA,EAAA;;sBAGnB;;;MEAW,6BAA6B,CAAA;AAIzC,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;AADrB,QAAA,IAAA,CAAA,oBAAoB,GAAG,CAAC,WAAoB,KAAI,EAAE,CAAC;IAG5D;IAEA,eAAe,GAAA;QACd,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE;YAC3C;QACD;AAEA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AAEhD,QAAA,MAAM,eAAe,GAAG;AACvB,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,OAAO,EAAE;SACT;QAED,MAAM,QAAQ,GAAG,MAAK;YACrB,IAAI,CAAC,kBAAkB,EAAE;AAC1B,QAAA,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,QAAQ,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,eAAe,CAAC;QAClD,IAAI,CAAC,kBAAkB,EAAE;IAC1B;AAEQ,IAAA,MAAM,kBAAkB,GAAA;QAC/B,MAAM,qBAAqB,EAAE;AAC7B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AACnE,QAAA,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC;QACvC;IACD;AAEQ,IAAA,WAAW,CAAC,OAAoB,EAAA;QACvC,IAAI,EAAE,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;YAC/B;QACD;QACA,MAAM,sBAAsB,GAAG,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW;QACxE,IAAI,CAAC,sBAAsB,EAAE;YAC5B,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC,KAAoB,CAAC,CAAC;QAC5F;AACA,QAAA,OAAO,sBAAsB;IAC9B;IAEA,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE;IAC5B;+GAnDY,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA7B,6BAA6B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAJzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAIC;;;MCSW,mBAAmB,GAAG,IAAI,cAAc,CAAsB,qBAAqB;AAEzF,MAAM,sBAAsB,GAAsB;AACxD,IAAA,GAAG,EAAE,gCAAgC;AACrC,IAAA,GAAG,EAAE,iCAAiC;AACtC,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,KAAK,EAAE,2BAA2B;AAClC,IAAA,SAAS,EAAE,gDAAgD;AAC3D,IAAA,SAAS,EAAE,iDAAiD;AAC5D,IAAA,OAAO,EAAE,yBAAyB;AAClC,IAAA,aAAa,EAAE,sBAAsB;AACrC,IAAA,IAAI,EAAE,oBAAoB;;MAWd,oBAAoB,CAAA;AA4BhC,IAAA,WAAA,CACqB,MAAqB,EACQ,cAAmC,EAC5E,KAAiB,EACjB,MAAc,EAAA;QAHF,IAAA,CAAA,MAAM,GAAN,MAAM;QACuB,IAAA,CAAA,cAAc,GAAd,cAAc;QACvD,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,MAAM,GAAN,MAAM;QA7BC,IAAA,CAAA,SAAS,GAA8B,YAAY;QACnD,IAAA,CAAA,cAAc,GAA2B,aAAa;QACtD,IAAA,CAAA,iBAAiB,GAAqB,QAAQ;QAC9C,IAAA,CAAA,iBAAiB,GAA0E,OAAO;QAClG,IAAA,CAAA,mBAAmB,GAAG,KAAK;QAC3B,IAAA,CAAA,qBAAqB,GAAG,KAAK;QAC7B,IAAA,CAAA,uBAAuB,GAAG,IAAI;QAYvC,IAAA,CAAA,aAAa,GAAsB,sBAAsB;QACzD,IAAA,CAAA,mBAAmB,GAA4D,EAAE;QAGhF,IAAA,CAAA,UAAU,GAAe,SAAS;QAClC,IAAA,CAAA,aAAa,GAAwB,EAAE;AAoNxC,QAAA,IAAA,CAAA,0BAA0B,GAAG,CAAC,WAAoB,KAAI;AAC5D,YAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,WAAW;AACtC,QAAA,CAAC;QA4BM,IAAA,CAAA,qBAAqB,GAAG,MAAW;AACzC,YAAA,IAAI,IAAI,CAAC,UAAU,KAAK,YAAY,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;gBACtE;YACD;YACA,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,qBAAqB,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,qBAAqB,EAAE,CAAC,GAAG;AACjJ,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE;AACrC,gBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,WAAA,EAAc,YAAY,CAAA,GAAA,CAAK;YAClF;AACD,QAAA,CAAC;IAlPD;AAEA,IAAA,MAAM,eAAe,GAAA;AACpB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,MAAK;YAC3E,IAAI,CAAC,mBAAmB,EAAE;AAC3B,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,UAAU,CAAC,YAAY,CAAC,EAAG;AAC9B,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC;QACtC;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;YAClC,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAK;gBACtE,IAAI,CAAC,qBAAqB,EAAE;AAC7B,YAAA,CAAC,CAAC;AACH,QAAA,CAAC,CAAC;IACH;IAEO,uBAAuB,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,iBAAiB,KAAK,KAAK;IAChD;IAEO,oBAAoB,CAAC,OAAe,EAAE,UAA+B,EAAA;AAC3E,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAI;AAClD,YAAA,OAAO,GAAG,CAAC,OAAO,CAAC,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,CAAG,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;QAChD,CAAC,EAAE,OAAO,CAAC;IACZ;AAEO,IAAA,eAAe,CAAC,WAA+B,EAAE,KAAA,GAAgC,IAAI,EAAA;AAC3F,QAAA,IAAI,CAAC,eAAe,GAAG,WAAW;AAClC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC;QAG1E,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,SAAS,CAAC,MAAK;YACtE,IAAI,CAAC,mBAAmB,EAAE;AAC3B,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC;QACrC,IAAI,CAAC,mBAAmB,EAAE;AAC1B,QAAA,OAAO,mBAAmB;IAC3B;IAEO,mBAAmB,GAAA;AACzB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU;QACjC,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,oBAAoB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE;AAChD,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;QAC5B;aAAO,IAAI,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE;AAC/C,YAAA,IAAI,CAAC,UAAU,GAAG,YAAY;QAC/B;aAAO;AACN,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;QAC5B;QAEA,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC;IAC5D;IAEQ,0BAA0B,CAAC,IAAgB,EAAE,OAAmB,EAAA;AACvE,QAAA,IAAI,IAAI,KAAK,OAAO,EAAE;YACrB;QACD;AACA,QAAA,MAAM,UAAU,GAAG,CAAC,GAAG,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;AAClF,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;AAClC,YAAA,IAAI,OAAO,KAAK,YAAY,EAAE;AAC7B,gBAAA,UAAU,CAAC,OAAO,CAAC,CAAC,IAAG;oBACtB,CAAC,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,qBAAqB,CAAC;AACzD,gBAAA,CAAC,CAAC;YACH;iBAAO;AACN,gBAAA,UAAU,CAAC,OAAO,CAAC,CAAC,IAAG;oBACtB,CAAC,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,qBAAqB,CAAC;AAC5D,gBAAA,CAAC,CAAC;YACH;AACD,QAAA,CAAC,CAAC;IACH;AAEO,IAAA,iBAAiB,CAAC,WAA+B,EAAA;AACvD,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3B,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC;IAC3C;IAEO,kBAAkB,GAAA;QACxB,OAAO,IAAI,CAAC,eAAe;IAC5B;IAEO,gBAAgB,GAAA;QACtB,OAAO,IAAI,CAAC,KAAK;IAClB;IAEO,oBAAoB,CAAC,KAAa,EAAE,WAA6B,EAAA;QACvE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,WAAW,EAAC,CAAC;IACpD;AAEO,IAAA,eAAe,CAAC,WAA6B,EAAA;AACnD,QAAA,IAAI,CAAC,UAAU,GAAG,WAAW;IAC9B;AAEO,IAAA,kBAAkB,CAAC,WAA6B,EAAA;AACtD,QAAA,IAAI,CAAC,aAAa,GAAG,WAAW;IACjC;IAEO,gBAAgB,GAAA;QACtB,OAAO,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC;IAC3D;IAEO,6BAA6B,GAAA;AACnC,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,WAAW,EAAE;YAC/E,OAAO,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAqB;QAC/E;AACA,QAAA,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC;IAChD;IAEO,6BAA6B,GAAA;AACnC,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,YAAY,WAAW;IACtD;IAEA,cAAc,GAAA;AACb,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,eAAe,EAAE,OAAO,KAAK,IAAI,EAAE;AAC3C,YAAA,OAAO,IAAI;QACZ;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,EAAE;AAClC,YAAA,OAAO,IAAI;QACZ;AACA,QAAA,OAAO,UAAU;IAClB;AAEA,IAAA,qBAAqB,CAAC,KAAa,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC;IAC/D;AAEA,IAAA,gBAAgB,CAAC,KAAa,EAAA;QAC7B,OAAO,IAAI,CAAC,cAAc,EAAE,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC;IACnG;AAEA,IAAA,mBAAmB,CAAC,IAAI,EAAA;QACvB,IAAI,IAAI,KAAK,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE;AAC7C,YAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,eAAe;QACvC;QACA,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,SAAS;AAClD,QAAA,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,KAAK,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,QAAQ,CAAC,EAAE;AAC9F,YAAA,OAAO,IAAI;QACZ;aAAO;YACN,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC;QACjD;IACD;IAEA,QAAQ,GAAA;AACP,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC;QAChF,MAAM,SAAS,GAAG,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC,eAAe,GAAG,CAAC,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC,GAAG;AACrG,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,GAAG;AACtF,QAAA,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS;AACxC,QAAA,MAAM,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,eAAe;QAEvD,MAAM,CAAC,QAAQ,CAAC;YACf,GAAG,EAAE,MAAM,GAAG,EAAE;AAChB,YAAA,QAAQ,EAAE;AACV,SAAA,CAAC;IACH;IAEA,UAAU,GAAA;AACT,QAAA,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC;QAC3C;AACA,QAAA,OAAO,KAAK;IACb;AAEA,IAAA,eAAe,CAAC,GAA4B,EAAA;AAC3C,QAAA,IAAI,GAAG,KAAK,WAAW,EAAE;AACxB,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS;QAC9C;AACA,QAAA,OAAO,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;IACjE;IAEO,gBAAgB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,oBAAoB,IAAI,cAAc;IAC3D;IAEO,4BAA4B,GAAA;AAClC,QAAA,OAAO,IAAI,CAAC,UAAU,KAAK,YAAY;IACxC;IAEO,wBAAwB,GAAA;QAC9B,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;AAClE,YAAA,OAAO,KAAK;QACb;AACA,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;AAClC,YAAA,OAAO,KAAK;QACb;QACA,IAAI,oBAAoB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE;AAChD,YAAA,OAAO,CAAC,IAAI,CAAC,iBAAiB;QAC/B;QACA,IAAI,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE;AACxC,YAAA,OAAO,IAAI;QACZ;AACA,QAAA,OAAO,KAAK;IACb;IAEO,sBAAsB,GAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC/B,YAAA,OAAO,KAAK;QACb;AACA,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,UAAU,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,gBAAgB,EAAE;AAClF,YAAA,OAAO,KAAK;QACb;AACA,QAAA,OAAO,IAAI;IACZ;IAMO,sBAAsB,GAAA;AAC5B,QAAA,OAAO,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC3C;IAEO,UAAU,GAAA;AAChB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU;AACjC,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;QAC3B,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC;IAC5D;IAEO,WAAW,GAAA;QACjB,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE;YAClE;QACD;AACA,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC3B;QACD;AACA,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU;AACjC,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,YAAY,EAAE;AACrC,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;QAC5B;aAAO;AACN,YAAA,IAAI,CAAC,UAAU,GAAG,YAAY;QAC/B;QACA,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC;IAC5D;IAYA,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IACjD;IAEQ,iBAAiB,GAAA;AACxB,QAAA,IAAI,oBAAoB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE;YACvF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE;gBAC/C,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;YAC1C;QACD;IACD;AAhSY,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,4DA8BvB,mBAAmB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGA9BhB,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAiBlB,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iCAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5DhC,urNA8JA,EAAA,MAAA,EAAA,CAAA,suLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDnHa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAGhB,KAAK,EAAA,QAAA,EAAA,urNAAA,EAAA,MAAA,EAAA,CAAA,suLAAA,CAAA,EAAA;;0BA+BlB;;0BACA,MAAM;2BAAC,mBAAmB;;0BAAG;;sBA5B9B;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA,SAAS;uBAAC,sBAAsB;;sBAChC,SAAS;uBAAC,SAAS;;sBACnB,SAAS;uBAAC,iCAAiC;;sBAC3C,SAAS;uBAAC,gBAAgB;;sBAC1B,SAAS;uBAAC,aAAa;;sBACvB,SAAS;uBAAC,cAAc;;sBACxB,SAAS;uBAAC,gBAAgB;;sBAC1B,YAAY;uBAAC,iBAAiB;;;AEzChC;;;;;;;;AAQG;MAOU,iBAAiB,CAAA;IAsB7B,WAAA,CAC+B,MAA4B,EAC5B,gBAAkC,EAAA;QADlC,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;AAtBxC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,KAAK,EAAsB;AACxC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,KAAK,EAAc;QACjC,IAAA,CAAA,SAAS,GAAM,IAAI;QAEX,IAAA,CAAA,QAAQ,GAAG,KAAK;;QAKhB,IAAA,CAAA,eAAe,GAAW,IAAI;QAC9B,IAAA,CAAA,WAAW,GAAuB,IAAI;QACtC,IAAA,CAAA,YAAY,GAAG,KAAK;AAEnB,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAQ;QA0G5C,IAAA,CAAA,KAAK,GAAG,MAAW;YACzB,IAAI,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,EAAC;AAClD,gBAAA,IAAI,CAAC,cAAc,EAAE,aAAa,EAAE,KAAK,EAAE;YAC5C;iBAAM;AACL,gBAAA,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC;YAC1E;AACD,QAAA,CAAC;AAEM,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,GAAqB,KAAU;AACnD,YAAA,IAAI,CAAC,OAAO,GAAG,GAAG;AACnB,QAAA,CAAC;QACM,IAAA,CAAA,UAAU,GAAG,MAAuB;AAC1C,YAAA,IAAI,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AAClC,gBAAA,OAAO,IAAI,CAAC,YAAY,EAAE;YAC3B;YACA,OAAO,IAAI,CAAC,OAAO;AACpB,QAAA,CAAC;IA/GD;IAEA,QAAQ,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW;QAC5C;AAAO,aAAA,IAAI,oBAAoB,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;AACtD,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAuB;AACzG,YAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE;AAChD,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,cAAA,EAAiB,IAAI,CAAC,eAAe,CAAA,gBAAA,EAAmB,IAAI,CAAC,MAAM,EAAE,OAAO,CAAA,oCAAA,CAAsC,CAAC;YACpI;QACD;AACA,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ;YACjD,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,SAAS,CAAC,MAAK;gBACrD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ;AAClD,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC;QACxF;IACD;IAEU,iBAAiB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,mBAAmB,IAAI;IACpC;IAGA,cAAc,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,OAAO,IAAI;QACZ;AACA,QAAA,OAAO,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO;IACrH;IAEA,WAAW,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC7B,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC,mBAAmB,CAAC;QACzD;IACD;IAEA,KAAK,GAAA;AACJ,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACpB;AAEA,IAAA,UAAU,CAAC,KAAQ,EAAA;AAClB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;IACxB;AAEA,IAAA,gBAAgB,CAAC,EAAsB,EAAA;AACtC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IACtB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IACtB;AAEA,IAAA,sBAAsB,CAAC,KAAQ,EAAA;AAC9B,QAAA,MAAM,gBAAgB,GAAG,CAAC,UAAa,KAAU;AAChD,YAAA,IAAI,CAAC,SAAS,GAAG,UAAU;AAC3B,YAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAC5B,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC;AAC7C,QAAA,CAAC;AACD,QAAA,IAAI,UAAU,CAAC,IAAI,CAAC,2BAA2B,CAAC,EAAE;AACjD,YAAA,IAAI,CAAC,yCAAyC,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC;AACxG,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,yCAAyC;AAChE,YAAA,IAAI,CAAC,yCAAyC,CAAC,IAAI,CAAC,MAAK;AACxD,gBAAA,IAAI,IAAI,CAAC,yCAAyC,KAAK,SAAS,EAAE;oBACjE,gBAAgB,CAAC,KAAK,CAAC;gBACxB;qBAAO;;gBAEP;AACD,YAAA,CAAC,CAAC,CAAC,KAAK,CAAC,MAAK;AACb,gBAAA,IAAI,IAAI,CAAC,yCAAyC,KAAK,SAAS,EAAE;AACjE,oBAAA,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;gBACjC;qBAAO;;gBAEP;AACD,YAAA,CAAC,CAAC;QACH;aAAO;YACN,gBAAgB,CAAC,KAAK,CAAC;QACxB;IACD;IAEA,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;IAClC;AAEA,IAAA,YAAY,CAAC,aAAqB,EAAA;AACjC,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,SAAS,GAAG,EAAS,CAAC,IAAI,EAAE,CAAC;AACtF,QAAA,IAAI,mBAAmB,CAAC,UAAU,CAAC,EAAE;AACpC,YAAA,OAAO,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC1C;AACA,QAAA,OAAO,KAAK;IACb;+GAvHY,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,sbAHhB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;4FAGH,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,UAAU,EAAE;AACf,iBAAA;;0BAwBE;;0BAAQ;;0BACR;;0BAAQ;;sBAlBT;;sBAGA;;sBAEA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA,SAAS;uBAAC,gBAAgB;;;MC1Cf,yBAAyB,CAAA;AANtC,IAAA,WAAA,GAAA;QAOiB,IAAA,CAAA,OAAO,GAAiD,OAAO;QAC/D,IAAA,CAAA,IAAI,GAAmD,QAAQ;AAC/E,IAAA;+GAHY,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,qICRtC,igDAgDA,EAAA,MAAA,EAAA,CAAA,snEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDxCa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,cAG1B,KAAK,EAAA,QAAA,EAAA,igDAAA,EAAA,MAAA,EAAA,CAAA,snEAAA,CAAA,EAAA;;sBAGnB;;sBACA;;;MEQW,eAAe,CAAA;AAN5B,IAAA,WAAA,GAAA;QAOU,IAAA,CAAA,OAAO,GAAkB,OAAO;QAChC,IAAA,CAAA,IAAI,GAAiC,QAAQ;QAC7C,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,SAAS,GAAG,IAAI;QAChB,IAAA,CAAA,QAAQ,GAAG,KAAK;QAChB,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,IAAI,GAAwB,QAAQ;AAoB7C,IAAA;AAjBA,IAAA,IAAqC,CAAC,GAAA;QACrC,OAAO,IAAI,CAAC,SAAS;IACtB;IAEA,MAAM,OAAO,CAAC,KAAY,EAAA;AACzB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,KAAK,CAAC,eAAe,EAAE;YACvB;QACD;AAEA,QAAA,IAAI,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;AACnC,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;YACrB,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAK;AAC5C,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACvB,YAAA,CAAC,CAAC;QACH;IACD;+GA1BY,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,8TClB5B,iiBAoBA,EAAA,MAAA,EAAA,CAAA,m4EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDFa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cAGf,KAAK,EAAA,QAAA,EAAA,iiBAAA,EAAA,MAAA,EAAA,CAAA,m4EAAA,CAAA,EAAA;;sBAGnB;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA,WAAW;uBAAC,kBAAkB;;;AEjB1B,MAAO,iBAAkB,SAAQ,iBAA0B,CAAA;AAPjE,IAAA,WAAA,GAAA;;QASU,IAAA,CAAA,8BAA8B,GAAG,KAAK;AAC/C,IAAA;+GAHY,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,mKAHf,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,iDCR5F,s3CA6BA,EAAA,MAAA,EAAA,CAAA,g1CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,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,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,CAAA,EAAA,CAAA,CAAA;;4FDlBa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,aAGlB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,iBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,cAC5E,KAAK,EAAA,QAAA,EAAA,s3CAAA,EAAA,MAAA,EAAA,CAAA,g1CAAA,CAAA,EAAA;;sBAGnB;;sBACA;;;AEFI,MAAO,mBAAoB,SAAQ,iBAAyB,CAAA;AAPlE,IAAA,WAAA,GAAA;;QAQU,IAAA,CAAA,WAAW,GAAG,EAAE;AACzB,IAAA;+GAFY,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,4GAHjB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,iDCR9F,mdAgBA,EAAA,MAAA,EAAA,CAAA,y8BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,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,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,CAAA,EAAA,CAAA,CAAA;;4FDLa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,aAGrB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,mBAAqB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,cAC9E,KAAK,EAAA,QAAA,EAAA,mdAAA,EAAA,MAAA,EAAA,CAAA,y8BAAA,CAAA,EAAA;;sBAGnB;;;AEDI,MAAO,oBAAqB,SAAQ,iBAAkC,CAAA;AAP5E,IAAA,WAAA,GAAA;;QASU,IAAA,CAAA,WAAW,GAAY,KAAK;AASrC,IAAA;AAPA,IAAA,sBAAsB,CAAC,KAAsB,EAAA;QAC5C,IAAI,IAAI,CAAC,WAAW,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAClD,KAAK,CAAC,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5C;aAAO;AACN,YAAA,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC;QACpC;IACD;+GAVY,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,yIAHlB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,oBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,iDCR/F,sSAUA,EAAA,MAAA,EAAA,CAAA,+yBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,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,mBAAA,EAAA,QAAA,EAAA,iGAAA,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,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,CAAA,EAAA,CAAA,CAAA;;4FDCa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,aAGtB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,oBAAsB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,cAC/E,KAAK,EAAA,QAAA,EAAA,sSAAA,EAAA,MAAA,EAAA,CAAA,+yBAAA,CAAA,EAAA;;sBAGnB;;sBACA;;;AEFI,MAAO,sBAAuB,SAAQ,iBAAyB,CAAA;AAPrE,IAAA,WAAA,GAAA;;QAQU,IAAA,CAAA,WAAW,GAAG,UAAU;AACjC,IAAA;+GAFY,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,+GAHpB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,sBAAsB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,iDCRjG,2SAWA,EAAA,MAAA,EAAA,CAAA,+yBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,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,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,CAAA,EAAA,CAAA,CAAA;;4FDAa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,aAGxB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,sBAAwB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,cACjF,KAAK,EAAA,QAAA,EAAA,2SAAA,EAAA,MAAA,EAAA,CAAA,+yBAAA,CAAA,EAAA;;sBAGnB;;;MEsBW,mBAAmB,GAAG,IAAI,cAAc,CAAM,8BAA8B;MAM5E,gCAAgC,CAAA;+GAAhC,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAhC,gCAAgC,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAhC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAJ5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAWK,MAAO,eAAgB,SAAQ,iBAAoC,CAAA;IAqCxE,WAAA,CAC+B,MAA4B,EAC5B,gBAAkC,EACf,YAAiB,EAC1D,KAAiB,EACjB,MAAc,EAAA;AAEtB,QAAA,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC;QAND,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QACG,IAAA,CAAA,YAAY,GAAZ,YAAY;QACrD,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,MAAM,GAAN,MAAM;QAvCN,IAAA,CAAA,WAAW,GAA8B,YAAY;QAErD,IAAA,CAAA,QAAQ,GAAG,KAAK;QAChB,IAAA,CAAA,yBAAyB,GAAG,KAAK;QACjC,IAAA,CAAA,SAAS,GAAG,IAAI;QAChB,IAAA,CAAA,eAAe,GAAG,IAAI;QACtB,IAAA,CAAA,kBAAkB,GAAG,KAAK;QAC1B,IAAA,CAAA,UAAU,GAAG,IAAI;QACjB,IAAA,CAAA,aAAa,GAAG,IAAI;QACpB,IAAA,CAAA,cAAc,GAAG,IAAI;QACd,IAAA,CAAA,gBAAgB,GAAiD,IAAI;QACrE,IAAA,CAAA,iBAAiB,GAAqB,MAAM;AAG3C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAU;AACrC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAQ;AACvC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAQ;AACnC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAQ;AACnC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAQ;AACjC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAQ;AAClC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAU;QAMhD,IAAA,CAAA,oBAAoB,GAAG,CAAC,CAAC;QAC1B,IAAA,CAAA,qBAAqB,GAAiD,QAAQ;QAC7E,IAAA,CAAA,MAAM,GAAY,KAAK;QACvB,IAAA,CAAA,oBAAoB,GAAG,CAAC;QACxB,IAAA,CAAA,oBAAoB,GAAG,CAAC;AAoBxB,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,CAAC,KAAI;AAC3B,YAAA,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE;gBACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAErC;AACD,QAAA,CAAC;QA4GO,IAAA,CAAA,6BAA6B,GAAG,MAAK;AAC5C,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,mBAAmB,CAAC;AACjF,YAAA,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS;AAC1C,YAAA,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE;gBACpC;YACD;AACA,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC,GAAG;AACjH,YAAA,IAAI,CAAC,oBAAoB,GAAG,UAAU;AAEtC,YAAA,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;YACtC,IAAI,CAAC,eAAe,EAAE;AACvB,QAAA,CAAC;QAEO,IAAA,CAAA,4BAA4B,GAAG,YAA0B;AAChE,YAAA,IAAI,IAAI,CAAC,eAAe,KAAK,KAAK,EAAE;gBACnC,MAAM,qBAAqB,EAAE;AAC7B,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,EAAE;AAC/E,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,mBAAmB,CAAC;AACzE,oBAAA,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,IAAI;oBAC/D;gBACD;AACA,gBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC;AAChG,gBAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACpD,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,mBAAmB;AAClI,gBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC;AACnG,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,mBAAmB,CAAC;gBACjF,IAAI,aAAa,EAAE;AAClB,oBAAA,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,IAAI;AAC1E,oBAAA,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,CAAA,EAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,EAAE,QAAQ,EAAE,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC,CAAA,EAAA,CAAI;oBACxI,MAAM,qBAAqB,EAAE;AAC7B,oBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;oBAC1E,MAAM,kBAAkB,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;AAEtE,oBAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,IAAI;oBAC9E,MAAM,iBAAiB,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,gBAAgB,CAAC;AACzH,oBAAA,MAAM,gBAAgB,GAAG,kBAAkB,GAAG,WAAW;AACzD,oBAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,OAAO,EAAE;AACvC,wBAAA,IAAI,gBAAgB,GAAG,gBAAgB,EAAE;AACxC,4BAAA,IAAI,CAAC,oBAAoB,GAAG,CAAC,gBAAgB,GAAG,EAAE;wBACnD;6BAAO;AACN,4BAAA,IAAI,CAAC,oBAAoB,GAAG,CAAC,gBAAgB;wBAC9C;oBACD;AAAO,yBAAA,IAAI,gBAAgB,GAAG,iBAAiB,EAAE;wBAChD,IAAI,CAAC,oBAAoB,GAAG,CAAC,gBAAgB,GAAG,iBAAiB,GAAG,EAAE;oBACvE;oBACA,IAAI,CAAC,eAAe,EAAE;gBACvB;YACD;AACD,QAAA,CAAC;QAuDM,IAAA,CAAA,KAAK,GAAG,MAAW;AACzB,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AACtB,QAAA,CAAC;QAEM,IAAA,CAAA,IAAI,GAAG,MAAW;AACxB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACrB,QAAA,CAAC;QAEM,IAAA,CAAA,KAAK,GAAG,MAAW;AACzB,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AACtB,QAAA,CAAC;IA1OD;IAEA,eAAe,GAAA;QACd,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,OAAO,EAAE;AACd,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC;IAC9F;IASQ,OAAO,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,sBAAsB,CAAC;AAChF,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,mBAAmB,CAAC;YAChF,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,YAAY,CAAC;QACrE;IACD;IAEQ,SAAS,GAAA;AAChB,QAAA,IAAI,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACtC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,sBAAsB,CAAC;YAChF,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC7C,YAAA,OAAO,CAAC,SAAS,GAAG,QAAQ;AAC5B,YAAA,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM;AAC/B,YAAA,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACvD;IACD;IAEA,MAAM,WAAW,CAAC,OAAsB,EAAA;QACvC,IAAI,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAC/C,YAAA,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;;YAE9B,MAAM,qBAAqB,EAAE;AAC7B,YAAA,MAAM,IAAI,CAAC,4BAA4B,EAAE;QAC1C;AACA,QAAA,IAAI,OAAO,CAAC,gBAAgB,EAAE;AAC7B,YAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,gBAAgB;QACnD;AACA,QAAA,IAAI,OAAO,CAAC,MAAM,EAAE;AACnB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,aAAa,CAAC,8BAA8B,CAAC;AAC1F,YAAA,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE;gBAC1B,SAAS,CAAC,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY;YAClD;QACD;IACD;AAEA,IAAA,qBAAqB,CAAC,GAAW,EAAA;QAChC,QAAQ,GAAG;AACV,YAAA,KAAK,aAAa;AACjB,gBAAA,OAAO,MAAM,gBAAgB;AAC9B,YAAA,KAAK,gBAAgB;gBACpB,OAAO,CAAC,MAAM,KAAK,CAAA,EAAG,MAAM,WAAW;;IAE1C;AAEA,IAAA,cAAc,CAAC,GAAW,EAAE,MAAA,GAAc,IAAI,EAAA;QAC7C,IAAI,GAAG,KAAK,aAAa,IAAI,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACpE,OAAO,IAAI,CAAC,WAAW;QACxB;QACA,OAAO,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACrF;AAEA,IAAA,QAAQ,CAAC,aAAqB,EAAA;AAC7B,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;QACzE,IAAI,IAAI,CAAC,oBAAoB,GAAG,aAAa,IAAI,aAAa,KAAK,YAAY,EAAE;AAChF,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QACzB;AACA,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,oBAAoB,CAAC;QAC9E,IAAI,CAAC,4BAA4B,EAAE;IACpC;AAEA,IAAA,kBAAkB,CAAC,WAAmB,EAAA;AACrC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;IAChC;AAEA,IAAA,MAAM,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAElB,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,YAAY,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;YAC5E,IAAI,CAAC,yBAAyB,EAAE;QACjC;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YAC1B,IAAI,CAAC,aAAa,EAAE;QACrB;;QAEA,MAAM,qBAAqB,EAAE;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AAEpB,QAAA,MAAM,IAAI,CAAC,4BAA4B,EAAE;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YAC1B,IAAI,CAAC,6BAA6B,EAAE;AACpC,YAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;gBAClC,CAAC,GAAG,IAAI,CAAC,wBAAwB,EAAE,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,6BAA6B,CAAC,CAAC;AAC5H,YAAA,CAAC,CAAC;QACH;IACD;IAEQ,aAAa,GAAA;QACpB,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACnD,QAAA,IAAI,IAAI,CAAC,qBAAqB,KAAK,KAAK,EAAE;YACzC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC;QACtD;aAAO;YACN,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC;QAC1D;QAEA,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;QAChD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;QACzC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;IACvD;IAEQ,aAAa,GAAA;QACpB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC;QACzD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;IACvD;IAoDQ,wBAAwB,GAAA;QAC/B,MAAM,MAAM,GAAG,EAAE;AACjB,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa;AACtC,QAAA,OAAO,OAAO,CAAC,aAAa,EAAE;YAC7B,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;AACpD,gBAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;YACnC;AACA,YAAA,OAAO,GAAG,OAAO,CAAC,aAAa;QAChC;AACA,QAAA,OAAO,MAAM;IACd;IAEQ,eAAe,GAAA;AACtB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,mBAAmB,CAAC;AACjF,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;YAC/B;QACD;QACA,MAAM,oBAAoB,GAAG,CAAA,UAAA,EAAa,IAAI,CAAC,oBAAoB,CAAA,IAAA,EAAO,IAAI,CAAC,oBAAoB,CAAA,GAAA,CAAK;AACxG,QAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,qBAAqB,KAAK,KAAK,GAAG,CAAA,kCAAA,CAAoC,GAAG,iBAAiB;AAC9H,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE;AACpC,YAAA,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,UAAU;AAChD,YAAA,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,6BAA6B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,KAAK;QACzH;aAAO;AACN,YAAA,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACzF;IACD;IAEQ,yBAAyB,GAAA;AAChC,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,GAAG;AAC7F,QAAA,IAAI,WAAW,IAAI,GAAG,EAAE;AACvB,YAAA,IAAI,CAAC,qBAAqB,GAAG,QAAQ;QACtC;aAAO;AACN,YAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK;QACnC;IACD;AAEQ,IAAA,mBAAmB,CAAC,OAAgB,EAAA;AAC3C,QAAA,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC;AACvC,QAAA,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,EAAE;AAC/B,YAAA,OAAO,IAAI;QACZ;AACA,QAAA,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,EAAE;AAC9B,YAAA,OAAO,IAAI;QACZ;AACA,QAAA,IAAI,KAAK,CAAC,SAAS,KAAK,QAAQ,EAAE;AACjC,YAAA,OAAO,IAAI;QACZ;AACA,QAAA,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAChC,YAAA,OAAO,IAAI;QACZ;AACA,QAAA,OAAO,KAAK;IACb;IAcO,OAAO,GAAA;QACb,CAAC,GAAG,IAAI,CAAC,wBAAwB,EAAE,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,6BAA6B,CAAC,CAAC;;QAE9H,UAAU,CAAC,MAAK;AACf,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBAC1B,IAAI,CAAC,aAAa,EAAE;YACrB;AACA,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACrB,QAAA,CAAC,CAAC;IACH;IAEA,OAAO,GAAA;AACN,QAAA,MAAM,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,6BAA6B,CAAC;AACrG,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,2BAA2B,CAAC;QACzF,IAAI,UAAU,CAAC,uBAAuB,CAAC,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE;YACrE,MAAM,WAAW,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;YAC/D,MAAM,OAAO,GAAG,QAAQ;YACxB,uBAAuB,CAAC,KAAK,CAAC,IAAI,GAAG,QAAQ,WAAW,CAAA,KAAA,EAAQ,OAAO,CAAA,CAAA,CAAG;QAC3E;AAAO,aAAA,IAAI,UAAU,CAAC,uBAAuB,CAAC,EAAE;AAC/C,YAAA,uBAAuB,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK;QAC3C;IACD;IAEQ,iBAAiB,GAAA;;QAExB,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;;QAGzC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC9B,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC;QAC1B,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;QAC3B,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QAChC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC;;AAG1B,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;;QAG9B,MAAM,cAAc,GAAG,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW;;AAGxD,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AAE9B,QAAA,OAAO,cAAc;IACtB;IAEA,WAAW,GAAA;QACV,KAAK,CAAC,WAAW,EAAE;AACnB,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC;IACnG;AA3UY,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,2IAwClB,mBAAmB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAxChB,eAAe,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EAHb,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,uEA8B3E,gCAAgC,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAS,WAAW,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7EnE,4wEA8DA,EAAA,MAAA,EAAA,CAAA,8wbAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,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,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,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,YAAA,EAAA,aAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,QAAA,EAAA,YAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDZa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,aAGhB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,eAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,cAC1E,KAAK,EAAA,QAAA,EAAA,4wEAAA,EAAA,MAAA,EAAA,CAAA,8wbAAA,CAAA,EAAA;;0BAwClB;;0BAAY;;0BACZ;;0BAAY;;0BACZ,MAAM;2BAAC,mBAAmB;;0BAAG;;sBAvC9B;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA,SAAS;uBAAC,UAAU;;sBACpB,SAAS;uBAAC,SAAS;;sBACnB,SAAS;uBAAC,aAAa;;sBACvB,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,gCAAgC,EAAE,EAAC,IAAI,EAAE,WAAW,EAAC;;;MErEvD,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,0HCRlC,kIAIA,EAAA,MAAA,EAAA,CAAA,qKAAA,CAAA,EAAA,CAAA,CAAA;;4FDIa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,cAGjB,KAAK,EAAA,QAAA,EAAA,kIAAA,EAAA,MAAA,EAAA,CAAA,qKAAA,CAAA,EAAA;;sBAGnB;;sBACA;;;AEsBI,MAAO,sBACZ,SAAQ,iBAA6B,CAAA;AAYrC,IAAA,WAAA,CAC+B,MAA4B,EAC5B,gBAAkC,EACxD,MAAc,EAAA;AAEtB,QAAA,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC;QAJD,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QACtC,IAAA,CAAA,MAAM,GAAN,MAAM;QAXN,IAAA,CAAA,gBAAgB,GAAgB,IAAI;QAMrC,IAAA,CAAA,cAAc,GAAG,IAAI;AAmCrB,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,EAAE,KAAI;YAC3B,EAAE,CAAC,cAAc,EAAE;AACpB,QAAA,CAAC;AAEO,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,EAAE,KAAI;AAC5B,YAAA,IAAI,EAAE,CAAC,OAAO,GAAG,EAAE,EAAE;AACpB,gBAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACpB;iBAAO,IAAI,MAAM,CAAC,WAAW,GAAG,EAAE,CAAC,OAAO,GAAG,EAAE,EAAE;AAChD,gBAAA,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YACrB;iBAAO;gBACN,IAAI,CAAC,aAAa,EAAE;YACrB;AACA,YAAA,EAAE,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM;AACnC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAM,EAAE,CAAC,MAAsB,CAAC;AAC7G,YAAA,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;gBACvB;YACD;AACA,YAAA,IAAI,CAAC,mBAAmB,GAAG,WAAW;YACtC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAI;AACtC,gBAAA,IAAI,IAAI,CAAC,eAAe,KAAK,CAAC,EAAE;oBAE/B,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACpD,wBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACnD,4BAAA,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE;AAC9B,gCAAA,OAAO,KAAK;4BACb;AACA,4BAAA,OAAO,CAAC,GAAG,IAAI,CAAC,mBAAmB,GAAG,CAAC;wBACxC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAI;4BACzB,OAAO,GAAG,GAAG,GAAG,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,MAAM;wBAC9D,CAAC,EAAE,CAAC,CAAC;AACL,wBAAA,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,WAAA,EAAc,CAAC,YAAY,KAAK;oBACnG;yBAEK,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACzD,wBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACnD,4BAAA,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE;AAC9B,gCAAA,OAAO,KAAK;4BACb;AACA,4BAAA,OAAO,CAAC,IAAI,IAAI,CAAC,mBAAmB;wBACrC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAI;4BACzB,OAAO,GAAG,GAAG,GAAG,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,MAAM;wBAC9D,CAAC,EAAE,CAAC,CAAC;AACL,wBAAA,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,WAAA,EAAc,YAAY,KAAK;oBAClG;yBAEK;AACJ,wBAAA,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,WAAA,EAAc,CAAC,KAAK;oBACvF;oBAEA;gBACD;gBAEA,MAAM,4BAA4B,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;AAC5H,gBAAA,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;AAC5B,oBAAA,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,WAAA,EAAc,4BAA4B,KAAK;gBAClH;AACK,qBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;AAC/B,oBAAA,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,WAAA,EAAc,CAAC,4BAA4B,KAAK;gBACnH;qBACK;AACJ,oBAAA,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,gBAAgB;gBACnF;AACD,YAAA,CAAC,CAAC;AAEF,YAAA,IAAI,CAAC,mBAAmB,GAAG,WAAW;AACvC,QAAA,CAAC;AAEO,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,EAAE,KAAI;AAC5B,YAAA,EAAE,CAAC,YAAY,CAAC,aAAa,GAAG,MAAM;AACtC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACpB,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC;AAC/F,gBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe;AAChD,YAAA,CAAC,CAAC;AACH,QAAA,CAAC;AAEO,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,EAAE,KAAI;YAC1B,IAAI,CAAC,aAAa,EAAE;YACpB,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC;AAC1D,YAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;AAClF,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACpB,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACtB,qBAAA,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,eAAe;qBAC3C,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAI;AACvB,oBAAA,IAAI,CAAC,KAAK,IAAI,CAAC,mBAAmB,EAAE;wBACnC,OAAO,CAAC,GAAG,GAAG,EAAE,YAAY,EAAE,GAAG,CAAC;oBACnC;AACA,oBAAA,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC;gBACrB,CAAC,EAAE,EAAE,CAAC;gBACN,IAAI,kBAAkB,EAAE;oBACvB,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC;gBACrD;gBACA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAI;AACtC,oBAAA,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,gBAAgB;AACnF,gBAAA,CAAC,CAAC;AACF,gBAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;AAC7B,gBAAA,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;AACzB,gBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC;AAC7C,YAAA,CAAC,CAAC;AACH,QAAA,CAAC;IA7HD;IAEA,eAAe,GAAA;QACd,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;YACrC,IAAI,CAAC,oBAAoB,EAAE;AAC5B,QAAA,CAAC,CAAC;IACH;IAEQ,oBAAoB,GAAA;AAC3B,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAG;AAC1B,YAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;gBAClC,CAAC,CAAC,aAAa,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC;gBAClE,CAAC,CAAC,aAAa,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC;gBAChE,CAAC,CAAC,aAAa,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC;gBAClE,CAAC,CAAC,aAAa,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC;gBAE9D,CAAC,CAAC,aAAa,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC;gBAC/D,CAAC,CAAC,aAAa,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC;gBAC7D,CAAC,CAAC,aAAa,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC;gBAC/D,CAAC,CAAC,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC;AAE3D,gBAAA,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,gBAAgB;AAC5E,YAAA,CAAC,CAAC;AACH,QAAA,CAAC,CAAC;IACH;AAsGA,IAAA,eAAe,CAAC,KAAa,EAAA;QAC5B,OAAO,IAAI,CAAC,eAAe,GAAG,KAAK,IAAI,IAAI,CAAC,mBAAmB,IAAI,KAAK;IACzE;AAEA,IAAA,aAAa,CAAC,KAAa,EAAA;QAC1B,OAAO,IAAI,CAAC,eAAe,GAAG,KAAK,IAAI,IAAI,CAAC,mBAAmB,IAAI,KAAK;IACzE;AAEQ,IAAA,UAAU,CAAC,YAAoB,EAAA;QACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;AACrC,YAAA,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,MAAK;gBACtC,MAAM,CAAC,MAAM,CAAC;AACb,oBAAA,GAAG,EAAE,QAAQ,CAAC,gBAAgB,CAAC,SAAS,GAAG,YAAY;AACvD,oBAAA,QAAQ,EAAE,QAAQ;AAClB,iBAAA,CAAC;gBACF,IAAI,QAAQ,CAAC,gBAAgB,CAAC,SAAS,IAAI,GAAG,EAAE;oBAC/C,IAAI,CAAC,aAAa,EAAE;gBACrB;YACD,CAAC,EAAE,GAAG,CAAC;QACR;IACD;IAEQ,aAAa,GAAA;AACpB,QAAA,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC;AAClC,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;IAC3B;+GA3KY,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,oBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,SAAA,EATpB;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,sBAAsB;AACnC,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;SACJ,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAOU,WAAW,iKCpC1B,u3BAgCA,EAAA,MAAA,EAAA,CAAA,wiBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDAa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAblC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAAA,SAAA,EAGxB;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAA,sBAAwB;AACnC,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACJ,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,u3BAAA,EAAA,MAAA,EAAA,CAAA,wiBAAA,CAAA,EAAA;;0BAgBlB;;0BAAQ;;0BACR;;0BAAQ;;sBAXT,YAAY;uBAAC,WAAW;;sBACxB;;sBAEA,YAAY;uBAAC,UAAU;;;AE5BnB,MAAO,kBAAmB,SAAQ,iBAAyB,CAAA;AAPjE,IAAA,WAAA,GAAA;;QAQS,IAAA,CAAA,iBAAiB,GAAG,KAAK;QAGxB,IAAA,CAAA,IAAI,GAAwB,MAAM;QAClC,IAAA,CAAA,SAAS,GAAG,KAAK;QAEjB,IAAA,CAAA,aAAa,GAAG,IAAI;QACpB,IAAA,CAAA,cAAc,GAAG,IAAI;QAErB,IAAA,CAAA,IAAI,GAAuB,QAAQ;AAClC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAQ;AAY3C,IAAA;IAVO,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,iBAAiB;IACjD;IAEO,OAAO,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;AACzB,YAAA,OAAO,MAAM;QACd;QACA,OAAO,IAAI,CAAC,iBAAiB,GAAG,MAAM,GAAG,UAAU;IACpD;+GAtBY,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,oTAHhB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,iDCR7F,u2CAgCA,EAAA,MAAA,EAAA,CAAA,mkDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,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,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,CAAA,EAAA,CAAA,CAAA;;4FDrBa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,aAGpB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,kBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,cAC7E,KAAK,EAAA,QAAA,EAAA,u2CAAA,EAAA,MAAA,EAAA,CAAA,mkDAAA,CAAA,EAAA;;sBAKnB;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;AEXI,MAAO,eAAgB,SAAQ,iBAA0B,CAAA;AAP/D,IAAA,WAAA,GAAA;;QAQU,IAAA,CAAA,qBAAqB,GAAG,IAAI;AACrC,IAAA;+GAFY,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,2HAHb,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,iDCR1F,2fAWA,EAAA,MAAA,EAAA,CAAA,qzDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,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,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,CAAA,EAAA,CAAA,CAAA;;4FDAa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,aAGhB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,eAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,cAC1E,KAAK,EAAA,QAAA,EAAA,2fAAA,EAAA,MAAA,EAAA,CAAA,qzDAAA,CAAA,EAAA;;sBAGnB;;;MEFW,oBAAoB,CAAA;AAGhC,IAAA,WAAA,CAAwC,MAA4B,EAAA;QAA5B,IAAA,CAAA,MAAM,GAAN,MAAM;IAAyB;IAEvE,QAAQ,GAAA;;;;;QAKP,UAAU,CAAC,MAAK;YACf,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;AAC7C,QAAA,CAAC,CAAC;IACH;+GAbY,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,oBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,uLCVjC,0EAGA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA,CAAA;;4FDOa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAGhB,KAAK,EAAA,QAAA,EAAA,0EAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;0BAKP;;0BAAQ;;sBAFpB,SAAS;uBAAC,YAAY;;;MEDX,kBAAkB,CAAA;AAI9B,IAAA,WAAA,CAAwC,MAA4B,EAAA;QAA5B,IAAA,CAAA,MAAM,GAAN,MAAM;IAAyB;IAEvE,QAAQ,GAAA;;;;;QAKP,UAAU,CAAC,MAAK;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC;AAC9D,QAAA,CAAC,CAAC;IACH;IAEO,oBAAoB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3D;+GAlBY,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,oBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGhB,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb1B,mOAQA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDEa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,cAGd,KAAK,EAAA,QAAA,EAAA,mOAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;0BAMP;;0BAAQ;;sBAHpB;;sBACA,SAAS;uBAAC,YAAY;;sBACtB,YAAY;uBAAC,WAAW;;;AEVpB,MAAO,mBAAoB,SAAQ,KAAK,CAAA;IAI7C,WAAA,CAAY,IAAY,EAAE,OAAe,EAAA;QACxC,KAAK,CAAC,OAAO,CAAC;QAJC,IAAA,CAAA,IAAI,GAAG,qBAAqB;AAK3C,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;IACjB;AACA;MAMY,sBAAsB,GAAG,IAAI,cAAc,CAAmB,wBAAwB;AAG5F,MAAM,mBAAmB,GAAqB,CAAC,KAAU,KAAI;AACnE,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,KAAK,EAAE,mBAAmB,CAAC,EAAE;;AAElE,QAAA,OAAO,KAAK;IACb;AAAO,SAAA,IAAI,KAAK,YAAY,mBAAmB,EAAE;;QAEhD,OAAO,CAAC,KAAK,CAAC;IACf;AAEA,IAAA,MAAM,KAAK;AACZ;;MCZa,yBAAyB,CAAA;AANtC,IAAA,WAAA,GAAA;QAOS,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,aAAa,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;AACpD,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,sBAAsB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI,mBAAmB;QACtF,IAAA,CAAA,UAAU,GAAwB,QAAQ;QAEjC,IAAA,CAAA,SAAS,GAAG,KAAK;QACgB,IAAA,CAAA,SAAS,GAAG,KAAK;QAClD,IAAA,CAAA,OAAO,GAAwB,aAAa;QAE5C,IAAA,CAAA,MAAM,GAAuB,MAAM,OAAO,CAAC,OAAO,EAAE;QACpD,IAAA,CAAA,KAAK,GAAuB,MAAM,OAAO,CAAC,OAAO,EAAE;QACnD,IAAA,CAAA,QAAQ,GAAY,KAAK;AAUjC,QAAA,IAAA,CAAA,kBAAkB,GAAG,CAAC,CAAsB,KAAI;YACvD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,EAAC,CAAC;AACnF,QAAA,CAAC;AAoBD,IAAA;IA9BA,QAAQ,GAAA;QACP,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,KAAK,YAAY,EAAE;AACnD,YAAA,IAAI,CAAC,UAAU,GAAG,QAAQ;QAC3B;aAAO;AACN,YAAA,IAAI,CAAC,UAAU,GAAG,QAAQ;QAC3B;IACD;AAMA,IAAA,MAAM,UAAU,GAAA;AACf,QAAA,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC;AAErC,QAAA,IAAI;AACH,YAAA,MAAM,CAAC,wBAAwB,EAAE,cAAc,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;AACpF,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,MAAM,IAAI,CAAC,cAAc,CAAC,wBAAwB,EAAE,cAAc;iBAChE,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACxC;QAAE,OAAO,CAAC,EAAE;AACX,YAAA,IAAI,CAAC,KAAK,mBAAmB,EAAE;AAC9B,gBAAA,OAAO;YACR;AACA,YAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC;YACpD;QACD;AAEA,QAAA,MAAM,IAAI,CAAC,KAAK,EAAE;IACnB;+GA1CY,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,6TClBtC,sTAWA,EAAA,MAAA,EAAA,CAAA,oFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,eAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDOa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,cAGtB,KAAK,EAAA,QAAA,EAAA,sTAAA,EAAA,MAAA,EAAA,CAAA,oFAAA,CAAA,EAAA;;sBAOnB;;sBACA;;sBAAS,WAAW;uBAAC,kBAAkB;;sBACvC;;sBACA;;sBACA;;sBACA;;sBACA;;;AElBI,MAAO,yBAA6B,SAAQ,iBAA+B,CAAA;IAGhF,WAAA,CAC+B,MAA4B,EAC5B,gBAAkC,EAAA;AAEhE,QAAA,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC;QAHD,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAJtC,IAAA,CAAA,QAAQ,GAAG,KAAK;IAOzB;AAEA,IAAA,UAAU,CAAC,KAAmB,EAAA;;AAE7B,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC3C,MAAM,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;AAC/C,YAAA,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC;AAC9B,YAAA,KAAK,CAAC,sBAAsB,CAAC,YAAY,CAAC;QAC3C;AAAO,aAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAClD,YAAA,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC;AAC7B,YAAA,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC;AAC9B,YAAA,KAAK,CAAC,sBAAsB,CAAC,YAAY,CAAC;QAC3C;aAAO;AACN,YAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;QACxB;IACD;AAEA,IAAA,sBAAsB,CAAC,KAAmB,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC3C,YAAA,KAAK,CAAC,sBAAsB,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACzD;AAAO,aAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAClD,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACvC;aAAO;AACN,YAAA,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC;QACpC;IACD;+GAjCY,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,oBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,kIAHxB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;4FAGH,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,UAAU,EAAE;AACf,iBAAA;;0BAKE;;0BAAQ;;0BACR;;0BAAQ;;sBAJT;;;ACVK,MAAM,cAAc,GAAG;AAExB,SAAU,aAAa,CAAC,OAAwB,EAAA;AACrD,IAAA,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,KAAK,cAAc;AAChD,IAAA,OAAO,OAAO,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,IAAI;AAChD;;MCoBa,gBAAgB,GAAG,IAAI,cAAc,CAAiB,uBAAuB;MAC7E,6BAA6B,GAAG,IAAI,cAAc,CAAM,gCAAgC;MACxF,kBAAkB,GAAG,IAAI,cAAc,CAAM,0BAA0B;AAE9E,SAAU,qBAAqB,CAAC,SAAkC,EAAE,WAA4B,EAAA;IACrG,OAAO,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,uBAAuB;AAClE;AAgBM,MAAO,uBAAwB,SAAQ,yBAAuD,CAAA;AAmCnG,IAAA,WAAA,CAC+B,MAA4B,EAC5B,gBAAkC,EACL,YAAiB,EAC5B,gBAAqB,EAC7D,WAA8B,EAC9B,KAAiB,EACjB,GAAsB,EACtB,MAAc,EAAA;AAEtB,QAAA,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC;QATD,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QACa,IAAA,CAAA,YAAY,GAAZ,YAAY;QACvB,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QACxD,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,MAAM,GAAN,MAAM;QA1CC,IAAA,CAAA,OAAO,GAAS,SAAS;QACzB,IAAA,CAAA,OAAO,GAAS,SAAS;QACzB,IAAA,CAAA,aAAa,GAAG,KAAK;QACrB,IAAA,CAAA,MAAM,GAAG,YAAY;QAErB,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,aAAa,GAAG,IAAI;QACpB,IAAA,CAAA,QAAQ,GAAW,IAAI;QACvB,IAAA,CAAA,UAAU,GAAW,IAAI;AACzB,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAC;QAM9C,IAAA,CAAA,gBAAgB,GAAS,IAAI;QAC7B,IAAA,CAAA,iBAAiB,GAAS,SAAS;QACnC,IAAA,CAAA,eAAe,GAAS,SAAS;QAQvB,IAAA,CAAA,aAAa,GAAgB,EAAE;QAEjC,IAAA,CAAA,WAAW,GAAG,KAAK;QACnB,IAAA,CAAA,YAAY,GAAG,KAAK;QACpB,IAAA,CAAA,cAAc,GAAG,KAAK;QACpB,IAAA,CAAA,eAAe,GAAG,KAAK;QACvB,IAAA,CAAA,aAAa,GAAkB,EAAE;QACjC,IAAA,CAAA,MAAM,GAAG,MAAM;AA8NzB,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,CAAO,KAAI;AACxB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAClB,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,UAAU,GAAG,EAAE;YACzE;AACA,YAAA,OAAO,EAAE;AACV,QAAA,CAAC;AACD,QAAA,IAAA,CAAA,WAAW,GAAsB,CAAC,CAAC,KAAI;AACtC,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AAClB,gBAAA,OAAO,KAAK;YACb;AACA,YAAA,OAAO,IAAI;AACZ,QAAA,CAAC;QA0FD,IAAA,CAAA,oBAAoB,GAAG,MAAK;YAC3B,kBAAkB,CAAC,MAAK;AACvB,gBAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;oBAClC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAG,IAAI,CAAC,2BAA2B,CAAC;AAC1E,gBAAA,CAAC,CAAC;AACH,YAAA,CAAC,CAAC;AAEF,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,aAAa,CAAC,sBAAsB,CAAC;AAC9F,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,aAAa,CAAC,yBAAyB,CAAC;AACnG,YAAA,MAAM,gBAAgB,GAAG,UAAU,EAAE,aAAa;AAClD,YAAA,MAAM,kBAAkB,GAAG,YAAY,EAAE,aAAa;YACtD,IAAI,gBAAgB,EAAE;gBACrB,gBAAgB,CAAC,SAAS,GAAG,UAAU,EAAE,SAAS,GAAG,GAAG;YACzD;YACA,IAAI,kBAAkB,EAAE;gBACvB,kBAAkB,CAAC,SAAS,GAAG,YAAY,EAAE,SAAS,GAAG,GAAG;YAC7D;AACD,QAAA,CAAC;AAED,QAAA,IAAA,CAAA,2BAA2B,GAAG,CAAC,KAAiB,KAAI;AACnD,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACzB,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,qBAAqB,CAAC;gBAC9E,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACrC,oBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACpB,wBAAA,IAAI,CAAC,eAAe,GAAG,KAAK;wBAC5B,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAG,IAAI,CAAC,2BAA2B,CAAC;AAC7E,oBAAA,CAAC,CAAC;gBACH;YACD;AACD,QAAA,CAAC;AAnVA,QAAA,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE;AACjC,YAAA,WAAW,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;QAC1C;IACD;IAEA,QAAQ,GAAA;QACP,KAAK,CAAC,QAAQ,EAAE;AAChB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE;AACrB,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;QAC3B;AACA,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ;AAC1B,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU;AAC9B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,EAAE,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpF;IAIA,eAAe,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;;YAElB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK;QACrD;IACD;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AACjC,QAAA,IAAI,OAAO,CAAC,OAAO,EAAE;YACpB,IAAI,CAAC,uBAAuB,EAAE;QAC/B;AACA,QAAA,IAAI,OAAO,CAAC,OAAO,EAAE;YACpB,IAAI,CAAC,uBAAuB,EAAE;QAC/B;IACD;AAEA,IAAA,UAAU,CAAC,OAAa,EAAA;QACvB,IAAI,OAAO,EAAE;YACZ,IAAI,CAAC,iBAAiB,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC;AAC1C,YAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5C;aAAO;AACN,YAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS;QACnC;IACD;AAEA,IAAA,UAAU,CAAC,OAAa,EAAA;QACvB,IAAI,OAAO,EAAE;YACZ,IAAI,CAAC,eAAe,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC;AACxC,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;QAC/C;aAAO;AACN,YAAA,IAAI,CAAC,eAAe,GAAG,SAAS;QACjC;IACD;IAEA,iBAAiB,GAAA;QAChB,OAAO,yBAAyB,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,KAAKI,MAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM;IAC9F;;;;AAKA,IAAA,WAAW,CAAC,KAAU,EAAA;AACrB,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK;AACxB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,MAAK;AAChC,YAAA,CAAC;AAED,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE;gBACvD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC3E;iBAAO;gBACN,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC;YACnD;;;;;;AAMA,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AACxB,YAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI;AACtC,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB;YACzC,IAAI,CAAC,iBAAiB,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC;AACpC,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AACxB,YAAA,IAAI,CAAC,iBAAiB,GAAG,UAAU;;AAGnC,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE;gBACvB,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,EAAE;oBACnC,IAAI,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3F,wBAAA,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC;oBAC5B;gBACD;gBACA,IAAI,CAAC,uBAAuB,EAAE;YAC/B;AAEA,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,CAAC;YAC/C,UAAU,CAAC,MAAK;gBACf,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB;AACrD,YAAA,CAAC,CAAC;QACH;aAAO;YACN,IAAI,CAAC,aAAa,EAAE;QACrB;IACD;IAEA,uBAAuB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACvB,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,EAAE;AACnC,gBAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,gBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD;iBAAO;AACN,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7B,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;YAC9B;QACD;aAAO;AACN,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;QAC9B;IACD;IAEA,aAAa,GAAA;QACZ,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK;QAChE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACtC,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;;AAG1C,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACxB,YAAA,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,EAAE;AAC5C,gBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;gBACjC;YACD;AACA,YAAA,IAAI,IAAI,CAAC,0BAA0B,YAAY,IAAI,EAAE;AACpD,gBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,0BAA0B,CAAC;gBAC5D;YACD;QACD;;QAEA,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACxH,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;YACjC;QACD;;AAEA,QAAA,IACC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC,YAAA,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;AAC5B,YAAA,WAAW,IAAI,CAAC;AAChB,YAAA,WAAW,IAAI,EAAE;AACjB,YAAA,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;AAClC,YAAA,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC9B,YAAA,aAAa,IAAI,CAAC;AAClB,YAAA,aAAa,IAAI,EAAE;AACnB,YAAA,IAAI,CAAC,0BAA0B,YAAY,IAAI,EAC9C;AACD,YAAA,MAAM,gBAAgB,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACxF,YAAA,MAAM,kBAAkB,GAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAC/E,YAAA,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC;YAC/C;QACD;AACA,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC/B,YAAA,IAAI,IAAI,CAAC,0BAA0B,YAAY,IAAI,EAAE;AACpD,gBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,0BAA0B,CAAC;gBAC5D;YACD;QACD;;AAEA,QAAA,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC;IAC5C;AAEA,IAAA,UAAU,CAAC,KAAiD,EAAA;AAC3D,QAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;AACvB,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACzB,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;YAC1B,IAAI,CAAC,uBAAuB,EAAE;AAC9B,YAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI;AACtC,YAAA,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE;gBAC/B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YAC9C;QACD;aAAO;AACN,YAAA,IAAI,CAAC,0BAA0B,GAAG,KAAK,KAAK,cAAc,GAAG,IAAI,GAAG,KAAK;AACzE,YAAA,IAAI,KAAK,YAAY,IAAI,EAAE;gBAC1B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACrC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;gBACzC,IAAI,CAAC,UAAU,EAAE;AACjB,gBAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;YAC9B;iBAAO;gBACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE;gBAChC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE;AACpC,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,gBAAA,IAAI,CAAC,aAAa,GAAG,EAAE;YACxB;QACD;IACD;;;;IAKA,kBAAkB,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;;AAE9B,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;QAC3B;QACA,IAAI,CAAC,aAAa,EAAE;IACrB;IAEA,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;AACjC,QAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI;QACtC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI;AAC9C,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AACjB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;IACxB;IAgBA,UAAU,GAAA;QACT,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACnE,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK;QAC9B;QACA,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACvE,IAAI,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO;QAClC;IACD;IAEA,SAAS,GAAA;AACR,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACvB,IAAI,CAAC,mBAAmB,EAAE;IAC3B;IAEA,UAAU,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QACxB,IAAI,CAAC,mBAAmB,EAAE;IAC3B;IAEA,YAAY,GAAA;AACX,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;QAC1B,IAAI,CAAC,mBAAmB,EAAE;IAC3B;IAEA,mBAAmB,GAAA;QAClB,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,MAAM,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;YAChH,IAAI,CAAC,KAAK,EAAE;QACb;IACD;AAGA,IAAA,qBAAqB,CAAC,GAAW,EAAA;QAChC,QAAQ,GAAG;AACV,YAAA,KAAK,aAAa;AACjB,gBAAA,OAAO,MAAM,aAAa;AAC3B,YAAA,KAAK,YAAY;AAChB,gBAAA,OAAO,MAAM,eAAe;AAC7B,YAAA,KAAK,cAAc;gBAClB,OAAO,CAAC,CAAO,KAAK,CAAC,CAAC,kBAAkB,EAAE;AAC3C,YAAA,KAAK,cAAc;gBAClB,OAAO,CAAC,MAAM,KAAK,CAAA,EAAG,MAAM,gBAAgB;AAC7C,YAAA,KAAK,iBAAiB;AACrB,gBAAA,OAAO,CAAC,CAAO,KAAK,CAAA,IAAA,EAAOA,MAAU,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE;;IAErD;AAEA,IAAA,cAAc,CAAC,GAAW,EAAE,MAAA,GAAc,IAAI,EAAA;QAC7C,IAAI,GAAG,KAAK,aAAa,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC3C,YAAA,OAAO,EAAE;QACV;QACA,IAAI,GAAG,KAAK,aAAa,IAAI,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACpE,OAAO,IAAI,CAAC,WAAW;QACxB;QACA,OAAO,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACrF;AAEA,IAAA,OAAO,CAAC,CAAS,EAAA;QAChB,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAC7C;AAEA,IAAA,OAAO,CAAC,IAAY,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI;QACjD,IAAI,CAAC,aAAa,EAAE;IACrB;AAEA,IAAA,SAAS,CAAC,MAAc,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,MAAM;QACzD,IAAI,CAAC,aAAa,EAAE;IACrB;IAEA,YAAY,GAAA;QACX,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,UAAU,EAAE;IAClB;IAEA,cAAc,GAAA;QACb,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,YAAY,EAAE;IACpB;IAEA,QAAQ,CAAC,OAAe,EAAE,WAAmB,EAAA;AAC5C,QAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAE;AACvC,YAAA,OAAO,KAAK;QACb;AACA,QAAA,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,OAAO;IACvC;IAiCA,OAAO,GAAA;AACN,QAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AAChB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;IAC1B;+GAtYY,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,oBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAsC1B,6BAA6B,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAC7B,kBAAkB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAvCf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,eAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,EAAA,SAAA,EAVrB;YACP,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,uBAAuB,EAAE,KAAK,EAAE,IAAI,EAAE;AACjF,YAAA;AACI,gBAAA,OAAO,EAAE,gBAAgB;gBACzB,IAAI,EAAE,CAAC,uBAAuB,EAAE,CAAC,IAAI,QAAQ,EAAE,EAAE,gBAAgB,CAAC,CAAC;AACnE,gBAAA,UAAU,EAAE,qBAAqB;AACpC,aAAA;AACJ,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9CL,qwHA4EA,EAAA,MAAA,EAAA,CAAA,qnOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,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,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,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,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,KAAA,EAAA,KAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FD3Ba,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAdnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAAA,SAAA,EAG1B;wBACP,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,yBAAyB,EAAE,KAAK,EAAE,IAAI,EAAE;AACjF,wBAAA;AACI,4BAAA,OAAO,EAAE,gBAAgB;4BACzB,IAAI,EAAE,0BAA0B,CAAC,IAAI,QAAQ,EAAE,EAAE,gBAAgB,CAAC,CAAC;AACnE,4BAAA,UAAU,EAAE,qBAAqB;AACpC,yBAAA;AACJ,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,qwHAAA,EAAA,MAAA,EAAA,CAAA,qnOAAA,CAAA,EAAA;;0BAsClB;;0BAAQ;;0BACR;;0BAAQ;;0BACR,MAAM;2BAAC,6BAA6B;;0BAAG;;0BACvC,MAAM;2BAAC,kBAAkB;;0BAAG;;sBAtC7B;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA,SAAS;uBAAC,aAAa;;sBACvB,SAAS;uBAAC,QAAQ;;sBAClB,SAAS;uBAAC,oBAAoB;;;MEvDnB,wBAAwB,GAAG,IAAI,cAAc,CAAM,4BAA4B;AAStF,MAAO,mBAAoB,SAAQ,yBAAyD,CAAA;AAUjG,IAAA,WAAA,CAC+B,MAA4B,EAC5B,gBAAkC,EACV,YAAiB,EAAA;AAEvE,QAAA,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC;QAJD,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QACQ,IAAA,CAAA,YAAY,GAAZ,YAAY;QAZnD,IAAA,CAAA,OAAO,GAAS,SAAS;QACzB,IAAA,CAAA,OAAO,GAAS,SAAS;QACzB,IAAA,CAAA,aAAa,GAAG,KAAK;QACrB,IAAA,CAAA,MAAM,GAAG,YAAY;QAErB,IAAA,CAAA,SAAS,GAAG,KAAK;IAUjC;AAEA,IAAA,UAAU,CAAC,KAAqD,EAAA;AAC/D,QAAA,IAAI,KAAK,KAAK,cAAc,EAAE;AAC7B,YAAA,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC;QACjC;AAAO,aAAA,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI;AAC1C,YAAA,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC;QAC5C;aAAO;AACN,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACzB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;YACtE;iBAAO;AACN,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC;YACxD;AACA,YAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;QACxB;IACD;AAEA,IAAA,WAAW,CAAC,KAAiD,EAAA;AAC5D,QAAA,IAAI,KAAK,KAAK,cAAc,EAAE;AAC7B,YAAA,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC;QAC5C;AAAO,aAAA,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI;AAC1C,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC;QACvD;aAAO;AACN,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACzB,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAKC,MAAU,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;YAC3E;iBAAO;gBACN,IAAI,CAAC,sBAAsB,CAACA,MAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;YAC7D;QACD;IACD;AAEA,IAAA,qBAAqB,CAAC,GAAW,EAAA;QAChC,QAAQ,GAAG;AACV,YAAA,KAAK,aAAa;AACjB,gBAAA,OAAO,MAAM,aAAa;;IAE7B;AAEA,IAAA,cAAc,CAAC,GAAW,EAAE,MAAA,GAAc,IAAI,EAAA;QAC7C,IAAI,GAAG,KAAK,aAAa,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC3C,YAAA,OAAO,EAAE;QACV;QACA,IAAI,GAAG,KAAK,aAAa,IAAI,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACpE,OAAO,IAAI,CAAC,WAAW;QACxB;QACA,OAAO,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACrF;AAjEY,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,2IAatB,wBAAwB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAbrB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,8NAHjB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,iDCd9F,6oBAmBA,EAAA,MAAA,EAAA,CAAA,4WAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,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,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,EAAAM,uBAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,QAAA,EAAA,aAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDFa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,aAGrB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,mBAAqB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,cAC9E,KAAK,EAAA,QAAA,EAAA,6oBAAA,EAAA,MAAA,EAAA,CAAA,4WAAA,CAAA,EAAA;;0BAalB;;0BAAQ;;0BACR;;0BAAQ;;0BACR,MAAM;2BAAC,wBAAwB;;0BAAG;;sBAZnC;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;AEvBF;MAca,cAAc,CAAA;+GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAJhB,mBAAmB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,eAAe,CAAA,EAAA,OAAA,EAAA,CAC7F,mBAAmB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,eAAe,CAAA,EAAA,CAAA,CAAA;gHAG3F,cAAc,EAAA,SAAA,EAFf,CAAC,mBAAmB,CAAC,YAFtB,mBAAmB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,eAAe,EAC7F,mBAAmB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,eAAe,CAAA,EAAA,CAAA,CAAA;;4FAG3F,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,OAAO,EAAE,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,eAAe,CAAC;oBACxG,OAAO,EAAE,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,eAAe,CAAC;oBACxG,SAAS,EAAE,CAAC,mBAAmB,CAAC;AAChC,iBAAA;;;ACAK,MAAO,kBAAmB,SAAQ,yBAA+B,CAAA;AAPvE,IAAA,WAAA,GAAA;;QAQU,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,oBAAoB,GAAG,KAAK;QAC5B,IAAA,CAAA,iBAAiB,GAAG,KAAK;QAEzB,IAAA,CAAA,WAAW,GAAG,KAAK;AAyC5B,IAAA;AAtCO,IAAA,QAAQ,CAAC,KAAe,EAAA;QAC9B,MAAM,MAAM,GAAG,EAAE;AACjB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B;AACA,QAAA,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC;;QAEnC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI;IAC/C;IAEO,YAAY,GAAA;QAClB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACnC,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACnD;AAAO,aAAA,IAAI,IAAI,CAAC,UAAU,YAAY,IAAI,EAAE;AAC3C,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI;QAC5B;AACA,QAAA,OAAO,IAAI;IACZ;IAEO,qBAAqB,GAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC9B,YAAA,OAAO,KAAK;QACb;AACA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACzC,gBAAA,OAAO,IAAI;YACZ;AACA,YAAA,OAAO,KAAK;QACb;AACA,QAAA,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAChC,YAAA,OAAO,IAAI;QACZ;AACA,QAAA,OAAO,KAAK;IACb;IAEO,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,EAAE;IAC1C;+GA9CY,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,2QAHhB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,mKCV7F,8tDA8DA,EAAA,MAAA,EAAA,CAAA,4rBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,eAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDjDa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,aAGpB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,kBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,cAC7E,KAAK,EAAA,QAAA,EAAA,8tDAAA,EAAA,MAAA,EAAA,CAAA,4rBAAA,CAAA,EAAA;;sBAGnB;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA,SAAS;uBAAC,gBAAgB;;;AERtB,MAAO,6BAAiC,SAAQ,iBAAkC,CAAA;AAPxF,IAAA,WAAA,GAAA;;AAUC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC;AAgChB,IAAA;AA9BA,IAAA,UAAU,CAAC,KAAsB,EAAA;AAChC,QAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;QACrB,UAAU,CAAC,MAAK;AACf,YAAA,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE;AAC/B,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5C;iBAAO;AACN,gBAAA,IAAI,CAAC,KAAK,GAAG,EAAE;YAChB;AACA,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACrB,QAAA,CAAC,CAAC;IACH;AAEO,IAAA,iBAAiB,CAAC,KAAwB,EAAA;AAChD,QAAA,MAAM,MAAM,GAAoB,qBAAqB,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAQ;AAC9G,QAAA,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC;AACnC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;QACrB,UAAU,CAAC,MAAK;AACf,YAAA,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;gBAChD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;AACxB,oBAAA,OAAO,KAAK;gBACb;AACA,gBAAA,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;AACzC,oBAAA,OAAO,KAAK;gBACb;AACA,gBAAA,OAAO,IAAI;AACZ,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACrB,QAAA,CAAC,CAAC;IACH;+GAlCY,6BAA6B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,+EAH3B,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,6BAA6B,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAKzF,WAAW,uECd1B,+bAeA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,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,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,EAAAM,sBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDHa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAPzC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,aAGhC,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,6BAA+B,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,cACxF,KAAK,EAAA,QAAA,EAAA,+bAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;sBAInB,YAAY;uBAAC,WAAW;;;AEZnB,MAAM,cAAc,GAAG,kBAAkB;AAE1C,SAAU,aAAa,CAAC,OAAwB,EAAA;AACrD,IAAA,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,KAAK,cAAc;AAChD,IAAA,OAAO,OAAO,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,IAAI;AAChD;;ACOM,MAAO,wBAAyB,SAAQ,iBAAiD,CAAA;AAP/F,IAAA,WAAA,GAAA;;AAWU,QAAA,IAAA,CAAA,YAAY,GAAkB,CAAC,MAAM,EAAE,KAAK,CAAC;QAE9C,IAAA,CAAA,YAAY,GAAG,KAAK;QACpB,IAAA,CAAA,cAAc,GAAG,KAAK;AA4E9B,IAAA;IA1EA,WAAW,GAAA;QACV,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,KAAK,GAAG,GAAG;QACjB;IACD;IAEA,aAAa,GAAA;QACZ,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACxC,YAAA,IAAI,CAAC,OAAO,GAAG,GAAG;QACnB;IACD;IAEA,UAAU,GAAA;QACT,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACnE,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK;QAC9B;QACA,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACvE,IAAI,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO;QAClC;IACD;AAEA,IAAA,UAAU,CAAC,KAAqC,EAAA;AAC/C,QAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC3B,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAe,GAAG,EAAE,CAAC,GAAG,EAAE;YAClD,IAAI,CAAC,OAAO,GAAG,KAAe,GAAG,EAAE,GAAG,EAAE;YACxC,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;QACxB;aAAO;AACN,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,YAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AACjB,YAAA,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC;QACjC;IACD;IAEA,aAAa,GAAA;QACZ,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACtC,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;;AAG1C,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AAC7E,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;YACjC;QACD;;AAEA,QAAA,IACC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;AAC5B,YAAA,WAAW,IAAI,CAAC;AAChB,YAAA,WAAW,IAAI,IAAI;AACnB,YAAA,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC9B,YAAA,aAAa,IAAI,CAAC;YAClB,aAAa,IAAI,EAAE,EAClB;YACD,IAAI,CAAC,sBAAsB,CAAC,WAAW,GAAG,EAAE,GAAG,aAAa,CAAC;YAC7D;QACD;;AAEA,QAAA,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC;IAC5C;IAEA,UAAU,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QACxB,IAAI,CAAC,mBAAmB,EAAE;IAC3B;IAEA,YAAY,GAAA;AACX,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;QAC1B,IAAI,CAAC,mBAAmB,EAAE;IAC3B;IAEA,mBAAmB,GAAA;QAClB,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE;YAC7C,IAAI,CAAC,KAAK,EAAE;QACb;IACD;+GAlFY,wBAAwB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,oHAHtB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,wBAAwB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,iDCXnG,6tBAQA,EAAA,MAAA,EAAA,CAAA,8lDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,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,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,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,CAAA,EAAA,CAAA,CAAA;;4FDMa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,aAG3B,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,wBAA0B,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,cACnF,KAAK,EAAA,QAAA,EAAA,6tBAAA,EAAA,MAAA,EAAA,CAAA,8lDAAA,CAAA,EAAA;;sBAMnB;;;IEdU;AAAZ,CAAA,UAAY,WAAW,EAAA;AACtB,IAAA,WAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,WAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACZ,CAAC,EAHW,WAAW,KAAX,WAAW,GAAA,EAAA,CAAA,CAAA;AAmBjB,MAAO,cAAe,SAAQ,iBAAyB,CAAA;AAP7D,IAAA,WAAA,GAAA;;AASU,QAAA,IAAA,CAAA,WAAW,GAAgB,WAAW,CAAC,GAAG;QAC1C,IAAA,CAAA,OAAO,GAAwC,SAAS;QACxD,IAAA,CAAA,IAAI,GAAwB,QAAQ;QACtC,IAAA,CAAA,WAAW,GAAG,WAAW;AAChC,IAAA;+GANY,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,4JAHZ,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,iDCpBzF,wiCAwBA,EAAA,MAAA,EAAA,CAAA,6gEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDDa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,aAGf,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,cAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,cACzE,KAAK,EAAA,QAAA,EAAA,wiCAAA,EAAA,MAAA,EAAA,CAAA,6gEAAA,CAAA,EAAA;;sBAGnB;;sBACA;;sBACA;;sBACA;;;AEjBF,MAAM,YAAY,GAAG,MAAM;AAC3B,MAAM,WAAW,GAAG,QAAQ;AAE5B,MAAM,MAAM,GAAG;AACd,IAAA,MAAM,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,iCAAiC,EAAE,UAAU,EAAE,oBAAoB,EAAC;AACtH,IAAA,KAAK,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,gCAAgC,EAAE,UAAU,EAAE,oBAAoB,EAAC;AACnH,IAAA,YAAY,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,mCAAmC,EAAE,UAAU,EAAE,kBAAkB,EAAC;CAC9H;MAMY,oBAAoB,CAAA;AAYhC,IAAA,WAAA,CAAoB,EAAc,EAAU,MAAsB,EAAU,MAAc,EAAA;QAAtE,IAAA,CAAA,EAAE,GAAF,EAAE;QAAsB,IAAA,CAAA,MAAM,GAAN,MAAM;QAA0B,IAAA,CAAA,MAAM,GAAN,MAAM;QARzE,IAAA,CAAA,cAAc,GAAuC,QAAQ;QAI7D,IAAA,CAAA,eAAe,GAAG,GAAG;QACrB,IAAA,CAAA,QAAQ,GAAqB,KAAK;AAI1C,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;YAClC,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAK;AACpD,gBAAA,IAAI,IAAI,CAAC,eAAe,EAAE;oBACzB,IAAI,CAAC,cAAc,EAAE;gBACtB;AACA,gBAAA,IAAI,aAAqB;AACzB,gBAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC3B,oBAAA,aAAa,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE;gBACtE;gBACA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;oBAC/C;gBACD;gBACA,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;oBAClE;gBACD;AACA,gBAAA,IAAI,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;oBAC3C,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE;wBACpD;oBACD;gBACD;AAAO,qBAAA,IAAI,IAAI,CAAC,eAAe,EAAE;;gBAEjC;qBAAO;AACN,oBAAA,IAAI,EAAE,CAAC,aAAa,CAAC,WAAW,IAAI,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE;wBACjE;oBACD;gBACD;gBACA,IAAI,gBAAgB,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE;oBAC7D,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;gBAC7C;gBAEA,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACxC,gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAA,EAAG,WAAW,GAAG,CAAC,CAAA,CAAE;AAC5C,gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAA,EAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE;AAC/D,gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,GAAG,CAAA,EAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,UAAU,EAAE;gBAC5E,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;AACjC,gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAA,EAAG,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,CAAC,IAAI;AACvE,gBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;AAC5B,oBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,CAAC,IAAI;AACtE,oBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,uBAAA,EAA0B,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,4BAA4B;gBAChI;AAAO,qBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;oBACtC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAA,EAAA,CAAI;AACxH,oBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,uBAAA,EAA0B,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,yBAAyB;gBAC7H;AACA,gBAAA,IAAI,IAAI,CAAC,eAAe,GAAG,CAAC,EAAE;AAC7B,oBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAA,EAAG,IAAI,CAAC,eAAe,CAAA,EAAA,CAAI;gBACtD;AACA,gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAA,EAAG,IAAI,CAAC,eAAe,CAAA,EAAA,CAAI;gBACrD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,cAAc;AAC1C,gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAA,UAAA,EAAa,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,SAAS,EAAE;AAC5E,gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,iBAAA,EAAoB,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,SAAS,EAAE;gBACtF,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,eAAe;gBACxC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY;gBACvC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK;gBACnC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY;AACvC,gBAAA,IAAI,oBAAoB,CAAC,aAAa,CAAC,EAAE;AACxC,oBAAA,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,aAAa;gBACrC;AAAO,qBAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;oBACjC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM;oBAChC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;oBACpC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC;oBAC3C,UAAU,CAAC,MAAK;AACf,wBAAA,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,eAAe,IAAI,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,UAAU;wBAC3H,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK;wBACtC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS;AACtC,oBAAA,CAAC,CAAC;gBACH;gBACA,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;gBAElC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC7C,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAA,EAAG,WAAW,GAAG,CAAC,CAAA,CAAE;gBACjD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;gBACtC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAA,KAAA,EAAQ,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAA,YAAA,CAAc;AAC5I,gBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;AAC5B,oBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,CAAC,IAAI;oBAC3E,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,uCAAuC;gBACxE;AAAO,qBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;oBACtC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAA,EAAA,CAAI;oBAC7H,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,sCAAsC;gBACvE;gBACA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG;gBAC/B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG;gBAChC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,CAAA,EAAG,YAAY,CAAA,kBAAA,CAAoB;gBACpE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,GAAG,CAAA,EAAG,YAAY,CAAA,kBAAA,CAAoB;AACrE,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,EAAG,YAAY,UAAU,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,SAAS,EAAE;gBAChG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAEvC,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAClD,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,CAAA,EAAG,WAAW,GAAG,CAAC,CAAA,CAAE;gBACtD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;gBAC3C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,CAAA,KAAA,EAAQ,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAA,YAAA,CAAc;AACjJ,gBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;AAC5B,oBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,CAAC,IAAI;oBAChF,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,6CAA6C;gBACnF;AAAO,qBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;oBACtC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAA,EAAA,CAAI;oBAClI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,sCAAsC;gBAC5E;gBACA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG;gBACpC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG;gBACrC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,CAAA,EAAG,YAAY,CAAA,kBAAA,CAAoB;gBACzE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,GAAG,CAAA,EAAG,YAAY,CAAA,kBAAA,CAAoB;AAE1E,gBAAA,IAAI,oBAAoB,CAAC,aAAa,CAAC,EAAE;AACxC,oBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,EAAG,YAAY,UAAU,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,UAAU,EAAE;gBACvG;AAAO,qBAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;oBACjC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;oBACpC,UAAU,CAAC,MAAK;AACf,wBAAA,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,eAAe,IAAI,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,UAAU;AAC3H,wBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,EAAG,YAAY,CAAA,OAAA,EAAU,KAAK,CAAA,CAAE;wBACrE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS;AACtC,oBAAA,CAAC,CAAC;gBACH;gBAEA,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;AAC7C,YAAA,CAAC,CAAC;YAEF,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAK;AACpD,gBAAA,IAAI,IAAI,CAAC,eAAe,EAAE;oBACzB,IAAI,CAAC,eAAe,EAAE;gBACvB;AACA,gBAAA,IAAI;oBACH,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;gBACvC;AAAE,gBAAA,OAAO,EAAE,EAAE,EAAC;AACd,gBAAA,IAAI;oBACH,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAC5C;AAAE,gBAAA,OAAO,EAAE,EAAE,EAAC;AACd,gBAAA,IAAI;oBACH,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;gBACjD;AAAE,gBAAA,OAAO,EAAE,EAAE,EAAC;AACf,YAAA,CAAC,CAAC;AACH,QAAA,CAAC,CAAC;IACH;IAEO,cAAc,GAAA;QACpB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC;QACvE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAC/C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7D;IAEO,eAAe,GAAA;QACrB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC;AAC/C,QAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;IAClC;+GA3JY,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAKC;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;ACrBI,MAAO,iBAAkB,SAAQ,iBAAyB,CAAA;AAPhE,IAAA,WAAA,GAAA;;AASW,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAQ;AAC3C,IAAA;+GAHY,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,yIAHf,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,iDCR5F,uWAWA,EAAA,MAAA,EAAA,CAAA,u9BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,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,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,CAAA,EAAA,CAAA,CAAA;;4FDAa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,aAGnB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,iBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,cAC5E,KAAK,EAAA,QAAA,EAAA,uWAAA,EAAA,MAAA,EAAA,CAAA,u9BAAA,CAAA,EAAA;;sBAGnB;;sBACA;;;MEJW,uBAAuB,CAAA;AAGnC,IAAA,WAAA,CAAwC,MAA4B,EAAA;QAA5B,IAAA,CAAA,MAAM,GAAN,MAAM;IAAyB;IAEvE,QAAQ,GAAA;;;;;QAKP,UAAU,CAAC,MAAK;YACf,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AAChD,QAAA,CAAC,CAAC;IACH;IAEA,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC;IACrC;+GAjBY,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAT,oBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,2LCTpC,0EAGA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA,CAAA;;4FDMa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,cAGpB,KAAK,EAAA,QAAA,EAAA,0EAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;0BAKP;;0BAAQ;;sBAFpB,SAAS;uBAAC,YAAY;;;MEqGX,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,iBAnEhC,iBAAiB;YACjB,yBAAyB;YACzB,eAAe;YACf,iBAAiB;YACjB,mBAAmB;YACnB,uBAAuB;YACvB,mBAAmB;YACnB,yBAAyB;YACzB,oBAAoB;YACpB,sBAAsB;YACtB,eAAe;YACf,gCAAgC;YAChC,qBAAqB;YACrB,sBAAsB;YACtB,6BAA6B;YAC7B,kBAAkB;YAClB,iBAAiB;YACjB,eAAe;YACf,kBAAkB;YAClB,oBAAoB;YACpB,uBAAuB;YACvB,oBAAoB;YACpB,kBAAkB;YAClB,yBAAyB;YACzB,aAAa;YACb,gBAAgB;YAChB,wBAAwB;YACxB,cAAc;YACd,oBAAoB;YACpB,iBAAiB;YACjB,oBAAoB;AACpB,YAAA,6BAA6B,aArC7B,YAAY;YACZ,WAAW;YACX,cAAc;AACd,YAAA,cAAc,aAqCd,iBAAiB;YACjB,yBAAyB;YACzB,eAAe;YACf,mBAAmB;YACnB,uBAAuB;YACvB,iBAAiB;YACjB,mBAAmB;YACnB,yBAAyB;YACzB,oBAAoB;YACpB,sBAAsB;YACtB,eAAe;YACf,gCAAgC;YAChC,qBAAqB;YACrB,sBAAsB;YACtB,6BAA6B;YAC7B,kBAAkB;YAClB,iBAAiB;YACjB,eAAe;YACf,kBAAkB;YAClB,oBAAoB;YACpB,uBAAuB;YACvB,oBAAoB;YACpB,kBAAkB;YAClB,yBAAyB;YACzB,aAAa;YACb,gBAAgB;YAChB,wBAAwB;YACxB,cAAc;YACd,oBAAoB;YACpB,iBAAiB;YACjB,6BAA6B,CAAA,EAAA,CAAA,CAAA;AAGlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAzEhC,YAAY;YACZ,WAAW;YACX,cAAc;YACd,cAAc,CAAA,EAAA,CAAA,CAAA;;4FAsEH,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBA3EjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,OAAO,EAAE;wBACR,YAAY;wBACZ,WAAW;wBACX,cAAc;wBACd,cAAc;AACd,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACb,iBAAiB;wBACjB,yBAAyB;wBACzB,eAAe;wBACf,iBAAiB;wBACjB,mBAAmB;wBACnB,uBAAuB;wBACvB,mBAAmB;wBACnB,yBAAyB;wBACzB,oBAAoB;wBACpB,sBAAsB;wBACtB,eAAe;wBACf,gCAAgC;wBAChC,qBAAqB;wBACrB,sBAAsB;wBACtB,6BAA6B;wBAC7B,kBAAkB;wBAClB,iBAAiB;wBACjB,eAAe;wBACf,kBAAkB;wBAClB,oBAAoB;wBACpB,uBAAuB;wBACvB,oBAAoB;wBACpB,kBAAkB;wBAClB,yBAAyB;wBACzB,aAAa;wBACb,gBAAgB;wBAChB,wBAAwB;wBACxB,cAAc;wBACd,oBAAoB;wBACpB,iBAAiB;wBACjB,oBAAoB;wBACpB,6BAA6B;AAC7B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACR,iBAAiB;wBACjB,yBAAyB;wBACzB,eAAe;wBACf,mBAAmB;wBACnB,uBAAuB;wBACvB,iBAAiB;wBACjB,mBAAmB;wBACnB,yBAAyB;wBACzB,oBAAoB;wBACpB,sBAAsB;wBACtB,eAAe;wBACf,gCAAgC;wBAChC,qBAAqB;wBACrB,sBAAsB;wBACtB,6BAA6B;wBAC7B,kBAAkB;wBAClB,iBAAiB;wBACjB,eAAe;wBACf,kBAAkB;wBAClB,oBAAoB;wBACpB,uBAAuB;wBACvB,oBAAoB;wBACpB,kBAAkB;wBAClB,yBAAyB;wBACzB,aAAa;wBACb,gBAAgB;wBAChB,wBAAwB;wBACxB,cAAc;wBACd,oBAAoB;wBACpB,iBAAiB;wBACjB,6BAA6B;AAC7B;AACD,iBAAA;;;AC9GD;;AAEG;;ACFH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"klippa-ngx-enhancy-forms.mjs","sources":["../../../../projects/klippa/ngx-enhancy-forms/src/lib/util/values.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/util/arrays.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/util/dom.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/util/objects.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/util/angular.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/onRender.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/warning-icon/warning-icon.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/warning-icon/warning-icon.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elementIsTruncatedCb.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-element/form-element.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-element/form-element.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/value-accessor-base/value-accessor-base.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/loading-indicator/loading-indicator.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/loading-indicator/loading-indicator.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/button/button.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/button/button.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/checkbox/checkbox.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/checkbox/checkbox.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/email/email-input.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/email/email-input.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/number-input/number-input.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/number-input/number-input.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/password-field/password-field.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/password-field/password-field.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/select/select.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/select/select.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/select/select-footer/select-footer.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/select/select-footer/select-footer.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/sortable-items/sortable-items.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/sortable-items/sortable-items.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/text-input/text-input.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/text-input/text-input.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/toggle/toggle.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/toggle/toggle.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-caption/form-caption.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-caption/form-caption.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-error/form-error.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-error/form-error.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-validation-error/form-validation-error.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-submit-button/form-submit-button.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-submit-button/form-submit-button.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/value-accessor-base/multiple-value-accessor-base.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/validators/dateValidator.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/date-time-picker/date-time-picker.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/date-time-picker/date-time-picker.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/date-picker/date-picker.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/date-picker/date-picker.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/material.module.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/file-input/file-input.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/file-input/file-input.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/sortable-grouped-items/sortable-grouped-items.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/sortable-grouped-items/sortable-grouped-items.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/validators/timeValidator.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/hour-minute-input/hour-minute-input.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/hour-minute-input/hour-minute-input.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/radio/radio.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/radio/radio.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/withTooltip.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/text-area/text-area.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/elements/text-area/text-area.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-caption-end/form-caption-end.component.ts","../../../../projects/klippa/ngx-enhancy-forms/src/lib/form/form-caption-end/form-caption-end.component.html","../../../../projects/klippa/ngx-enhancy-forms/src/lib/ngx-enhancy-forms.module.ts","../../../../projects/klippa/ngx-enhancy-forms/src/public-api.ts","../../../../projects/klippa/ngx-enhancy-forms/src/klippa-ngx-enhancy-forms.ts"],"sourcesContent":["import { isString } from 'lodash-es';\n\nexport function stringIsSetAndFilled(s: string): boolean {\n\treturn isString(s) && s.length > 0;\n}\n\nexport function isNullOrUndefined(value: any): boolean {\n\treturn value === null || value === undefined;\n}\n\nexport function numberIsSet(value: any): boolean {\n\treturn isValueSet(value) && typeof value === 'number';\n}\n\nexport function isValueSet(value: any): boolean {\n\treturn value !== null && value !== undefined;\n}\n\nexport function stringOrArrayIsSetAndEmpty(value: any[] | string): boolean {\n\treturn value !== null && value !== undefined && value.length === 0;\n}\n\nexport function truncateString(s: string, length: number): string {\n\tif (s.length < length) {\n\t\treturn s;\n\t}\n\treturn s.substring(0, length) + '...';\n}\n\n","import { isArray } from 'lodash';\nimport { Newable } from './classes';\nimport { isValueSet } from './values';\n\nexport function removeDuplicatesFromArraysWithComparator(comparator: (e1: any, e2: any) => boolean, ...arrays: any[]): any {\n\tlet combined = [];\n\n\tfor (const array of arrays) {\n\t\tcombined = combined.concat(array);\n\t}\n\n\treturn combined.filter((c, i) => {\n\t\tconst firstOccurrenceIndex = combined.findIndex((c2) => comparator(c, c2));\n\t\treturn i === firstOccurrenceIndex;\n\t});\n}\n\nexport function removeDuplicatesFromArray<T>(array: Array<T>): Array<T> {\n\treturn array.filter((c, i) => {\n\t\tconst firstOccurrenceIndex = array.findIndex((c2) => c2 === c);\n\t\treturn i === firstOccurrenceIndex;\n\t});\n}\n\nexport function insertAtIndex(arr, index, item): void {\n\tarr.splice(index, 0, item);\n}\n\nexport function arrayIsSetAndFilled(arr: any): boolean {\n\treturn isArray(arr) && arr !== null && arr !== undefined && arr.length > 0;\n}\n\nexport function asArray(value: any): Array<any> {\n\tif (isValueSet(value)) {\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value;\n\t\t}\n\t\treturn [value];\n\t}\n\treturn [];\n}\n\nexport function splitArrayByCondition<T>(value: Array<T>, condition: (current: T) => boolean): Array<Array<T>> {\n\treturn value.reduce((acc, cur) => {\n\t\tif (condition(cur)) {\n\t\t\tacc.push([]);\n\t\t} else {\n\t\t\tacc[acc.length - 1].push(cur);\n\t\t}\n\t\treturn acc;\n\t}, [[]]);\n}\n\nexport function isArrayOf<T>(arr: Array<T | any>, kind: Newable<T>): arr is Array<T> {\n\treturn arr.reduce((acc, val) => acc && val instanceof kind, true);\n}\n\n","export function getAllLimitingContainers(element: Element): Array<HTMLElement> {\n\tconst result = [];\n\tlet current = element;\n\twhile (current.parentElement) {\n\t\tif (isLimitingContainer(current.parentElement)) {\n\t\t\tresult.push(current.parentElement);\n\t\t}\n\t\tcurrent = current.parentElement;\n\t}\n\treturn result;\n}\n\nexport function isLimitingContainer(element: Element): boolean {\n\treturn element.scrollHeight > element.clientHeight;\n}\n","function mergeArray(arrA: Array<any>, arrB: Array<any>): Array<any> {\n\tconst arr = new Array(Math.max(arrA.length, arrB.length));\n\n\tfor (let i = 0; i < arr.length; i++) {\n\t\tif (typeof arrA[i] === 'object' && typeof arrB[i] === 'object') {\n\t\t\tarr[i] = deepMerge(arrA[i], arrB[i]);\n\t\t} else {\n\t\t\tarr[i] = arrB[i] ?? arrA[i];\n\t\t}\n\t}\n\n\treturn arr;\n}\n\nexport function deepMerge<\n\tA extends object | Array<any>,\n\tB extends object | Array<any>\n>(objA: A, objB: B): A | B {\n\tif (Array.isArray(objA) || Array.isArray(objB)) {\n\t\tif (Array.isArray(objA) && Array.isArray(objB)) {\n\t\t\treturn mergeArray(objA, objB) as A | B;\n\t\t}\n\n\t\t// if a and b differ in type, prefer b.\n\t\treturn objB ?? objA;\n\t}\n\n\tconst merged: A | B = {} as A | B;\n\n\tconst keys = new Set<keyof A | keyof B>([\n\t\t...Object.keys(objA),\n\t\t...Object.keys(objB),\n\t] as Array<keyof A | keyof B>);\n\n\tkeys.forEach((key) => {\n\t\tconst a = objA[key as keyof A];\n\t\tconst b = objB[key as keyof B];\n\n\t\tif (typeof a === 'object' && typeof b === 'object') {\n\t\t\tmerged[key as keyof (A | B)] = deepMerge(a as any, b as any) as any;\n\t\t\treturn;\n\t\t}\n\n\t\t// if a and b differ in type, prefer b.\n\t\tmerged[key as keyof (A | B)] = (b ?? a) as any;\n\t});\n\n\treturn merged;\n}\n","import {\n\tComponent,\n\tDirective,\n\tEventEmitter,\n\tInput,\n\tOnChanges,\n\tOnDestroy,\n\tOnInit,\n\tOptional,\n\tOutput,\n\tSimpleChanges,\n\tSkipSelf,\n\tTemplateRef\n} from '@angular/core';\nimport {\n\tAbstractControl,\n\tFormArray,\n\tFormControl,\n\tFormGroup,\n\tUntypedFormArray,\n\tUntypedFormControl,\n\tUntypedFormGroup\n} from '@angular/forms';\nimport {FormElementComponent} from './form-element/form-element.component';\nimport {isValueSet} from '../util/values';\nimport {deepMerge} from '../util/objects';\nimport {cloneDeep} from 'lodash';\n\nexport const invalidFieldsSymbol = Symbol('Not all fields are valid');\n\nexport type OnInjectedEmitterType = {\n\tchildValue: Record<string, any>;\n\tparentValue: Record<string, any>;\n};\n\n@Directive({\n // tslint:disable-next-line:directive-selector\n selector: 'klp-sub-form',\n standalone: false\n})\nexport class SubFormDirective {\n\t@Input() injectInto: UntypedFormArray | UntypedFormGroup;\n\t@Input() at: number | string;\n\t@Input() manuallyTriggerInjection: boolean = false;\n\t@Input() allowInjectionToOverwrite: boolean = false;\n}\n\n@Component({\n selector: 'klp-form',\n templateUrl: './form.component.html',\n styleUrls: ['./form.component.scss'],\n standalone: false\n})\nexport class FormComponent implements OnInit, OnDestroy, OnChanges {\n\t@Input() public readOnly = false;\n\t@Input() public showErrorMessages = true;\n\t@Input() public errorMessageLocation: 'belowCaption' | 'rightOfCaption' = 'belowCaption';\n\t@Input() public formGroup: FormGroup;\n\t@Input() public formArray: FormArray;\n\t@Input() public warnings: Map<AbstractControl, string | TemplateRef<any>> = new Map<AbstractControl, string | TemplateRef<any>>();\n\t@Input() public immutableValues: Record<string, any> = {};\n\t@Input() public errors: Map<AbstractControl, string> = new Map<AbstractControl, string>();\n\t@Input() public patchValueInterceptor: (values: any) => Promise<any>;\n\t@Input() public allowSubmitOn: 'buttonAndEnter' | 'buttonOnly' = 'buttonAndEnter';\n\t@Output() public onInjected = new EventEmitter<OnInjectedEmitterType>();\n\n\tprivate topLevelFormControl: AbstractControl;\n\n\t// we keep track of what form controls are actually rendered. Only those count when looking at form validation\n\tprivate activeControls: Array<{\n\t\tformControl: UntypedFormControl;\n\t\tformElement: FormElementComponent;\n\t}> = [];\n\n\tconstructor(@SkipSelf() @Optional() private parent: FormComponent, @Optional() private subFormDirective: SubFormDirective) {\n\t}\n\n\tngOnInit(): void {\n\t\tthis.topLevelFormControl = this.formGroup ?? this.formArray;\n\t\tif (isValueSet(this.patchValueInterceptor)) {\n\t\t\tthis.addSupportForPatchValueInterceptor();\n\t\t}\n\t\tif (isValueSet(this.parent) && isValueSet(this.subFormDirective)) {\n\t\t\tif (this.subFormDirective.manuallyTriggerInjection) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// if the `formComponentToInject` is not set, just attach the first that requests an injection\n\t\t\tthis.attachAsSubForm();\n\t\t}\n\t}\n\n\tpublic _ext_attachAsSubForm(): void {\n\t\tif (!isValueSet(this.parent)) {\n\t\t\tthrow new Error('No parent to inject this form into was found.');\n\t\t}\n\t\tif (!isValueSet(this.subFormDirective)) {\n\t\t\tthrow new Error('Subform directive not found.');\n\t\t}\n\t\tthis.attachAsSubForm();\n\t}\n\n\tprivate attachAsSubForm(): void {\n\t\tconst injectInto = this.subFormDirective.injectInto;\n\t\tconst injectAt = this.subFormDirective.at;\n\t\tconst allowInjectionToOverwrite = this.subFormDirective.allowInjectionToOverwrite;\n\t\tif (injectInto instanceof UntypedFormArray) {\n\t\t\tif (!allowInjectionToOverwrite) {\n\t\t\t\tif (injectInto.at(injectAt as number) instanceof FormGroup || injectInto.at(injectAt as number) instanceof FormArray) {\n\t\t\t\t\tthrow new Error(`There already is a subform injected at ${injectAt}. Make sure this property does not have a formGroup or formArray already attached when linking it to a subForm.`);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (typeof injectAt !== 'number') {\n\t\t\t\tthrow new Error(`cannot index FormArray with ${typeof injectAt}`);\n\t\t\t}\n\t\t\tif (injectInto.at(injectAt)?.disabled) {\n\t\t\t\tthis.topLevelFormControl.disable();\n\t\t\t}\n\t\t\tconst source = injectInto.at(injectAt);\n\t\t\tconst parentValueBeforeInject = source?.value;\n\t\t\tconst childValueBeforeInject = this.topLevelFormControl.value;\n\t\t\tif (isValueSet(parentValueBeforeInject)) {\n\t\t\t\tthis.topLevelFormControl.patchValue(parentValueBeforeInject);\n\t\t\t}\n\t\t\tinjectInto.setControl(injectAt, this.topLevelFormControl);\n\t\t\tthis.onInjected.emit({\n\t\t\t\tchildValue: childValueBeforeInject,\n\t\t\t\tparentValue: parentValueBeforeInject,\n\t\t\t});\n\t\t} else if (injectInto instanceof UntypedFormGroup) {\n\t\t\tif (!allowInjectionToOverwrite) {\n\t\t\t\tif (injectInto.get(injectAt as string) instanceof FormGroup || injectInto.get(injectAt as string) instanceof FormArray) {\n\t\t\t\t\tthrow new Error(`There already is a subform injected at ${injectAt}. Make sure this property does not have a formGroup or formArray already attached when linking it to a subForm.`);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (typeof injectAt !== 'string') {\n\t\t\t\tthrow new Error(`cannot index FormGroup with ${typeof injectAt}`);\n\t\t\t}\n\t\t\tif (injectInto.get(injectAt)?.disabled) {\n\t\t\t\tthis.topLevelFormControl.disable();\n\t\t\t}\n\t\t\tconst source = injectInto.get(injectAt);\n\t\t\tconst parentValueBeforeInject = source?.value;\n\t\t\tconst childValueBeforeInject = this.topLevelFormControl.value;\n\t\t\tif (isValueSet(parentValueBeforeInject)) {\n\t\t\t\tthis.topLevelFormControl.patchValue(parentValueBeforeInject);\n\t\t\t}\n\t\t\tinjectInto.setControl(injectAt, this.topLevelFormControl);\n\t\t\tthis.onInjected.emit({\n\t\t\t\tchildValue: childValueBeforeInject,\n\t\t\t\tparentValue: parentValueBeforeInject,\n\t\t\t});\n\t\t}\n\t}\n\n\tngOnChanges(simpleChanges: SimpleChanges): void {\n\t\tif (simpleChanges.readOnly?.currentValue === true) {\n\t\t\tthis.activeControls.forEach(e => e.formControl.disable());\n\t\t}\n\t\tif (isValueSet(simpleChanges.warnings?.currentValue)) {\n\t\t\tthis.patchFormWarningsMap();\n\t\t}\n\t\tif (isValueSet(simpleChanges.errors?.currentValue)) {\n\t\t\tthis.patchFormErrorsMap();\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\tif (isValueSet(this.parent) && isValueSet(this.subFormDirective)) {\n\t\t\tconst injectInto = this.subFormDirective.injectInto;\n\t\t\tconst injectAt = this.subFormDirective.at;\n\t\t\tif (injectInto instanceof UntypedFormArray) {\n\t\t\t\tconst idx = injectInto.controls.findIndex(e => e === this.topLevelFormControl);\n\t\t\t\tif (idx === -1) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tinjectInto.removeAt(idx);\n\t\t\t} else if (injectInto instanceof UntypedFormGroup) {\n\t\t\t\tif (typeof injectAt !== 'string') {\n\t\t\t\t\tthrow new Error(`cannot index FormGroup with ${typeof injectAt}`);\n\t\t\t\t}\n\t\t\t\tif (injectInto.get(injectAt) !== this.topLevelFormControl) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tinjectInto.setControl(injectAt, new FormControl());\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate patchFormWarningsMap(): void {\n\t\tconst setFn = this.warnings.set;\n\t\tthis.warnings.set = (key: AbstractControl, value: string): Map<AbstractControl, string> => {\n\t\t\tconst prevVal = this.warnings.get(key);\n\t\t\tconst result = setFn.call(this.warnings, key, value);\n\t\t\tif (prevVal !== value) {\n\t\t\t\tthis.getFormElementByFormControl(key)?.determinePopupState();\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\n\t\tconst deleteFn = this.warnings.delete;\n\t\tthis.warnings.delete = (key: AbstractControl): boolean => {\n\t\t\tconst result = deleteFn.call(this.warnings, key);\n\t\t\tthis.getFormElementByFormControl(key)?.determinePopupState();\n\t\t\treturn result;\n\t\t};\n\t}\n\n\tprivate patchFormErrorsMap(): void {\n\t\tconst setFn = this.errors.set;\n\t\tthis.errors.set = (key: AbstractControl, value: string): Map<AbstractControl, string> => {\n\t\t\tconst prevVal = this.errors.get(key);\n\t\t\tconst result = setFn.call(this.errors, key, value);\n\t\t\tkey.setErrors({...key.errors, formLevel: value});\n\t\t\tif (prevVal !== value) {\n\t\t\t\tthis.getFormElementByFormControl(key)?.determinePopupState();\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\n\t\tconst deleteFn = this.errors.delete;\n\t\tthis.errors.delete = (key: AbstractControl): boolean => {\n\t\t\tconst newErrorsObject = key.errors;\n\t\t\tdelete newErrorsObject.formLevel;\n\t\t\tkey.setErrors(newErrorsObject);\n\t\t\tconst result = deleteFn.call(this.errors, key);\n\t\t\tthis.getFormElementByFormControl(key)?.determinePopupState();\n\t\t\treturn result;\n\t\t};\n\t}\n\n\tprivate addSupportForPatchValueInterceptor(): void {\n\t\tconst fn = this.topLevelFormControl.patchValue;\n\t\tconst newFn = (\n\t\t\tvalue: {\n\t\t\t\t[key: string]: any;\n\t\t\t},\n\t\t\toptions?: {\n\t\t\t\tonlySelf?: boolean;\n\t\t\t\temitEvent?: boolean;\n\t\t\t}\n\t\t): void => {\n\t\t\tthis.patchValueInterceptor(value).then((val) => {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tfn.call(this.topLevelFormControl, val, options);\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t\tthis.topLevelFormControl.patchValue = newFn;\n\t}\n\n\tpublic registerControl(formControl: UntypedFormControl, formElement: FormElementComponent): () => any {\n\t\tthis.activeControls.push({formControl, formElement});\n\t\tlet parentImmutableValueFn: () => any;\n\t\tif (this.parent) {\n\t\t\tparentImmutableValueFn = this.parent.registerControl(formControl, formElement);\n\t\t}\n\t\tif (this.readOnly) {\n\t\t\tformControl.disable();\n\t\t}\n\n\t\tconst enableFn: (opts?: { onlySelf?: boolean; emitEvent?: boolean }) => void = formControl.enable;\n\t\tformControl.enable = (opts?: { onlySelf?: boolean; emitEvent?: boolean }) => {\n\t\t\tif (!this.readOnly) {\n\t\t\t\tenableFn.call(formControl, opts);\n\t\t\t}\n\t\t};\n\n\t\tconst getImmutableValueFn = (): any => {\n\t\t\tconst path = this.getPathFromParentToControl(formControl);\n\t\t\tconst immutableValue = this.getImmutableValueFromPath(path);\n\t\t\tconst immutableValueFromParent = parentImmutableValueFn?.();\n\t\t\treturn cloneDeep(immutableValue !== undefined ? immutableValue : immutableValueFromParent);\n\t\t};\n\n\t\tconst setValueFn: (value: unknown, options?: {\n\t\t\tonlySelf?: boolean;\n\t\t\temitEvent?: boolean;\n\t\t\temitModelToViewChange?: boolean;\n\t\t\temitViewToModelChange?: boolean;\n\t\t}) => void = formControl.setValue;\n\t\tformControl.setValue = (value: unknown, options?: {\n\t\t\tonlySelf?: boolean;\n\t\t\temitEvent?: boolean;\n\t\t\temitModelToViewChange?: boolean;\n\t\t\temitViewToModelChange?: boolean;\n\t\t}) => {\n\t\t\tconst immutableValue = getImmutableValueFn();\n\t\t\tif (immutableValue !== undefined && options?.emitModelToViewChange !== true) {\n\t\t\t\tif (!isValueSet(options)) {\n\t\t\t\t\toptions = {};\n\t\t\t\t}\n\t\t\t\toptions.emitModelToViewChange = true;\n\t\t\t}\n\t\t\tsetValueFn.call(formControl, immutableValue !== undefined ? immutableValue : value, options);\n\t\t};\n\n\t\tconst immutableValue = getImmutableValueFn();\n\t\tif (immutableValue !== undefined) {\n\t\t\tformControl.setValue(immutableValue);\n\t\t}\n\n\t\treturn getImmutableValueFn;\n\t}\n\n\tprivate getPathFromParentToControl(control: AbstractControl): Array<string> {\n\t\tconst path = [];\n\t\tlet currentControl = control;\n\t\twhile (currentControl.parent) {\n\t\t\tconst parent = currentControl.parent;\n\t\t\tif (parent instanceof FormGroup) {\n\t\t\t\tconst key = Object.entries(parent.controls).find(([key, value]) => value === currentControl)[0];\n\t\t\t\tpath.push(key);\n\t\t\t} else if (parent instanceof FormArray) {\n\t\t\t\tconst idx = parent.controls.findIndex(e => e === currentControl);\n\t\t\t\tpath.push(idx);\n\t\t\t}\n\t\t\tcurrentControl = parent;\n\t\t}\n\t\treturn path.reverse();\n\t}\n\n\tprivate getImmutableValueFromPath(path: Array<string>): any {\n\t\tlet current = this.immutableValues;\n\t\tfor (const key of path) {\n\t\t\tif (!isValueSet(current?.[key])) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tcurrent = current[key];\n\t\t}\n\t\treturn current;\n\t}\n\n\tpublic unregisterControl(formControl: UntypedFormControl, formElement: FormElementComponent): void {\n\t\tconsole.log('this.activeControls before', this.activeControls.length);\n\t\tconsole.log(this.activeControls);\n\t\tthis.activeControls = this.activeControls.filter((e) => e.formControl !== formControl || e.formElement !== formElement);\n\t\tconsole.log('this.activeControls after', this.activeControls.length);\n\t\tif (this.parent) {\n\t\t\tthis.parent.unregisterControl(formControl, formElement);\n\t\t}\n\t}\n\n\tprivate addFormGroupControls(formGroup: UntypedFormGroup, result: Array<UntypedFormControl>): void {\n\t\tObject.values(formGroup.controls).forEach((value) => {\n\t\t\tif (value instanceof UntypedFormGroup) {\n\t\t\t\tthis.addFormGroupControls(value, result);\n\t\t\t} else if (value instanceof UntypedFormArray) {\n\t\t\t\tthis.addFormArrayControls(value, result);\n\t\t\t} else if (value instanceof UntypedFormControl) {\n\t\t\t\tthis.addFormControl(value, result);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate addFormArrayControls(formArray: UntypedFormArray, result: Array<UntypedFormControl>): void {\n\t\tformArray.controls.forEach((value) => {\n\t\t\tif (value instanceof UntypedFormGroup) {\n\t\t\t\tthis.addFormGroupControls(value, result);\n\t\t\t} else if (value instanceof UntypedFormArray) {\n\t\t\t\tthis.addFormArrayControls(value, result);\n\t\t\t} else if (value instanceof UntypedFormControl) {\n\t\t\t\tthis.addFormControl(value, result);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate getAllFormControls(): Array<UntypedFormControl> {\n\t\tconst result = [];\n\t\tif (this.topLevelFormControl instanceof FormGroup) {\n\t\t\tthis.addFormGroupControls(this.topLevelFormControl, result);\n\t\t} else if (this.topLevelFormControl instanceof FormArray) {\n\t\t\tthis.addFormArrayControls(this.topLevelFormControl, result);\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate addFormControl(control: UntypedFormControl, result: Array<UntypedFormControl>): void {\n\t\tresult.push(control);\n\t}\n\n\tprivate disableInactiveFormControl(control: UntypedFormControl): void {\n\t\tif (!this.activeControls.some((e) => e.formControl === control)) {\n\t\t\tcontrol.disable();\n\t\t}\n\t}\n\n\tpublic getFormElementByFormControl(control: AbstractControl): FormElementComponent {\n\t\treturn this.activeControls.find((e) => e.formControl === control)?.formElement;\n\t}\n\n\tpublic getWarningToShow(control: AbstractControl): string | TemplateRef<any> {\n\t\treturn this.warnings.get(control);\n\t}\n\n\tpublic trySubmit(): Promise<any> {\n\t\tthis.topLevelFormControl.markAllAsTouched();\n\t\tconst allControls: Array<UntypedFormControl> = this.getAllFormControls();\n\t\tconst originalDisabledStates = allControls.map(e => {\n\t\t\treturn {control: e, disabled: e.disabled};\n\t\t});\n\t\tallControls.forEach(e => this.disableInactiveFormControl(e));\n\t\tallControls.forEach(e => e.updateValueAndValidity());\n\t\tconst formGroupValue = this.topLevelFormControl.value;\n\t\tif (this.topLevelFormControl instanceof FormGroup) {\n\t\t\tconst renderedAndEnabledValues = this.getRenderedFieldValuesFormGroup(this.topLevelFormControl, true);\n\t\t\tconst renderedButDisabledValues = this.getRenderedFieldValuesFormGroup(this.topLevelFormControl, false);\n\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tif (this.topLevelFormControl.pending) {\n\t\t\t\t\tconst sub = this.topLevelFormControl.statusChanges.subscribe((res) => {\n\t\t\t\t\t\tif (res !== 'PENDING') {\n\t\t\t\t\t\t\tsub.unsubscribe();\n\t\t\t\t\t\t\tthis.handleSubmission(originalDisabledStates, renderedAndEnabledValues, renderedButDisabledValues, formGroupValue)\n\t\t\t\t\t\t\t\t.then(resolve)\n\t\t\t\t\t\t\t\t.catch(reject);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tthis.handleSubmission(originalDisabledStates, renderedAndEnabledValues, renderedButDisabledValues, formGroupValue)\n\t\t\t\t\t\t.then(resolve)\n\t\t\t\t\t\t.catch(reject);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tthrow new Error('Submitting a FormArray as topLevel not supported (yet). Wrap it in a FormGroup.');\n\t}\n\n\tprivate handleSubmission(\n\t\toriginalDisabledStates: Array<{ control: FormControl<any>; disabled: boolean }>,\n\t\trenderedAndEnabledValues: Record<any, any>,\n\t\trenderedButDisabledValues: Record<any, any>,\n\t\tformGroupValue): Promise<any> {\n\t\tif (this.topLevelFormControl.invalid) {\n\t\t\tthis.activeControls.find((e) => e.formControl.invalid)?.formElement?.scrollTo();\n\t\t\tthis.setDisabledStatesForAllControls(originalDisabledStates);\n\t\t\treturn Promise.reject(invalidFieldsSymbol);\n\t\t} else {\n\t\t\tthis.setDisabledStatesForAllControls(originalDisabledStates);\n\t\t\tconst renderedValues = deepMerge(renderedAndEnabledValues, renderedButDisabledValues);\n\t\t\treturn Promise.resolve([formGroupValue, renderedValues]);\n\t\t}\n\t}\n\n\tprivate getRenderedFieldValuesFormGroup(formGroup: FormGroup, enabled: boolean, valueObject = {}): object {\n\t\tObject.entries(formGroup.controls).forEach(([name, control]) => {\n\t\t\tif (control instanceof FormControl && control.enabled === enabled && this.activeControls.some(e => e.formControl === control)) {\n\t\t\t\tvalueObject[name] = control.value;\n\t\t\t} else if (control instanceof FormArray) {\n\t\t\t\tvalueObject[name] = [];\n\t\t\t\tthis.getRenderedFieldValuesFormArray(control, enabled, valueObject[name]);\n\t\t\t} else if (control instanceof FormGroup) {\n\t\t\t\tvalueObject[name] = {};\n\t\t\t\tthis.getRenderedFieldValuesFormGroup(control, enabled, valueObject[name]);\n\t\t\t}\n\t\t});\n\t\treturn valueObject;\n\t}\n\n\tprivate getRenderedFieldValuesFormArray(formArray: FormArray, enabled: boolean, valueArray: Array<any>): void {\n\t\tformArray.controls.forEach((control: AbstractControl) => {\n\t\t\tif (control instanceof FormControl && control.enabled === enabled && this.activeControls.some(e => e.formControl === control)) {\n\t\t\t\tvalueArray.push(control.value);\n\t\t\t} else if (control instanceof FormArray) {\n\t\t\t\tconst newArray = [];\n\t\t\t\tvalueArray.push(newArray);\n\t\t\t\tthis.getRenderedFieldValuesFormArray(control, enabled, newArray);\n\t\t\t} else if (control instanceof FormGroup) {\n\t\t\t\tconst newObject = {};\n\t\t\t\tvalueArray.push(newObject);\n\t\t\t\tthis.getRenderedFieldValuesFormGroup(control, enabled, newObject);\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic _ext_getRenderedFieldValues(): Record<string, any> {\n\t\tif (this.topLevelFormControl instanceof FormGroup) {\n\t\t\tconst renderedAndEnabledValues = this.getRenderedFieldValuesFormGroup(this.topLevelFormControl, true);\n\t\t\tconst renderedButDisabledValues = this.getRenderedFieldValuesFormGroup(this.topLevelFormControl, false);\n\t\t\tconst allRenderedValues = deepMerge(renderedAndEnabledValues, renderedButDisabledValues);\n\t\t\treturn allRenderedValues;\n\t\t}\n\t\tthrow new Error('Getting values from a FormArray as topLevel is not supported (yet).');\n\t}\n\n\tprivate setDisabledStatesForAllControls(originalDisabledStates: Array<{\n\t\tcontrol: AbstractControl;\n\t\tdisabled: boolean\n\t}>): void {\n\t\toriginalDisabledStates.forEach((e) => {\n\t\t\tif (e.disabled) {\n\t\t\t\te.control.disable();\n\t\t\t} else {\n\t\t\t\te.control.enable();\n\t\t\t}\n\t\t});\n\t}\n}\n","<form>\n\t<ng-content></ng-content>\n</form>\n\n\n","export function runNextRenderCycle(fn: () => void): void {\n\tsetTimeout(fn);\n}\n\nexport function awaitableForNextCycle(): Promise<void> {\n\treturn new Promise((resolve) => {\n\t\tsetTimeout(resolve);\n\t});\n}\n","import {AfterViewInit, Directive, Input} from \"@angular/core\";\nimport {runNextRenderCycle} from \"./util/angular\";\n\n\n@Directive({\n selector: '[onRenderFn]',\n standalone: false\n})\nexport class OnRenderDirective implements AfterViewInit {\n\t@Input() onRenderFn: () => any;\n\n\tngAfterViewInit(): void {\n\t\trunNextRenderCycle(() => this.onRenderFn());\n\t}\n}\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'klp-form-warning-icon',\n templateUrl: './warning-icon.component.html',\n styleUrls: ['./warning-icon.component.scss'],\n standalone: false\n})\nexport class WarningIconComponent {\n\t@Input() variant: 'line' | 'fill' = 'line';\n}\n","@if (variant === 'line') {\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9.99976 7.49995V10.8333M9.99976 14.1666H10.0081M8.84585 3.24305L1.99178 15.0819C1.61161 15.7386 1.42153 16.0669 1.44962 16.3364C1.47412 16.5714 1.59727 16.785 1.7884 16.924C2.00753 17.0833 2.38691 17.0833 3.14569 17.0833H16.8538C17.6126 17.0833 17.992 17.0833 18.2111 16.924C18.4022 16.785 18.5254 16.5714 18.5499 16.3364C18.578 16.0669 18.3879 15.7386 18.0077 15.0819L11.1537 3.24305C10.7749 2.58875 10.5854 2.26159 10.3383 2.15172C10.1228 2.05587 9.87672 2.05587 9.66117 2.15172C9.41407 2.26159 9.22466 2.58875 8.84585 3.24305Z\" stroke=\"#ff8000\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n}\n@if (variant === 'fill') {\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M10.6771 1.39035C10.246 1.19866 9.75387 1.19866 9.32277 1.39035C8.98983 1.53839 8.77355 1.79916 8.62305 2.01164C8.47508 2.22055 8.31666 2.49423 8.14243 2.79523L1.25313 14.6949C1.07821 14.997 0.919248 15.2715 0.811464 15.5045C0.701923 15.7413 0.583086 16.0596 0.62096 16.4229C0.669969 16.8929 0.916253 17.3201 1.29852 17.598C1.59393 17.8128 1.92892 17.8695 2.18872 17.8933C2.44435 17.9167 2.76156 17.9167 3.11063 17.9167H16.8892C17.2383 17.9167 17.5555 17.9167 17.8111 17.8933C18.0709 17.8695 18.4059 17.8128 18.7014 17.598C19.0836 17.3201 19.3299 16.8929 19.3789 16.4229C19.4168 16.0596 19.2979 15.7413 19.1884 15.5045C19.0806 15.2715 18.9217 14.997 18.7468 14.695L11.8574 2.7952C11.6832 2.49422 11.5248 2.22053 11.3768 2.01164C11.2263 1.79916 11.01 1.53839 10.6771 1.39035ZM10.8333 7.50004C10.8333 7.0398 10.4602 6.66671 9.99996 6.66671C9.53972 6.66671 9.16663 7.0398 9.16663 7.50004V10.8334C9.16663 11.2936 9.53972 11.6667 9.99996 11.6667C10.4602 11.6667 10.8333 11.2936 10.8333 10.8334V7.50004ZM9.99996 13.3334C9.53972 13.3334 9.16663 13.7065 9.16663 14.1667C9.16663 14.6269 9.53972 15 9.99996 15H10.0083C10.4685 15 10.8416 14.6269 10.8416 14.1667C10.8416 13.7065 10.4685 13.3334 10.0083 13.3334H9.99996Z\" fill=\"#ff8000\"/>\n </svg>\n}\n","import {AfterViewInit, Directive, ElementRef, Input, OnDestroy} from \"@angular/core\";\nimport {awaitableForNextCycle} from \"./util/angular\";\nimport {isValueSet} from \"./util/values\";\n\n\n@Directive({\n selector: '[elementIsTruncatedCb]',\n standalone: false\n})\nexport class ElementIsTruncatedCbComponent implements AfterViewInit, OnDestroy {\n\tprivate observer: MutationObserver;\n\n\t@Input() elementIsTruncatedCb = (isTruncated: boolean) => {};\n\tconstructor(private elementRef: ElementRef) {\n\n\t}\n\n\tngAfterViewInit(): void {\n\t\tif (!isValueSet(this.elementIsTruncatedCb)) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst targetNode = this.elementRef.nativeElement;\n\n\t\tconst observerOptions = {\n\t\t\tchildList: true,\n\t\t\tattributes: true,\n\t\t\tsubtree: true\n\t\t};\n\n\t\tconst callback = () => {\n\t\t\tthis.checkForTruncation();\n\t\t};\n\n\t\tthis.observer = new MutationObserver(callback);\n\t\tthis.observer.observe(targetNode, observerOptions);\n\t\tthis.checkForTruncation();\n\t}\n\n\tprivate async checkForTruncation(): Promise<void> {\n\t\tawait awaitableForNextCycle();\n\t\tconst isTruncated = this.isTruncated(this.elementRef.nativeElement);\n\t\tif (isValueSet(isTruncated)) {\n\t\t\tthis.elementIsTruncatedCb(isTruncated);\n\t\t}\n\t}\n\n\tprivate isTruncated(element: HTMLElement): boolean {\n\t\tif (!(element.scrollWidth > 0)) {\n\t\t\treturn;\n\t\t}\n\t\tconst thisElementIsTruncated = element.scrollWidth > element.clientWidth;\n\t\tif (!thisElementIsTruncated) {\n\t\t\treturn Array.from(element.children).some((child) => this.isTruncated(child as HTMLElement));\n\t\t}\n\t\treturn thisElementIsTruncated;\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.observer?.disconnect();\n\t}\n}\n","import {\n\tAfterViewInit,\n\tComponent,\n\tContentChild,\n\tElementRef,\n\tInject,\n\tInjectionToken,\n\tInput, NgZone, OnDestroy,\n\tOptional,\n\tTemplateRef,\n\tViewChild\n} from '@angular/core';\nimport {AbstractControl, NG_VALUE_ACCESSOR, UntypedFormControl} from '@angular/forms';\nimport {ValueAccessorBase} from '../../elements/value-accessor-base/value-accessor-base.component';\nimport {CustomErrorMessages, FormErrorMessages} from '../../types';\nimport {isValueSet, stringIsSetAndFilled} from '../../util/values';\nimport {FormComponent} from '../form.component';\nimport {getAllLimitingContainers} from '../../util/dom';\nimport {Subscription} from \"rxjs\";\n\n\nexport const FORM_ERROR_MESSAGES = new InjectionToken<CustomErrorMessages>('form.error.messages');\n\nexport const DEFAULT_ERROR_MESSAGES: FormErrorMessages = {\n\tmin: 'Use a number larger than %min%',\n\tmax: 'Use a number smaller than %max%',\n\trequired: 'Required',\n\temail: 'Use a valid email address',\n\tminLength: 'Has to be longer than %minLength% character(s)',\n\tmaxLength: 'Has to be shorter than %maxLength% character(s)',\n\tpattern: 'This input is not valid',\n\tmatchPassword: 'Passwords must match',\n\tdate: 'Enter a valid date',\n};\n\ntype PopupState = 'onHover' | 'lockedOpen';\n\n@Component({\n selector: 'klp-form-element',\n templateUrl: './form-element.component.html',\n styleUrls: ['./form-element.component.scss'],\n standalone: false\n})\nexport class FormElementComponent implements AfterViewInit, OnDestroy {\n\tpublic attachedControl: AbstractControl;\n\t@Input() public caption: string;\n\t@Input() public direction: 'horizontal' | 'vertical' = 'horizontal';\n\t@Input() public captionSpacing: 'percentages' | 'none' = 'percentages';\n\t@Input() public verticalAlignment: 'center' | 'top' = 'center';\n\t@Input() public spaceDistribution: '40-60' | '34-66' | '30-70' | 'fixedInputWidth' | 'fixedCaptionWidth' = '40-60';\n\t@Input() public swapInputAndCaption = false;\n\t@Input() public errorMessageAsTooltip = false;\n\t@Input() public errorMessageHasMaxWidth = true;\n\t@ViewChild('internalComponentRef') public internalComponentRef: ElementRef;\n\t@ViewChild('tailTpl') public tailTpl: TemplateRef<any>;\n\t@ViewChild('captionDummyForSpaceCalculation') public captionDummyForSpaceCalculation: ElementRef;\n\t@ViewChild('absoluteAnchor') public absoluteAnchor: ElementRef;\n\t@ViewChild('fixedAnchor') public fixedAnchor: ElementRef;\n\t@ViewChild('fixedWrapper') public fixedWrapper: ElementRef;\n\t@ViewChild('inputContainer') public inputContainer: ElementRef;\n\t@ContentChild(NG_VALUE_ACCESSOR) fieldInput: ValueAccessorBase<any>;\n\n\tpublic captionRef: TemplateRef<any>;\n\tpublic captionEndRef: TemplateRef<any>;\n\tpublic errorMessages: FormErrorMessages = DEFAULT_ERROR_MESSAGES;\n\tpublic customErrorHandlers: Array<{ error: string; templateRef: TemplateRef<any> }> = [];\n\tprivate input: ValueAccessorBase<any>;\n\tpublic errorFullyVisible: boolean;\n\tprivate popupState: PopupState = 'onHover';\n\tprivate subscriptions: Array<Subscription> = [];\n\n\tconstructor(\n\t\t@Optional() private parent: FormComponent,\n\t\t@Inject(FORM_ERROR_MESSAGES) @Optional() private customMessages: CustomErrorMessages,\n\t\tprivate elRef: ElementRef,\n\t\tprivate ngZone: NgZone,\n\t) {\n\t}\n\n\tasync ngAfterViewInit(): Promise<void> {\n\t\tconst subscription = this.fieldInput?.onTouch.asObservable().subscribe(() => {\n\t\t\tthis.determinePopupState();\n\t\t});\n\t\tif (isValueSet(subscription)) {\n\t\t\tthis.subscriptions.push(subscription);\n\t\t}\n\t\tthis.ngZone.runOutsideAngular(() => {\n\t\t\tthis.inputContainer?.nativeElement.addEventListener('mouseenter', () => {\n\t\t\t\tthis.setErrorTooltipOffset();\n\t\t\t});\n\t\t});\n\t}\n\n\tpublic shouldShowErrorMessages(): boolean {\n\t\treturn this.parent?.showErrorMessages !== false;\n\t}\n\n\tpublic substituteParameters(message: string, parameters: Record<string, any>): string {\n\t\treturn Object.keys(parameters).reduce((msg, key) => {\n\t\t\treturn msg.replace(`%${key}%`, parameters[key]);\n\t\t}, message);\n\t}\n\n\tpublic registerControl(formControl: UntypedFormControl, input: ValueAccessorBase<any> = null): () => any {\n\t\tthis.attachedControl = formControl;\n\t\tthis.input = input;\n\t\tconst getImmutableValueFn = this.parent.registerControl(formControl, this);\n\n\n\t\tconst subscription = this.attachedControl.statusChanges.subscribe(() => {\n\t\t\tthis.determinePopupState();\n\t\t});\n\t\tthis.subscriptions.push(subscription);\n\t\tthis.determinePopupState();\n\t\treturn getImmutableValueFn;\n\t}\n\n\tpublic determinePopupState(): void {\n\t\tconst prevState = this.popupState;\n\t\tthis.initializeTailTpl();\n\t\tif (stringIsSetAndFilled(this.getErrorToShow())) {\n\t\t\tthis.popupState = 'onHover';\n\t\t} else if (isValueSet(this.getWarningToShow())) {\n\t\t\tthis.popupState = 'lockedOpen';\n\t\t} else {\n\t\t\tthis.popupState = 'onHover';\n\t\t}\n\n\t\tthis.setUpErrorTooltipListeners(prevState, this.popupState);\n\t}\n\n\tprivate setUpErrorTooltipListeners(prev: PopupState, current: PopupState): void {\n\t\tif (prev === current) {\n\t\t\treturn;\n\t\t}\n\t\tconst containers = [...getAllLimitingContainers(this.elRef.nativeElement), window];\n\t\tthis.ngZone.runOutsideAngular(() => {\n\t\t\tif (current === 'lockedOpen') {\n\t\t\t\tcontainers.forEach(e => {\n\t\t\t\t\te.addEventListener('scroll', this.setErrorTooltipOffset);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tcontainers.forEach(e => {\n\t\t\t\t\te.removeEventListener('scroll', this.setErrorTooltipOffset);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic unregisterControl(formControl: UntypedFormControl): void {\n\t\tthis.attachedControl = null;\n\t\tthis.parent.unregisterControl(formControl, this);\n\t}\n\n\tpublic getAttachedControl(): AbstractControl {\n\t\treturn this.attachedControl;\n\t}\n\n\tpublic getAttachedInput(): ValueAccessorBase<any> {\n\t\treturn this.input;\n\t}\n\n\tpublic registerErrorHandler(error: string, templateRef: TemplateRef<any>): void {\n\t\tthis.customErrorHandlers.push({error, templateRef});\n\t}\n\n\tpublic registerCaption(templateRef: TemplateRef<any>): void {\n\t\tthis.captionRef = templateRef;\n\t}\n\n\tpublic registerCaptionEnd(templateRef: TemplateRef<any>): void {\n\t\tthis.captionEndRef = templateRef;\n\t}\n\n\tpublic getWarningToShow(): string | TemplateRef<any> {\n\t\treturn this.parent?.getWarningToShow(this.attachedControl);\n\t}\n\n\tpublic getWarningToShowAsTemplateRef(): TemplateRef<any> {\n\t\tif (this.parent?.getWarningToShow(this.attachedControl) instanceof TemplateRef) {\n\t\t\treturn this.parent?.getWarningToShow(this.attachedControl) as TemplateRef<any>;\n\t\t}\n\t\tthrow new Error('Warning is not a TemplateRef');\n\t}\n\n\tpublic getWarningToShowIsTemplateRef(): boolean {\n\t\treturn this.getWarningToShow() instanceof TemplateRef;\n\t}\n\n\tgetErrorToShow(): string {\n\t\tconst firstError = Object.keys(this.attachedControl?.errors ?? {})[0];\n\t\tif (this.attachedControl?.touched !== true) {\n\t\t\treturn null;\n\t\t}\n\t\tif (!this.attachedControl?.errors) {\n\t\t\treturn null;\n\t\t}\n\t\treturn firstError;\n\t}\n\n\tgetCustomErrorHandler(error: string): { error: string; templateRef: TemplateRef<any> } {\n\t\treturn this.customErrorHandlers.find((e) => e.error === error);\n\t}\n\n\tshowDefaultError(error: string): boolean {\n\t\treturn this.getErrorToShow() === error && !this.customErrorHandlers.some((e) => e.error === error);\n\t}\n\n\tgetScrollableParent(node): any {\n\t\tif (node === window.document.documentElement) {\n\t\t\treturn window.document.documentElement;\n\t\t}\n\t\tconst overflowY = getComputedStyle(node).overflowY;\n\t\tif (node.clientHeight < node.scrollHeight && (overflowY === 'auto' || overflowY === 'scroll')) {\n\t\t\treturn node;\n\t\t} else {\n\t\t\treturn this.getScrollableParent(node.parentNode);\n\t\t}\n\t}\n\n\tscrollTo(): void {\n\t\tconst parent = this.getScrollableParent(this.internalComponentRef.nativeElement);\n\t\tconst parentTop = parent === window.document.documentElement ? 0 : parent.getBoundingClientRect().top;\n\t\tconst elementTop = this.internalComponentRef.nativeElement.getBoundingClientRect().top;\n\t\tconst parentScrollTop = parent.scrollTop;\n\t\tconst answer = elementTop - parentTop + parentScrollTop;\n\n\t\tparent.scrollTo({\n\t\t\ttop: answer - 30,\n\t\t\tbehavior: 'smooth'\n\t\t});\n\t}\n\n\tisRequired(): boolean {\n\t\tif (isValueSet(this.input)) {\n\t\t\treturn this.input.hasValidator('required');\n\t\t}\n\t\treturn false;\n\t}\n\n\tgetErrorMessage(key: keyof FormErrorMessages): string {\n\t\tif (key === 'formLevel') {\n\t\t\treturn this.attachedControl.errors?.formLevel;\n\t\t}\n\t\treturn this.customMessages?.[key]?.() ?? this.errorMessages[key];\n\t}\n\n\tpublic getErrorLocation(): 'belowCaption' | 'rightOfCaption' {\n\t\treturn this.parent?.errorMessageLocation ?? 'belowCaption';\n\t}\n\n\tpublic shouldShowErrorTooltipOpened(): boolean {\n\t\treturn this.popupState === 'lockedOpen';\n\t}\n\n\tpublic hasHoverableErrorTooltip(): boolean {\n\t\tif (!this.hasRightOfCaptionError() && !this.errorMessageAsTooltip) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this.popupState !== 'onHover') {\n\t\t\treturn false;\n\t\t}\n\t\tif (stringIsSetAndFilled(this.getErrorToShow())) {\n\t\t\treturn !this.errorFullyVisible;\n\t\t}\n\t\tif (isValueSet(this.getWarningToShow())) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic hasRightOfCaptionError(): boolean {\n\t\tif (this.errorMessageAsTooltip) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this.direction !== 'vertical' || this.getErrorLocation() !== 'rightOfCaption') {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\tpublic setErrorMessageIsTruncated = (isTruncated: boolean) => {\n\t\tthis.errorFullyVisible = !isTruncated;\n\t}\n\n\tpublic shouldShowWarningPopup(): boolean {\n\t\treturn isValueSet(this.getWarningToShow());\n\t}\n\n\tpublic closePopup(): void {\n\t\tconst prevState = this.popupState;\n\t\tthis.popupState = 'onHover';\n\t\tthis.setUpErrorTooltipListeners(prevState, this.popupState);\n\t}\n\n\tpublic togglePopup(): void {\n\t\tif (!this.errorMessageAsTooltip && !this.hasRightOfCaptionError()) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.errorFullyVisible) {\n\t\t\treturn;\n\t\t}\n\t\tconst prevState = this.popupState;\n\t\tif (this.popupState === 'lockedOpen') {\n\t\t\tthis.popupState = 'onHover';\n\t\t} else {\n\t\t\tthis.popupState = 'lockedOpen';\n\t\t}\n\t\tthis.setUpErrorTooltipListeners(prevState, this.popupState);\n\t}\n\n\tpublic setErrorTooltipOffset = (): void => {\n\t\tif (this.popupState !== 'lockedOpen' && this.popupState !== 'onHover') {\n\t\t\treturn;\n\t\t}\n\t\tconst popupOffsetY = this.absoluteAnchor?.nativeElement.getBoundingClientRect().top - this.fixedAnchor?.nativeElement.getBoundingClientRect().top;\n\t\tif (this.fixedWrapper?.nativeElement) {\n\t\t\tthis.fixedWrapper.nativeElement.style.transform = `translateY(${popupOffsetY}px)`;\n\t\t}\n\t};\n\n\tngOnDestroy(): void {\n\t\tthis.subscriptions.forEach(e => e.unsubscribe());\n\t}\n\n\tprivate initializeTailTpl(): void {\n\t\tif (stringIsSetAndFilled(this.getErrorToShow()) || isValueSet(this.getWarningToShow())) {\n\t\t\tif (!isValueSet(this.fieldInput?.getTailTpl())) {\n\t\t\t\tthis.fieldInput?.setTailTpl(this.tailTpl);\n\t\t\t}\n\t\t}\n\t}\n}\n","<div\n class=\"componentContainer\"\n\t[ngClass]=\"{\n\t\thasCaption: caption || captionRef,\n\t\tvertical: direction === 'vertical',\n\t\thorizontal: direction === 'horizontal',\n\t\ttopAlignment: verticalAlignment === 'top',\n\t\treverseOrder: swapInputAndCaption,\n\t\thasErrors: getErrorToShow() && attachedControl.touched,\n\t\tpercentageSpacing: captionSpacing === 'percentages' && spaceDistribution !== 'fixedInputWidth',\n\t\t'd40-60': spaceDistribution === '40-60',\n\t\t'd30-70': spaceDistribution === '30-70',\n\t\t'd34-66': spaceDistribution === '34-66',\n\t\t'fixedInputWidth': spaceDistribution === 'fixedInputWidth',\n\t\t'fixedCaptionWidth': spaceDistribution === 'fixedCaptionWidth'\n\t}\"\n >\n @if (direction === 'horizontal' && !errorMessageAsTooltip) {\n <div class=\"errorAboveInputContainer\">\n <div class=\"spacer\"></div>\n <ng-container [ngTemplateOutlet]=\"errorRef\"></ng-container>\n </div>\n }\n\n <div class=\"captionInputAndError\" #internalComponentRef>\n @if (hasRightOfCaptionError()) {\n <div class=\"captionDummyForSpaceCalculation\" #captionDummyForSpaceCalculation>\n <ng-container [ngTemplateOutlet]=\"captionTpl\" [ngTemplateOutletContext]=\"{forCalculation: true}\"></ng-container>\n </div>\n }\n <ng-container [ngTemplateOutlet]=\"captionTpl\"></ng-container>\n @if (direction === 'vertical' && getErrorLocation() === 'belowCaption' && !errorMessageAsTooltip) {\n <ng-container [ngTemplateOutlet]=\"errorRef\"></ng-container>\n }\n <div class=\"inputContainer\" #inputContainer>\n @if (errorMessageAsTooltip && shouldShowErrorMessages() && getErrorToShow()) {\n <div class=\"errorTooltipTriangle\"></div>\n <div class=\"errorTooltipTriangleWhite\"></div>\n <div class=\"errorTooltip\">\n <ng-container [ngTemplateOutlet]=\"errorRef\"></ng-container>\n </div>\n }\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n\n<ng-template #captionTpl let-forCalculation=\"forCalculation\">\n @if (caption || captionRef) {\n <div class=\"caption\"\n\t\t[ngClass]=\"{\n\t\t\twithErrorRightOfCaption: getErrorLocation() === 'rightOfCaption'\n\t\t}\"\n >\n @if (captionRef) {\n <div class=\"captionRefContainer\">\n <ng-container [ngTemplateOutlet]=\"captionRef\"></ng-container>\n @if (isRequired()) {\n <div> *</div>\n }\n </div>\n }\n @if (!captionRef) {\n <div class=\"captionText\">{{caption}}@if (isRequired()) {\n <span> *</span>\n }</div>\n }\n @if (hasRightOfCaptionError()) {\n <div class=\"rightOfCaptionError\" [ngClass]=\"{errorFullyVisible: errorFullyVisible, errorMessageHasMaxWidth: errorMessageHasMaxWidth}\">\n <ng-container [ngTemplateOutlet]=\"errorRef\" [ngTemplateOutletContext]=\"{forCalculation: forCalculation}\"></ng-container>\n </div>\n }\n @if (captionEndRef) {\n <div class=\"captionEndRefContainer\">\n <ng-container [ngTemplateOutlet]=\"captionEndRef\"></ng-container>\n </div>\n }\n </div>\n }\n</ng-template>\n\n<ng-template #errorRef let-forCalculation=\"forCalculation\">\n @if (shouldShowErrorMessages() && getErrorToShow()) {\n <div class=\"errorContainer\" [elementIsTruncatedCb]=\"forCalculation ? setErrorMessageIsTruncated : null\" [ngClass]=\"{horizontal: direction === 'horizontal', hasCaption: caption || captionRef, 'd30-70': spaceDistribution === '30-70', 'd34-66': spaceDistribution === '34-66'}\">\n @if (showDefaultError('min')) {\n <div>{{substituteParameters(getErrorMessage(\"min\"), {min: attachedControl.errors.min.min})}}</div>\n }\n @if (showDefaultError('max')) {\n <div>{{substituteParameters(getErrorMessage(\"max\"), {max: attachedControl.errors.max.max})}}</div>\n }\n @if (showDefaultError('required')) {\n <div>{{getErrorMessage(\"required\")}}</div>\n }\n @if (showDefaultError('email')) {\n <div>{{getErrorMessage(\"email\")}}</div>\n }\n @if (showDefaultError('minlength')) {\n <div>{{substituteParameters(getErrorMessage(\"minLength\"), {minLength: attachedControl.errors.minlength.requiredLength})}}</div>\n }\n @if (showDefaultError('maxlength')) {\n <div>{{substituteParameters(getErrorMessage(\"maxLength\"), {maxLength: attachedControl.errors.maxlength.requiredLength})}}</div>\n }\n @if (showDefaultError('pattern')) {\n <div>{{getErrorMessage(\"pattern\")}}</div>\n }\n @if (showDefaultError('MatchPassword')) {\n <div>{{getErrorMessage(\"matchPassword\")}}</div>\n }\n @if (showDefaultError('date')) {\n <div>{{getErrorMessage(\"date\")}}</div>\n }\n @if (showDefaultError('message')) {\n <div>{{attachedControl.errors.message.value}}</div>\n }\n @if (showDefaultError('formLevel')) {\n <div>{{getErrorMessage(\"formLevel\")}}</div>\n }\n <div [ngTemplateOutlet]=\"getCustomErrorHandler(getErrorToShow())?.templateRef\"></div>\n </div>\n }\n</ng-template>\n\n<ng-template #tailTpl>\n <div class=\"errorTooltipContainer\" [ngClass]=\"{alwaysOpen: shouldShowErrorTooltipOpened()}\">\n @if (hasHoverableErrorTooltip() || shouldShowErrorTooltipOpened()) {\n <div class=\"errorTooltipTriangle\"></div>\n <div class=\"errorTooltipTriangleWhite\"></div>\n <div class=\"absoluteAnchor\" #absoluteAnchor></div>\n <div class=\"fixedAnchor\" #fixedAnchor [onRenderFn]=\"setErrorTooltipOffset\"></div>\n <div class=\"fixedWrapper\" #fixedWrapper>\n <div class=\"errorTooltip\" [ngClass]=\"{noPointerEvents: !shouldShowErrorTooltipOpened()}\">\n <div class=\"errorTooltipInner\">\n <i class=\"closeBtn\" (click)=\"closePopup();\">×</i>\n @if (getErrorToShow()) {\n <ng-container [ngTemplateOutlet]=\"errorRef\"></ng-container>\n }\n @if (!getErrorToShow() && shouldShowWarningPopup()) {\n <div>\n @if (getWarningToShowIsTemplateRef()) {\n <ng-container [ngTemplateOutlet]=\"getWarningToShowAsTemplateRef()\"></ng-container>\n }\n @if (!getWarningToShowIsTemplateRef()) {\n <span>{{getWarningToShow()}}</span>\n }\n </div>\n }\n </div>\n </div>\n </div>\n }\n @if (getErrorToShow()) {\n <klp-form-warning-icon variant=\"fill\" (click)=\"togglePopup()\"></klp-form-warning-icon>\n }\n @if (!getErrorToShow() && getWarningToShow()) {\n <klp-form-warning-icon variant=\"line\" (click)=\"togglePopup()\"></klp-form-warning-icon>\n }\n </div>\n</ng-template>\n","import {ControlContainer, ControlValueAccessor, UntypedFormControl} from '@angular/forms';\nimport {\n\tComponent,\n\tElementRef,\n\tEventEmitter,\n\tHost,\n\tInput,\n\tOnDestroy,\n\tOnInit,\n\tOptional,\n\tOutput,\n\tTemplateRef,\n\tViewChild\n} from '@angular/core';\nimport {FormElementComponent} from '../../form/form-element/form-element.component';\nimport {isNullOrUndefined, isValueSet, stringIsSetAndFilled} from '../../util/values';\nimport {arrayIsSetAndFilled} from '../../util/arrays';\nimport {cloneDeep} from 'lodash';\n\n/**\n * This component is a base in order to create a component that supports ngModel.\n * Some important things to know about it:\n *\n * innerValue = your own inner state, which you should use to store the current state of what ngModel should be.\n * writeValue() = called by angular, when ngModel is changed from OUTSIDE of the component. Feel free to patch this method if you need inner logic to happen when ngModel is altered from the outside. Always remember to also call the super.writeValue if you do!\n * setInnerValueAndNotify() = call this when you want your ngModel to be updated from INSIDE of your component, and provide it to the OUTSIDE.\n * ngOnInit() = Used to support the angular reactive forms framework. If you use ngOnInit in your own component (which happens fairly often) you must not forget to call the super.ngOnInit() method.\n */\n\n@Component({\n selector: '',\n template: '',\n standalone: false\n})\nexport class ValueAccessorBase<T> implements ControlValueAccessor, OnInit, OnDestroy {\n\tpublic innerValue: T;\n\tpublic changed = new Array<(value: T) => void>();\n\tprivate touched = new Array<() => void>();\n\tprivate prevValue: T = null;\n\n\t@Input() public disabled = false;\n\t// needed to prevent race conditions\n\tprivate latestInnerValueChangedInterceptorPromise: Promise<void>;\n\t@Input() innerValueChangeInterceptor: (prev: T, cur: T) => Promise<void>;\n\t// we support both providing just the formControlName and the full formControl\n\t@Input() public formControlName: string = null;\n\t@Input() public formControl: UntypedFormControl = null;\n\t@Input() public inErrorState = false;\n\t@Input() getTailTplFn: () => TemplateRef<any>;\n\t@Output() public onTouch = new EventEmitter<void>();\n\t@ViewChild('nativeInputRef') nativeInputRef: ElementRef;\n\n\tprivate attachedFormControl: UntypedFormControl;\n\tprivate tailTpl: TemplateRef<any>;\n\tprivate getImmutableValueFn: () => T;\n\n\tconstructor(\n\t\t@Host() @Optional() protected parent: FormElementComponent,\n\t\t@Host() @Optional() protected controlContainer: ControlContainer\n\t) {\n\t}\n\n\tngOnInit(): void {\n\t\tif (this.formControl) {\n\t\t\tthis.attachedFormControl = this.formControl;\n\t\t} else if (stringIsSetAndFilled(this.formControlName)) {\n\t\t\tthis.attachedFormControl = this.controlContainer?.control.get(this.formControlName) as UntypedFormControl;\n\t\t\tif (isNullOrUndefined(this.attachedFormControl)) {\n\t\t\t\tthrow new Error(`Form element '${this.formControlName}' with caption '${this.parent?.caption}' is not declared in your FormGroup.`);\n\t\t\t}\n\t\t}\n\t\tif (this.attachedFormControl) {\n\t\t\tthis.disabled = this.attachedFormControl.disabled;\n\t\t\tthis.attachedFormControl.statusChanges.subscribe(() => {\n\t\t\t\tthis.disabled = this.attachedFormControl.disabled;\n\t\t\t});\n\t\t\tthis.getImmutableValueFn = this.parent?.registerControl(this.attachedFormControl, this);\n\t\t}\n\t}\n\n\tprotected getImmutableValue(): T {\n\t\treturn this.getImmutableValueFn?.();\n\t}\n\n\n\tisInErrorState(): boolean {\n\t\tif (this.inErrorState) {\n\t\t\treturn true;\n\t\t}\n\t\treturn this.attachedFormControl && this.attachedFormControl.status === 'INVALID' && this.attachedFormControl.touched;\n\t}\n\n\tngOnDestroy(): void {\n\t\tif (this.attachedFormControl) {\n\t\t\tthis.parent?.unregisterControl(this.attachedFormControl);\n\t\t}\n\t}\n\n\ttouch(): void {\n\t\tthis.touched.forEach((f) => f());\n\t\tthis.onTouch.emit();\n\t}\n\n\twriteValue(value: T): void {\n\t\tthis.prevValue = value;\n\t\tthis.innerValue = value;\n\t}\n\n\tregisterOnChange(fn: (value: T) => void): void {\n\t\tthis.changed.push(fn);\n\t}\n\n\tregisterOnTouched(fn: () => void): void {\n\t\tthis.touched.push(fn);\n\t}\n\n\tsetInnerValueAndNotify(value: T): void {\n\t\tconst actuallySetValue = (valueToSet: T): void => {\n\t\t\tthis.prevValue = valueToSet;\n\t\t\tthis.innerValue = valueToSet;\n\t\t\tthis.changed.forEach((fn) => fn(valueToSet));\n\t\t};\n\t\tif (isValueSet(this.innerValueChangeInterceptor)) {\n\t\t\tthis.latestInnerValueChangedInterceptorPromise = this.innerValueChangeInterceptor(this.prevValue, value);\n\t\t\tconst myPromise = this.latestInnerValueChangedInterceptorPromise;\n\t\t\tthis.latestInnerValueChangedInterceptorPromise.then(() => {\n\t\t\t\tif (this.latestInnerValueChangedInterceptorPromise === myPromise) {\n\t\t\t\t\tactuallySetValue(value);\n\t\t\t\t} else {\n\t\t\t\t\t// ignore outdated promises\n\t\t\t\t}\n\t\t\t}).catch(() => {\n\t\t\t\tif (this.latestInnerValueChangedInterceptorPromise === myPromise) {\n\t\t\t\t\tactuallySetValue(this.prevValue);\n\t\t\t\t} else {\n\t\t\t\t\t// ignore outdated promises\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tactuallySetValue(value);\n\t\t}\n\t}\n\n\tresetToNull(): void {\n\t\tthis.setInnerValueAndNotify(null);\n\t}\n\n\thasValidator(validatorName: string): boolean {\n\t\tconst validators = Object.keys(this.attachedFormControl?.validator?.({} as any) ?? {});\n\t\tif (arrayIsSetAndFilled(validators)) {\n\t\t\treturn validators.includes(validatorName);\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic focus = (): void => {\n\t\tif (isValueSet(this.nativeInputRef?.nativeElement)){\n\t\t\tthis.nativeInputRef?.nativeElement?.focus();\n\t\t}else {\n\t\t\tthrow new Error('the focus() method is not implemented in this element!');\n\t\t}\n\t}\n\n\tpublic setTailTpl = (tpl: TemplateRef<any>): void => {\n\t\tthis.tailTpl = tpl;\n\t}\n\tpublic getTailTpl = (): TemplateRef<any> => {\n\t\tif (isValueSet(this.getTailTplFn)) {\n\t\t\treturn this.getTailTplFn();\n\t\t}\n\t\treturn this.tailTpl;\n\t}\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'klp-form-loading-indicator',\n templateUrl: './loading-indicator.component.html',\n styleUrls: ['./loading-indicator.component.scss'],\n standalone: false\n})\nexport class LoadingIndicatorComponent {\n\t@Input() public variant: '3dots' | 'spinner' | 'textInput' | 'picker' = '3dots';\n\t@Input() public size: 'tiny' | 'small' | 'medium' | 'large' | 'huge' = 'medium';\n}\n","@if (variant === '3dots') {\n <div class=\"threeDots\" [ngClass]=\"[size]\">\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n </div>\n}\n\n@if (variant === 'spinner') {\n <div class=\"spinner\" [ngClass]=\"[size]\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"48\" height=\"48\" viewBox=\"0 0 48 48\">\n <circle cx=\"24\" cy=\"4\" r=\"4\" fill=\"currentColor\" />\n <circle cx=\"12.19\" cy=\"7.86\" r=\"3.7\" fill=\"currentColor\" />\n <circle cx=\"5.02\" cy=\"17.68\" r=\"3.4\" fill=\"currentColor\" />\n <circle cx=\"5.02\" cy=\"30.32\" r=\"3.1\" fill=\"currentColor\" />\n <circle cx=\"12.19\" cy=\"40.14\" r=\"2.8\" fill=\"currentColor\" />\n <circle cx=\"24\" cy=\"44\" r=\"2.5\" fill=\"currentColor\" />\n <circle cx=\"35.81\" cy=\"40.14\" r=\"2.2\" fill=\"currentColor\" />\n <circle cx=\"42.98\" cy=\"30.32\" r=\"1.9\" fill=\"currentColor\" />\n <circle cx=\"42.98\" cy=\"17.68\" r=\"1.6\" fill=\"currentColor\" />\n <circle cx=\"35.81\" cy=\"7.86\" r=\"1.3\" fill=\"currentColor\" />\n </svg>\n </div>\n}\n\n@if (variant === 'textInput') {\n <div class=\"textInput\">\n <input\n disabled\n type=\"text\"\n class=\"form-control\"\n placeholder=\"Loading...\"\n >\n </div>\n}\n\n@if (variant === 'picker') {\n <div class=\"picker\">\n <input\n disabled\n type=\"text\"\n class=\"form-control\"\n placeholder=\"Loading...\"\n >\n <div class=\"chevronDown\"></div>\n </div>\n}\n","import { Component, HostBinding, Input } from '@angular/core';\nimport {isValueSet} from \"../../util/values\";\n\nexport type ButtonVariant = 'white'\n\t\t| 'greenFilled'\n\t\t| 'greenOutlined'\n\t\t| 'greenLink'\n\t\t| 'contextMenuItem'\n\t\t| 'redFilled'\n\t\t| 'redOutlined'\n\t\t| 'orangeFilled';\n\n@Component({\n selector: 'klp-form-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n standalone: false\n})\nexport class ButtonComponent {\n\t@Input() variant: ButtonVariant = 'white';\n\t@Input() size: 'small' | 'medium' | 'large' = 'medium';\n\t@Input() fullWidth = false;\n\t@Input() hasBorder = true;\n\t@Input() disabled = false;\n\t@Input() isLoading = false;\n\t@Input() type: 'button' | 'submit' = 'button';\n\t@Input() clickCallback: (event: Event) => Promise<any>;\n\n\t@HostBinding('class._fullWidth') get _() {\n\t\treturn this.fullWidth;\n\t}\n\n\tasync onClick(event: Event) {\n\t\tif (this.disabled) {\n\t\t\tevent.stopPropagation();\n\t\t\treturn;\n\t\t}\n\n\t\tif (isValueSet(this.clickCallback)) {\n\t\t\tthis.isLoading = true;\n\t\t\tawait this.clickCallback(event).finally(() => {\n\t\t\t\tthis.isLoading = false;\n\t\t\t});\n\t\t}\n\t}\n}\n","<button class=\"buttonFundamentals\"\n\t[ngClass]=\"[\n\t\tvariant,\n\t\tsize,\n\t\tfullWidth ? 'fullWidth' : '',\n\t\thasBorder ? '' : 'no-border',\n\t\tdisabled ? 'disabled' : ''\n\t]\"\n [type]=\"type\"\n (click)=\"onClick($event)\"\n >\n <div class=\"caption\" [ngClass]=\"{invisible: isLoading}\">\n <ng-content></ng-content>\n </div>\n @if (isLoading) {\n <div class=\"loadingSpinnerContainer\">\n <klp-form-loading-indicator variant=\"spinner\" size=\"small\"></klp-form-loading-indicator>\n </div>\n }\n</button>\n","import { Component, Input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ValueAccessorBase } from '../value-accessor-base/value-accessor-base.component';\n\n@Component({\n selector: 'klp-form-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: CheckboxComponent, multi: true }],\n standalone: false\n})\nexport class CheckboxComponent extends ValueAccessorBase<boolean> {\n\t@Input() caption: string;\n\t@Input() renderUndefinedAsIndeterminate = false;\n}\n","<div class=\"componentContainer\">\n <label>\n <div class=\"checkboxContainer\">\n <div class=\"checkBoxVisualContainer\">\n <input type=\"checkbox\" class=\"checkboxNative\"\n [(ngModel)]=\"innerValue\"\n (change)=\"setInnerValueAndNotify(innerValue); touch()\"\n [disabled]=\"disabled\"\n #nativeInputRef\n />\n <div class=\"checkboxVisual\" [ngClass]=\"{filledWithColor: innerValue === true || (renderUndefinedAsIndeterminate && innerValue === undefined)}\">\n @if (innerValue === true) {\n <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"9\" viewBox=\"0 0 12 9\" fill=\"none\">\n <path d=\"M10.3333 1L3.91667 7.41667L1 4.5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n }\n @if (renderUndefinedAsIndeterminate && innerValue === undefined) {\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"11\" height=\"2\" viewBox=\"0 0 11 2\" fill=\"none\">\n <path d=\"M1 1H9.16667\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n }\n </div>\n </div>\n </div>\n @if (caption) {\n <div class=\"caption\">{{ caption }}</div>\n }\n </label>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {ValueAccessorBase} from '../value-accessor-base/value-accessor-base.component';\n\n@Component({\n selector: 'klp-form-email-input',\n templateUrl: './email-input.component.html',\n styleUrls: ['./email-input.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: EmailInputComponent, multi: true }],\n standalone: false\n})\nexport class EmailInputComponent extends ValueAccessorBase<string> {\n\t@Input() placeholder = '';\n}\n","<div class=\"componentContainer\">\n\t<input\n\t\ttype=\"email\"\n\t\tclass=\"form-control\"\n\t\t[(ngModel)]=\"innerValue\"\n\t\t(input)=\"setInnerValueAndNotify($event.target.value)\"\n\t\t[placeholder]=\"placeholder\"\n\t\t(blur)=\"touch()\"\n\t\t[disabled]=\"disabled\"\n\t\t[ngClass]=\"{showErrors: isInErrorState()}\"\n\t\t#nativeInputRef\n\t/>\n\t<div class=\"tail\">\n\t\t<ng-container [ngTemplateOutlet]=\"getTailTpl()\"></ng-container>\n\t</div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {ValueAccessorBase} from \"../value-accessor-base/value-accessor-base.component\";\n\n@Component({\n selector: 'klp-form-number-input',\n templateUrl: './number-input.component.html',\n styleUrls: ['./number-input.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: NumberInputComponent, multi: true }],\n standalone: false\n})\nexport class NumberInputComponent extends ValueAccessorBase<string | number> {\n\t@Input() placeholder: string;\n\t@Input() parseNumber: boolean = false;\n\n\tsetInnerValueAndNotify(value: string | number): void {\n\t\tif (this.parseNumber && typeof value === 'string') {\n\t\t\tsuper.setInnerValueAndNotify(Number(value));\n\t\t} else {\n\t\t\tsuper.setInnerValueAndNotify(value);\n\t\t}\n\t}\n}\n","<input\n\ttype=\"number\"\n\tclass=\"form-control\"\n\t[(ngModel)]=\"innerValue\"\n\t(input)=\"setInnerValueAndNotify($event.target.value)\"\n\t[placeholder]=\"placeholder ? placeholder : ''\"\n\t[ngClass]=\"{showErrors: isInErrorState()}\"\n\t[disabled]=\"disabled\"\n\t#nativeInputRef\n/>\n","import {Component, Input} from '@angular/core';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {ValueAccessorBase} from '../value-accessor-base/value-accessor-base.component';\n\n@Component({\n selector: 'klp-form-password-field',\n templateUrl: './password-field.component.html',\n styleUrls: ['./password-field.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: PasswordFieldComponent, multi: true }],\n standalone: false\n})\nexport class PasswordFieldComponent extends ValueAccessorBase<string> {\n\t@Input() placeholder = 'Password';\n}\n","<input\n\ttype=\"password\"\n\tclass=\"form-control\"\n [ngClass]=\"{showErrors: isInErrorState()}\"\n\t[(ngModel)]=\"innerValue\"\n\t(input)=\"setInnerValueAndNotify($event.target.value)\"\n\t[placeholder]=\"placeholder\"\n\t(blur)=\"touch()\"\n\t[disabled]=\"disabled\"\n\t#nativeInputRef\n/>\n","import {\n\tAfterViewInit,\n\tComponent,\n\tContentChild,\n\tDirective,\n\tElementRef,\n\tEventEmitter,\n\tHost,\n\tInject,\n\tInjectionToken,\n\tInput, NgZone,\n\tOnChanges,\n\tOnDestroy,\n\tOptional,\n\tOutput,\n\tSimpleChanges,\n\tTemplateRef,\n\tViewChild\n} from '@angular/core';\nimport {ControlContainer, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {ValueAccessorBase} from '../value-accessor-base/value-accessor-base.component';\nimport {FormElementComponent} from '../../form/form-element/form-element.component';\nimport {isValueSet, stringIsSetAndFilled} from '../../util/values';\nimport {awaitableForNextCycle} from \"../../util/angular\";\n\nexport type AppSelectOptions = Array<AppSelectOption>;\nexport type AppSelectOption = {\n\tid: any;\n\tname: string;\n\tdescription?: string;\n\tactive?: boolean;\n\tdisabled?: boolean;\n};\n\nexport const SELECT_TRANSLATIONS = new InjectionToken<any>('klp.form.select.translations');\n\n@Directive({\n selector: '[klpSelectOptionTpl]',\n standalone: false\n})\nexport class KlpSelectOptionTemplateDirective {\n}\n\n@Component({\n selector: 'klp-form-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: SelectComponent, multi: true }],\n standalone: false\n})\nexport class SelectComponent extends ValueAccessorBase<string | string[]> implements OnChanges, AfterViewInit, OnDestroy {\n\t@Input() placeholder: string;\n\t@Input() prefix: string;\n\t@Input() orientation: 'vertical' | 'horizontal' = 'horizontal';\n\t@Input() options: AppSelectOptions;\n\t@Input() multiple = false;\n\t@Input() multipleDisplayedAsAmount = false;\n\t@Input() clearable = true;\n\t@Input() truncateOptions = true;\n\t@Input() withSeparatingLine = false;\n\t@Input() searchable = true;\n\t@Input() hasBorderLeft = true;\n\t@Input() hasBorderRight = true;\n\t@Input() public dropdownPosition: 'auto' | 'bottom' | 'top' | 'left' | 'right' = null;\n\t@Input() public dropdownAlignment: 'left' | 'right' = 'left';\n\t@Input() public customSearchFn: (term: string, item: { id: string; name: string; description: string }) => boolean;\n\t@Input() public footerElement: TemplateRef<any>;\n\t@Output() public onSearch = new EventEmitter<string>();\n\t@Output() public onEndReached = new EventEmitter<void>();\n\t@Output() public onOpened = new EventEmitter<void>();\n\t@Output() public onClosed = new EventEmitter<void>();\n\t@Output() public onBlur = new EventEmitter<void>();\n\t@Output() public onClear = new EventEmitter<void>();\n\t@Output() public onEnterKey = new EventEmitter<string>();\n\t@ViewChild('ngSelect') ngSelect;\n\t@ViewChild('tailRef') tailRef: ElementRef;\n\t@ViewChild('tailMockRef') tailMockRef: ElementRef;\n\t@ContentChild(KlpSelectOptionTemplateDirective, {read: TemplateRef}) customOptionTpl: TemplateRef<any>;\n\n\tprivate lastItemIndexReached = -1;\n\tpublic dropdownPositionToUse: 'auto' | 'bottom' | 'top' | 'left' | 'right' = 'bottom';\n\tprivate isOpen: boolean = false;\n\tprivate dropdownPanelOffsetX = 0;\n\tprivate dropdownPanelOffsetY = 0;\n\tprivate anchorAbsolute: HTMLDivElement;\n\tprivate anchorFixed: HTMLDivElement;\n\n\tconstructor(\n\t\t@Optional() @Host() protected parent: FormElementComponent,\n\t\t@Optional() @Host() protected controlContainer: ControlContainer,\n\t\t@Inject(SELECT_TRANSLATIONS) @Optional() private translations: any,\n\t\tprivate elRef: ElementRef,\n\t\tprivate ngZone: NgZone,\n\t) {\n\t\tsuper(parent, controlContainer);\n\t}\n\n\tngAfterViewInit(): void {\n\t\tthis.addPrefix();\n\t\tthis.addTail();\n\t\tthis.elRef.nativeElement.querySelector('input').addEventListener('keydown', this.keyListener);\n\t}\n\n\tprivate keyListener = (e) => {\n\t\tif (e.key === 'Enter') {\n\t\t\tthis.onEnterKey.emit(e.target.value);\n\n\t\t}\n\t}\n\n\tprivate addTail(): void {\n\t\tif (this.tailMockRef) {\n\t\t\tconst container = this.elRef.nativeElement.querySelector('.ng-select-container');\n\t\t\tconst arrowWrapper = this.elRef.nativeElement.querySelector('.ng-arrow-wrapper');\n\t\t\tcontainer.insertBefore(this.tailMockRef.nativeElement, arrowWrapper);\n\t\t}\n\t}\n\n\tprivate addPrefix(): void {\n\t\tif (stringIsSetAndFilled(this.prefix)) {\n\t\t\tconst container = this.elRef.nativeElement.querySelector('.ng-select-container');\n\t\t\tconst newNode = document.createElement('div');\n\t\t\tnewNode.className = 'prefix';\n\t\t\tnewNode.innerText = this.prefix;\n\t\t\tcontainer.insertBefore(newNode, container.children[0]);\n\t\t}\n\t}\n\n\tasync ngOnChanges(changes: SimpleChanges): Promise<void> {\n\t\tif (this.isOpen && isValueSet(changes.options)) {\n\t\t\tthis.lastItemIndexReached = -1;\n\t\t\t// waiting for the thing to render until we fire the event\n\t\t\tawait awaitableForNextCycle();\n\t\t\tawait this.setWidthBasedOnOptionsWidths();\n\t\t}\n\t\tif (changes.dropdownPosition) {\n\t\t\tthis.dropdownPositionToUse = this.dropdownPosition;\n\t\t}\n\t\tif (changes.prefix) {\n\t\t\tconst container = this.elRef?.nativeElement?.querySelector('.ng-select-container .prefix');\n\t\t\tif (isValueSet(container)) {\n\t\t\t\tcontainer.innerText = changes.prefix.currentValue;\n\t\t\t}\n\t\t}\n\t}\n\n\tgetDefaultTranslation(key: string): (x: any) => string {\n\t\tswitch (key) {\n\t\t\tcase 'placeholder':\n\t\t\t\treturn () => 'Pick an option';\n\t\t\tcase 'amountSelected':\n\t\t\t\treturn (amount) => `${amount} selected`;\n\t\t}\n\t}\n\n\tgetTranslation(key: string, params: any = null): string {\n\t\tif (key === 'placeholder' && stringIsSetAndFilled(this.placeholder)) {\n\t\t\treturn this.placeholder;\n\t\t}\n\t\treturn this.translations?.[key]?.(params) ?? this.getDefaultTranslation(key)(params);\n\t}\n\n\tonScroll(lastItemIndex: number): void {\n\t\tconst visibleItems = this.ngSelect?.itemsList?.filteredItems?.length ?? 0;\n\t\tif (this.lastItemIndexReached < lastItemIndex && lastItemIndex === visibleItems) {\n\t\t\tthis.onEndReached.emit();\n\t\t}\n\t\tthis.lastItemIndexReached = Math.max(lastItemIndex, this.lastItemIndexReached);\n\t\tthis.setWidthBasedOnOptionsWidths();\n\t}\n\n\tsearchQueryChanged(searchQuery: string): void {\n\t\tthis.onSearch.emit(searchQuery);\n\t}\n\n\tasync onOpen(): Promise<void> {\n\t\tthis.isOpen = true;\n\n\t\tif (this.orientation === 'horizontal' && !isValueSet(this.dropdownPosition)) {\n\t\t\tthis.determineDropdownPosition();\n\t\t}\n\n\t\tif (!this.truncateOptions) {\n\t\t\tthis.createAnchors();\n\t\t}\n\t\t// waiting for the thing to render until we fire the event\n\t\tawait awaitableForNextCycle();\n\t\tthis.onOpened.emit();\n\n\t\tawait this.setWidthBasedOnOptionsWidths();\n\t\tif (!this.truncateOptions) {\n\t\t\tthis.setFixedDropdownPanelPosition();\n\t\t\tthis.ngZone.runOutsideAngular(() => {\n\t\t\t\t[...this.getAllLimitingContainers(), window].forEach(e => e.addEventListener('scroll', this.setFixedDropdownPanelPosition));\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate createAnchors(): void {\n\t\tthis.anchorAbsolute = document.createElement('div');\n\t\tif (this.dropdownPositionToUse === 'top') {\n\t\t\tthis.elRef.nativeElement.prepend(this.anchorAbsolute);\n\t\t} else {\n\t\t\tthis.elRef.nativeElement.appendChild(this.anchorAbsolute);\n\t\t}\n\n\t\tthis.anchorFixed = document.createElement('div');\n\t\tthis.anchorFixed.style.position = 'fixed';\n\t\tthis.elRef.nativeElement.appendChild(this.anchorFixed);\n\t}\n\n\tprivate removeAnchors(): void {\n\t\tthis.elRef.nativeElement.removeChild(this.anchorAbsolute);\n\t\tthis.elRef.nativeElement.removeChild(this.anchorFixed);\n\t}\n\n\tprivate setFixedDropdownPanelPosition = () => {\n\t\tconst dropdownPanel = this.elRef.nativeElement.querySelector('ng-dropdown-panel');\n\t\tdropdownPanel.style.visibility = 'initial';\n\t\tif (this.orientation === 'vertical') {\n\t\t\treturn;\n\t\t}\n\t\tconst difference = this.anchorAbsolute.getBoundingClientRect().top - this.anchorFixed.getBoundingClientRect().top;\n\t\tthis.dropdownPanelOffsetY = difference;\n\n\t\tdropdownPanel.style.position = 'fixed';\n\t\tthis.setPanelOffsets();\n\t};\n\n\tprivate setWidthBasedOnOptionsWidths = async (): Promise<void> => {\n\t\tif (this.truncateOptions === false) {\n\t\t\tawait awaitableForNextCycle();\n\t\t\tif (!isValueSet(this.elRef.nativeElement.querySelector('.scrollable-content'))) {\n\t\t\t\tconst panel = this.elRef.nativeElement.querySelector('ng-dropdown-panel');\n\t\t\t\tpanel.style.width = `${this.elRef.nativeElement.clientWidth}px`;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.elRef.nativeElement.querySelector('.scrollable-content').classList.add('calculatingWidths');\n\t\t\tconst paddingForScrollbar = this.getScrollbarWidth();\n\t\t\tconst maxWidth = this.elRef.nativeElement.querySelector('.scrollable-content').getBoundingClientRect().width + paddingForScrollbar;\n\t\t\tthis.elRef.nativeElement.querySelector('.scrollable-content').classList.remove('calculatingWidths');\n\t\t\tconst dropdownPanel = this.elRef.nativeElement.querySelector('ng-dropdown-panel');\n\t\t\tif (dropdownPanel) {\n\t\t\t\tdropdownPanel.style.minWidth = `${this.elRef.nativeElement.clientWidth}px`;\n\t\t\t\tdropdownPanel.style.width = `${Math.max(this.elRef.nativeElement.clientWidth, maxWidth, dropdownPanel.getBoundingClientRect().width)}px`;\n\t\t\t\tawait awaitableForNextCycle();\n\t\t\t\tconst pickerWidth = this.elRef.nativeElement.getBoundingClientRect().width;\n\t\t\t\tconst dropdownPanelWidth = dropdownPanel.getBoundingClientRect().width;\n\n\t\t\t\tconst spaceLeftOfElRef = this.elRef.nativeElement.getBoundingClientRect().left;\n\t\t\t\tconst spaceRightOfElRef = window.innerWidth - (this.elRef.nativeElement.getBoundingClientRect().width + spaceLeftOfElRef);\n\t\t\t\tconst extraNeededSpace = dropdownPanelWidth - pickerWidth;\n\t\t\t\tif (this.dropdownAlignment === 'right') {\n\t\t\t\t\tif (extraNeededSpace > spaceLeftOfElRef) {\n\t\t\t\t\t\tthis.dropdownPanelOffsetX = -spaceLeftOfElRef + 10;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.dropdownPanelOffsetX = -extraNeededSpace;\n\t\t\t\t\t}\n\t\t\t\t} else if (extraNeededSpace > spaceRightOfElRef) {\n\t\t\t\t\tthis.dropdownPanelOffsetX = -extraNeededSpace + spaceRightOfElRef - 20;\n\t\t\t\t}\n\t\t\t\tthis.setPanelOffsets();\n\t\t\t}\n\t\t}\n\t};\n\n\tprivate getAllLimitingContainers(): Array<HTMLElement> {\n\t\tconst result = [];\n\t\tlet current = this.elRef.nativeElement;\n\t\twhile (current.parentElement) {\n\t\t\tif (this.isLimitingContainer(current.parentElement)) {\n\t\t\t\tresult.push(current.parentElement);\n\t\t\t}\n\t\t\tcurrent = current.parentElement;\n\t\t}\n\t\treturn result;\n\t}\n\n\tprivate setPanelOffsets(): void {\n\t\tconst dropdownPanel = this.elRef.nativeElement.querySelector('ng-dropdown-panel');\n\t\tif (!isValueSet(dropdownPanel)) {\n\t\t\treturn;\n\t\t}\n\t\tconst scrollPositionOffset = `translate(${this.dropdownPanelOffsetX}px, ${this.dropdownPanelOffsetY}px)`;\n\t\tconst dropdownPositionOffset = this.dropdownPositionToUse === 'top' ? `translateY(-100%) translateY(-8px)` : 'translateY(8px)';\n\t\tif (this.orientation === 'vertical') {\n\t\t\tdropdownPanel.style.transformOrigin = 'top left';\n\t\t\tdropdownPanel.style.transform = `rotate(90deg) translateY(-${this.elRef.nativeElement.getBoundingClientRect().width}px)`;\n\t\t} else {\n\t\t\tdropdownPanel.style.transform = [scrollPositionOffset, dropdownPositionOffset].join(' ');\n\t\t}\n\t}\n\n\tprivate determineDropdownPosition(): void {\n\t\tconst bottomSpace = window.innerHeight - this.elRef.nativeElement.getBoundingClientRect().top;\n\t\tif (bottomSpace >= 330) {\n\t\t\tthis.dropdownPositionToUse = 'bottom';\n\t\t} else {\n\t\t\tthis.dropdownPositionToUse = 'top';\n\t\t}\n\t}\n\n\tprivate isLimitingContainer(element: Element): boolean {\n\t\tconst style = getComputedStyle(element);\n\t\tif (style.overflowY === 'auto') {\n\t\t\treturn true;\n\t\t}\n\t\tif (style.overflow === 'auto') {\n\t\t\treturn true;\n\t\t}\n\t\tif (style.overflowY === 'scroll') {\n\t\t\treturn true;\n\t\t}\n\t\tif (style.overflow === 'scroll') {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic focus = (): void => {\n\t\tthis.ngSelect.focus();\n\t}\n\n\tpublic open = (): void => {\n\t\tthis.ngSelect.open();\n\t}\n\n\tpublic close = (): void => {\n\t\tthis.ngSelect.close();\n\t}\n\n\tpublic onClose(): void {\n\t\t[...this.getAllLimitingContainers(), window].forEach(e => e.removeEventListener('scroll', this.setFixedDropdownPanelPosition));\n\t\t// Give angular a second to render the closed situation before emitting the close event\n\t\tsetTimeout(() => {\n\t\t\tthis.isOpen = false;\n\t\t\tif (!this.truncateOptions) {\n\t\t\t\tthis.removeAnchors();\n\t\t\t}\n\t\t\tthis.onClosed.emit();\n\t\t});\n\t}\n\n\tonFocus(): void {\n\t\tconst singleValueInputElement = this.elRef.nativeElement.querySelector('.ng-select-single .ng-input');\n\t\tconst prefixElement = this.elRef.nativeElement.querySelector('.ng-select-single .prefix');\n\t\tif (isValueSet(singleValueInputElement) && isValueSet(prefixElement)) {\n\t\t\tconst prefixWidth = prefixElement.getBoundingClientRect().width;\n\t\t\tconst spacing = '0.4rem';\n\t\t\tsingleValueInputElement.style.left = `calc(${prefixWidth}px + ${spacing})`;\n\t\t} else if (isValueSet(singleValueInputElement)) {\n\t\t\tsingleValueInputElement.style.left = `0px`;\n\t\t}\n\t}\n\n\tprivate getScrollbarWidth(): number {\n\t\t// Create a temporary div element\n\t\tconst div = document.createElement('div');\n\n\t\t// Set the style to measure the scrollbar\n\t\tdiv.style.overflow = 'scroll'; // Enable scrollbar\n\t\tdiv.style.width = '100px'; // Set a fixed width\n\t\tdiv.style.height = '100px'; // Set a fixed height\n\t\tdiv.style.position = 'absolute'; // Prevent the element from taking space in the layout\n\t\tdiv.style.top = '-9999px'; // Position it out of the viewport\n\n\t\t// Append the element to the body\n\t\tdocument.body.appendChild(div);\n\n\t\t// Get the width of the scrollbar\n\t\tconst scrollbarWidth = div.offsetWidth - div.clientWidth;\n\n\t\t// Remove the temporary element from the DOM\n\t\tdocument.body.removeChild(div);\n\n\t\treturn scrollbarWidth;\n\t}\n\n\tngOnDestroy(): void {\n\t\tsuper.ngOnDestroy();\n\t\tthis.elRef.nativeElement?.querySelector('input')?.removeEventListener('keydown', this.keyListener);\n\t}\n}\n","<ng-select\n #ngSelect\n [placeholder]=\"getTranslation('placeholder')\"\n bindLabel=\"name\"\n bindValue=\"id\"\n [items]=\"options\"\n [clearable]=\"clearable\"\n [(ngModel)]=\"innerValue\"\n [ngClass]=\"{showErrors: isInErrorState(), verticalOrientation: orientation === 'vertical', truncateOptions: truncateOptions, nonTruncatedOptions: !truncateOptions, withSeparatingLine: withSeparatingLine, noBorderLeft: !hasBorderLeft, noBorderRight: !hasBorderRight}\"\n (change)=\"setInnerValueAndNotify(innerValue)\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n (blur)=\"touch(); onBlur.emit()\"\n (clear)=\"onClear.emit()\"\n (search)=\"searchQueryChanged($event.term)\"\n [searchable]=\"searchable\"\n [dropdownPosition]=\"dropdownPositionToUse\"\n [searchFn]=\"customSearchFn\"\n [selectOnTab]=\"true\"\n [virtualScroll]=\"true\"\n (scroll)=\"onScroll($event.end)\"\n (open)=\"onOpen()\"\n (close)=\"onClose()\"\n (focus)=\"onFocus()\"\n >\n <ng-template let-item=\"item\" ng-option-tmp>\n @if (customOptionTpl) {\n <ng-container [ngTemplateOutlet]=\"customOptionTpl\" [ngTemplateOutletContext]=\"{item: item}\"></ng-container>\n }\n @if (!customOptionTpl) {\n <div [attr.data-cy]=\"item.id\">\n {{ item.name }}\n @if (item.description) {\n <div class=\"dropdown-item-description\">\n {{ item.description }}\n </div>\n }\n </div>\n }\n </ng-template>\n @if (multiple && multipleDisplayedAsAmount && innerValue?.length > 1) {\n <ng-template ng-multi-label-tmp>\n <div class=\"ng-value\">\n <span class=\"ng-value-label\">{{getTranslation('amountSelected', innerValue?.length)}}</span>\n </div>\n </ng-template>\n }\n @if (footerElement) {\n <ng-template ng-footer-tmp>\n <ng-container [ngTemplateOutlet]=\"footerElement\"></ng-container>\n </ng-template>\n }\n</ng-select>\n\n<div class=\"tail\" #tailRef>\n <ng-container [ngTemplateOutlet]=\"getTailTpl()\"></ng-container>\n</div>\n<!-- I need this mock to reserve the space. I cant use the normal tail because that opens the dropdown from ng-select -->\n<!-- I have no idea how to avoid that -->\n<div class=\"tailMock\" #tailMockRef>\n <ng-container [ngTemplateOutlet]=\"getTailTpl()\"></ng-container>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'klp-select-footer',\n templateUrl: './select-footer.component.html',\n styleUrls: ['./select-footer.component.scss'],\n standalone: false\n})\nexport class SelectFooterComponent {\n\t@Input() public prefix: string;\n\t@Input() public text: string;\n}\n","<div class=\"componentContainer\">\n\t<span class=\"prefix\">{{prefix}}</span>\n\t<span class=\"text\">{{text}}</span>\n</div>\n","import {\n\tAfterViewInit,\n\tComponent,\n\tContentChild,\n\tElementRef,\n\tHost,\n\tInput,\n\tNgZone,\n\tOnInit,\n\tOptional,\n\tQueryList,\n\tTemplateRef,\n\tViewChildren,\n} from '@angular/core';\nimport {ControlContainer, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {isValueSet} from '../../util/values';\nimport {ValueAccessorBase} from '../value-accessor-base/value-accessor-base.component';\nimport {FormElementComponent} from '../../form/form-element/form-element.component';\n\n@Component({\n selector: 'klp-form-sortable-items',\n templateUrl: './sortable-items.component.html',\n styleUrls: ['./sortable-items.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: SortableItemsComponent,\n multi: true,\n },\n ],\n standalone: false\n})\nexport class SortableItemsComponent\n\textends ValueAccessorBase<Array<any>>\n\timplements OnInit, AfterViewInit\n{\n\t@ContentChild(TemplateRef) template: TemplateRef<any>;\n\t@Input() sortableItemSize: 'sm' | 'lg' = 'lg';\n\n\t@ViewChildren('dragItem') dragItems: QueryList<ElementRef>;\n\tpublic dragSourceIndex: number;\n\tprivate currentDragPosition: number;\n\n\tprivate scrollInterval = null;\n\n\tconstructor(\n\t\t@Host() @Optional() protected parent: FormElementComponent,\n\t\t@Host() @Optional() protected controlContainer: ControlContainer,\n\t\tprivate ngZone: NgZone)\n\t{\n\t\tsuper(parent, controlContainer);\n\t}\n\n\tngAfterViewInit(): void {\n\t\tthis.setDragItemListeners();\n\t\tthis.dragItems.changes.subscribe(() => {\n\t\t\tthis.setDragItemListeners();\n\t\t});\n\t}\n\n\tprivate setDragItemListeners(): void {\n\t\tthis.dragItems.forEach(e => {\n\t\t\tthis.ngZone.runOutsideAngular(() => {\n\t\t\t\te.nativeElement.removeEventListener('dragstart', this.onDragStart);\n\t\t\t\te.nativeElement.removeEventListener('dragover', this.onDragOver);\n\t\t\t\te.nativeElement.removeEventListener('dragenter', this.onDragEnter);\n\t\t\t\te.nativeElement.removeEventListener('dragend', this.onDragEnd);\n\n\t\t\t\te.nativeElement.addEventListener('dragstart', this.onDragStart);\n\t\t\t\te.nativeElement.addEventListener('dragover', this.onDragOver);\n\t\t\t\te.nativeElement.addEventListener('dragenter', this.onDragEnter);\n\t\t\t\te.nativeElement.addEventListener('dragend', this.onDragEnd);\n\n\t\t\t\te.nativeElement.querySelector('.visual').style.transform = `translateY(0%)`;\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate onDragOver = (ev) => {\n\t\tev.preventDefault();\n\t}\n\n\tprivate onDragEnter = (ev) => {\n\t\tif (ev.clientY < 80) {\n\t\t\tthis.scrollPage(40);\n\t\t} else if (window.innerHeight - ev.clientY < 80) {\n\t\t\tthis.scrollPage(-40);\n\t\t} else {\n\t\t\tthis.stopScrolling();\n\t\t}\n\t\tev.dataTransfer.dropEffect = 'move';\n\t\tconst targetIndex = this.dragItems.map(e => e.nativeElement).findIndex(e => e === (ev.target as HTMLElement));\n\t\tif (targetIndex === -1) {\n\t\t\treturn;\n\t\t}\n\t\tthis.currentDragPosition = targetIndex;\n\t\tthis.dragItems.forEach((dragItem, i) => {\n\t\t\tif (this.dragSourceIndex === i) {\n\n\t\t\t\tif (this.dragSourceIndex > this.currentDragPosition) {\n\t\t\t\t\tconst heightsAbove = this.dragItems.filter((e, i) => {\n\t\t\t\t\t\tif (i >= this.dragSourceIndex) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn i > this.currentDragPosition - 1;\n\t\t\t\t\t}).reduce((acc, cur, i) => {\n\t\t\t\t\t\treturn acc + cur.nativeElement.getBoundingClientRect().height;\n\t\t\t\t\t}, 0);\n\t\t\t\t\tdragItem.nativeElement.querySelector('.visual').style.transform = `translateY(${-heightsAbove}px)`;\n\t\t\t\t}\n\n\t\t\t\telse if (this.dragSourceIndex < this.currentDragPosition) {\n\t\t\t\t\tconst heightsAbove = this.dragItems.filter((e, i) => {\n\t\t\t\t\t\tif (i <= this.dragSourceIndex) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn i <= this.currentDragPosition;\n\t\t\t\t\t}).reduce((acc, cur, i) => {\n\t\t\t\t\t\treturn acc + cur.nativeElement.getBoundingClientRect().height;\n\t\t\t\t\t}, 0);\n\t\t\t\t\tdragItem.nativeElement.querySelector('.visual').style.transform = `translateY(${heightsAbove}px)`;\n\t\t\t\t}\n\n\t\t\t\telse {\n\t\t\t\t\tdragItem.nativeElement.querySelector('.visual').style.transform = `translateY(${0}px)`;\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst heightOfCurrentlyDraggedItem = (this.dragItems.get(this.dragSourceIndex).nativeElement.getBoundingClientRect().height);\n\t\t\tif (this.shouldShoveDown(i)) {\n\t\t\t\tdragItem.nativeElement.querySelector('.visual').style.transform = `translateY(${heightOfCurrentlyDraggedItem}px)`;\n\t\t\t}\n\t\t\telse if (this.shouldShoveUp(i)) {\n\t\t\t\tdragItem.nativeElement.querySelector('.visual').style.transform = `translateY(${-heightOfCurrentlyDraggedItem}px)`;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdragItem.nativeElement.querySelector('.visual').style.transform = `translateY(0%)`;\n\t\t\t}\n\t\t});\n\n\t\tthis.currentDragPosition = targetIndex;\n\t}\n\n\tprivate onDragStart = (ev) => {\n\t\tev.dataTransfer.effectAllowed = 'move';\n\t\tthis.ngZone.run(() => {\n\t\t\tthis.dragSourceIndex = this.dragItems.map(e => e.nativeElement).findIndex(e => e === ev.target);\n\t\t\tthis.currentDragPosition = this.dragSourceIndex;\n\t\t});\n\t};\n\n\tprivate onDragEnd = (ev) => {\n\t\tthis.stopScrolling();\n\t\tconst movedElement = this.innerValue[this.dragSourceIndex];\n\t\tconst isMovedToLastPlace = this.currentDragPosition === this.innerValue.length - 1;\n\t\tthis.ngZone.run(() => {\n\t\t\tthis.innerValue = this.innerValue\n\t\t\t.filter((e, i) => i !== this.dragSourceIndex)\n\t\t\t.reduce((acc, cur, i) => {\n\t\t\t\tif (i === this.currentDragPosition) {\n\t\t\t\t\treturn [...acc, movedElement, cur];\n\t\t\t\t}\n\t\t\t\treturn [...acc, cur];\n\t\t\t}, []);\n\t\t\tif (isMovedToLastPlace) {\n\t\t\t\tthis.innerValue = [...this.innerValue, movedElement];\n\t\t\t}\n\t\t\tthis.dragItems.forEach((dragItem, i) => {\n\t\t\t\tdragItem.nativeElement.querySelector('.visual').style.transform = `translateY(0%)`;\n\t\t\t});\n\t\t\tthis.currentDragPosition = -1;\n\t\t\tthis.dragSourceIndex = -1;\n\t\t\tthis.setInnerValueAndNotify(this.innerValue);\n\t\t});\n\t}\n\n\tshouldShoveDown(index: number): boolean {\n\t\treturn this.dragSourceIndex > index && this.currentDragPosition <= index;\n\t}\n\n\tshouldShoveUp(index: number): boolean {\n\t\treturn this.dragSourceIndex < index && this.currentDragPosition >= index;\n\t}\n\n\tprivate scrollPage(scrollAmount: number): void {\n\t\tif (!isValueSet(this.scrollInterval)) {\n\t\t\tthis.scrollInterval = setInterval(() => {\n\t\t\t\twindow.scroll({\n\t\t\t\t\ttop: document.scrollingElement.scrollTop - scrollAmount,\n\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t});\n\t\t\t\tif (document.scrollingElement.scrollTop <= 100) {\n\t\t\t\t\tthis.stopScrolling();\n\t\t\t\t}\n\t\t\t}, 100);\n\t\t}\n\t}\n\n\tprivate stopScrolling(): void {\n\t\tclearInterval(this.scrollInterval);\n\t\tthis.scrollInterval = null;\n\t}\n}\n","<ng-template #listItem>\n @for (item of innerValue; track item; let index = $index) {\n <li\n class=\"sortableItem\"\n [draggable]=\"!disabled\"\n\t\t\t[ngClass]=\"{\n\t\t\tlargeSortableItem: sortableItemSize === 'lg',\n\t\t \tsmallSortableItem: sortableItemSize === 'sm',\n\t\t \t}\"\n #dragItem\n >\n <div class=\"visual\">\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item, index:index }\"></ng-container>\n </div>\n </li>\n }\n</ng-template>\n\n@if (!disabled) {\n <ol\n class=\"itemsContainer\"\n [ngClass]=\"{dragInProgress: dragSourceIndex >= 0}\"\n >\n <ng-container *ngTemplateOutlet=\"listItem\"></ng-container>\n </ol>\n}\n\n@if (disabled) {\n <ol class=\"itemsContainer disabled-mouse-cursor\">\n <ng-container *ngTemplateOutlet=\"listItem\"></ng-container>\n </ol>\n}\n","import {Component, EventEmitter, Input, Output, TemplateRef} from '@angular/core';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {ValueAccessorBase} from '../value-accessor-base/value-accessor-base.component';\n\n@Component({\n selector: 'klp-form-text-input',\n templateUrl: './text-input.component.html',\n styleUrls: ['./text-input.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: TextInputComponent, multi: true }],\n standalone: false\n})\nexport class TextInputComponent extends ValueAccessorBase<string> {\n\tprivate isPeekingPassword = false;\n\n\t@Input() placeholder: string;\n\t@Input() type: 'text' | 'password' = 'text';\n\t@Input() clearable = false;\n\t@Input() icon: 'search';\n\t@Input() hasBorderLeft = true;\n\t@Input() hasBorderRight = true;\n\t@Input() passwordPeekIcon: TemplateRef<any>;\n\t@Input() size: 'small' | 'medium' = 'medium';\n\t@Output() onBlur = new EventEmitter<void>();\n\n\tpublic togglePeakPassword(): void {\n\t\tthis.isPeekingPassword = !this.isPeekingPassword;\n\t}\n\n\tpublic getType(): 'text' | 'password' {\n\t\tif (this.type === 'text') {\n\t\t\treturn 'text';\n\t\t}\n\t\treturn this.isPeekingPassword ? 'text' : 'password';\n\t}\n}\n","<div class=\"componentContainer\" [ngClass]=\"{smallSized: size === 'small'}\">\n @if (icon?.length > 0) {\n @if (icon === 'search') {\n <i class=\"ti-search\"></i>\n }\n }\n <input\n [type]=\"getType()\"\n [(ngModel)]=\"innerValue\"\n [ngClass]=\"{showErrors: isInErrorState(), hasIcon: icon?.length > 0, hasClearButton: clearable, hasTail: getTailTpl(), noBorderLeft: !hasBorderLeft, noBorderRight: !hasBorderRight}\"\n (input)=\"setInnerValueAndNotify($event.target.value)\"\n [placeholder]=\"placeholder ? placeholder : ''\"\n (blur)=\"touch(); onBlur.emit()\"\n [disabled]='disabled'\n #nativeInputRef\n />\n <div class=\"tail\">\n <ng-container [ngTemplateOutlet]=\"getTailTpl()\"></ng-container>\n @if (clearable && innerValue?.length > 0) {\n <div class=\"clearIcon\" (click)=\"resetToNull()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M15 5L5 15M5 5L15 15\" stroke=\"#475467\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n }\n @if (passwordPeekIcon && type === 'password') {\n <div class=\"peakBtn\" (click)=\"togglePeakPassword()\">\n <ng-container [ngTemplateOutlet]=\"passwordPeekIcon\"></ng-container>\n </div>\n }\n </div>\n</div>\n","import {Component, Input} from '@angular/core';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {ValueAccessorBase} from '../value-accessor-base/value-accessor-base.component';\n\n@Component({\n selector: 'klp-form-toggle',\n templateUrl: './toggle.component.html',\n styleUrls: ['./toggle.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: ToggleComponent, multi: true }],\n standalone: false\n})\nexport class ToggleComponent extends ValueAccessorBase<boolean> {\n\t@Input() transparentBackground = true;\n}\n","<div class=\"componentContainer\" [ngClass]=\"{disabled: disabled}\">\n\t<div class=\"hiddenValue\" data-cy-value>{{innerValue}}</div>\n\t<input type=\"checkbox\" class=\"nativeCheckbox\"\n\t\t[(ngModel)]=\"innerValue\"\n\t\t(input)=\"setInnerValueAndNotify($event.target.checked); touch()\"\n\t\t[disabled]=\"disabled\"\n\t\t[ngClass]=\"{showErrors: isInErrorState()}\"\n\t #nativeInputRef\n\t/>\n\t<div class=\"toggleVisual\" [ngClass]=\"{transparentBackground: transparentBackground}\"></div>\n</div>\n","import {Component, ElementRef, Host, OnInit, Optional, TemplateRef, ViewChild} from '@angular/core';\nimport {FormElementComponent} from \"../form-element/form-element.component\";\nimport {isNullOrUndefined} from \"../../util/values\";\n\n@Component({\n selector: 'klp-form-caption',\n templateUrl: './form-caption.component.html',\n styleUrls: ['./form-caption.component.scss'],\n standalone: false\n})\nexport class FormCaptionComponent implements OnInit {\n\t@ViewChild('contentRef') public contentRef: TemplateRef<any>;\n\n\tconstructor(@Host() @Optional() private parent: FormElementComponent) {}\n\n\tngOnInit(): void {\n\t\t// this is being run next cycle, because we dont want to fail if the order of components is as follows:\n\t\t// <app-form-error />\n\t\t// <some-input />\n\t\t// That would fail, because the logic of the form error is run first, and at that moment, the `some-input` isnt registered yet\n\t\tsetTimeout(() => {\n\t\t\tthis.parent.registerCaption(this.contentRef);\n\t\t});\n\t}\n}\n","<ng-template #contentRef>\n\t<ng-content></ng-content>\n</ng-template>\n","import {Component, ContentChild, Directive, Host, Input, OnInit, Optional, TemplateRef, ViewChild} from '@angular/core';\nimport {FormElementComponent} from \"../form-element/form-element.component\";\nimport {ErrorTypes} from \"../../types\";\n\n@Component({\n selector: 'klp-form-error',\n templateUrl: './form-error.component.html',\n styleUrls: ['./form-error.component.scss'],\n standalone: false\n})\nexport class FormErrorComponent implements OnInit {\n\t@Input() error: ErrorTypes;\n\t@ViewChild('contentRef') public contentRef: TemplateRef<any>;\n\t@ContentChild(TemplateRef) contentChild: TemplateRef<any>;\n\tconstructor(@Host() @Optional() private parent: FormElementComponent) {}\n\n\tngOnInit(): void {\n\t\t// this is being run next cycle, because we dont want to fail if the order of components is as follows:\n\t\t// <app-form-error />\n\t\t// <some-input />\n\t\t// That would fail, because the logic of the form error is run first, and at that moment, the `some-input` isnt registered yet\n\t\tsetTimeout(() => {\n\t\t\tthis.parent.registerErrorHandler(this.error, this.contentRef);\n\t\t});\n\t}\n\n\tpublic getErrorValueMessage(): string {\n\t\treturn this.parent.getAttachedControl().errors[this.error];\n\t}\n}\n","<ng-template #contentRef>\n @if (error !== 'async') {\n <ng-container [ngTemplateOutlet]=\"contentChild\"></ng-container>\n }\n @if (error === 'async') {\n <div>{{getErrorValueMessage()}}</div>\n }\n</ng-template>\n","import { InjectionToken } from '@angular/core';\nimport { isArrayOf } from '../../util/arrays';\n\nexport class FormValidationError extends Error {\n\tpublic readonly name = 'FormValidationError';\n\tpublic readonly path: string;\n\n\tconstructor(path: string, message: string) {\n\t\tsuper(message);\n\t\tthis.path = path;\n\t}\n}\n\nexport type FormValidationErrors = Array<FormValidationError>;\n\nexport type FormErrorHandler = (error: any) => FormValidationErrors;\n\nexport const KLP_FORM_ERROR_HANDLER = new InjectionToken<FormErrorHandler>('KLP_FORM_ERROR_HANDLER');\n\n\nexport const DefaultErrorHandler: FormErrorHandler = (error: any) => {\n\tif (Array.isArray(error) && isArrayOf(error, FormValidationError)) {\n\t\t// If the error is an array of FormValidationErrors, then pass it along.\n\t\treturn error;\n\t} else if (error instanceof FormValidationError) {\n\t\t// If the error is a FormValidationError, then wrap it and pass it on.\n\t\treturn [error];\n\t}\n\n\tthrow error;\n};\n\n","import {Component, HostBinding, inject, Input, OnInit} from '@angular/core';\nimport {FormComponent, invalidFieldsSymbol} from '../form.component';\nimport { ButtonVariant } from '../../elements/button/button.component';\nimport { DefaultErrorHandler, FormValidationError, KLP_FORM_ERROR_HANDLER } from '../form-validation-error/form-validation-error';\n\nexport type SubmitButtonVariant = Extract<ButtonVariant,\n\t| 'greenFilled'\n\t| 'redFilled'\n\t| 'greenOutlined'\n\t| 'white'\n>;\n\n@Component({\n selector: 'klp-form-submit-button',\n templateUrl: './form-submit-button.component.html',\n styleUrls: ['./form-submit-button.component.scss'],\n standalone: false\n})\nexport class FormSubmitButtonComponent implements OnInit{\n\tprivate parentForm = inject(FormComponent, {optional: true});\n\tprivate handleError = inject(KLP_FORM_ERROR_HANDLER, {optional: true}) ?? DefaultErrorHandler;\n\tpublic buttonType: 'submit' | 'button' = 'submit';\n\n\t@Input() public isLoading = false;\n\t@Input() @HostBinding('class._fullWidth') public fullWidth = false;\n\t@Input() public variant: SubmitButtonVariant = 'greenFilled';\n\t@Input() public submitCallback: (renderedAndEnabledValues: object, allRenderedValues: object) => Promise<any>;\n\t@Input() public before: () => Promise<any> = () => Promise.resolve();\n\t@Input() public after: () => Promise<any> = () => Promise.resolve();\n\t@Input() public disabled: boolean = false;\n\n\tngOnInit(): void {\n\t\tif (this.parentForm.allowSubmitOn === 'buttonOnly') {\n\t\t\tthis.buttonType = 'button';\n\t\t} else {\n\t\t\tthis.buttonType = 'submit';\n\t\t}\n\t}\n\n\tprivate setValidationError = (e: FormValidationError) => {\n\t\tthis.parentForm.formGroup.get(e.path)?.setErrors({ message: { value: e.message }});\n\t}\n\n\tasync submitForm(): Promise<void> {\n\t\tawait this.before().catch(() => null);\n\n\t\ttry {\n\t\t\tconst [renderedAndEnabledValues, renderedValues] = await this.parentForm.trySubmit();\n\t\t\tthis.isLoading = true;\n\t\t\tawait this.submitCallback(renderedAndEnabledValues, renderedValues)\n\t\t\t\t.finally(() => this.isLoading = false);\n\t\t} catch (e) {\n\t\t\tif (e === invalidFieldsSymbol) {\n\t\t\t\treturn; // swallow the error, the framework will scroll to the field that needs attention\n\t\t\t}\n\t\t\tthis.handleError(e).forEach(this.setValidationError);\n\t\t\treturn;\n\t\t}\n\n\t\tawait this.after();\n\t}\n}\n","<klp-form-button\n\t\t[variant]=\"variant\"\n\t\t(click)=\"submitForm()\"\n\t\t[disabled]=\"isLoading || disabled\"\n\t\t[isLoading]=\"isLoading\"\n\t\t[fullWidth]=\"fullWidth\"\n\t\t[type]=\"buttonType\"\n\t\t[ngClass]=\"fullWidth ? 'fullWidth' : ''\"\n\t>\n\t<ng-content></ng-content>\n</klp-form-button>\n","import {Component, Host, Input, Optional} from '@angular/core';\nimport {ControlContainer} from '@angular/forms';\nimport {ValueAccessorBase} from './value-accessor-base.component';\nimport {FormElementComponent} from '../../form/form-element/form-element.component';\nimport {isValueSet} from '../../util/values';\n\n@Component({\n selector: '',\n template: '',\n standalone: false\n})\nexport class MultipleValueAccessorBase<T> extends ValueAccessorBase<Array<T> | T> {\n\t@Input() multiple = false;\n\n\tconstructor(\n\t\t@Host() @Optional() protected parent: FormElementComponent,\n\t\t@Host() @Optional() protected controlContainer: ControlContainer\n\t) {\n\t\tsuper(parent, controlContainer);\n\t}\n\n\twriteValue(value: Array<T> | T): void {\n\t\t// if the outside world passes a value in the wrong format, it should be corrected\n\t\tif (this.multiple && !Array.isArray(value)) {\n\t\t\tconst correctedVal = [value].filter(isValueSet);\n\t\t\tsuper.writeValue(correctedVal);\n\t\t\tsuper.setInnerValueAndNotify(correctedVal);\n\t\t} else if (!this.multiple && Array.isArray(value)) {\n\t\t\tconst correctedVal = value[0];\n\t\t\tsuper.writeValue(correctedVal);\n\t\t\tsuper.setInnerValueAndNotify(correctedVal);\n\t\t} else {\n\t\t\tsuper.writeValue(value);\n\t\t}\n\t}\n\n\tsetInnerValueAndNotify(value: T | Array<T>): void {\n\t\tif (this.multiple && !Array.isArray(value)) {\n\t\t\tsuper.setInnerValueAndNotify([value].filter(isValueSet));\n\t\t} else if (!this.multiple && Array.isArray(value)) {\n\t\t\tsuper.setInnerValueAndNotify(value[0]);\n\t\t} else {\n\t\t\tsuper.setInnerValueAndNotify(value);\n\t\t}\n\t}\n}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport const invalidDateKey = '--invalid_date--';\n\nexport function dateValidator(control: AbstractControl): ValidationErrors | null {\n\tconst invalid = control.value === invalidDateKey;\n\treturn invalid ? { date: control.value } : null;\n}\n","import {\n\tAfterViewInit,\n\tChangeDetectorRef,\n\tComponent,\n\tElementRef,\n\tHost,\n\tInject,\n\tInjectionToken,\n\tInput, NgZone,\n\tOnChanges,\n\tOnInit,\n\tOptional,\n\tSimpleChanges,\n\tViewChild\n} from '@angular/core';\nimport {ControlContainer, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {invalidDateKey} from '../../validators/dateValidator';\nimport {DateFilterFn, MatDatepicker} from '@angular/material/datepicker';\nimport {DateAdapter, MAT_DATE_FORMATS, MAT_NATIVE_DATE_FORMATS, MatDateFormats} from '@angular/material/core';\nimport {KlpDateFormats} from '../../types';\nimport {FormElementComponent} from '../../form/form-element/form-element.component';\nimport {MultipleValueAccessorBase} from '../value-accessor-base/multiple-value-accessor-base.component';\nimport {isValueSet, stringIsSetAndFilled} from '../../util/values';\nimport {endOfMonth, format as formatDate, startOfMonth, isSameDay} from 'date-fns';\nimport {arrayIsSetAndFilled, removeDuplicatesFromArray } from '../../util/arrays';\nimport {runNextRenderCycle} from \"../../util/angular\";\n\nexport const KLP_DATE_FORMATS = new InjectionToken<KlpDateFormats>('klp.form.date.formats');\nexport const DATE_TIME_PICKER_TRANSLATIONS = new InjectionToken<any>('klp.form.dateTime.translations');\nexport const DATE_PICKER_LOCALE = new InjectionToken<any>('klp.form.dateTime.locale');\n\nexport function matDateFormatsFactory(component: DateTimePickerComponent, dateFormats?: KlpDateFormats): MatDateFormats {\n\treturn dateFormats?.(component.format) ?? MAT_NATIVE_DATE_FORMATS;\n}\n\n@Component({\n selector: 'klp-form-date-time-picker',\n templateUrl: './date-time-picker.component.html',\n styleUrls: ['./date-time-picker.component.scss'],\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: DateTimePickerComponent, multi: true },\n {\n provide: MAT_DATE_FORMATS,\n deps: [DateTimePickerComponent, [new Optional(), KLP_DATE_FORMATS]],\n useFactory: matDateFormatsFactory,\n },\n ],\n standalone: false\n})\nexport class DateTimePickerComponent extends MultipleValueAccessorBase<Date | typeof invalidDateKey> implements OnInit, AfterViewInit, OnChanges {\n\t@Input() public minDate: Date = undefined;\n\t@Input() public maxDate: Date = undefined;\n\t@Input() public sameMonthOnly = false;\n\t@Input() public format = 'dd-MM-yyyy';\n\t@Input() public placeholder: string;\n\t@Input() public clearable = false;\n\t@Input() public showTimeInput = true;\n\t@Input() public initHour: string = null;\n\t@Input() public initMinute: string = null;\n\t@Input() public invalidTimeAsMidnight = false; // if the time is not valid, use 00:00 as the time\n\n\t@ViewChild('nativeInput') nativeInputRef: ElementRef;\n\t@ViewChild('picker') datePickerRef: MatDatepicker<Date>;\n\t@ViewChild('timeDoubleDropdown') timeDoubleDropdown: ElementRef;\n\n\topenPickerOnDate: Date = null;\n\tminDateStartOfDay: Date = undefined;\n\tmaxDateEndOfDay: Date = undefined;\n\n\t// this is passed as ngmodel and is used to set the initial date. But we also\n\t// use input and nativeInput callbacks to extend the validation logic so we\n\t// can distinguish between empty and invalid dates.\n\tvalueForMaterialDatePicker: Date;\n\thours: string; // string because it's a text input\n\tminutes: string; // string because it's a text input\n\tprotected selectedDates: Array<Date> = [];\n\tprivate datePickingClosingFn: () => void;\n\tprivate dateTouched = false;\n\tprivate hoursTouched = false;\n\tprivate minutesTouched = false;\n\tprotected dropdownVisible = false;\n\tprotected minutesOfHour: Array<number> = [];\n\tprotected Number = Number;\n\n\tconstructor(\n\t\t@Host() @Optional() protected parent: FormElementComponent,\n\t\t@Host() @Optional() protected controlContainer: ControlContainer,\n\t\t@Inject(DATE_TIME_PICKER_TRANSLATIONS) @Optional() private translations: any,\n\t\t@Inject(DATE_PICKER_LOCALE) @Optional() private datePickerLocale: any,\n\t\tprivate dateAdapter: DateAdapter<Date>,\n\t\tprivate elRef: ElementRef,\n\t\tprivate cdr: ChangeDetectorRef,\n\t\tprivate ngZone: NgZone,\n\t) {\n\t\tsuper(parent, controlContainer);\n\t\tif (isValueSet(datePickerLocale)) {\n\t\t\tdateAdapter.setLocale(datePickerLocale());\n\t\t}\n\t}\n\n\tngOnInit(): void {\n\t\tsuper.ngOnInit();\n\t\tif (this.multiple) {\n\t\t\tthis.placeholder = '';\n\t\t\tthis.showTimeInput = false;\n\t\t}\n\t\tthis.hours = this.initHour;\n\t\tthis.minutes = this.initMinute;\n\t\tthis.minutesOfHour = Array.from({length: 60}, (v, k) => k).filter(e => e % 5 === 0);\n\t}\n\n\n\n\tngAfterViewInit(): void {\n\t\tif (this.multiple) {\n\t\t\t// we are going to overwrite the datepicker closing fn later, so we are saving it here to restore it when needed\n\t\t\tthis.datePickingClosingFn = this.datePickerRef.close;\n\t\t}\n\t}\n\n\tngOnChanges(changes: SimpleChanges): void {\n\t\tif (changes.minDate) {\n\t\t\tthis.determineMinAndMaxDates();\n\t\t}\n\t\tif (changes.maxDate) {\n\t\t\tthis.determineMinAndMaxDates();\n\t\t}\n\t}\n\n\tsetMinDate(minDate: Date): void {\n\t\tif (minDate) {\n\t\t\tthis.minDateStartOfDay = new Date(minDate);\n\t\t\tthis.minDateStartOfDay.setHours(0, 0, 0, 0);\n\t\t} else {\n\t\t\tthis.minDateStartOfDay = undefined;\n\t\t}\n\t}\n\n\tsetMaxDate(maxDate: Date): void {\n\t\tif (maxDate) {\n\t\t\tthis.maxDateEndOfDay = new Date(maxDate);\n\t\t\tthis.maxDateEndOfDay.setHours(23, 59, 59, 999);\n\t\t} else {\n\t\t\tthis.maxDateEndOfDay = undefined;\n\t\t}\n\t}\n\n\tgetSelectedMonths(): number {\n\t\treturn removeDuplicatesFromArray(this.selectedDates.map((e) => formatDate(e, 'MMMM'))).length;\n\t}\n\n\t// dateChanged is called when the output of the datepicker is changed and\n\t// parsed correctly. If the date is invalid, it will be called the first time\n\t// with null but never again until a valid input is provided.\n\tdateChanged(event: any): void {\n\t\tconst date = event.value;\n\t\tif (this.multiple) {\n\t\t\tthis.datePickerRef.close = () => {\n\t\t\t};\n\n\t\t\tif (this.selectedDates.some((e) => isSameDay(e, date))) {\n\t\t\t\tthis.selectedDates = this.selectedDates.filter((e) => !isSameDay(e, date));\n\t\t\t} else {\n\t\t\t\tthis.selectedDates = [...this.selectedDates, date];\n\t\t\t}\n\t\t\t// START HACK\n\t\t\t// the date picker does not provide any rerender calls. Therefore, we are going to change the minDate in order to force the render\n\t\t\t// This is needed to show all selected days in our date picker\n\t\t\t// We also set the innerValue to null (with this.valueForMaterialDatePicker = null;), otherwise you can not\n\t\t\t// deselect your last picked date\n\t\t\tthis.cdr.detectChanges();\n\t\t\tthis.valueForMaterialDatePicker = null;\n\t\t\tconst oldMinDate = this.minDateStartOfDay;\n\t\t\tthis.minDateStartOfDay = new Date(0);\n\t\t\tthis.cdr.detectChanges();\n\t\t\tthis.minDateStartOfDay = oldMinDate;\n\t\t\t// END HACK\n\n\t\t\tif (this.sameMonthOnly) {\n\t\t\t\tif (this.selectedDates.length >= 2) {\n\t\t\t\t\tif (date < startOfMonth(this.selectedDates[0]) || date > endOfMonth(this.selectedDates[0])) {\n\t\t\t\t\t\tthis.selectedDates = [date];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.determineMinAndMaxDates();\n\t\t\t}\n\n\t\t\tthis.setInnerValueAndNotify(this.selectedDates);\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.datePickerRef.close = this.datePickingClosingFn;\n\t\t\t});\n\t\t} else {\n\t\t\tthis.notifyNewDate();\n\t\t}\n\t}\n\n\tdetermineMinAndMaxDates(): void {\n\t\tif (this.sameMonthOnly) {\n\t\t\tif (this.selectedDates.length >= 2) {\n\t\t\t\tthis.setMinDate(startOfMonth(this.selectedDates[0]));\n\t\t\t\tthis.setMaxDate(endOfMonth(this.selectedDates[0]));\n\t\t\t} else {\n\t\t\t\tthis.setMinDate(this.minDate);\n\t\t\t\tthis.setMaxDate(this.maxDate);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.setMinDate(this.minDate);\n\t\t\tthis.setMaxDate(this.maxDate);\n\t\t}\n\t}\n\n\tnotifyNewDate(): void {\n\t\tconst nativeInputValue = this.nativeInputRef.nativeElement.value;\n\t\tconst parsedHours = Number(this.hours);\n\t\tconst parsedMinutes = Number(this.minutes);\n\n\t\t// if we dont have the time element\n\t\tif (!this.showTimeInput) {\n\t\t\tif (!stringIsSetAndFilled(nativeInputValue)) {\n\t\t\t\tthis.setInnerValueAndNotify(null);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.valueForMaterialDatePicker instanceof Date) {\n\t\t\t\tthis.setInnerValueAndNotify(this.valueForMaterialDatePicker);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t// when all inputs are empty\n\t\tif (!stringIsSetAndFilled(nativeInputValue) && !stringIsSetAndFilled(this.hours) && !stringIsSetAndFilled(this.minutes)) {\n\t\t\tthis.setInnerValueAndNotify(null);\n\t\t\treturn;\n\t\t}\n\t\t// if we have date and time\n\t\tif (\n\t\t\tstringIsSetAndFilled(this.hours) &&\n\t\t\tNumber.isFinite(parsedHours) &&\n\t\t\tparsedHours >= 0 &&\n\t\t\tparsedHours <= 23 &&\n\t\t\tstringIsSetAndFilled(this.minutes) &&\n\t\t\tNumber.isFinite(parsedMinutes) &&\n\t\t\tparsedMinutes >= 0 &&\n\t\t\tparsedMinutes <= 59 &&\n\t\t\tthis.valueForMaterialDatePicker instanceof Date\n\t\t) {\n\t\t\tconst newDateWithHours = new Date(this.valueForMaterialDatePicker.setHours(parsedHours));\n\t\t\tconst newDateWithMinutes = new Date(newDateWithHours.setMinutes(parsedMinutes));\n\t\t\tthis.setInnerValueAndNotify(newDateWithMinutes);\n\t\t\treturn;\n\t\t}\n\t\tif (this.invalidTimeAsMidnight) {\n\t\t\tif (this.valueForMaterialDatePicker instanceof Date) {\n\t\t\t\tthis.setInnerValueAndNotify(this.valueForMaterialDatePicker);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t// all other cases, we are not in a valid state\n\t\tthis.setInnerValueAndNotify(invalidDateKey);\n\t}\n\n\twriteValue(value: Date | Array<Date> | typeof invalidDateKey): void {\n\t\tsuper.writeValue(value);\n\t\tif (Array.isArray(value)) {\n\t\t\tthis.selectedDates = value;\n\t\t\tthis.determineMinAndMaxDates();\n\t\t\tthis.valueForMaterialDatePicker = null;\n\t\t\tif (arrayIsSetAndFilled(value)) {\n\t\t\t\tthis.openPickerOnDate = this.selectedDates[0];\n\t\t\t}\n\t\t} else {\n\t\t\tthis.valueForMaterialDatePicker = value === invalidDateKey ? null : value;\n\t\t\tif (value instanceof Date) {\n\t\t\t\tthis.hours = String(value.getHours());\n\t\t\t\tthis.minutes = String(value.getMinutes());\n\t\t\t\tthis.formatTime();\n\t\t\t\tthis.openPickerOnDate = value;\n\t\t\t} else {\n\t\t\t\tthis.hours = this.initHour ?? '';\n\t\t\t\tthis.minutes = this.initMinute ?? '';\n\t\t\t\tthis.openPickerOnDate = null;\n\t\t\t\tthis.selectedDates = [];\n\t\t\t}\n\t\t}\n\t}\n\n\t// nativeValueChanged is called when the internal text value changes, but not\n\t// when the date is changed via the date picker. We need this so that we can\n\t// determine if the datepicker is empty or invalid.\n\tnativeValueChanged(): void {\n\t\tif (this.datePickerRef.opened) {\n\t\t\t// if the user is typing instead of using the picker, close it.\n\t\t\tthis.datePickerRef.close();\n\t\t}\n\t\tthis.notifyNewDate();\n\t}\n\n\tresetToNull(): void {\n\t\tthis.setInnerValueAndNotify(null);\n\t\tthis.valueForMaterialDatePicker = null;\n\t\tthis.nativeInputRef.nativeElement.value = null;\n\t\tthis.hours = '';\n\t\tthis.minutes = '';\n\t\tthis.selectedDates = [];\n\t}\n\n\tisSelected = (d: Date) => {\n\t\tif (this.multiple) {\n\t\t\treturn this.selectedDates.some((e) => isSameDay(e, d)) ? 'selected' : '';\n\t\t}\n\t\treturn '';\n\t};\n\tfilterDates: DateFilterFn<any> = (e) => {\n\t\tif (this.disabled) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t};\n\n\n\tformatTime(): void {\n\t\tif (Number.isFinite(Number(this.hours)) && this.hours.length === 1) {\n\t\t\tthis.hours = '0' + this.hours;\n\t\t}\n\t\tif (Number.isFinite(Number(this.minutes)) && this.minutes.length === 1) {\n\t\t\tthis.minutes = '0' + this.minutes;\n\t\t}\n\t}\n\n\ttouchDate(): void {\n\t\tthis.dateTouched = true;\n\t\tthis.determineAllTouched();\n\t}\n\n\ttouchHours(): void {\n\t\tthis.hoursTouched = true;\n\t\tthis.determineAllTouched();\n\t}\n\n\ttouchMinutes(): void {\n\t\tthis.minutesTouched = true;\n\t\tthis.determineAllTouched();\n\t}\n\n\tdetermineAllTouched(): void {\n\t\tif ((this.dateTouched && this.hoursTouched && this.minutesTouched) || (this.dateTouched && !this.showTimeInput)) {\n\t\t\tthis.touch();\n\t\t}\n\t}\n\n\n\tgetDefaultTranslation(key: string): (x: any) => string {\n\t\tswitch (key) {\n\t\t\tcase 'placeholder':\n\t\t\t\treturn () => 'Select date';\n\t\t\tcase 'selectDays':\n\t\t\t\treturn () => 'Select day(s)';\n\t\t\tcase 'selectedDate':\n\t\t\t\treturn (d: Date) => d.toLocaleDateString();\n\t\t\tcase 'daysSelected':\n\t\t\t\treturn (amount) => `${amount} days selected`;\n\t\t\tcase 'selectedInMonth':\n\t\t\t\treturn (d: Date) => ` in ${formatDate(d, 'MMMM')}`;\n\t\t}\n\t}\n\n\tgetTranslation(key: string, params: any = null): string {\n\t\tif (key === 'placeholder' && this.multiple) {\n\t\t\treturn '';\n\t\t}\n\t\tif (key === 'placeholder' && stringIsSetAndFilled(this.placeholder)) {\n\t\t\treturn this.placeholder;\n\t\t}\n\t\treturn this.translations?.[key]?.(params) ?? this.getDefaultTranslation(key)(params);\n\t}\n\n\tcounter(i: number): Array<number> {\n\t\treturn new Array(i).fill(0).map((x, j) => j);\n\t}\n\n\tsetHour(hour: number): void {\n\t\tthis.hours = hour > 9 ? String(hour) : '0' + hour;\n\t\tthis.notifyNewDate();\n\t}\n\n\tsetMinute(minute: number): void {\n\t\tthis.minutes = minute > 9 ? String(minute) : '0' + minute;\n\t\tthis.notifyNewDate();\n\t}\n\n\tblurredHours(): void {\n\t\tthis.formatTime();\n\t\tthis.touchHours();\n\t}\n\n\tblurredMinutes(): void {\n\t\tthis.formatTime();\n\t\tthis.touchMinutes();\n\t}\n\n\tisActive(toCheck: number, actualValue: string): boolean {\n\t\tif (!stringIsSetAndFilled(actualValue)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn Number(actualValue) === toCheck;\n\t}\n\n\ttimeDropdownRendered = () => {\n\t\trunNextRenderCycle(() => {\n\t\t\tthis.ngZone.runOutsideAngular(() => {\n\t\t\t\tdocument.addEventListener('mousedown', this.clickHandlerForTimeDropdown);\n\t\t\t});\n\t\t});\n\n\t\tconst activeHour = this.timeDoubleDropdown.nativeElement.querySelector('.hourOfDay .isActive');\n\t\tconst activeMinute = this.timeDoubleDropdown.nativeElement.querySelector('.minuteOfHour .isActive');\n\t\tconst activeHourParent = activeHour?.parentElement;\n\t\tconst activeMinuteParent = activeMinute?.parentElement;\n\t\tif (activeHourParent) {\n\t\t\tactiveHourParent.scrollTop = activeHour?.offsetTop - 110;\n\t\t}\n\t\tif (activeMinuteParent) {\n\t\t\tactiveMinuteParent.scrollTop = activeMinute?.offsetTop - 110;\n\t\t}\n\t}\n\n\tclickHandlerForTimeDropdown = (event: MouseEvent) => {\n\t\tif (this.dropdownVisible) {\n\t\t\tconst dropdown = this.elRef.nativeElement.querySelector('.timeDoubleDropdown');\n\t\t\tif (!dropdown.contains(event.target)) {\n\t\t\t\tthis.ngZone.run(() => {\n\t\t\t\t\tthis.dropdownVisible = false;\n\t\t\t\t\tdocument.removeEventListener('mousedown', this.clickHandlerForTimeDropdown);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n\n\tshizzle() {\n\t\tconsole.log('a');\n\t\tthis.datePickerRef.open();\n\t}\n}\n","<div class=\"componentContainer\" [ngClass]=\"{showErrors: isInErrorState()}\" [ngClass]=\"{disabled: disabled}\">\n <div class=\"dateContainer\" [ngClass]=\"{noRightBorder: !showTimeInput && clearable && !disabled, disabled: disabled}\">\n <mat-form-field floatLabel=\"never\">\n @if (multiple) {\n <div class=\"daysSelectedCaption\" (click)=\"picker.open()\" [ngClass]=\"{disabled: disabled}\">\n @if (selectedDates.length >= 2) {\n <span>{{getTranslation('daysSelected', selectedDates.length)}}</span>\n @if (getSelectedMonths() === 1) {\n <span>{{getTranslation('selectedInMonth', selectedDates[0])}}</span>\n }\n }\n @if (selectedDates.length === 1) {\n <span>{{getTranslation('selectedDate', selectedDates[0])}}</span>\n }\n @if (selectedDates.length === 0) {\n <span class=\"placeholderForMultipleSelection\">{{getTranslation('selectDays')}}</span>\n }\n </div>\n }\n\n @if (disabled) {\n <div class=\"disabledClickArea\" (click)=\"picker.open()\"></div>\n }\n <input\n #nativeInput\n matInput\n [matDatepicker]=\"picker\"\n [matDatepickerFilter]=\"filterDates\"\n [(ngModel)]=\"valueForMaterialDatePicker\"\n (dateInput)=\"dateChanged($event)\"\n (input)=\"nativeValueChanged()\"\n (click)=\"picker.open()\"\n [min]=\"minDateStartOfDay\"\n [max]=\"maxDateEndOfDay\"\n [placeholder]=\"getTranslation('placeholder')\"\n (blur)=\"touchDate()\"\n [ngClass]=\"{inputForMultipleDays: multiple, disabled: disabled}\"\n >\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker\n #picker\n [dateClass]=\"isSelected\"\n [startAt]=\"openPickerOnDate\"\n ></mat-datepicker>\n </mat-form-field>\n <div class=\"tail\">\n <ng-container [ngTemplateOutlet]=\"getTailTpl()\"></ng-container>\n </div>\n </div>\n @if (showTimeInput) {\n <div class=\"timeContainer\" [ngClass]=\"{disabled: disabled}\">\n <div class=\"timeContainerInner\">\n <svg class=\"clockIcon\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" (click)=\"hourInput.focus()\">\n <path d=\"M12 6V12L16 14M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" stroke=\"#888da8\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n <input #hourInput maxlength=\"2\" placeholder=\"__\" [disabled]=\"disabled\" [(ngModel)]=\"hours\" (ngModelChange)=\"notifyNewDate()\" (focus)=\"dropdownVisible = true\" (blur)=\"blurredHours();\">\n <div class=\"divider\">:</div>\n <input maxlength=\"2\" placeholder=\"__\" [disabled]=\"disabled\" [(ngModel)]=\"minutes\" (ngModelChange)=\"notifyNewDate()\" (focus)=\"dropdownVisible = true\" (blur)=\"blurredMinutes();\">\n </div>\n @if (dropdownVisible) {\n <div class=\"timeDoubleDropdown\" #timeDoubleDropdown [onRenderFn]=\"timeDropdownRendered\">\n <div class=\"hourOfDay\">\n @for (hour of counter(24); track hour) {\n <div class=\"entry\" (mousedown)=\"setHour(hour)\" [ngClass]=\"{isActive: isActive(hour, hours)}\">{{hour > 9 ? hour : '0' + hour }}</div>\n }\n </div>\n <div class=\"minuteOfHour\">\n @for (minute of minutesOfHour; track minute) {\n <div class=\"entry\" (mousedown)=\"setMinute(minute)\" [ngClass]=\"{isActive: isActive(minute, minutes)}\">{{minute > 9 ? minute : '0' + minute}}</div>\n }\n </div>\n </div>\n }\n </div>\n }\n</div>\n","import {Component, Host, Inject, InjectionToken, Input, Optional} from '@angular/core';\nimport {ControlContainer, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {format as dateFormat, parse} from 'date-fns';\nimport {MultipleValueAccessorBase} from '../value-accessor-base/multiple-value-accessor-base.component';\nimport {invalidDateKey} from '../../validators/dateValidator';\nimport {isNullOrUndefined, stringIsSetAndFilled} from '../../util/values';\nimport {FormElementComponent} from '../../form/form-element/form-element.component';\n\nexport const DATE_PICKER_TRANSLATIONS = new InjectionToken<any>('klp.form.date.translations');\n\n@Component({\n selector: 'klp-form-date-picker',\n templateUrl: './date-picker.component.html',\n styleUrls: ['./date-picker.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: DatePickerComponent, multi: true }],\n standalone: false\n})\nexport class DatePickerComponent extends MultipleValueAccessorBase<string | typeof invalidDateKey> {\n\t@Input() public minDate: Date = undefined;\n\t@Input() public maxDate: Date = undefined;\n\t@Input() public sameMonthOnly = false;\n\t@Input() public format = 'dd-MM-yyyy';\n\t@Input() public placeholder: string;\n\t@Input() public clearable = false;\n\n\tpublic dateValue: Date | Array<Date>;\n\n\tconstructor(\n\t\t@Host() @Optional() protected parent: FormElementComponent,\n\t\t@Host() @Optional() protected controlContainer: ControlContainer,\n\t\t@Inject(DATE_PICKER_TRANSLATIONS) @Optional() private translations: any,\n\t) {\n\t\tsuper(parent, controlContainer);\n\t}\n\n\twriteValue(value: string | Array<string> | typeof invalidDateKey): void {\n\t\tif (value === invalidDateKey) {\n\t\t\tsuper.writeValue(invalidDateKey);\n\t\t} else if (isNullOrUndefined(value)) {\n\t\t\tthis.dateValue = this.multiple ? [] : null;\n\t\t\tsuper.writeValue(this.multiple ? [] : null);\n\t\t} else {\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tthis.dateValue = value.map((e) => parse(e, 'yyyy-MM-dd', new Date()));\n\t\t\t} else {\n\t\t\t\tthis.dateValue = parse(value, 'yyyy-MM-dd', new Date());\n\t\t\t}\n\t\t\tsuper.writeValue(value);\n\t\t}\n\t}\n\n\tdateChanged(value: Date | Array<Date> | typeof invalidDateKey): void {\n\t\tif (value === invalidDateKey) {\n\t\t\tthis.setInnerValueAndNotify(invalidDateKey);\n\t\t} else if (isNullOrUndefined(value)) {\n\t\t\tthis.dateValue = this.multiple ? [] : null;\n\t\t\tthis.setInnerValueAndNotify(this.multiple ? [] : null);\n\t\t} else {\n\t\t\tthis.dateValue = value;\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tthis.setInnerValueAndNotify(value.map((e) => dateFormat(e, 'yyyy-MM-dd')));\n\t\t\t} else {\n\t\t\t\tthis.setInnerValueAndNotify(dateFormat(value, 'yyyy-MM-dd'));\n\t\t\t}\n\t\t}\n\t}\n\n\tgetDefaultTranslation(key: string): (x: any) => string {\n\t\tswitch (key) {\n\t\t\tcase 'placeholder':\n\t\t\t\treturn () => 'Select date';\n\t\t}\n\t}\n\n\tgetTranslation(key: string, params: any = null): string {\n\t\tif (key === 'placeholder' && this.multiple) {\n\t\t\treturn '';\n\t\t}\n\t\tif (key === 'placeholder' && stringIsSetAndFilled(this.placeholder)) {\n\t\t\treturn this.placeholder;\n\t\t}\n\t\treturn this.translations?.[key]?.(params) ?? this.getDefaultTranslation(key)(params);\n\t}\n}\n","<div class=\"componentContainer\" [ngClass]=\"{showErrors: isInErrorState()}\">\n\t<klp-form-date-time-picker\n\t\t[multiple]=\"multiple\"\n\t\t[disabled]=\"disabled\"\n\t\t[(ngModel)]=\"dateValue\"\n\t\t(ngModelChange)=\"dateChanged($event)\"\n\t\t[minDate]=\"minDate\"\n\t\t[maxDate]=\"maxDate\"\n\t\t[sameMonthOnly]=\"sameMonthOnly\"\n\t\t[format]=\"format\"\n\t\t[placeholder]=\"getTranslation('placeholder')\"\n\t\t[clearable]=\"clearable\"\n\t\t[showTimeInput]=\"false\"\n\t\t(onTouch)=\"touch()\"\n\t></klp-form-date-time-picker>\n\t<div class=\"tail\">\n\t\t<ng-container [ngTemplateOutlet]=\"getTailTpl()\"></ng-container>\n\t</div>\n</div>\n","// material.module.ts\n\nimport { NgModule } from '@angular/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\n\n@NgModule({\n\timports: [MatDatepickerModule, MatFormFieldModule, MatNativeDateModule, MatInputModule, MatButtonModule],\n\texports: [MatDatepickerModule, MatFormFieldModule, MatNativeDateModule, MatInputModule, MatButtonModule],\n\tproviders: [MatDatepickerModule],\n})\nexport class MaterialModule {}\n","import {Component, ElementRef, Input, ViewChild} from '@angular/core';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {MultipleValueAccessorBase} from '../value-accessor-base/multiple-value-accessor-base.component';\nimport {isValueSet} from '../../util/values';\nimport { arrayIsSetAndFilled } from '../../util/arrays';\n\n@Component({\n selector: 'klp-form-file-input',\n templateUrl: './file-input.component.html',\n styleUrls: ['./file-input.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: FileInputComponent, multi: true }],\n standalone: false\n})\nexport class FileInputComponent extends MultipleValueAccessorBase<File> {\n\t@Input() isLoading = false;\n\t@Input() clearable = false;\n\t@Input() onlyShowUploadButton = false;\n\t@Input() useFullParentSize = false;\n\t@Input() buttonText: string;\n\t@Input() fullyCustom = false;\n\t@ViewChild('nativeInputRef') nativeInputRef: ElementRef<HTMLInputElement>;\n\n\tpublic onChange(files: FileList): void {\n\t\tconst result = [];\n\t\tfor (let i = 0; i < files.length; i++) {\n\t\t\tresult.push(files.item(i));\n\t\t}\n\t\tthis.setInnerValueAndNotify(result);\n\t\t// to make sure we can select the same file again\n\t\tthis.nativeInputRef.nativeElement.value = null;\n\t}\n\n\tpublic getFileNames(): string {\n\t\tif (Array.isArray(this.innerValue)) {\n\t\t\treturn this.innerValue.map(e => e.name).join(', ');\n\t\t} else if (this.innerValue instanceof File) {\n\t\t\treturn this.innerValue.name;\n\t\t}\n\t\treturn null;\n\t}\n\n\tpublic shouldShowClearButton(): boolean {\n\t\tif (this.onlyShowUploadButton) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this.multiple) {\n\t\t\tif (arrayIsSetAndFilled(this.innerValue)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\tif (isValueSet(this.innerValue)) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic uploadFileClicked(): void {\n\t\tthis.nativeInputRef.nativeElement.click();\n\t}\n}\n","@if (fullyCustom) {\n <div class=\"fullyCustom\">\n <input\n type=\"file\"\n #nativeInputRef\n (change)=\"onChange($event.target.files)\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n />\n <div (click)=\"uploadFileClicked()\">\n <ng-container [ngTemplateOutlet]=\"contentTpl\"></ng-container>\n </div>\n </div>\n}\n\n@if (!fullyCustom) {\n <div class=\"componentContainer\" [ngClass]=\"{fullParentSize: useFullParentSize, showErrors: isInErrorState()}\"\n >\n <div class=\"buttonContainer\">\n <input\n type=\"file\"\n #nativeInputRef\n (change)=\"onChange($event.target.files)\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n >\n <klp-form-button\n class=\"uploadButton\"\n [isLoading]=\"isLoading\"\n [disabled]=\"disabled\"\n (click)=\"uploadFileClicked()\"\n >\n <div class=\"innerButton\">\n @if (buttonText) {\n <span>{{ buttonText }}</span>\n }\n @if (!buttonText) {\n <div>\n <ng-container [ngTemplateOutlet]=\"contentTpl\"></ng-container>\n </div>\n }\n <div class=\"tail\">\n <ng-container [ngTemplateOutlet]=\"getTailTpl()\"></ng-container>\n </div>\n </div>\n </klp-form-button>\n </div>\n @if (!onlyShowUploadButton) {\n <div class=\"fileName\">\n {{ getFileNames() }}\n </div>\n }\n @if (shouldShowClearButton()) {\n <klp-form-button class=\"clearButton\" variant=\"white\" (click)=\"resetToNull()\">X\n </klp-form-button>\n }\n </div>\n}\n\n<ng-template #contentTpl>\n <ng-content></ng-content>\n</ng-template>\n","import {Component, ContentChild, TemplateRef} from '@angular/core';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {arrayIsSetAndFilled, splitArrayByCondition} from '../../util/arrays';\nimport {ValueAccessorBase} from '../value-accessor-base/value-accessor-base.component';\n\n@Component({\n selector: 'klp-form-sortable-grouped-items',\n templateUrl: './sortable-grouped-items.component.html',\n styleUrls: ['./sortable-grouped-items.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: SortableGroupedItemsComponent, multi: true }],\n standalone: false\n})\nexport class SortableGroupedItemsComponent<T> extends ValueAccessorBase<Array<Array<T>>> {\n\tpublic items: Array<T | string>;\n\t@ContentChild(TemplateRef) template: TemplateRef<any>;\n\treloader = true; // sortable items doesnt correctly update, so we have this boolean that flips to rerender the sortable items comp\n\n\twriteValue(value: Array<Array<T>>): void {\n\t\tsuper.writeValue(value);\n\t\tthis.reloader = false;\n\t\tsetTimeout(() => {\n\t\t\tif (arrayIsSetAndFilled(value)) {\n\t\t\t\tthis.items = value.flatMap(e => [...e, '']);\n\t\t\t} else {\n\t\t\t\tthis.items = [];\n\t\t\t}\n\t\t\tthis.reloader = true;\n\t\t});\n\t}\n\n\tpublic onItemsRearranged(value: Array<T | string>): void {\n\t\tconst result: Array<Array<T>> = splitArrayByCondition(value, e => e === '').filter(arrayIsSetAndFilled) as any;\n\t\tthis.setInnerValueAndNotify(result);\n\t\tthis.reloader = false;\n\t\tsetTimeout(() => {\n\t\t\tthis.items = [...this.items, ''].filter((e, i) => {\n\t\t\t\tif (i === 0 && e === '') {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (e === '' && this.items[i - 1] === '') {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t});\n\t\t\tthis.reloader = true;\n\t\t});\n\t}\n}\n","<ng-container>\n <klp-form-sortable-items\n [(ngModel)]=\"items\"\n (ngModelChange)=\"onItemsRearranged($event)\"\n >\n <ng-template let-item=\"item\">\n @if (template) {\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item }\"></ng-container>\n }\n @if (!template) {\n <div>{{item}}</div>\n }\n </ng-template>\n </klp-form-sortable-items>\n</ng-container>\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport const invalidTimeKey = '--invalid_time--';\n\nexport function timeValidator(control: AbstractControl): ValidationErrors | null {\n\tconst invalid = control.value === invalidTimeKey;\n\treturn invalid ? { date: control.value } : null;\n}\n","import {Component, Input} from '@angular/core';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {ValueAccessorBase} from '../value-accessor-base/value-accessor-base.component';\nimport {stringIsSetAndFilled} from '../../util/values';\nimport {invalidTimeKey} from '../../validators/timeValidator';\n\n\n@Component({\n selector: 'klp-form-hour-minute-input',\n templateUrl: './hour-minute-input.component.html',\n styleUrls: ['./hour-minute-input.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: HourMinuteInputComponent, multi: true }],\n standalone: false\n})\nexport class HourMinuteInputComponent extends ValueAccessorBase<number | typeof invalidTimeKey> {\n\tpublic hours: string; // string because it's a text input\n\tpublic minutes: string; // string because it's a text input\n\n\t@Input() placeholders: Array<string> = ['hour', 'min'];\n\n\tprivate hoursTouched = false;\n\tprivate minutesTouched = false;\n\n\tformatHours(): void {\n\t\tif (!stringIsSetAndFilled(this.hours)) {\n\t\t\tthis.hours = '0';\n\t\t}\n\t}\n\n\tformatMinutes(): void {\n\t\tif (!stringIsSetAndFilled(this.minutes)) {\n\t\t\tthis.minutes = '0';\n\t\t}\n\t}\n\n\tformatTime(): void {\n\t\tif (Number.isFinite(Number(this.hours)) && this.hours.length === 1) {\n\t\t\tthis.hours = '0' + this.hours;\n\t\t}\n\t\tif (Number.isFinite(Number(this.minutes)) && this.minutes.length === 1) {\n\t\t\tthis.minutes = '0' + this.minutes;\n\t\t}\n\t}\n\n\twriteValue(value: number | typeof invalidTimeKey): void {\n\t\tif (Number.isFinite(value)) {\n\t\t\tthis.hours = Math.floor(value as number / 60) + '';\n\t\t\tthis.minutes = value as number % 60 + '';\n\t\t\tthis.formatTime();\n\t\t\tsuper.writeValue(value);\n\t\t} else {\n\t\t\tthis.hours = '';\n\t\t\tthis.minutes = '';\n\t\t\tsuper.writeValue(invalidTimeKey);\n\t\t}\n\t}\n\n\tnotifyNewTime(): void {\n\t\tconst parsedHours = Number(this.hours);\n\t\tconst parsedMinutes = Number(this.minutes);\n\n\t\t// when all inputs are empty\n\t\tif (!stringIsSetAndFilled(this.hours) && !stringIsSetAndFilled(this.minutes)) {\n\t\t\tthis.setInnerValueAndNotify(null);\n\t\t\treturn;\n\t\t}\n\t\t// if we have valid time\n\t\tif (\n\t\t\tNumber.isFinite(parsedHours) &&\n\t\t\tparsedHours >= 0 &&\n\t\t\tparsedHours <= 9999 &&\n\t\t\tNumber.isFinite(parsedMinutes) &&\n\t\t\tparsedMinutes >= 0 &&\n\t\t\tparsedMinutes <= 59\n\t\t) {\n\t\t\tthis.setInnerValueAndNotify(parsedHours * 60 + parsedMinutes);\n\t\t\treturn;\n\t\t}\n\t\t// all other cases, we are not in a valid state\n\t\tthis.setInnerValueAndNotify(invalidTimeKey);\n\t}\n\n\ttouchHours(): void {\n\t\tthis.hoursTouched = true;\n\t\tthis.determineAllTouched();\n\t}\n\n\ttouchMinutes(): void {\n\t\tthis.minutesTouched = true;\n\t\tthis.determineAllTouched();\n\t}\n\n\tdetermineAllTouched(): void {\n\t\tif (this.hoursTouched && this.minutesTouched) {\n\t\t\tthis.touch();\n\t\t}\n\t}\n}\n","<div class=\"componentContainer\" [ngClass]=\"{disabled: disabled}\" [ngClass]=\"{showErrors: isInErrorState()}\">\n\t<input class=\"hourInput\" maxlength=\"4\" [placeholder]=\"placeholders[0]\" [disabled]=\"disabled\" [(ngModel)]=\"hours\" (blur)=\"formatHours(); formatTime(); touchHours(); notifyNewTime()\" (ngModelChange)=\"notifyNewTime()\" #nativeInputRef>\n\t<div class=\"divider\">:</div>\n\t<input maxlength=\"2\" [placeholder]=\"placeholders[1]\" [disabled]=\"disabled\" [(ngModel)]=\"minutes\" (blur)=\"formatMinutes(); formatTime(); touchMinutes(); notifyNewTime()\" (ngModelChange)=\"notifyNewTime()\">\n\t<div class=\"tail\">\n\t\t<ng-container [ngTemplateOutlet]=\"getTailTpl()\"></ng-container>\n\t</div>\n</div>\n","import { Component, Input} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ValueAccessorBase } from '../value-accessor-base/value-accessor-base.component';\n\nexport enum Orientation {\n\tCOLUMN = 'column',\n\tROW = 'row'\n}\nexport type RadioOptions = Array<RadioOption>;\nexport type RadioOption = {\n\tid: any;\n\tname: string;\n\tdescription?: string;\n};\n\n\n@Component({\n selector: 'klp-form-radio',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: RadioComponent, multi: true }],\n standalone: false\n})\nexport class RadioComponent extends ValueAccessorBase<string>{\n\t@Input() options: RadioOptions;\n\t@Input() orientation: Orientation = Orientation.ROW;\n\t@Input() variant: 'classic' | 'button' | 'buttonGray' = 'classic';\n\t@Input() size: 'small' | 'medium' = 'medium';\n\tpublic Orientation = Orientation;\n}\n\n","<div class=\"componentContainer\" [ngClass]=\"{'verticallyOriented': orientation === Orientation.COLUMN, 'horizontallyOriented': orientation === Orientation.ROW, buttonGray: variant === 'buttonGray', sizeSmall: size === 'small'}\">\n @for (option of options; track option) {\n <button class=\"optionContainer\"\n [ngClass]=\"{classic: variant === 'classic', button: variant === 'button', buttonGray: variant === 'buttonGray', isSelected: innerValue === option.id}\"\n (click)=\"setInnerValueAndNotify(option.id)\"\n >\n <div class=\"radioAndName\">\n @if (variant === 'classic') {\n <div class=\"selectedRadioBtnContainer\">\n @if (innerValue === option.id) {\n <div class=\"selected\"></div>\n }\n </div>\n }\n <div class=\"nameAndDescription\">\n <div>{{option.name}}</div>\n @if (option.description) {\n <div class=\"description\">{{option.description}}</div>\n }\n </div>\n </div>\n </button>\n }\n</div>\n","import {\n\tApplicationRef,\n\tDirective,\n\tElementRef,\n\tEmbeddedViewRef,\n\tInput, NgZone,\n\tTemplateRef\n} from \"@angular/core\";\nimport {stringIsSetAndFilled} from \"./util/values\";\n\nconst triangleSize = '12px';\nconst zIndexStart = 99999999;\n\nconst colors = {\n\torange: { noAlpha: 'rgb(255, 128, 0)', withAlpha: 'rgba(255, 128, 0, 0.1254901961)', background: 'rgb(255, 255, 255)'},\n\tblack: { noAlpha: 'rgb(40, 40, 40)', withAlpha: 'rgba(40, 40, 40, 0.1254901961)', background: 'rgb(255, 255, 255)'},\n\twhiteOnBlack: { noAlpha: 'rgb(255, 255, 255)', withAlpha: 'rgba(255, 255, 255, 0.1254901961)', background: 'rgba(12, 17, 29)'},\n};\n\n@Directive({\n selector: '[klpWithTooltip]',\n standalone: false\n})\nexport class WithTooltipDirective {\n\tprivate div: HTMLElement;\n\tprivate triangle: HTMLElement;\n\tprivate triangleWhite: HTMLElement;\n\t@Input() klpWithTooltip: 'orange'| 'black' | 'whiteOnBlack' = 'orange';\n\t@Input() tooltipText: string;\n\t@Input() tooltipTemplate: TemplateRef<any>;\n\t@Input() tooltipMinWidth;\n\t@Input() tooltipMaxWidth = 200;\n\t@Input() position: 'top' | 'bottom' = 'top';\n\tprivate templateInstance: HTMLElement;\n\tprivate viewRefForTemplate: EmbeddedViewRef<any>;\n\tconstructor(private el: ElementRef, private appRef: ApplicationRef, private ngZone: NgZone) {\n\t\tthis.ngZone.runOutsideAngular(() => {\n\t\t\tel.nativeElement.addEventListener('mouseenter', () => {\n\t\t\t\tif (this.tooltipTemplate) {\n\t\t\t\t\tthis.hookUpTemplate();\n\t\t\t\t}\n\t\t\t\tlet textToDisplay: string;\n\t\t\t\tif (!this.templateInstance) {\n\t\t\t\t\ttextToDisplay = this.tooltipText || el.nativeElement.innerText.trim();\n\t\t\t\t}\n\t\t\t\tif (!stringIsSetAndFilled(this.klpWithTooltip)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!stringIsSetAndFilled(textToDisplay) && !this.tooltipTemplate) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (stringIsSetAndFilled(this.tooltipText)) {\n\t\t\t\t\tif (this.tooltipText === el.nativeElement.innerText) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t} else if (this.tooltipTemplate) {\n\t\t\t\t\t// no need to check here, just render the template\n\t\t\t\t} else {\n\t\t\t\t\tif (el.nativeElement.offsetWidth >= el.nativeElement.scrollWidth) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (getComputedStyle(el.nativeElement).position === 'static') {\n\t\t\t\t\tel.nativeElement.style.position = 'relative';\n\t\t\t\t}\n\n\t\t\t\tthis.div = document.createElement('div');\n\t\t\t\tthis.div.style.zIndex = `${zIndexStart + 2}`;\n\t\t\t\tthis.div.style.color = `${colors[this.klpWithTooltip].noAlpha}`;\n\t\t\t\tthis.div.style.backgroundColor = `${colors[this.klpWithTooltip].background}`;\n\t\t\t\tthis.div.style.position = 'fixed';\n\t\t\t\tthis.div.style.left = `${el.nativeElement.getBoundingClientRect().x}px`;\n\t\t\t\tif (this.position === 'top') {\n\t\t\t\t\tthis.div.style.top = `${el.nativeElement.getBoundingClientRect().y}px`;\n\t\t\t\t\tthis.div.style.transform = `translate(calc(-100% + ${el.nativeElement.getBoundingClientRect().width}px), calc(-100% - 0.3rem))`;\n\t\t\t\t} else if (this.position === 'bottom') {\n\t\t\t\t\tthis.div.style.top = `${el.nativeElement.getBoundingClientRect().y + el.nativeElement.getBoundingClientRect().height}px`;\n\t\t\t\t\tthis.div.style.transform = `translate(calc(-100% + ${el.nativeElement.getBoundingClientRect().width}px), calc(0% + 0.3rem))`;\n\t\t\t\t}\n\t\t\t\tif (this.tooltipMinWidth > 0) {\n\t\t\t\t\tthis.div.style.minWidth = `${this.tooltipMinWidth}px`;\n\t\t\t\t}\n\t\t\t\tthis.div.style.maxWidth = `${this.tooltipMaxWidth}px`;\n\t\t\t\tthis.div.style.whiteSpace = 'break-spaces';\n\t\t\t\tthis.div.style.border = `1px solid ${colors[this.klpWithTooltip].withAlpha}`;\n\t\t\t\tthis.div.style.boxShadow = `2px 3px 10px 0px ${colors[this.klpWithTooltip].withAlpha}`;\n\t\t\t\tthis.div.style.padding = '0.3rem 0.5rem';\n\t\t\t\tthis.div.style.boxSizing = 'border-box';\n\t\t\t\tthis.div.style.borderRadius = '3px';\n\t\t\t\tthis.div.style.wordBreak = 'break-word';\n\t\t\t\tif (stringIsSetAndFilled(textToDisplay)) {\n\t\t\t\t\tthis.div.textContent = textToDisplay;\n\t\t\t\t} else if (this.templateInstance) {\n\t\t\t\t\tthis.div.style.maxWidth = 'none';\n\t\t\t\t\tthis.div.style.visibility = 'hidden';\n\t\t\t\t\tthis.div.appendChild(this.templateInstance);\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tconst color = getComputedStyle(this.templateInstance).backgroundColor || getComputedStyle(this.templateInstance).background;\n\t\t\t\t\t\tthis.div.style.backgroundColor = color;\n\t\t\t\t\t\tthis.div.style.visibility = 'visible';\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tel.nativeElement.prepend(this.div);\n\n\t\t\t\tthis.triangle = document.createElement('div');\n\t\t\t\tthis.triangle.style.zIndex = `${zIndexStart + 1}`;\n\t\t\t\tthis.triangle.style.position = 'fixed';\n\t\t\t\tthis.triangle.style.left = `calc(${el.nativeElement.getBoundingClientRect().x + el.nativeElement.getBoundingClientRect().width}px - 0.8rem)`;\n\t\t\t\tif (this.position === 'top') {\n\t\t\t\t\tthis.triangle.style.top = `${el.nativeElement.getBoundingClientRect().y}px`;\n\t\t\t\t\tthis.triangle.style.transform = `translate(-50%, calc(-100% + 0.1rem))`;\n\t\t\t\t} else if (this.position === 'bottom') {\n\t\t\t\t\tthis.triangle.style.top = `${el.nativeElement.getBoundingClientRect().y + el.nativeElement.getBoundingClientRect().height}px`;\n\t\t\t\t\tthis.triangle.style.transform = `translate(-50%, 0rem) rotate(180deg)`;\n\t\t\t\t}\n\t\t\t\tthis.triangle.style.width = '0';\n\t\t\t\tthis.triangle.style.height = '0';\n\t\t\t\tthis.triangle.style.borderLeft = `${triangleSize} solid transparent`;\n\t\t\t\tthis.triangle.style.borderRight = `${triangleSize} solid transparent`;\n\t\t\t\tthis.triangle.style.borderTop = `${triangleSize} solid ${colors[this.klpWithTooltip].withAlpha}`;\n\t\t\t\tel.nativeElement.prepend(this.triangle);\n\n\t\t\t\tthis.triangleWhite = document.createElement('div');\n\t\t\t\tthis.triangleWhite.style.zIndex = `${zIndexStart + 3}`;\n\t\t\t\tthis.triangleWhite.style.position = 'fixed';\n\t\t\t\tthis.triangleWhite.style.left = `calc(${el.nativeElement.getBoundingClientRect().x + el.nativeElement.getBoundingClientRect().width}px - 0.8rem)`;\n\t\t\t\tif (this.position === 'top') {\n\t\t\t\t\tthis.triangleWhite.style.top = `${el.nativeElement.getBoundingClientRect().y}px`;\n\t\t\t\t\tthis.triangleWhite.style.transform = `translate(-50%, calc(-100% + 0.1rem - 2px))`;\n\t\t\t\t} else if (this.position === 'bottom') {\n\t\t\t\t\tthis.triangleWhite.style.top = `${el.nativeElement.getBoundingClientRect().y + el.nativeElement.getBoundingClientRect().height}px`;\n\t\t\t\t\tthis.triangleWhite.style.transform = `translate(-50%, -2px) rotate(180deg)`;\n\t\t\t\t}\n\t\t\t\tthis.triangleWhite.style.width = '0';\n\t\t\t\tthis.triangleWhite.style.height = '0';\n\t\t\t\tthis.triangleWhite.style.borderLeft = `${triangleSize} solid transparent`;\n\t\t\t\tthis.triangleWhite.style.borderRight = `${triangleSize} solid transparent`;\n\n\t\t\t\tif (stringIsSetAndFilled(textToDisplay)) {\n\t\t\t\t\tthis.triangleWhite.style.borderTop = `${triangleSize} solid ${colors[this.klpWithTooltip].background}`;\n\t\t\t\t} else if (this.templateInstance) {\n\t\t\t\t\tthis.div.style.visibility = 'hidden';\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tconst color = getComputedStyle(this.templateInstance).backgroundColor || getComputedStyle(this.templateInstance).background;\n\t\t\t\t\t\tthis.triangleWhite.style.borderTop = `${triangleSize} solid ${color}`;\n\t\t\t\t\t\tthis.div.style.visibility = 'visible';\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tel.nativeElement.prepend(this.triangleWhite);\n\t\t\t});\n\n\t\t\tel.nativeElement.addEventListener('mouseleave', () => {\n\t\t\t\tif (this.tooltipTemplate) {\n\t\t\t\t\tthis.cleanUpTemplate();\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tel.nativeElement.removeChild(this.div);\n\t\t\t\t} catch (ex) {}\n\t\t\t\ttry {\n\t\t\t\t\tel.nativeElement.removeChild(this.triangle);\n\t\t\t\t} catch (ex) {}\n\t\t\t\ttry {\n\t\t\t\t\tel.nativeElement.removeChild(this.triangleWhite);\n\t\t\t\t} catch (ex) {}\n\t\t\t});\n\t\t});\n\t}\n\n\tpublic hookUpTemplate(): void {\n\t\tthis.viewRefForTemplate = this.tooltipTemplate.createEmbeddedView(null);\n\t\tthis.appRef.attachView(this.viewRefForTemplate);\n\t\tthis.templateInstance = this.viewRefForTemplate.rootNodes[0];\n\t}\n\n\tpublic cleanUpTemplate(): void {\n\t\tthis.appRef.detachView(this.viewRefForTemplate);\n\t\tthis.viewRefForTemplate.destroy();\n\t}\n}\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {ValueAccessorBase} from '../value-accessor-base/value-accessor-base.component';\n\n@Component({\n selector: 'klp-form-text-area',\n templateUrl: './text-area.component.html',\n styleUrls: ['./text-area.component.scss'],\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: TextAreaComponent, multi: true }],\n standalone: false\n})\nexport class TextAreaComponent extends ValueAccessorBase<string> {\n\t@Input() placeholder: string;\n\t@Output() onBlur = new EventEmitter<void>();\n}\n","<div class=\"componentContainer\">\n\t<textarea\n\t\t[(ngModel)]=\"innerValue\"\n\t\t[ngClass]=\"{showErrors: isInErrorState()}\"\n\t\t(input)=\"setInnerValueAndNotify($event.target.value)\"\n\t\t[placeholder]=\"placeholder ? placeholder : ''\"\n\t\t(blur)=\"touch(); onBlur.emit()\"\n\t\t[disabled]='disabled'\n\t\t#nativeInputRef\n\t></textarea>\n</div>\n","import {Component, ElementRef, Host, OnDestroy, OnInit, Optional, TemplateRef, ViewChild} from '@angular/core';\nimport {FormElementComponent} from \"../form-element/form-element.component\";\n\n@Component({\n selector: 'klp-form-caption-end',\n templateUrl: './form-caption-end.component.html',\n styleUrls: ['./form-caption-end.component.scss'],\n standalone: false\n})\nexport class FormCaptionEndComponent implements OnInit, OnDestroy {\n\t@ViewChild('contentRef') public contentRef: TemplateRef<any>;\n\n\tconstructor(@Host() @Optional() private parent: FormElementComponent) {}\n\n\tngOnInit(): void {\n\t\t// this is being run next cycle, because we dont want to fail if the order of components is as follows:\n\t\t// <app-form-error />\n\t\t// <some-input />\n\t\t// That would fail, because the logic of the form error is run first, and at that moment, the `some-input` isnt registered yet\n\t\tsetTimeout(() => {\n\t\t\tthis.parent.registerCaptionEnd(this.contentRef);\n\t\t});\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.parent.registerCaptionEnd(null);\n\t}\n}\n","<ng-template #contentRef>\n\t<ng-content></ng-content>\n</ng-template>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule} from '@angular/forms';\nimport {ValueAccessorBase} from './elements/value-accessor-base/value-accessor-base.component';\nimport {ButtonComponent} from './elements/button/button.component';\nimport {CheckboxComponent} from './elements/checkbox/checkbox.component';\nimport {EmailInputComponent} from './elements/email/email-input.component';\nimport {LoadingIndicatorComponent} from './elements/loading-indicator/loading-indicator.component';\nimport {NumberInputComponent} from './elements/number-input/number-input.component';\nimport {PasswordFieldComponent} from './elements/password-field/password-field.component';\nimport {KlpSelectOptionTemplateDirective, SelectComponent} from './elements/select/select.component';\nimport {SelectFooterComponent} from './elements/select/select-footer/select-footer.component';\nimport {SortableItemsComponent} from './elements/sortable-items/sortable-items.component';\nimport {TextInputComponent} from './elements/text-input/text-input.component';\nimport {ToggleComponent} from './elements/toggle/toggle.component';\nimport {FormCaptionComponent} from './form/form-caption/form-caption.component';\nimport {FormElementComponent} from './form/form-element/form-element.component';\nimport {FormErrorComponent} from './form/form-error/form-error.component';\nimport {FormSubmitButtonComponent} from './form/form-submit-button/form-submit-button.component';\nimport {FormComponent, SubFormDirective} from './form/form.component';\nimport {NgSelectModule} from '@ng-select/ng-select';\nimport {DatePickerComponent} from './elements/date-picker/date-picker.component';\nimport {DateTimePickerComponent} from './elements/date-time-picker/date-time-picker.component';\nimport {MaterialModule} from './material.module';\nimport {MultipleValueAccessorBase} from './elements/value-accessor-base/multiple-value-accessor-base.component';\nimport {FileInputComponent} from './elements/file-input/file-input.component';\nimport {SortableGroupedItemsComponent} from './elements/sortable-grouped-items/sortable-grouped-items.component';\nimport {HourMinuteInputComponent} from './elements/hour-minute-input/hour-minute-input.component';\nimport {RadioComponent} from './elements/radio/radio.component';\nimport {WithTooltipDirective} from './withTooltip.component';\nimport {WarningIconComponent} from './warning-icon/warning-icon.component';\nimport {ElementIsTruncatedCbComponent} from './elementIsTruncatedCb.component';\nimport {OnRenderDirective} from './onRender.component';\nimport {TextAreaComponent} from './elements/text-area/text-area.component';\nimport {FormCaptionEndComponent} from './form/form-caption-end/form-caption-end.component';\n\n@NgModule({\n\timports: [\n\t\tCommonModule,\n\t\tFormsModule,\n\t\tNgSelectModule,\n\t\tMaterialModule,\n\t],\n\tdeclarations: [\n\t\tValueAccessorBase,\n\t\tMultipleValueAccessorBase,\n\t\tButtonComponent,\n\t\tCheckboxComponent,\n\t\tDatePickerComponent,\n\t\tDateTimePickerComponent,\n\t\tEmailInputComponent,\n\t\tLoadingIndicatorComponent,\n\t\tNumberInputComponent,\n\t\tPasswordFieldComponent,\n\t\tSelectComponent,\n\t\tKlpSelectOptionTemplateDirective,\n\t\tSelectFooterComponent,\n\t\tSortableItemsComponent,\n\t\tSortableGroupedItemsComponent,\n\t\tTextInputComponent,\n\t\tTextAreaComponent,\n\t\tToggleComponent,\n\t\tFileInputComponent,\n\t\tFormCaptionComponent,\n\t\tFormCaptionEndComponent,\n\t\tFormElementComponent,\n\t\tFormErrorComponent,\n\t\tFormSubmitButtonComponent,\n\t\tFormComponent,\n\t\tSubFormDirective,\n\t\tHourMinuteInputComponent,\n\t\tRadioComponent,\n\t\tWithTooltipDirective,\n\t\tOnRenderDirective,\n\t\tWarningIconComponent,\n\t\tElementIsTruncatedCbComponent,\n\t],\n\texports: [\n\t\tValueAccessorBase,\n\t\tMultipleValueAccessorBase,\n\t\tButtonComponent,\n\t\tDatePickerComponent,\n\t\tDateTimePickerComponent,\n\t\tCheckboxComponent,\n\t\tEmailInputComponent,\n\t\tLoadingIndicatorComponent,\n\t\tNumberInputComponent,\n\t\tPasswordFieldComponent,\n\t\tSelectComponent,\n\t\tKlpSelectOptionTemplateDirective,\n\t\tSelectFooterComponent,\n\t\tSortableItemsComponent,\n\t\tSortableGroupedItemsComponent,\n\t\tTextInputComponent,\n\t\tTextAreaComponent,\n\t\tToggleComponent,\n\t\tFileInputComponent,\n\t\tFormCaptionComponent,\n\t\tFormCaptionEndComponent,\n\t\tFormElementComponent,\n\t\tFormErrorComponent,\n\t\tFormSubmitButtonComponent,\n\t\tFormComponent,\n\t\tSubFormDirective,\n\t\tHourMinuteInputComponent,\n\t\tRadioComponent,\n\t\tWithTooltipDirective,\n\t\tOnRenderDirective,\n\t\tElementIsTruncatedCbComponent,\n\t]\n})\nexport class NgxEnhancyFormsModule {}\n","/*\n * Public API Surface of ngx-enhancy-forms\n */\n\nexport * from './lib/ngx-enhancy-forms.module';\n\nexport * from './lib/elements/button/button.component';\nexport * from './lib/elements/checkbox/checkbox.component';\nexport * from './lib/elements/radio/radio.component';\nexport * from './lib/elements/radio/radio.component';\nexport * from './lib/elements/date-picker/date-picker.component';\nexport * from './lib/elements/date-time-picker/date-time-picker.component';\nexport * from './lib/elements/email/email-input.component';\nexport * from './lib/elements/loading-indicator/loading-indicator.component';\nexport * from './lib/elements/number-input/number-input.component';\nexport * from './lib/elements/password-field/password-field.component';\nexport * from './lib/elements/select/select-footer/select-footer.component';\nexport * from './lib/elements/select/select.component';\nexport * from './lib/elements/sortable-items/sortable-items.component';\nexport * from './lib/elements/sortable-grouped-items/sortable-grouped-items.component';\nexport * from './lib/elements/text-input/text-input.component';\nexport * from './lib/elements/text-area/text-area.component';\nexport * from './lib/elements/toggle/toggle.component';\nexport * from './lib/elements/file-input/file-input.component';\nexport * from './lib/elements/hour-minute-input/hour-minute-input.component';\nexport * from './lib/elements/value-accessor-base/value-accessor-base.component';\nexport * from './lib/elements/value-accessor-base/multiple-value-accessor-base.component';\n\nexport * from './lib/withTooltip.component';\nexport * from './lib/onRender.component';\nexport * from './lib/elementIsTruncatedCb.component';\n\nexport * from './lib/form/form.component';\nexport * from './lib/form/form-caption/form-caption.component';\nexport * from './lib/form/form-caption-end/form-caption-end.component';\nexport * from './lib/form/form-element/form-element.component';\nexport * from './lib/form/form-error/form-error.component';\nexport * from './lib/form/form-submit-button/form-submit-button.component';\nexport * from './lib/form/form-validation-error/form-validation-error';\n\nexport * from './lib/validators/dateValidator';\n\nexport * from './lib/types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3.OnRenderDirective","i4.WarningIconComponent","i5.ElementIsTruncatedCbComponent","i1.FormElementComponent","i2.LoadingIndicatorComponent","i3","i2.ButtonComponent","formatDate","i4","i8.OnRenderDirective","dateFormat","i4.DateTimePickerComponent","i3.SortableItemsComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAEM,SAAU,oBAAoB,CAAC,CAAS,EAAA;IAC7C,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;AACnC;AAEM,SAAU,iBAAiB,CAAC,KAAU,EAAA;AAC3C,IAAA,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;AAC7C;AAEM,SAAU,WAAW,CAAC,KAAU,EAAA;IACrC,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ;AACtD;AAEM,SAAU,UAAU,CAAC,KAAU,EAAA;AACpC,IAAA,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;AAC7C;AAEM,SAAU,0BAA0B,CAAC,KAAqB,EAAA;AAC/D,IAAA,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;AACnE;AAEM,SAAU,cAAc,CAAC,CAAS,EAAE,MAAc,EAAA;AACvD,IAAA,IAAI,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE;AACtB,QAAA,OAAO,CAAC;IACT;IACA,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,KAAK;AACtC;;SCvBgB,wCAAwC,CAAC,UAAyC,EAAE,GAAG,MAAa,EAAA;IACnH,IAAI,QAAQ,GAAG,EAAE;AAEjB,IAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC3B,QAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;IAClC;IAEA,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAC/B,QAAA,MAAM,oBAAoB,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1E,OAAO,CAAC,KAAK,oBAAoB;AAClC,IAAA,CAAC,CAAC;AACH;AAEM,SAAU,yBAAyB,CAAI,KAAe,EAAA;IAC3D,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAC5B,QAAA,MAAM,oBAAoB,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9D,OAAO,CAAC,KAAK,oBAAoB;AAClC,IAAA,CAAC,CAAC;AACH;SAEgB,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAA;IAC7C,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC;AAC3B;AAEM,SAAU,mBAAmB,CAAC,GAAQ,EAAA;AAC3C,IAAA,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;AAC3E;AAEM,SAAU,OAAO,CAAC,KAAU,EAAA;AACjC,IAAA,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;AACtB,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACzB,YAAA,OAAO,KAAK;QACb;QACA,OAAO,CAAC,KAAK,CAAC;IACf;AACA,IAAA,OAAO,EAAE;AACV;AAEM,SAAU,qBAAqB,CAAI,KAAe,EAAE,SAAkC,EAAA;IAC3F,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAI;AAChC,QAAA,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;AACnB,YAAA,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACb;aAAO;AACN,YAAA,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC9B;AACA,QAAA,OAAO,GAAG;AACX,IAAA,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACT;AAEM,SAAU,SAAS,CAAI,GAAmB,EAAE,IAAgB,EAAA;AACjE,IAAA,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,GAAG,YAAY,IAAI,EAAE,IAAI,CAAC;AAClE;;ACvDM,SAAU,wBAAwB,CAAC,OAAgB,EAAA;IACxD,MAAM,MAAM,GAAG,EAAE;IACjB,IAAI,OAAO,GAAG,OAAO;AACrB,IAAA,OAAO,OAAO,CAAC,aAAa,EAAE;AAC7B,QAAA,IAAI,mBAAmB,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;AAC/C,YAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QACnC;AACA,QAAA,OAAO,GAAG,OAAO,CAAC,aAAa;IAChC;AACA,IAAA,OAAO,MAAM;AACd;AAEM,SAAU,mBAAmB,CAAC,OAAgB,EAAA;AACnD,IAAA,OAAO,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY;AACnD;;ACdA,SAAS,UAAU,CAAC,IAAgB,EAAE,IAAgB,EAAA;AACrD,IAAA,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAEzD,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,QAAA,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AAC/D,YAAA,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACrC;aAAO;AACN,YAAA,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QAC5B;IACD;AAEA,IAAA,OAAO,GAAG;AACX;AAEM,SAAU,SAAS,CAGvB,IAAO,EAAE,IAAO,EAAA;AACjB,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC/C,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC/C,YAAA,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,CAAU;QACvC;;QAGA,OAAO,IAAI,IAAI,IAAI;IACpB;IAEA,MAAM,MAAM,GAAU,EAAW;AAEjC,IAAA,MAAM,IAAI,GAAG,IAAI,GAAG,CAAoB;AACvC,QAAA,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACpB,QAAA,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACQ,KAAA,CAAC;AAE9B,IAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACpB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAc,CAAC;AAC9B,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAc,CAAC;QAE9B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;YACnD,MAAM,CAAC,GAAoB,CAAC,GAAG,SAAS,CAAC,CAAQ,EAAE,CAAQ,CAAQ;YACnE;QACD;;QAGA,MAAM,CAAC,GAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAQ;AAC/C,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,MAAM;AACd;;MCpBa,mBAAmB,GAAG,MAAM,CAAC,0BAA0B;MAYvD,gBAAgB,CAAA;AAL7B,IAAA,WAAA,GAAA;QAQU,IAAA,CAAA,wBAAwB,GAAY,KAAK;QACzC,IAAA,CAAA,yBAAyB,GAAY,KAAK;AACnD,IAAA;+GALY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAhB,gBAAgB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAEC;;sBACA;;sBACA;;sBACA;;MASW,aAAa,CAAA;IAqBzB,WAAA,CAA4C,MAAqB,EAAsB,gBAAkC,EAAA;QAA7E,IAAA,CAAA,MAAM,GAAN,MAAM;QAAqC,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QApBvF,IAAA,CAAA,QAAQ,GAAG,KAAK;QAChB,IAAA,CAAA,iBAAiB,GAAG,IAAI;QACxB,IAAA,CAAA,oBAAoB,GAAsC,cAAc;AAGxE,QAAA,IAAA,CAAA,QAAQ,GAAoD,IAAI,GAAG,EAA8C;QACjH,IAAA,CAAA,eAAe,GAAwB,EAAE;AACzC,QAAA,IAAA,CAAA,MAAM,GAAiC,IAAI,GAAG,EAA2B;QAEzE,IAAA,CAAA,aAAa,GAAoC,gBAAgB;AAChE,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAyB;;QAK/D,IAAA,CAAA,cAAc,GAGjB,EAAE;IAGP;IAEA,QAAQ,GAAA;QACP,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS;AAC3D,QAAA,IAAI,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE;YAC3C,IAAI,CAAC,kCAAkC,EAAE;QAC1C;AACA,QAAA,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;AACjE,YAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,EAAE;gBACnD;YACD;;YAEA,IAAI,CAAC,eAAe,EAAE;QACvB;IACD;IAEO,oBAAoB,GAAA;QAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC7B,YAAA,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC;QACjE;QACA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;AACvC,YAAA,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC;QAChD;QACA,IAAI,CAAC,eAAe,EAAE;IACvB;IAEQ,eAAe,GAAA;AACtB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU;AACnD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE;AACzC,QAAA,MAAM,yBAAyB,GAAG,IAAI,CAAC,gBAAgB,CAAC,yBAAyB;AACjF,QAAA,IAAI,UAAU,YAAY,gBAAgB,EAAE;YAC3C,IAAI,CAAC,yBAAyB,EAAE;AAC/B,gBAAA,IAAI,UAAU,CAAC,EAAE,CAAC,QAAkB,CAAC,YAAY,SAAS,IAAI,UAAU,CAAC,EAAE,CAAC,QAAkB,CAAC,YAAY,SAAS,EAAE;AACrH,oBAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,QAAQ,CAAA,+GAAA,CAAiH,CAAC;gBACrL;YACD;AACA,YAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;gBACjC,MAAM,IAAI,KAAK,CAAC,CAAA,4BAAA,EAA+B,OAAO,QAAQ,CAAA,CAAE,CAAC;YAClE;YACA,IAAI,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE;AACtC,gBAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE;YACnC;YACA,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC;AACtC,YAAA,MAAM,uBAAuB,GAAG,MAAM,EAAE,KAAK;AAC7C,YAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK;AAC7D,YAAA,IAAI,UAAU,CAAC,uBAAuB,CAAC,EAAE;AACxC,gBAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,uBAAuB,CAAC;YAC7D;YACA,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,mBAAmB,CAAC;AACzD,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACpB,gBAAA,UAAU,EAAE,sBAAsB;AAClC,gBAAA,WAAW,EAAE,uBAAuB;AACpC,aAAA,CAAC;QACH;AAAO,aAAA,IAAI,UAAU,YAAY,gBAAgB,EAAE;YAClD,IAAI,CAAC,yBAAyB,EAAE;AAC/B,gBAAA,IAAI,UAAU,CAAC,GAAG,CAAC,QAAkB,CAAC,YAAY,SAAS,IAAI,UAAU,CAAC,GAAG,CAAC,QAAkB,CAAC,YAAY,SAAS,EAAE;AACvH,oBAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,QAAQ,CAAA,+GAAA,CAAiH,CAAC;gBACrL;YACD;AACA,YAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;gBACjC,MAAM,IAAI,KAAK,CAAC,CAAA,4BAAA,EAA+B,OAAO,QAAQ,CAAA,CAAE,CAAC;YAClE;YACA,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE;AACvC,gBAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE;YACnC;YACA,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;AACvC,YAAA,MAAM,uBAAuB,GAAG,MAAM,EAAE,KAAK;AAC7C,YAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK;AAC7D,YAAA,IAAI,UAAU,CAAC,uBAAuB,CAAC,EAAE;AACxC,gBAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,uBAAuB,CAAC;YAC7D;YACA,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,mBAAmB,CAAC;AACzD,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACpB,gBAAA,UAAU,EAAE,sBAAsB;AAClC,gBAAA,WAAW,EAAE,uBAAuB;AACpC,aAAA,CAAC;QACH;IACD;AAEA,IAAA,WAAW,CAAC,aAA4B,EAAA;QACvC,IAAI,aAAa,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,EAAE;AAClD,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QAC1D;QACA,IAAI,UAAU,CAAC,aAAa,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE;YACrD,IAAI,CAAC,oBAAoB,EAAE;QAC5B;QACA,IAAI,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE;YACnD,IAAI,CAAC,kBAAkB,EAAE;QAC1B;IACD;IAEA,WAAW,GAAA;AACV,QAAA,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;AACjE,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU;AACnD,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE;AACzC,YAAA,IAAI,UAAU,YAAY,gBAAgB,EAAE;AAC3C,gBAAA,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,mBAAmB,CAAC;AAC9E,gBAAA,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;oBACf;gBACD;AACA,gBAAA,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;YACzB;AAAO,iBAAA,IAAI,UAAU,YAAY,gBAAgB,EAAE;AAClD,gBAAA,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;oBACjC,MAAM,IAAI,KAAK,CAAC,CAAA,4BAAA,EAA+B,OAAO,QAAQ,CAAA,CAAE,CAAC;gBAClE;gBACA,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,mBAAmB,EAAE;oBAC1D;gBACD;gBACA,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,WAAW,EAAE,CAAC;YACnD;QACD;IACD;IAEQ,oBAAoB,GAAA;AAC3B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG;QAC/B,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,GAAoB,EAAE,KAAa,KAAkC;YACzF,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;AACtC,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC;AACpD,YAAA,IAAI,OAAO,KAAK,KAAK,EAAE;gBACtB,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,EAAE,mBAAmB,EAAE;YAC7D;AACA,YAAA,OAAO,MAAM;AACd,QAAA,CAAC;AAED,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM;QACrC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAoB,KAAa;AACxD,YAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC;YAChD,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,EAAE,mBAAmB,EAAE;AAC5D,YAAA,OAAO,MAAM;AACd,QAAA,CAAC;IACF;IAEQ,kBAAkB,GAAA;AACzB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG;QAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,GAAoB,EAAE,KAAa,KAAkC;YACvF,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;AACpC,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC;AAClD,YAAA,GAAG,CAAC,SAAS,CAAC,EAAC,GAAG,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAC,CAAC;AAChD,YAAA,IAAI,OAAO,KAAK,KAAK,EAAE;gBACtB,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,EAAE,mBAAmB,EAAE;YAC7D;AACA,YAAA,OAAO,MAAM;AACd,QAAA,CAAC;AAED,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;QACnC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAoB,KAAa;AACtD,YAAA,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM;YAClC,OAAO,eAAe,CAAC,SAAS;AAChC,YAAA,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC;AAC9B,YAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC;YAC9C,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,EAAE,mBAAmB,EAAE;AAC5D,YAAA,OAAO,MAAM;AACd,QAAA,CAAC;IACF;IAEQ,kCAAkC,GAAA;AACzC,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU;AAC9C,QAAA,MAAM,KAAK,GAAG,CACb,KAEC,EACD,OAGC,KACQ;YACT,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAI;gBAC9C,UAAU,CAAC,MAAK;oBACf,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE,OAAO,CAAC;AAChD,gBAAA,CAAC,CAAC;AACH,YAAA,CAAC,CAAC;AACH,QAAA,CAAC;AACD,QAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,GAAG,KAAK;IAC5C;IAEO,eAAe,CAAC,WAA+B,EAAE,WAAiC,EAAA;QACxF,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAC,WAAW,EAAE,WAAW,EAAC,CAAC;AACpD,QAAA,IAAI,sBAAiC;AACrC,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YAChB,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,WAAW,CAAC;QAC/E;AACA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,WAAW,CAAC,OAAO,EAAE;QACtB;AAEA,QAAA,MAAM,QAAQ,GAAiE,WAAW,CAAC,MAAM;AACjG,QAAA,WAAW,CAAC,MAAM,GAAG,CAAC,IAAkD,KAAI;AAC3E,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACnB,gBAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;YACjC;AACD,QAAA,CAAC;QAED,MAAM,mBAAmB,GAAG,MAAU;YACrC,MAAM,IAAI,GAAG,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC;YACzD,MAAM,cAAc,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC;AAC3D,YAAA,MAAM,wBAAwB,GAAG,sBAAsB,IAAI;AAC3D,YAAA,OAAO,SAAS,CAAC,cAAc,KAAK,SAAS,GAAG,cAAc,GAAG,wBAAwB,CAAC;AAC3F,QAAA,CAAC;AAED,QAAA,MAAM,UAAU,GAKH,WAAW,CAAC,QAAQ;QACjC,WAAW,CAAC,QAAQ,GAAG,CAAC,KAAc,EAAE,OAKvC,KAAI;AACJ,YAAA,MAAM,cAAc,GAAG,mBAAmB,EAAE;YAC5C,IAAI,cAAc,KAAK,SAAS,IAAI,OAAO,EAAE,qBAAqB,KAAK,IAAI,EAAE;AAC5E,gBAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;oBACzB,OAAO,GAAG,EAAE;gBACb;AACA,gBAAA,OAAO,CAAC,qBAAqB,GAAG,IAAI;YACrC;AACA,YAAA,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,KAAK,SAAS,GAAG,cAAc,GAAG,KAAK,EAAE,OAAO,CAAC;AAC7F,QAAA,CAAC;AAED,QAAA,MAAM,cAAc,GAAG,mBAAmB,EAAE;AAC5C,QAAA,IAAI,cAAc,KAAK,SAAS,EAAE;AACjC,YAAA,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC;QACrC;AAEA,QAAA,OAAO,mBAAmB;IAC3B;AAEQ,IAAA,0BAA0B,CAAC,OAAwB,EAAA;QAC1D,MAAM,IAAI,GAAG,EAAE;QACf,IAAI,cAAc,GAAG,OAAO;AAC5B,QAAA,OAAO,cAAc,CAAC,MAAM,EAAE;AAC7B,YAAA,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM;AACpC,YAAA,IAAI,MAAM,YAAY,SAAS,EAAE;AAChC,gBAAA,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,KAAK,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC;AAC/F,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YACf;AAAO,iBAAA,IAAI,MAAM,YAAY,SAAS,EAAE;AACvC,gBAAA,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,cAAc,CAAC;AAChE,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YACf;YACA,cAAc,GAAG,MAAM;QACxB;AACA,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE;IACtB;AAEQ,IAAA,yBAAyB,CAAC,IAAmB,EAAA;AACpD,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,eAAe;AAClC,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACvB,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,EAAE;AAChC,gBAAA,OAAO,SAAS;YACjB;AACA,YAAA,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;QACvB;AACA,QAAA,OAAO,OAAO;IACf;IAEO,iBAAiB,CAAC,WAA+B,EAAE,WAAiC,EAAA;QAC1F,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AACrE,QAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;QAChC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,KAAK,WAAW,IAAI,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC;QACvH,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AACpE,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,EAAE,WAAW,CAAC;QACxD;IACD;IAEQ,oBAAoB,CAAC,SAA2B,EAAE,MAAiC,EAAA;AAC1F,QAAA,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACnD,YAAA,IAAI,KAAK,YAAY,gBAAgB,EAAE;AACtC,gBAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC;YACzC;AAAO,iBAAA,IAAI,KAAK,YAAY,gBAAgB,EAAE;AAC7C,gBAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC;YACzC;AAAO,iBAAA,IAAI,KAAK,YAAY,kBAAkB,EAAE;AAC/C,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC;YACnC;AACD,QAAA,CAAC,CAAC;IACH;IAEQ,oBAAoB,CAAC,SAA2B,EAAE,MAAiC,EAAA;QAC1F,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACpC,YAAA,IAAI,KAAK,YAAY,gBAAgB,EAAE;AACtC,gBAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC;YACzC;AAAO,iBAAA,IAAI,KAAK,YAAY,gBAAgB,EAAE;AAC7C,gBAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC;YACzC;AAAO,iBAAA,IAAI,KAAK,YAAY,kBAAkB,EAAE;AAC/C,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC;YACnC;AACD,QAAA,CAAC,CAAC;IACH;IAEQ,kBAAkB,GAAA;QACzB,MAAM,MAAM,GAAG,EAAE;AACjB,QAAA,IAAI,IAAI,CAAC,mBAAmB,YAAY,SAAS,EAAE;YAClD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC;QAC5D;AAAO,aAAA,IAAI,IAAI,CAAC,mBAAmB,YAAY,SAAS,EAAE;YACzD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC;QAC5D;AACA,QAAA,OAAO,MAAM;IACd;IAEQ,cAAc,CAAC,OAA2B,EAAE,MAAiC,EAAA;AACpF,QAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;IACrB;AAEQ,IAAA,0BAA0B,CAAC,OAA2B,EAAA;AAC7D,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,KAAK,OAAO,CAAC,EAAE;YAChE,OAAO,CAAC,OAAO,EAAE;QAClB;IACD;AAEO,IAAA,2BAA2B,CAAC,OAAwB,EAAA;AAC1D,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,KAAK,OAAO,CAAC,EAAE,WAAW;IAC/E;AAEO,IAAA,gBAAgB,CAAC,OAAwB,EAAA;QAC/C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;IAClC;IAEO,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE;AAC3C,QAAA,MAAM,WAAW,GAA8B,IAAI,CAAC,kBAAkB,EAAE;QACxE,MAAM,sBAAsB,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAG;YAClD,OAAO,EAAC,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAC;AAC1C,QAAA,CAAC,CAAC;AACF,QAAA,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;AAC5D,QAAA,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,sBAAsB,EAAE,CAAC;AACpD,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK;AACrD,QAAA,IAAI,IAAI,CAAC,mBAAmB,YAAY,SAAS,EAAE;AAClD,YAAA,MAAM,wBAAwB,GAAG,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC;AACrG,YAAA,MAAM,yBAAyB,GAAG,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC;YAEvG,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACtC,gBAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE;AACrC,oBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AACpE,wBAAA,IAAI,GAAG,KAAK,SAAS,EAAE;4BACtB,GAAG,CAAC,WAAW,EAAE;4BACjB,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,cAAc;iCAC/G,IAAI,CAAC,OAAO;iCACZ,KAAK,CAAC,MAAM,CAAC;wBAChB;AACD,oBAAA,CAAC,CAAC;gBACH;qBAAO;oBACN,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,cAAc;yBAC/G,IAAI,CAAC,OAAO;yBACZ,KAAK,CAAC,MAAM,CAAC;gBAChB;AACD,YAAA,CAAC,CAAC;QACH;AACA,QAAA,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC;IACnG;AAEQ,IAAA,gBAAgB,CACvB,sBAA+E,EAC/E,wBAA0C,EAC1C,yBAA2C,EAC3C,cAAc,EAAA;AACd,QAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE;YACrC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE;AAC/E,YAAA,IAAI,CAAC,+BAA+B,CAAC,sBAAsB,CAAC;AAC5D,YAAA,OAAO,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC;QAC3C;aAAO;AACN,YAAA,IAAI,CAAC,+BAA+B,CAAC,sBAAsB,CAAC;YAC5D,MAAM,cAAc,GAAG,SAAS,CAAC,wBAAwB,EAAE,yBAAyB,CAAC;YACrF,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QACzD;IACD;AAEQ,IAAA,+BAA+B,CAAC,SAAoB,EAAE,OAAgB,EAAE,WAAW,GAAG,EAAE,EAAA;AAC/F,QAAA,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,KAAI;YAC9D,IAAI,OAAO,YAAY,WAAW,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,OAAO,CAAC,EAAE;AAC9H,gBAAA,WAAW,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK;YAClC;AAAO,iBAAA,IAAI,OAAO,YAAY,SAAS,EAAE;AACxC,gBAAA,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE;AACtB,gBAAA,IAAI,CAAC,+BAA+B,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;YAC1E;AAAO,iBAAA,IAAI,OAAO,YAAY,SAAS,EAAE;AACxC,gBAAA,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE;AACtB,gBAAA,IAAI,CAAC,+BAA+B,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;YAC1E;AACD,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,WAAW;IACnB;AAEQ,IAAA,+BAA+B,CAAC,SAAoB,EAAE,OAAgB,EAAE,UAAsB,EAAA;QACrG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAwB,KAAI;YACvD,IAAI,OAAO,YAAY,WAAW,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,OAAO,CAAC,EAAE;AAC9H,gBAAA,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAC/B;AAAO,iBAAA,IAAI,OAAO,YAAY,SAAS,EAAE;gBACxC,MAAM,QAAQ,GAAG,EAAE;AACnB,gBAAA,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACzB,IAAI,CAAC,+BAA+B,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;YACjE;AAAO,iBAAA,IAAI,OAAO,YAAY,SAAS,EAAE;gBACxC,MAAM,SAAS,GAAG,EAAE;AACpB,gBAAA,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC1B,IAAI,CAAC,+BAA+B,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC;YAClE;AACD,QAAA,CAAC,CAAC;IACH;IAEO,2BAA2B,GAAA;AACjC,QAAA,IAAI,IAAI,CAAC,mBAAmB,YAAY,SAAS,EAAE;AAClD,YAAA,MAAM,wBAAwB,GAAG,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC;AACrG,YAAA,MAAM,yBAAyB,GAAG,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC;YACvG,MAAM,iBAAiB,GAAG,SAAS,CAAC,wBAAwB,EAAE,yBAAyB,CAAC;AACxF,YAAA,OAAO,iBAAiB;QACzB;AACA,QAAA,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC;IACvF;AAEQ,IAAA,+BAA+B,CAAC,sBAGtC,EAAA;AACD,QAAA,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACpC,YAAA,IAAI,CAAC,CAAC,QAAQ,EAAE;AACf,gBAAA,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE;YACpB;iBAAO;AACN,gBAAA,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE;YACnB;AACD,QAAA,CAAC,CAAC;IACH;+GA1bY,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,qcCrD1B,oDAKA,EAAA,MAAA,EAAA,CAAA,yEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,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,CAAA,EAAA,CAAA,CAAA;;4FDgDa,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,cAGR,KAAK,EAAA,QAAA,EAAA,oDAAA,EAAA,MAAA,EAAA,CAAA,yEAAA,CAAA,EAAA;;0BAuBP;;0BAAY;;0BAA2C;;sBApBnE;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;AEhEI,SAAU,kBAAkB,CAAC,EAAc,EAAA;IAChD,UAAU,CAAC,EAAE,CAAC;AACf;SAEgB,qBAAqB,GAAA;AACpC,IAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;QAC9B,UAAU,CAAC,OAAO,CAAC;AACpB,IAAA,CAAC,CAAC;AACH;;MCAa,iBAAiB,CAAA;IAG7B,eAAe,GAAA;QACd,kBAAkB,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;IAC5C;+GALY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAjB,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAEC;;;MCDW,oBAAoB,CAAA;AANjC,IAAA,WAAA,GAAA;QAOU,IAAA,CAAA,OAAO,GAAoB,MAAM;AAC1C,IAAA;+GAFY,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,kHCRjC,urEAUA,EAAA,MAAA,EAAA,CAAA,0EAAA,CAAA,EAAA,CAAA,CAAA;;4FDFa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,cAGrB,KAAK,EAAA,QAAA,EAAA,urEAAA,EAAA,MAAA,EAAA,CAAA,0EAAA,CAAA,EAAA;;sBAGnB;;;MEAW,6BAA6B,CAAA;AAIzC,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;AADrB,QAAA,IAAA,CAAA,oBAAoB,GAAG,CAAC,WAAoB,KAAI,EAAE,CAAC;IAG5D;IAEA,eAAe,GAAA;QACd,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE;YAC3C;QACD;AAEA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AAEhD,QAAA,MAAM,eAAe,GAAG;AACvB,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,OAAO,EAAE;SACT;QAED,MAAM,QAAQ,GAAG,MAAK;YACrB,IAAI,CAAC,kBAAkB,EAAE;AAC1B,QAAA,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,QAAQ,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,eAAe,CAAC;QAClD,IAAI,CAAC,kBAAkB,EAAE;IAC1B;AAEQ,IAAA,MAAM,kBAAkB,GAAA;QAC/B,MAAM,qBAAqB,EAAE;AAC7B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AACnE,QAAA,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC;QACvC;IACD;AAEQ,IAAA,WAAW,CAAC,OAAoB,EAAA;QACvC,IAAI,EAAE,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;YAC/B;QACD;QACA,MAAM,sBAAsB,GAAG,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW;QACxE,IAAI,CAAC,sBAAsB,EAAE;YAC5B,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC,KAAoB,CAAC,CAAC;QAC5F;AACA,QAAA,OAAO,sBAAsB;IAC9B;IAEA,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE;IAC5B;+GAnDY,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAA7B,6BAA6B,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAJzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAIC;;;MCSW,mBAAmB,GAAG,IAAI,cAAc,CAAsB,qBAAqB;AAEzF,MAAM,sBAAsB,GAAsB;AACxD,IAAA,GAAG,EAAE,gCAAgC;AACrC,IAAA,GAAG,EAAE,iCAAiC;AACtC,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,KAAK,EAAE,2BAA2B;AAClC,IAAA,SAAS,EAAE,gDAAgD;AAC3D,IAAA,SAAS,EAAE,iDAAiD;AAC5D,IAAA,OAAO,EAAE,yBAAyB;AAClC,IAAA,aAAa,EAAE,sBAAsB;AACrC,IAAA,IAAI,EAAE,oBAAoB;;MAWd,oBAAoB,CAAA;AA4BhC,IAAA,WAAA,CACqB,MAAqB,EACQ,cAAmC,EAC5E,KAAiB,EACjB,MAAc,EAAA;QAHF,IAAA,CAAA,MAAM,GAAN,MAAM;QACuB,IAAA,CAAA,cAAc,GAAd,cAAc;QACvD,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,MAAM,GAAN,MAAM;QA7BC,IAAA,CAAA,SAAS,GAA8B,YAAY;QACnD,IAAA,CAAA,cAAc,GAA2B,aAAa;QACtD,IAAA,CAAA,iBAAiB,GAAqB,QAAQ;QAC9C,IAAA,CAAA,iBAAiB,GAA0E,OAAO;QAClG,IAAA,CAAA,mBAAmB,GAAG,KAAK;QAC3B,IAAA,CAAA,qBAAqB,GAAG,KAAK;QAC7B,IAAA,CAAA,uBAAuB,GAAG,IAAI;QAYvC,IAAA,CAAA,aAAa,GAAsB,sBAAsB;QACzD,IAAA,CAAA,mBAAmB,GAA4D,EAAE;QAGhF,IAAA,CAAA,UAAU,GAAe,SAAS;QAClC,IAAA,CAAA,aAAa,GAAwB,EAAE;AAoNxC,QAAA,IAAA,CAAA,0BAA0B,GAAG,CAAC,WAAoB,KAAI;AAC5D,YAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,WAAW;AACtC,QAAA,CAAC;QA4BM,IAAA,CAAA,qBAAqB,GAAG,MAAW;AACzC,YAAA,IAAI,IAAI,CAAC,UAAU,KAAK,YAAY,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;gBACtE;YACD;YACA,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,qBAAqB,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,qBAAqB,EAAE,CAAC,GAAG;AACjJ,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE;AACrC,gBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,WAAA,EAAc,YAAY,CAAA,GAAA,CAAK;YAClF;AACD,QAAA,CAAC;IAlPD;AAEA,IAAA,MAAM,eAAe,GAAA;AACpB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,MAAK;YAC3E,IAAI,CAAC,mBAAmB,EAAE;AAC3B,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,UAAU,CAAC,YAAY,CAAC,EAAG;AAC9B,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC;QACtC;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;YAClC,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAK;gBACtE,IAAI,CAAC,qBAAqB,EAAE;AAC7B,YAAA,CAAC,CAAC;AACH,QAAA,CAAC,CAAC;IACH;IAEO,uBAAuB,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,iBAAiB,KAAK,KAAK;IAChD;IAEO,oBAAoB,CAAC,OAAe,EAAE,UAA+B,EAAA;AAC3E,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAI;AAClD,YAAA,OAAO,GAAG,CAAC,OAAO,CAAC,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,CAAG,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;QAChD,CAAC,EAAE,OAAO,CAAC;IACZ;AAEO,IAAA,eAAe,CAAC,WAA+B,EAAE,KAAA,GAAgC,IAAI,EAAA;AAC3F,QAAA,IAAI,CAAC,eAAe,GAAG,WAAW;AAClC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC;QAG1E,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,SAAS,CAAC,MAAK;YACtE,IAAI,CAAC,mBAAmB,EAAE;AAC3B,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC;QACrC,IAAI,CAAC,mBAAmB,EAAE;AAC1B,QAAA,OAAO,mBAAmB;IAC3B;IAEO,mBAAmB,GAAA;AACzB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU;QACjC,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,oBAAoB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE;AAChD,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;QAC5B;aAAO,IAAI,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE;AAC/C,YAAA,IAAI,CAAC,UAAU,GAAG,YAAY;QAC/B;aAAO;AACN,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;QAC5B;QAEA,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC;IAC5D;IAEQ,0BAA0B,CAAC,IAAgB,EAAE,OAAmB,EAAA;AACvE,QAAA,IAAI,IAAI,KAAK,OAAO,EAAE;YACrB;QACD;AACA,QAAA,MAAM,UAAU,GAAG,CAAC,GAAG,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;AAClF,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;AAClC,YAAA,IAAI,OAAO,KAAK,YAAY,EAAE;AAC7B,gBAAA,UAAU,CAAC,OAAO,CAAC,CAAC,IAAG;oBACtB,CAAC,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,qBAAqB,CAAC;AACzD,gBAAA,CAAC,CAAC;YACH;iBAAO;AACN,gBAAA,UAAU,CAAC,OAAO,CAAC,CAAC,IAAG;oBACtB,CAAC,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,qBAAqB,CAAC;AAC5D,gBAAA,CAAC,CAAC;YACH;AACD,QAAA,CAAC,CAAC;IACH;AAEO,IAAA,iBAAiB,CAAC,WAA+B,EAAA;AACvD,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;QAC3B,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,EAAE,IAAI,CAAC;IACjD;IAEO,kBAAkB,GAAA;QACxB,OAAO,IAAI,CAAC,eAAe;IAC5B;IAEO,gBAAgB,GAAA;QACtB,OAAO,IAAI,CAAC,KAAK;IAClB;IAEO,oBAAoB,CAAC,KAAa,EAAE,WAA6B,EAAA;QACvE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,WAAW,EAAC,CAAC;IACpD;AAEO,IAAA,eAAe,CAAC,WAA6B,EAAA;AACnD,QAAA,IAAI,CAAC,UAAU,GAAG,WAAW;IAC9B;AAEO,IAAA,kBAAkB,CAAC,WAA6B,EAAA;AACtD,QAAA,IAAI,CAAC,aAAa,GAAG,WAAW;IACjC;IAEO,gBAAgB,GAAA;QACtB,OAAO,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC;IAC3D;IAEO,6BAA6B,GAAA;AACnC,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,WAAW,EAAE;YAC/E,OAAO,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAqB;QAC/E;AACA,QAAA,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC;IAChD;IAEO,6BAA6B,GAAA;AACnC,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,YAAY,WAAW;IACtD;IAEA,cAAc,GAAA;AACb,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,eAAe,EAAE,OAAO,KAAK,IAAI,EAAE;AAC3C,YAAA,OAAO,IAAI;QACZ;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,EAAE;AAClC,YAAA,OAAO,IAAI;QACZ;AACA,QAAA,OAAO,UAAU;IAClB;AAEA,IAAA,qBAAqB,CAAC,KAAa,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC;IAC/D;AAEA,IAAA,gBAAgB,CAAC,KAAa,EAAA;QAC7B,OAAO,IAAI,CAAC,cAAc,EAAE,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC;IACnG;AAEA,IAAA,mBAAmB,CAAC,IAAI,EAAA;QACvB,IAAI,IAAI,KAAK,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE;AAC7C,YAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,eAAe;QACvC;QACA,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,SAAS;AAClD,QAAA,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,KAAK,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,QAAQ,CAAC,EAAE;AAC9F,YAAA,OAAO,IAAI;QACZ;aAAO;YACN,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC;QACjD;IACD;IAEA,QAAQ,GAAA;AACP,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC;QAChF,MAAM,SAAS,GAAG,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC,eAAe,GAAG,CAAC,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC,GAAG;AACrG,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,GAAG;AACtF,QAAA,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS;AACxC,QAAA,MAAM,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,eAAe;QAEvD,MAAM,CAAC,QAAQ,CAAC;YACf,GAAG,EAAE,MAAM,GAAG,EAAE;AAChB,YAAA,QAAQ,EAAE;AACV,SAAA,CAAC;IACH;IAEA,UAAU,GAAA;AACT,QAAA,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC;QAC3C;AACA,QAAA,OAAO,KAAK;IACb;AAEA,IAAA,eAAe,CAAC,GAA4B,EAAA;AAC3C,QAAA,IAAI,GAAG,KAAK,WAAW,EAAE;AACxB,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS;QAC9C;AACA,QAAA,OAAO,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;IACjE;IAEO,gBAAgB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,oBAAoB,IAAI,cAAc;IAC3D;IAEO,4BAA4B,GAAA;AAClC,QAAA,OAAO,IAAI,CAAC,UAAU,KAAK,YAAY;IACxC;IAEO,wBAAwB,GAAA;QAC9B,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;AAClE,YAAA,OAAO,KAAK;QACb;AACA,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;AAClC,YAAA,OAAO,KAAK;QACb;QACA,IAAI,oBAAoB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE;AAChD,YAAA,OAAO,CAAC,IAAI,CAAC,iBAAiB;QAC/B;QACA,IAAI,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE;AACxC,YAAA,OAAO,IAAI;QACZ;AACA,QAAA,OAAO,KAAK;IACb;IAEO,sBAAsB,GAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC/B,YAAA,OAAO,KAAK;QACb;AACA,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,UAAU,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,gBAAgB,EAAE;AAClF,YAAA,OAAO,KAAK;QACb;AACA,QAAA,OAAO,IAAI;IACZ;IAMO,sBAAsB,GAAA;AAC5B,QAAA,OAAO,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC3C;IAEO,UAAU,GAAA;AAChB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU;AACjC,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;QAC3B,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC;IAC5D;IAEO,WAAW,GAAA;QACjB,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE;YAClE;QACD;AACA,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC3B;QACD;AACA,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU;AACjC,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,YAAY,EAAE;AACrC,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;QAC5B;aAAO;AACN,YAAA,IAAI,CAAC,UAAU,GAAG,YAAY;QAC/B;QACA,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC;IAC5D;IAYA,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IACjD;IAEQ,iBAAiB,GAAA;AACxB,QAAA,IAAI,oBAAoB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE;YACvF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE;gBAC/C,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;YAC1C;QACD;IACD;AAhSY,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,4DA8BvB,mBAAmB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGA9BhB,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAiBlB,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iCAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iCAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5DhC,urNA8JA,EAAA,MAAA,EAAA,CAAA,suLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDnHa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAGhB,KAAK,EAAA,QAAA,EAAA,urNAAA,EAAA,MAAA,EAAA,CAAA,suLAAA,CAAA,EAAA;;0BA+BlB;;0BACA,MAAM;2BAAC,mBAAmB;;0BAAG;;sBA5B9B;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA,SAAS;uBAAC,sBAAsB;;sBAChC,SAAS;uBAAC,SAAS;;sBACnB,SAAS;uBAAC,iCAAiC;;sBAC3C,SAAS;uBAAC,gBAAgB;;sBAC1B,SAAS;uBAAC,aAAa;;sBACvB,SAAS;uBAAC,cAAc;;sBACxB,SAAS;uBAAC,gBAAgB;;sBAC1B,YAAY;uBAAC,iBAAiB;;;AEzChC;;;;;;;;AAQG;MAOU,iBAAiB,CAAA;IAsB7B,WAAA,CAC+B,MAA4B,EAC5B,gBAAkC,EAAA;QADlC,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;AAtBxC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,KAAK,EAAsB;AACxC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,KAAK,EAAc;QACjC,IAAA,CAAA,SAAS,GAAM,IAAI;QAEX,IAAA,CAAA,QAAQ,GAAG,KAAK;;QAKhB,IAAA,CAAA,eAAe,GAAW,IAAI;QAC9B,IAAA,CAAA,WAAW,GAAuB,IAAI;QACtC,IAAA,CAAA,YAAY,GAAG,KAAK;AAEnB,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAQ;QA0G5C,IAAA,CAAA,KAAK,GAAG,MAAW;YACzB,IAAI,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,EAAC;AAClD,gBAAA,IAAI,CAAC,cAAc,EAAE,aAAa,EAAE,KAAK,EAAE;YAC5C;iBAAM;AACL,gBAAA,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC;YAC1E;AACD,QAAA,CAAC;AAEM,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,GAAqB,KAAU;AACnD,YAAA,IAAI,CAAC,OAAO,GAAG,GAAG;AACnB,QAAA,CAAC;QACM,IAAA,CAAA,UAAU,GAAG,MAAuB;AAC1C,YAAA,IAAI,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AAClC,gBAAA,OAAO,IAAI,CAAC,YAAY,EAAE;YAC3B;YACA,OAAO,IAAI,CAAC,OAAO;AACpB,QAAA,CAAC;IA/GD;IAEA,QAAQ,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW;QAC5C;AAAO,aAAA,IAAI,oBAAoB,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;AACtD,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAuB;AACzG,YAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE;AAChD,gBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,cAAA,EAAiB,IAAI,CAAC,eAAe,CAAA,gBAAA,EAAmB,IAAI,CAAC,MAAM,EAAE,OAAO,CAAA,oCAAA,CAAsC,CAAC;YACpI;QACD;AACA,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ;YACjD,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,SAAS,CAAC,MAAK;gBACrD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ;AAClD,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC;QACxF;IACD;IAEU,iBAAiB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,mBAAmB,IAAI;IACpC;IAGA,cAAc,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,OAAO,IAAI;QACZ;AACA,QAAA,OAAO,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO;IACrH;IAEA,WAAW,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC7B,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC,mBAAmB,CAAC;QACzD;IACD;IAEA,KAAK,GAAA;AACJ,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACpB;AAEA,IAAA,UAAU,CAAC,KAAQ,EAAA;AAClB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;IACxB;AAEA,IAAA,gBAAgB,CAAC,EAAsB,EAAA;AACtC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IACtB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IACtB;AAEA,IAAA,sBAAsB,CAAC,KAAQ,EAAA;AAC9B,QAAA,MAAM,gBAAgB,GAAG,CAAC,UAAa,KAAU;AAChD,YAAA,IAAI,CAAC,SAAS,GAAG,UAAU;AAC3B,YAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAC5B,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC;AAC7C,QAAA,CAAC;AACD,QAAA,IAAI,UAAU,CAAC,IAAI,CAAC,2BAA2B,CAAC,EAAE;AACjD,YAAA,IAAI,CAAC,yCAAyC,GAAG,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC;AACxG,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,yCAAyC;AAChE,YAAA,IAAI,CAAC,yCAAyC,CAAC,IAAI,CAAC,MAAK;AACxD,gBAAA,IAAI,IAAI,CAAC,yCAAyC,KAAK,SAAS,EAAE;oBACjE,gBAAgB,CAAC,KAAK,CAAC;gBACxB;qBAAO;;gBAEP;AACD,YAAA,CAAC,CAAC,CAAC,KAAK,CAAC,MAAK;AACb,gBAAA,IAAI,IAAI,CAAC,yCAAyC,KAAK,SAAS,EAAE;AACjE,oBAAA,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;gBACjC;qBAAO;;gBAEP;AACD,YAAA,CAAC,CAAC;QACH;aAAO;YACN,gBAAgB,CAAC,KAAK,CAAC;QACxB;IACD;IAEA,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;IAClC;AAEA,IAAA,YAAY,CAAC,aAAqB,EAAA;AACjC,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,SAAS,GAAG,EAAS,CAAC,IAAI,EAAE,CAAC;AACtF,QAAA,IAAI,mBAAmB,CAAC,UAAU,CAAC,EAAE;AACpC,YAAA,OAAO,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC1C;AACA,QAAA,OAAO,KAAK;IACb;+GAvHY,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,sbAHhB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;4FAGH,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,UAAU,EAAE;AACf,iBAAA;;0BAwBE;;0BAAQ;;0BACR;;0BAAQ;;sBAlBT;;sBAGA;;sBAEA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA,SAAS;uBAAC,gBAAgB;;;MC1Cf,yBAAyB,CAAA;AANtC,IAAA,WAAA,GAAA;QAOiB,IAAA,CAAA,OAAO,GAAiD,OAAO;QAC/D,IAAA,CAAA,IAAI,GAAmD,QAAQ;AAC/E,IAAA;+GAHY,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,qICRtC,igDAgDA,EAAA,MAAA,EAAA,CAAA,snEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDxCa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,cAG1B,KAAK,EAAA,QAAA,EAAA,igDAAA,EAAA,MAAA,EAAA,CAAA,snEAAA,CAAA,EAAA;;sBAGnB;;sBACA;;;MEQW,eAAe,CAAA;AAN5B,IAAA,WAAA,GAAA;QAOU,IAAA,CAAA,OAAO,GAAkB,OAAO;QAChC,IAAA,CAAA,IAAI,GAAiC,QAAQ;QAC7C,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,SAAS,GAAG,IAAI;QAChB,IAAA,CAAA,QAAQ,GAAG,KAAK;QAChB,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,IAAI,GAAwB,QAAQ;AAoB7C,IAAA;AAjBA,IAAA,IAAqC,CAAC,GAAA;QACrC,OAAO,IAAI,CAAC,SAAS;IACtB;IAEA,MAAM,OAAO,CAAC,KAAY,EAAA;AACzB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClB,KAAK,CAAC,eAAe,EAAE;YACvB;QACD;AAEA,QAAA,IAAI,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;AACnC,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;YACrB,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAK;AAC5C,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACvB,YAAA,CAAC,CAAC;QACH;IACD;+GA1BY,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,8TClB5B,iiBAoBA,EAAA,MAAA,EAAA,CAAA,m4EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDFa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,cAGf,KAAK,EAAA,QAAA,EAAA,iiBAAA,EAAA,MAAA,EAAA,CAAA,m4EAAA,CAAA,EAAA;;sBAGnB;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA,WAAW;uBAAC,kBAAkB;;;AEjB1B,MAAO,iBAAkB,SAAQ,iBAA0B,CAAA;AAPjE,IAAA,WAAA,GAAA;;QASU,IAAA,CAAA,8BAA8B,GAAG,KAAK;AAC/C,IAAA;+GAHY,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,mKAHf,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,iDCR5F,s3CA6BA,EAAA,MAAA,EAAA,CAAA,g1CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,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,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,CAAA,EAAA,CAAA,CAAA;;4FDlBa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,aAGlB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,iBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,cAC5E,KAAK,EAAA,QAAA,EAAA,s3CAAA,EAAA,MAAA,EAAA,CAAA,g1CAAA,CAAA,EAAA;;sBAGnB;;sBACA;;;AEFI,MAAO,mBAAoB,SAAQ,iBAAyB,CAAA;AAPlE,IAAA,WAAA,GAAA;;QAQU,IAAA,CAAA,WAAW,GAAG,EAAE;AACzB,IAAA;+GAFY,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,4GAHjB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,iDCR9F,mdAgBA,EAAA,MAAA,EAAA,CAAA,y8BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,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,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,CAAA,EAAA,CAAA,CAAA;;4FDLa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,aAGrB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,mBAAqB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,cAC9E,KAAK,EAAA,QAAA,EAAA,mdAAA,EAAA,MAAA,EAAA,CAAA,y8BAAA,CAAA,EAAA;;sBAGnB;;;AEDI,MAAO,oBAAqB,SAAQ,iBAAkC,CAAA;AAP5E,IAAA,WAAA,GAAA;;QASU,IAAA,CAAA,WAAW,GAAY,KAAK;AASrC,IAAA;AAPA,IAAA,sBAAsB,CAAC,KAAsB,EAAA;QAC5C,IAAI,IAAI,CAAC,WAAW,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAClD,KAAK,CAAC,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5C;aAAO;AACN,YAAA,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC;QACpC;IACD;+GAVY,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,yIAHlB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,oBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,iDCR/F,sSAUA,EAAA,MAAA,EAAA,CAAA,+yBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,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,mBAAA,EAAA,QAAA,EAAA,iGAAA,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,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,CAAA,EAAA,CAAA,CAAA;;4FDCa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,aAGtB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,oBAAsB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,cAC/E,KAAK,EAAA,QAAA,EAAA,sSAAA,EAAA,MAAA,EAAA,CAAA,+yBAAA,CAAA,EAAA;;sBAGnB;;sBACA;;;AEFI,MAAO,sBAAuB,SAAQ,iBAAyB,CAAA;AAPrE,IAAA,WAAA,GAAA;;QAQU,IAAA,CAAA,WAAW,GAAG,UAAU;AACjC,IAAA;+GAFY,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,+GAHpB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,sBAAsB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,iDCRjG,2SAWA,EAAA,MAAA,EAAA,CAAA,+yBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,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,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,CAAA,EAAA,CAAA,CAAA;;4FDAa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,aAGxB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,sBAAwB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,cACjF,KAAK,EAAA,QAAA,EAAA,2SAAA,EAAA,MAAA,EAAA,CAAA,+yBAAA,CAAA,EAAA;;sBAGnB;;;MEsBW,mBAAmB,GAAG,IAAI,cAAc,CAAM,8BAA8B;MAM5E,gCAAgC,CAAA;+GAAhC,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAhC,gCAAgC,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAhC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAJ5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAWK,MAAO,eAAgB,SAAQ,iBAAoC,CAAA;IAqCxE,WAAA,CAC+B,MAA4B,EAC5B,gBAAkC,EACf,YAAiB,EAC1D,KAAiB,EACjB,MAAc,EAAA;AAEtB,QAAA,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC;QAND,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QACG,IAAA,CAAA,YAAY,GAAZ,YAAY;QACrD,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,MAAM,GAAN,MAAM;QAvCN,IAAA,CAAA,WAAW,GAA8B,YAAY;QAErD,IAAA,CAAA,QAAQ,GAAG,KAAK;QAChB,IAAA,CAAA,yBAAyB,GAAG,KAAK;QACjC,IAAA,CAAA,SAAS,GAAG,IAAI;QAChB,IAAA,CAAA,eAAe,GAAG,IAAI;QACtB,IAAA,CAAA,kBAAkB,GAAG,KAAK;QAC1B,IAAA,CAAA,UAAU,GAAG,IAAI;QACjB,IAAA,CAAA,aAAa,GAAG,IAAI;QACpB,IAAA,CAAA,cAAc,GAAG,IAAI;QACd,IAAA,CAAA,gBAAgB,GAAiD,IAAI;QACrE,IAAA,CAAA,iBAAiB,GAAqB,MAAM;AAG3C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAU;AACrC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAQ;AACvC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAQ;AACnC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAQ;AACnC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAQ;AACjC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAQ;AAClC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAU;QAMhD,IAAA,CAAA,oBAAoB,GAAG,CAAC,CAAC;QAC1B,IAAA,CAAA,qBAAqB,GAAiD,QAAQ;QAC7E,IAAA,CAAA,MAAM,GAAY,KAAK;QACvB,IAAA,CAAA,oBAAoB,GAAG,CAAC;QACxB,IAAA,CAAA,oBAAoB,GAAG,CAAC;AAoBxB,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,CAAC,KAAI;AAC3B,YAAA,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE;gBACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAErC;AACD,QAAA,CAAC;QA4GO,IAAA,CAAA,6BAA6B,GAAG,MAAK;AAC5C,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,mBAAmB,CAAC;AACjF,YAAA,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS;AAC1C,YAAA,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE;gBACpC;YACD;AACA,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC,GAAG;AACjH,YAAA,IAAI,CAAC,oBAAoB,GAAG,UAAU;AAEtC,YAAA,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;YACtC,IAAI,CAAC,eAAe,EAAE;AACvB,QAAA,CAAC;QAEO,IAAA,CAAA,4BAA4B,GAAG,YAA0B;AAChE,YAAA,IAAI,IAAI,CAAC,eAAe,KAAK,KAAK,EAAE;gBACnC,MAAM,qBAAqB,EAAE;AAC7B,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,EAAE;AAC/E,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,mBAAmB,CAAC;AACzE,oBAAA,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,IAAI;oBAC/D;gBACD;AACA,gBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC;AAChG,gBAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACpD,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,mBAAmB;AAClI,gBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC;AACnG,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,mBAAmB,CAAC;gBACjF,IAAI,aAAa,EAAE;AAClB,oBAAA,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,IAAI;AAC1E,oBAAA,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,CAAA,EAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,EAAE,QAAQ,EAAE,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC,CAAA,EAAA,CAAI;oBACxI,MAAM,qBAAqB,EAAE;AAC7B,oBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;oBAC1E,MAAM,kBAAkB,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;AAEtE,oBAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,IAAI;oBAC9E,MAAM,iBAAiB,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,gBAAgB,CAAC;AACzH,oBAAA,MAAM,gBAAgB,GAAG,kBAAkB,GAAG,WAAW;AACzD,oBAAA,IAAI,IAAI,CAAC,iBAAiB,KAAK,OAAO,EAAE;AACvC,wBAAA,IAAI,gBAAgB,GAAG,gBAAgB,EAAE;AACxC,4BAAA,IAAI,CAAC,oBAAoB,GAAG,CAAC,gBAAgB,GAAG,EAAE;wBACnD;6BAAO;AACN,4BAAA,IAAI,CAAC,oBAAoB,GAAG,CAAC,gBAAgB;wBAC9C;oBACD;AAAO,yBAAA,IAAI,gBAAgB,GAAG,iBAAiB,EAAE;wBAChD,IAAI,CAAC,oBAAoB,GAAG,CAAC,gBAAgB,GAAG,iBAAiB,GAAG,EAAE;oBACvE;oBACA,IAAI,CAAC,eAAe,EAAE;gBACvB;YACD;AACD,QAAA,CAAC;QAuDM,IAAA,CAAA,KAAK,GAAG,MAAW;AACzB,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AACtB,QAAA,CAAC;QAEM,IAAA,CAAA,IAAI,GAAG,MAAW;AACxB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACrB,QAAA,CAAC;QAEM,IAAA,CAAA,KAAK,GAAG,MAAW;AACzB,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AACtB,QAAA,CAAC;IA1OD;IAEA,eAAe,GAAA;QACd,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,OAAO,EAAE;AACd,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC;IAC9F;IASQ,OAAO,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,sBAAsB,CAAC;AAChF,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,mBAAmB,CAAC;YAChF,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,YAAY,CAAC;QACrE;IACD;IAEQ,SAAS,GAAA;AAChB,QAAA,IAAI,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACtC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,sBAAsB,CAAC;YAChF,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC7C,YAAA,OAAO,CAAC,SAAS,GAAG,QAAQ;AAC5B,YAAA,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM;AAC/B,YAAA,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACvD;IACD;IAEA,MAAM,WAAW,CAAC,OAAsB,EAAA;QACvC,IAAI,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAC/C,YAAA,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;;YAE9B,MAAM,qBAAqB,EAAE;AAC7B,YAAA,MAAM,IAAI,CAAC,4BAA4B,EAAE;QAC1C;AACA,QAAA,IAAI,OAAO,CAAC,gBAAgB,EAAE;AAC7B,YAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,gBAAgB;QACnD;AACA,QAAA,IAAI,OAAO,CAAC,MAAM,EAAE;AACnB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,aAAa,CAAC,8BAA8B,CAAC;AAC1F,YAAA,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE;gBAC1B,SAAS,CAAC,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY;YAClD;QACD;IACD;AAEA,IAAA,qBAAqB,CAAC,GAAW,EAAA;QAChC,QAAQ,GAAG;AACV,YAAA,KAAK,aAAa;AACjB,gBAAA,OAAO,MAAM,gBAAgB;AAC9B,YAAA,KAAK,gBAAgB;gBACpB,OAAO,CAAC,MAAM,KAAK,CAAA,EAAG,MAAM,WAAW;;IAE1C;AAEA,IAAA,cAAc,CAAC,GAAW,EAAE,MAAA,GAAc,IAAI,EAAA;QAC7C,IAAI,GAAG,KAAK,aAAa,IAAI,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACpE,OAAO,IAAI,CAAC,WAAW;QACxB;QACA,OAAO,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACrF;AAEA,IAAA,QAAQ,CAAC,aAAqB,EAAA;AAC7B,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;QACzE,IAAI,IAAI,CAAC,oBAAoB,GAAG,aAAa,IAAI,aAAa,KAAK,YAAY,EAAE;AAChF,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QACzB;AACA,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,oBAAoB,CAAC;QAC9E,IAAI,CAAC,4BAA4B,EAAE;IACpC;AAEA,IAAA,kBAAkB,CAAC,WAAmB,EAAA;AACrC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;IAChC;AAEA,IAAA,MAAM,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAElB,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,YAAY,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;YAC5E,IAAI,CAAC,yBAAyB,EAAE;QACjC;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YAC1B,IAAI,CAAC,aAAa,EAAE;QACrB;;QAEA,MAAM,qBAAqB,EAAE;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AAEpB,QAAA,MAAM,IAAI,CAAC,4BAA4B,EAAE;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YAC1B,IAAI,CAAC,6BAA6B,EAAE;AACpC,YAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;gBAClC,CAAC,GAAG,IAAI,CAAC,wBAAwB,EAAE,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,6BAA6B,CAAC,CAAC;AAC5H,YAAA,CAAC,CAAC;QACH;IACD;IAEQ,aAAa,GAAA;QACpB,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACnD,QAAA,IAAI,IAAI,CAAC,qBAAqB,KAAK,KAAK,EAAE;YACzC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC;QACtD;aAAO;YACN,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC;QAC1D;QAEA,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;QAChD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;QACzC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;IACvD;IAEQ,aAAa,GAAA;QACpB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC;QACzD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;IACvD;IAoDQ,wBAAwB,GAAA;QAC/B,MAAM,MAAM,GAAG,EAAE;AACjB,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa;AACtC,QAAA,OAAO,OAAO,CAAC,aAAa,EAAE;YAC7B,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;AACpD,gBAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;YACnC;AACA,YAAA,OAAO,GAAG,OAAO,CAAC,aAAa;QAChC;AACA,QAAA,OAAO,MAAM;IACd;IAEQ,eAAe,GAAA;AACtB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,mBAAmB,CAAC;AACjF,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;YAC/B;QACD;QACA,MAAM,oBAAoB,GAAG,CAAA,UAAA,EAAa,IAAI,CAAC,oBAAoB,CAAA,IAAA,EAAO,IAAI,CAAC,oBAAoB,CAAA,GAAA,CAAK;AACxG,QAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,qBAAqB,KAAK,KAAK,GAAG,CAAA,kCAAA,CAAoC,GAAG,iBAAiB;AAC9H,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE;AACpC,YAAA,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,UAAU;AAChD,YAAA,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,6BAA6B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,KAAK;QACzH;aAAO;AACN,YAAA,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACzF;IACD;IAEQ,yBAAyB,GAAA;AAChC,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,GAAG;AAC7F,QAAA,IAAI,WAAW,IAAI,GAAG,EAAE;AACvB,YAAA,IAAI,CAAC,qBAAqB,GAAG,QAAQ;QACtC;aAAO;AACN,YAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK;QACnC;IACD;AAEQ,IAAA,mBAAmB,CAAC,OAAgB,EAAA;AAC3C,QAAA,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC;AACvC,QAAA,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,EAAE;AAC/B,YAAA,OAAO,IAAI;QACZ;AACA,QAAA,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,EAAE;AAC9B,YAAA,OAAO,IAAI;QACZ;AACA,QAAA,IAAI,KAAK,CAAC,SAAS,KAAK,QAAQ,EAAE;AACjC,YAAA,OAAO,IAAI;QACZ;AACA,QAAA,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAChC,YAAA,OAAO,IAAI;QACZ;AACA,QAAA,OAAO,KAAK;IACb;IAcO,OAAO,GAAA;QACb,CAAC,GAAG,IAAI,CAAC,wBAAwB,EAAE,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,6BAA6B,CAAC,CAAC;;QAE9H,UAAU,CAAC,MAAK;AACf,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBAC1B,IAAI,CAAC,aAAa,EAAE;YACrB;AACA,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACrB,QAAA,CAAC,CAAC;IACH;IAEA,OAAO,GAAA;AACN,QAAA,MAAM,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,6BAA6B,CAAC;AACrG,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,2BAA2B,CAAC;QACzF,IAAI,UAAU,CAAC,uBAAuB,CAAC,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE;YACrE,MAAM,WAAW,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;YAC/D,MAAM,OAAO,GAAG,QAAQ;YACxB,uBAAuB,CAAC,KAAK,CAAC,IAAI,GAAG,QAAQ,WAAW,CAAA,KAAA,EAAQ,OAAO,CAAA,CAAA,CAAG;QAC3E;AAAO,aAAA,IAAI,UAAU,CAAC,uBAAuB,CAAC,EAAE;AAC/C,YAAA,uBAAuB,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK;QAC3C;IACD;IAEQ,iBAAiB,GAAA;;QAExB,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;;QAGzC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC9B,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC;QAC1B,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;QAC3B,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QAChC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC;;AAG1B,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;;QAG9B,MAAM,cAAc,GAAG,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW;;AAGxD,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AAE9B,QAAA,OAAO,cAAc;IACtB;IAEA,WAAW,GAAA;QACV,KAAK,CAAC,WAAW,EAAE;AACnB,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC;IACnG;AA3UY,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,2IAwClB,mBAAmB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAxChB,eAAe,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EAHb,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,uEA8B3E,gCAAgC,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAS,WAAW,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7EnE,4wEA8DA,EAAA,MAAA,EAAA,CAAA,8wbAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,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,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,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,2BAAA,EAAA,YAAA,EAAA,aAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,QAAA,EAAA,YAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,6BAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDZa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,aAGhB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,eAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,cAC1E,KAAK,EAAA,QAAA,EAAA,4wEAAA,EAAA,MAAA,EAAA,CAAA,8wbAAA,CAAA,EAAA;;0BAwClB;;0BAAY;;0BACZ;;0BAAY;;0BACZ,MAAM;2BAAC,mBAAmB;;0BAAG;;sBAvC9B;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA,SAAS;uBAAC,UAAU;;sBACpB,SAAS;uBAAC,SAAS;;sBACnB,SAAS;uBAAC,aAAa;;sBACvB,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,gCAAgC,EAAE,EAAC,IAAI,EAAE,WAAW,EAAC;;;MErEvD,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,0HCRlC,kIAIA,EAAA,MAAA,EAAA,CAAA,qKAAA,CAAA,EAAA,CAAA,CAAA;;4FDIa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,cAGjB,KAAK,EAAA,QAAA,EAAA,kIAAA,EAAA,MAAA,EAAA,CAAA,qKAAA,CAAA,EAAA;;sBAGnB;;sBACA;;;AEsBI,MAAO,sBACZ,SAAQ,iBAA6B,CAAA;AAYrC,IAAA,WAAA,CAC+B,MAA4B,EAC5B,gBAAkC,EACxD,MAAc,EAAA;AAEtB,QAAA,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC;QAJD,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QACtC,IAAA,CAAA,MAAM,GAAN,MAAM;QAXN,IAAA,CAAA,gBAAgB,GAAgB,IAAI;QAMrC,IAAA,CAAA,cAAc,GAAG,IAAI;AAmCrB,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,EAAE,KAAI;YAC3B,EAAE,CAAC,cAAc,EAAE;AACpB,QAAA,CAAC;AAEO,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,EAAE,KAAI;AAC5B,YAAA,IAAI,EAAE,CAAC,OAAO,GAAG,EAAE,EAAE;AACpB,gBAAA,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACpB;iBAAO,IAAI,MAAM,CAAC,WAAW,GAAG,EAAE,CAAC,OAAO,GAAG,EAAE,EAAE;AAChD,gBAAA,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YACrB;iBAAO;gBACN,IAAI,CAAC,aAAa,EAAE;YACrB;AACA,YAAA,EAAE,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM;AACnC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAM,EAAE,CAAC,MAAsB,CAAC;AAC7G,YAAA,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;gBACvB;YACD;AACA,YAAA,IAAI,CAAC,mBAAmB,GAAG,WAAW;YACtC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAI;AACtC,gBAAA,IAAI,IAAI,CAAC,eAAe,KAAK,CAAC,EAAE;oBAE/B,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACpD,wBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACnD,4BAAA,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE;AAC9B,gCAAA,OAAO,KAAK;4BACb;AACA,4BAAA,OAAO,CAAC,GAAG,IAAI,CAAC,mBAAmB,GAAG,CAAC;wBACxC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAI;4BACzB,OAAO,GAAG,GAAG,GAAG,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,MAAM;wBAC9D,CAAC,EAAE,CAAC,CAAC;AACL,wBAAA,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,WAAA,EAAc,CAAC,YAAY,KAAK;oBACnG;yBAEK,IAAI,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,mBAAmB,EAAE;AACzD,wBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACnD,4BAAA,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE;AAC9B,gCAAA,OAAO,KAAK;4BACb;AACA,4BAAA,OAAO,CAAC,IAAI,IAAI,CAAC,mBAAmB;wBACrC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAI;4BACzB,OAAO,GAAG,GAAG,GAAG,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,MAAM;wBAC9D,CAAC,EAAE,CAAC,CAAC;AACL,wBAAA,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,WAAA,EAAc,YAAY,KAAK;oBAClG;yBAEK;AACJ,wBAAA,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,WAAA,EAAc,CAAC,KAAK;oBACvF;oBAEA;gBACD;gBAEA,MAAM,4BAA4B,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;AAC5H,gBAAA,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;AAC5B,oBAAA,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,WAAA,EAAc,4BAA4B,KAAK;gBAClH;AACK,qBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;AAC/B,oBAAA,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,WAAA,EAAc,CAAC,4BAA4B,KAAK;gBACnH;qBACK;AACJ,oBAAA,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,gBAAgB;gBACnF;AACD,YAAA,CAAC,CAAC;AAEF,YAAA,IAAI,CAAC,mBAAmB,GAAG,WAAW;AACvC,QAAA,CAAC;AAEO,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,EAAE,KAAI;AAC5B,YAAA,EAAE,CAAC,YAAY,CAAC,aAAa,GAAG,MAAM;AACtC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACpB,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC;AAC/F,gBAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,eAAe;AAChD,YAAA,CAAC,CAAC;AACH,QAAA,CAAC;AAEO,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,EAAE,KAAI;YAC1B,IAAI,CAAC,aAAa,EAAE;YACpB,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC;AAC1D,YAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;AAClF,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACpB,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACtB,qBAAA,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,eAAe;qBAC3C,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,KAAI;AACvB,oBAAA,IAAI,CAAC,KAAK,IAAI,CAAC,mBAAmB,EAAE;wBACnC,OAAO,CAAC,GAAG,GAAG,EAAE,YAAY,EAAE,GAAG,CAAC;oBACnC;AACA,oBAAA,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC;gBACrB,CAAC,EAAE,EAAE,CAAC;gBACN,IAAI,kBAAkB,EAAE;oBACvB,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC;gBACrD;gBACA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAI;AACtC,oBAAA,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,gBAAgB;AACnF,gBAAA,CAAC,CAAC;AACF,gBAAA,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;AAC7B,gBAAA,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;AACzB,gBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC;AAC7C,YAAA,CAAC,CAAC;AACH,QAAA,CAAC;IA7HD;IAEA,eAAe,GAAA;QACd,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;YACrC,IAAI,CAAC,oBAAoB,EAAE;AAC5B,QAAA,CAAC,CAAC;IACH;IAEQ,oBAAoB,GAAA;AAC3B,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAG;AAC1B,YAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;gBAClC,CAAC,CAAC,aAAa,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC;gBAClE,CAAC,CAAC,aAAa,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC;gBAChE,CAAC,CAAC,aAAa,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC;gBAClE,CAAC,CAAC,aAAa,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC;gBAE9D,CAAC,CAAC,aAAa,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC;gBAC/D,CAAC,CAAC,aAAa,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC;gBAC7D,CAAC,CAAC,aAAa,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC;gBAC/D,CAAC,CAAC,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC;AAE3D,gBAAA,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,gBAAgB;AAC5E,YAAA,CAAC,CAAC;AACH,QAAA,CAAC,CAAC;IACH;AAsGA,IAAA,eAAe,CAAC,KAAa,EAAA;QAC5B,OAAO,IAAI,CAAC,eAAe,GAAG,KAAK,IAAI,IAAI,CAAC,mBAAmB,IAAI,KAAK;IACzE;AAEA,IAAA,aAAa,CAAC,KAAa,EAAA;QAC1B,OAAO,IAAI,CAAC,eAAe,GAAG,KAAK,IAAI,IAAI,CAAC,mBAAmB,IAAI,KAAK;IACzE;AAEQ,IAAA,UAAU,CAAC,YAAoB,EAAA;QACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;AACrC,YAAA,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,MAAK;gBACtC,MAAM,CAAC,MAAM,CAAC;AACb,oBAAA,GAAG,EAAE,QAAQ,CAAC,gBAAgB,CAAC,SAAS,GAAG,YAAY;AACvD,oBAAA,QAAQ,EAAE,QAAQ;AAClB,iBAAA,CAAC;gBACF,IAAI,QAAQ,CAAC,gBAAgB,CAAC,SAAS,IAAI,GAAG,EAAE;oBAC/C,IAAI,CAAC,aAAa,EAAE;gBACrB;YACD,CAAC,EAAE,GAAG,CAAC;QACR;IACD;IAEQ,aAAa,GAAA;AACpB,QAAA,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC;AAClC,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;IAC3B;+GA3KY,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,oBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,SAAA,EATpB;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,sBAAsB;AACnC,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;SACJ,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAOU,WAAW,iKCpC1B,u3BAgCA,EAAA,MAAA,EAAA,CAAA,wiBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDAa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAblC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAAA,SAAA,EAGxB;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAA,sBAAwB;AACnC,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACJ,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,u3BAAA,EAAA,MAAA,EAAA,CAAA,wiBAAA,CAAA,EAAA;;0BAgBlB;;0BAAQ;;0BACR;;0BAAQ;;sBAXT,YAAY;uBAAC,WAAW;;sBACxB;;sBAEA,YAAY;uBAAC,UAAU;;;AE5BnB,MAAO,kBAAmB,SAAQ,iBAAyB,CAAA;AAPjE,IAAA,WAAA,GAAA;;QAQS,IAAA,CAAA,iBAAiB,GAAG,KAAK;QAGxB,IAAA,CAAA,IAAI,GAAwB,MAAM;QAClC,IAAA,CAAA,SAAS,GAAG,KAAK;QAEjB,IAAA,CAAA,aAAa,GAAG,IAAI;QACpB,IAAA,CAAA,cAAc,GAAG,IAAI;QAErB,IAAA,CAAA,IAAI,GAAuB,QAAQ;AAClC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAQ;AAY3C,IAAA;IAVO,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,iBAAiB;IACjD;IAEO,OAAO,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;AACzB,YAAA,OAAO,MAAM;QACd;QACA,OAAO,IAAI,CAAC,iBAAiB,GAAG,MAAM,GAAG,UAAU;IACpD;+GAtBY,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,oTAHhB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,iDCR7F,u2CAgCA,EAAA,MAAA,EAAA,CAAA,mkDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,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,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,CAAA,EAAA,CAAA,CAAA;;4FDrBa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,aAGpB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,kBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,cAC7E,KAAK,EAAA,QAAA,EAAA,u2CAAA,EAAA,MAAA,EAAA,CAAA,mkDAAA,CAAA,EAAA;;sBAKnB;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;AEXI,MAAO,eAAgB,SAAQ,iBAA0B,CAAA;AAP/D,IAAA,WAAA,GAAA;;QAQU,IAAA,CAAA,qBAAqB,GAAG,IAAI;AACrC,IAAA;+GAFY,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,2HAHb,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,iDCR1F,2fAWA,EAAA,MAAA,EAAA,CAAA,qzDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,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,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,CAAA,EAAA,CAAA,CAAA;;4FDAa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,aAGhB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,eAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,cAC1E,KAAK,EAAA,QAAA,EAAA,2fAAA,EAAA,MAAA,EAAA,CAAA,qzDAAA,CAAA,EAAA;;sBAGnB;;;MEFW,oBAAoB,CAAA;AAGhC,IAAA,WAAA,CAAwC,MAA4B,EAAA;QAA5B,IAAA,CAAA,MAAM,GAAN,MAAM;IAAyB;IAEvE,QAAQ,GAAA;;;;;QAKP,UAAU,CAAC,MAAK;YACf,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;AAC7C,QAAA,CAAC,CAAC;IACH;+GAbY,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,oBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,uLCVjC,0EAGA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA,CAAA;;4FDOa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAGhB,KAAK,EAAA,QAAA,EAAA,0EAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;0BAKP;;0BAAQ;;sBAFpB,SAAS;uBAAC,YAAY;;;MEDX,kBAAkB,CAAA;AAI9B,IAAA,WAAA,CAAwC,MAA4B,EAAA;QAA5B,IAAA,CAAA,MAAM,GAAN,MAAM;IAAyB;IAEvE,QAAQ,GAAA;;;;;QAKP,UAAU,CAAC,MAAK;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC;AAC9D,QAAA,CAAC,CAAC;IACH;IAEO,oBAAoB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3D;+GAlBY,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,oBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGhB,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb1B,mOAQA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDEa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,cAGd,KAAK,EAAA,QAAA,EAAA,mOAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;0BAMP;;0BAAQ;;sBAHpB;;sBACA,SAAS;uBAAC,YAAY;;sBACtB,YAAY;uBAAC,WAAW;;;AEVpB,MAAO,mBAAoB,SAAQ,KAAK,CAAA;IAI7C,WAAA,CAAY,IAAY,EAAE,OAAe,EAAA;QACxC,KAAK,CAAC,OAAO,CAAC;QAJC,IAAA,CAAA,IAAI,GAAG,qBAAqB;AAK3C,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;IACjB;AACA;MAMY,sBAAsB,GAAG,IAAI,cAAc,CAAmB,wBAAwB;AAG5F,MAAM,mBAAmB,GAAqB,CAAC,KAAU,KAAI;AACnE,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,KAAK,EAAE,mBAAmB,CAAC,EAAE;;AAElE,QAAA,OAAO,KAAK;IACb;AAAO,SAAA,IAAI,KAAK,YAAY,mBAAmB,EAAE;;QAEhD,OAAO,CAAC,KAAK,CAAC;IACf;AAEA,IAAA,MAAM,KAAK;AACZ;;MCZa,yBAAyB,CAAA;AANtC,IAAA,WAAA,GAAA;QAOS,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,aAAa,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;AACpD,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,sBAAsB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI,mBAAmB;QACtF,IAAA,CAAA,UAAU,GAAwB,QAAQ;QAEjC,IAAA,CAAA,SAAS,GAAG,KAAK;QACgB,IAAA,CAAA,SAAS,GAAG,KAAK;QAClD,IAAA,CAAA,OAAO,GAAwB,aAAa;QAE5C,IAAA,CAAA,MAAM,GAAuB,MAAM,OAAO,CAAC,OAAO,EAAE;QACpD,IAAA,CAAA,KAAK,GAAuB,MAAM,OAAO,CAAC,OAAO,EAAE;QACnD,IAAA,CAAA,QAAQ,GAAY,KAAK;AAUjC,QAAA,IAAA,CAAA,kBAAkB,GAAG,CAAC,CAAsB,KAAI;YACvD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,EAAC,CAAC;AACnF,QAAA,CAAC;AAoBD,IAAA;IA9BA,QAAQ,GAAA;QACP,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,KAAK,YAAY,EAAE;AACnD,YAAA,IAAI,CAAC,UAAU,GAAG,QAAQ;QAC3B;aAAO;AACN,YAAA,IAAI,CAAC,UAAU,GAAG,QAAQ;QAC3B;IACD;AAMA,IAAA,MAAM,UAAU,GAAA;AACf,QAAA,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC;AAErC,QAAA,IAAI;AACH,YAAA,MAAM,CAAC,wBAAwB,EAAE,cAAc,CAAC,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;AACpF,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,MAAM,IAAI,CAAC,cAAc,CAAC,wBAAwB,EAAE,cAAc;iBAChE,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACxC;QAAE,OAAO,CAAC,EAAE;AACX,YAAA,IAAI,CAAC,KAAK,mBAAmB,EAAE;AAC9B,gBAAA,OAAO;YACR;AACA,YAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC;YACpD;QACD;AAEA,QAAA,MAAM,IAAI,CAAC,KAAK,EAAE;IACnB;+GA1CY,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,6TClBtC,sTAWA,EAAA,MAAA,EAAA,CAAA,oFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,eAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDOa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,cAGtB,KAAK,EAAA,QAAA,EAAA,sTAAA,EAAA,MAAA,EAAA,CAAA,oFAAA,CAAA,EAAA;;sBAOnB;;sBACA;;sBAAS,WAAW;uBAAC,kBAAkB;;sBACvC;;sBACA;;sBACA;;sBACA;;sBACA;;;AElBI,MAAO,yBAA6B,SAAQ,iBAA+B,CAAA;IAGhF,WAAA,CAC+B,MAA4B,EAC5B,gBAAkC,EAAA;AAEhE,QAAA,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC;QAHD,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAJtC,IAAA,CAAA,QAAQ,GAAG,KAAK;IAOzB;AAEA,IAAA,UAAU,CAAC,KAAmB,EAAA;;AAE7B,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC3C,MAAM,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;AAC/C,YAAA,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC;AAC9B,YAAA,KAAK,CAAC,sBAAsB,CAAC,YAAY,CAAC;QAC3C;AAAO,aAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAClD,YAAA,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC;AAC7B,YAAA,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC;AAC9B,YAAA,KAAK,CAAC,sBAAsB,CAAC,YAAY,CAAC;QAC3C;aAAO;AACN,YAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;QACxB;IACD;AAEA,IAAA,sBAAsB,CAAC,KAAmB,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC3C,YAAA,KAAK,CAAC,sBAAsB,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACzD;AAAO,aAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAClD,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACvC;aAAO;AACN,YAAA,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC;QACpC;IACD;+GAjCY,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,oBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,kIAHxB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;4FAGH,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,UAAU,EAAE;AACf,iBAAA;;0BAKE;;0BAAQ;;0BACR;;0BAAQ;;sBAJT;;;ACVK,MAAM,cAAc,GAAG;AAExB,SAAU,aAAa,CAAC,OAAwB,EAAA;AACrD,IAAA,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,KAAK,cAAc;AAChD,IAAA,OAAO,OAAO,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,IAAI;AAChD;;MCoBa,gBAAgB,GAAG,IAAI,cAAc,CAAiB,uBAAuB;MAC7E,6BAA6B,GAAG,IAAI,cAAc,CAAM,gCAAgC;MACxF,kBAAkB,GAAG,IAAI,cAAc,CAAM,0BAA0B;AAE9E,SAAU,qBAAqB,CAAC,SAAkC,EAAE,WAA4B,EAAA;IACrG,OAAO,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,uBAAuB;AAClE;AAgBM,MAAO,uBAAwB,SAAQ,yBAAuD,CAAA;AAmCnG,IAAA,WAAA,CAC+B,MAA4B,EAC5B,gBAAkC,EACL,YAAiB,EAC5B,gBAAqB,EAC7D,WAA8B,EAC9B,KAAiB,EACjB,GAAsB,EACtB,MAAc,EAAA;AAEtB,QAAA,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC;QATD,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QACa,IAAA,CAAA,YAAY,GAAZ,YAAY;QACvB,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QACxD,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,MAAM,GAAN,MAAM;QA1CC,IAAA,CAAA,OAAO,GAAS,SAAS;QACzB,IAAA,CAAA,OAAO,GAAS,SAAS;QACzB,IAAA,CAAA,aAAa,GAAG,KAAK;QACrB,IAAA,CAAA,MAAM,GAAG,YAAY;QAErB,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,aAAa,GAAG,IAAI;QACpB,IAAA,CAAA,QAAQ,GAAW,IAAI;QACvB,IAAA,CAAA,UAAU,GAAW,IAAI;AACzB,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAC;QAM9C,IAAA,CAAA,gBAAgB,GAAS,IAAI;QAC7B,IAAA,CAAA,iBAAiB,GAAS,SAAS;QACnC,IAAA,CAAA,eAAe,GAAS,SAAS;QAQvB,IAAA,CAAA,aAAa,GAAgB,EAAE;QAEjC,IAAA,CAAA,WAAW,GAAG,KAAK;QACnB,IAAA,CAAA,YAAY,GAAG,KAAK;QACpB,IAAA,CAAA,cAAc,GAAG,KAAK;QACpB,IAAA,CAAA,eAAe,GAAG,KAAK;QACvB,IAAA,CAAA,aAAa,GAAkB,EAAE;QACjC,IAAA,CAAA,MAAM,GAAG,MAAM;AA8NzB,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,CAAO,KAAI;AACxB,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAClB,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,UAAU,GAAG,EAAE;YACzE;AACA,YAAA,OAAO,EAAE;AACV,QAAA,CAAC;AACD,QAAA,IAAA,CAAA,WAAW,GAAsB,CAAC,CAAC,KAAI;AACtC,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AAClB,gBAAA,OAAO,KAAK;YACb;AACA,YAAA,OAAO,IAAI;AACZ,QAAA,CAAC;QA0FD,IAAA,CAAA,oBAAoB,GAAG,MAAK;YAC3B,kBAAkB,CAAC,MAAK;AACvB,gBAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;oBAClC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAG,IAAI,CAAC,2BAA2B,CAAC;AAC1E,gBAAA,CAAC,CAAC;AACH,YAAA,CAAC,CAAC;AAEF,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,aAAa,CAAC,sBAAsB,CAAC;AAC9F,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,aAAa,CAAC,yBAAyB,CAAC;AACnG,YAAA,MAAM,gBAAgB,GAAG,UAAU,EAAE,aAAa;AAClD,YAAA,MAAM,kBAAkB,GAAG,YAAY,EAAE,aAAa;YACtD,IAAI,gBAAgB,EAAE;gBACrB,gBAAgB,CAAC,SAAS,GAAG,UAAU,EAAE,SAAS,GAAG,GAAG;YACzD;YACA,IAAI,kBAAkB,EAAE;gBACvB,kBAAkB,CAAC,SAAS,GAAG,YAAY,EAAE,SAAS,GAAG,GAAG;YAC7D;AACD,QAAA,CAAC;AAED,QAAA,IAAA,CAAA,2BAA2B,GAAG,CAAC,KAAiB,KAAI;AACnD,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACzB,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,qBAAqB,CAAC;gBAC9E,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACrC,oBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACpB,wBAAA,IAAI,CAAC,eAAe,GAAG,KAAK;wBAC5B,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAG,IAAI,CAAC,2BAA2B,CAAC;AAC7E,oBAAA,CAAC,CAAC;gBACH;YACD;AACD,QAAA,CAAC;AAnVA,QAAA,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE;AACjC,YAAA,WAAW,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;QAC1C;IACD;IAEA,QAAQ,GAAA;QACP,KAAK,CAAC,QAAQ,EAAE;AAChB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE;AACrB,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;QAC3B;AACA,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ;AAC1B,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU;AAC9B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,EAAE,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpF;IAIA,eAAe,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;;YAElB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK;QACrD;IACD;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AACjC,QAAA,IAAI,OAAO,CAAC,OAAO,EAAE;YACpB,IAAI,CAAC,uBAAuB,EAAE;QAC/B;AACA,QAAA,IAAI,OAAO,CAAC,OAAO,EAAE;YACpB,IAAI,CAAC,uBAAuB,EAAE;QAC/B;IACD;AAEA,IAAA,UAAU,CAAC,OAAa,EAAA;QACvB,IAAI,OAAO,EAAE;YACZ,IAAI,CAAC,iBAAiB,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC;AAC1C,YAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5C;aAAO;AACN,YAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS;QACnC;IACD;AAEA,IAAA,UAAU,CAAC,OAAa,EAAA;QACvB,IAAI,OAAO,EAAE;YACZ,IAAI,CAAC,eAAe,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC;AACxC,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;QAC/C;aAAO;AACN,YAAA,IAAI,CAAC,eAAe,GAAG,SAAS;QACjC;IACD;IAEA,iBAAiB,GAAA;QAChB,OAAO,yBAAyB,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,KAAKI,MAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM;IAC9F;;;;AAKA,IAAA,WAAW,CAAC,KAAU,EAAA;AACrB,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK;AACxB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,MAAK;AAChC,YAAA,CAAC;AAED,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE;gBACvD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC3E;iBAAO;gBACN,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC;YACnD;;;;;;AAMA,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AACxB,YAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI;AACtC,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB;YACzC,IAAI,CAAC,iBAAiB,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC;AACpC,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AACxB,YAAA,IAAI,CAAC,iBAAiB,GAAG,UAAU;;AAGnC,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE;gBACvB,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,EAAE;oBACnC,IAAI,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3F,wBAAA,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC;oBAC5B;gBACD;gBACA,IAAI,CAAC,uBAAuB,EAAE;YAC/B;AAEA,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,CAAC;YAC/C,UAAU,CAAC,MAAK;gBACf,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB;AACrD,YAAA,CAAC,CAAC;QACH;aAAO;YACN,IAAI,CAAC,aAAa,EAAE;QACrB;IACD;IAEA,uBAAuB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACvB,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,EAAE;AACnC,gBAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,gBAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD;iBAAO;AACN,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7B,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;YAC9B;QACD;aAAO;AACN,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;QAC9B;IACD;IAEA,aAAa,GAAA;QACZ,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK;QAChE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACtC,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;;AAG1C,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACxB,YAAA,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,EAAE;AAC5C,gBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;gBACjC;YACD;AACA,YAAA,IAAI,IAAI,CAAC,0BAA0B,YAAY,IAAI,EAAE;AACpD,gBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,0BAA0B,CAAC;gBAC5D;YACD;QACD;;QAEA,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACxH,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;YACjC;QACD;;AAEA,QAAA,IACC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC,YAAA,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;AAC5B,YAAA,WAAW,IAAI,CAAC;AAChB,YAAA,WAAW,IAAI,EAAE;AACjB,YAAA,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;AAClC,YAAA,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC9B,YAAA,aAAa,IAAI,CAAC;AAClB,YAAA,aAAa,IAAI,EAAE;AACnB,YAAA,IAAI,CAAC,0BAA0B,YAAY,IAAI,EAC9C;AACD,YAAA,MAAM,gBAAgB,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACxF,YAAA,MAAM,kBAAkB,GAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAC/E,YAAA,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC;YAC/C;QACD;AACA,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC/B,YAAA,IAAI,IAAI,CAAC,0BAA0B,YAAY,IAAI,EAAE;AACpD,gBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,0BAA0B,CAAC;gBAC5D;YACD;QACD;;AAEA,QAAA,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC;IAC5C;AAEA,IAAA,UAAU,CAAC,KAAiD,EAAA;AAC3D,QAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;AACvB,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACzB,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;YAC1B,IAAI,CAAC,uBAAuB,EAAE;AAC9B,YAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI;AACtC,YAAA,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE;gBAC/B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YAC9C;QACD;aAAO;AACN,YAAA,IAAI,CAAC,0BAA0B,GAAG,KAAK,KAAK,cAAc,GAAG,IAAI,GAAG,KAAK;AACzE,YAAA,IAAI,KAAK,YAAY,IAAI,EAAE;gBAC1B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACrC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;gBACzC,IAAI,CAAC,UAAU,EAAE;AACjB,gBAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;YAC9B;iBAAO;gBACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE;gBAChC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE;AACpC,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,gBAAA,IAAI,CAAC,aAAa,GAAG,EAAE;YACxB;QACD;IACD;;;;IAKA,kBAAkB,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;;AAE9B,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;QAC3B;QACA,IAAI,CAAC,aAAa,EAAE;IACrB;IAEA,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;AACjC,QAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI;QACtC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI;AAC9C,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AACjB,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;IACxB;IAgBA,UAAU,GAAA;QACT,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACnE,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK;QAC9B;QACA,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACvE,IAAI,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO;QAClC;IACD;IAEA,SAAS,GAAA;AACR,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACvB,IAAI,CAAC,mBAAmB,EAAE;IAC3B;IAEA,UAAU,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QACxB,IAAI,CAAC,mBAAmB,EAAE;IAC3B;IAEA,YAAY,GAAA;AACX,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;QAC1B,IAAI,CAAC,mBAAmB,EAAE;IAC3B;IAEA,mBAAmB,GAAA;QAClB,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,MAAM,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;YAChH,IAAI,CAAC,KAAK,EAAE;QACb;IACD;AAGA,IAAA,qBAAqB,CAAC,GAAW,EAAA;QAChC,QAAQ,GAAG;AACV,YAAA,KAAK,aAAa;AACjB,gBAAA,OAAO,MAAM,aAAa;AAC3B,YAAA,KAAK,YAAY;AAChB,gBAAA,OAAO,MAAM,eAAe;AAC7B,YAAA,KAAK,cAAc;gBAClB,OAAO,CAAC,CAAO,KAAK,CAAC,CAAC,kBAAkB,EAAE;AAC3C,YAAA,KAAK,cAAc;gBAClB,OAAO,CAAC,MAAM,KAAK,CAAA,EAAG,MAAM,gBAAgB;AAC7C,YAAA,KAAK,iBAAiB;AACrB,gBAAA,OAAO,CAAC,CAAO,KAAK,CAAA,IAAA,EAAOA,MAAU,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE;;IAErD;AAEA,IAAA,cAAc,CAAC,GAAW,EAAE,MAAA,GAAc,IAAI,EAAA;QAC7C,IAAI,GAAG,KAAK,aAAa,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC3C,YAAA,OAAO,EAAE;QACV;QACA,IAAI,GAAG,KAAK,aAAa,IAAI,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACpE,OAAO,IAAI,CAAC,WAAW;QACxB;QACA,OAAO,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACrF;AAEA,IAAA,OAAO,CAAC,CAAS,EAAA;QAChB,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAC7C;AAEA,IAAA,OAAO,CAAC,IAAY,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI;QACjD,IAAI,CAAC,aAAa,EAAE;IACrB;AAEA,IAAA,SAAS,CAAC,MAAc,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,MAAM;QACzD,IAAI,CAAC,aAAa,EAAE;IACrB;IAEA,YAAY,GAAA;QACX,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,UAAU,EAAE;IAClB;IAEA,cAAc,GAAA;QACb,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,YAAY,EAAE;IACpB;IAEA,QAAQ,CAAC,OAAe,EAAE,WAAmB,EAAA;AAC5C,QAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAE;AACvC,YAAA,OAAO,KAAK;QACb;AACA,QAAA,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,OAAO;IACvC;IAiCA,OAAO,GAAA;AACN,QAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AAChB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;IAC1B;+GAtYY,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,oBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAsC1B,6BAA6B,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAC7B,kBAAkB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAvCf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,eAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,EAAA,SAAA,EAVrB;YACP,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,uBAAuB,EAAE,KAAK,EAAE,IAAI,EAAE;AACjF,YAAA;AACI,gBAAA,OAAO,EAAE,gBAAgB;gBACzB,IAAI,EAAE,CAAC,uBAAuB,EAAE,CAAC,IAAI,QAAQ,EAAE,EAAE,gBAAgB,CAAC,CAAC;AACnE,gBAAA,UAAU,EAAE,qBAAqB;AACpC,aAAA;AACJ,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9CL,qwHA4EA,EAAA,MAAA,EAAA,CAAA,qnOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,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,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,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,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,KAAA,EAAA,KAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FD3Ba,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAdnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAAA,SAAA,EAG1B;wBACP,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,yBAAyB,EAAE,KAAK,EAAE,IAAI,EAAE;AACjF,wBAAA;AACI,4BAAA,OAAO,EAAE,gBAAgB;4BACzB,IAAI,EAAE,0BAA0B,CAAC,IAAI,QAAQ,EAAE,EAAE,gBAAgB,CAAC,CAAC;AACnE,4BAAA,UAAU,EAAE,qBAAqB;AACpC,yBAAA;AACJ,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,qwHAAA,EAAA,MAAA,EAAA,CAAA,qnOAAA,CAAA,EAAA;;0BAsClB;;0BAAQ;;0BACR;;0BAAQ;;0BACR,MAAM;2BAAC,6BAA6B;;0BAAG;;0BACvC,MAAM;2BAAC,kBAAkB;;0BAAG;;sBAtC7B;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA,SAAS;uBAAC,aAAa;;sBACvB,SAAS;uBAAC,QAAQ;;sBAClB,SAAS;uBAAC,oBAAoB;;;MEvDnB,wBAAwB,GAAG,IAAI,cAAc,CAAM,4BAA4B;AAStF,MAAO,mBAAoB,SAAQ,yBAAyD,CAAA;AAUjG,IAAA,WAAA,CAC+B,MAA4B,EAC5B,gBAAkC,EACV,YAAiB,EAAA;AAEvE,QAAA,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC;QAJD,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QACQ,IAAA,CAAA,YAAY,GAAZ,YAAY;QAZnD,IAAA,CAAA,OAAO,GAAS,SAAS;QACzB,IAAA,CAAA,OAAO,GAAS,SAAS;QACzB,IAAA,CAAA,aAAa,GAAG,KAAK;QACrB,IAAA,CAAA,MAAM,GAAG,YAAY;QAErB,IAAA,CAAA,SAAS,GAAG,KAAK;IAUjC;AAEA,IAAA,UAAU,CAAC,KAAqD,EAAA;AAC/D,QAAA,IAAI,KAAK,KAAK,cAAc,EAAE;AAC7B,YAAA,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC;QACjC;AAAO,aAAA,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI;AAC1C,YAAA,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC;QAC5C;aAAO;AACN,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACzB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;YACtE;iBAAO;AACN,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC;YACxD;AACA,YAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;QACxB;IACD;AAEA,IAAA,WAAW,CAAC,KAAiD,EAAA;AAC5D,QAAA,IAAI,KAAK,KAAK,cAAc,EAAE;AAC7B,YAAA,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC;QAC5C;AAAO,aAAA,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI;AAC1C,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC;QACvD;aAAO;AACN,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACzB,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAKC,MAAU,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;YAC3E;iBAAO;gBACN,IAAI,CAAC,sBAAsB,CAACA,MAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;YAC7D;QACD;IACD;AAEA,IAAA,qBAAqB,CAAC,GAAW,EAAA;QAChC,QAAQ,GAAG;AACV,YAAA,KAAK,aAAa;AACjB,gBAAA,OAAO,MAAM,aAAa;;IAE7B;AAEA,IAAA,cAAc,CAAC,GAAW,EAAE,MAAA,GAAc,IAAI,EAAA;QAC7C,IAAI,GAAG,KAAK,aAAa,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC3C,YAAA,OAAO,EAAE;QACV;QACA,IAAI,GAAG,KAAK,aAAa,IAAI,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACpE,OAAO,IAAI,CAAC,WAAW;QACxB;QACA,OAAO,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACrF;AAjEY,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,2IAatB,wBAAwB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAbrB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,8NAHjB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,iDCd9F,6oBAmBA,EAAA,MAAA,EAAA,CAAA,4WAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,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,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,EAAAM,uBAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,QAAA,EAAA,aAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDFa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,aAGrB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,mBAAqB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,cAC9E,KAAK,EAAA,QAAA,EAAA,6oBAAA,EAAA,MAAA,EAAA,CAAA,4WAAA,CAAA,EAAA;;0BAalB;;0BAAQ;;0BACR;;0BAAQ;;0BACR,MAAM;2BAAC,wBAAwB;;0BAAG;;sBAZnC;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;AEvBF;MAca,cAAc,CAAA;+GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAJhB,mBAAmB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,eAAe,CAAA,EAAA,OAAA,EAAA,CAC7F,mBAAmB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,eAAe,CAAA,EAAA,CAAA,CAAA;gHAG3F,cAAc,EAAA,SAAA,EAFf,CAAC,mBAAmB,CAAC,YAFtB,mBAAmB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,eAAe,EAC7F,mBAAmB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,eAAe,CAAA,EAAA,CAAA,CAAA;;4FAG3F,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,OAAO,EAAE,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,eAAe,CAAC;oBACxG,OAAO,EAAE,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,eAAe,CAAC;oBACxG,SAAS,EAAE,CAAC,mBAAmB,CAAC;AAChC,iBAAA;;;ACAK,MAAO,kBAAmB,SAAQ,yBAA+B,CAAA;AAPvE,IAAA,WAAA,GAAA;;QAQU,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,oBAAoB,GAAG,KAAK;QAC5B,IAAA,CAAA,iBAAiB,GAAG,KAAK;QAEzB,IAAA,CAAA,WAAW,GAAG,KAAK;AAyC5B,IAAA;AAtCO,IAAA,QAAQ,CAAC,KAAe,EAAA;QAC9B,MAAM,MAAM,GAAG,EAAE;AACjB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B;AACA,QAAA,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC;;QAEnC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI;IAC/C;IAEO,YAAY,GAAA;QAClB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACnC,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACnD;AAAO,aAAA,IAAI,IAAI,CAAC,UAAU,YAAY,IAAI,EAAE;AAC3C,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI;QAC5B;AACA,QAAA,OAAO,IAAI;IACZ;IAEO,qBAAqB,GAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC9B,YAAA,OAAO,KAAK;QACb;AACA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACzC,gBAAA,OAAO,IAAI;YACZ;AACA,YAAA,OAAO,KAAK;QACb;AACA,QAAA,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAChC,YAAA,OAAO,IAAI;QACZ;AACA,QAAA,OAAO,KAAK;IACb;IAEO,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,EAAE;IAC1C;+GA9CY,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,2QAHhB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,mKCV7F,8tDA8DA,EAAA,MAAA,EAAA,CAAA,4rBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,eAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDjDa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,aAGpB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,kBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,cAC7E,KAAK,EAAA,QAAA,EAAA,8tDAAA,EAAA,MAAA,EAAA,CAAA,4rBAAA,CAAA,EAAA;;sBAGnB;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA,SAAS;uBAAC,gBAAgB;;;AERtB,MAAO,6BAAiC,SAAQ,iBAAkC,CAAA;AAPxF,IAAA,WAAA,GAAA;;AAUC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC;AAgChB,IAAA;AA9BA,IAAA,UAAU,CAAC,KAAsB,EAAA;AAChC,QAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;QACrB,UAAU,CAAC,MAAK;AACf,YAAA,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE;AAC/B,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5C;iBAAO;AACN,gBAAA,IAAI,CAAC,KAAK,GAAG,EAAE;YAChB;AACA,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACrB,QAAA,CAAC,CAAC;IACH;AAEO,IAAA,iBAAiB,CAAC,KAAwB,EAAA;AAChD,QAAA,MAAM,MAAM,GAAoB,qBAAqB,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAQ;AAC9G,QAAA,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC;AACnC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;QACrB,UAAU,CAAC,MAAK;AACf,YAAA,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;gBAChD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;AACxB,oBAAA,OAAO,KAAK;gBACb;AACA,gBAAA,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;AACzC,oBAAA,OAAO,KAAK;gBACb;AACA,gBAAA,OAAO,IAAI;AACZ,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACrB,QAAA,CAAC,CAAC;IACH;+GAlCY,6BAA6B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,+EAH3B,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,6BAA6B,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAKzF,WAAW,uECd1B,+bAeA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,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,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,EAAAM,sBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDHa,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAPzC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,aAGhC,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,6BAA+B,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,cACxF,KAAK,EAAA,QAAA,EAAA,+bAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;sBAInB,YAAY;uBAAC,WAAW;;;AEZnB,MAAM,cAAc,GAAG,kBAAkB;AAE1C,SAAU,aAAa,CAAC,OAAwB,EAAA;AACrD,IAAA,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,KAAK,cAAc;AAChD,IAAA,OAAO,OAAO,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,IAAI;AAChD;;ACOM,MAAO,wBAAyB,SAAQ,iBAAiD,CAAA;AAP/F,IAAA,WAAA,GAAA;;AAWU,QAAA,IAAA,CAAA,YAAY,GAAkB,CAAC,MAAM,EAAE,KAAK,CAAC;QAE9C,IAAA,CAAA,YAAY,GAAG,KAAK;QACpB,IAAA,CAAA,cAAc,GAAG,KAAK;AA4E9B,IAAA;IA1EA,WAAW,GAAA;QACV,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,KAAK,GAAG,GAAG;QACjB;IACD;IAEA,aAAa,GAAA;QACZ,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACxC,YAAA,IAAI,CAAC,OAAO,GAAG,GAAG;QACnB;IACD;IAEA,UAAU,GAAA;QACT,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACnE,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK;QAC9B;QACA,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACvE,IAAI,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO;QAClC;IACD;AAEA,IAAA,UAAU,CAAC,KAAqC,EAAA;AAC/C,QAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC3B,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAe,GAAG,EAAE,CAAC,GAAG,EAAE;YAClD,IAAI,CAAC,OAAO,GAAG,KAAe,GAAG,EAAE,GAAG,EAAE;YACxC,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;QACxB;aAAO;AACN,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AACf,YAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AACjB,YAAA,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC;QACjC;IACD;IAEA,aAAa,GAAA;QACZ,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACtC,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;;AAG1C,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AAC7E,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;YACjC;QACD;;AAEA,QAAA,IACC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;AAC5B,YAAA,WAAW,IAAI,CAAC;AAChB,YAAA,WAAW,IAAI,IAAI;AACnB,YAAA,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC9B,YAAA,aAAa,IAAI,CAAC;YAClB,aAAa,IAAI,EAAE,EAClB;YACD,IAAI,CAAC,sBAAsB,CAAC,WAAW,GAAG,EAAE,GAAG,aAAa,CAAC;YAC7D;QACD;;AAEA,QAAA,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC;IAC5C;IAEA,UAAU,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QACxB,IAAI,CAAC,mBAAmB,EAAE;IAC3B;IAEA,YAAY,GAAA;AACX,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;QAC1B,IAAI,CAAC,mBAAmB,EAAE;IAC3B;IAEA,mBAAmB,GAAA;QAClB,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE;YAC7C,IAAI,CAAC,KAAK,EAAE;QACb;IACD;+GAlFY,wBAAwB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,oHAHtB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,wBAAwB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,iDCXnG,6tBAQA,EAAA,MAAA,EAAA,CAAA,8lDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,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,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,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,CAAA,EAAA,CAAA,CAAA;;4FDMa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,aAG3B,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,wBAA0B,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,cACnF,KAAK,EAAA,QAAA,EAAA,6tBAAA,EAAA,MAAA,EAAA,CAAA,8lDAAA,CAAA,EAAA;;sBAMnB;;;IEdU;AAAZ,CAAA,UAAY,WAAW,EAAA;AACtB,IAAA,WAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,WAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACZ,CAAC,EAHW,WAAW,KAAX,WAAW,GAAA,EAAA,CAAA,CAAA;AAmBjB,MAAO,cAAe,SAAQ,iBAAyB,CAAA;AAP7D,IAAA,WAAA,GAAA;;AASU,QAAA,IAAA,CAAA,WAAW,GAAgB,WAAW,CAAC,GAAG;QAC1C,IAAA,CAAA,OAAO,GAAwC,SAAS;QACxD,IAAA,CAAA,IAAI,GAAwB,QAAQ;QACtC,IAAA,CAAA,WAAW,GAAG,WAAW;AAChC,IAAA;+GANY,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,4JAHZ,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,iDCpBzF,wiCAwBA,EAAA,MAAA,EAAA,CAAA,6gEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDDa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,aAGf,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,cAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,cACzE,KAAK,EAAA,QAAA,EAAA,wiCAAA,EAAA,MAAA,EAAA,CAAA,6gEAAA,CAAA,EAAA;;sBAGnB;;sBACA;;sBACA;;sBACA;;;AEjBF,MAAM,YAAY,GAAG,MAAM;AAC3B,MAAM,WAAW,GAAG,QAAQ;AAE5B,MAAM,MAAM,GAAG;AACd,IAAA,MAAM,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,iCAAiC,EAAE,UAAU,EAAE,oBAAoB,EAAC;AACtH,IAAA,KAAK,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,gCAAgC,EAAE,UAAU,EAAE,oBAAoB,EAAC;AACnH,IAAA,YAAY,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,mCAAmC,EAAE,UAAU,EAAE,kBAAkB,EAAC;CAC9H;MAMY,oBAAoB,CAAA;AAYhC,IAAA,WAAA,CAAoB,EAAc,EAAU,MAAsB,EAAU,MAAc,EAAA;QAAtE,IAAA,CAAA,EAAE,GAAF,EAAE;QAAsB,IAAA,CAAA,MAAM,GAAN,MAAM;QAA0B,IAAA,CAAA,MAAM,GAAN,MAAM;QARzE,IAAA,CAAA,cAAc,GAAuC,QAAQ;QAI7D,IAAA,CAAA,eAAe,GAAG,GAAG;QACrB,IAAA,CAAA,QAAQ,GAAqB,KAAK;AAI1C,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;YAClC,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAK;AACpD,gBAAA,IAAI,IAAI,CAAC,eAAe,EAAE;oBACzB,IAAI,CAAC,cAAc,EAAE;gBACtB;AACA,gBAAA,IAAI,aAAqB;AACzB,gBAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC3B,oBAAA,aAAa,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE;gBACtE;gBACA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;oBAC/C;gBACD;gBACA,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;oBAClE;gBACD;AACA,gBAAA,IAAI,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;oBAC3C,IAAI,IAAI,CAAC,WAAW,KAAK,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE;wBACpD;oBACD;gBACD;AAAO,qBAAA,IAAI,IAAI,CAAC,eAAe,EAAE;;gBAEjC;qBAAO;AACN,oBAAA,IAAI,EAAE,CAAC,aAAa,CAAC,WAAW,IAAI,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE;wBACjE;oBACD;gBACD;gBACA,IAAI,gBAAgB,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE;oBAC7D,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;gBAC7C;gBAEA,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AACxC,gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAA,EAAG,WAAW,GAAG,CAAC,CAAA,CAAE;AAC5C,gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAA,EAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE;AAC/D,gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,GAAG,CAAA,EAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,UAAU,EAAE;gBAC5E,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;AACjC,gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAA,EAAG,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,CAAC,IAAI;AACvE,gBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;AAC5B,oBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,CAAC,IAAI;AACtE,oBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,uBAAA,EAA0B,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,4BAA4B;gBAChI;AAAO,qBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;oBACtC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAA,EAAA,CAAI;AACxH,oBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,uBAAA,EAA0B,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,yBAAyB;gBAC7H;AACA,gBAAA,IAAI,IAAI,CAAC,eAAe,GAAG,CAAC,EAAE;AAC7B,oBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAA,EAAG,IAAI,CAAC,eAAe,CAAA,EAAA,CAAI;gBACtD;AACA,gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAA,EAAG,IAAI,CAAC,eAAe,CAAA,EAAA,CAAI;gBACrD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,cAAc;AAC1C,gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAA,UAAA,EAAa,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,SAAS,EAAE;AAC5E,gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,iBAAA,EAAoB,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,SAAS,EAAE;gBACtF,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,eAAe;gBACxC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY;gBACvC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK;gBACnC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY;AACvC,gBAAA,IAAI,oBAAoB,CAAC,aAAa,CAAC,EAAE;AACxC,oBAAA,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,aAAa;gBACrC;AAAO,qBAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;oBACjC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM;oBAChC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;oBACpC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC;oBAC3C,UAAU,CAAC,MAAK;AACf,wBAAA,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,eAAe,IAAI,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,UAAU;wBAC3H,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK;wBACtC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS;AACtC,oBAAA,CAAC,CAAC;gBACH;gBACA,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;gBAElC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC7C,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAA,EAAG,WAAW,GAAG,CAAC,CAAA,CAAE;gBACjD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;gBACtC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAA,KAAA,EAAQ,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAA,YAAA,CAAc;AAC5I,gBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;AAC5B,oBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,CAAC,IAAI;oBAC3E,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,uCAAuC;gBACxE;AAAO,qBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;oBACtC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAA,EAAA,CAAI;oBAC7H,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,sCAAsC;gBACvE;gBACA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG;gBAC/B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG;gBAChC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,CAAA,EAAG,YAAY,CAAA,kBAAA,CAAoB;gBACpE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,GAAG,CAAA,EAAG,YAAY,CAAA,kBAAA,CAAoB;AACrE,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,EAAG,YAAY,UAAU,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,SAAS,EAAE;gBAChG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAEvC,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAClD,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,CAAA,EAAG,WAAW,GAAG,CAAC,CAAA,CAAE;gBACtD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO;gBAC3C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,CAAA,KAAA,EAAQ,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAA,YAAA,CAAc;AACjJ,gBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;AAC5B,oBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,CAAC,IAAI;oBAChF,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,6CAA6C;gBACnF;AAAO,qBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;oBACtC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAA,EAAA,CAAI;oBAClI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,sCAAsC;gBAC5E;gBACA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG;gBACpC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG;gBACrC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,CAAA,EAAG,YAAY,CAAA,kBAAA,CAAoB;gBACzE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,GAAG,CAAA,EAAG,YAAY,CAAA,kBAAA,CAAoB;AAE1E,gBAAA,IAAI,oBAAoB,CAAC,aAAa,CAAC,EAAE;AACxC,oBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,EAAG,YAAY,UAAU,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,UAAU,EAAE;gBACvG;AAAO,qBAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;oBACjC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;oBACpC,UAAU,CAAC,MAAK;AACf,wBAAA,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,eAAe,IAAI,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,UAAU;AAC3H,wBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,EAAG,YAAY,CAAA,OAAA,EAAU,KAAK,CAAA,CAAE;wBACrE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS;AACtC,oBAAA,CAAC,CAAC;gBACH;gBAEA,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;AAC7C,YAAA,CAAC,CAAC;YAEF,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAK;AACpD,gBAAA,IAAI,IAAI,CAAC,eAAe,EAAE;oBACzB,IAAI,CAAC,eAAe,EAAE;gBACvB;AACA,gBAAA,IAAI;oBACH,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;gBACvC;AAAE,gBAAA,OAAO,EAAE,EAAE,EAAC;AACd,gBAAA,IAAI;oBACH,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAC5C;AAAE,gBAAA,OAAO,EAAE,EAAE,EAAC;AACd,gBAAA,IAAI;oBACH,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;gBACjD;AAAE,gBAAA,OAAO,EAAE,EAAE,EAAC;AACf,YAAA,CAAC,CAAC;AACH,QAAA,CAAC,CAAC;IACH;IAEO,cAAc,GAAA;QACpB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC;QACvE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAC/C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7D;IAEO,eAAe,GAAA;QACrB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC;AAC/C,QAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;IAClC;+GA3JY,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAKC;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;ACrBI,MAAO,iBAAkB,SAAQ,iBAAyB,CAAA;AAPhE,IAAA,WAAA,GAAA;;AASW,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAQ;AAC3C,IAAA;+GAHY,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,yIAHf,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,iDCR5F,uWAWA,EAAA,MAAA,EAAA,CAAA,u9BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,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,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,CAAA,EAAA,CAAA,CAAA;;4FDAa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,aAGnB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,iBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,cAC5E,KAAK,EAAA,QAAA,EAAA,uWAAA,EAAA,MAAA,EAAA,CAAA,u9BAAA,CAAA,EAAA;;sBAGnB;;sBACA;;;MEJW,uBAAuB,CAAA;AAGnC,IAAA,WAAA,CAAwC,MAA4B,EAAA;QAA5B,IAAA,CAAA,MAAM,GAAN,MAAM;IAAyB;IAEvE,QAAQ,GAAA;;;;;QAKP,UAAU,CAAC,MAAK;YACf,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AAChD,QAAA,CAAC,CAAC;IACH;IAEA,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC;IACrC;+GAjBY,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAT,oBAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,2LCTpC,0EAGA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA,CAAA;;4FDMa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,cAGpB,KAAK,EAAA,QAAA,EAAA,0EAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;0BAKP;;0BAAQ;;sBAFpB,SAAS;uBAAC,YAAY;;;MEqGX,qBAAqB,CAAA;+GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,iBAnEhC,iBAAiB;YACjB,yBAAyB;YACzB,eAAe;YACf,iBAAiB;YACjB,mBAAmB;YACnB,uBAAuB;YACvB,mBAAmB;YACnB,yBAAyB;YACzB,oBAAoB;YACpB,sBAAsB;YACtB,eAAe;YACf,gCAAgC;YAChC,qBAAqB;YACrB,sBAAsB;YACtB,6BAA6B;YAC7B,kBAAkB;YAClB,iBAAiB;YACjB,eAAe;YACf,kBAAkB;YAClB,oBAAoB;YACpB,uBAAuB;YACvB,oBAAoB;YACpB,kBAAkB;YAClB,yBAAyB;YACzB,aAAa;YACb,gBAAgB;YAChB,wBAAwB;YACxB,cAAc;YACd,oBAAoB;YACpB,iBAAiB;YACjB,oBAAoB;AACpB,YAAA,6BAA6B,aArC7B,YAAY;YACZ,WAAW;YACX,cAAc;AACd,YAAA,cAAc,aAqCd,iBAAiB;YACjB,yBAAyB;YACzB,eAAe;YACf,mBAAmB;YACnB,uBAAuB;YACvB,iBAAiB;YACjB,mBAAmB;YACnB,yBAAyB;YACzB,oBAAoB;YACpB,sBAAsB;YACtB,eAAe;YACf,gCAAgC;YAChC,qBAAqB;YACrB,sBAAsB;YACtB,6BAA6B;YAC7B,kBAAkB;YAClB,iBAAiB;YACjB,eAAe;YACf,kBAAkB;YAClB,oBAAoB;YACpB,uBAAuB;YACvB,oBAAoB;YACpB,kBAAkB;YAClB,yBAAyB;YACzB,aAAa;YACb,gBAAgB;YAChB,wBAAwB;YACxB,cAAc;YACd,oBAAoB;YACpB,iBAAiB;YACjB,6BAA6B,CAAA,EAAA,CAAA,CAAA;AAGlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAzEhC,YAAY;YACZ,WAAW;YACX,cAAc;YACd,cAAc,CAAA,EAAA,CAAA,CAAA;;4FAsEH,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBA3EjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,OAAO,EAAE;wBACR,YAAY;wBACZ,WAAW;wBACX,cAAc;wBACd,cAAc;AACd,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACb,iBAAiB;wBACjB,yBAAyB;wBACzB,eAAe;wBACf,iBAAiB;wBACjB,mBAAmB;wBACnB,uBAAuB;wBACvB,mBAAmB;wBACnB,yBAAyB;wBACzB,oBAAoB;wBACpB,sBAAsB;wBACtB,eAAe;wBACf,gCAAgC;wBAChC,qBAAqB;wBACrB,sBAAsB;wBACtB,6BAA6B;wBAC7B,kBAAkB;wBAClB,iBAAiB;wBACjB,eAAe;wBACf,kBAAkB;wBAClB,oBAAoB;wBACpB,uBAAuB;wBACvB,oBAAoB;wBACpB,kBAAkB;wBAClB,yBAAyB;wBACzB,aAAa;wBACb,gBAAgB;wBAChB,wBAAwB;wBACxB,cAAc;wBACd,oBAAoB;wBACpB,iBAAiB;wBACjB,oBAAoB;wBACpB,6BAA6B;AAC7B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACR,iBAAiB;wBACjB,yBAAyB;wBACzB,eAAe;wBACf,mBAAmB;wBACnB,uBAAuB;wBACvB,iBAAiB;wBACjB,mBAAmB;wBACnB,yBAAyB;wBACzB,oBAAoB;wBACpB,sBAAsB;wBACtB,eAAe;wBACf,gCAAgC;wBAChC,qBAAqB;wBACrB,sBAAsB;wBACtB,6BAA6B;wBAC7B,kBAAkB;wBAClB,iBAAiB;wBACjB,eAAe;wBACf,kBAAkB;wBAClB,oBAAoB;wBACpB,uBAAuB;wBACvB,oBAAoB;wBACpB,kBAAkB;wBAClB,yBAAyB;wBACzB,aAAa;wBACb,gBAAgB;wBAChB,wBAAwB;wBACxB,cAAc;wBACd,oBAAoB;wBACpB,iBAAiB;wBACjB,6BAA6B;AAC7B;AACD,iBAAA;;;AC9GD;;AAEG;;ACFH;;AAEG;;;;"}
|