{"version":3,"file":"3kles-kles-material-dynamicforms.mjs","sources":["../../../projects/kles-material-dynamicforms/src/lib/controls/control.abstract.ts","../../../projects/kles-material-dynamicforms/src/lib/controls/default.control.ts","../../../projects/kles-material-dynamicforms/src/lib/ui/ui-state/ui-state.abstract.ts","../../../projects/kles-material-dynamicforms/src/lib/ui/ui-state/control-ui-state.ts","../../../projects/kles-material-dynamicforms/src/lib/ui/ui.abstract.ts","../../../projects/kles-material-dynamicforms/src/lib/ui/default.ui.ts","../../../projects/kles-material-dynamicforms/src/lib/factories/field.factory.ts","../../../projects/kles-material-dynamicforms/src/lib/decorators/component.decorator.ts","../../../projects/kles-material-dynamicforms/src/lib/enums/type.enum.ts","../../../projects/kles-material-dynamicforms/src/lib/token.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/subfields/clear.component.ts","../../../projects/kles-material-dynamicforms/src/lib/utils/destroyable.guard.ts","../../../projects/kles-material-dynamicforms/src/lib/directive/dynamic-field.directive.ts","../../../projects/kles-material-dynamicforms/src/lib/utils/validation.util.ts","../../../projects/kles-material-dynamicforms/src/lib/directive/mat-error-form.directive.ts","../../../projects/kles-material-dynamicforms/src/lib/matcher/form-error.matcher.ts","../../../projects/kles-material-dynamicforms/src/lib/ui/ui-state/group-ui-state.ts","../../../projects/kles-material-dynamicforms/src/lib/interfaces/layout.interface.ts","../../../projects/kles-material-dynamicforms/src/lib/form-elements.component.ts","../../../projects/kles-material-dynamicforms/src/lib/dynamic-form.component.ts","../../../projects/kles-material-dynamicforms/src/lib/directive/dynamic-component.directive.ts","../../../projects/kles-material-dynamicforms/src/lib/modules/material.module.ts","../../../projects/kles-material-dynamicforms/src/lib/directive/focus-target.directive.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/field.abstract.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/label.component.ts","../../../projects/kles-material-dynamicforms/src/lib/directive/mat-error-message.directive.ts","../../../projects/kles-material-dynamicforms/src/lib/dynamic-form-intl.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/input.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/date.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/radio.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/checkbox.component.ts","../../../projects/kles-material-dynamicforms/src/lib/factories/form-array-group.factory.ts","../../../projects/kles-material-dynamicforms/src/lib/controls/array.control.ts","../../../projects/kles-material-dynamicforms/src/lib/ui/ui-state/array-ui-state.ts","../../../projects/kles-material-dynamicforms/src/lib/ui/array.ui.ts","../../../projects/kles-material-dynamicforms/src/lib/ui/group.ui.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/list-field.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/color.component.ts","../../../projects/kles-material-dynamicforms/src/lib/forms/button-control-base.ts","../../../projects/kles-material-dynamicforms/src/lib/forms/button-control.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/button-form.component.ts","../../../projects/kles-material-dynamicforms/src/lib/forms/buttonchecker-control.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/buttonchecker-form.component.ts","../../../projects/kles-material-dynamicforms/src/lib/forms/buttonfile-control.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/buttonfile-form.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/textarea.component.ts","../../../projects/kles-material-dynamicforms/src/lib/pipe/transform.pipe.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/text.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/chip.component.ts","../../../projects/kles-material-dynamicforms/src/lib/controls/group.control.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/group.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/input.clearable.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/icon.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/line-break.component.ts","../../../projects/kles-material-dynamicforms/src/lib/pipe/array.pipe.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/link.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/slide-toggle.component.ts","../../../projects/kles-material-dynamicforms/src/lib/selection/selection-model.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/selection-list.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/badge.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/button-toogle-group.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/array.component.ts","../../../projects/kles-material-dynamicforms/src/lib/controls/range.control.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/range.component.ts","../../../projects/kles-material-dynamicforms/src/lib/forms/fab-control.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/button-fab.component.ts","../../../projects/kles-material-dynamicforms/src/lib/forms/mini-fab-control.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/button-mini-fab.component.ts","../../../projects/kles-material-dynamicforms/src/lib/forms/icon-button-control.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/button-icon.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/selection-list.search.component.ts","../../../projects/kles-material-dynamicforms/src/lib/forms/file-control.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/file.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/date-time.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/subfields/copy.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/action-menu.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/tile.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/currency.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/status.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/chip-grid.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/image-upload.component.ts","../../../projects/kles-material-dynamicforms/src/lib/kles-material-dynamicforms.module.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/subfields/password-visibility.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/select-search-input.component.ts","../../../projects/kles-material-dynamicforms/src/lib/fields/select.component.ts","../../../projects/kles-material-dynamicforms/src/lib/validators/autocomplete.validator.ts","../../../projects/kles-material-dynamicforms/src/public-api.ts","../../../projects/kles-material-dynamicforms/src/3kles-kles-material-dynamicforms.ts"],"sourcesContent":["import { AbstractControl, ValidatorFn, AsyncValidatorFn, Validators } from '@angular/forms';\nimport { IKlesValidator } from '../interfaces/validator.interface';\nimport { IKlesFieldConfig } from '../interfaces/field.config.interface';\nimport { IKlesControl } from './control.interface';\nimport { ChangeDetectorRef } from '@angular/core';\nimport { tap } from 'rxjs/operators';\n\nexport abstract class KlesAbstractFormControl implements IKlesControl {\n    constructor(\n        protected field: IKlesFieldConfig,\n        protected ref?: ChangeDetectorRef,\n    ) {}\n    abstract create(): AbstractControl;\n\n    public bindValidations(validations: IKlesValidator<ValidatorFn>[]): ValidatorFn | null {\n        if (validations.length > 0) {\n            return Validators.compose(validations.map((validation) => validation.validator));\n        }\n        return null;\n    }\n\n    public bindAsyncValidations(validations: IKlesValidator<AsyncValidatorFn>[]): AsyncValidatorFn | null {\n        if (validations.length > 0) {\n            return Validators.composeAsync(\n                validations.map((validation) => {\n                    return (c: AbstractControl) => {\n                        const validator$ = validation.validator(c);\n                        if (validator$ instanceof Promise) {\n                            return validator$.finally(() => this.ref?.markForCheck());\n                        } else {\n                            return validator$.pipe(tap(() => this.ref?.markForCheck()));\n                        }\n                    };\n                }),\n            );\n        }\n        return null;\n    }\n}\n","import { AbstractControl, FormControl } from \"@angular/forms\";\nimport { concat, of } from \"rxjs\";\nimport { catchError, map, take } from \"rxjs/operators\";\nimport { KlesAbstractFormControl } from \"./control.abstract\";\n\nexport class KlesFormControl extends KlesAbstractFormControl {\n\n    public create(): AbstractControl {\n        const control = new FormControl(\n            { value: this.field.value, disabled: this.field.disabled || false },\n            {\n                nonNullable: this.field.nonNullable || false,\n                validators: this.bindValidations(this.field.validations || []),\n                asyncValidators: this.bindAsyncValidations(this.field.asyncValidations || []),\n                updateOn: this.field.updateOn || 'change',\n            }\n        );\n\n        if (this.field.asyncValue) {\n            concat(\n                of({ value: null, pending: true }),\n                this.field.asyncValue.pipe(\n                    take(1),\n                    catchError((err) => {\n                        console.error(err);\n                        return of(null);\n                    }),\n                    map((value) => ({ value, pending: false }))\n                )\n            ).subscribe((response) => {\n                this.field.pending = response.pending;\n                if (response.pending) {\n                    control.disable({ emitEvent: false });\n                } else {\n                    if (!this.field.disabled) {\n                        control.enable({ emitEvent: false });\n                    }\n                    control.setValue(response.value);\n                    this.field.value = response.value;\n                }\n            });\n        }\n        return control;\n    }\n}\n","import { Signal, signal } from '@angular/core';\nimport { KlesGetProperty } from './ui-state.types';\n\nexport abstract class AbstractUiState<TValue = any, TRawValue extends TValue = TValue> {\n    protected _value = signal<TValue | undefined>(undefined);\n\n    private _parent: AbstractUiState<any> | null = null;\n    private _parentKey: string | number | null = null;\n\n    get<P extends string | readonly (string | number)[]>(path: P): AbstractUiState<KlesGetProperty<TRawValue, P>> | null;\n    get<P extends string | Array<string | number>>(path: P): AbstractUiState<KlesGetProperty<TRawValue, P>> | null;\n    get<P extends string | (string | number)[]>(path: P): AbstractUiState<KlesGetProperty<TRawValue, P>> | null {\n        let currPath: Array<string | number> | string = path;\n        if (currPath == null) return null;\n        if (!Array.isArray(currPath)) currPath = currPath.split('.').filter(Boolean);\n        if (currPath.length === 0) return null;\n        return currPath.reduce((uiState: AbstractUiState | null, name) => uiState && uiState._find(name), this);\n    }\n\n    _find(name: string | number): AbstractUiState | null {\n        return null;\n    }\n\n    abstract setValue(value: TRawValue): void;\n\n    abstract patchValue(value: Partial<TValue>): void;\n\n    get value(): Signal<TValue | undefined> {\n        return this._value.asReadonly();\n    }\n\n    setParent(parent: AbstractUiState<any>, key: string | number): void {\n        this._parent = parent;\n        this._parentKey = key;\n    }\n\n    protected notifyParent(): void {\n        if (this._parent && this._parentKey != null) {\n            this._parent.childValueChanged(this._parentKey, this._value());\n        }\n    }\n\n    childValueChanged(key: string | number, value: any): void {\n        // par défaut, rien\n    }\n}\n","import { Signal, signal } from '@angular/core';\nimport { IKlesFieldUi } from '../../interfaces/field.config.interface';\nimport { AbstractUiState } from './ui-state.abstract';\n\nexport class ControlUiState<TValue extends IKlesFieldUi> extends AbstractUiState<TValue, TValue> {\n    constructor(value?: TValue) {\n        super();\n        if (value !== undefined) {\n            this._value.set(value);\n        }\n    }\n\n    get value(): Signal<TValue | undefined> {\n        return this._value.asReadonly();\n    }\n\n    override setValue(value: TValue): void {\n        this._value.set(value);\n        this.notifyParent();\n    }\n\n    override patchValue(value: Partial<TValue> | TValue): void {\n        if (value == null) {\n            return;\n        }\n\n        const curr = this._value();\n        if (curr == null) {\n            this._value.set(value as TValue);\n            return;\n        }\n\n        this._value.set({ ...(curr as any), ...(value as any) } as TValue);\n        this.notifyParent();\n    }\n\n}\n","import { IKlesFieldConfig } from '../interfaces/field.config.interface';\nimport { AbstractUiState } from './ui-state/ui-state.abstract';\nimport { IKlesUi } from './ui.interface';\n\nexport abstract class KlesAbstractFormUiControl implements IKlesUi {\n    constructor(protected field: IKlesFieldConfig) {}\n    abstract create(): AbstractUiState;\n}\n","import { AbstractUiState } from './ui-state/ui-state.abstract';\nimport { ControlUiState } from './ui-state/control-ui-state';\nimport { KlesAbstractFormUiControl } from './ui.abstract';\n\nexport class KlesFormUiControl extends KlesAbstractFormUiControl {\n    create(): AbstractUiState {\n        return new ControlUiState({\n            inputType: this.field.inputType,\n            min: this.field.min,\n            max: this.field.max,\n            maxLength: this.field.maxLength,\n            step: this.field.step,\n            hostClass: this.field.hostClass,\n            ngClass: this.field.ngClass,\n            ngStyle: this.field.ngStyle,\n            indeterminate: this.field.indeterminate ?? false,\n            color: this.field.color,\n            icon: this.field.icon,\n            iconSvg: this.field.iconSvg,\n            appearance: this.field.appearance ?? 'fill',\n            buttonAppearance: this.field.buttonAppearance ?? 'text',\n\n            imageUrl: this.field.imageUrl,\n            imageAlt: this.field.imageAlt,\n\n            label: this.field.label,\n            hint: this.field.hint,\n            placeholder: this.field.placeholder,\n            tooltip: this.field.tooltip,\n            currencyOptions: this.field.currencyOptions,\n        });\n    }\n}\n","import { ChangeDetectorRef } from '@angular/core';\nimport { KlesFormControl } from '../controls/default.control';\nimport { IKlesFieldConfig } from '../interfaces/field.config.interface';\nimport { KlesFormUiControl } from '../ui/default.ui';\nimport { AbstractUiState } from '../ui/ui-state/ui-state.abstract';\nimport { AbstractControl } from '@angular/forms';\n\nexport const klesFieldControlFactory = (field: IKlesFieldConfig, ref?: ChangeDetectorRef): AbstractControl => {\n    const factory = new KlesFormControl(field, ref);\n    return factory.create();\n};\n\nexport const klesFieldUiFactory = (field: IKlesFieldConfig): AbstractUiState => {\n    const factory = new KlesFormUiControl(field);\n    return factory.create();\n};\n","import { ChangeDetectorRef, Type } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { klesFieldControlFactory, klesFieldUiFactory } from '../factories/field.factory';\nimport { IKlesFieldConfig } from '../interfaces/field.config.interface';\nimport { AbstractUiState } from '../ui/ui-state/ui-state.abstract';\n\n\nexport const componentMapper: {\n    component: Type<any>;\n    type: string;\n    factory: (field: IKlesFieldConfig, ref?: ChangeDetectorRef) => AbstractControl<any, any> | null;\n    ui: (field: IKlesFieldConfig) => AbstractUiState<any, any>;\n}[] = [];\n\nexport function FieldMapper(config: { type: string; factory?: (field: IKlesFieldConfig) => AbstractControl<any, any> | null; ui?: (field: IKlesFieldConfig) => AbstractUiState<any, any> }) {\n    return (target: Type<any>) => {\n        componentMapper.push({\n            component: target,\n            type: config.type,\n            factory: config.factory || klesFieldControlFactory,\n            ui: config.ui || klesFieldUiFactory,\n        });\n    };\n}\n","export enum EnumType {\n    input = 'input',\n    select = 'select',\n    text = 'text',\n    file = 'file',\n    imageUpload = 'imageUpload',\n    button = 'button',\n    checkbox = 'checkbox',\n    number = 'number',\n    time = 'time',\n    date = 'date',\n    color = 'color',\n    list = 'list',\n    multi = 'multi',\n    array = 'array',\n    group = 'group',\n    lineBreak = 'lineBreak',\n    badge = 'badge',\n    range = 'range',\n    currency = 'currency',\n    status = 'status',\n}\n","import { InjectionToken, Signal } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { IKlesFieldConfig } from './interfaces/field.config.interface';\nimport { GroupUiState } from './ui/ui-state/group-ui-state';\n\nexport const FIELD_NAME = new InjectionToken<string>('FIELD_NAME');\nexport const GROUP = new InjectionToken<FormGroup>('GROUP');\nexport const SIBLING_FIELDS = new InjectionToken<IKlesFieldConfig[]>('SIBLING_FIELDS');\nexport const GROUP_UI = new InjectionToken<GroupUiState>('GROUP_UI');\nexport const FIELD = new InjectionToken<IKlesFieldConfig>('FIELD');\n\nexport const FIELD_CONTEXT = new InjectionToken<Signal<unknown | null>>('FIELD_CONTEXT');\n","import { Component, inject, Signal } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { IKlesClearControl } from '../../interfaces/clear-control.interface';\nimport { IKlesFieldConfig } from '../../interfaces/field.config.interface';\n\nimport { MatIcon } from '@angular/material/icon';\nimport { MatIconButton } from '@angular/material/button';\nimport { FIELD, GROUP, SIBLING_FIELDS } from '../../token';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { combineLatest, map, startWith } from 'rxjs';\n\n@Component({\n    selector: 'kles-form-clear',\n    template: `\n        <button [disabled]=\"disabled()\" matIconButton aria-label=\"Clear\" type=\"button\" (click)=\"clear($event)\">\n            <mat-icon>close</mat-icon>\n        </button>\n    `,\n    standalone: true,\n    imports: [MatIcon, MatIconButton],\n})\nexport class KlesFormClearComponent implements IKlesClearControl {\n    readonly field = inject<IKlesFieldConfig>(FIELD);\n    readonly group = inject<FormGroup<any>>(GROUP);\n    readonly siblingFields = inject<IKlesFieldConfig[]>(SIBLING_FIELDS);\n\n    disabled: Signal<boolean>;\n\n    constructor() {\n        const control = this.group.controls[this.field.name];\n\n        this.disabled = toSignal(\n            combineLatest([\n                control.valueChanges.pipe(\n                    startWith(control.value),\n                    map((value) => {\n                        return !this.isPresent(value);\n                    }),\n                ),\n                control.statusChanges.pipe(\n                    startWith(control.status),\n                    map((status) => status === 'DISABLED'),\n                ),\n            ]).pipe(\n                map(([empty, disabled]) => {\n                    return empty || disabled;\n                }),\n            ),\n            { initialValue: true },\n        );\n    }\n\n    clear(event: MouseEvent): void {\n        event.stopPropagation();\n        this.group.controls[this.field.name].reset();\n    }\n\n    private isPresent<T>(value: T | null | undefined): value is T {\n        if (value == null) return false;\n\n        if (typeof value === 'string') {\n            return value.length > 0;\n        }\n\n        if (Array.isArray(value)) {\n            return value.length > 0;\n        }\n\n        if (value instanceof Map || value instanceof Set) {\n            return value.size > 0;\n        }\n\n        return true;\n    }\n}\n","export interface Destroyable {\n    destroy(): void;\n}\n\nexport function isDestroyable(value: unknown): value is Destroyable {\n    return value !== null && typeof value === 'object' &&\n        typeof (value as Destroyable).destroy === 'function';\n}\n","import { ApplicationRef, Directive, Input, OnInit, ViewContainerRef, ViewRef, ComponentRef, OnChanges, SimpleChanges, OnDestroy, Type, Injector, StaticProvider, Provider, Signal } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';\nimport { componentMapper } from '../decorators/component.decorator';\nimport { KlesFormClearComponent } from '../fields/subfields/clear.component';\nimport { IKlesFieldConfig } from '../interfaces/field.config.interface';\nimport { isDestroyable } from '../utils/destroyable.guard';\nimport { FIELD, FIELD_NAME, GROUP, SIBLING_FIELDS, GROUP_UI, FIELD_CONTEXT } from '../token';\nimport { GroupUiState } from '../ui/ui-state/group-ui-state';\n\n@Directive({\n    selector: '[klesDynamicField]',\n    standalone: true,\n})\nexport class KlesDynamicFieldDirective<T extends IKlesFieldConfig = IKlesFieldConfig> implements OnInit, OnChanges, OnDestroy {\n    @Input() field!: T;\n    @Input() group!: UntypedFormGroup;\n    @Input() ui!: GroupUiState;\n    @Input() siblingFields!: T[];\n\n    @Input() context: Signal<unknown | null> | null = null;\n\n    componentRef: ComponentRef<any> | undefined;\n    subComponents: ComponentRef<any>[] = [];\n    private subComponentViews = new Map<ComponentRef<any>, ViewRef>();\n\n    constructor(\n        protected container: ViewContainerRef,\n        protected injector: Injector,\n        private applicationRef: ApplicationRef,\n    ) {}\n\n    ngOnDestroy(): void {\n        this.destroyComponents();\n    }\n\n    ngOnInit() {\n        this.buildComponent();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        const groupChanged = !!changes['group'] && !changes['group'].isFirstChange();\n        const fieldChanged = !!changes['field'] && !changes['field'].isFirstChange();\n        const uiChanged = !!changes['ui'] && !changes['ui'].isFirstChange();\n        const siblingFieldsChanged = !!changes['siblingFields'] && !changes['siblingFields'].isFirstChange();\n        const contextChanged = !!changes['context'] && !changes['context'].isFirstChange();\n\n        if (groupChanged) {\n            this.group = changes['group'].currentValue;\n        }\n\n        if (fieldChanged) {\n            this.field = changes['field'].currentValue;\n        }\n\n        if (uiChanged) {\n            this.ui = changes['ui'].currentValue;\n        }\n\n        if (siblingFieldsChanged) {\n            this.siblingFields = changes['siblingFields'].currentValue;\n        }\n\n        if (contextChanged) {\n            this.context = changes['context'].currentValue;\n        }\n\n        if (groupChanged || fieldChanged || uiChanged || siblingFieldsChanged || contextChanged) {\n            this.buildComponent();\n        }\n    }\n\n    buildComponent() {\n        this.destroyComponents();\n\n        const options: {\n            providers: Array<Provider | StaticProvider>;\n            parent?: Injector;\n            name?: string;\n        } = {\n            providers: [\n                ...(this.field.providers || []),\n                ...(this.field.dateOptions\n                    ? [\n                          ...(this.field.dateOptions.adapter\n                              ? [\n                                    {\n                                        provide: DateAdapter,\n                                        useClass: this.field.dateOptions.adapter.class,\n                                        deps: this.field.dateOptions.adapter.deps || [],\n                                    },\n                                ]\n                              : []),\n                          { provide: MAT_DATE_LOCALE, useValue: this.field.dateOptions.language },\n                          { provide: MAT_DATE_FORMATS, useValue: this.field.dateOptions.dateFormat },\n                      ]\n                    : []),\n                {\n                    provide: FIELD_NAME,\n                    useValue: this.field.name,\n                },\n                {\n                    provide: FIELD,\n                    useValue: this.field,\n                },\n                {\n                    provide: GROUP,\n                    useValue: this.group,\n                },\n                {\n                    provide: SIBLING_FIELDS,\n                    useValue: this.siblingFields,\n                },\n                {\n                    provide: GROUP_UI,\n                    useValue: this.ui,\n                },\n\n                ...(this.context\n                    ? [\n                          {\n                              provide: FIELD_CONTEXT,\n                              useValue: this.context,\n                          },\n                      ]\n                    : []),\n            ],\n            parent: this.injector,\n        };\n\n        const injector: Injector = Injector.create(options);\n\n        if (this.field.clearable) {\n            const composant = this.createSubComponent(this.field.clearableComponent || KlesFormClearComponent, options);\n            this.subComponents.push(composant);\n        }\n        if (this.field.subComponents) {\n            this.subComponents.push(...this.field.subComponents.map((subComponent) => this.createSubComponent(subComponent, options)));\n        }\n\n        this.componentRef = this.createComponentRef(injector);\n\n        this.componentRef?.onDestroy(() => {\n            if (isDestroyable(injector)) {\n                injector.destroy();\n            }\n        });\n    }\n\n    protected createComponentRef(injector: Injector): ComponentRef<any> | undefined {\n        const component = this.findComponent();\n\n        if (component) {\n            const componentRef = this.container.createComponent(component, {\n                injector,\n                projectableNodes: [this.subComponents.map((sub) => sub.location.nativeElement)],\n            });\n\n            if (this.field.hostClass) {\n                if (Array.isArray(this.field.hostClass)) {\n                    componentRef.location.nativeElement.classList.add(...this.field.hostClass);\n                } else {\n                    componentRef.location.nativeElement.classList.add(this.field.hostClass);\n                }\n            }\n\n            return componentRef;\n        }\n\n        return undefined;\n    }\n\n    protected findComponent(): Type<any> | undefined {\n        if (this.field.type || this.field.component) {\n            return componentMapper.find((element) => element.type === this.field.type)?.component || this.field.component;\n        }\n        return undefined;\n    }\n\n    private createSubComponent(\n        componentType: Type<any>,\n        options: {\n            providers: Array<Provider | StaticProvider>;\n            parent?: Injector;\n            name?: string;\n        },\n    ): ComponentRef<any> {\n        const injector: Injector = Injector.create(options);\n        const component = this.container.createComponent(componentType, { injector });\n\n        // The host element is projected into the field component. Keeping its view\n        // in this container would make Angular's logical DOM differ from the real DOM.\n        const viewIndex = this.container.indexOf(component.hostView);\n        const detachedView = viewIndex !== -1 ? this.container.detach(viewIndex) : null;\n        if (detachedView) {\n            this.applicationRef.attachView(detachedView);\n            this.subComponentViews.set(component, detachedView);\n        }\n\n        component.onDestroy(() => {\n            if (isDestroyable(injector)) {\n                injector.destroy();\n            }\n        });\n\n        return component;\n    }\n\n    private destroyComponents(): void {\n        this.componentRef?.destroy();\n        this.componentRef = undefined;\n\n        this.subComponents.forEach((component) => {\n            const view = this.subComponentViews.get(component);\n            if (view) {\n                this.applicationRef.detachView(view);\n            }\n            component.destroy();\n        });\n        this.subComponents = [];\n        this.subComponentViews.clear();\n    }\n}\n","import { IKlesValidator, KlesValidationKey } from '../interfaces/validator.interface';\n\nexport function flattenValidators<T>(validations: IKlesValidator<T>[]): KlesValidationKey[] {\n    return validations.flatMap((v) => ('keys' in v ? (v.keys ?? []) : [{ name: v.name, message: v.message, messageKey: v.messageKey }]));\n}\n","import { Component, computed, input } from '@angular/core';\nimport { AbstractControl, AsyncValidatorFn, FormsModule, ReactiveFormsModule, UntypedFormGroup, ValidatorFn } from '@angular/forms';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { map, startWith, switchMap } from 'rxjs';\n\nimport { IKlesValidator } from '../interfaces/validator.interface';\nimport { flattenValidators } from '../utils/validation.util';\n\n@Component({\n    selector: '[matErrorForm]',\n    template: `\n        @if (formErrors()) {\n            @for (validation of validationsKeys(); track validation.name) {\n                @if (form().hasError(validation.name) && validation.message) {\n                    {{ validation.message }}\n                }\n            }\n\n            @for (validation of asyncValidationsKeys(); track validation.name) {\n                @if (form().hasError(validation.name) && validation.message) {\n                    {{ validation.message }}\n                }\n            }\n        }\n    `,\n    styles: [\n        `\n            :host {\n                overflow-wrap: break-word;\n            }\n        `,\n    ],\n    standalone: true,\n    imports: [ReactiveFormsModule, FormsModule],\n})\nexport class MatErrorFormDirective {\n    readonly form = input.required<AbstractControl>();\n\n    readonly validations = input<IKlesValidator<ValidatorFn>[] | undefined>([]);\n\n    readonly asyncValidations = input<IKlesValidator<AsyncValidatorFn>[] | undefined>([]);\n\n    readonly validationsKeys = computed(() => flattenValidators<ValidatorFn>(this.validations() ?? []));\n\n    readonly asyncValidationsKeys = computed(() => flattenValidators<AsyncValidatorFn>(this.asyncValidations() ?? []));\n\n    readonly formErrors = toSignal(\n        toObservable(this.form).pipe(\n            switchMap((form) =>\n                form.statusChanges.pipe(\n                    startWith(form.status),\n                    map(() => form.errors),\n                ),\n            ),\n        ),\n        { initialValue: null },\n    );\n}\n","import { UntypedFormControl, FormGroupDirective, NgForm } from '@angular/forms';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class KlesFormErrorStateMatcher implements ErrorStateMatcher {\n\n    constructor() {\n    }\n\n    isErrorState(control: UntypedFormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n        const isSubmitted = form && form.submitted;\n        return !!(control && control.invalid && (control.dirty || control.touched || isSubmitted));\n    }\n\n}\n\n","import { AbstractUiState } from './ui-state.abstract';\nimport { KlesTypedOrUntyped } from './ui-state.types';\n\nexport class GroupUiState<TUiState extends { [K in keyof TUiState]: AbstractUiState<any> } = any> extends AbstractUiState<any, any> {\n    public states: KlesTypedOrUntyped<TUiState, TUiState, { [key: string]: AbstractUiState<any> }> = {} as TUiState;\n\n    constructor(states?: TUiState) {\n        super();\n        this.states = (states ?? ({} as any)) as any;\n        for (const key of Object.keys(this.states as any)) {\n            const state = (this.states as any)[key];\n            state?.setParent(this, key);\n        }\n        this._value.set(this.buildInitialValue());\n    }\n\n    public override setValue(value: any): void {\n        if (value == null) return;\n\n        for (const name of Object.keys(value)) {\n            const state = (this.states as any)[name];\n\n            if (state) {\n                state.setValue(value[name]);\n            }\n        }\n\n        this._value.set(value);\n        this.notifyParent();\n    }\n\n    public override patchValue(value: any): void {\n        if (value == null) return;\n\n        for (const name of Object.keys(value)) {\n            const state = (this.states as any)[name];\n\n            if (state) {\n                state.patchValue(value[name]);\n            }\n        }\n\n        const curr = this._value() ?? {};\n\n        this._value.set({\n            ...curr,\n            ...value,\n        });\n\n        this.notifyParent();\n    }\n\n    override childValueChanged(key: string | number, value: any): void {\n        const curr = this._value() ?? {};\n\n        this._value.set({\n            ...curr,\n            [key]: value,\n        });\n\n        this.notifyParent();\n    }\n\n    public override _find(name: string | number): AbstractUiState | null {\n        const key = String(name);\n        const has = Object.prototype.hasOwnProperty.call(this.states as any, key);\n        return has ? ((this.states as any)[key] as AbstractUiState) : null;\n    }\n\n    public addUiState(name: string, uiState: AbstractUiState<any>): void {\n        (this.states as any)[name] = uiState;\n\n        uiState.setParent(this, name);\n\n        const curr = this._value() ?? {};\n\n        this._value.set({\n            ...curr,\n            [name]: uiState.value(),\n        });\n\n        this.notifyParent();\n    }\n\n    private buildInitialValue(): any {\n        const out: any = {};\n\n        for (const key of Object.keys(this.states as any)) {\n            out[key] = (this.states as any)[key]?.value();\n        }\n\n        return out;\n    }\n\n}\n","import type { IKlesFieldConfig } from './field.config.interface';\n\nexport interface IKlesElementLayoutBreakpoint {\n    colSpan?: number;\n    rowSpan?: number;\n    colStart?: number;\n    rowStart?: number;\n}\n\nexport interface IKlesElementLayout extends IKlesElementLayoutBreakpoint {\n    class?: string | string[];\n    responsive?: {\n        xs?: IKlesElementLayoutBreakpoint;\n        sm?: IKlesElementLayoutBreakpoint;\n        md?: IKlesElementLayoutBreakpoint;\n        lg?: IKlesElementLayoutBreakpoint;\n        xl?: IKlesElementLayoutBreakpoint;\n    };\n}\n\nexport interface IKlesLayoutConfig {\n    /** Number of columns in the grid. Defaults to 12. */\n    columns?: number;\n    /** CSS gap between grid cells. Defaults to 0. */\n    gap?: string;\n}\n\ninterface IKlesStructuralElement {\n    layout?: IKlesElementLayout;\n}\n\nexport interface IKlesFormSection extends IKlesStructuralElement {\n    type: 'section';\n    title: string;\n    description?: string;\n    /** Material icon displayed before the section title. */\n    icon?: string;\n    /** Registered Material SVG icon displayed before the section title. */\n    iconSvg?: string;\n    fields: KlesFormElement[];\n    layoutConfig?: IKlesLayoutConfig;\n}\n\n/** A visual layout group. Unlike an EnumType.group field, it creates no FormGroup. */\nexport interface IKlesFormLayoutGroup extends IKlesStructuralElement {\n    type: 'layoutGroup';\n    fields: KlesFormElement[];\n    layoutConfig?: IKlesLayoutConfig;\n}\n\nexport interface IKlesFormDivider extends IKlesStructuralElement {\n    type: 'divider';\n}\n\nexport interface IKlesFormSpacer extends IKlesStructuralElement {\n    type: 'spacer';\n    size?: string | number;\n}\n\nexport type KlesFormStructuralElement = IKlesFormSection | IKlesFormLayoutGroup | IKlesFormDivider | IKlesFormSpacer;\nexport type KlesFormElement = IKlesFieldConfig | KlesFormStructuralElement;\n\nexport function isKlesStructuralElement(element: KlesFormElement): element is KlesFormStructuralElement {\n    return element.type === 'section' || element.type === 'layoutGroup' || element.type === 'divider' || element.type === 'spacer';\n}\n\nexport function flattenKlesFields(elements: readonly KlesFormElement[]): IKlesFieldConfig[] {\n    return elements.flatMap((element) => (isKlesStructuralElement(element) && (element.type === 'section' || element.type === 'layoutGroup') ? flattenKlesFields(element.fields) : isKlesStructuralElement(element) ? [] : [element]));\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, Signal, isDevMode } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { MatIcon } from '@angular/material/icon';\nimport { KlesDynamicFieldDirective } from './directive/dynamic-field.directive';\nimport { IKlesFieldConfig } from './interfaces/field.config.interface';\nimport {\n    IKlesElementLayout,\n    IKlesElementLayoutBreakpoint,\n    IKlesFormLayoutGroup,\n    IKlesFormSection,\n    IKlesFormSpacer,\n    IKlesLayoutConfig,\n    KlesFormElement,\n    flattenKlesFields,\n    isKlesStructuralElement,\n} from './interfaces/layout.interface';\nimport { GroupUiState } from './ui/ui-state/group-ui-state';\n\nconst DEFAULT_COLUMNS = 12;\nconst DEFAULT_GAP = '0';\n\n@Component({\n    selector: 'kles-form-elements',\n    standalone: true,\n    host: { style: 'display: contents' },\n    imports: [CommonModule, KlesDynamicFieldDirective, MatIcon],\n    template: `\n        @for (element of elements; track element) {\n            @if (isVisible(element)) {\n                <div class=\"kles-layout-item\" [ngClass]=\"layoutClasses(element)\" [ngStyle]=\"layoutStyles(element)\">\n                    @if (isSection(element)) {\n                        <section class=\"kles-form-section\">\n                            <header class=\"kles-form-section-header\">\n                                <div class=\"kles-form-section-title\">\n                                    @if (section(element).iconSvg; as iconSvg) {\n                                        <mat-icon [svgIcon]=\"iconSvg\" aria-hidden=\"true\" />\n                                    } @else if (section(element).icon; as icon) {\n                                        <mat-icon aria-hidden=\"true\">{{ icon }}</mat-icon>\n                                    }\n                                    <h3>{{ section(element).title }}</h3>\n                                </div>\n                                @if (section(element).description; as description) {\n                                    <p>{{ description }}</p>\n                                }\n                            </header>\n                            <div class=\"kles-layout-grid\" [ngStyle]=\"containerStyles(section(element).layoutConfig)\">\n                                <kles-form-elements [elements]=\"section(element).fields\" [group]=\"group\" [ui]=\"ui\" [context]=\"context\" [layoutConfig]=\"section(element).layoutConfig ?? {}\" />\n                            </div>\n                        </section>\n                    } @else if (isLayoutGroup(element)) {\n                        <div class=\"kles-layout-grid kles-form-layout-group\" [ngStyle]=\"containerStyles(layoutGroup(element).layoutConfig)\">\n                            <kles-form-elements [elements]=\"layoutGroup(element).fields\" [group]=\"group\" [ui]=\"ui\" [context]=\"context\" [layoutConfig]=\"layoutGroup(element).layoutConfig ?? {}\" />\n                        </div>\n                    } @else if (isDivider(element)) {\n                        <hr class=\"kles-form-divider\" />\n                    } @else if (isSpacer(element)) {\n                        <div class=\"kles-form-spacer\" [style.height]=\"spacerSize(element)\" aria-hidden=\"true\"></div>\n                    } @else {\n                        <ng-container klesDynamicField [field]=\"field(element)\" [group]=\"group\" [ui]=\"ui\" [siblingFields]=\"siblingFields\" [context]=\"context\" />\n                    }\n                </div>\n            }\n        }\n    `,\n    styles: [`\n        .kles-layout-item {\n            min-width: 0;\n            grid-column-start: var(--kles-effective-col-start, var(--kles-col-start, auto));\n            grid-column-end: span var(--kles-effective-col-span, var(--kles-col-span, 12));\n            grid-row-start: var(--kles-effective-row-start, var(--kles-row-start, auto));\n            grid-row-end: span var(--kles-effective-row-span, var(--kles-row-span, 1));\n        }\n        .kles-layout-grid {\n            display: grid;\n            grid-template-columns: repeat(var(--kles-grid-columns, 12), minmax(0, 1fr));\n            gap: var(--kles-grid-gap, 0);\n        }\n        .kles-form-section-header { margin-bottom: 14px; }\n        .kles-form-section-title { display: flex; align-items: center; gap: 8px; }\n        .kles-form-section-title mat-icon {\n            width: 24px;\n            height: 24px;\n            font-size: 24px;\n            color: var(--mat-sys-primary, currentColor);\n        }\n        .kles-form-section-header h3 {\n            margin: 0;\n            font-size: 1.25rem;\n            line-height: 1.5rem;\n            font-weight: 500;\n        }\n        .kles-form-section-header p { margin: 4px 0 0; }\n        .kles-form-divider { border: 0; border-top: 1px solid currentColor; margin: 8px 0; opacity: .2; }\n        @media (max-width: 599.98px) {\n            .kles-layout-item {\n                --kles-effective-col-span: var(--kles-col-span-xs, var(--kles-col-span, 12));\n                --kles-effective-row-span: var(--kles-row-span-xs, var(--kles-row-span, 1));\n                --kles-effective-col-start: var(--kles-col-start-xs, var(--kles-col-start, auto));\n                --kles-effective-row-start: var(--kles-row-start-xs, var(--kles-row-start, auto));\n            }\n        }\n        @media (min-width: 600px) {\n            .kles-layout-item {\n                --kles-effective-col-span: var(--kles-col-span-sm, var(--kles-col-span, 12));\n                --kles-effective-row-span: var(--kles-row-span-sm, var(--kles-row-span, 1));\n                --kles-effective-col-start: var(--kles-col-start-sm, var(--kles-col-start, auto));\n                --kles-effective-row-start: var(--kles-row-start-sm, var(--kles-row-start, auto));\n            }\n        }\n        @media (min-width: 960px) {\n            .kles-layout-item {\n                --kles-effective-col-span: var(--kles-col-span-md, var(--kles-col-span-sm, var(--kles-col-span, 12)));\n                --kles-effective-row-span: var(--kles-row-span-md, var(--kles-row-span-sm, var(--kles-row-span, 1)));\n                --kles-effective-col-start: var(--kles-col-start-md, var(--kles-col-start-sm, var(--kles-col-start, auto)));\n                --kles-effective-row-start: var(--kles-row-start-md, var(--kles-row-start-sm, var(--kles-row-start, auto)));\n            }\n        }\n        @media (min-width: 1280px) {\n            .kles-layout-item {\n                --kles-effective-col-span: var(--kles-col-span-lg, var(--kles-col-span-md, var(--kles-col-span-sm, var(--kles-col-span, 12))));\n                --kles-effective-row-span: var(--kles-row-span-lg, var(--kles-row-span-md, var(--kles-row-span-sm, var(--kles-row-span, 1))));\n                --kles-effective-col-start: var(--kles-col-start-lg, var(--kles-col-start-md, var(--kles-col-start-sm, var(--kles-col-start, auto))));\n                --kles-effective-row-start: var(--kles-row-start-lg, var(--kles-row-start-md, var(--kles-row-start-sm, var(--kles-row-start, auto))));\n            }\n        }\n        @media (min-width: 1920px) {\n            .kles-layout-item {\n                --kles-effective-col-span: var(--kles-col-span-xl, var(--kles-col-span-lg, var(--kles-col-span-md, var(--kles-col-span-sm, var(--kles-col-span, 12)))));\n                --kles-effective-row-span: var(--kles-row-span-xl, var(--kles-row-span-lg, var(--kles-row-span-md, var(--kles-row-span-sm, var(--kles-row-span, 1)))));\n                --kles-effective-col-start: var(--kles-col-start-xl, var(--kles-col-start-lg, var(--kles-col-start-md, var(--kles-col-start-sm, var(--kles-col-start, auto)))));\n                --kles-effective-row-start: var(--kles-row-start-xl, var(--kles-row-start-lg, var(--kles-row-start-md, var(--kles-row-start-sm, var(--kles-row-start, auto)))));\n            }\n        }\n    `],\n})\nexport class KlesFormElementsComponent {\n    private _elements: KlesFormElement[] = [];\n    siblingFields: IKlesFieldConfig[] = [];\n    private readonly layoutWarnings = new Set<string>();\n\n    @Input({ required: true })\n    set elements(value: KlesFormElement[]) {\n        this._elements = value;\n        this.siblingFields = flattenKlesFields(value);\n    }\n    get elements(): KlesFormElement[] { return this._elements; }\n    @Input({ required: true }) group!: UntypedFormGroup;\n    @Input({ required: true }) ui!: GroupUiState;\n    @Input() context: Signal<unknown | null> | null = null;\n    @Input() layoutConfig: IKlesLayoutConfig = {};\n\n    isVisible(element: KlesFormElement): boolean {\n        return isKlesStructuralElement(element) || element.visible !== false;\n    }\n\n    isSection(element: KlesFormElement): boolean { return isKlesStructuralElement(element) && element.type === 'section'; }\n    isLayoutGroup(element: KlesFormElement): boolean { return isKlesStructuralElement(element) && element.type === 'layoutGroup'; }\n    isDivider(element: KlesFormElement): boolean { return isKlesStructuralElement(element) && element.type === 'divider'; }\n    isSpacer(element: KlesFormElement): boolean { return isKlesStructuralElement(element) && element.type === 'spacer'; }\n    section(element: KlesFormElement): IKlesFormSection { return element as IKlesFormSection; }\n    layoutGroup(element: KlesFormElement): IKlesFormLayoutGroup { return element as IKlesFormLayoutGroup; }\n    field(element: KlesFormElement): IKlesFieldConfig { return element as IKlesFieldConfig; }\n\n    containerStyles(config: IKlesLayoutConfig = {}): Record<string, string | number> {\n        return {\n            '--kles-grid-columns': this.columns(config),\n            '--kles-grid-gap': config.gap?.trim() || DEFAULT_GAP,\n        };\n    }\n\n    layoutClasses(element: KlesFormElement): string[] {\n        const value = element.layout?.class;\n        return Array.isArray(value) ? value : value ? [value] : [];\n    }\n\n    layoutStyles(element: KlesFormElement): Record<string, string | number> {\n        const columns = this.columns(this.layoutConfig);\n        const layout = element.layout ?? {};\n        const styles: Record<string, string | number> = {};\n        this.addPlacement(styles, layout, '', columns, true);\n        for (const breakpoint of ['xs', 'sm', 'md', 'lg', 'xl'] as const) {\n            const placement = layout.responsive?.[breakpoint];\n            if (placement) this.addPlacement(styles, placement, `-${breakpoint}`, columns, false);\n        }\n        return styles;\n    }\n\n    spacerSize(element: KlesFormElement): string {\n        const size = (element as IKlesFormSpacer).size ?? '16px';\n        return typeof size === 'number' ? `${Math.max(0, size)}px` : size;\n    }\n\n    private addPlacement(styles: Record<string, string | number>, placement: IKlesElementLayoutBreakpoint, suffix: string, columns: number, defaults: boolean): void {\n        const colStart = placement.colStart == null ? undefined : this.integer('colStart', placement.colStart, 1, columns);\n        const maxSpan = colStart == null ? columns : columns - colStart + 1;\n        if (defaults || placement.colSpan != null) styles[`--kles-col-span${suffix}`] = placement.colSpan == null ? columns : this.integer('colSpan', placement.colSpan, 1, maxSpan);\n        if (defaults || placement.rowSpan != null) styles[`--kles-row-span${suffix}`] = placement.rowSpan == null ? 1 : this.integer('rowSpan', placement.rowSpan, 1, 999);\n        if (colStart != null) styles[`--kles-col-start${suffix}`] = colStart;\n        if (placement.rowStart != null) styles[`--kles-row-start${suffix}`] = this.integer('rowStart', placement.rowStart, 1, 999);\n    }\n\n    private columns(config: IKlesLayoutConfig): number {\n        return config.columns == null ? DEFAULT_COLUMNS : this.integer('columns', config.columns, 1, 64);\n    }\n\n    private integer(name: string, value: number, min: number, max: number): number {\n        const normalized = Number.isFinite(value) ? Math.min(max, Math.max(min, Math.round(value))) : min;\n        const warning = `[KlesDynamicForm] ${name}=${value} is invalid; using ${normalized}.`;\n        if (isDevMode() && normalized !== value && !this.layoutWarnings.has(warning)) {\n            this.layoutWarnings.add(warning);\n            console.warn(warning);\n        }\n        return normalized;\n    }\n}\n","import { OnInit, Component, Input, Output, EventEmitter, OnChanges, SimpleChanges, ChangeDetectorRef, Signal, isDevMode } from '@angular/core';\nimport { UntypedFormGroup, UntypedFormBuilder, ValidatorFn, AsyncValidatorFn, AbstractControl, FormArray, FormGroup, ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { componentMapper } from './decorators/component.decorator';\nimport { EnumType } from './enums/type.enum';\nimport { klesFieldControlFactory, klesFieldUiFactory } from './factories/field.factory';\nimport { IKlesFieldConfig } from './interfaces/field.config.interface';\nimport { IKlesValidator } from './interfaces/validator.interface';\nimport { CommonModule } from '@angular/common';\n\nimport { MatError } from '@angular/material/form-field';\nimport { KlesDynamicFieldDirective } from './directive/dynamic-field.directive';\nimport { MatErrorFormDirective } from './directive/mat-error-form.directive';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { KlesFormErrorStateMatcher } from './matcher/form-error.matcher';\nimport { AbstractUiState } from './ui/ui-state/ui-state.abstract';\nimport { GroupUiState } from './ui/ui-state/group-ui-state';\nimport { KlesFormElementsComponent } from './form-elements.component';\nimport { IKlesLayoutConfig, KlesFormElement, flattenKlesFields, isKlesStructuralElement } from './interfaces/layout.interface';\n\nconst DEFAULT_GRID_GAP = '0';\n\n@Component({\n    exportAs: 'klesDynamicForm',\n    selector: 'app-kles-dynamic-form',\n    standalone: true,\n    template: `\n        <form class=\"{{ orientationClass }}\" [class.dynamic-form-nowrap]=\"orientationClass === 'dynamic-form-row' && wrap === false\" [ngClass]=\"formClass\" [ngStyle]=\"gridStyles\" [formGroup]=\"form\" (submit)=\"onSubmit($event)\">\n            @if (usesAdvancedLayout) {\n                <kles-form-elements [elements]=\"fields\" [group]=\"form\" [ui]=\"ui\" [context]=\"context\" [layoutConfig]=\"layout\" />\n            } @else {\n                @for (field of legacyFields; track field.name) {\n                    @if (field.visible !== false) {\n                        <ng-container klesDynamicField [field]=\"field\" [group]=\"form\" [ui]=\"ui\" [siblingFields]=\"legacyFields\" [context]=\"context\"> </ng-container>\n                    }\n                }\n            }\n            @if (form && form.errors) {\n                <mat-error matErrorForm [form]=\"form\" [validations]=\"validators\" [asyncValidations]=\"asyncValidators\"></mat-error>\n            }\n        </form>\n    `,\n    styles: [\n        '.dynamic-form-column { display: flex;flex-direction: column; }',\n        '.dynamic-form-column > * { width: 100%; }',\n        '.dynamic-form-row { display: inline-flex; flex-wrap:wrap; gap:10px; align-items: baseline}',\n        '.dynamic-form-row.dynamic-form-nowrap { flex-wrap: nowrap; }',\n        '.dynamic-form-row > * { width: 100%; }',\n        '.dynamic-form-grid { display: grid; grid-template-columns: repeat(var(--kles-grid-columns, 12), minmax(0, 1fr)); gap: var(--kles-grid-gap, 0); }',\n        '.dynamic-form-inline-grid { display: inline-grid; grid-template-columns: repeat(var(--kles-grid-columns, 12), minmax(0, 1fr)); gap: var(--kles-grid-gap, 0); }',\n    ],\n    providers: [{ provide: ErrorStateMatcher, useClass: KlesFormErrorStateMatcher }],\n    imports: [CommonModule, MatErrorFormDirective, KlesDynamicFieldDirective, KlesFormElementsComponent, FormsModule, ReactiveFormsModule, MatError],\n})\nexport class KlesDynamicFormComponent implements OnInit, OnChanges {\n    @Input() context: Signal<unknown | null> | null = null;\n    @Input() fields: KlesFormElement[] = [];\n    @Input() validators: IKlesValidator<ValidatorFn>[] = [];\n    @Input() asyncValidators: IKlesValidator<AsyncValidatorFn>[] = [];\n    // tslint:disable-next-line: no-output-native\n    @Output() submit: EventEmitter<any> = new EventEmitter<any>();\n    @Output() _onLoaded = new EventEmitter();\n\n    @Input() direction: 'column' | 'row' | 'grid' | 'inline-grid' = 'column';\n    @Input() wrap = true;\n    /** Configuration of the advanced grid container. */\n    @Input() layout: IKlesLayoutConfig = {};\n    @Input() formClass: string | string[] | Set<string> | { [klass: string]: any } = '';\n\n    form!: UntypedFormGroup;\n    ui!: GroupUiState;\n    private flattenedSource: KlesFormElement[] | null = null;\n    private flattenedFields: IKlesFieldConfig[] = [];\n    private readonly layoutWarnings = new Set<string>();\n    get orientationClass(): 'dynamic-form-column' | 'dynamic-form-row' | 'dynamic-form-grid' | 'dynamic-form-inline-grid' {\n        if (this.hasRootElementLayout && this.direction !== 'inline-grid') return 'dynamic-form-grid';\n        return `dynamic-form-${this.direction}`;\n    }\n\n    get value() {\n        return this.form.value;\n    }\n\n    get legacyFields(): IKlesFieldConfig[] {\n        if (this.flattenedSource !== this.fields) {\n            this.flattenedSource = this.fields;\n            this.flattenedFields = flattenKlesFields(this.fields);\n        }\n        return this.flattenedFields;\n    }\n\n    get usesAdvancedLayout(): boolean {\n        return this.direction === 'grid' || this.direction === 'inline-grid' || this.hasRootElementLayout || this.fields.some(isKlesStructuralElement);\n    }\n\n    get gridStyles(): Record<string, string | number> | null {\n        if (this.orientationClass !== 'dynamic-form-grid' && this.orientationClass !== 'dynamic-form-inline-grid') return null;\n        return {\n            '--kles-grid-columns': this.normalizeColumns(this.layout.columns),\n            '--kles-grid-gap': this.layout.gap?.trim() || DEFAULT_GRID_GAP,\n        };\n    }\n\n    private get hasRootElementLayout(): boolean {\n        return this.fields.some((element) => element.layout != null);\n    }\n\n    constructor(\n        private fb: UntypedFormBuilder,\n        private ref: ChangeDetectorRef,\n    ) {}\n\n    ngOnInit() {\n        this.form = this.createForm();\n        this.ui = this.createUi();\n        this._onLoaded.emit();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes.fields && !changes.fields.firstChange && this.form) {\n            this.updateForm();\n            this.ui = this.createUi();\n            this._onLoaded.emit();\n        }\n\n        if (changes.validators && !changes.validators.firstChange && this.form) {\n            this.form.setValidators(this.validators.map((v) => v.validator));\n        }\n\n        if (changes.asyncValidators && !changes.asyncValidators.firstChange && this.form) {\n            this.form.setAsyncValidators(this.asyncValidators.map((v) => v.validator));\n        }\n\n    }\n\n    onSubmit(event: Event) {\n        event.preventDefault();\n        event.stopPropagation();\n        if (this.form.valid) {\n            this.submit.emit(this.form.getRawValue());\n        } else {\n            this.validateAllFormFields(this.form);\n        }\n    }\n\n    private updateForm() {\n        const fields = this.legacyFields;\n        Object.keys(this.form.controls)\n            .filter((key) => {\n                return !fields.map((field) => field.name).includes(key);\n            })\n            .forEach((key) => {\n                this.form.removeControl(key);\n            });\n\n        fields\n            .forEach((field) => {\n                if (field.type === EnumType.lineBreak) {\n                    return;\n                }\n\n                if (this.form.controls[field.name]) {\n                    const control = this.updateControl(field, this.form.controls[field.name]);\n                    this.form.setControl(field.name, control, { emitEvent: false });\n                } else {\n                    const control = this.createControl(field);\n                    if (control) {\n                        this.form.addControl(field.name, control);\n                    }\n                }\n            });\n    }\n\n    private updateControl(field: IKlesFieldConfig, control: AbstractControl): AbstractControl {\n        if (field.type === EnumType.array) {\n            const array = control as FormArray;\n            /*TODO*/\n            return array;\n        } else if (field.type === EnumType.group) {\n            const group = control as FormGroup;\n            if (field.collections && Array.isArray(field.collections)) {\n                field.collections.forEach((subfield) => {\n                    const existingControl = group.controls[subfield.name];\n                    const updatedControl = existingControl ? this.updateControl(subfield, existingControl) : this.createControl(subfield);\n\n                    if (updatedControl) {\n                        group.setControl(subfield.name, updatedControl, { emitEvent: false });\n                    }\n                });\n            }\n            return group;\n        } else {\n            return control;\n        }\n    }\n\n    private createControl(field: IKlesFieldConfig): AbstractControl | null {\n        const mapping = field.type\n            ? componentMapper.find((candidate) => candidate.type === field.type)\n            : componentMapper.find((candidate) => candidate.component === field.component);\n\n        return mapping ? mapping.factory(field, this.ref) : klesFieldControlFactory(field, this.ref);\n    }\n\n    private createUiState(field: IKlesFieldConfig): AbstractUiState {\n        const mapping = field.type\n            ? componentMapper.find((candidate) => candidate.type === field.type)\n            : componentMapper.find((candidate) => candidate.component === field.component);\n\n        return mapping?.ui(field) ?? klesFieldUiFactory(field);\n    }\n\n    private createForm() {\n        const group = this.fb.group({});\n\n        this.legacyFields.forEach((field) => {\n            const control = this.createControl(field);\n            if (control) {\n                group.addControl(field.name, control);\n            }\n        });\n\n        group.setValidators(this.validators.map((v) => v.validator));\n        group.setAsyncValidators(this.asyncValidators.map((v) => v.validator));\n\n        return group;\n    }\n\n    private validateAllFormFields(formGroup: UntypedFormGroup) {\n        Object.keys(formGroup.controls).forEach((field) => {\n            const control = formGroup.get(field);\n            control?.markAsTouched({ onlySelf: true });\n        });\n    }\n\n    private createUi() {\n        const uiGroup = new GroupUiState();\n\n        this.legacyFields.forEach((field) => {\n            const uiState = this.createUiState(field);\n            if (uiState) {\n                uiGroup.addUiState(field.name, uiState);\n            }\n        });\n\n        return uiGroup;\n    }\n\n    private normalizeColumns(value: number | undefined): number {\n        if (value == null) return 12;\n        const normalized = Number.isFinite(value) ? Math.min(64, Math.max(1, Math.round(value))) : 12;\n        const warning = `[KlesDynamicForm] columns=${value} is invalid; using ${normalized}.`;\n        if (isDevMode() && normalized !== value && !this.layoutWarnings.has(warning)) {\n            this.layoutWarnings.add(warning);\n            console.warn(warning);\n        }\n        return normalized;\n    }\n}\n","import { Directive, Input, OnInit, ViewContainerRef, ComponentRef, OnChanges, SimpleChanges, Injector, OnDestroy } from '@angular/core';\nimport { IKlesFieldConfig } from '../interfaces/field.config.interface';\nimport { FIELD } from '../token';\nimport { IKlesComponent, KlesComponentType } from '../interfaces/component.interface';\n\n@Directive({\n    selector: '[klesComponent]',\n    standalone: true,\n})\nexport class KlesComponentDirective<TValue = unknown> implements OnInit, OnChanges, OnDestroy {\n    @Input({ required: true }) component!: KlesComponentType<TValue>;\n    @Input({ required: true }) value!: TValue;\n    @Input({ required: true }) field!: IKlesFieldConfig;\n\n    componentRef?: ComponentRef<IKlesComponent<TValue>>;\n\n    constructor(private container: ViewContainerRef) {}\n\n    ngOnInit() {\n        this.buildComponent();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        const componentChanged = changes['component'] && !changes['component'].isFirstChange();\n        const fieldChanged = changes['field'] && !changes['field'].isFirstChange();\n\n        if (componentChanged || fieldChanged) {\n            this.buildComponent();\n            return;\n        }\n\n        if (changes['value'] && !changes['value'].isFirstChange()) {\n            this.componentRef?.setInput('value', this.value);\n        }\n    }\n\n    ngOnDestroy(): void {\n        this.componentRef?.destroy();\n    }\n\n    private buildComponent(): void {\n        this.componentRef?.destroy();\n\n        const injector = Injector.create({\n            providers: [\n                ...(this.field.providers ?? []),\n                {\n                    provide: FIELD,\n                    useValue: this.field,\n                },\n            ],\n            parent: this.container.injector,\n        });\n\n        this.componentRef = this.container.createComponent(this.component, { injector });\n        this.componentRef.setInput('value', this.value);\n    }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatListModule } from '@angular/material/list';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { CdkTableModule } from '@angular/cdk/table';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatTreeModule } from '@angular/material/tree';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { PortalModule } from '@angular/cdk/portal';\n\n\n@NgModule({\n    imports: [\n        CommonModule,\n        MatSliderModule,\n        MatButtonModule,\n        MatToolbarModule,\n        MatIconModule,\n        MatSidenavModule,\n        MatBadgeModule,\n        MatListModule,\n        MatGridListModule,\n        MatFormFieldModule,\n        MatInputModule,\n        MatSelectModule,\n        MatRadioModule,\n        MatDatepickerModule,\n        MatChipsModule,\n        MatTooltipModule,\n        MatTableModule,\n        MatPaginatorModule,\n        MatCardModule,\n        MatMenuModule,\n        MatTabsModule,\n        CdkTableModule,\n        MatProgressSpinnerModule,\n        MatCheckboxModule,\n        MatDialogModule,\n        MatAutocompleteModule,\n        MatProgressBarModule,\n        MatSortModule,\n        MatExpansionModule,\n        MatNativeDateModule,\n        MatSnackBarModule,\n        MatTreeModule,\n        MatSliderModule,\n        MatSlideToggleModule,\n        MatButtonToggleModule,\n        PortalModule\n    ],\n\n    exports: [\n        MatButtonModule,\n        MatToolbarModule,\n        MatIconModule,\n        MatSidenavModule,\n        MatBadgeModule,\n        MatListModule,\n        MatGridListModule,\n        MatInputModule,\n        MatFormFieldModule,\n        MatSelectModule,\n        MatRadioModule,\n        MatDatepickerModule,\n        MatChipsModule,\n        MatTooltipModule,\n        MatTableModule,\n        MatPaginatorModule,\n        MatCardModule,\n        MatMenuModule,\n        MatTabsModule,\n        CdkTableModule,\n        MatProgressSpinnerModule,\n        MatCheckboxModule,\n        MatDialogModule,\n        MatAutocompleteModule,\n        MatProgressBarModule,\n        MatSortModule,\n        MatExpansionModule,\n        MatNativeDateModule,\n        MatSnackBarModule,\n        MatTreeModule,\n        MatSliderModule,\n        MatSlideToggleModule,\n        ScrollingModule,\n        CdkScrollable,\n        MatButtonToggleModule,\n        PortalModule\n    ],\n    providers: [\n        MatDatepickerModule,\n        MatDialogModule\n    ]\n})\n\nexport class MaterialModule { }\n","import { Directive, ElementRef, inject } from '@angular/core';\n\n@Directive({\n    selector: '[klesFocusTarget]',\n    standalone: true,\n})\nexport class KlesFocusTargetDirective {\n    private readonly element = inject<ElementRef<HTMLElement>>(ElementRef);\n\n    focus(): void {\n        this.element.nativeElement.focus();\n    }\n}\n","import { AfterViewInit, Directive, HostBinding, OnDestroy, OnInit, Signal, ViewContainerRef, afterNextRender, computed, inject, viewChild } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { IKlesField } from '../interfaces/field.interface';\nimport type { IKlesFieldConfig, IKlesFieldUi } from '../interfaces/field.config.interface';\nimport { FIELD, GROUP, SIBLING_FIELDS, GROUP_UI, FIELD_CONTEXT } from '../token';\nimport { FormGroup } from '@angular/forms';\nimport { GroupUiState } from '../ui/ui-state/group-ui-state';\nimport { ThemePalette } from '@angular/material/core';\nimport { KlesFocusTargetDirective } from '../directive/focus-target.directive';\n\n@Directive()\nexport abstract class KlesFieldAbstract<TContext = unknown> implements IKlesField, OnInit, AfterViewInit, OnDestroy {\n    public readonly field = inject<IKlesFieldConfig>(FIELD);\n    public readonly group = inject<FormGroup<any>>(GROUP);\n    public readonly siblingFields = inject<IKlesFieldConfig[]>(SIBLING_FIELDS);\n    public readonly ui = inject<GroupUiState>(GROUP_UI, { optional: true });\n    public readonly context = inject(FIELD_CONTEXT, { optional: true }) as Signal<TContext | null> | null;\n\n    protected readonly fieldUi = computed(() => this.ui?.get(this.field.name)?.value());\n\n    protected readonly resolvedFieldUi = computed<IKlesFieldUi>(() => {\n        const fieldUi = this.fieldUi() ?? {};\n\n        const resolvedUi =\n            this.field.resolveUi?.({\n                context: this.context?.() ?? null,\n                field: this.field,\n                group: this.group,\n                siblingFields: this.siblingFields,\n            }) ?? {};\n\n        return {\n            ...fieldUi,\n            ...resolvedUi,\n        };\n    });\n\n    public readonly appearance = computed(() => this.resolvedFieldUi().appearance ?? 'fill');\n    public readonly inputType = computed(() => this.resolvedFieldUi().inputType ?? 'text');\n    public readonly min = computed(() => this.resolvedFieldUi()?.min);\n    public readonly max = computed(() => this.resolvedFieldUi()?.max);\n    public readonly maxLength = computed(() => this.resolvedFieldUi()?.maxLength ?? 524288);\n    public readonly step = computed(() => this.resolvedFieldUi()?.step);\n    public readonly ngClass = computed(() => this.resolvedFieldUi()?.ngClass);\n    public readonly ngStyle = computed(() => this.resolvedFieldUi()?.ngStyle);\n    public readonly indeterminate = computed(() => this.resolvedFieldUi()?.indeterminate ?? false);\n    public readonly color = computed<Exclude<ThemePalette, undefined>>(() => this.resolvedFieldUi().color ?? 'primary');\n    public readonly icon = computed(() => this.resolvedFieldUi().icon ?? '');\n    public readonly iconSvg = computed(() => this.resolvedFieldUi().iconSvg ?? '');\n    public readonly buttonAppearance = computed(() => this.resolvedFieldUi().buttonAppearance ?? 'text');\n    public readonly label = computed(() => this.resolvedFieldUi().label ?? this.field.label ?? '');\n    public readonly hint = computed(() => this.resolvedFieldUi()?.hint ?? this.field.hint);\n    public readonly placeholder = computed(() => this.resolvedFieldUi()?.placeholder ?? this.field.placeholder);\n    public readonly tooltip = computed(() => this.resolvedFieldUi()?.tooltip ?? this.field.tooltip);\n    public readonly imageUrl = computed(() => this.resolvedFieldUi()?.imageUrl);\n    public readonly imageAlt = computed(() => this.resolvedFieldUi()?.imageAlt ?? this.label());\n\n    protected readonly viewRef = inject(ViewContainerRef);\n    protected readonly focusTarget = viewChild(KlesFocusTargetDirective);\n\n    @HostBinding('attr.klesDirective') directive: any;\n\n    protected _onDestroy = new Subject<void>();\n\n    constructor() {\n        if (this.field.directive) {\n            this.directive = new this.field.directive(this.viewRef, this);\n        }\n\n        afterNextRender(() => {\n            if (this.field.autofocus) {\n                this.focus();\n            }\n        });\n    }\n\n    ngOnInit(): void {\n        if (this.field.valueChanges) {\n            this.field.valueChanges(this.field, this.group, this.siblingFields);\n        }\n\n        this.group.controls[this.field.name]?.valueChanges.pipe(takeUntil(this._onDestroy)).subscribe((val) => {\n            if (this.field.valueChanges) {\n                this.field.valueChanges(this.field, this.group, this.siblingFields, val);\n            }\n        });\n\n        if (this.directive) {\n            this.directive.ngOnInit();\n        }\n    }\n\n    ngAfterViewInit(): void {\n        if (this.directive && this.directive.ngAfterViewInit) {\n            this.directive?.ngAfterViewInit();\n        }\n\n    }\n\n    ngOnDestroy(): void {\n        this.directive?.ngOnDestroy();\n        this._onDestroy.next();\n        this._onDestroy.complete();\n    }\n\n    applyPipeTransform() {\n        if (this.group && this.field) {\n            const control = this.group.controls[this.field.name];\n            if (control) {\n                const val = this.group.controls[this.field.name].value;\n                if (this.field.pipeTransform) {\n                    this.field.pipeTransform.forEach((p) => {\n                        let pipeVal = control.value;\n                        if (p.options) {\n                            p.options.forEach((opt) => {\n                                pipeVal = p.pipe.transform(val, opt);\n                            });\n                        } else {\n                            pipeVal = p.pipe.transform(val);\n                        }\n                        control.patchValue(pipeVal, { onlySelf: true, emitEvent: false });\n                    });\n                }\n            }\n        }\n    }\n\n    isPending() {\n        return this.group.controls[this.field.name].pending || this.field.pending;\n    }\n\n    onFocus() {\n        if (this.field?.onFocus) {\n            this.field.onFocus(this.field, this.group);\n        }\n    }\n\n    onBlur() {\n        if (this.field?.onBlur) {\n            this.field.onBlur(this.field, this.group);\n        }\n    }\n\n    protected focus(): void {\n        this.focusTarget()?.focus();\n    }\n\n    public triggerAction(actionId: string, originalEvent: Event, value?: unknown): void {\n        originalEvent.stopPropagation();\n\n        this.field.onAction?.({\n            actionId,\n            value,\n            context: this.context?.() ?? null,\n            field: this.field,\n            group: this.group,\n            originalEvent,\n        });\n    }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { MatInputModule } from '@angular/material/input';\nimport { KlesFocusTargetDirective } from '../directive/focus-target.directive';\n\n@Component({\n    selector: 'kles-form-label',\n    template: `\n        <div [formGroup]=\"group\">\n            <input klesFocusTarget matInput [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\" [ngStyle]=\"{ color: 'inherit' }\" [formControlName]=\"field.name\" [placeholder]=\"placeholder()\" [type]=\"inputType()\" />\n        </div>\n    `,\n    standalone: true,\n    imports: [CommonModule, ReactiveFormsModule, MatTooltip, MatInputModule, KlesFocusTargetDirective],\n})\nexport class KlesFormLabelComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n    constructor() {\n        super();\n        this.group.controls[this.field.name].disable({ emitEvent: false });\n    }\n\n    ngOnInit() {\n        super.ngOnInit();\n    }\n\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n}\n","import { AfterViewInit, Component, computed, inject, input, signal } from '@angular/core';\nimport { AsyncValidatorFn, ValidatorFn } from '@angular/forms';\nimport { MatFormField, MatFormFieldControl } from '@angular/material/form-field';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { of, startWith, switchMap } from 'rxjs';\n\nimport { IKlesValidator } from '../interfaces/validator.interface';\nimport { flattenValidators } from '../utils/validation.util';\n\n@Component({\n    selector: '[matErrorMessage]',\n    template: `\n        @if (errors(); as errors) {\n            @for (validation of validationsKeys(); track validation.name) {\n                @if (errors[validation.name] && validation.message) {\n                    {{ validation.message }}\n                }\n            }\n\n            @for (validation of asyncValidationsKeys(); track validation.name) {\n                @if (errors[validation.name] && validation.message) {\n                    {{ validation.message }}\n                }\n            }\n        }\n    `,\n    standalone: true,\n    styles: [\n        `\n            :host {\n                overflow-wrap: break-word;\n            }\n        `,\n    ],\n})\nexport class MatErrorMessageDirective implements AfterViewInit {\n    readonly validations = input<IKlesValidator<ValidatorFn>[] | undefined>();\n\n    readonly asyncValidations = input<IKlesValidator<AsyncValidatorFn>[] | undefined>();\n\n    readonly validationsKeys = computed(() => flattenValidators<ValidatorFn>(this.validations() ?? []));\n\n    readonly asyncValidationsKeys = computed(() => flattenValidators<AsyncValidatorFn>(this.asyncValidations() ?? []));\n\n    private readonly formField = inject(MatFormField);\n\n    private readonly inputRef = signal<MatFormFieldControl<unknown> | undefined>(undefined);\n\n    private readonly controlStatus = toSignal(\n        toObservable(this.inputRef).pipe(\n            switchMap((control) => {\n                const ngControl = control?.ngControl;\n\n                if (!ngControl) {\n                    return of(null);\n                }\n\n                return ngControl.statusChanges?.pipe(startWith(ngControl.status)) ?? of(ngControl.status);\n            }),\n        ),\n        {\n            initialValue: null,\n        },\n    );\n\n    readonly errors = computed(() => {\n        // Force la dépendance réactive aux changements de statut\n        // du FormControl.\n        this.controlStatus();\n\n        return this.inputRef()?.ngControl?.errors ?? null;\n    });\n\n    ngAfterViewInit(): void {\n        this.inputRef.set(this.formField._control);\n    }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class KlesDynamicFormIntl {\n    loading = 'Loading';\n    selectAll = 'Select all';\n    clearSearch = 'Clear';\n    search = 'Search';\n    add = 'Add';\n    delete = 'Delete';\n    copy = 'Copied value';\n    empty = 'No items';\n    imageUploadChange = 'Change image';\n    imageUploadDelete = 'Delete';\n    imageUploadInvalidType = 'Unsupported image format.';\n    imageUploadMaxSize = 'The image exceeds the maximum allowed size.';\n}\n","import { KlesFieldAbstract } from './field.abstract';\nimport { OnInit, Component, OnDestroy, signal, ViewContainerRef, computed, inject } from '@angular/core';\nimport { combineLatest, concat, Observable, of, Subject } from 'rxjs';\nimport { startWith, map, switchMap, distinctUntilChanged, filter } from 'rxjs/operators';\nimport { EnumType } from '../enums/type.enum';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { MatError, MatFormFieldModule } from '@angular/material/form-field';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatErrorMessageDirective } from '../directive/mat-error-message.directive';\nimport { KlesComponentDirective } from '../directive/dynamic-component.directive';\nimport { KlesDynamicFormIntl } from '../dynamic-form-intl';\nimport { MatIconModule } from '@angular/material/icon';\nimport { KlesFocusTargetDirective } from '../directive/focus-target.directive';\n\n@FieldMapper({ type: EnumType.input })\n@Component({\n    selector: 'kles-form-input',\n    template: `\n        <mat-form-field [formGroup]=\"group\" [color]=\"color()\" [subscriptSizing]=\"field.subscriptSizing ?? 'fixed'\" class=\"form-element\" [appearance]=\"appearance()\" class=\"field-bottom\">\n            @if (label()) {\n                <mat-label>{{ label() }}</mat-label>\n            }\n            @if (icon()) {\n                <mat-icon matPrefix>{{ icon() }}</mat-icon>\n            }\n\n            @if (field.autocomplete) {\n                <input\n                    klesFocusTarget\n                    matInput\n                    [matTooltip]=\"tooltip()\"\n                    [attr.id]=\"field.id\"\n                    [ngClass]=\"ngClass()\"\n                    [formControlName]=\"field.name\"\n                    [placeholder]=\"placeholder()\"\n                    [type]=\"inputType()\"\n                    [maxLength]=\"maxLength()\"\n                    [min]=\"min()\"\n                    [max]=\"max()\"\n                    [step]=\"step()\"\n                    [matAutocomplete]=\"auto\"\n                    (focus)=\"onFocus()\"\n                    (blur)=\"onBlur()\"\n                />\n\n                <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayFn.bind(this)\" [panelWidth]=\"field.panelWidth ?? 'auto'\">\n                    @if (filteredOption$ | async; as filteredOption) {\n                        @if (filteredOption.loading) {\n                            <mat-option disabled>\n                                <div class=\"loadingSelect\">\n                                    {{ intl.loading }}...\n                                    <mat-spinner class=\"spinner\" diameter=\"20\"></mat-spinner>\n                                </div>\n                            </mat-option>\n                        } @else {\n                            @if (!field.autocompleteComponent) {\n                                @for (option of filteredOption.options; track option) {\n                                    <mat-option [value]=\"option\">\n                                        {{ field.property ? option[field.property] : option }}\n                                    </mat-option>\n                                }\n                            } @else {\n                                @for (option of filteredOption.options; track option) {\n                                    <mat-option [value]=\"option\">\n                                        <ng-container klesComponent [component]=\"field.autocompleteComponent\" [value]=\"option\" [field]=\"field\"> </ng-container>\n                                    </mat-option>\n                                }\n                            }\n                        }\n                    }\n                </mat-autocomplete>\n            } @else {\n                <input\n                    klesFocusTarget\n                    matInput\n                    [matTooltip]=\"tooltip()\"\n                    [attr.id]=\"field.id\"\n                    [ngClass]=\"ngClass()\"\n                    [formControlName]=\"field.name\"\n                    [placeholder]=\"placeholder()\"\n                    [type]=\"inputType()\"\n                    [maxLength]=\"maxLength()\"\n                    [min]=\"min()\"\n                    [max]=\"max()\"\n                    [step]=\"step()\"\n                    (focus)=\"onFocus()\"\n                    (blur)=\"onBlur()\"\n                />\n            }\n            @if (hint()) {\n                <mat-hint>{{ hint() }}</mat-hint>\n            }\n            @if (field.subComponents || field.clearable || isPending()) {\n                <div matSuffix class=\"suffix\">\n                    @if (isPending()) {\n                        <mat-spinner mode=\"indeterminate\" diameter=\"21\"></mat-spinner>\n                    }\n                    @if (field.subComponents || field.clearable) {\n                        <ng-content></ng-content>\n                    }\n                </div>\n            }\n\n            <mat-error matErrorMessage [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\"></mat-error>\n        </mat-form-field>\n    `,\n    styles: ['mat-form-field {width: calc(100%)}'],\n    styleUrls: ['../styles/mat-suffix.style.scss', '../styles/mat-field-bottom.style.scss', '../styles/loading-select.style.scss'],\n    standalone: true,\n    imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, MatAutocompleteModule, MatTooltipModule, MatProgressSpinnerModule, MatOptionModule, MatError, MatErrorMessageDirective, KlesComponentDirective, MatIconModule, KlesFocusTargetDirective],\n})\nexport class KlesFormInputComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n    filteredOption$!: Observable<{ loading: boolean; options: any[] }>;\n    options$!: Observable<{ loading: boolean; options: any[] }>;\n    private isFocused = new Subject<boolean>();\n    isLoading = signal(false);\n\n    public intl = inject(KlesDynamicFormIntl);\n\n    constructor() {\n        super();\n        if (this.maxLength() === undefined) {\n            this.ui?.get(this.field.name)?.patchValue({ maxLength: 524288 }); // Max default input W3C\n        }\n    }\n\n    ngOnInit(): void {\n        if (this.field.lazy) {\n            this.options$ = this.isFocused.pipe(\n                distinctUntilChanged(),\n                filter((isFocused) => isFocused),\n                switchMap((isFocused) => {\n                    if (isFocused) {\n                        let obs$: Observable<any[]>;\n                        if (this.field.options instanceof Observable) {\n                            obs$ = this.field.options;\n                        } else if (this.field.options instanceof Function) {\n                            obs$ = this.field.options();\n                        } else {\n                            obs$ = of(this.field.options ?? []);\n                        }\n                        return concat(\n                            of({ loading: true, options: [] }),\n                            obs$.pipe(\n                                map((options: any[]) => {\n                                    return { loading: false, options };\n                                }),\n                            ),\n                        );\n                    } else {\n                        return of({ loading: false, options: [] });\n                    }\n                }),\n            );\n        } else {\n            if (this.field.options instanceof Observable) {\n                this.options$ = concat(\n                    of({ loading: true, options: [] }),\n                    this.field.options.pipe(\n                        map((options: any[]) => {\n                            return { loading: false, options };\n                        }),\n                    ),\n                );\n            } else if (this.field.options instanceof Function) {\n                this.options$ = concat(\n                    of({ loading: true, options: [] }),\n                    this.field.options().pipe(\n                        map((options: any[]) => {\n                            return { loading: false, options };\n                        }),\n                    ),\n                );\n            } else {\n                this.options$ = of({ loading: false, options: this.field.options ?? [] });\n            }\n        }\n\n        this.filteredOption$ = concat(\n            combineLatest([this.group.get(this.field.name)?.valueChanges.pipe(startWith('')) ?? of(''), this.options$]).pipe(\n                map(([data, response]) => {\n                    if (response.loading) {\n                        return response;\n                    } else {\n                        return { loading: false, options: data && response.options ? this.filterData(data, response.options) : response.options };\n                    }\n                }),\n            ),\n        );\n\n        super.ngOnInit();\n    }\n\n    onFocus() {\n        if (this.field.autocomplete && this.field.lazy) {\n            this.isFocused.next(true);\n        }\n\n        super.onFocus();\n    }\n\n    private filterData(value: any, options: any[]): any[] {\n        let filterValue;\n        const property = this.field.property;\n\n        if (typeof value === 'string' && Object.prototype.toString.call(value) === '[object String]') {\n            filterValue = value.toLowerCase();\n        } else if (property) {\n            filterValue = value[property]?.toString().toLowerCase() ?? '';\n        } else {\n            filterValue = value?.toString().toLowerCase() ?? '';\n        }\n\n        if (property) {\n            return options.filter((option) => option[property]?.toString().toLowerCase().indexOf(filterValue) === 0);\n        }\n        return options.filter((option) => option?.toString().toLowerCase().indexOf(filterValue) === 0);\n    }\n\n    displayFn(value: any) {\n        if (this.field.displayWith) {\n            return this.field.displayWith(value);\n        } else {\n            if (value && this.field && this.field.property) {\n                return value[this.field.property] ? value[this.field.property] : '';\n            }\n            return value ? value : '';\n        }\n    }\n\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { MatError, MatFormField, MatFormFieldModule, MatHint, MatLabel } from '@angular/material/form-field';\nimport { MatErrorMessageDirective } from '../directive/mat-error-message.directive';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';\nimport { MatInput, MatInputModule } from '@angular/material/input';\nimport { KlesFocusTargetDirective } from '../directive/focus-target.directive';\n\n@Component({\n    selector: 'kles-form-datepicker',\n    template: `\n        <mat-form-field [subscriptSizing]=\"field.subscriptSizing ?? 'fixed'\" class=\"margin-top\" [color]=\"color()\" [formGroup]=\"group\" [appearance]=\"appearance()\">\n            @if (label()) {\n                <mat-label>{{ label() }}</mat-label>\n            }\n            <input klesFocusTarget matInput [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\" [matDatepicker]=\"picker\" [formControlName]=\"field.name\" [placeholder]=\"placeholder()\" [min]=\"min()\" [max]=\"max()\" />\n            <div matSuffix class=\"suffix\">\n                <mat-datepicker-toggle [for]=\"picker\"></mat-datepicker-toggle>\n                <ng-content></ng-content>\n            </div>\n            <mat-datepicker #picker></mat-datepicker>\n            @if (hint()) {\n                <mat-hint>{{ hint() }}</mat-hint>\n            }\n\n            <mat-error matErrorMessage [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\"></mat-error>\n        </mat-form-field>\n    `,\n    styles: ['mat-form-field {width: calc(100%)}', '.suffix { display: flex; flex-direction: row}'],\n    standalone: true,\n    imports: [CommonModule, MatErrorMessageDirective, MatFormFieldModule, MatInputModule, MatTooltipModule, MatError, MatHint, MatDatepickerModule, ReactiveFormsModule, MatTooltip, MatLabel, MatFormField, MatInput, KlesFocusTargetDirective],\n})\nexport class KlesFormDateComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n    ngOnInit() {\n        super.ngOnInit();\n    }\n\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n}\n","import { Component, OnDestroy, OnInit, viewChildren } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { Observable, of } from 'rxjs';\nimport { CommonModule } from '@angular/common';\nimport { MatRadioButton, MatRadioGroup } from '@angular/material/radio';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { KlesFocusTargetDirective } from '../directive/focus-target.directive';\n\n@Component({\n    selector: 'kles-form-radiobutton',\n    template: `\n    <div [formGroup]=\"group\">\n        <label class=\"radio-label-padding\">{{label()}}</label>\n        <mat-radio-group klesFocusTarget [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\" [formControlName]=\"field.name\">\n            @for (item of options$ | async; track item) {\n                <mat-radio-button [value]=\"item\">{{item}}</mat-radio-button>\n            }\n        </mat-radio-group>\n    </div>\n`,\n    styles: [],\n    standalone: true,\n    imports: [CommonModule, MatRadioButton, MatRadioGroup, ReactiveFormsModule, MatTooltip, KlesFocusTargetDirective],\n})\nexport class KlesFormRadioComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n    private readonly radioButtons = viewChildren(MatRadioButton);\n\n    protected override focus(): void {\n        this.radioButtons().at(0)?.focus();\n    }\n\n    options$: Observable<any[]> = of([]);\n\n    ngOnInit() {\n        super.ngOnInit();\n\n        if (this.field.options instanceof Observable) {\n            this.options$ = this.field.options;\n        }\n        else if (this.field.options instanceof Function) {\n            this.options$ = this.field.options();\n        }\n        else {\n            this.options$ = of(this.field.options ?? []);\n        }\n    }\n\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n}\n","import { Component, computed, OnDestroy, OnInit, viewChild } from '@angular/core';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { EnumType } from '../enums/type.enum';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { KlesFocusTargetDirective } from '../directive/focus-target.directive';\n\n@FieldMapper({ type: EnumType.checkbox })\n@Component({\n    selector: 'kles-form-checkbox',\n    template: `\n        <div [formGroup]=\"group\">\n            <mat-checkbox klesFocusTarget [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\" [indeterminate]=\"indeterminate()\" (change)=\"onChange($event)\" [color]=\"color()\" [formControlName]=\"field.name\">{{ label() }}</mat-checkbox>\n        </div>\n    `,\n    styles: [],\n    standalone: true,\n    imports: [CommonModule, ReactiveFormsModule, MatCheckbox, MatTooltip, KlesFocusTargetDirective],\n})\nexport class KlesFormCheckboxComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n    private readonly checkbox = viewChild(MatCheckbox);\n\n    protected override focus(): void {\n        this.checkbox()?.focus();\n    }\n\n    ngOnInit() {\n        super.ngOnInit();\n    }\n\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n\n    onChange(e: MatCheckboxChange) {\n        this.ui?.get(this.field.name)?.patchValue({ indeterminate: false });\n    }\n}\n","import { AbstractControl, FormControl, UntypedFormGroup } from '@angular/forms';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { IKlesFieldConfig } from '../interfaces/field.config.interface';\nimport { componentMapper } from '../decorators/component.decorator';\nimport { klesFieldControlFactory } from './field.factory';\nimport { ChangeDetectorRef } from '@angular/core';\n\nexport function createKlesFormArrayGroup(field: IKlesFieldConfig, ref?: ChangeDetectorRef, value?: Record<string, any>): UntypedFormGroup {\n    const line: Record<string, any> = {\n        ...(value ?? {}),\n        _id: value?._id ?? uuidv4(),\n    };\n\n    const group = new UntypedFormGroup({\n        _id: new FormControl(line._id),\n    });\n\n    for (const subfield of field.collections ?? []) {\n        const data = line[subfield.name];\n\n        const childField: IKlesFieldConfig = {\n            ...subfield,\n            ...(data !== undefined ? { value: data } : {}),\n        };\n\n        let control: AbstractControl;\n\n        if (subfield.type) {\n            control = componentMapper.find((c) => c.type === subfield.type)?.factory(childField, ref) ?? klesFieldControlFactory(childField, ref);\n        } else {\n            control = componentMapper.find((c) => c.component === subfield.component)?.factory(childField, ref) ?? klesFieldControlFactory(childField, ref);\n        }\n\n        group.addControl(subfield.name, control);\n    }\n\n    return group;\n}\n","import { AbstractControl, FormArray } from '@angular/forms';\nimport { KlesFormControl } from './default.control';\nimport { createKlesFormArrayGroup } from '../factories/form-array-group.factory';\n\nexport class KlesFormArray extends KlesFormControl {\n    public create(): AbstractControl<any, any> {\n        const array = new FormArray<AbstractControl>([], {\n            validators: this.bindValidations(this.field.validations || []),\n            asyncValidators: this.bindAsyncValidations(this.field.asyncValidations || []),\n            updateOn: this.field.updateOn || 'change',\n        });\n\n        if (Array.isArray(this.field.value)) {\n            for (const value of this.field.value) {\n                array.push(createKlesFormArrayGroup(this.field, this.ref, value));\n            }\n        } else {\n            array.push(createKlesFormArrayGroup(this.field, this.ref));\n        }\n\n        if (this.field.disabled) {\n            array.disable();\n        }\n\n        return array;\n    }\n}\n","import { computed, Signal } from '@angular/core';\nimport { AbstractUiState } from './ui-state.abstract';\n\nexport class ArrayUiState<TItem extends AbstractUiState<any, any> = AbstractUiState<any, any>, TValue extends any[] = any[], TRawValue extends TValue = TValue> extends AbstractUiState<TValue, TRawValue> {\n    public states: TItem[] = [];\n\n    constructor(states?: TItem[]) {\n        super();\n        this.states = states ?? [];\n\n        this.states.forEach((state, index) => {\n            state.setParent(this, index);\n        });\n\n        this._value.set(this.states.map((state) => state.value()) as TValue);\n    }\n\n    public override setValue(value: TRawValue): void {\n        if (!Array.isArray(value)) {\n            return;\n        }\n        value.forEach((newValue: any, index: number) => {\n            this.at(index)?.setValue(newValue);\n        });\n\n        this._value.set(value);\n        this.notifyParent();\n    }\n\n    public override patchValue(value: Partial<TRawValue>): void {\n        if (value == null) {\n            return;\n        }\n\n        value.forEach((newValue, index) => {\n            const st = this.at(index);\n            if (st) {\n                st.patchValue(newValue);\n            }\n        });\n\n        const curr = this._value() ?? ([] as TValue[]);\n        const next = [...curr];\n\n        value.forEach((newValue, index) => {\n            next[index] = {\n                ...(next[index] ?? {}),\n                ...(newValue as any),\n            };\n        });\n\n        this._value.set(next as TValue);\n        this.notifyParent();\n    }\n\n    override childValueChanged(key: string | number, value: any): void {\n        const index = typeof key === 'number' ? key : Number(key);\n\n        if (!Number.isInteger(index) || index < 0) return;\n\n        const curr = this._value() ?? ([] as TValue[]);\n        const next = [...curr];\n\n        next[index] = value;\n\n        this._value.set(next as TValue);\n        this.notifyParent();\n    }\n\n    public at(index: number): AbstractUiState {\n        return this.states?.[index] ?? null;\n    }\n\n    public override _find(name: string | number): AbstractUiState | null {\n        const idx = typeof name === 'number' ? name : Number(name);\n        return Number.isFinite(idx) ? this.at(idx) : null;\n    }\n\n    public push(control: TItem | TItem[]): void {\n        const items = Array.isArray(control) ? control : [control];\n\n        if (items.length === 0) {\n            return;\n        }\n\n        for (const item of items) {\n            const index = this.states.length;\n\n            this.states.push(item);\n            item.setParent(this, index);\n        }\n\n        this._value.set(this.states.map((s) => s.value()) as TValue);\n        this.notifyParent();\n    }\n\n    public insert(index: number, state: TItem | TItem[]): void {\n        const items = Array.isArray(state) ? state : [state];\n\n        if (items.length === 0) {\n            return;\n        }\n\n        const safeIndex = Math.max(0, Math.min(index, this.states.length));\n\n        this.states.splice(safeIndex, 0, ...items);\n\n        for (let i = safeIndex; i < this.states.length; i++) {\n            this.states[i]?.setParent(this, i);\n        }\n\n        const curr = this._value() as any;\n        const next = [...curr];\n\n        next.splice(safeIndex, 0, ...items.map((item) => item.value()));\n\n        this._value.set(next as TValue);\n        this.notifyParent();\n    }\n\n    removeAt(index: number): void {\n        if (index < 0 || index >= this.states.length) return;\n        this.states.splice(index, 1);\n\n        this.states.forEach((state, i) => {\n            state.setParent(this, i);\n        });\n\n        const curr = this._value() ?? ([] as TValue[]);\n        const next = [...curr];\n\n        next.splice(index, 1);\n\n        this._value.set(next as TValue);\n        this.notifyParent();\n    }\n\n    clear(): void {\n        this.states.length = 0;\n        this._value.set([] as unknown as TValue);\n        this.notifyParent();\n    }\n}\n","import { componentMapper } from '../decorators/component.decorator';\nimport { klesFieldUiFactory } from '../factories/field.factory';\nimport { KlesFormUiControl } from './default.ui';\nimport { AbstractUiState } from './ui-state/ui-state.abstract';\nimport { GroupUiState } from './ui-state/group-ui-state';\nimport { ArrayUiState } from './ui-state/array-ui-state';\n\nexport class KlesFormUiArray extends KlesFormUiControl {\n    public create(): AbstractUiState<any, any> {\n        const array = new ArrayUiState();\n\n        if (this.field.value && Array.isArray(this.field.value)) {\n            if (this.field.collections && Array.isArray(this.field.collections)) {\n                this.field.value.forEach(() => {\n                    const group = new GroupUiState();\n                    this.field.collections?.forEach((subfield) => {\n                        let control;\n                        if (subfield.type) {\n                            control = componentMapper.find((c) => c.type === subfield.type)?.ui(subfield) || klesFieldUiFactory(subfield);\n                        } else {\n                            control = componentMapper.find((c) => c.component === subfield.component)?.ui(subfield) || klesFieldUiFactory(subfield);\n                        }\n                        group.addUiState(subfield.name, control);\n                    });\n                    array.push(group);\n                });\n            }\n        } else {\n            const group = new GroupUiState();\n            this.field.collections?.forEach((subfield) => {\n                let control;\n                if (subfield.type) {\n                    control = componentMapper.find((c) => c.type === subfield.type)?.ui(subfield) || klesFieldUiFactory(subfield);\n                } else {\n                    control = componentMapper.find((c) => c.component === subfield.component)?.ui(subfield) || klesFieldUiFactory(subfield);\n                }\n                group.addUiState(subfield.name, control);\n            });\n            array.push(group);\n        }\n\n        return array;\n    }\n}\n","import { componentMapper } from '../decorators/component.decorator';\nimport { klesFieldUiFactory } from '../factories/field.factory';\nimport { KlesFormUiControl } from './default.ui';\nimport { GroupUiState } from './ui-state/group-ui-state';\nimport { AbstractUiState } from './ui-state/ui-state.abstract';\n\nexport class KlesFormUiGroup extends KlesFormUiControl {\n    public create(): AbstractUiState<any, any> {\n        const subGroup = new GroupUiState();\n\n        if (this.field.collections && Array.isArray(this.field.collections)) {\n            this.field.collections.forEach((subfield) => {\n                let ui;\n\n                if (subfield.type) {\n                    ui =\n                        componentMapper.find((c) => c.type === subfield.type)?.ui({ ...subfield, value: subfield.value || this.field.value?.[subfield.name] }) ||\n                        klesFieldUiFactory({ ...subfield, value: subfield.value || this.field.value?.[subfield.name] });\n                } else {\n                    ui =\n                        componentMapper.find((c) => c.component === subfield.component)?.ui({ ...subfield, value: subfield.value || this.field.value?.[subfield.name] }) ||\n                        klesFieldUiFactory({ ...subfield, value: subfield.value || this.field.value?.[subfield.name] });\n                }\n\n                subGroup.addUiState(subfield.name, ui);\n            });\n        }\n        return subGroup;\n    }\n}\n","import { Component, inject, OnDestroy, OnInit, signal } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { ReactiveFormsModule, FormArray, FormGroup, AbstractControl } from '@angular/forms';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { KlesFormArray } from '../controls/array.control';\nimport { cloneDeep } from 'lodash';\nimport { IKlesFieldConfig } from '../interfaces/field.config.interface';\n\nimport { MatError } from '@angular/material/form-field';\nimport { MatIcon } from '@angular/material/icon';\nimport { KlesDynamicFieldDirective } from '../directive/dynamic-field.directive';\nimport { MatButtonModule, MatIconButton } from '@angular/material/button';\n\nimport { createKlesFormArrayGroup } from '../factories/form-array-group.factory';\nimport { KlesDynamicFormIntl } from '../dynamic-form-intl';\nimport { MatErrorFormDirective } from '../directive/mat-error-form.directive';\nimport { KlesFormUiArray } from '../ui/array.ui';\nimport { KlesFormUiGroup } from '../ui/group.ui';\nimport { ArrayUiState } from '../ui/ui-state/array-ui-state';\nimport { GroupUiState } from '../ui/ui-state/group-ui-state';\n\n@FieldMapper({ type: 'listfield', factory: (field) => new KlesFormArray(field).create(), ui: (field) => new KlesFormUiArray(field).create() })\n@Component({\n    selector: 'kles-form-listfield',\n    template: `\n        <div [formGroup]=\"group\" class=\"form-element list-field\">\n            <div class=\"list-field__header\">\n                @if (label()) {\n                    <span class=\"list-field__label\">\n                        {{ label() }}\n                    </span>\n                }\n\n                <button type=\"button\" matButton class=\"list-field__add\" (click)=\"addField()\">\n                    <mat-icon>add</mat-icon>\n                    {{ intl.add }}\n                </button>\n            </div>\n\n            <div class=\"list-field__content\" [formArrayName]=\"field.name\">\n                @for (subGroup of formArray.controls; track subGroup; let idx = $index) {\n                    <div class=\"list-field__row\">\n                        <div\n                            class=\"list-field__fields\"\n                            [class.list-field__fields--column]=\"fieldsDirection === 'column'\"\n                            [class.list-field__fields--row]=\"fieldsDirection === 'row'\"\n                            [class.list-field__fields--grid]=\"fieldsDirection === 'grid'\"\n                            [class.list-field__fields--inline-grid]=\"fieldsDirection === 'inline-grid'\"\n                            [class.list-field__fields--nowrap]=\"fieldsDirection === 'row' && field.wrap === false\"\n                        >\n                            @for (subfield of collections()[idx]; track subfield.name) {\n                                <div class=\"list-field__field\" [style.grid-column]=\"getGridColumn(subfield)\" [style.grid-row]=\"getGridRow(subfield)\">\n                                    <ng-container klesDynamicField [field]=\"subfield\" [group]=\"subGroup\" [siblingFields]=\"collections()[idx]\" [ui]=\"getRowUi(idx)\" [context]=\"context\" />\n                                </div>\n                            }\n                        </div>\n\n                        <button type=\"button\" matIconButton class=\"list-field__delete\" [attr.aria-label]=\"intl.delete\" (click)=\"deleteField(idx)\">\n                            <mat-icon>delete_outline</mat-icon>\n                        </button>\n                    </div>\n                }\n\n                @if (formArray.length === 0) {\n                    <div class=\"list-field__empty\">\n                        {{ intl.empty }}\n                    </div>\n                }\n            </div>\n\n            <div class=\"list-field__errors\">\n                <mat-error matErrorForm [form]=\"formArray\" [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\" />\n            </div>\n        </div>\n    `,\n    styles: [\n        `\n            :host {\n                display: block;\n                width: 100%;\n                min-width: 0;\n            }\n\n            .list-field {\n                display: flex;\n                flex-direction: column;\n                gap: 8px;\n\n                width: 100%;\n                min-width: 0;\n            }\n\n            /* Header */\n\n            .list-field__header {\n                display: flex;\n                align-items: center;\n                gap: 8px;\n\n                min-height: 36px;\n            }\n\n            .list-field__label {\n                min-width: 0;\n                font-weight: 500;\n            }\n\n            .list-field__add {\n                margin-left: auto;\n                flex-shrink: 0;\n            }\n\n            /* Content */\n\n            .list-field__content {\n                display: flex;\n                flex-direction: column;\n                gap: 10px;\n\n                width: 100%;\n                min-width: 0;\n            }\n\n            /* Une ligne du FormArray */\n\n            .list-field__row {\n                display: grid;\n                grid-template-columns: minmax(0, 1fr) auto;\n                align-items: start;\n                gap: 8px;\n\n                width: 100%;\n                min-width: 0;\n            }\n\n            /* Conteneur des fields */\n\n            .list-field__fields {\n                width: 100%;\n                min-width: 0;\n            }\n\n            /* direction: column */\n\n            .list-field__fields--column {\n                display: flex;\n                flex-direction: column;\n                gap: 10px;\n            }\n\n            .list-field__fields--column > .list-field__field {\n                width: 100%;\n            }\n\n            /* direction: row */\n\n            .list-field__fields--row {\n                display: flex;\n                flex-direction: row;\n                flex-wrap: wrap;\n                align-items: baseline;\n                gap: 10px;\n            }\n\n            .list-field__fields--row > .list-field__field {\n                flex: 1 1 0;\n                width: auto;\n                min-width: 0;\n            }\n\n            .list-field__fields--row.list-field__fields--nowrap {\n                flex-wrap: nowrap;\n            }\n\n            /* direction: grid OU présence d'un layout */\n\n            .list-field__fields--grid {\n                display: grid;\n                grid-template-columns: repeat(12, minmax(0, 1fr));\n                gap: 12px;\n            }\n\n            /* direction: inline-grid */\n\n            .list-field__fields--inline-grid {\n                display: inline-grid;\n                grid-template-columns: repeat(12, minmax(0, 1fr));\n                gap: 12px;\n            }\n\n            /* Field */\n\n            .list-field__field {\n                width: 100%;\n                min-width: 0;\n            }\n\n            /* Suppression */\n\n            .list-field__delete {\n                align-self: start;\n                margin-top: 4px;\n                flex-shrink: 0;\n            }\n\n            /* Liste vide */\n\n            .list-field__empty {\n                padding: 16px;\n                text-align: center;\n                opacity: 0.7;\n            }\n\n            /* Erreurs du FormArray */\n\n            .list-field__errors {\n                display: flex;\n                flex-direction: column;\n                gap: 4px;\n\n                min-width: 0;\n            }\n        `,\n    ],\n    standalone: true,\n    imports: [MatError, MatIcon, MatIconButton, KlesDynamicFieldDirective, ReactiveFormsModule, MatButtonModule, MatErrorFormDirective],\n})\nexport class KlesFormListFieldComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n    readonly intl = inject(KlesDynamicFormIntl);\n\n    formArray: FormArray<FormGroup<Record<string, AbstractControl>>>;\n    subUi!: ArrayUiState;\n    readonly collections = signal<IKlesFieldConfig[][]>([]);\n\n    constructor() {\n        super();\n        this.formArray = this.group.controls[this.field.name] as FormArray<FormGroup<Record<string, AbstractControl>>>;\n        this.collections.set(\n            this.formArray.controls.map(() => {\n                return cloneDeep(this.field.collections ?? []);\n            }),\n        );\n    }\n\n    ngOnInit(): void {\n        this.subUi = this.ui?.get(this.field.name) as ArrayUiState;\n        super.ngOnInit();\n    }\n\n    getRowUi(index: number): GroupUiState {\n        return this.subUi.at(index) as GroupUiState;\n    }\n\n    get hasLayout(): boolean {\n        return (this.field.collections ?? []).some((subfield) => subfield.layout != null);\n    }\n\n    get fieldsDirection(): 'column' | 'row' | 'grid' | 'inline-grid' {\n        if (this.hasLayout) {\n            return this.field.direction === 'inline-grid' ? 'inline-grid' : 'grid';\n        }\n\n        return this.field.direction ?? 'row';\n    }\n\n    deleteField(index: number): void {\n        this.subUi.removeAt(index);\n        this.formArray.removeAt(index);\n        this.collections.update((collections) => collections.filter((_, currentIndex) => currentIndex !== index));\n    }\n\n    addField(): void {\n        this.subUi.push(new KlesFormUiGroup({ ...this.field, value: undefined }).create());\n        this.formArray.push(createKlesFormArrayGroup(this.field));\n        this.collections.update((collections) => [...collections, cloneDeep(this.field.collections ?? [])]);\n    }\n\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n\n    getGridColumn(field: IKlesFieldConfig): string {\n        const colSpan = field.layout?.colSpan ?? 12;\n        const colStart = field.layout?.colStart;\n\n        if (colStart) {\n            return `${colStart} / span ${colSpan}`;\n        }\n\n        return `span ${colSpan}`;\n    }\n\n    getGridRow(field: IKlesFieldConfig): string | undefined {\n        const rowSpan = field.layout?.rowSpan;\n        const rowStart = field.layout?.rowStart;\n\n        if (rowStart && rowSpan) {\n            return `${rowStart} / span ${rowSpan}`;\n        }\n\n        if (rowStart) {\n            return `${rowStart}`;\n        }\n\n        if (rowSpan) {\n            return `span ${rowSpan}`;\n        }\n\n        return undefined;\n    }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { MaterialColorPickerTriggerComponent, parseColor, readableTextColor, toCssRgba } from '@3kles/kles-material-color-picker';\n\nimport { MatErrorMessageDirective } from '../directive/mat-error-message.directive';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { KlesFocusTargetDirective } from '../directive/focus-target.directive';\n\n@Component({\n    selector: 'kles-form-color',\n    standalone: true,\n    imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, MatTooltipModule, MatErrorMessageDirective, MaterialColorPickerTriggerComponent, KlesFocusTargetDirective],\n    template: `\n        <mat-form-field class=\"form-element\" [formGroup]=\"group\" [appearance]=\"appearance()\" [subscriptSizing]=\"field.subscriptSizing ?? 'fixed'\">\n            <input\n                klesFocusTarget\n                matInput\n                autocomplete=\"off\"\n                [matTooltip]=\"tooltip()\"\n                [attr.id]=\"field.id\"\n                [ngClass]=\"ngClass()\"\n                [placeholder]=\"placeholder()\"\n                [formControlName]=\"field.name\"\n                [style.background-color]=\"backgroundColor()\"\n                [style.color]=\"foregroundColor()\"\n            />\n\n            <div matSuffix class=\"suffix\">\n                <kles-material-color-picker-trigger\n                    [color]=\"currentColor()\"\n                    [outputFormat]=\"colorOption().format ?? 'hex8'\"\n                    [commitMode]=\"colorOption().commitMode ?? 'live'\"\n                    [alpha]=\"colorOption().alpha ?? true\"\n                    [eyeDropper]=\"colorOption().eyeDropper ?? true\"\n                    [saveOnOutside]=\"colorOption().saveOnOutside ?? true\"\n                    [fallbackColor]=\"colorOption().fallbackColor ?? '#000000ff'\"\n                    [presets]=\"colorOption().presets ?? []\"\n                    [position]=\"colorOption().position ?? 'auto'\"\n                    [positionOffset]=\"colorOption().positionOffset ?? 8\"\n                    [disabled]=\"pickerDisabled()\"\n                    (colorChange)=\"setColor($event)\"\n                />\n                @if (field.subComponents || field.clearable) {\n                    <ng-content />\n                }\n            </div>\n\n            <mat-error matErrorMessage [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\" />\n        </mat-form-field>\n    `,\n    styleUrls: ['../styles/mat-suffix.style.scss'],\n    styles: `\n        :host {\n            display: block;\n            width: 100%;\n        }\n\n        mat-form-field {\n            width: 100%;\n        }\n    `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class KlesFormColorComponent extends KlesFieldAbstract {\n    private readonly formControl = this.group.controls[this.field.name];\n\n    private readonly controlValue = toSignal(this.formControl.valueChanges, {\n        initialValue: this.formControl.value,\n    });\n\n    private readonly controlStatus = toSignal(this.formControl.statusChanges, {\n        initialValue: this.formControl.status,\n    });\n\n    readonly colorOption = computed(() => {\n        const dynamicField = this.ui?.get(this.field.name)?.value();\n\n        return dynamicField?.colorOption ?? this.field.colorOption ?? {};\n    });\n\n    readonly parsedColor = computed(() => {\n        return parseColor(this.controlValue());\n    });\n\n    readonly currentColor = computed(() => {\n        const value = this.controlValue();\n\n        if (typeof value === 'string' && this.parsedColor()) {\n            return value;\n        }\n\n        return this.colorOption().fallbackColor ?? '#000000ff';\n    });\n\n    readonly backgroundColor = computed(() => {\n        const color = this.parsedColor();\n\n        return color ? toCssRgba(color) : '#ffffff';\n    });\n\n    readonly foregroundColor = computed(() => {\n        const color = this.parsedColor();\n\n        return color ? readableTextColor(color) : '#000000';\n    });\n\n    readonly pickerDisabled = computed(() => {\n        return this.controlStatus() === 'DISABLED' || this.colorOption().disable === true;\n    });\n\n    setColor(value: string): void {\n        if (this.pickerDisabled()) {\n            return;\n        }\n\n        this.formControl.setValue(value);\n        this.formControl.markAsDirty();\n        this.formControl.markAsTouched();\n    }\n}\n","import { Component, computed, EventEmitter, HostListener, input, OnInit, Output, signal } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { MatButtonAppearance } from '@angular/material/button';\n\nexport interface IButton {\n    event?: string;\n    uiButton?: IUIButton;\n}\n\nexport interface IUIButton {\n    label?: string;\n    color?: string;\n    icon?: string;\n    iconSvg?: string;\n    disabled?: boolean;\n    class?: string;\n    type?: string;\n    accept?: string;\n    buttonAppearance?: MatButtonAppearance;\n}\n\n@Component({\n    template: '',\n    standalone: true,\n})\nexport abstract class KlesButtonBase<TButton extends IButton = IButton> implements OnInit, ControlValueAccessor {\n    readonly name = input('');\n    readonly label = input('');\n    readonly color = input('accent');\n    readonly icon = input('');\n    readonly iconSvg = input('');\n    readonly disabled = input(false);\n    readonly type = input<string | undefined>('button');\n    readonly classButton = input('');\n    readonly value = input<TButton>({} as TButton);\n    readonly tooltip = input<string>();\n    readonly buttonAppearance = input<MatButtonAppearance>('text');\n\n    protected readonly uiButtonState = signal<IUIButton | undefined>(undefined);\n    private readonly formDisabledState = signal<boolean | undefined>(undefined);\n    private readonly writtenValueState = signal<TButton | undefined>(undefined, { equal: () => false });\n\n    readonly effectiveLabel = computed(() => this.uiButtonState()?.label ?? this.label());\n    readonly effectiveColor = computed(() => this.uiButtonState()?.color ?? this.color());\n    readonly effectiveIcon = computed(() => this.uiButtonState()?.icon ?? this.icon());\n    readonly effectiveIconSvg = computed(() => this.uiButtonState()?.iconSvg ?? this.iconSvg());\n    readonly effectiveDisabled = computed(() => this.formDisabledState() ?? this.uiButtonState()?.disabled ?? this.disabled());\n    readonly effectiveType = computed(() => this.uiButtonState()?.type ?? (this.uiButtonState() ? 'submit' : this.type() || 'button'));\n    readonly effectiveClassButton = computed(() => this.uiButtonState()?.class ?? this.classButton());\n    readonly effectiveButtonAppearance = computed(() => this.uiButtonState()?.buttonAppearance ?? this.buttonAppearance());\n    readonly effectiveValue = computed(() => this.writtenValueState() ?? this.value());\n\n    @Output() action = new EventEmitter<MouseEvent>();\n\n    protected onChange: (value: TButton) => void = () => {};\n    protected onTouched: () => void = () => {};\n\n    ngOnInit(): void {}\n\n    click(event: MouseEvent) {\n        if (this.effectiveDisabled() || this.effectiveType() !== 'button') {\n            return;\n        }\n\n        const value = this.effectiveValue();\n        if (value) {\n            value.event = this.name();\n            this.writtenValueState.set(value);\n            this.onChange(value);\n        }\n\n        this.action.emit(event);\n    }\n\n    writeValue(value: TButton | null | undefined): void {\n        if (!value) {\n            value = { event: this.name() } as TButton;\n        }\n        if (!value.event) {\n            value.event = this.name();\n        }\n        this.uiButtonState.set(value.uiButton);\n        this.writtenValueState.set(value);\n    }\n\n    registerOnChange(fn: (value: TButton) => void): void {\n        this.onChange = fn;\n    }\n\n    registerOnTouched(fn: () => void): void {\n        this.onTouched = fn;\n    }\n\n    @HostListener('focusout')\n    protected markAsTouched(): void {\n        this.onTouched();\n    }\n\n    setDisabledState?(isDisabled: boolean): void {\n        this.formDisabledState.set(isDisabled);\n    }\n}\n","import { Component, OnInit, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { KlesButtonBase } from './button-control-base';\nimport { CommonModule } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { MatButton } from '@angular/material/button';\n\n@Component({\n    selector: 'kles-button',\n    template: `\n            <button [matButton]=\"effectiveButtonAppearance()\" [type]=\"effectiveType()\" [ngClass]=\"effectiveClassButton()\" [color]=\"effectiveColor() || 'primary'\" [disabled]=\"effectiveDisabled()\"\n            (click)=\"click($event)\" [matTooltip]=\"tooltip()\">\n                {{ effectiveLabel() }}\n\n                @if (effectiveIcon(); as icon) {\n                    <mat-icon>{{ icon }}</mat-icon>\n                }\n\n                @if (effectiveIconSvg(); as iconSvg) {\n                    <mat-icon [svgIcon]=\"iconSvg\"></mat-icon>\n                }\n            </button>\n    `,\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => KlesButtonComponent),\n            multi: true\n        }\n    ],\n    standalone: true,\n    imports: [CommonModule, ReactiveFormsModule, MatIcon, MatTooltip, MatButton]\n})\nexport class KlesButtonComponent extends KlesButtonBase implements OnInit {\n}\n","import { OnInit, Component, OnDestroy } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\n\nimport { KlesButtonComponent } from '../forms/button-control.component';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n    selector: 'kles-form-button',\n    template: `\n        <div [formGroup]=\"group\">\n            <kles-button\n                [attr.id]=\"field.id\"\n                [classButton]=\"ngClass()\"\n                [name]=\"field.name\"\n                [label]=\"label()\"\n                [color]=\"color()\"\n                [icon]=\"icon()\"\n                [iconSvg]=\"iconSvg()\"\n                [value]=\"field.value\"\n                [formControlName]=\"field.name\"\n                [tooltip]=\"tooltip()\"\n                [type]=\"field.buttonType ?? 'button'\"\n                [buttonAppearance]=\"buttonAppearance()\"\n                (action)=\"triggerAction(field.name, $event)\"\n            >\n            </kles-button>\n        </div>\n    `,\n    styles: [],\n    standalone: true,\n    imports: [KlesButtonComponent, ReactiveFormsModule],\n})\nexport class KlesFormButtonComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n    ngOnInit(): void {\n        super.ngOnInit();\n    }\n\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n}\n","import { Component, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { IButton, KlesButtonBase } from './button-control-base';\n\nimport { KlesButtonComponent } from './button-control.component';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { MatBadge } from '@angular/material/badge';\n\nexport interface IButtonChecker extends IButton {\n    busy: boolean;\n    error?: any[];\n    message?: string;\n}\n\n@Component({\n    selector: 'kles-button-checker',\n    template: `\n        @if (effectiveValue().error && !effectiveValue().busy) {\n        <span>\n            <kles-button\n                [classButton]=\"effectiveClassButton()\"\n                [name]=\"name()\"\n                [label]=\"effectiveLabel()\"\n                [color]=\"effectiveColor()\"\n                [icon]=\"effectiveIcon()\"\n                [iconSvg]=\"effectiveIconSvg()\"\n                [value]=\"effectiveValue()\"\n                [tooltip]=\"tooltip()\"\n                [disabled]=\"effectiveDisabled()\"\n                [matBadge]=\"countError()\"\n                (click)=\"click($event)\">\n            </kles-button>\n        </span>\n        }\n        <span style=\"text-align: center;\">\n            @if (effectiveValue().busy) {\n            <span style=\"text-align: center;margin-right: 10px\">\n                <mat-spinner [diameter]=\"25\"></mat-spinner>\n            </span>\n            } @if (effectiveValue().message; as message) {\n            <span style=\"margin-right: 10px\">\n                {{ message }}\n            </span>\n            }\n        </span>\n    `,\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => KlesButtonCheckerComponent),\n            multi: true,\n        },\n    ],\n    standalone: true,\n    imports: [ReactiveFormsModule, KlesButtonComponent, MatProgressSpinner, MatBadge],\n})\nexport class KlesButtonCheckerComponent extends KlesButtonBase<IButtonChecker> implements ControlValueAccessor {\n    countError(): number {\n        return this.effectiveValue().error?.length ?? 0;\n    }\n}\n","import { OnInit, Component, OnDestroy } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\n\nimport { KlesButtonCheckerComponent } from '../forms/buttonchecker-control.component';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n    selector: 'kles-form-button-checker',\n    template: `\n        <div [formGroup]=\"group\">\n            <kles-button-checker\n                [attr.id]=\"field.id\"\n                [classButton]=\"ngClass()\"\n                [name]=\"field.name\"\n                [label]=\"label()\"\n                [color]=\"color()\"\n                [icon]=\"icon()\"\n                [iconSvg]=\"iconSvg()\"\n                [value]=\"field.value\"\n                [formControlName]=\"field.name\"\n                [tooltip]=\"tooltip()\"\n                [disabled]=\"field.disabled ?? false\"\n                (action)=\"triggerAction(field.name, $event)\"\n            >\n            </kles-button-checker>\n        </div>\n    `,\n    styles: [],\n    standalone: true,\n    imports: [KlesButtonCheckerComponent, ReactiveFormsModule],\n})\nexport class KlesFormButtonCheckerComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n    ngOnInit(): void {\n        super.ngOnInit();\n    }\n\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n}\n","import { Component, computed, ElementRef, forwardRef, input, viewChild } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { IButton, KlesButtonBase } from './button-control-base';\nimport { KlesButtonComponent } from './button-control.component';\n\n\nexport interface IButtonFile extends IButton {\n    fileContent?: string | ArrayBuffer | (string | ArrayBuffer)[] | null;\n}\n\n@Component({\n    selector: 'kles-button-file',\n    template: `\n        <input type=\"file\" #file style=\"display: none\" [accept]=\"effectiveAccept()\" (change)=\"onFileSelect($event.target)\" multiple />\n        <kles-button\n            [classButton]=\"effectiveClassButton()\"\n            [name]=\"name()\" [label]=\"effectiveLabel()\" [color]=\"effectiveColor()\"\n            [icon]=\"effectiveIcon()\" [iconSvg]=\"effectiveIconSvg()\"\n            [disabled]=\"effectiveDisabled()\"\n            [value]=\"effectiveValue()\" (click)=\"click($event)\">\n        </kles-button>\n    `,\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => KlesButtonFileComponent),\n            multi: true\n        }\n    ],\n    standalone: true,\n    imports: [KlesButtonComponent],\n})\nexport class KlesButtonFileComponent extends KlesButtonBase<IButtonFile> {\n    private readonly file = viewChild<ElementRef<HTMLInputElement>>('file');\n    readonly accept = input('*.*');\n    readonly effectiveAccept = computed(() => this.uiButtonState()?.accept ?? this.accept());\n\n    click(_event: MouseEvent): void {\n        if (!this.effectiveDisabled()) {\n            this.file()?.nativeElement.click();\n        }\n    }\n\n    override writeValue(value: IButtonFile | null | undefined): void {\n        super.writeValue(value);\n\n        if (!value?.fileContent) {\n            this.resetNativeFileInput();\n        }\n    }\n\n    async onFileSelect(input: HTMLInputElement): Promise<void> {\n        const files = input.files;\n\n        try {\n            if (files && files.length > 0) {\n                const fileContents: (string | ArrayBuffer)[] = [];\n                for (let i = 0; i < files.length; i++) {\n                    try {\n                        const content = await this.readUploadedFile(files[i]);\n                        if (content !== null) {\n                            fileContents.push(content);\n                        }\n                    } catch {\n                    }\n                }\n\n                const value = this.effectiveValue();\n                value.event = this.name();\n                value.fileContent = fileContents.length === 1 ? fileContents[0] : fileContents;\n                this.onChange(value);\n                input.value = '';\n            }\n        } finally {\n            this.markAsTouched();\n        }\n    }\n\n    readUploadedFile(inputFile: File): Promise<string | ArrayBuffer | null> {\n        const temporaryFileReader = new FileReader();\n        return new Promise((resolve, reject) => {\n            temporaryFileReader.onerror = () => {\n                temporaryFileReader.abort();\n                const error: DOMException = new DOMException('Problem parsing input file.');\n                reject(error);\n            };\n            temporaryFileReader.onload = () => {\n                resolve(temporaryFileReader.result);\n            };\n            temporaryFileReader.readAsArrayBuffer(inputFile);\n        });\n    }\n\n    private resetNativeFileInput(): void {\n        const input = this.file()?.nativeElement;\n        if (input) {\n            input.value = '';\n        }\n    }\n}\n","import { OnInit, Component, OnDestroy } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\n\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { KlesButtonFileComponent } from '../forms/buttonfile-control.component';\n\n@Component({\n    selector: 'kles-form-button-file',\n    template: `\n        <div [formGroup]=\"group\">\n            <kles-button-file\n                [attr.id]=\"field.id\"\n                [classButton]=\"ngClass()\"\n                [name]=\"field.name\"\n                [label]=\"label()\"\n                [color]=\"color()\"\n                [icon]=\"icon()\"\n                [iconSvg]=\"iconSvg()\"\n                [value]=\"field.value\"\n                [formControlName]=\"field.name\"\n                [type]=\"field.buttonType ?? 'button'\"\n                [accept]=\"field.accept ?? '*.*'\"\n                [disabled]=\"field.disabled ?? false\"\n            >\n            </kles-button-file>\n        </div>\n    `,\n    styles: [],\n    standalone: true,\n    imports: [ReactiveFormsModule, KlesButtonFileComponent],\n})\nexport class KlesFormButtonFileComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n    ngOnInit(): void {\n        super.ngOnInit();\n        this.field.buttonType = 'button';\n    }\n\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { MatErrorMessageDirective } from '../directive/mat-error-message.directive';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { MatInput } from '@angular/material/input';\nimport { KlesFocusTargetDirective } from '../directive/focus-target.directive';\n\n@Component({\n    selector: 'kles-form-textarea',\n    template: `\n    <mat-form-field [subscriptSizing]=\"field.subscriptSizing ?? 'fixed'\" [formGroup]=\"group\" [color]=\"color()\" class=\"form-element\" [appearance]=\"appearance()\">\n        @if (label()) {\n            <mat-label>{{label()}}</mat-label>\n        }\n\n        <textarea klesFocusTarget matInput [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\"\n        [formControlName]=\"field.name\" cdkTextareaAutosize [placeholder]=\"placeholder()\"\n        [cdkAutosizeMinRows]=\"field.textareaAutoSize?.minRows\" [cdkAutosizeMaxRows]=\"field.textareaAutoSize?.maxRows\"  [maxlength]=\"maxLength()\">\n        </textarea>\n\n        @if (field.subComponents || field.clearable) {\n            <div matSuffix>\n                <ng-content></ng-content>\n            </div>\n        }\n\n        <mat-error matErrorMessage [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\"></mat-error>\n    </mat-form-field>\n    `,\n    styles: ['mat-form-field {width: calc(100%)}'],\n    standalone: true,\n    imports: [CommonModule, MatErrorMessageDirective, ScrollingModule, ReactiveFormsModule, MatTooltip, MatLabel, MatFormField, TextFieldModule, MatInput, KlesFocusTargetDirective]\n})\nexport class KlesFormTextareaComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n    ngOnInit(): void {\n        super.ngOnInit();\n    }\n\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n    name: 'klesTransform',\n    standalone: true\n})\nexport class KlesTransformPipe implements PipeTransform {\n\n    transform(value: any, pipes?: { pipe: PipeTransform, options?: any[] }[]): any {\n\n        if (pipes && pipes.length > 0) {\n            return pipes.reduce((acc, p) => {\n                acc = p.pipe.transform(acc, ...(p.options || []));\n                return acc;\n                // if (p.options) {\n                //     p.options.forEach(opt => {\n                //         acc = p.pipe.transform(acc, opt);\n                //     });\n                // } else {\n                //     acc = p.pipe.transform(acc);\n                // }\n                // return acc;\n            }, value)\n        }\n        return value;\n\n    }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { EnumType } from '../enums/type.enum';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { KlesTransformPipe } from '../pipe/transform.pipe';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@FieldMapper({ type: EnumType.text })\n@Component({\n    selector: 'kles-form-text',\n    template: `\n        <span [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\" [ngStyle]=\"ngStyle()\">\n            {{ (field.property && group.controls[field.name].value ? group.controls[field.name].value[field.property] : group.controls[field.name].value) | klesTransform: field.pipeTransform }}\n        </span>\n        @if (field.subComponents || isPending()) {\n            <ng-content></ng-content>\n        }\n    `,\n    styles: [\n        `\n            :host {\n                display: flex;\n                align-items: center;\n                flex-direction: row;\n                justify-content: inherit;\n            }\n        `,\n    ],\n    standalone: true,\n    imports: [CommonModule, KlesTransformPipe, MatTooltip, ReactiveFormsModule],\n})\nexport class KlesFormTextComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n    ngOnInit() {\n        super.ngOnInit();\n    }\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n}\n","import { Component, OnDestroy, OnInit } from \"@angular/core\";\nimport { KlesFieldAbstract } from \"./field.abstract\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { KlesTransformPipe } from \"../pipe/transform.pipe\";\nimport { CommonModule } from \"@angular/common\";\nimport { MatChip, MatChipListbox, MatChipOption } from \"@angular/material/chips\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\n\n@Component({\n    selector: \"kles-form-chip\",\n    template: `\n    <div [formGroup]=\"group\">  \n        <mat-chip-listbox>\n            <mat-chip-option [color]=\"color()\" [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" selected [ngClass]=\"ngClass()\" [ngStyle]=\"ngStyle()\">\n                @if (icon()) {\n                    <mat-icon>{{icon()}}</mat-icon>\n                }\n                {{group.controls[field.name].value | klesTransform:field.pipeTransform}}\n            </mat-chip-option>\n        </mat-chip-listbox>\n    </div>\n`,\n    styles: [],\n    standalone: true,\n    imports: [CommonModule, MatIcon, KlesTransformPipe, MatChipOption, MatChipListbox, MatTooltip, ReactiveFormsModule]\n})\nexport class KlesFormChipComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n    ngOnInit() { super.ngOnInit(); }\n\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n}\n","import { AbstractControl, FormGroup, UntypedFormGroup } from \"@angular/forms\";\nimport { KlesFormControl } from \"./default.control\";\nimport { componentMapper } from \"../decorators/component.decorator\";\nimport { klesFieldControlFactory } from \"../factories/field.factory\";\nimport { concat, of } from \"rxjs\";\nimport { catchError, map, take } from \"rxjs/operators\";\n\nexport class KlesFormGroup extends KlesFormControl {\n\n    public create(): AbstractControl<any, any> {\n        const subGroup = new UntypedFormGroup({});\n\n        if (this.field.collections && Array.isArray(this.field.collections)) {\n            this.field.collections.forEach(subfield => {\n                let control;\n                const value = subfield.value ?? this.field.value?.[subfield.name];\n\n                if (subfield.type) {\n                    control = componentMapper.find(c => c.type === subfield.type)?.factory({ ...subfield, value }, this.ref)\n                        || klesFieldControlFactory({ ...subfield, value }, this.ref);\n                } else {\n                    control = componentMapper.find(c => c.component === subfield.component)?.factory({ ...subfield, value })\n                        || klesFieldControlFactory({ ...subfield, value }, this.ref);\n                }\n\n                subGroup.addControl(subfield.name, control);\n            });\n        }\n\n        if (this.field.disabled) {\n            subGroup.disable();\n        }\n\n        if (this.field.asyncValue) {\n            concat(\n                of({ value: null, pending: true }),\n                this.field.asyncValue.pipe(\n                    take(1),\n                    catchError((err) => {\n                        console.error(err);\n                        return of(null);\n                    }),\n                    map((value) => ({ value, pending: false }))\n                )\n            ).subscribe((response) => {\n                this.field.pending = response.pending;\n                this.field.collections?.forEach((col) => col.pending = response.pending);\n                if (response.pending) {\n                    subGroup.disable({ emitEvent: false });\n                } else {\n                    if (!this.field.disabled) {\n                        subGroup.enable({ emitEvent: false });\n                    }\n                    subGroup.patchValue(response.value);\n                    this.field.value = response.value;\n                }\n            });\n        }\n\n        return subGroup;\n    }\n}\n","import { Component, computed, HostBinding, OnDestroy, OnInit } from '@angular/core';\nimport { ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';\nimport { KlesFormGroup } from '../controls/group.control';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { EnumType } from '../enums/type.enum';\nimport { KlesFieldAbstract } from './field.abstract';\n\nimport { KlesDynamicFieldDirective } from '../directive/dynamic-field.directive';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { GroupUiState } from '../ui/ui-state/group-ui-state';\nimport { KlesFormUiGroup } from '../ui/group.ui';\n\n@FieldMapper({ type: EnumType.group, factory: (field) => new KlesFormGroup(field).create(), ui: (field) => new KlesFormUiGroup(field).create() })\n@Component({\n    // host: { '[formGroup]': 'group', '[formGroupName]': 'field.name' },\n    selector: 'kles-group',\n    template: `\n        <ng-container [formGroup]=\"group\">\n            <ng-container [formGroupName]=\"field.name\">\n                @if (label()) {\n                    <h4>\n                        <span [matTooltip]=\"tooltip() ?? ''\">{{ label() }}</span>\n                    </h4>\n                }\n\n                @for (subfield of field.collections ?? []; track subfield.name) {\n                    @if (subfield.visible !== false) {\n                        <ng-container klesDynamicField [field]=\"subfield\" [group]=\"subGroup\" [siblingFields]=\"field.collections ?? []\" [ui]=\"subUi\" [context]=\"context\"> </ng-container>\n                    }\n                }\n            </ng-container>\n        </ng-container>\n    `,\n    styles: [\n        ' mat-form-field {width: calc(100%)}',\n        ':host.group-container {display:flex; flex-direction: inherit; width: inherit; justify-content:inherit; }',\n        ':host.group-container-column { display: flex;flex-direction: column; justify-content:inherit; }',\n        ':host.group-container-column > * { width: 100%; }',\n        ':host.group-container-row { display: inline-flex; flex-wrap:wrap; gap:10px; align-items: baseline; justify-content:inherit; }',\n        ':host.group-container-row.group-container-nowrap { flex-wrap: nowrap; }',\n        ':host.group-container-row > * { width: 100%; }',\n        ':host.group-container-grid { display: grid; }',\n        ':host.group-container-inline-grid { display: inline-grid; }',\n    ],\n    standalone: true,\n    imports: [KlesDynamicFieldDirective, MatTooltip, ReactiveFormsModule],\n})\nexport class KlesFormGroupComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n    private readonly orientationClass = computed(() => {\n        switch (this.field.direction) {\n            case 'column':\n                return 'group-container-column';\n            case 'row':\n                return 'group-container-row';\n            case 'grid':\n                return 'group-container-grid';\n            case 'inline-grid':\n                return 'group-container-inline-grid';\n            default:\n                return 'group-container';\n        }\n    });\n\n    @HostBinding('class') get className() {\n        const orientationClass = this.orientationClass();\n        return orientationClass === 'group-container-row' && this.field.wrap === false ? `${orientationClass} group-container-nowrap` : orientationClass;\n    }\n\n    subGroup!: UntypedFormGroup;\n    subUi!: GroupUiState;\n\n    ngOnInit() {\n        this.subGroup = this.group.controls[this.field.name] as UntypedFormGroup;\n        this.subUi = this.ui?.get(this.field.name) as GroupUiState;\n        super.ngOnInit();\n    }\n\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n}\n","import { OnInit, Component, OnDestroy } from '@angular/core';\nimport { KlesFormInputComponent } from './input.component';\nimport { CommonModule } from '@angular/common';\nimport { MatAutocompleteModule, MatOption } from '@angular/material/autocomplete';\nimport { MatErrorMessageDirective } from '../directive/mat-error-message.directive';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { MatIcon } from '@angular/material/icon';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { KlesComponentDirective } from '../directive/dynamic-component.directive';\nimport { MatFormField, MatInput, MatLabel } from '@angular/material/input';\nimport { KlesFocusTargetDirective } from '../directive/focus-target.directive';\n\n@Component({\n    selector: 'kles-form-input-clearable',\n    template: `\n        <mat-form-field [subscriptSizing]=\"field.subscriptSizing ?? 'fixed'\" [formGroup]=\"group\" [color]=\"color()\" class=\"form-element\" [appearance]=\"appearance()\">\n            @if (label()) {\n                <mat-label>{{ label() }}</mat-label>\n            }\n            @if (field.autocomplete) {\n                <input\n                    klesFocusTarget\n                    matInput\n                    [matTooltip]=\"tooltip()\"\n                    [attr.id]=\"field.id\"\n                    [ngClass]=\"ngClass()\"\n                    [formControlName]=\"field.name\"\n                    [placeholder]=\"placeholder()\"\n                    [type]=\"inputType()\"\n                    [maxLength]=\"maxLength()\"\n                    [min]=\"min()\"\n                    [max]=\"max()\"\n                    [step]=\"step()\"\n                    [matAutocomplete]=\"auto\"\n                />\n\n                <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayFn.bind(this)\" [panelWidth]=\"field.panelWidth ?? 'auto'\">\n                    @if (filteredOption$ | async; as filteredOption) {\n                        @if (filteredOption.loading) {\n                            <mat-option class=\"hide-checkbox\" disabled>\n                                <div class=\"loadingSelect\">\n                                    {{ intl.loading }}...\n                                    <mat-spinner class=\"spinner\" diameter=\"20\"></mat-spinner>\n                                </div>\n                            </mat-option>\n                        } @else {\n                            @if (!field.autocompleteComponent) {\n                                @for (option of filteredOption.options; track option) {\n                                    <mat-option [value]=\"option\">\n                                        {{ field.property ? option[field.property] : option }}\n                                    </mat-option>\n                                }\n                            } @else {\n                                @for (option of filteredOption.options; track option) {\n                                    <mat-option [value]=\"option\">\n                                        <ng-container klesComponent [component]=\"field.autocompleteComponent\" [value]=\"option\" [field]=\"field\"> </ng-container>\n                                    </mat-option>\n                                }\n                            }\n                        }\n                    }\n                </mat-autocomplete>\n            } @else {\n                <input\n                    klesFocusTarget\n                    matInput\n                    [matTooltip]=\"tooltip()\"\n                    [attr.id]=\"field.id\"\n                    [ngClass]=\"ngClass()\"\n                    [formControlName]=\"field.name\"\n                    [placeholder]=\"placeholder()\"\n                    [type]=\"inputType()\"\n                    [maxLength]=\"maxLength()\"\n                    [min]=\"min()\"\n                    [max]=\"max()\"\n                    [step]=\"step()\"\n                />\n            }\n            @if (!group.controls[field.name].disabled) {\n                <button matSuffix matIconButton aria-label=\"Clear\" type=\"button\" (click)=\"group.controls[field.name].reset()\">\n                    <mat-icon>close</mat-icon>\n                </button>\n            }\n            @if (isPending()) {\n                <mat-spinner matSuffix mode=\"indeterminate\" diameter=\"17\"></mat-spinner>\n            }\n\n            <mat-error matErrorMessage [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\"></mat-error>\n        </mat-form-field>\n    `,\n    styles: ['mat-form-field {width: calc(100%)}'],\n    styleUrls: ['../styles/loading-select.style.scss'],\n    standalone: true,\n    imports: [CommonModule, ReactiveFormsModule, MatAutocompleteModule, MatErrorMessageDirective, MatProgressSpinner, MatIcon, MatTooltip, KlesComponentDirective, MatOption, MatInput, MatLabel, MatFormField, KlesFocusTargetDirective],\n})\nexport class KlesFormInputClearableComponent extends KlesFormInputComponent implements OnInit, OnDestroy {\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n    selector: 'kles-form-icon',\n    template: `\n        <mat-icon [color]=\"color()\" [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\" [ngStyle]=\"ngStyle()\">\n            {{ group.controls[field.name].value }}\n        </mat-icon>\n    `,\n    styles: [],\n    standalone: true,\n    imports: [CommonModule, MatIcon, MatTooltip, ReactiveFormsModule],\n})\nexport class KlesFormIconComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n    ngOnInit() {\n        super.ngOnInit();\n    }\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { EnumType } from '../enums/type.enum';\nimport { KlesFieldAbstract } from './field.abstract';\n\n@FieldMapper({\n    type: EnumType.lineBreak,\n    factory: () => null\n})\n@Component({\n    selector: 'kles-form-line-break',\n    template: ``,\n    styles: [\n        `:host{\n                     flex-basis: 100%;\n                     display: flex;\n                     height:0;\n                 }`\n    ],\n    standalone: true\n})\nexport class KlesFormLineBreakComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n    ngOnInit() { super.ngOnInit(); }\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n    name: 'arrayFormat',\n    standalone: true,\n})\nexport class ArrayFormatPipe implements PipeTransform {\n\n    transform(values: any[], property?: string): string {\n        if (values && Array.isArray(values)) {\n            if (property) {\n                return values.map(value => value[property]).filter(Boolean).join(', ');\n            } else {\n                return values.join(', ');\n            }\n        }\n        return '';\n    }\n}","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n    selector: 'kles-form-link',\n    template: `\n        <a [href]=\"group.controls[field.name].value\" [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\">\n            {{ label() }}\n        </a>\n    `,\n    standalone: true,\n    imports: [CommonModule, MatTooltip, ReactiveFormsModule],\n})\nexport class KlesFormLinkComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n    ngOnInit() {\n        super.ngOnInit();\n    }\n\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n}\n","import { Component, OnDestroy, OnInit, viewChild } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { KlesFocusTargetDirective } from '../directive/focus-target.directive';\n\n@Component({\n    selector: 'kles-form-slide-toggle',\n    template: `\n        <div class=\"kles-slide-toggle\" [formGroup]=\"group\">\n            <mat-slide-toggle klesFocusTarget [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\" [color]=\"color()\" [formControlName]=\"field.name\">{{ label() }}</mat-slide-toggle>\n            @if (hint()) {\n                <div class=\"kles-slide-toggle__hint\">{{ hint() }}</div>\n            }\n        </div>\n    `,\n    styles: `\n        .kles-slide-toggle {\n            display: flex;\n            flex-direction: column;\n            align-items: flex-start;\n        }\n\n        .kles-slide-toggle__hint {\n            color: var(--mat-sys-on-surface-variant);\n            font-size: 12px;\n            font-weight: 400;\n            line-height: 16px;\n        }\n    `,\n    standalone: true,\n    imports: [CommonModule, MatSlideToggle, MatTooltip, ReactiveFormsModule, KlesFocusTargetDirective],\n})\nexport class KlesFormSlideToggleComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n    private readonly slideToggle = viewChild(MatSlideToggle);\n\n    protected override focus(): void {\n        this.slideToggle()?.focus();\n    }\n\n    ngOnInit() {\n        super.ngOnInit();\n    }\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n}\n","import { SelectionChange, getMultipleValuesInSingleSelectionError } from \"@angular/cdk/collections\";\nimport { Subject } from \"rxjs\";\nimport { signal } from '@angular/core';\n\n\n\n/**\n * Copy and past from https://github.com/angular/components/blob/17.0.x/src/cdk/collections/selection-model.ts\n * (They put everything in private, thanks to angular team)\n */\nexport class KlesSelectionModel<T> {\n    private readonly _revision = signal(0);\n\n    /** Currently-selected values. */\n    private _selection = new Set<T>();\n\n    /** Keeps track of the deselected options that haven't been emitted by the change event. */\n    private _deselectedToEmit: T[] = [];\n\n    /** Keeps track of the selected options that haven't been emitted by the change event. */\n    private _selectedToEmit: T[] = [];\n\n    /** Cache for the array value of the selected items. */\n    private _selected: T[] | null = null;\n\n    /** Selected values. */\n    get selected(): T[] {\n        if (!this._selected) {\n            this._selected = Array.from(this._selection.values());\n        }\n\n        return this._selected;\n    }\n\n    /** Event emitted when the value has changed. */\n    readonly changed = new Subject<any>();\n\n    constructor(\n        private _multiple = false,\n        initiallySelectedValues?: T[],\n        private _emitChanges = true,\n        public compareWith?: (o1: T, o2: T) => boolean,\n    ) {\n        if (initiallySelectedValues && initiallySelectedValues.length) {\n            if (_multiple) {\n                initiallySelectedValues.forEach(value => this._markSelected(value));\n            } else {\n                this._markSelected(initiallySelectedValues[0]);\n            }\n\n            // Clear the array in order to avoid firing the change event for preselected values.\n            this._selectedToEmit.length = 0;\n        }\n    }\n\n    /**\n     * Selects a value or an array of values.\n     * @param values The values to select\n     * @return Whether the selection changed as a result of this call\n     * @breaking-change 16.0.0 make return type boolean\n     */\n    select(values: T[], option?: { emitEvent: boolean }): boolean | void {\n        this._verifyValueAssignment(values);\n        values.forEach(value => this._markSelected(value));\n        const changed = this._hasQueuedChanges();\n        if (!option || option?.emitEvent) {\n            this._emitChangeEvent();\n        } else {\n            this._selected = null;\n        }\n        return changed;\n    }\n\n    /**\n     * Deselects a value or an array of values.\n     * @param values The values to deselect\n     * @return Whether the selection changed as a result of this call\n     * @breaking-change 16.0.0 make return type boolean\n     */\n    deselect(values: T[], option?: { emitEvent: boolean }): boolean | void {\n        this._verifyValueAssignment(values);\n        values.forEach(value => this._unmarkSelected(value));\n        const changed = this._hasQueuedChanges();\n        if (!option || option?.emitEvent) {\n            this._emitChangeEvent();\n        } else {\n            this._selected = null;\n        }\n        return changed;\n    }\n\n    /**\n     * Sets the selected values\n     * @param values The new selected values\n     * @return Whether the selection changed as a result of this call\n     * @breaking-change 16.0.0 make return type boolean\n     */\n    setSelection(values: T[], option?: { emitEvent: boolean }): boolean | void {\n        this._verifyValueAssignment(values);\n        const oldValues = this.selected;\n        const newSelectedSet = new Set(values.map((value) => this._getConcreteValue(value)));\n        values.forEach(value => this._markSelected(value));\n\n        oldValues\n            .filter(value => !newSelectedSet.has(value))\n            .forEach(value => this._unmarkSelected(value));\n        const changed = this._hasQueuedChanges();\n        if (!option || option?.emitEvent) {\n            this._emitChangeEvent();\n        } else {\n            this._selected = null;\n        }\n        return changed;\n    }\n\n    /**\n     * Toggles a value between selected and deselected.\n     * @param value The value to toggle\n     * @return Whether the selection changed as a result of this call\n     * @breaking-change 16.0.0 make return type boolean\n     */\n    toggle(value: T): boolean | void {\n        if (Array.isArray(value)) {\n            return this.isSelected(value) ? this.deselect(value) : this.select(value);\n        } else {\n            return this.isSelected(value) ? this.deselect([value]) : this.select([value]);\n        }\n\n    }\n\n    /**\n     * Clears all of the selected values.\n     * @param flushEvent Whether to flush the changes in an event.\n     *   If false, the changes to the selection will be flushed along with the next event.\n     * @return Whether the selection changed as a result of this call\n     * @breaking-change 16.0.0 make return type boolean\n     */\n    clear(flushEvent = true): boolean | void {\n        this._unmarkAll();\n        const changed = this._hasQueuedChanges();\n        if (flushEvent) {\n            this._emitChangeEvent();\n        }\n        return changed;\n    }\n\n    /**\n     * Determines whether a value is selected.\n     */\n    isSelected(value: T): boolean {\n        this._revision();\n        return this._selection.has(this._getConcreteValue(value));\n    }\n\n    /**\n     * Determines whether the model does not have a value.\n     */\n    isEmpty(): boolean {\n        return this._selection.size === 0;\n    }\n\n    /**\n     * Determines whether the model has a value.\n     */\n    hasValue(): boolean {\n        return !this.isEmpty();\n    }\n\n    /**\n     * Sorts the selected values based on a predicate function.\n     */\n    sort(predicate?: (a: T, b: T) => number): void {\n        if (this._multiple && this.selected) {\n            this._selected!.sort(predicate);\n        }\n    }\n\n    /**\n     * Gets whether multiple values can be selected.\n     */\n    isMultipleSelection() {\n        return this._multiple;\n    }\n\n    /** Emits a change event and clears the records of selected and deselected values. */\n    private _emitChangeEvent() {\n        // Clear the selected values so they can be re-cached.\n        this._selected = null;\n\n        if (this._selectedToEmit.length || this._deselectedToEmit.length) {\n            this.changed.next({\n                source: this,\n                added: this._selectedToEmit,\n                removed: this._deselectedToEmit,\n            });\n\n            this._deselectedToEmit = [];\n            this._selectedToEmit = [];\n        }\n    }\n\n    /** Selects a value. */\n    private _markSelected(value: T) {\n        value = this._getConcreteValue(value);\n        if (!this.isSelected(value)) {\n            if (!this._multiple) {\n                this._unmarkAll();\n            }\n\n            if (!this.isSelected(value)) {\n                this._selection.add(value);\n                this._revision.update((revision) => revision + 1);\n            }\n\n            if (this._emitChanges) {\n                this._selectedToEmit.push(value);\n            }\n        }\n    }\n\n    /** Deselects a value. */\n    private _unmarkSelected(value: T) {\n        value = this._getConcreteValue(value);\n        if (this.isSelected(value)) {\n            this._selection.delete(value);\n            this._revision.update((revision) => revision + 1);\n\n            if (this._emitChanges) {\n                this._deselectedToEmit.push(value);\n            }\n        }\n    }\n\n    /** Clears out the selected values. */\n    private _unmarkAll() {\n        if (!this.isEmpty()) {\n            this._selection.forEach(value => this._unmarkSelected(value));\n        }\n    }\n\n    /**\n     * Verifies the value assignment and throws an error if the specified value array is\n     * including multiple values while the selection model is not supporting multiple values.\n     */\n    private _verifyValueAssignment(values: T[]) {\n        if (values.length > 1 && !this._multiple) {\n            throw getMultipleValuesInSingleSelectionError();\n        }\n    }\n\n    /** Whether there are queued up change to be emitted. */\n    private _hasQueuedChanges() {\n        return !!(this._deselectedToEmit.length || this._selectedToEmit.length);\n    }\n\n    /** Returns a value that is comparable to inputValue by applying compareWith function, returns the same inputValue otherwise. */\n    private _getConcreteValue(inputValue: T): T {\n        if (!this.compareWith) {\n            return inputValue;\n        } else {\n            for (let selectedValue of this._selection) {\n                if (this.compareWith!(inputValue, selectedValue)) {\n                    return selectedValue;\n                }\n            }\n            return inputValue;\n        }\n    }\n}\n","import { Component, computed, OnDestroy, OnInit } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { MatListModule, MatSelectionListChange } from '@angular/material/list';\nimport { Observable, of } from 'rxjs';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { takeUntil } from 'rxjs/operators';\nimport { KlesSelectionModel } from '../selection/selection-model';\nimport { CommonModule } from '@angular/common';\nimport { KlesTransformPipe } from '../pipe/transform.pipe';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { KlesComponentDirective } from '../directive/dynamic-component.directive';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { ReactiveFormsModule } from '@angular/forms';\n@Component({\n    selector: 'kles-form-selection-list',\n    template: `\n        <div class=\"margin-top\" [formGroup]=\"group\">\n            <mat-selection-list [attr.id]=\"field.id\" [multiple]=\"field.multiple\" [ngClass]=\"ngClass()\" [disabled]=\"disabled()\" (selectionChange)=\"onSelectionChange($event)\">\n                @if(options$ | async; as options){ @if(field.virtualScroll){\n                <cdk-virtual-scroll-viewport [itemSize]=\"field.itemSize || 20\" style=\"height:100%\">\n                    @if (!field.autocompleteComponent) {\n                    <mat-list-option *cdkVirtualFor=\"let item of options; templateCacheSize: 0\" [value]=\"item\" [selected]=\"selection.isSelected(item)\">\n                        {{ (field.property ? item[field.property] : item) | klesTransform : field.pipeTransform }}\n                    </mat-list-option>\n                    } @else{\n                    <mat-list-option *cdkVirtualFor=\"let item of options; templateCacheSize: 0\" [value]=\"item\" [selected]=\"selection.isSelected(item)\">\n                        <ng-container klesComponent [component]=\"field.autocompleteComponent\" [value]=\"item\" [field]=\"field\"></ng-container>\n                    </mat-list-option>\n                    }\n                </cdk-virtual-scroll-viewport>\n                } @else{ @if (!field.autocompleteComponent) { @for (item of options; track item) {\n                <mat-list-option [value]=\"item\" [selected]=\"selection.isSelected(item)\">\n                    {{ (field.property ? item[field.property] : item) | klesTransform : field.pipeTransform }}\n                </mat-list-option>\n                } } @else { @for (item of options; track item) {\n                <mat-list-option [value]=\"item\" [selected]=\"selection.isSelected(item)\">\n                    <ng-container klesComponent [component]=\"field.autocompleteComponent\" [value]=\"item\" [field]=\"field\"></ng-container>\n                </mat-list-option>\n                } } } }@else{\n                <mat-spinner></mat-spinner>\n                }\n            </mat-selection-list>\n        </div>\n    `,\n    styles: [\n        `\n            mat-selection-list {\n                width: 100%;\n                height: 250px;\n                overflow: auto;\n            }\n        `,\n    ],\n    standalone: true,\n    imports: [CommonModule, KlesTransformPipe, MatProgressSpinnerModule, KlesComponentDirective, MatListModule, ScrollingModule, ReactiveFormsModule],\n})\nexport class KlesFormSelectionListComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n    selection!: KlesSelectionModel<any>;\n    options$!: Observable<any[]>;\n    private readonly control = this.group.controls[this.field.name];\n    private readonly controlStatus = toSignal(this.control.statusChanges, {\n        initialValue: this.control.status,\n    });\n    readonly disabled = computed(() => {\n        this.controlStatus();\n        return this.control.disabled;\n    });\n\n    ngOnInit() {\n        super.ngOnInit();\n\n        this.selection = new KlesSelectionModel<any>(this.field.multiple || false, [], true, (o1: any, o2: any) => {\n            if (this.field.property) {\n                return o1?.[this.field.property] === o2?.[this.field.property];\n            } else {\n                return o1 === o2;\n            }\n        });\n\n        if (this.field.value) {\n            this.selection.select(Array.isArray(this.field.value) ? this.field.value : [this.field.value]);\n        }\n\n        if (this.field.options instanceof Observable) {\n            this.options$ = this.field.options;\n        } else if (this.field.options instanceof Function) {\n            this.options$ = this.field.options();\n        } else {\n            this.options$ = of(this.field.options ?? []);\n        }\n\n        this.control.valueChanges.pipe(takeUntil(this._onDestroy)).subscribe((value) => {\n            this.selection.setSelection(Array.isArray(value) ? value : [value], { emitEvent: false });\n        });\n\n        this.selection.changed.pipe(takeUntil(this._onDestroy)).subscribe((change) => {\n            this.control.patchValue(change.source.selected);\n            this.control.markAllAsTouched();\n            this.control.markAsDirty();\n        });\n    }\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n\n    onSelectionChange(selection: MatSelectionListChange) {\n        if (this.disabled()) {\n            return;\n        }\n\n        selection.options.forEach((option) => {\n            option.selected ? this.selection.select([option.value]) : this.selection.deselect([option.value]);\n        });\n    }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { EnumType } from '../enums/type.enum';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatBadgeModule } from '@angular/material/badge';\n\n@FieldMapper({ type: EnumType.badge })\n@Component({\n    selector: 'kles-form-badge',\n    template: `\n    <span [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\" \n        matBadge=\"{{group.controls[field.name].value}}\" matBadgeOverlap=\"false\" [matBadgeColor]=\"color()\">\n    </span>\n`,\n    standalone: true,\n    \n    imports: [CommonModule, MatTooltipModule, MatBadgeModule],\n})\nexport class KlesFormBadgeComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n\n    ngOnInit() {\n        super.ngOnInit();\n    }\n\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n}\n","import { Component, OnDestroy, OnInit, viewChildren } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { KlesTransformPipe } from '../pipe/transform.pipe';\nimport { MatButtonToggle, MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { KlesFocusTargetDirective } from '../directive/focus-target.directive';\n\n@Component({\n    selector: 'kles-form-button-toogle-group',\n    template: `\n        <div [formGroup]=\"group\" class=\"form-element\">\n            <mat-button-toggle-group klesFocusTarget [formControlName]=\"field.name\" [multiple]=\"field.multiple\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\">\n                @for (item of options$ | async; track item) {\n                    <mat-button-toggle [value]=\"item\">\n                        {{(field.property ? item[field.property] : item) | klesTransform:field.pipeTransform}}\n                    </mat-button-toggle>\n                }\n            </mat-button-toggle-group>\n        </div>\n`,\n    standalone: true,\n    imports: [CommonModule, ReactiveFormsModule, KlesTransformPipe, MatButtonToggleModule, KlesFocusTargetDirective],\n})\nexport class KlesFormButtonToogleGroupComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n    private readonly buttonToggles = viewChildren(MatButtonToggle);\n\n    protected override focus(): void {\n        this.buttonToggles().at(0)?.focus();\n    }\n\n    options$: Observable<any[]> = of([]);\n\n    ngOnInit() {\n        super.ngOnInit();\n\n        if (this.field.options instanceof Observable) {\n            this.options$ = this.field.options;\n        }\n        else if (this.field.options instanceof Function) {\n            this.options$ = this.field.options();\n        }\n        else {\n            this.options$ = of(this.field.options ?? []);\n        }\n    }\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { AbstractControl, ReactiveFormsModule, UntypedFormArray, UntypedFormGroup } from '@angular/forms';\nimport { KlesFormArray } from '../controls/array.control';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { EnumType } from '../enums/type.enum';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { KlesDynamicFieldDirective } from '../directive/dynamic-field.directive';\nimport { KlesFormUiArray } from '../ui/array.ui';\nimport { GroupUiState } from '../ui/ui-state/group-ui-state';\nimport { ArrayUiState } from '../ui/ui-state/array-ui-state';\n\n@FieldMapper({ type: EnumType.array, factory: (field) => new KlesFormArray(field).create(), ui: (field) => new KlesFormUiArray(field).create() })\n@Component({\n    selector: 'kles-array',\n    template: `\n        <div [formGroup]=\"group\" class=\"container\" [ngClass]=\"{ 'container-column': field.direction === 'column' }\">\n            <ng-container [formArrayName]=\"field.name\">\n                @for (subGroup of formArray.controls; track subGroup.value._id; let index = $index) {\n                    <div class=\"group-container\" [ngClass]=\"field.direction === 'column' ? 'column' : 'row'\">\n                        @for (subfield of field.collections ?? []; track subfield.name) {\n                            @if (subfield.visible !== false) {\n                                <ng-container klesDynamicField [field]=\"subfield\" [group]=\"asFormGroup(subGroup)\" [ui]=\"uiAt(index)\" [siblingFields]=\"field.collections ?? []\" [context]=\"context\"> </ng-container>\n                            }\n                        }\n                    </div>\n                }\n            </ng-container>\n        </div>\n    `,\n    styles: [\n        'mat-form-field {width: calc(100%)}',\n        ':host { display:flex; flex-direction: inherit}',\n        '.container { display: flex; flex-direction: inherit}',\n        '.container-column {gap: 10px}',\n        '.group-container {display:flex; flex-direction: inherit}',\n        '.row { gap: 10px; flex-direction: row; align-items: baseline }',\n        '.column { flex-direction: column; gap: 0px}',\n    ],\n    standalone: true,\n    imports: [CommonModule, KlesDynamicFieldDirective, ReactiveFormsModule],\n})\nexport class KlesFormArrayComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n    // subGroup: FormGroup\n\n    formArray: UntypedFormArray;\n    subUi: ArrayUiState;\n\n    constructor() {\n        super();\n        this.formArray = this.group.controls[this.field.name] as UntypedFormArray;\n        this.subUi = this.ui?.get(this.field.name) as ArrayUiState;\n    }\n\n    ngOnInit() {\n        super.ngOnInit();\n    }\n\n    asFormGroup(control: AbstractControl): UntypedFormGroup {\n        return control as UntypedFormGroup;\n    }\n\n    uiAt(index: number): GroupUiState {\n        return this.subUi.at(index) as GroupUiState;\n    }\n\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n}\n","import { AbstractControl, FormControl, FormGroup, UntypedFormGroup } from \"@angular/forms\";\nimport { KlesFormControl } from \"./default.control\";\n\nexport class KlesFormRange extends KlesFormControl {\n\n    public create(): AbstractControl<any, any> {\n        const range = new FormGroup({\n            start: new FormControl(this.field.value?.start, { nonNullable: this.field.nonNullable && this.field.value?.start || false }),\n            end: new FormControl(this.field.value?.end, { nonNullable: this.field.nonNullable && this.field.value?.end || false }),\n        }, {\n            validators: this.bindValidations(this.field.validations || []),\n            asyncValidators: this.bindAsyncValidations(this.field.asyncValidations || []),\n        });\n\n        if (this.field.disabled) {\n            range.disable();\n        }\n        return range;\n    }\n}\n","import { Component, computed, OnDestroy, OnInit } from '@angular/core';\nimport { KlesFormRange } from '../controls/range.control';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { EnumType } from '../enums/type.enum';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from '@angular/common';\nimport { MatErrorMessageDirective } from '../directive/mat-error-message.directive';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { KlesFocusTargetDirective } from '../directive/focus-target.directive';\n\n@FieldMapper({ type: EnumType.range, factory: (field) => new KlesFormRange(field).create() })\n@Component({\n    selector: 'kles-form-rangepicker',\n    template: `\n        <mat-form-field [subscriptSizing]=\"field.subscriptSizing ?? 'fixed'\" [color]=\"color()\" [formGroup]=\"group\" [appearance]=\"appearance()\">\n            <mat-label>{{ label() }}</mat-label>\n\n            <mat-date-range-input [formGroupName]=\"field.name\" [rangePicker]=\"picker\" [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"ngClass()\" [min]=\"min()\" [max]=\"max()\">\n                <input klesFocusTarget matStartDate formControlName=\"start\" [placeholder]=\"placeholder()?.start ? placeholder()?.start : ''\" />\n                <input matEndDate formControlName=\"end\" [placeholder]=\"placeholder()?.end ? placeholder()?.end : ''\" />\n            </mat-date-range-input>\n\n            <div matSuffix class=\"suffix\">\n                <mat-datepicker-toggle [for]=\"picker\"></mat-datepicker-toggle>\n                <ng-content></ng-content>\n            </div>\n\n            <mat-date-range-picker #picker></mat-date-range-picker>\n            @if (hint()) {\n                <mat-hint>{{ hint() }}</mat-hint>\n            }\n\n            <mat-error matErrorMessage [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\"></mat-error>\n        </mat-form-field>\n    `,\n    styles: ['mat-form-field {width: calc(100%)}'],\n    styleUrls: ['../styles/mat-suffix.style.scss'],\n    standalone: true,\n    imports: [CommonModule, MatErrorMessageDirective, MatFormFieldModule, MatInputModule, MatDatepickerModule, MatTooltipModule, ReactiveFormsModule, KlesFocusTargetDirective],\n})\nexport class KlesFormRangeComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n    ngOnInit() {\n        super.ngOnInit();\n    }\n\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n}\n","import { Component, OnInit, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { KlesButtonBase } from './button-control-base';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatButtonModule } from '@angular/material/button';\n\n\n\n@Component({\n    selector: 'kles-fab',\n    template: `\n            <button matFab [extended]=\"!!effectiveLabel()\" [type]=\"effectiveType()\" [ngClass]=\"effectiveClassButton()\" [color]=\"effectiveColor() || 'primary'\" [disabled]=\"effectiveDisabled()\"\n            (click)=\"click($event)\" [matTooltip]=\"tooltip()\">\n                {{ effectiveLabel() }}\n\n                @if (effectiveIcon(); as icon) {\n                    <mat-icon>{{ icon }}</mat-icon>\n                }\n\n                @if (effectiveIconSvg(); as iconSvg) {\n                    <mat-icon [svgIcon]=\"iconSvg\"></mat-icon>\n                }\n            </button>\n    `,\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => KlesFabComponent),\n            multi: true\n        }\n    ],\n    standalone: true,\n    imports: [CommonModule, MatIconModule, MatTooltipModule, MatButtonModule]\n})\nexport class KlesFabComponent extends KlesButtonBase implements OnInit {\n\n}\n","import { OnInit, Component, OnDestroy } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\n\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatButtonModule } from '@angular/material/button';\nimport { KlesFabComponent } from '../forms/fab-control.component';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n    selector: 'kles-form-fab',\n    template: `\n        <div [formGroup]=\"group\">\n            <kles-fab\n                [attr.id]=\"field.id\"\n                [classButton]=\"ngClass()\"\n                [name]=\"field.name\"\n                [label]=\"label()\"\n                [color]=\"color()\"\n                [icon]=\"icon()\"\n                [iconSvg]=\"iconSvg()\"\n                [value]=\"field.value\"\n                [formControlName]=\"field.name\"\n                [tooltip]=\"tooltip()\"\n                [type]=\"field.buttonType ?? 'button'\"\n                (action)=\"triggerAction(field.name, $event)\"\n            >\n            </kles-fab>\n        </div>\n    `,\n    styles: [],\n    standalone: true,\n    imports: [MatIconModule, MatTooltipModule, MatButtonModule, KlesFabComponent, ReactiveFormsModule],\n})\nexport class KlesFormFabComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n    ngOnInit(): void {\n        super.ngOnInit();\n    }\n\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n}\n","import { Component, OnInit, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { KlesButtonBase } from './button-control-base';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatButtonModule } from '@angular/material/button';\n\n\n\n@Component({\n    selector: 'kles-mini-fab',\n    template: `\n            <button matMiniFab [type]=\"effectiveType()\" [ngClass]=\"effectiveClassButton()\" [color]=\"effectiveColor() || 'primary'\" [disabled]=\"effectiveDisabled()\"\n            (click)=\"click($event)\" [matTooltip]=\"tooltip()\">\n                {{ effectiveLabel() }}\n\n                @if (effectiveIcon(); as icon) {\n                    <mat-icon>{{ icon }}</mat-icon>\n                }\n\n                @if (effectiveIconSvg(); as iconSvg) {\n                    <mat-icon [svgIcon]=\"iconSvg\"></mat-icon>\n                }\n            </button>\n    `,\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => KlesMiniFabComponent),\n            multi: true\n        }\n    ],\n    standalone: true,\n    imports: [CommonModule, MatIconModule, MatTooltipModule, MatButtonModule]\n})\nexport class KlesMiniFabComponent extends KlesButtonBase implements OnInit {\n\n}\n","import { OnInit, Component, OnDestroy } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { KlesMiniFabComponent } from '../forms/mini-fab-control.component';\n\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@Component({\n    selector: 'kles-form-mini-fab',\n    template: `\n    <div [formGroup]=\"group\">\n        <kles-mini-fab\n            [attr.id]=\"field.id\" [classButton]=\"ngClass()\" \n            [name]=\"field.name\" [label]=\"label()\" [color]=\"color()\" \n            [icon]=\"icon()\"\n            [iconSvg]=\"iconSvg()\"\n            [value]=\"field.value\"\n            [formControlName]=\"field.name\"\n            [tooltip]=\"tooltip()\"\n            [type]=\"field.buttonType ?? 'button'\"\n            (action)=\"triggerAction(field.name, $event)\"\n            >\n        </kles-mini-fab>\n    </div>\n    `,\n    styles: [],\n    standalone: true,\n    imports: [KlesMiniFabComponent, ReactiveFormsModule]\n})\nexport class KlesFormMiniFabComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n\n    ngOnInit(): void {\n        super.ngOnInit();\n    }\n\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n}\n","import { Component, OnInit, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { KlesButtonBase } from './button-control-base';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n    selector: 'kles-icon-button',\n    template: `\n        <button matIconButton [type]=\"effectiveType()\" [ngClass]=\"effectiveClassButton()\" [color]=\"effectiveColor() || 'primary'\" [disabled]=\"effectiveDisabled()\" (click)=\"click($event)\" [matTooltip]=\"tooltip()\">\n            @if (effectiveIcon(); as icon) {\n            <mat-icon>{{ icon }}</mat-icon>\n            } @if (effectiveIconSvg(); as iconSvg) {\n            <mat-icon [svgIcon]=\"iconSvg\"></mat-icon>\n            }\n        </button>\n    `,\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => KlesIconButtonComponent),\n            multi: true,\n        },\n    ],\n    standalone: true,\n    imports: [CommonModule, MatIconModule, MatButtonModule, MatTooltipModule],\n})\nexport class KlesIconButtonComponent extends KlesButtonBase implements OnInit {}\n","import { OnInit, Component, OnDestroy } from '@angular/core';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { KlesIconButtonComponent } from '../forms/icon-button-control.component';\n\n@Component({\n    selector: 'kles-form-icon-button',\n    template: `\n        <div [formGroup]=\"group\">\n            <kles-icon-button\n                [attr.id]=\"field.id\"\n                [classButton]=\"ngClass()\"\n                [name]=\"field.name\"\n                [color]=\"color()\"\n                [icon]=\"icon()\"\n                [iconSvg]=\"iconSvg()\"\n                [value]=\"field.value\"\n                [formControlName]=\"field.name\"\n                [tooltip]=\"tooltip()\"\n                [type]=\"field.buttonType ?? 'button'\"\n                (action)=\"triggerAction(field.name, $event)\"\n            >\n            </kles-icon-button>\n        </div>\n    `,\n    styles: [],\n    standalone: true,\n    imports: [ReactiveFormsModule, KlesIconButtonComponent],\n})\nexport class KlesFormIconButtonComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n    ngOnInit(): void {\n        super.ngOnInit();\n    }\n\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n}\n","import { Component, computed, OnDestroy, OnInit } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { MatListModule, MatSelectionListChange } from '@angular/material/list';\nimport { Observable, of } from 'rxjs';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { debounceTime, distinctUntilChanged, map, shareReplay, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { KlesSelectionModel } from '../selection/selection-model';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { CommonModule } from '@angular/common';\nimport { KlesTransformPipe } from '../pipe/transform.pipe';\nimport { KlesComponentDirective } from '../directive/dynamic-component.directive';\nimport { MatOption } from '@angular/material/core';\nimport { KlesFocusTargetDirective } from '../directive/focus-target.directive';\n@Component({\n    selector: 'kles-form-selection-list-search',\n    template: `\n        <div class=\"selection-list\" [formGroup]=\"group\">\n            <mat-form-field [subscriptSizing]=\"field.subscriptSizing ?? 'fixed'\" [appearance]=\"appearance()\">\n                @if (label()) {\n                <mat-label>{{ label() }}</mat-label>\n                }\n                <input klesFocusTarget matInput [placeholder]=\"placeholder()\" [formControl]=\"searchControl\" />\n                <button matSuffix matIconButton type=\"button\" aria-label=\"Clear\" [disabled]=\"disabled()\" (click)=\"searchControl.reset(); $event.stopPropagation()\">\n                    <mat-icon>close</mat-icon>\n                </button>\n            </mat-form-field>\n\n            <mat-selection-list [attr.id]=\"field.id\" [multiple]=\"field.multiple\" [ngClass]=\"ngClass()\" [disabled]=\"disabled()\" (selectionChange)=\"onSelectionChange($event)\">\n                @if(optionFiltered$ | async; as options){ @if(field.virtualScroll){\n                <cdk-virtual-scroll-viewport [itemSize]=\"field.itemSize || 20\" style=\"height:100%\">\n                    @if (!field.autocompleteComponent) {\n                    <mat-list-option *cdkVirtualFor=\"let item of options; templateCacheSize: 0\" [value]=\"item\" [selected]=\"selection.isSelected(item)\">\n                        {{ (field.property ? item[field.property] : item) | klesTransform : field.pipeTransform }}\n                    </mat-list-option>\n                    } @else{\n                    <mat-list-option *cdkVirtualFor=\"let item of options; templateCacheSize: 0\" [value]=\"item\" [selected]=\"selection.isSelected(item)\">\n                        <ng-container klesComponent [component]=\"field.autocompleteComponent\" [value]=\"item\" [field]=\"field\"></ng-container>\n                    </mat-list-option>\n                    }\n                </cdk-virtual-scroll-viewport>\n                } @else{ @if (!field.autocompleteComponent) { @for (item of options; track item) {\n                <mat-list-option [value]=\"item\" [selected]=\"selection.isSelected(item)\">\n                    {{ (field.property ? item[field.property] : item) | klesTransform : field.pipeTransform }}\n                </mat-list-option>\n                } } @else { @for (item of options; track item) {\n                <mat-list-option [value]=\"item\" [selected]=\"selection.isSelected(item)\">\n                    <ng-container klesComponent [component]=\"field.autocompleteComponent\" [value]=\"item\" [field]=\"field\"></ng-container>\n                </mat-list-option>\n                } } } }@else{\n                <mat-spinner></mat-spinner>\n                }\n            </mat-selection-list>\n        </div>\n    `,\n    styles: [\n        `\n            .selection-list {\n                display: flex;\n                flex-direction: column;\n                gap: 5px;\n            }\n        `,\n        `\n            mat-selection-list {\n                width: 100%;\n                height: 250px;\n                overflow: auto;\n                flex-grow: 1;\n            }\n        `,\n    ],\n    standalone: true,\n    imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, MatIconModule, MatButtonModule, MatProgressSpinnerModule, ScrollingModule, KlesTransformPipe, KlesComponentDirective, MatListModule, KlesFocusTargetDirective],\n})\nexport class KlesFormSelectionListSearchComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n    selection!: KlesSelectionModel<any>;\n    options$: Observable<any[]> = of([]);\n    searchControl = new FormControl<string | null>('');\n\n    optionFiltered$: Observable<any[]> = of([]);\n    private readonly control = this.group.controls[this.field.name];\n    private readonly controlStatus = toSignal(this.control.statusChanges, {\n        initialValue: this.control.status,\n    });\n    readonly disabled = computed(() => {\n        this.controlStatus();\n        return this.control.disabled;\n    });\n\n    ngOnInit() {\n        if (!this.field.subscriptSizing) {\n            this.field.subscriptSizing = 'dynamic';\n        }\n        super.ngOnInit();\n\n        this.selection = new KlesSelectionModel<any>(this.field.multiple || false, [], true, (o1: any, o2: any) => {\n            if (this.field.property) {\n                return o1?.[this.field.property] === o2?.[this.field.property];\n            } else {\n                return o1 === o2;\n            }\n        });\n\n        if (this.field.value) {\n            this.selection.select(Array.isArray(this.field.value) ? this.field.value : [this.field.value]);\n        }\n\n        if (this.field.options instanceof Observable) {\n            this.options$ = this.field.options.pipe(shareReplay(1));\n        }\n\n        this.syncSearchDisabledState();\n        this.control.statusChanges.pipe(takeUntil(this._onDestroy)).subscribe(() => this.syncSearchDisabledState());\n\n        this.control.valueChanges.pipe(takeUntil(this._onDestroy)).subscribe((value) => {\n            this.selection.setSelection(Array.isArray(value) ? value : [value], { emitEvent: false });\n        });\n\n        this.selection.changed.pipe(takeUntil(this._onDestroy)).subscribe((change) => {\n            this.control.patchValue(change.source.selected);\n            this.control.markAllAsTouched();\n            this.control.markAsDirty();\n        });\n\n        this.optionFiltered$ = this.searchControl.valueChanges.pipe(\n            takeUntil(this._onDestroy),\n            startWith(''),\n            debounceTime(this.field.debounceTime || 0),\n            distinctUntilChanged(),\n            map((value) => value?.toLowerCase()),\n            switchMap((value) => {\n                if (this.field.options instanceof Function) {\n                    return this.field.options(value);\n                } else {\n                    return (this.field.options instanceof Observable ? this.options$ : of(this.field.options ?? [])).pipe(\n                        map((options) => {\n                            if (!value) {\n                                return options;\n                            }\n                            return options.filter((option) => {\n                                return (\n                                    (!this.field.property && option?.toString().toLowerCase().includes(value)) ||\n                                    (this.field.property && option?.[this.field.property]?.toString().toLowerCase().includes(value)) ||\n                                    (this.field.searchKeys && this.field.searchKeys.some((key) => option?.[key].toString().toLowerCase().includes(value)))\n                                );\n                            });\n                        }),\n                    );\n                }\n            }),\n        );\n    }\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n    }\n\n    onSelectionChange(selection: MatSelectionListChange) {\n        if (this.disabled()) {\n            return;\n        }\n\n        selection.options.forEach((option) => {\n            option.selected ? this.selection.select([option.value]) : this.selection.deselect([option.value]);\n        });\n    }\n\n    private syncSearchDisabledState(): void {\n        if (this.control.disabled && this.searchControl.enabled) {\n            this.searchControl.disable({ emitEvent: false });\n        } else if (this.control.enabled && this.searchControl.disabled) {\n            this.searchControl.enable({ emitEvent: false });\n        }\n    }\n}\n","\nimport { Component, ElementRef, forwardRef, Input, signal, viewChild } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n    selector: 'kles-file-control',\n    template: ` <input #fileInput [accept]=\"accept\" [multiple]=\"multiple\" [disabled]=\"disabled\" (change)=\"onFileSelected($event.target)\" (blur)=\"markAsTouched()\" type=\"file\" /> `,\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => KlesFileControlComponent),\n            multi: true,\n        },\n    ],\n    standalone: true,\n    imports: [FormsModule],\n})\nexport class KlesFileControlComponent implements ControlValueAccessor {\n    private readonly fileInput = viewChild<ElementRef<HTMLInputElement>>('fileInput');\n    private readonly disabledState = signal(false);\n\n    @Input() get disabled(): boolean {\n        return this.disabledState();\n    }\n    set disabled(value: boolean) {\n        this.disabledState.set(value);\n    }\n\n    @Input() accept = '*.*';\n    @Input() multiple = false;\n\n    value: KlesFileControlValue = null;\n\n    private onChange: (value: KlesFileControlValue) => void = () => {};\n    private onTouched: () => void = () => {};\n\n    writeValue(value: KlesFileControlValue | undefined): void {\n        this.value = value ?? null;\n\n        if (!value || value.length === 0) {\n            const input = this.fileInput()?.nativeElement;\n            if (input) {\n                input.value = '';\n            }\n        }\n    }\n\n    async onFileSelected(input: HTMLInputElement): Promise<void> {\n        const fileList = input.files;\n\n        if (fileList && fileList.length > 0) {\n            const files: KlesFileValue[] = [];\n\n            for (let i = 0; i < fileList.length; i++) {\n                const currentFile = fileList.item(i);\n\n                if (!currentFile) {\n                    continue;\n                }\n\n                files[i] = {\n                    name: currentFile.name,\n                    content: await currentFile.arrayBuffer(),\n                    type: currentFile.type,\n                    size: currentFile.size,\n                };\n            }\n\n            this.value = files;\n            this.onChange(this.value);\n        } else {\n            this.value = null;\n            this.onChange(this.value);\n        }\n\n        this.markAsTouched();\n    }\n\n    registerOnChange(fn: (value: KlesFileControlValue) => void): void {\n        this.onChange = fn;\n    }\n\n    registerOnTouched(fn: () => void): void {\n        this.onTouched = fn;\n    }\n\n    markAsTouched(): void {\n        this.onTouched();\n    }\n\n    setDisabledState?(isDisabled: boolean): void {\n        this.disabled = isDisabled;\n    }\n}\n\nexport interface KlesFileValue {\n    name: string;\n    content: ArrayBuffer;\n    type?: string;\n    size?: number;\n}\n\nexport type KlesFileControlValue = KlesFileValue[] | null;\n","import { KlesFieldAbstract } from './field.abstract';\nimport { Component } from '@angular/core';\nimport { EnumType } from '../enums/type.enum';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { KlesFileControlComponent } from '../forms/file-control.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\n@FieldMapper({ type: EnumType.file })\n@Component({\n    selector: 'kles-form-file',\n    template: `\n        <div [formGroup]=\"group\">\n            <kles-file-control [attr.id]=\"field.id\" [formControlName]=\"field.name\" [accept]=\"field.accept ?? '*.*'\" [disabled]=\"field.disabled ?? false\" [multiple]=\"field.multiple ?? false\"></kles-file-control>\n        </div>\n    `,\n    styles: ['mat-form-field {width: calc(100%)}'],\n    standalone: true,\n    imports: [KlesFileControlComponent, FormsModule, ReactiveFormsModule],\n})\nexport class KlesFormFileComponent extends KlesFieldAbstract {}\n","import { Component } from \"@angular/core\";\nimport { KlesFieldAbstract } from './field.abstract';\nimport { CommonModule } from \"@angular/common\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { MatFormField, MatLabel, MatHint, MatError, MatSuffix } from \"@angular/material/form-field\";\nimport { MatInput } from \"@angular/material/input\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { MatErrorMessageDirective } from \"../directive/mat-error-message.directive\";\nimport { KlesMaterialDatepickerModule } from \"@3kles/kles-material-datepicker\";\nimport { KlesFocusTargetDirective } from \"../directive/focus-target.directive\";\n\n@Component({\n    selector: 'kles-form-datetimepicker',\n    template: `\n    <mat-form-field [subscriptSizing]=\"field.subscriptSizing ?? 'fixed'\" class=\"margin-top\" [color]=\"color()\" [formGroup]=\"group\" [appearance]=\"appearance()\">\n        @if (label()) {\n            <mat-label>{{ label() }}</mat-label>\n        }\n\n        <input klesFocusTarget matInput [matTooltip]=\"tooltip()\" [attr.id]=\"field.id\" [ngClass]=\"field.ngClass\" [matDatepicker]=\"picker\" [formControlName]=\"field.name\"\n            [placeholder]=\"placeholder()\" [min]=\"field.min\" [max]=\"field.max\">\n        <div matSuffix class=\"suffix\">\n            <mat-datepicker-toggle [for]=\"picker\"></mat-datepicker-toggle>\n            <ng-content></ng-content>\n        </div>\n\n        <kles-mat-datepicker #picker [hasBackdrop]=\"false\"></kles-mat-datepicker>\n\n        @if (hint()) {\n            <mat-hint>{{ hint() }}</mat-hint>\n        }\n\n        <mat-error matErrorMessage [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\"></mat-error>\n    </mat-form-field>\n    `,\n    styles: [\n        'mat-form-field { width: calc(100%); }',\n        '.suffix { display: flex; flex-direction: row; }'\n    ],\n    standalone: true,\n    imports: [\n        CommonModule,\n        ReactiveFormsModule,\n        MatFormField,\n        MatLabel,\n        MatHint,\n        MatError,\n        MatSuffix,\n        MatInput,\n        MatTooltip,\n        MatDatepickerModule,\n        MatErrorMessageDirective,\n        KlesMaterialDatepickerModule,\n        KlesFocusTargetDirective\n    ]\n})\nexport class KlesFormDateTimeComponent extends KlesFieldAbstract {\n}\n","import { Component, inject, viewChild } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';\nimport { Clipboard, ClipboardModule } from '@angular/cdk/clipboard';\n\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { IKlesField } from '../../interfaces/field.interface';\nimport { IKlesFieldConfig } from '../../interfaces/field.config.interface';\nimport { FIELD, GROUP, SIBLING_FIELDS } from '../../token';\nimport { KlesDynamicFormIntl } from '../../dynamic-form-intl';\n\n@Component({\n    selector: 'kles-form-copy',\n    template: `\n        <button #tooltip=\"matTooltip\" matIconButton color=\"primary\" type=\"button\" (click)=\"copy($event)\" [matTooltipDisabled]=\"true\" [matTooltip]=\"tooltipText\" matTooltipPosition=\"above\">\n            <mat-icon>content_copy</mat-icon>\n        </button>\n    `,\n    standalone: true,\n    imports: [MatIconModule, MatButtonModule, MatTooltipModule, ClipboardModule],\n})\nexport class KlesFormCopyComponent implements IKlesField {\n    private readonly tooltip = viewChild.required<MatTooltip>('tooltip');\n\n    readonly field = inject<IKlesFieldConfig>(FIELD);\n    readonly group = inject<FormGroup<any>>(GROUP);\n    readonly siblingFields = inject<IKlesFieldConfig[]>(SIBLING_FIELDS);\n    readonly intl = inject(KlesDynamicFormIntl);\n    private readonly clipboard = inject(Clipboard);\n\n    readonly tooltipText = this.intl.copy;\n\n    copy(event: MouseEvent): void {\n        event.stopPropagation();\n        const copyText = (this.field.property ? this.group.controls[this.field.name].value?.[this.field.property] : this.group.controls[this.field.name].value) || '';\n        this.clipboard.copy(copyText);\n\n        const tooltip = this.tooltip();\n        tooltip.disabled = false;\n        tooltip.show();\n        setTimeout(() => {\n            tooltip.disabled = true;\n        }, 1000);\n    }\n}\n","import { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { defer, Observable, of } from 'rxjs';\n\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { IKlesFieldConfig } from '../interfaces/field.config.interface';\nimport { KlesFieldAbstract } from './field.abstract';\n\n/**\n * Condition statique ou calculée à partir du contexte du field.\n */\nexport type KlesActionMenuCondition<TContext = unknown> = boolean | ((context: TContext | null, field: IKlesFieldConfig, group: UntypedFormGroup) => boolean);\n\n/**\n * Configuration d'une entrée du menu.\n *\n * Le callback n'est pas placé ici :\n * toutes les actions sont gérées par field.onAction.\n */\nexport interface KlesActionMenuItem<TContext = unknown> {\n    id: string;\n    label: string;\n\n    icon?: string;\n    iconSvg?: string;\n\n    visible?: KlesActionMenuCondition<TContext>;\n    disabled?: KlesActionMenuCondition<TContext>;\n\n    dividerBefore?: boolean;\n\n    color?: 'default' | 'warn';\n}\n\n/**\n * Configuration spécialisée du field action-menu.\n */\nexport interface KlesActionMenuFieldConfig<TContext = unknown> extends IKlesFieldConfig {\n    options?: KlesActionMenuItem<TContext>[] | Observable<KlesActionMenuItem<TContext>[]> | ((value?: string, group?: { [key: string]: any }) => Observable<KlesActionMenuItem<TContext>[]>);\n\n    menuXPosition?: 'before' | 'after';\n    menuYPosition?: 'above' | 'below';\n}\n\n@FieldMapper({\n    type: 'actionMenu',\n})\n@Component({\n    selector: 'kles-form-action-menu',\n    standalone: true,\n    imports: [CommonModule, MatButtonModule, MatDividerModule, MatIconModule, MatMenuModule, MatTooltipModule],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        <button\n            matIconButton\n            type=\"button\"\n            [attr.id]=\"field.id\"\n            [attr.aria-label]=\"ariaLabel()\"\n            [disabled]=\"disabled()\"\n            [matTooltip]=\"tooltip() || ''\"\n            [matMenuTriggerFor]=\"actionMenu\"\n            [ngClass]=\"ngClass()\"\n            [ngStyle]=\"ngStyle()\"\n            (click)=\"onTriggerClick($event)\"\n        >\n            @if (iconSvg()) {\n                <mat-icon [svgIcon]=\"iconSvg()!\" />\n            } @else {\n                <mat-icon>\n                    {{ icon() || 'more_vert' }}\n                </mat-icon>\n            }\n        </button>\n\n        <mat-menu #actionMenu=\"matMenu\" [xPosition]=\"actionField.menuXPosition || 'before'\" [yPosition]=\"actionField.menuYPosition || 'below'\">\n            @for (action of visibleActions(); track action.id) {\n                @if (action.dividerBefore) {\n                    <mat-divider />\n                }\n\n                <button mat-menu-item type=\"button\" [disabled]=\"isDisabled(action)\" [class.kles-action-menu__warn]=\"action.color === 'warn'\" (click)=\"execute(action, $event)\">\n                    @if (action.iconSvg) {\n                        <mat-icon [svgIcon]=\"action.iconSvg\" />\n                    } @else if (action.icon) {\n                        <mat-icon>\n                            {{ action.icon }}\n                        </mat-icon>\n                    }\n\n                    <span>\n                        {{ action.label }}\n                    </span>\n                </button>\n            }\n        </mat-menu>\n    `,\n    styles: `\n        .kles-action-menu__warn {\n            color: var(--mat-sys-error);\n        }\n\n        .kles-action-menu__warn mat-icon {\n            color: var(--mat-sys-error);\n        }\n    `,\n})\nexport class KlesFormActionMenuComponent<TContext = unknown> extends KlesFieldAbstract<TContext> {\n    /**\n     * Configuration du field avec le typage spécialisé.\n     */\n    readonly actionField = this.field as KlesActionMenuFieldConfig<TContext>;\n\n    private readonly control = this.group.controls[this.field.name];\n\n    private readonly controlStatus = toSignal(this.control.statusChanges, {\n        initialValue: this.control.status,\n    });\n\n    /**\n     * Options statiques ou asynchrones.\n     */\n    private readonly actionsSource$ = defer(() => this.resolveOptions());\n\n    readonly actions = toSignal(this.actionsSource$, {\n        initialValue: [] as KlesActionMenuItem<TContext>[],\n    });\n\n    readonly disabled = computed(() => {\n        this.controlStatus();\n        return this.control.disabled;\n    });\n\n    readonly visibleActions = computed(() => this.actions().filter((action) => this.resolveCondition(action.visible, true)));\n\n    readonly ariaLabel = computed(() => this.label() || this.tooltip() || 'Actions');\n\n    onTriggerClick(event: MouseEvent): void {\n        event.stopPropagation();\n    }\n\n    isDisabled(action: KlesActionMenuItem<TContext>): boolean {\n        return this.disabled() || this.resolveCondition(action.disabled, false);\n    }\n\n    execute(action: KlesActionMenuItem<TContext>, event: MouseEvent): void {\n        if (this.isDisabled(action)) {\n            event.stopPropagation();\n            return;\n        }\n\n        this.triggerAction(action.id, event, action);\n    }\n\n    private resolveCondition(condition: KlesActionMenuCondition<TContext> | undefined, defaultValue: boolean): boolean {\n        if (typeof condition === 'function') {\n            return condition(this.context?.() ?? null, this.field, this.group);\n        }\n\n        return condition ?? defaultValue;\n    }\n\n    private resolveOptions(): Observable<KlesActionMenuItem<TContext>[]> {\n        const options = this.actionField.options;\n\n        if (options instanceof Observable) {\n            return options;\n        }\n\n        if (typeof options === 'function') {\n            return options(undefined, this.group.getRawValue());\n        }\n\n        return of(options ?? []);\n    }\n}\n","import { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n    selector: 'app-kles-form-tile',\n    standalone: true,\n    imports: [CommonModule, MatTooltipModule, MatIconModule],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        <div class=\"kles-tile\" [ngClass]=\"ngClass()\" [ngStyle]=\"ngStyle()\" [matTooltip]=\"tooltip()\">\n            @if (imageUrl()) {\n                <img class=\"kles-tile__image\" [src]=\"imageUrl()\" [alt]=\"imageAlt()\" />\n            } @else if (icon()) {\n                <mat-icon class=\"kles-tile__icon\">\n                    {{ icon() }}\n                </mat-icon>\n            }\n\n            <div class=\"kles-tile__content\">\n                @if (displayValue(); as value) {\n                    <div class=\"kles-tile__label\">\n                        {{ value }}\n                    </div>\n                }\n\n                @if (hint()) {\n                    <div class=\"kles-tile__hint\">\n                        {{ hint() }}\n                    </div>\n                }\n            </div>\n        </div>\n    `,\n    styles: `\n        :host {\n            display: flex;\n            justify-content: inherit;\n            text-align:left;\n        }\n\n        .kles-tile {\n            display: flex;\n            align-items: center;\n            min-width: 0;\n            gap: 12px;\n            padding: 8px;\n        }\n\n        .kles-tile__image,\n        .kles-tile__icon {\n            width: 36px;\n            height: 36px;\n            flex: 0 0 36px;\n        }\n\n        .kles-tile__icon {\n            display: flex;\n            align-items: center;\n            justify-content: center;\n\n            color: var(--mat-sys-primary);\n\n            font-size: 28px;\n        }\n\n        .kles-tile__image {\n            object-fit: contain;\n        }\n\n        .kles-tile__content {\n            display: flex;\n            flex-direction: column;\n            min-width: 0;\n            gap: 2px;\n        }\n\n        .kles-tile__label {\n            overflow: hidden;\n            color: var(--mat-sys-on-surface);\n            font-size: 14px;\n            font-weight: 500;\n            line-height: 20px;\n            text-overflow: ellipsis;\n        }\n\n        .kles-tile__hint {\n            overflow: hidden;\n            color: var(--mat-sys-on-surface-variant);\n            font-size: 12px;\n            font-weight: 400;\n            line-height: 16px;\n            text-overflow: ellipsis;\n        }\n    `,\n})\nexport class KlesFormTileComponent extends KlesFieldAbstract {\n    private readonly control = this.group.controls[this.field.name];\n\n    private readonly controlValue = toSignal(this.control.valueChanges, {\n        initialValue: this.control.value,\n    });\n\n    readonly formattedValue = computed(() => {\n        const value = this.controlValue();\n\n        if (value == null) {\n            return '';\n        }\n\n        if (this.field.displayWith) {\n            return this.field.displayWith(value) ?? '';\n        }\n\n        if (this.field.property && typeof value === 'object') {\n            return String(value[this.field.property] ?? '');\n        }\n\n        return String(value);\n    });\n\n    readonly displayValue = computed(() => this.formattedValue() || this.label() || '');\n}\n","import { ChangeDetectorRef, Component, computed, DEFAULT_CURRENCY_CODE, Directive, ElementRef, forwardRef, HostListener, inject, Input, LOCALE_ID, OnChanges, Renderer2, SimpleChanges } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatError, MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { EnumType } from '../enums/type.enum';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { MatErrorMessageDirective } from '../directive/mat-error-message.directive';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { KlesFocusTargetDirective } from '../directive/focus-target.directive';\n\n/**\n * ValueAccessor monétaire.\n *\n * La valeur du FormControl reste un number | null.\n * Seule la valeur affichée dans l'input est formatée.\n */\n@Directive({\n    selector: 'input[klesCurrency]',\n    standalone: true,\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => KlesCurrencyValueAccessorDirective),\n            multi: true,\n        },\n    ],\n})\nexport class KlesCurrencyValueAccessorDirective implements ControlValueAccessor, OnChanges {\n    private readonly elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n    private readonly renderer = inject(Renderer2);\n\n    @Input() currency = 'EUR';\n    @Input() locale = 'fr-FR';\n\n    @Input()\n    currencyDisplay: 'symbol' | 'narrowSymbol' | 'code' | 'name' = 'symbol';\n\n    @Input() minimumFractionDigits?: number;\n    @Input() maximumFractionDigits?: number;\n\n    @Input() useGrouping = true;\n    @Input() allowNegative = true;\n\n    private currentValue: number | null = null;\n    private focused = false;\n\n    private onChange: (value: number | null) => void = () => {};\n\n    private onTouched: () => void = () => {};\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (!this.focused) {\n            this.renderFormattedValue();\n        }\n    }\n\n    writeValue(value: unknown): void {\n        this.currentValue = this.normalizeModelValue(value);\n\n        if (!this.focused) {\n            this.renderFormattedValue();\n        }\n    }\n\n    registerOnChange(callback: (value: number | null) => void): void {\n        this.onChange = callback;\n    }\n\n    registerOnTouched(callback: () => void): void {\n        this.onTouched = callback;\n    }\n\n    setDisabledState(disabled: boolean): void {\n        this.renderer.setProperty(this.elementRef.nativeElement, 'disabled', disabled);\n    }\n\n    @HostListener('focus')\n    handleFocus(): void {\n        this.focused = true;\n\n        this.setInputValue(this.formatEditableValue(this.currentValue));\n    }\n\n    @HostListener('input', ['$event'])\n    handleInput(event: Event): void {\n        const input = event.target as HTMLInputElement;\n\n        const rawValue = input.value;\n\n        if (rawValue.trim() === '') {\n            this.currentValue = null;\n            this.onChange(null);\n            return;\n        }\n\n        const parsedValue = this.parseLocalizedNumber(rawValue);\n\n        /*\n         * Une saisie intermédiaire comme \"-\" ou \",\"\n         * n'écrase pas encore le FormControl.\n         */\n        if (parsedValue === null) {\n            return;\n        }\n\n        if (!this.allowNegative && parsedValue < 0) {\n            return;\n        }\n\n        this.currentValue = parsedValue;\n        this.onChange(parsedValue);\n    }\n\n    @HostListener('blur')\n    handleBlur(): void {\n        this.focused = false;\n\n        this.renderFormattedValue();\n        this.onTouched();\n    }\n\n    private normalizeModelValue(value: unknown): number | null {\n        if (value === null || value === undefined || value === '') {\n            return null;\n        }\n\n        const numberValue = typeof value === 'number' ? value : Number(value);\n\n        return Number.isFinite(numberValue) ? numberValue : null;\n    }\n\n    private renderFormattedValue(): void {\n        this.setInputValue(this.formatCurrency(this.currentValue));\n    }\n\n    private setInputValue(value: string): void {\n        this.renderer.setProperty(this.elementRef.nativeElement, 'value', value);\n    }\n\n    private formatCurrency(value: number | null): string {\n        if (value === null) {\n            return '';\n        }\n\n        const options = this.createCurrencyFormatOptions();\n\n        return new Intl.NumberFormat(this.locale, options).format(value);\n    }\n\n    /**\n     * Pendant l'édition, on retire le symbole et\n     * les séparateurs de milliers.\n     */\n    private formatEditableValue(value: number | null): string {\n        if (value === null) {\n            return '';\n        }\n\n        return new Intl.NumberFormat(this.locale, {\n            useGrouping: false,\n            maximumFractionDigits: this.maximumFractionDigits ?? 20,\n        }).format(value);\n    }\n\n    private createCurrencyFormatOptions(): Intl.NumberFormatOptions {\n        const minimum = this.minimumFractionDigits;\n\n        let maximum = this.maximumFractionDigits;\n\n        if (minimum !== undefined && maximum !== undefined && maximum < minimum) {\n            maximum = minimum;\n        }\n\n        return {\n            style: 'currency',\n            currency: this.currency,\n            currencyDisplay: this.currencyDisplay,\n            useGrouping: this.useGrouping,\n\n            ...(minimum !== undefined\n                ? {\n                      minimumFractionDigits: minimum,\n                  }\n                : {}),\n\n            ...(maximum !== undefined\n                ? {\n                      maximumFractionDigits: maximum,\n                  }\n                : {}),\n        };\n    }\n\n    private parseLocalizedNumber(rawValue: string): number | null {\n        const parts = new Intl.NumberFormat(this.locale).formatToParts(-12345.6);\n\n        const groupSeparator = parts.find((part) => part.type === 'group')?.value;\n\n        const decimalSeparator = parts.find((part) => part.type === 'decimal')?.value ?? '.';\n\n        const minusSign = parts.find((part) => part.type === 'minusSign')?.value ?? '-';\n\n        let normalized = this.normalizeLocalizedDigits(rawValue);\n\n        if (groupSeparator) {\n            normalized = normalized.split(groupSeparator).join('');\n        }\n\n        normalized = normalized.split(decimalSeparator).join('.');\n\n        normalized = normalized.split(minusSign).join('-');\n\n        /*\n         * Retire les symboles monétaires,\n         * espaces et codes de devise.\n         */\n        normalized = normalized.replace(/[^0-9+\\-.]/g, '');\n\n        if (normalized === '' || normalized === '-' || normalized === '+' || normalized === '.' || normalized === '-.' || normalized === '+.') {\n            return null;\n        }\n\n        const parsed = Number(normalized);\n\n        return Number.isFinite(parsed) ? parsed : null;\n    }\n\n    /**\n     * Convertit également les chiffres localisés\n     * vers 0-9.\n     */\n    private normalizeLocalizedDigits(value: string): string {\n        const formatter = new Intl.NumberFormat(this.locale, {\n            useGrouping: false,\n        });\n\n        let normalized = value;\n\n        for (let digit = 0; digit <= 9; digit++) {\n            const localizedDigit = formatter.formatToParts(digit).find((part) => part.type === 'integer')?.value;\n\n            if (localizedDigit) {\n                normalized = normalized.split(localizedDigit).join(String(digit));\n            }\n        }\n\n        return normalized;\n    }\n}\n\n@FieldMapper({\n    type: EnumType.currency,\n})\n@Component({\n    selector: 'kles-form-currency',\n    standalone: true,\n    imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, MatIconModule, MatTooltipModule, MatProgressSpinnerModule, MatError, MatErrorMessageDirective, KlesCurrencyValueAccessorDirective, KlesFocusTargetDirective],\n    template: `\n        <mat-form-field [formGroup]=\"group\" [color]=\"color()\" [subscriptSizing]=\"field.subscriptSizing ?? 'fixed'\" [appearance]=\"appearance()\" class=\"form-element field-bottom\">\n            @if (label()) {\n                <mat-label>\n                    {{ label() }}\n                </mat-label>\n            }\n\n            @if (icon()) {\n                <mat-icon matPrefix>\n                    {{ icon() }}\n                </mat-icon>\n            }\n\n            <input\n                klesFocusTarget\n                matInput\n                klesCurrency\n                type=\"text\"\n                inputmode=\"decimal\"\n                autocomplete=\"off\"\n                [attr.id]=\"field.id\"\n                [attr.aria-valuemin]=\"min()\"\n                [attr.aria-valuemax]=\"max()\"\n                [ngClass]=\"ngClass()\"\n                [matTooltip]=\"tooltip()\"\n                [formControlName]=\"field.name\"\n                [placeholder]=\"placeholder()\"\n                [currency]=\"currencyOptions()?.code || defaultCurrencyCode\"\n                [locale]=\"currencyOptions()?.locale || localeId\"\n                [currencyDisplay]=\"currencyOptions()?.display || 'symbol'\"\n                [minimumFractionDigits]=\"currencyOptions()?.minimumFractionDigits\"\n                [maximumFractionDigits]=\"currencyOptions()?.maximumFractionDigits\"\n                [useGrouping]=\"currencyOptions()?.useGrouping !== false\"\n                [allowNegative]=\"currencyOptions()?.allowNegative !== false\"\n                (focus)=\"onFocus()\"\n                (blur)=\"onBlur()\"\n            />\n\n            @if (hint()) {\n                <mat-hint>\n                    {{ hint() }}\n                </mat-hint>\n            }\n\n            @if (field.subComponents || field.clearable || isPending()) {\n                <div matSuffix class=\"suffix\">\n                    @if (isPending()) {\n                        <mat-spinner mode=\"indeterminate\" diameter=\"21\" />\n                    }\n\n                    @if (field.subComponents || field.clearable) {\n                        <ng-content />\n                    }\n                </div>\n            }\n\n            <mat-error matErrorMessage [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\" />\n        </mat-form-field>\n    `,\n    styles: [\n        `\n            mat-form-field {\n                width: 100%;\n            }\n        `,\n    ],\n    styleUrls: ['../styles/mat-suffix.style.scss', '../styles/mat-field-bottom.style.scss'],\n})\nexport class KlesFormCurrencyComponent extends KlesFieldAbstract {\n    readonly localeId = inject(LOCALE_ID);\n\n    public readonly currencyOptions = computed(() => this.resolvedFieldUi()?.currencyOptions);\n\n    readonly defaultCurrencyCode = inject(DEFAULT_CURRENCY_CODE);\n}\n","import { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { CommonModule } from '@angular/common';\nimport { startWith } from 'rxjs';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\nimport { EnumType } from '../enums/type.enum';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { IKlesStatusDefinition } from '../interfaces/field.config.interface';\nimport { KlesFieldAbstract } from './field.abstract';\n\n@FieldMapper({\n    type: EnumType.status,\n})\n@Component({\n    selector: 'kles-form-status',\n    standalone: true,\n    imports: [CommonModule, MatIconModule, MatTooltipModule, MatProgressSpinnerModule],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        <span [ngClass]=\"ngClass()\" [ngStyle]=\"ngStyle()\">\n            @if (pending()) {\n                <mat-spinner mode=\"indeterminate\" diameter=\"18\" />\n            } @else if (resolvedStatus(); as status) {\n                <span\n                    class=\"kles-status\"\n                    [class.kles-status--chip]=\"statusAppearance() === 'chip'\"\n                    [class.kles-status--badge]=\"statusAppearance() === 'badge'\"\n                    [class.kles-status--text]=\"statusAppearance() === 'text'\"\n                    [class.kles-status--neutral]=\"status.tone === 'neutral'\"\n                    [class.kles-status--info]=\"status.tone === 'info'\"\n                    [class.kles-status--success]=\"status.tone === 'success'\"\n                    [class.kles-status--warning]=\"status.tone === 'warning'\"\n                    [class.kles-status--error]=\"status.tone === 'error'\"\n                    [class.kles-status--disabled]=\"disabled()\"\n                    [ngClass]=\"status.ngClass\"\n                    [matTooltip]=\"status.tooltip || tooltip() || ''\"\n                    [attr.aria-label]=\"status.ariaLabel || status.label\"\n                >\n                    @if (status.iconSvg) {\n                        <mat-icon class=\"kles-status__icon\" [svgIcon]=\"status.iconSvg\" />\n                    } @else if (status.icon) {\n                        <mat-icon class=\"kles-status__icon\">\n                            {{ status.icon }}\n                        </mat-icon>\n                    } @else if (showDot()) {\n                        <span class=\"kles-status__dot\" aria-hidden=\"true\"></span>\n                    }\n\n                    <span class=\"kles-status__label\">\n                        {{ status.label }}\n                    </span>\n                </span>\n            }\n        </span>\n    `,\n    styles: `\n        :host {\n            display: flex;\n            justify-content: inherit;\n        }\n\n        .kles-status {\n            display: inline-flex;\n            align-items: center;\n            gap: 6px;\n\n            box-sizing: border-box;\n            color: var(--kles-status-color, var(--mat-sys-on-surface-variant));\n            background: var(--kles-status-container, var(--mat-sys-surface-container-high));\n        }\n\n        .kles-status--chip {\n            min-height: 28px;\n            padding: 3px 10px;\n            border-radius: 999px;\n            font: var(--mat-sys-label-medium);\n        }\n\n        .kles-status--badge {\n            min-height: 22px;\n            padding: 2px 7px;\n            border-radius: 4px;\n            font: var(--mat-sys-label-small);\n        }\n\n        .kles-status--text {\n            padding: 0;\n            border-radius: 0;\n            background: transparent;\n        }\n\n        .kles-status__icon {\n            display: inline-flex;\n            align-items: center;\n            justify-content: center;\n\n            width: 20px;\n            height: 20px;\n            flex: 0 0 20px;\n            line-height: 20px;\n\n            overflow: visible;\n            vertical-align: middle;\n        }\n\n        .kles-status__icon svg {\n            width: 100%;\n            height: 100%;\n            overflow: visible;\n        }\n\n        .kles-status__dot {\n            width: 8px;\n            height: 8px;\n            flex: 0 0 8px;\n\n            border-radius: 50%;\n            background: currentColor;\n        }\n\n        .kles-status__label {\n            overflow: hidden;\n            text-overflow: ellipsis;\n            white-space: nowrap;\n        }\n\n        .kles-status--disabled {\n            opacity: 0.56;\n        }\n\n        .kles-status--neutral {\n            --kles-status-color: var(--mat-sys-on-surface-variant);\n            --kles-status-container: var(--mat-sys-surface-container-high);\n        }\n\n        .kles-status--info {\n            --kles-status-color: var(--mat-sys-on-primary-container);\n            --kles-status-container: var(--mat-sys-primary-container);\n        }\n\n        .kles-status--success {\n            --kles-status-color: var(--kles-status-success-color, #1b5e20);\n            --kles-status-container: var(--kles-status-success-container, #d7f5df);\n        }\n\n        .kles-status--warning {\n            --kles-status-color: var(--kles-status-warning-color, #7a4f00);\n            --kles-status-container: var(--kles-status-warning-container, #ffecb3);\n        }\n\n        .kles-status--error {\n            --kles-status-color: var(--mat-sys-on-error-container);\n            --kles-status-container: var(--mat-sys-error-container);\n        }\n    `,\n})\nexport class KlesFormStatusComponent<TContext = unknown> extends KlesFieldAbstract<TContext> {\n    private readonly control = this.group.controls[this.field.name];\n\n    private readonly controlValue = toSignal(this.control.valueChanges.pipe(startWith(this.control.value)), {\n        initialValue: this.control.value,\n    });\n\n    private readonly controlStatus = toSignal(this.control.statusChanges.pipe(startWith(this.control.status)), {\n        initialValue: this.control.status,\n    });\n\n    readonly statusAppearance = computed(() => this.field.statusOptions?.appearance ?? 'chip');\n\n    readonly showDot = computed(() => this.field.statusOptions?.showDot ?? true);\n\n    readonly disabled = computed(() => {\n        this.controlStatus();\n\n        return this.control.disabled;\n    });\n\n    readonly pending = computed(() => {\n        this.controlStatus();\n\n        return this.control.pending || this.field.pending === true;\n    });\n\n    readonly resolvedStatus = computed<IKlesStatusDefinition | null>(() => {\n        const value = this.controlValue();\n        const options = this.field.statusOptions;\n\n        if (options?.resolve) {\n            return options.resolve(value, this.context?.() ?? null, this.field, this.group);\n        }\n\n        const key = this.resolveStatusKey(value);\n\n        const configuredStatus = options?.values?.[key];\n\n        if (configuredStatus) {\n            return {\n                tone: 'neutral',\n                ...configuredStatus,\n            };\n        }\n\n        if (options?.fallback) {\n            return {\n                tone: 'neutral',\n                ...options.fallback,\n            };\n        }\n\n        if (value === null || value === undefined || value === '') {\n            return null;\n        }\n\n        return {\n            label: this.resolveDefaultLabel(value),\n            tone: 'neutral',\n        };\n    });\n\n    private resolveStatusKey(value: any): string {\n        if (this.field.property && value !== null && typeof value === 'object') {\n            return String(value[this.field.property]);\n        }\n\n        return String(value);\n    }\n\n    private resolveDefaultLabel(value: any): string {\n        if (this.field.property && value !== null && typeof value === 'object') {\n            return String(value[this.field.property] ?? '');\n        }\n\n        return String(value);\n    }\n}\n","import { AsyncPipe } from '@angular/common';\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\nimport { Component, inject, OnInit } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatAutocompleteModule, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { MatChipInput, MatChipInputEvent, MatChipsModule } from '@angular/material/chips';\nimport { MatError, MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { combineLatest, concat, isObservable, map, Observable, of, ReplaySubject, startWith, switchMap } from 'rxjs';\n\nimport { MatErrorMessageDirective } from '../directive/mat-error-message.directive';\nimport { KlesDynamicFormIntl } from '../dynamic-form-intl';\nimport { KlesTransformPipe } from '../pipe/transform.pipe';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { KlesFocusTargetDirective } from '../directive/focus-target.directive';\n\ninterface ChipOptionsState {\n    loading: boolean;\n    options: any[];\n}\n\n@Component({\n    selector: 'kles-form-chip-grid',\n    template: `\n        <mat-form-field [formGroup]=\"group\" [matTooltip]=\"tooltip()\" [appearance]=\"appearance()\">\n            <mat-label>{{ label() }}</mat-label>\n\n            <mat-chip-grid #reactiveChipGrid [formControl]=\"control\">\n                @for (value of control.value; track $index) {\n                    <mat-chip-row [value]=\"value\" (removed)=\"removeChip(value)\">\n                        {{ displayValue(value) | klesTransform: field.pipeTransform }}\n\n                        <button matChipRemove>\n                            <mat-icon>cancel</mat-icon>\n                        </button>\n                    </mat-chip-row>\n                }\n            </mat-chip-grid>\n\n            <input\n                klesFocusTarget\n                #chipInput=\"matChipInput\"\n                [formControl]=\"searchControl\"\n                [placeholder]=\"placeholder()\"\n                [matChipInputFor]=\"reactiveChipGrid\"\n                [matAutocomplete]=\"auto\"\n                [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n                (matChipInputTokenEnd)=\"onTokenEnd($event)\"\n                (focus)=\"onFocus()\"\n                (blur)=\"onBlur()\"\n            />\n\n            <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"selected($event, chipInput)\">\n                @if (filteredOption$ | async; as filteredOption) {\n                    @if (filteredOption.loading) {\n                        <mat-option disabled>\n                            <div class=\"loadingSelect\">\n                                {{ intl.loading }}...\n\n                                <mat-spinner class=\"spinner\" diameter=\"20\" />\n                            </div>\n                        </mat-option>\n                    } @else {\n                        @for (item of filteredOption.options; track item) {\n                            <mat-option [value]=\"item\" [disabled]=\"item?.disabled ?? false\">\n                                {{ displayValue(item) | klesTransform: field.pipeTransform }}\n                            </mat-option>\n                        }\n                    }\n                }\n            </mat-autocomplete>\n\n            <mat-error matErrorMessage [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\" />\n        </mat-form-field>\n    `,\n    styles: [\n        `\n            mat-form-field {\n                width: 100%;\n            }\n        `,\n    ],\n    styleUrls: ['../styles/mat-suffix.style.scss', '../styles/mat-field-bottom.style.scss', '../styles/loading-select.style.scss'],\n    standalone: true,\n    imports: [AsyncPipe, KlesTransformPipe, MatAutocompleteModule, MatChipsModule, MatError, MatErrorMessageDirective, MatFormFieldModule, MatIconModule, MatProgressSpinnerModule, MatTooltip, ReactiveFormsModule, KlesFocusTargetDirective],\n})\nexport class KlesFormChipGridComponent extends KlesFieldAbstract implements OnInit {\n    readonly control = this.group.controls[this.field.name] as FormControl<any[]>;\n\n    readonly intl = inject(KlesDynamicFormIntl);\n\n    readonly separatorKeysCodes: number[] = [ENTER, COMMA];\n\n    /*\n     * any est volontaire :\n     * MatAutocomplete peut momentanément pousser l'objet\n     * sélectionné dans le FormControl de recherche.\n     */\n    readonly searchControl = new FormControl<any>('', {\n        nonNullable: true,\n    });\n\n    filteredOption$!: Observable<ChipOptionsState>;\n\n    private options$!: Observable<ChipOptionsState>;\n\n    /*\n     * ReplaySubject permet de ne pas perdre le premier focus\n     * si l'Observable lazy n'est pas encore abonné.\n     */\n    private readonly loadOptions$ = new ReplaySubject<void>(1);\n\n    override ngOnInit(): void {\n        this.options$ = this.createOptionsStream();\n\n        this.filteredOption$ = combineLatest([this.searchControl.valueChanges.pipe(startWith(this.searchControl.value)), this.options$, this.control.valueChanges.pipe(startWith(this.control.value ?? []))]).pipe(\n            map(([search, response, selectedValues]) => {\n                if (response.loading) {\n                    return response;\n                }\n\n                const selected = Array.isArray(selectedValues) ? selectedValues : [];\n\n                /*\n                 * On retire de la liste les options\n                 * déjà présentes dans les chips.\n                 */\n                let options = response.options.filter((option) => !selected.some((selectedValue) => this.isSameOption(option, selectedValue)));\n\n                /*\n                 * Le contrôle peut momentanément contenir\n                 * un objet pendant une sélection autocomplete.\n                 */\n                if (typeof search === 'string' && search.trim()) {\n                    options = this.filterData(search, options);\n                }\n\n                return {\n                    loading: false,\n                    options,\n                };\n            }),\n        );\n\n        super.ngOnInit();\n    }\n\n    override onFocus(): void {\n        if (this.field.lazy) {\n            this.loadOptions$.next();\n        }\n\n        super.onFocus();\n    }\n\n    onTokenEnd(event: MatChipInputEvent): void {\n        /*\n         * Quand property est renseignée, les valeurs sont\n         * considérées comme des objets provenant de l'autocomplete.\n         *\n         * On évite donc d'ajouter une string libre au tableau.\n         */\n        if (this.field.property) {\n            return;\n        }\n\n        const value = event.value.trim();\n\n        if (!value) {\n            return;\n        }\n\n        this.addChip(value);\n\n        event.chipInput.clear();\n        this.searchControl.setValue('');\n    }\n\n    addChip(value: unknown): void {\n        if (value === null || value === undefined || value === '') {\n            return;\n        }\n\n        const values = Array.isArray(this.control.value) ? this.control.value : [];\n\n        /*\n         * Empêche d'ajouter deux fois la même valeur.\n         */\n        const exists = values.some((currentValue) => this.isSameOption(currentValue, value));\n\n        if (exists) {\n            return;\n        }\n\n        this.control.setValue([...values, value]);\n\n        this.control.markAsDirty();\n    }\n\n    removeChip(value: unknown): void {\n        const values = Array.isArray(this.control.value) ? [...this.control.value] : [];\n\n        const index = values.findIndex((currentValue) => this.isSameOption(currentValue, value));\n\n        if (index === -1) {\n            return;\n        }\n\n        values.splice(index, 1);\n\n        this.control.setValue(values);\n        this.control.markAsDirty();\n    }\n\n    selected(event: MatAutocompleteSelectedEvent, chipInput: MatChipInput): void {\n        const value = event.option.value;\n\n        /*\n         * On ajoute d'abord l'objet sélectionné aux chips.\n         */\n        this.addChip(value);\n\n        /*\n         * L'autocomplete n'est ici qu'une source de sélection.\n         * La sélection réelle est représentée par les chips.\n         */\n        event.option.deselect();\n\n        /*\n         * Important :\n         * MatChipInput.clear() nettoie réellement l'input HTML.\n         */\n        chipInput.clear();\n\n        /*\n         * Et on synchronise le FormControl afin de :\n         * - vider l'état Angular ;\n         * - supprimer le filtre ;\n         * - recalculer filteredOption$.\n         */\n        this.searchControl.setValue('');\n    }\n\n    displayValue(value: any): any {\n        if (value === null || value === undefined) {\n            return '';\n        }\n\n        if (this.field.property) {\n            return value?.[this.field.property] ?? '';\n        }\n\n        return value;\n    }\n\n    private createOptionsStream(): Observable<ChipOptionsState> {\n        /*\n         * Lazy :\n         * recharge les options à chaque focus.\n         */\n        if (this.field.lazy) {\n            return this.loadOptions$.pipe(\n                switchMap(() =>\n                    concat(\n                        of({\n                            loading: true,\n                            options: [],\n                        }),\n                        this.resolveOptions().pipe(\n                            map((options) => ({\n                                loading: false,\n                                options,\n                            })),\n                        ),\n                    ),\n                ),\n            );\n        }\n\n        /*\n         * Liste statique :\n         * aucun chargement à afficher.\n         */\n        if (Array.isArray(this.field.options)) {\n            return of({\n                loading: false,\n                options: this.field.options,\n            });\n        }\n\n        /*\n         * Observable ou fonction :\n         * spinner jusqu'à réception des options.\n         */\n        return concat(\n            of({\n                loading: true,\n                options: [],\n            }),\n            this.resolveOptions().pipe(\n                map((options) => ({\n                    loading: false,\n                    options,\n                })),\n            ),\n        );\n    }\n\n    private resolveOptions(): Observable<any[]> {\n        const source = typeof this.field.options === 'function' ? this.field.options() : this.field.options;\n\n        if (isObservable(source)) {\n            return source;\n        }\n\n        return of(source ?? []);\n    }\n\n    private filterData(search: unknown, options: any[]): any[] {\n        if (typeof search !== 'string') {\n            return options;\n        }\n\n        const filterValue = search.trim().toLowerCase();\n\n        if (!filterValue) {\n            return options;\n        }\n\n        return options.filter((option) => {\n            const value = this.displayValue(option);\n\n            return String(value ?? '')\n                .toLowerCase()\n                .startsWith(filterValue);\n        });\n    }\n\n    private isSameOption(a: any, b: any): boolean {\n        /*\n         * Primitive identique ou même référence objet.\n         */\n        if (a === b) {\n            return true;\n        }\n\n        /*\n         * En mode objet, property sert actuellement\n         * également à identifier les doublons.\n         */\n        if (this.field.property && a !== null && a !== undefined && b !== null && b !== undefined) {\n            return a[this.field.property] === b[this.field.property];\n        }\n\n        return false;\n    }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ElementRef, OnDestroy, OnInit, computed, inject, signal, viewChild } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { Subscription } from 'rxjs';\n\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { KlesDynamicFormIntl } from '../dynamic-form-intl';\nimport { EnumType } from '../enums/type.enum';\nimport { KlesFileControlValue, KlesFileValue } from '../forms/file-control.component';\nimport { KlesFieldAbstract } from './field.abstract';\n\nconst DEFAULT_MAX_FILE_SIZE = 2 * 1024 * 1024;\nconst DEFAULT_ACCEPT = 'image/jpeg,image/png,image/webp';\n\n@FieldMapper({ type: EnumType.imageUpload })\n@Component({\n    selector: 'kles-form-image-upload',\n    standalone: true,\n    imports: [CommonModule, MatButton, MatIcon],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n        <div class=\"kles-image-upload\" [ngClass]=\"ngClass()\" [ngStyle]=\"ngStyle()\">\n            <div class=\"kles-image-upload__preview\">\n                @if (previewUrl(); as preview) {\n                    <img [src]=\"preview\" [alt]=\"imageAlt()\" />\n                } @else {\n                    <mat-icon aria-hidden=\"true\">{{ options().emptyIcon ?? 'person' }}</mat-icon>\n                }\n            </div>\n\n            <div class=\"kles-image-upload__content\">\n                <div class=\"kles-image-upload__title\">\n                    <mat-icon aria-hidden=\"true\">{{ icon() || 'photo_camera' }}</mat-icon>\n                    <span>{{ label() }}</span>\n                </div>\n\n                @if (hint()) {\n                    <p class=\"kles-image-upload__hint\">{{ hint() }}</p>\n                }\n\n                <input #fileInput type=\"file\" hidden [attr.id]=\"field.id\" [accept]=\"accept()\" [disabled]=\"disabled()\" [attr.aria-label]=\"options().changeLabel ?? intl.imageUploadChange\" (change)=\"selectFile($event)\" />\n\n                <div class=\"kles-image-upload__actions\">\n                    <button matButton=\"outlined\" type=\"button\" [disabled]=\"disabled()\" (click)=\"openFilePicker()\">\n                        <mat-icon>{{ options().uploadIcon ?? 'upload' }}</mat-icon>\n                        {{ options().changeLabel ?? intl.imageUploadChange }}\n                    </button>\n                    <button matButton type=\"button\" [disabled]=\"disabled() || !hasImage()\" (click)=\"deleteImage()\">\n                        {{ options().deleteLabel ?? intl.imageUploadDelete }}\n                    </button>\n                </div>\n\n                @if (errorMessage()) {\n                    <p class=\"kles-image-upload__error\" role=\"alert\">{{ errorMessage() }}</p>\n                }\n            </div>\n        </div>\n    `,\n    styles: `\n        :host {\n            display: block;\n        }\n\n        .kles-image-upload {\n            display: flex;\n            align-items: center;\n            gap: 20px;\n        }\n\n        .kles-image-upload__preview {\n            display: grid;\n            width: 120px;\n            height: 120px;\n            flex: 0 0 120px;\n            place-items: center;\n            overflow: hidden;\n            border: 1px solid var(--mat-sys-outline-variant);\n            border-radius: 22px;\n            color: var(--mat-sys-outline);\n            background: var(--mat-sys-surface-container-low);\n        }\n\n        .kles-image-upload__preview img {\n            width: 100%;\n            height: 100%;\n            object-fit: cover;\n        }\n\n        .kles-image-upload__preview mat-icon {\n            width: 42px;\n            height: 42px;\n            font-size: 42px;\n        }\n\n        .kles-image-upload__content {\n            min-width: 0;\n        }\n\n        .kles-image-upload__title {\n            display: flex;\n            align-items: center;\n            gap: 10px;\n            font: var(--mat-sys-title-large);\n            font-size: 20px;\n            font-weight: 500;\n        }\n\n        .kles-image-upload__title mat-icon {\n            color: var(--mat-sys-primary);\n        }\n\n        .kles-image-upload__hint {\n            margin: 8px 0 14px;\n            color: var(--mat-sys-on-surface-variant);\n            font: var(--mat-sys-body-medium);\n        }\n\n        .kles-image-upload__actions {\n            display: flex;\n            flex-wrap: wrap;\n            gap: 10px;\n        }\n\n        .kles-image-upload__actions button {\n            min-height: 44px;\n        }\n\n        .kles-image-upload__error {\n            margin: 8px 0 0;\n            color: var(--mat-sys-error);\n            font: var(--mat-sys-body-small);\n        }\n\n        @media (max-width: 600px) {\n            .kles-image-upload {\n                align-items: flex-start;\n            }\n\n            .kles-image-upload__preview {\n                width: 96px;\n                height: 96px;\n                flex-basis: 96px;\n                border-radius: 16px;\n            }\n        }\n    `,\n})\nexport class KlesFormImageUploadComponent extends KlesFieldAbstract implements OnInit, OnDestroy {\n    readonly intl = inject(KlesDynamicFormIntl);\n\n    private readonly fileInput = viewChild<ElementRef<HTMLInputElement>>('fileInput');\n    private readonly control: AbstractControl = this.group.controls[this.field.name];\n    private readonly localPreviewUrl = signal<string | null>(null);\n    private readonly imageRemoved = signal(false);\n    private readonly controlValue = signal<unknown>(this.control.value);\n    private controlSubscription?: Subscription;\n\n    readonly options = computed(() => this.field.imageUploadOptions ?? {});\n    readonly accept = computed(() => this.field.accept || DEFAULT_ACCEPT);\n    readonly disabled = computed(() => this.control.disabled || !!this.field.disabled);\n    readonly errorMessage = signal<string | null>(null);\n    readonly previewUrl = computed(() => {\n        if (this.imageRemoved()) {\n            return null;\n        }\n\n        return this.localPreviewUrl() || this.previewFromValue(this.controlValue()) || this.imageUrl() || null;\n    });\n    readonly hasImage = computed(() => !!this.previewUrl());\n\n    override ngOnInit(): void {\n        super.ngOnInit();\n        this.controlSubscription = this.control.valueChanges.subscribe((value) => {\n            this.controlValue.set(value);\n            if (!value) {\n                this.clearLocalPreview();\n            }\n        });\n    }\n\n    override ngOnDestroy(): void {\n        this.controlSubscription?.unsubscribe();\n        this.clearLocalPreview();\n        super.ngOnDestroy();\n    }\n\n    openFilePicker(): void {\n        this.fileInput()?.nativeElement.click();\n    }\n\n    async selectFile(event: Event): Promise<void> {\n        const input = event.target as HTMLInputElement;\n        const file = input.files?.item(0);\n\n        if (!file) {\n            return;\n        }\n\n        if (!this.isAccepted(file)) {\n            this.rejectFile('imageFileType', this.options().invalidTypeMessage ?? this.intl.imageUploadInvalidType);\n            return;\n        }\n\n        if (file.size > (this.options().maxFileSize ?? DEFAULT_MAX_FILE_SIZE)) {\n            this.rejectFile('imageFileSize', this.options().maxFileSizeMessage ?? this.intl.imageUploadMaxSize);\n            return;\n        }\n\n        this.clearImageErrors();\n        this.errorMessage.set(null);\n        this.clearLocalPreview();\n        this.localPreviewUrl.set(URL.createObjectURL(file));\n        this.imageRemoved.set(false);\n\n        const value: KlesFileValue = {\n            name: file.name,\n            content: await file.arrayBuffer(),\n            type: file.type,\n            size: file.size,\n        };\n        this.control.setValue([value] satisfies KlesFileControlValue);\n        this.control.markAsDirty();\n        this.control.markAsTouched();\n    }\n\n    deleteImage(): void {\n        this.clearImageErrors();\n        this.errorMessage.set(null);\n        this.clearLocalPreview();\n        this.imageRemoved.set(true);\n        this.control.setValue(null);\n        this.control.markAsDirty();\n        this.control.markAsTouched();\n\n        const input = this.fileInput()?.nativeElement;\n        if (input) {\n            input.value = '';\n        }\n    }\n\n    private previewFromValue(value: unknown): string | null {\n        return typeof value === 'string' ? value : null;\n    }\n\n    private isAccepted(file: File): boolean {\n        const acceptedTypes = this.accept()\n            .split(',')\n            .map((type) => type.trim().toLowerCase())\n            .filter(Boolean);\n\n        return acceptedTypes.some((accepted) => {\n            if (accepted === '*' || accepted === '*/*' || accepted === '*.*') {\n                return true;\n            }\n            if (accepted.startsWith('.')) {\n                return file.name.toLowerCase().endsWith(accepted);\n            }\n            if (accepted.endsWith('/*')) {\n                return file.type.toLowerCase().startsWith(accepted.slice(0, -1));\n            }\n            return file.type.toLowerCase() === accepted;\n        });\n    }\n\n    private rejectFile(errorKey: string, message: string): void {\n        const input = this.fileInput()?.nativeElement;\n        if (input) {\n            input.value = '';\n        }\n\n        this.clearImageErrors();\n        this.errorMessage.set(message);\n        this.control.setErrors({ ...(this.control.errors ?? {}), [errorKey]: true });\n        this.control.markAsTouched();\n    }\n\n    private clearImageErrors(): void {\n        const errors = { ...(this.control.errors ?? {}) };\n        delete errors['imageFileType'];\n        delete errors['imageFileSize'];\n        this.control.setErrors(Object.keys(errors).length ? errors : null);\n    }\n\n    private clearLocalPreview(): void {\n        const preview = this.localPreviewUrl();\n        if (preview) {\n            URL.revokeObjectURL(preview);\n            this.localPreviewUrl.set(null);\n        }\n    }\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { KlesDynamicFormComponent } from './dynamic-form.component';\nimport { KlesComponentDirective } from './directive/dynamic-component.directive';\nimport { KlesDynamicFieldDirective } from './directive/dynamic-field.directive';\nimport { KlesFormErrorStateMatcher } from './matcher/form-error.matcher';\nimport { ErrorStateMatcher } from '@angular/material/core';\nimport { MaterialModule } from './modules/material.module';\nimport { KlesFormLabelComponent } from './fields/label.component';\nimport { KlesFormInputComponent } from './fields/input.component';\nimport { KlesFormDateComponent } from './fields/date.component';\nimport { KlesFormRadioComponent } from './fields/radio.component';\nimport { KlesFormCheckboxComponent } from './fields/checkbox.component';\nimport { KlesFormListFieldComponent } from './fields/list-field.component';\nimport { KlesFormColorComponent } from './fields/color.component';\nimport { KlesButtonComponent } from './forms/button-control.component';\nimport { KlesFormButtonComponent } from './fields/button-form.component';\nimport { KlesButtonCheckerComponent } from './forms/buttonchecker-control.component';\nimport { KlesFormButtonCheckerComponent } from './fields/buttonchecker-form.component';\nimport { KlesButtonFileComponent } from './forms/buttonfile-control.component';\nimport { KlesFormButtonFileComponent } from './fields/buttonfile-form.component';\nimport { KlesFormTextareaComponent } from './fields/textarea.component';\nimport { KlesFormTextComponent } from './fields/text.component';\nimport { KlesFormChipComponent } from './fields/chip.component';\nimport { KlesFormGroupComponent } from './fields/group.component';\nimport { KlesFormInputClearableComponent } from './fields/input.clearable.component';\nimport { KlesFormIconComponent } from './fields/icon.component';\nimport { KlesTransformPipe } from './pipe/transform.pipe';\nimport { KlesFormLineBreakComponent } from './fields/line-break.component';\nimport { ArrayFormatPipe } from './pipe/array.pipe';\nimport { KlesFormLinkComponent } from './fields/link.component';\nimport { KlesFormSlideToggleComponent } from './fields/slide-toggle.component';\nimport { KlesFormSelectionListComponent } from './fields/selection-list.component';\nimport { KlesFormBadgeComponent } from './fields/badge.component';\nimport { KlesFormButtonToogleGroupComponent } from './fields/button-toogle-group.component';\nimport { KlesFormArrayComponent } from './fields/array.component';\nimport { KlesFormRangeComponent } from './fields/range.component';\nimport { KlesFormClearComponent } from './fields/subfields/clear.component';\nimport { KlesFormFabComponent } from './fields/button-fab.component';\nimport { KlesFabComponent } from './forms/fab-control.component';\nimport { KlesMiniFabComponent } from './forms/mini-fab-control.component';\nimport { KlesFormMiniFabComponent } from './fields/button-mini-fab.component';\nimport { KlesIconButtonComponent } from './forms/icon-button-control.component';\nimport { KlesFormIconButtonComponent } from './fields/button-icon.component';\nimport { KlesFormSelectionListSearchComponent } from './fields/selection-list.search.component';\nimport { MatErrorMessageDirective } from './directive/mat-error-message.directive';\nimport { MatErrorFormDirective } from './directive/mat-error-form.directive';\n\nimport { KlesFormFileComponent } from './fields/file.component';\nimport { KlesFileControlComponent } from './forms/file-control.component';\nimport { KlesFormDateTimeComponent } from './fields/date-time.component';\nimport { KlesFormCopyComponent } from './fields/subfields/copy.component';\n\nimport { KlesFormActionMenuComponent } from './fields/action-menu.component';\nimport { KlesFormTileComponent } from './fields/tile.component';\nimport { KlesFormCurrencyComponent } from './fields/currency.component';\nimport { KlesFormStatusComponent } from './fields/status.component';\nimport { KlesFormChipGridComponent } from './fields/chip-grid.component';\nimport { KlesFormImageUploadComponent } from './fields/image-upload.component';\n\nconst components = [\n    KlesDynamicFormComponent,\n    KlesFormLabelComponent,\n    KlesFormInputComponent,\n    KlesFormInputClearableComponent,\n    KlesFormBadgeComponent,\n    KlesFormFileComponent,\n    KlesFileControlComponent,\n    KlesButtonComponent,\n    KlesFormButtonComponent,\n    KlesButtonCheckerComponent,\n    KlesFormButtonCheckerComponent,\n    KlesButtonFileComponent,\n    KlesFormButtonFileComponent,\n    KlesFormDateComponent,\n    KlesFormDateTimeComponent,\n    KlesFormRadioComponent,\n    KlesFormCheckboxComponent,\n    KlesFormListFieldComponent,\n    KlesFormColorComponent,\n    KlesFormTextareaComponent,\n    KlesFormTextComponent,\n    KlesFormChipComponent,\n    KlesFormGroupComponent,\n    KlesFormIconComponent,\n    KlesFormLineBreakComponent,\n    KlesFormLinkComponent,\n    KlesFormSlideToggleComponent,\n    KlesFormSelectionListComponent,\n    KlesFormButtonToogleGroupComponent,\n    KlesFormArrayComponent,\n    KlesFormRangeComponent,\n    KlesFormClearComponent,\n    KlesFormFabComponent,\n    KlesFabComponent,\n    KlesMiniFabComponent,\n    KlesFormMiniFabComponent,\n    KlesIconButtonComponent,\n    KlesFormIconButtonComponent,\n    KlesFormSelectionListSearchComponent,\n    KlesFormCopyComponent,\n    KlesFormTileComponent,\n    KlesFormActionMenuComponent,\n    KlesFormCurrencyComponent,\n    KlesFormStatusComponent,\n    KlesFormChipGridComponent,\n    KlesFormImageUploadComponent,\n];\n\nconst directives = [KlesDynamicFieldDirective, KlesComponentDirective, MatErrorMessageDirective, MatErrorFormDirective];\nconst pipes = [KlesTransformPipe, ArrayFormatPipe];\n@NgModule({\n    imports: [CommonModule, ReactiveFormsModule, FormsModule, MaterialModule, components, directives, pipes],\n    providers: [{ provide: ErrorStateMatcher, useClass: KlesFormErrorStateMatcher }, pipes],\n    exports: [components, pipes, directives],\n    schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],\n})\nexport class KlesMaterialDynamicformsModule {\n    static declarations = [components, directives, pipes];\n}\n","import { Component, computed, inject } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { IKlesFieldConfig } from '../../interfaces/field.config.interface';\n\nimport { MatIcon } from '@angular/material/icon';\nimport { MatIconButton } from '@angular/material/button';\nimport { IKlesField } from '../../interfaces/field.interface';\nimport { FIELD, GROUP, GROUP_UI, SIBLING_FIELDS } from '../../token';\nimport { GroupUiState } from '../../ui/ui-state/group-ui-state';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map } from 'rxjs';\n\n@Component({\n    selector: 'kles-form-password-visibility',\n    template: `\n        <button [disabled]=\"disabled()\" matIconButton aria-label=\"visibility\" type=\"button\" (click)=\"toggleVisibility($event)\">\n            <mat-icon>{{ hide() ? 'visibility_off' : 'visibility' }}</mat-icon>\n        </button>\n    `,\n    standalone: true,\n    imports: [MatIcon, MatIconButton],\n})\nexport class KlesFormPasswordVisibilityComponent implements IKlesField {\n    readonly field = inject<IKlesFieldConfig>(FIELD);\n    readonly group = inject<FormGroup<any>>(GROUP);\n    readonly siblingFields = inject<IKlesFieldConfig[]>(SIBLING_FIELDS);\n\n    public readonly ui = inject<GroupUiState>(GROUP_UI, { optional: true });\n    private readonly control = this.group.controls[this.field.name];\n\n    readonly disabled = toSignal(this.control.statusChanges.pipe(map(() => this.control.disabled)), {\n        initialValue: this.control.disabled,\n    });\n\n    readonly hide = computed(() => {\n        return this.ui?.get(this.field.name)?.value().inputType === 'password';\n    });\n\n    toggleVisibility(event: MouseEvent): void {\n        event.stopPropagation();\n        this.ui?.get(this.field.name)?.patchValue({ inputType: this.hide() ? 'text' : 'password' });\n    }\n}\n","import { AfterViewInit, Component, DestroyRef, ElementRef, inject, input, OnDestroy, OnInit, viewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatOption } from '@angular/material/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { MatSelect } from '@angular/material/select';\n\n/** Internal search input used by the Kles select field. */\n@Component({\n    selector: 'kles-select-search-input',\n    standalone: true,\n    imports: [ReactiveFormsModule, MatIconButton, MatIcon, MatProgressSpinner],\n    template: `\n        <div class=\"kles-select-search-row\">\n            <mat-icon class=\"kles-select-search-icon\" aria-hidden=\"true\">search</mat-icon>\n            <input\n                #searchInput\n                class=\"kles-select-search-input\"\n                type=\"search\"\n                autocomplete=\"off\"\n                tabindex=\"-1\"\n                [formControl]=\"control()\"\n                [placeholder]=\"placeholder()\"\n                [attr.aria-label]=\"ariaLabel()\"\n                (keydown)=\"onKeydown($event)\"\n            />\n            @if (searching()) {\n                <mat-spinner class=\"kles-select-search-spinner\" diameter=\"16\" />\n            } @else if (control().value) {\n                <button\n                    mat-icon-button\n                    type=\"button\"\n                    class=\"kles-select-search-clear\"\n                    [attr.aria-label]=\"clearAriaLabel()\"\n                    (mousedown)=\"preserveInputFocus($event)\"\n                    (click)=\"clearSearch($event)\"\n                >\n                    <mat-icon>close</mat-icon>\n                </button>\n            }\n        </div>\n    `,\n    styles: [\n        `\n            kles-select-search-input {\n                display: block;\n                width: 100%;\n            }\n\n            .kles-select-panel .kles-select-search-row {\n                position: relative;\n                display: flex;\n                align-items: center;\n                width: 100%;\n                min-height: 48px;\n                background: var(--mat-sys-surface-container, var(--mat-select-panel-background-color, white));\n                box-shadow: inset 0 -1px 0 var(--mat-sys-outline-variant, currentColor);\n            }\n\n            .kles-select-panel .kles-select-search-icon {\n                position: absolute;\n                inset-inline-start: 14px;\n                width: 20px;\n                height: 20px;\n                color: var(--mat-sys-on-surface-variant, currentColor);\n                font-size: 20px;\n                line-height: 20px;\n                pointer-events: none;\n            }\n\n            .kles-select-panel .kles-select-search-input {\n                box-sizing: border-box;\n                width: 100%;\n                height: 47px;\n                padding: 0 44px;\n                border: 0;\n                outline: 0;\n                color: currentColor;\n                background: transparent;\n                font: inherit;\n            }\n\n            .kles-select-panel .kles-select-search-input::placeholder {\n                color: var(--mat-sys-on-surface-variant, currentColor);\n                opacity: 0.8;\n            }\n\n            .kles-select-panel .kles-select-search-input::-webkit-search-cancel-button {\n                display: none;\n            }\n\n            .kles-select-panel .kles-select-search-clear {\n                position: absolute;\n                inset-inline-end: 4px;\n                width: 40px;\n                height: 40px;\n                color: currentColor;\n                cursor: pointer;\n            }\n\n            .kles-select-panel .kles-select-search-spinner {\n                position: absolute;\n                inset-inline-end: 16px;\n            }\n\n            .kles-select-panel .mat-mdc-option.kles-select-search-option {\n                position: sticky;\n                top: -8px;\n                z-index: 2;\n                min-height: 48px;\n                margin-top: -8px;\n                padding: 0;\n                opacity: 1;\n                pointer-events: all;\n                background: var(--mat-sys-surface-container, var(--mat-select-panel-background-color, white));\n            }\n\n            .kles-select-panel .mat-mdc-option.kles-select-search-option .mat-pseudo-checkbox {\n                display: none;\n            }\n\n            .kles-select-panel .mat-mdc-option.kles-select-search-option .mdc-list-item__primary-text {\n                width: 100%;\n                opacity: 1;\n            }\n        `,\n    ],\n    encapsulation: ViewEncapsulation.None,\n})\nexport class KlesSelectSearchInputComponent implements OnInit, AfterViewInit, OnDestroy {\n    readonly control = input.required<FormControl<string | null>>();\n    readonly placeholder = input('');\n    readonly ariaLabel = input('Search options');\n    readonly clearAriaLabel = input('Clear search');\n    readonly searching = input(false);\n\n    private readonly inputElement = viewChild<ElementRef<HTMLInputElement>>('searchInput');\n\n    private readonly destroyRef = inject(DestroyRef);\n    private readonly matSelect = inject(MatSelect);\n    private readonly matOption = inject(MatOption);\n    private removePanelKeyboardGuard?: () => void;\n\n    ngOnInit(): void {\n        this.matOption.disabled = true;\n\n        const optionElement = this.matOption._getHostElement();\n        optionElement.classList.add('kles-select-search-option');\n        optionElement.setAttribute('role', 'presentation');\n    }\n\n    ngAfterViewInit(): void {\n        this.matSelect.openedChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((opened) => {\n            if (opened) {\n                setTimeout(() => {\n                    this.focusInput();\n                    this.installPanelKeyboardGuard();\n                });\n            } else {\n                this.removePanelKeyboardGuard?.();\n                this.removePanelKeyboardGuard = undefined;\n            }\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.removePanelKeyboardGuard?.();\n    }\n\n    onKeydown(event: KeyboardEvent): void {\n        if (event.key.length === 1) {\n            event.stopPropagation();\n        }\n\n        if (event.key === 'Home' || event.key === 'End') {\n            event.preventDefault();\n        }\n\n        if (this.matSelect.multiple && event.key === 'Enter') {\n            setTimeout(() => this.focusInput());\n        }\n    }\n\n    preserveInputFocus(event: MouseEvent): void {\n        event.preventDefault();\n        event.stopPropagation();\n    }\n\n    clearSearch(event: MouseEvent): void {\n        event.preventDefault();\n        event.stopPropagation();\n        this.control().setValue('');\n        this.focusInput();\n    }\n\n    private focusInput(): void {\n        const panel = this.matSelect.panel?.nativeElement as HTMLElement | undefined;\n        const inputElement = this.inputElement();\n        if (!panel || !inputElement) {\n            return;\n        }\n\n        const scrollTop = panel.scrollTop;\n        inputElement.nativeElement.focus();\n        panel.scrollTop = scrollTop;\n    }\n\n    /**\n     * Material 21 renders the panel inline. Without this listener the panel and\n     * the mat-select host both process the same keydown and skip an option.\n     */\n    private installPanelKeyboardGuard(): void {\n        this.removePanelKeyboardGuard?.();\n\n        const panel = this.matSelect.panel?.nativeElement as HTMLElement | undefined;\n        if (!panel) {\n            return;\n        }\n\n        const handler = (event: KeyboardEvent) => {\n            if (event.key !== 'Escape') {\n                event.stopPropagation();\n            }\n        };\n\n        panel.addEventListener('keydown', handler);\n        this.removePanelKeyboardGuard = () => panel.removeEventListener('keydown', handler);\n    }\n}\n","import { CommonModule } from '@angular/common';\nimport { CdkVirtualScrollViewport, ScrollingModule } from '@angular/cdk/scrolling';\nimport { AfterViewInit, ChangeDetectorRef, Component, inject, OnDestroy, OnInit, signal, viewChild, ViewEncapsulation } from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatOption } from '@angular/material/core';\nimport { MatFormField, MatHint, MatLabel, MatSuffix } from '@angular/material/form-field';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { MatSelect, MatSelectTrigger } from '@angular/material/select';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { concat, distinctUntilChanged, isObservable, map, Observable, of, shareReplay, Subject, switchMap, takeUntil, timer } from 'rxjs';\nimport { debounce, startWith } from 'rxjs/operators';\nimport { FieldMapper } from '../decorators/component.decorator';\nimport { MatErrorMessageDirective } from '../directive/mat-error-message.directive';\nimport { KlesComponentDirective } from '../directive/dynamic-component.directive';\nimport { KlesDynamicFormIntl } from '../dynamic-form-intl';\nimport { EnumType } from '../enums/type.enum';\n\nimport { KlesTransformPipe } from '../pipe/transform.pipe';\nimport { KlesFieldAbstract } from './field.abstract';\nimport { KlesSelectSearchInputComponent } from './select-search-input.component';\nimport { IKlesSelectSearchOptions } from '../interfaces/field.config.interface';\nimport { KlesFocusTargetDirective } from '../directive/focus-target.directive';\n\ninterface DeferredQuery {\n    kind: 'open' | 'search' | 'close';\n    value?: string;\n}\n\ninterface MatSelectInternals {\n    _scrollOptionIntoView(index: number): void;\n    _keyManager: {\n        activeItemIndex: number | null;\n        setActiveItem(index: number): void;\n    };\n}\n\n@FieldMapper({ type: EnumType.select })\n@Component({\n    selector: 'kles-form-select',\n    template: `\n        <mat-form-field [subscriptSizing]=\"field.subscriptSizing ?? 'fixed'\" [color]=\"color()\" [formGroup]=\"group\" [appearance]=\"appearance()\">\n            @if (label()) {\n                <mat-label>{{ label() }}</mat-label>\n            }\n\n            <mat-select\n                klesFocusTarget\n                [matTooltip]=\"tooltip()\"\n                [attr.id]=\"field.id\"\n                [ngClass]=\"ngClass()\"\n                [compareWith]=\"compareFn\"\n                [panelClass]=\"panelClasses()\"\n                [panelWidth]=\"field.panelWidth || 'auto'\"\n                [placeholder]=\"placeholder()\"\n                [formControlName]=\"field.name\"\n                [multiple]=\"field.multiple\"\n                (openedChange)=\"onOpenedChange($event)\"\n                (focus)=\"onFocus()\"\n                (blur)=\"onBlur()\"\n            >\n                @if (field.triggerComponent) {\n                    <mat-select-trigger>\n                        <ng-container klesComponent [component]=\"field.triggerComponent\" [value]=\"group.controls[field.name].value\" [field]=\"field\" />\n                    </mat-select-trigger>\n                }\n\n                @if (isSearchEnabled()) {\n                    <mat-option>\n                        <kles-select-search-input [control]=\"searchControl\" [placeholder]=\"searchOptions.placeholder || intl.search\" [ariaLabel]=\"searchOptions.ariaLabel || intl.search\" [clearAriaLabel]=\"intl.clearSearch\" [searching]=\"isLoading()\" />\n                    </mat-option>\n                }\n\n                @if (!isLoading()) {\n                    @if (field.multiple) {\n                        <mat-checkbox class=\"selectAll mat-mdc-option mdc-list-item\" [formControl]=\"selectAllControl\" [indeterminate]=\"selectAllIndeterminate()\" (change)=\"toggleVisibleOptions($event)\">\n                            {{ intl.selectAll }}\n                        </mat-checkbox>\n                    }\n\n                    @if (field.virtualScroll) {\n                        <cdk-virtual-scroll-viewport [itemSize]=\"field.itemSize || 48\" [style.height.px]=\"5 * (field.itemSize || 48)\">\n                            @if (!field.autocompleteComponent) {\n                                <mat-option *cdkVirtualFor=\"let item of filteredOptions()\" [value]=\"item\" [disabled]=\"item?.disabled ?? false\">\n                                    {{ (field.property ? item[field.property] : item) | klesTransform: field.pipeTransform }}\n                                </mat-option>\n                            } @else {\n                                <mat-option *cdkVirtualFor=\"let item of filteredOptions()\" [value]=\"item\" [disabled]=\"item?.disabled ?? false\">\n                                    <ng-container klesComponent [component]=\"field.autocompleteComponent\" [value]=\"item\" [field]=\"field\" />\n                                </mat-option>\n                            }\n                        </cdk-virtual-scroll-viewport>\n                    } @else {\n                        @if (!field.autocompleteComponent) {\n                            @for (item of filteredOptions(); track item) {\n                                <mat-option [value]=\"item\" [disabled]=\"item?.disabled ?? false\">\n                                    {{ (field.property ? item[field.property] : item) | klesTransform: field.pipeTransform }}\n                                </mat-option>\n                            }\n                        } @else {\n                            @for (item of filteredOptions(); track item) {\n                                <mat-option [value]=\"item\" [disabled]=\"item?.disabled ?? false\">\n                                    <ng-container klesComponent [component]=\"field.autocompleteComponent\" [value]=\"item\" [field]=\"field\" />\n                                </mat-option>\n                            }\n                        }\n                    }\n\n                    @for (item of getHiddenSelectedOptions(); track item) {\n                        <mat-option [value]=\"item\" class=\"kles-hidden-selected-option\">\n                            @if (!field.autocompleteComponent) {\n                                {{ (field.property ? item[field.property] : item) | klesTransform: field.pipeTransform }}\n                            } @else {\n                                <ng-container klesComponent [component]=\"field.autocompleteComponent\" [value]=\"item\" [field]=\"field\" />\n                            }\n                        </mat-option>\n                    }\n                } @else {\n                    <mat-option class=\"hide-checkbox\" disabled>\n                        <div class=\"loadingSelect\">{{ intl.loading }}... <mat-spinner class=\"spinner\" diameter=\"20\" /></div>\n                    </mat-option>\n                }\n            </mat-select>\n\n            @if (hint()) {\n                <mat-hint>{{ hint() }}</mat-hint>\n            }\n\n            @if (field.subComponents || field.clearable || isPending()) {\n                <div matSuffix class=\"suffix\">\n                    @if (isPending()) {\n                        <mat-spinner mode=\"indeterminate\" diameter=\"21\" />\n                    }\n                    @if (field.subComponents || field.clearable) {\n                        <ng-content />\n                    }\n                </div>\n            }\n\n            <mat-error matErrorMessage [validations]=\"field.validations\" [asyncValidations]=\"field.asyncValidations\" />\n        </mat-form-field>\n    `,\n    styles: [\n        'kles-form-select mat-form-field {width: 100%;}',\n        'kles-form-select .suffix {display: flex; align-items: center;}',\n        '.kles-select-panel .loadingSelect {display: flex; flex-direction: row; justify-content: space-between; align-items: center;}',\n        '.kles-select-panel .selectAll {padding: 0 16px 0 5px !important; display: flex !important;}',\n        '.kles-select-panel .selectAll .mdc-form-field {width: 100%;}',\n        '.kles-select-panel .selectAll .mdc-form-field .mdc-label {width: 100%; min-height: 48px; align-items: center; display: flex;}',\n        '.kles-select-panel .selectAll .mdc-form-field .mdc-checkbox__ripple {display: none !important;}',\n        '.kles-select-panel .kles-hidden-selected-option {display: none !important;}',\n        '.kles-select-panel .hide-checkbox .mat-pseudo-checkbox {display: none !important;}',\n        '.kles-select-panel:not(.kles-select-virtual-panel) .selectAll {position: sticky; top: -8px; z-index: 1; background: var(--mat-select-panel-background-color, var(--mat-sys-surface-container, white));}',\n        '.kles-select-panel.kles-select-has-search:not(.kles-select-virtual-panel) .selectAll {top: 40px;}',\n        'div.kles-select-panel.kles-select-virtual-panel {display: flex; flex-direction: column; overflow: hidden;}',\n        '.kles-select-panel.kles-select-virtual-panel .kles-select-search-option, .kles-select-panel.kles-select-virtual-panel .selectAll {flex: 0 0 48px;}',\n        '.kles-select-panel.kles-select-virtual-panel cdk-virtual-scroll-viewport {flex: 1 1 auto; min-height: 0; width: 100%;}',\n    ],\n    encapsulation: ViewEncapsulation.None,\n    standalone: true,\n    imports: [\n        CommonModule,\n        ReactiveFormsModule,\n        KlesTransformPipe,\n        MatErrorMessageDirective,\n        MatProgressSpinner,\n        MatHint,\n        MatOption,\n        KlesComponentDirective,\n        ScrollingModule,\n        MatSelectTrigger,\n        MatSelect,\n        MatTooltip,\n        MatLabel,\n        MatSuffix,\n        MatFormField,\n        MatCheckbox,\n        KlesSelectSearchInputComponent,\n        KlesFocusTargetDirective,\n    ],\n})\nexport class KlesFormSelectComponent extends KlesFieldAbstract implements OnInit, AfterViewInit, OnDestroy {\n    readonly searchControl = new FormControl<string>('');\n    readonly selectAllControl = new FormControl(false, { nonNullable: true });\n    readonly selectAllIndeterminate = signal(false);\n    readonly isLoading = signal(false);\n    readonly filteredOptions = signal<any[]>([]);\n\n    readonly intl = inject(KlesDynamicFormIntl);\n    protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n    private readonly matSelect = viewChild(MatSelect);\n    private readonly virtualViewport = viewChild(CdkVirtualScrollViewport);\n\n    protected override focus(): void {\n        this.matSelect()?.focus();\n    }\n\n    searchOptions: IKlesSelectSearchOptions = {};\n\n    private readonly deferredQuery$ = new Subject<DeferredQuery>();\n    private sourceOptions: any[] = [];\n    private visibleOptions: any[] = [];\n    private isPanelOpen = false;\n    private isDeferredSourceLoaded = false;\n    private deferredOptionsRequest$?: Observable<any[]>;\n    private restoreMatSelectScroll?: () => void;\n\n    override ngOnInit(): void {\n        super.ngOnInit();\n        this.searchOptions = this.normalizeSearchOptions();\n\n        this.group.controls[this.field.name].valueChanges.pipe(takeUntil(this._onDestroy)).subscribe((values) => {\n            this.updateSelectAllState(values);\n            this.changeDetectorRef.markForCheck();\n        });\n\n        if (this.usesDeferredSource()) {\n            const selected = this.selectedValues();\n            this.sourceOptions = selected;\n            this.setVisibleOptions(selected);\n            // MatSelect cannot open without at least one MatOption. When search is\n            // disabled, keep the loading option rendered until the deferred source\n            // is requested on the first opening.\n            this.isLoading.set(!this.isSearchEnabled() && selected.length === 0);\n            this.initializeDeferredQueries();\n        } else {\n            this.loadInitialOptions();\n        }\n\n        if (this.isSearchEnabled() && !this.usesDeferredSource()) {\n            this.searchControl.valueChanges\n                .pipe(\n                    startWith(this.searchControl.value),\n                    debounce((value) => timer(value ? (this.searchOptions.debounceTime ?? this.field.debounceTime ?? 0) : 0)),\n                    distinctUntilChanged(),\n                    takeUntil(this._onDestroy),\n                )\n                .subscribe((value) => this.applyLocalFilter(value || ''));\n        } else if (this.isSearchEnabled()) {\n            this.searchControl.valueChanges\n                .pipe(\n                    debounce((value) => timer(value ? (this.searchOptions.debounceTime ?? this.field.debounceTime ?? 0) : 0)),\n                    distinctUntilChanged(),\n                    takeUntil(this._onDestroy),\n                )\n                .subscribe((value) => {\n                    if (this.isPanelOpen) {\n                        this.deferredQuery$.next({ kind: 'search', value: value || '' });\n                    }\n                });\n        }\n    }\n\n    override ngOnDestroy(): void {\n        this.restoreMatSelectScroll?.();\n        this.deferredQuery$.complete();\n        super.ngOnDestroy();\n    }\n\n    override ngAfterViewInit(): void {\n        super.ngAfterViewInit();\n        this.installMatSelectScrollCorrection();\n    }\n\n    isSearchEnabled(): boolean {\n        return this.field.search === true || (this.field.search != null && typeof this.field.search === 'object');\n    }\n\n    panelClasses(): string[] {\n        const classes = ['kles-select-panel'];\n        if (this.field.virtualScroll) {\n            classes.push('kles-select-virtual-panel');\n        }\n        if (this.isSearchEnabled()) {\n            classes.push('kles-select-has-search');\n        }\n        return classes;\n    }\n\n    onOpenedChange(opened: boolean): void {\n        this.isPanelOpen = opened;\n\n        if (this.usesDeferredSource()) {\n            if (opened) {\n                this.isDeferredSourceLoaded = false;\n                // Keep the initial request alive while search terms replace each\n                // other, otherwise switchMap cancels the baseline option loading.\n                this.deferredOptionsRequest$ = this.resolveOptions().pipe(shareReplay({ bufferSize: 1, refCount: false }));\n            }\n            this.deferredQuery$.next(opened ? { kind: 'open', value: this.searchControl.value || '' } : { kind: 'close' });\n        }\n\n        if (!opened && this.isSearchEnabled() && (this.searchOptions.clearOnClose ?? true)) {\n            this.searchControl.setValue('');\n        }\n\n        if (opened && this.field.virtualScroll) {\n            setTimeout(() => {\n                this.virtualViewport()?.scrollToIndex(0);\n                this.virtualViewport()?.checkViewportSize();\n            });\n        }\n    }\n\n    toggleVisibleOptions(state: { checked: boolean }): void {\n        const selected = this.selectedValues();\n        const enabledOptions = this.visibleOptions.filter((option) => !option?.disabled);\n\n        if (!state.checked) {\n            const remaining = selected.filter((value) => !enabledOptions.some((option) => this.compareFn(value, option)));\n            this.group.controls[this.field.name].patchValue(remaining);\n            return;\n        }\n\n        if (enabledOptions.length > 0) {\n            const added = enabledOptions.filter((option) => !selected.some((value) => this.compareFn(value, option)));\n            this.group.controls[this.field.name].patchValue([...selected, ...added]);\n        }\n    }\n\n    getHiddenSelectedOptions(): any[] {\n        const selected = this.selectedValues();\n        if (this.field.virtualScroll) {\n            return selected;\n        }\n\n        return selected.filter((selectedOption) => !this.visibleOptions.some((option) => this.compareFn(selectedOption, option)));\n    }\n\n    compareFn = (first: any, second: any): boolean => {\n        if (this.field.property && first && second) {\n            return first[this.field.property] === second[this.field.property];\n        }\n        return first === second;\n    };\n\n    private normalizeSearchOptions(): IKlesSelectSearchOptions {\n        if (!this.isSearchEnabled()) {\n            return {};\n        }\n\n        const configured = typeof this.field.search === 'object' ? this.field.search : {};\n        return {\n            mode: configured.mode ?? 'local',\n            keys: configured.keys ?? this.field.searchKeys,\n            debounceTime: configured.debounceTime ?? this.field.debounceTime,\n            minLength: configured.minLength ?? 0,\n            clearOnClose: configured.clearOnClose ?? true,\n            placeholder: configured.placeholder,\n            ariaLabel: configured.ariaLabel,\n        };\n    }\n\n    private usesDeferredSource(): boolean {\n        return !!this.field.lazy || this.searchOptions.mode === 'remote';\n    }\n\n    private loadInitialOptions(): void {\n        if (isObservable(this.field.options) || typeof this.field.options === 'function') {\n            this.isLoading.set(true);\n        }\n\n        this.resolveOptions()\n            .pipe(takeUntil(this._onDestroy))\n            .subscribe((options) => {\n                const safeOptions = options ?? [];\n                this.isLoading.set(false);\n                this.sourceOptions = safeOptions;\n                if (this.isSearchEnabled()) {\n                    this.applyLocalFilter(this.searchControl.value || '');\n                } else {\n                    this.setVisibleOptions(safeOptions);\n                }\n            });\n    }\n\n    private initializeDeferredQueries(): void {\n        this.deferredQuery$\n            .pipe(\n                switchMap((query) => {\n                    if (query.kind === 'close') {\n                        const selected = this.selectedValues();\n                        // Preserve a disabled loading option when the closed select\n                        // would otherwise contain no option and could not reopen.\n                        return of({ loading: !this.isSearchEnabled() && selected.length === 0, options: selected, sourceOptions: undefined as any[] | undefined });\n                    }\n\n                    const search = query.value || '';\n                    const searchLength = search.trim().length;\n                    const isBelowMinimumLength = searchLength > 0 && searchLength < (this.searchOptions.minLength ?? 0);\n                    if (query.kind === 'search' && isBelowMinimumLength) {\n                        if (this.isDeferredSourceLoaded) {\n                            return of({ loading: false, options: this.sourceOptions, sourceOptions: undefined as any[] | undefined });\n                        }\n\n                        const options$ = this.deferredOptionsRequest$ ?? this.resolveOptions();\n                        return concat(\n                            of({ loading: true, options: [] as any[], sourceOptions: undefined as any[] | undefined }),\n                            options$.pipe(\n                                map((options) => options ?? []),\n                                map((sourceOptions) => ({ loading: false, options: sourceOptions, sourceOptions })),\n                            ),\n                        );\n                    }\n\n                    if (query.kind === 'search' && this.searchOptions.mode !== 'remote' && this.isDeferredSourceLoaded) {\n                        return of({ loading: false, options: this.filterOptions(this.sourceOptions, search), sourceOptions: undefined as any[] | undefined });\n                    }\n\n                    const options$ =\n                        this.searchOptions.mode === 'remote' && typeof this.field.options === 'function' && searchLength > 0\n                            ? this.resolveOptions(search)\n                            : (this.deferredOptionsRequest$ ?? this.resolveOptions());\n                    return concat(\n                        of({ loading: true, options: [] as any[], sourceOptions: undefined as any[] | undefined }),\n                        options$.pipe(\n                            map((options) => options ?? []),\n                            map((sourceOptions) => ({\n                                loading: false,\n                                sourceOptions: this.searchOptions.mode === 'remote' && searchLength > 0 ? undefined : sourceOptions,\n                                options: this.searchOptions.mode === 'remote' ? sourceOptions : this.filterOptions(sourceOptions, search),\n                            })),\n                        ),\n                    );\n                }),\n                takeUntil(this._onDestroy),\n            )\n            .subscribe(({ loading, options, sourceOptions }) => {\n                this.isLoading.set(loading);\n                if (!loading) {\n                    if (sourceOptions !== undefined) {\n                        this.sourceOptions = sourceOptions;\n                        this.isDeferredSourceLoaded = true;\n                    }\n                    this.setVisibleOptions(options);\n                }\n            });\n    }\n\n    private resolveOptions(search?: string): Observable<any[]> {\n        if (isObservable(this.field.options)) {\n            return this.field.options as Observable<any[]>;\n        }\n        if (typeof this.field.options === 'function') {\n            return this.field.options(search, this.group.getRawValue());\n        }\n        return of(this.field.options ?? []);\n    }\n\n    private applyLocalFilter(value: string): void {\n        const searchLength = value.trim().length;\n        const options = searchLength > 0 && searchLength < (this.searchOptions.minLength ?? 0) ? this.sourceOptions : this.filterOptions(this.sourceOptions, value);\n        this.setVisibleOptions(options);\n    }\n\n    private setVisibleOptions(options: any[]): void {\n        this.visibleOptions = options;\n        this.filteredOptions.set(options);\n        this.updateSelectAllState(this.group.controls[this.field.name].value);\n        this.changeDetectorRef.markForCheck();\n    }\n\n    private filterOptions(options: any[], value: string): any[] {\n        const search = value.trim().toLocaleLowerCase();\n        if (!search) {\n            return options;\n        }\n\n        const keys = this.searchOptions.keys ?? [];\n        return options.filter((option) => {\n            const keyMatch = keys.some((key) => this.normalizeSearchValue(option?.[key]).includes(search));\n            const propertyMatch = this.field.property ? this.normalizeSearchValue(option?.[this.field.property]).includes(search) : false;\n            return keyMatch || propertyMatch || (!keys.length && !this.field.property && this.normalizeSearchValue(option).includes(search));\n        });\n    }\n\n    private normalizeSearchValue(value: unknown): string {\n        return value == null ? '' : String(value).toLocaleLowerCase();\n    }\n\n    private installMatSelectScrollCorrection(): void {\n        if (this.restoreMatSelectScroll || (!this.isSearchEnabled() && !this.field.multiple)) {\n            return;\n        }\n\n        const matSelect = this.matSelect() as unknown as (MatSelect & MatSelectInternals) | undefined;\n        if (!matSelect) {\n            return;\n        }\n\n        const originalScrollOptionIntoView = matSelect._scrollOptionIntoView;\n        matSelect._scrollOptionIntoView = (index: number) => {\n            const options = matSelect.options.toArray();\n            const option = options[index];\n            const optionElement = option?._getHostElement();\n\n            if (optionElement?.classList.contains('kles-select-search-option')) {\n                const firstOptionIndex = options.findIndex((candidate) => {\n                    const element = candidate._getHostElement();\n                    return !candidate.disabled && !element.classList.contains('kles-hidden-selected-option');\n                });\n                if (firstOptionIndex >= 0 && matSelect._keyManager.activeItemIndex !== firstOptionIndex) {\n                    matSelect._keyManager.setActiveItem(firstOptionIndex);\n                }\n                return;\n            }\n\n            originalScrollOptionIntoView.call(matSelect, index);\n            requestAnimationFrame(() => this.keepOptionVisible(option?._getHostElement()));\n        };\n\n        this.restoreMatSelectScroll = () => {\n            matSelect._scrollOptionIntoView = originalScrollOptionIntoView;\n            this.restoreMatSelectScroll = undefined;\n        };\n    }\n\n    private keepOptionVisible(activeOption?: HTMLElement): void {\n        const panel = this.matSelect()?.panel?.nativeElement as HTMLElement | undefined;\n        if (!panel || !activeOption || !panel.contains(activeOption)) {\n            return;\n        }\n\n        const options = panel.querySelectorAll<HTMLElement>('.mat-mdc-option:not(.kles-select-search-option):not(.kles-hidden-selected-option)');\n        if (activeOption === options.item(0)) {\n            panel.scrollTop = 0;\n            return;\n        }\n        if (activeOption === options.item(options.length - 1)) {\n            panel.scrollTop = panel.scrollHeight;\n            return;\n        }\n\n        const panelRect = panel.getBoundingClientRect();\n        const fixedHeader = panel.querySelector<HTMLElement>('.selectAll') ?? panel.querySelector<HTMLElement>('.kles-select-search-option');\n        const visibleTop = fixedHeader?.getBoundingClientRect().bottom ?? panelRect.top;\n        const optionRect = activeOption.getBoundingClientRect();\n        if (optionRect.top < visibleTop) {\n            panel.scrollTop += optionRect.top - visibleTop;\n        } else if (optionRect.bottom > panelRect.bottom) {\n            panel.scrollTop += optionRect.bottom - panelRect.bottom;\n        }\n    }\n\n    private selectedValues(): any[] {\n        const value = this.group.controls[this.field.name].value;\n        if (value === undefined || value === null) {\n            return [];\n        }\n        return Array.isArray(value) ? value : [value];\n    }\n\n    private updateSelectAllState(values: any): void {\n        if (!this.field.multiple) {\n            return;\n        }\n\n        const selected = Array.isArray(values) ? values : [];\n        const enabledOptions = this.visibleOptions.filter((option) => !option?.disabled);\n        const selectedCount = enabledOptions.filter((option) => selected.some((value) => this.compareFn(value, option))).length;\n        const allSelected = enabledOptions.length > 0 && selectedCount === enabledOptions.length;\n        this.selectAllIndeterminate.set(selectedCount > 0 && !allSelected);\n        this.selectAllControl.setValue(allSelected, { emitEvent: false });\n    }\n}\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\"\n\nexport function autocompleteObjectValidator(optional?: boolean): ValidatorFn {\n    return (control: AbstractControl): { [key: string]: any } | null => {\n        if ((control.value === null || control.value === undefined) && !optional) return { 'invalidAutocompleteObject': { value: control.value } }\n\n        if (typeof control.value === 'string') {\n            if (control.value === '' && optional) return null;\n            return { 'invalidAutocompleteObject': { value: control.value } }\n        }\n        return null  /* valid option selected */\n    }\n}\n\nexport function autocompleteStringValidator(validOptions: Array<string>, optional?: boolean): ValidatorFn {\n    return (control: AbstractControl): { [key: string]: any } | null => {\n        if ((control.value === '' || control.value === null) && optional) return null;\n        if (validOptions.indexOf(control.value) !== -1) {\n            return null  /* valid option selected */\n        }\n        return { 'invalidAutocompleteString': { value: control.value } }\n    }\n}","/*\n * Public API Surface of kles-material-dynamicforms\n */\n\nexport * from './lib/kles-material-dynamicforms.module';\n\n/**DIRECTIVE */\nexport * from './lib/directive/dynamic-field.directive';\nexport * from './lib/directive/dynamic-component.directive';\nexport * from './lib/directive/mat-error-message.directive';\nexport * from './lib/directive/mat-error-form.directive';\nexport * from './lib/directive/focus-target.directive';\n\n/*FORMS*/\nexport * from './lib/forms/button-control-base';\nexport * from './lib/forms/button-control.component';\nexport * from './lib/forms/buttonchecker-control.component';\nexport * from './lib/forms/buttonfile-control.component';\nexport * from './lib/forms/file-control.component';\nexport * from './lib/forms/fab-control.component';\nexport * from './lib/forms/mini-fab-control.component';\nexport * from './lib/forms/icon-button-control.component';\n\n/**FIELDS */\nexport * from './lib/fields/badge.component';\nexport * from './lib/fields/button-form.component';\nexport * from './lib/fields/buttonchecker-form.component';\nexport * from './lib/fields/buttonfile-form.component';\nexport * from './lib/fields/checkbox.component';\nexport * from './lib/fields/color.component';\nexport * from './lib/fields/date.component';\nexport * from './lib/fields/date-time.component';\nexport * from './lib/fields/field.abstract';\nexport * from './lib/fields/input.component';\nexport * from './lib/fields/input.clearable.component';\nexport * from './lib/fields/file.component';\nexport * from './lib/fields/image-upload.component';\nexport * from './lib/fields/label.component';\nexport * from './lib/fields/list-field.component';\nexport * from './lib/fields/radio.component';\nexport * from './lib/fields/textarea.component';\nexport * from './lib/fields/text.component';\nexport * from './lib/fields/chip.component';\nexport * from './lib/fields/group.component';\nexport * from './lib/fields/icon.component';\nexport * from './lib/fields/line-break.component';\nexport * from './lib/fields/link.component';\nexport * from './lib/fields/slide-toggle.component';\nexport * from './lib/fields/selection-list.component';\nexport * from './lib/fields/button-toogle-group.component';\nexport * from './lib/fields/array.component';\nexport * from './lib/fields/range.component';\nexport * from './lib/fields/tile.component';\nexport * from './lib/fields/subfields/clear.component';\nexport * from './lib/fields/button-fab.component';\nexport * from './lib/fields/button-mini-fab.component';\nexport * from './lib/fields/button-icon.component';\nexport * from './lib/fields/selection-list.search.component';\nexport * from './lib/fields/subfields/copy.component';\nexport * from './lib/fields/subfields/password-visibility.component';\nexport * from './lib/fields/action-menu.component';\nexport * from './lib/fields/currency.component';\nexport * from './lib/fields/status.component';\nexport * from './lib/fields/chip-grid.component';\nexport * from './lib/fields/select.component'\n\n/**ENUMS */\nexport * from './lib/enums/type.enum';\n\n/**INTERFACES */\nexport * from './lib/interfaces/component.interface';\nexport * from './lib/interfaces/field.interface';\nexport * from './lib/interfaces/field.config.interface';\nexport * from './lib/interfaces/layout.interface';\nexport * from './lib/interfaces/validator.interface';\nexport * from './lib/interfaces/directive.interface';\nexport * from './lib/interfaces/clear-control.interface';\n\n/**MATCHER */\nexport * from './lib/matcher/form-error.matcher';\n\n/**VALIDATORS */\nexport * from './lib/validators/autocomplete.validator';\n\n/**FORM */\nexport * from './lib/dynamic-form.component';\n\n/**PIPES */\nexport * from './lib/pipe/array.pipe';\nexport * from './lib/pipe/transform.pipe';\n\n/**DECORATORS */\nexport * from './lib/decorators/component.decorator';\n\n/**FACTORIES */\nexport * from './lib/factories/field.factory';\n\n/**CONTROLS */\nexport * from './lib/controls/array.control';\nexport * from './lib/controls/control.interface';\nexport * from './lib/controls/default.control';\nexport * from './lib/controls/group.control';\nexport * from './lib/controls/range.control';\nexport * from './lib/controls/control.abstract';\n\n/**SELECTION */\nexport * from './lib/selection/selection-model';\n\n/**UTILS */\nexport * from './lib/utils/destroyable.guard';\n\n/**INTL */\nexport * from './lib/dynamic-form-intl';\n\n/**UI */\nexport * from './lib/ui/array.ui';\nexport * from './lib/ui/default.ui';\nexport * from './lib/ui/group.ui';\nexport * from './lib/ui/ui.abstract';\nexport * from './lib/ui/ui.interface';\nexport * from './lib/ui/ui-state/array-ui-state';\nexport * from './lib/ui/ui-state/control-ui-state';\nexport * from './lib/ui/ui-state/group-ui-state';\nexport * from './lib/ui/ui-state/ui-state.abstract';\nexport * from './lib/ui/ui-state/ui-state.types';\n\n/**TOKEN */\nexport * from './lib/token';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["map","i1","i2","switchMap","startWith","i8","i9","i3","i4","i5","uuidv4","MatLabel","MatFormField","i6","MatOption","takeUntil","distinctUntilChanged","shareReplay"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAOsB,uBAAuB,CAAA;IACzC,WAAA,CACc,KAAuB,EACvB,GAAuB,EAAA;QADvB,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,GAAG,GAAH,GAAG;IACd;AAGI,IAAA,eAAe,CAAC,WAA0C,EAAA;AAC7D,QAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,YAAA,OAAO,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,SAAS,CAAC,CAAC;QACpF;AACA,QAAA,OAAO,IAAI;IACf;AAEO,IAAA,oBAAoB,CAAC,WAA+C,EAAA;AACvE,QAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YACxB,OAAO,UAAU,CAAC,YAAY,CAC1B,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,KAAI;gBAC3B,OAAO,CAAC,CAAkB,KAAI;oBAC1B,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1C,oBAAA,IAAI,UAAU,YAAY,OAAO,EAAE;AAC/B,wBAAA,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,CAAC;oBAC7D;yBAAO;AACH,wBAAA,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC;oBAC/D;AACJ,gBAAA,CAAC;YACL,CAAC,CAAC,CACL;QACL;AACA,QAAA,OAAO,IAAI;IACf;AACH;;ACjCK,MAAO,eAAgB,SAAQ,uBAAuB,CAAA;IAEjD,MAAM,GAAA;QACT,MAAM,OAAO,GAAG,IAAI,WAAW,CAC3B,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,EAAE,EACnE;AACI,YAAA,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK;AAC5C,YAAA,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;AAC9D,YAAA,eAAe,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,EAAE,CAAC;AAC7E,YAAA,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ;AAC5C,SAAA,CACJ;AAED,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AACvB,YAAA,MAAM,CACF,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAClC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CACtB,IAAI,CAAC,CAAC,CAAC,EACP,UAAU,CAAC,CAAC,GAAG,KAAI;AACf,gBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AAClB,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC;YACnB,CAAC,CAAC,EACF,GAAG,CAAC,CAAC,KAAK,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAC9C,CACJ,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;gBACrB,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO;AACrC,gBAAA,IAAI,QAAQ,CAAC,OAAO,EAAE;oBAClB,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;gBACzC;qBAAO;AACH,oBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;wBACtB,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;oBACxC;AACA,oBAAA,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAChC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK;gBACrC;AACJ,YAAA,CAAC,CAAC;QACN;AACA,QAAA,OAAO,OAAO;IAClB;AACH;;MCzCqB,eAAe,CAAA;AAArC,IAAA,WAAA,GAAA;QACc,IAAA,CAAA,MAAM,GAAG,MAAM,CAAqB,SAAS;mFAAC;QAEhD,IAAA,CAAA,OAAO,GAAgC,IAAI;QAC3C,IAAA,CAAA,UAAU,GAA2B,IAAI;IAsCrD;AAlCI,IAAA,GAAG,CAAyC,IAAO,EAAA;QAC/C,IAAI,QAAQ,GAAoC,IAAI;QACpD,IAAI,QAAQ,IAAI,IAAI;AAAE,YAAA,OAAO,IAAI;AACjC,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;AAAE,YAAA,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;AAC5E,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI;QACtC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,OAA+B,EAAE,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IAC3G;AAEA,IAAA,KAAK,CAAC,IAAqB,EAAA;AACvB,QAAA,OAAO,IAAI;IACf;AAMA,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;IACnC;IAEA,SAAS,CAAC,MAA4B,EAAE,GAAoB,EAAA;AACxD,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM;AACrB,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG;IACzB;IAEU,YAAY,GAAA;QAClB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE;AACzC,YAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QAClE;IACJ;IAEA,iBAAiB,CAAC,GAAoB,EAAE,KAAU,EAAA;;IAElD;AACH;;ACzCK,MAAO,cAA4C,SAAQ,eAA+B,CAAA;AAC5F,IAAA,WAAA,CAAY,KAAc,EAAA;AACtB,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QAC1B;IACJ;AAEA,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;IACnC;AAES,IAAA,QAAQ,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB,IAAI,CAAC,YAAY,EAAE;IACvB;AAES,IAAA,UAAU,CAAC,KAA+B,EAAA;AAC/C,QAAA,IAAI,KAAK,IAAI,IAAI,EAAE;YACf;QACJ;AAEA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE;AAC1B,QAAA,IAAI,IAAI,IAAI,IAAI,EAAE;AACd,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAe,CAAC;YAChC;QACJ;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAI,IAAY,EAAE,GAAI,KAAa,EAAY,CAAC;QAClE,IAAI,CAAC,YAAY,EAAE;IACvB;AAEH;;MChCqB,yBAAyB,CAAA;AAC3C,IAAA,WAAA,CAAsB,KAAuB,EAAA;QAAvB,IAAA,CAAA,KAAK,GAAL,KAAK;IAAqB;AAEnD;;ACHK,MAAO,iBAAkB,SAAQ,yBAAyB,CAAA;IAC5D,MAAM,GAAA;QACF,OAAO,IAAI,cAAc,CAAC;AACtB,YAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;AAC/B,YAAA,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG;AACnB,YAAA,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG;AACnB,YAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;AAC/B,YAAA,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;AACrB,YAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;AAC/B,YAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;AAC3B,YAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;AAC3B,YAAA,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,KAAK;AAChD,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;AACvB,YAAA,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;AACrB,YAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;AAC3B,YAAA,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,MAAM;AAC3C,YAAA,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,MAAM;AAEvD,YAAA,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;AAC7B,YAAA,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;AAE7B,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;AACvB,YAAA,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;AACrB,YAAA,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;AACnC,YAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;AAC3B,YAAA,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe;AAC9C,SAAA,CAAC;IACN;AACH;;MCzBY,uBAAuB,GAAG,CAAC,KAAuB,EAAE,GAAuB,KAAqB;IACzG,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC;AAC/C,IAAA,OAAO,OAAO,CAAC,MAAM,EAAE;AAC3B;AAEO,MAAM,kBAAkB,GAAG,CAAC,KAAuB,KAAqB;AAC3E,IAAA,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC,KAAK,CAAC;AAC5C,IAAA,OAAO,OAAO,CAAC,MAAM,EAAE;AAC3B;;ACRO,MAAM,eAAe,GAKtB;AAEA,SAAU,WAAW,CAAC,MAA8J,EAAA;IACtL,OAAO,CAAC,MAAiB,KAAI;QACzB,eAAe,CAAC,IAAI,CAAC;AACjB,YAAA,SAAS,EAAE,MAAM;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI;AACjB,YAAA,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,uBAAuB;AAClD,YAAA,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,kBAAkB;AACtC,SAAA,CAAC;AACN,IAAA,CAAC;AACL;;ICvBY;AAAZ,CAAA,UAAY,QAAQ,EAAA;AAChB,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,QAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,QAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,QAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,QAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,QAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,QAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,QAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,QAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,QAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,QAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,QAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,QAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,QAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,QAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACrB,CAAC,EArBW,QAAQ,KAAR,QAAQ,GAAA,EAAA,CAAA,CAAA;;MCKP,UAAU,GAAG,IAAI,cAAc,CAAS,YAAY;MACpD,KAAK,GAAG,IAAI,cAAc,CAAY,OAAO;MAC7C,cAAc,GAAG,IAAI,cAAc,CAAqB,gBAAgB;MACxE,QAAQ,GAAG,IAAI,cAAc,CAAe,UAAU;MACtD,KAAK,GAAG,IAAI,cAAc,CAAmB,OAAO;MAEpD,aAAa,GAAG,IAAI,cAAc,CAAyB,eAAe;;MCU1E,sBAAsB,CAAA;AAO/B,IAAA,WAAA,GAAA;AANS,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAmB,KAAK,CAAC;AACvC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAiB,KAAK,CAAC;AACrC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAqB,cAAc,CAAC;AAK/D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAEpD,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CACpB,aAAa,CAAC;AACV,YAAA,OAAO,CAAC,YAAY,CAAC,IAAI,CACrB,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EACxBA,KAAG,CAAC,CAAC,KAAK,KAAI;AACV,gBAAA,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACjC,YAAA,CAAC,CAAC,CACL;YACD,OAAO,CAAC,aAAa,CAAC,IAAI,CACtB,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EACzBA,KAAG,CAAC,CAAC,MAAM,KAAK,MAAM,KAAK,UAAU,CAAC,CACzC;AACJ,SAAA,CAAC,CAAC,IAAI,CACHA,KAAG,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAI;YACtB,OAAO,KAAK,IAAI,QAAQ;QAC5B,CAAC,CAAC,CACL,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,CACzB;IACL;AAEA,IAAA,KAAK,CAAC,KAAiB,EAAA;QACnB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;IAChD;AAEQ,IAAA,SAAS,CAAI,KAA2B,EAAA;QAC5C,IAAI,KAAK,IAAI,IAAI;AAAE,YAAA,OAAO,KAAK;AAE/B,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3B,YAAA,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC;QAC3B;AAEA,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACtB,YAAA,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC;QAC3B;QAEA,IAAI,KAAK,YAAY,GAAG,IAAI,KAAK,YAAY,GAAG,EAAE;AAC9C,YAAA,OAAO,KAAK,CAAC,IAAI,GAAG,CAAC;QACzB;AAEA,QAAA,OAAO,IAAI;IACf;8GApDS,sBAAsB,EAAA,IAAA,EAAA,EAAA,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,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EARrB;;;;KAIT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAES,OAAO,2IAAE,aAAa,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEvB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAVlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE;;;;AAIT,IAAA,CAAA;AACD,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;AACpC,iBAAA;;;AChBK,SAAU,aAAa,CAAC,KAAc,EAAA;AACxC,IAAA,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;AAC9C,QAAA,OAAQ,KAAqB,CAAC,OAAO,KAAK,UAAU;AAC5D;;MCOa,yBAAyB,CAAA;AAYlC,IAAA,WAAA,CACc,SAA2B,EAC3B,QAAkB,EACpB,cAA8B,EAAA;QAF5B,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACV,IAAA,CAAA,cAAc,GAAd,cAAc;QATjB,IAAA,CAAA,OAAO,GAAkC,IAAI;QAGtD,IAAA,CAAA,aAAa,GAAwB,EAAE;AAC/B,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,GAAG,EAA8B;IAM9D;IAEH,WAAW,GAAA;QACP,IAAI,CAAC,iBAAiB,EAAE;IAC5B;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,cAAc,EAAE;IACzB;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,MAAM,YAAY,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE;AAC5E,QAAA,MAAM,YAAY,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE;AAC5E,QAAA,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE;AACnE,QAAA,MAAM,oBAAoB,GAAG,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,aAAa,EAAE;AACpG,QAAA,MAAM,cAAc,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,aAAa,EAAE;QAElF,IAAI,YAAY,EAAE;YACd,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,YAAY;QAC9C;QAEA,IAAI,YAAY,EAAE;YACd,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,YAAY;QAC9C;QAEA,IAAI,SAAS,EAAE;YACX,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY;QACxC;QAEA,IAAI,oBAAoB,EAAE;YACtB,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,YAAY;QAC9D;QAEA,IAAI,cAAc,EAAE;YAChB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY;QAClD;QAEA,IAAI,YAAY,IAAI,YAAY,IAAI,SAAS,IAAI,oBAAoB,IAAI,cAAc,EAAE;YACrF,IAAI,CAAC,cAAc,EAAE;QACzB;IACJ;IAEA,cAAc,GAAA;QACV,IAAI,CAAC,iBAAiB,EAAE;AAExB,QAAA,MAAM,OAAO,GAIT;AACA,YAAA,SAAS,EAAE;gBACP,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC;AAC/B,gBAAA,IAAI,IAAI,CAAC,KAAK,CAAC;AACX,sBAAE;AACI,wBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;AACvB,8BAAE;AACI,gCAAA;AACI,oCAAA,OAAO,EAAE,WAAW;oCACpB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK;oCAC9C,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE;AAClD,iCAAA;AACJ;8BACD,EAAE,CAAC;AACT,wBAAA,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE;AACvE,wBAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,EAAE;AAC7E;sBACD,EAAE,CAAC;AACT,gBAAA;AACI,oBAAA,OAAO,EAAE,UAAU;AACnB,oBAAA,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;AAC5B,iBAAA;AACD,gBAAA;AACI,oBAAA,OAAO,EAAE,KAAK;oBACd,QAAQ,EAAE,IAAI,CAAC,KAAK;AACvB,iBAAA;AACD,gBAAA;AACI,oBAAA,OAAO,EAAE,KAAK;oBACd,QAAQ,EAAE,IAAI,CAAC,KAAK;AACvB,iBAAA;AACD,gBAAA;AACI,oBAAA,OAAO,EAAE,cAAc;oBACvB,QAAQ,EAAE,IAAI,CAAC,aAAa;AAC/B,iBAAA;AACD,gBAAA;AACI,oBAAA,OAAO,EAAE,QAAQ;oBACjB,QAAQ,EAAE,IAAI,CAAC,EAAE;AACpB,iBAAA;gBAED,IAAI,IAAI,CAAC;AACL,sBAAE;AACI,wBAAA;AACI,4BAAA,OAAO,EAAE,aAAa;4BACtB,QAAQ,EAAE,IAAI,CAAC,OAAO;AACzB,yBAAA;AACJ;sBACD,EAAE,CAAC;AACZ,aAAA;YACD,MAAM,EAAE,IAAI,CAAC,QAAQ;SACxB;QAED,MAAM,QAAQ,GAAa,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;AAEnD,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AACtB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,IAAI,sBAAsB,EAAE,OAAO,CAAC;AAC3G,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;QACtC;AACA,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;AAC1B,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;QAC9H;QAEA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;AAErD,QAAA,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,MAAK;AAC9B,YAAA,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE;gBACzB,QAAQ,CAAC,OAAO,EAAE;YACtB;AACJ,QAAA,CAAC,CAAC;IACN;AAEU,IAAA,kBAAkB,CAAC,QAAkB,EAAA;AAC3C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;QAEtC,IAAI,SAAS,EAAE;YACX,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,EAAE;gBAC3D,QAAQ;AACR,gBAAA,gBAAgB,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AAClF,aAAA,CAAC;AAEF,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;gBACtB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;AACrC,oBAAA,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;gBAC9E;qBAAO;AACH,oBAAA,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;gBAC3E;YACJ;AAEA,YAAA,OAAO,YAAY;QACvB;AAEA,QAAA,OAAO,SAAS;IACpB;IAEU,aAAa,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;YACzC,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS;QACjH;AACA,QAAA,OAAO,SAAS;IACpB;IAEQ,kBAAkB,CACtB,aAAwB,EACxB,OAIC,EAAA;QAED,MAAM,QAAQ,GAAa,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;AACnD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,CAAC;;;AAI7E,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC5D,MAAM,YAAY,GAAG,SAAS,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI;QAC/E,IAAI,YAAY,EAAE;AACd,YAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC;YAC5C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC;QACvD;AAEA,QAAA,SAAS,CAAC,SAAS,CAAC,MAAK;AACrB,YAAA,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE;gBACzB,QAAQ,CAAC,OAAO,EAAE;YACtB;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,SAAS;IACpB;IAEQ,iBAAiB,GAAA;AACrB,QAAA,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE;AAC5B,QAAA,IAAI,CAAC,YAAY,GAAG,SAAS;QAE7B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;YACrC,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC;YAClD,IAAI,IAAI,EAAE;AACN,gBAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC;YACxC;YACA,SAAS,CAAC,OAAO,EAAE;AACvB,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;AACvB,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;IAClC;8GA/MS,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAA,EAAA,eAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA;;sBAEI;;sBACA;;sBACA;;sBACA;;sBAEA;;;AClBC,SAAU,iBAAiB,CAAI,WAAgC,EAAA;IACjE,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AACxI;;MC+Ba,qBAAqB,CAAA;AA3BlC,IAAA,WAAA,GAAA;QA4Ba,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ;iFAAmB;QAExC,IAAA,CAAA,WAAW,GAAG,KAAK,CAA4C,EAAE;wFAAC;QAElE,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAiD,EAAE;6FAAC;AAE5E,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,iBAAiB,CAAc,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;4FAAC;AAE1F,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAM,iBAAiB,CAAmB,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC;iGAAC;QAEzG,IAAA,CAAA,UAAU,GAAG,QAAQ,CAC1B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CACxB,SAAS,CAAC,CAAC,IAAI,KACX,IAAI,CAAC,aAAa,CAAC,IAAI,CACnB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EACtBA,KAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CACzB,CACJ,CACJ,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,CACzB;AACJ,IAAA;8GAtBY,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,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAzBpB;;;;;;;;;;;;;;KAcT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,mCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EASS,mBAAmB,8BAAE,WAAW,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEjC,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBA3BjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,QAAA,EAChB;;;;;;;;;;;;;;AAcT,IAAA,CAAA,EAAA,UAAA,EAQW,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,EAAE,WAAW,CAAC,EAAA,MAAA,EAAA,CAAA,mCAAA,CAAA,EAAA;;;MC5BlC,yBAAyB,CAAA;AAElC,IAAA,WAAA,GAAA;IACA;IAEA,YAAY,CAAC,OAAkC,EAAE,IAAwC,EAAA;AACrF,QAAA,MAAM,WAAW,GAAG,IAAI,IAAI,IAAI,CAAC,SAAS;QAC1C,OAAO,CAAC,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,IAAI,WAAW,CAAC,CAAC;IAC9F;8GARS,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAzB,yBAAyB,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC;;;ACDK,MAAO,YAAqF,SAAQ,eAAyB,CAAA;AAG/H,IAAA,WAAA,CAAY,MAAiB,EAAA;AACzB,QAAA,KAAK,EAAE;QAHJ,IAAA,CAAA,MAAM,GAAoF,EAAc;QAI3G,IAAI,CAAC,MAAM,IAAI,MAAM,IAAK,EAAU,CAAQ;AAC5C,QAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAa,CAAC,EAAE;YAC/C,MAAM,KAAK,GAAI,IAAI,CAAC,MAAc,CAAC,GAAG,CAAC;AACvC,YAAA,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC;QAC/B;QACA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC7C;AAEgB,IAAA,QAAQ,CAAC,KAAU,EAAA;QAC/B,IAAI,KAAK,IAAI,IAAI;YAAE;QAEnB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACnC,MAAM,KAAK,GAAI,IAAI,CAAC,MAAc,CAAC,IAAI,CAAC;YAExC,IAAI,KAAK,EAAE;gBACP,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/B;QACJ;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB,IAAI,CAAC,YAAY,EAAE;IACvB;AAEgB,IAAA,UAAU,CAAC,KAAU,EAAA;QACjC,IAAI,KAAK,IAAI,IAAI;YAAE;QAEnB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACnC,MAAM,KAAK,GAAI,IAAI,CAAC,MAAc,CAAC,IAAI,CAAC;YAExC,IAAI,KAAK,EAAE;gBACP,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjC;QACJ;QAEA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE;AAEhC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AACZ,YAAA,GAAG,IAAI;AACP,YAAA,GAAG,KAAK;AACX,SAAA,CAAC;QAEF,IAAI,CAAC,YAAY,EAAE;IACvB;IAES,iBAAiB,CAAC,GAAoB,EAAE,KAAU,EAAA;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE;AAEhC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AACZ,YAAA,GAAG,IAAI;YACP,CAAC,GAAG,GAAG,KAAK;AACf,SAAA,CAAC;QAEF,IAAI,CAAC,YAAY,EAAE;IACvB;AAEgB,IAAA,KAAK,CAAC,IAAqB,EAAA;AACvC,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC;AACxB,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAa,EAAE,GAAG,CAAC;AACzE,QAAA,OAAO,GAAG,GAAK,IAAI,CAAC,MAAc,CAAC,GAAG,CAAqB,GAAG,IAAI;IACtE;IAEO,UAAU,CAAC,IAAY,EAAE,OAA6B,EAAA;AACxD,QAAA,IAAI,CAAC,MAAc,CAAC,IAAI,CAAC,GAAG,OAAO;AAEpC,QAAA,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC;QAE7B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE;AAEhC,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AACZ,YAAA,GAAG,IAAI;AACP,YAAA,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE;AAC1B,SAAA,CAAC;QAEF,IAAI,CAAC,YAAY,EAAE;IACvB;IAEQ,iBAAiB,GAAA;QACrB,MAAM,GAAG,GAAQ,EAAE;AAEnB,QAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAa,CAAC,EAAE;AAC/C,YAAA,GAAG,CAAC,GAAG,CAAC,GAAI,IAAI,CAAC,MAAc,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE;QACjD;AAEA,QAAA,OAAO,GAAG;IACd;AAEH;;AChCK,SAAU,uBAAuB,CAAC,OAAwB,EAAA;IAC5D,OAAO,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ;AAClI;AAEM,SAAU,iBAAiB,CAAC,QAAoC,EAAA;IAClE,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,MAAM,uBAAuB,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,CAAC,GAAG,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,uBAAuB,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AACtO;;ACjDA,MAAM,eAAe,GAAG,EAAE;AAC1B,MAAM,WAAW,GAAG,GAAG;MAoHV,yBAAyB,CAAA;AAlHtC,IAAA,WAAA,GAAA;QAmHY,IAAA,CAAA,SAAS,GAAsB,EAAE;QACzC,IAAA,CAAA,aAAa,GAAuB,EAAE;AACrB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,GAAG,EAAU;QAU1C,IAAA,CAAA,OAAO,GAAkC,IAAI;QAC7C,IAAA,CAAA,YAAY,GAAsB,EAAE;AAiEhD,IAAA;IA1EG,IACI,QAAQ,CAAC,KAAwB,EAAA;AACjC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,aAAa,GAAG,iBAAiB,CAAC,KAAK,CAAC;IACjD;IACA,IAAI,QAAQ,KAAwB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;AAM3D,IAAA,SAAS,CAAC,OAAwB,EAAA;QAC9B,OAAO,uBAAuB,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK;IACxE;AAEA,IAAA,SAAS,CAAC,OAAwB,EAAA,EAAa,OAAO,uBAAuB,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;AACtH,IAAA,aAAa,CAAC,OAAwB,EAAA,EAAa,OAAO,uBAAuB,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;AAC9H,IAAA,SAAS,CAAC,OAAwB,EAAA,EAAa,OAAO,uBAAuB,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;AACtH,IAAA,QAAQ,CAAC,OAAwB,EAAA,EAAa,OAAO,uBAAuB,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;AACpH,IAAA,OAAO,CAAC,OAAwB,EAAA,EAAsB,OAAO,OAA2B,CAAC,CAAC;AAC1F,IAAA,WAAW,CAAC,OAAwB,EAAA,EAA0B,OAAO,OAA+B,CAAC,CAAC;AACtG,IAAA,KAAK,CAAC,OAAwB,EAAA,EAAsB,OAAO,OAA2B,CAAC,CAAC;IAExF,eAAe,CAAC,SAA4B,EAAE,EAAA;QAC1C,OAAO;AACH,YAAA,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAC3C,iBAAiB,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,WAAW;SACvD;IACL;AAEA,IAAA,aAAa,CAAC,OAAwB,EAAA;AAClC,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK;QACnC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE;IAC9D;AAEA,IAAA,YAAY,CAAC,OAAwB,EAAA;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;AAC/C,QAAA,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE;QACnC,MAAM,MAAM,GAAoC,EAAE;AAClD,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC;AACpD,QAAA,KAAK,MAAM,UAAU,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,EAAE;YAC9D,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;AACjD,YAAA,IAAI,SAAS;AAAE,gBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,CAAA,CAAA,EAAI,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC;QACzF;AACA,QAAA,OAAO,MAAM;IACjB;AAEA,IAAA,UAAU,CAAC,OAAwB,EAAA;AAC/B,QAAA,MAAM,IAAI,GAAI,OAA2B,CAAC,IAAI,IAAI,MAAM;QACxD,OAAO,OAAO,IAAI,KAAK,QAAQ,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI;IACrE;IAEQ,YAAY,CAAC,MAAuC,EAAE,SAAuC,EAAE,MAAc,EAAE,OAAe,EAAE,QAAiB,EAAA;AACrJ,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,IAAI,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC;AAClH,QAAA,MAAM,OAAO,GAAG,QAAQ,IAAI,IAAI,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,CAAC;AACnE,QAAA,IAAI,QAAQ,IAAI,SAAS,CAAC,OAAO,IAAI,IAAI;AAAE,YAAA,MAAM,CAAC,CAAA,eAAA,EAAkB,MAAM,CAAA,CAAE,CAAC,GAAG,SAAS,CAAC,OAAO,IAAI,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;AAC5K,QAAA,IAAI,QAAQ,IAAI,SAAS,CAAC,OAAO,IAAI,IAAI;AAAE,YAAA,MAAM,CAAC,CAAA,eAAA,EAAkB,MAAM,CAAA,CAAE,CAAC,GAAG,SAAS,CAAC,OAAO,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC;QAClK,IAAI,QAAQ,IAAI,IAAI;AAAE,YAAA,MAAM,CAAC,CAAA,gBAAA,EAAmB,MAAM,EAAE,CAAC,GAAG,QAAQ;AACpE,QAAA,IAAI,SAAS,CAAC,QAAQ,IAAI,IAAI;YAAE,MAAM,CAAC,mBAAmB,MAAM,CAAA,CAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC;IAC9H;AAEQ,IAAA,OAAO,CAAC,MAAyB,EAAA;QACrC,OAAO,MAAM,CAAC,OAAO,IAAI,IAAI,GAAG,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;IACpG;AAEQ,IAAA,OAAO,CAAC,IAAY,EAAE,KAAa,EAAE,GAAW,EAAE,GAAW,EAAA;AACjE,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG;QACjG,MAAM,OAAO,GAAG,CAAA,kBAAA,EAAqB,IAAI,IAAI,KAAK,CAAA,mBAAA,EAAsB,UAAU,CAAA,CAAA,CAAG;AACrF,QAAA,IAAI,SAAS,EAAE,IAAI,UAAU,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AAC1E,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC;AAChC,YAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QACzB;AACA,QAAA,OAAO,UAAU;IACrB;8GA9ES,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,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA7GxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,uwGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAwEQ,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,IAAA,EAAA,SAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA9GxB,YAAY,EAAA,EAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,yBAAyB,6HAAE,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FA8GjD,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAlHrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,cAClB,IAAI,EAAA,IAAA,EACV,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAA,OAAA,EAC3B,CAAC,YAAY,EAAE,yBAAyB,EAAE,OAAO,CAAC,EAAA,QAAA,EACjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCT,IAAA,CAAA,EAAA,MAAA,EAAA,CAAA,uwGAAA,CAAA,EAAA;;sBA6EA,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBAMxB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB;;sBACA;;;ACnIL,MAAM,gBAAgB,GAAG,GAAG;MAkCf,wBAAwB,CAAA;AAoBjC,IAAA,IAAI,gBAAgB,GAAA;QAChB,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,SAAS,KAAK,aAAa;AAAE,YAAA,OAAO,mBAAmB;AAC7F,QAAA,OAAO,CAAA,aAAA,EAAgB,IAAI,CAAC,SAAS,EAAE;IAC3C;AAEA,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK;IAC1B;AAEA,IAAA,IAAI,YAAY,GAAA;QACZ,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,MAAM,EAAE;AACtC,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM;YAClC,IAAI,CAAC,eAAe,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;QACzD;QACA,OAAO,IAAI,CAAC,eAAe;IAC/B;AAEA,IAAA,IAAI,kBAAkB,GAAA;QAClB,OAAO,IAAI,CAAC,SAAS,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,KAAK,aAAa,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC;IAClJ;AAEA,IAAA,IAAI,UAAU,GAAA;QACV,IAAI,IAAI,CAAC,gBAAgB,KAAK,mBAAmB,IAAI,IAAI,CAAC,gBAAgB,KAAK,0BAA0B;AAAE,YAAA,OAAO,IAAI;QACtH,OAAO;YACH,qBAAqB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACjE,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,gBAAgB;SACjE;IACL;AAEA,IAAA,IAAY,oBAAoB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC;IAChE;IAEA,WAAA,CACY,EAAsB,EACtB,GAAsB,EAAA;QADtB,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,GAAG,GAAH,GAAG;QAtDN,IAAA,CAAA,OAAO,GAAkC,IAAI;QAC7C,IAAA,CAAA,MAAM,GAAsB,EAAE;QAC9B,IAAA,CAAA,UAAU,GAAkC,EAAE;QAC9C,IAAA,CAAA,eAAe,GAAuC,EAAE;;AAEvD,QAAA,IAAA,CAAA,MAAM,GAAsB,IAAI,YAAY,EAAO;AACnD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAE;QAE/B,IAAA,CAAA,SAAS,GAA8C,QAAQ;QAC/D,IAAA,CAAA,IAAI,GAAG,IAAI;;QAEX,IAAA,CAAA,MAAM,GAAsB,EAAE;QAC9B,IAAA,CAAA,SAAS,GAA+D,EAAE;QAI3E,IAAA,CAAA,eAAe,GAA6B,IAAI;QAChD,IAAA,CAAA,eAAe,GAAuB,EAAE;AAC/B,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,GAAG,EAAU;IAqChD;IAEH,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;AAC7B,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE;AACzB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;IACzB;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,EAAE;YAC5D,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;QACzB;AAEA,QAAA,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,EAAE;YACpE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC;QACpE;AAEA,QAAA,IAAI,OAAO,CAAC,eAAe,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,EAAE;YAC9E,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC;QAC9E;IAEJ;AAEA,IAAA,QAAQ,CAAC,KAAY,EAAA;QACjB,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACjB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC7C;aAAO;AACH,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;QACzC;IACJ;IAEQ,UAAU,GAAA;AACd,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY;QAChC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ;AACzB,aAAA,MAAM,CAAC,CAAC,GAAG,KAAI;AACZ,YAAA,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC3D,QAAA,CAAC;AACA,aAAA,OAAO,CAAC,CAAC,GAAG,KAAI;AACb,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;AAChC,QAAA,CAAC,CAAC;QAEN;AACK,aAAA,OAAO,CAAC,CAAC,KAAK,KAAI;YACf,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,SAAS,EAAE;gBACnC;YACJ;YAEA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AAChC,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACzE,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YACnE;iBAAO;gBACH,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;gBACzC,IAAI,OAAO,EAAE;oBACT,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC;gBAC7C;YACJ;AACJ,QAAA,CAAC,CAAC;IACV;IAEQ,aAAa,CAAC,KAAuB,EAAE,OAAwB,EAAA;QACnE,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,KAAK,EAAE;YAC/B,MAAM,KAAK,GAAG,OAAoB;;AAElC,YAAA,OAAO,KAAK;QAChB;aAAO,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,KAAK,EAAE;YACtC,MAAM,KAAK,GAAG,OAAoB;AAClC,YAAA,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;gBACvD,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;oBACnC,MAAM,eAAe,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACrD,MAAM,cAAc,GAAG,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,eAAe,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;oBAErH,IAAI,cAAc,EAAE;AAChB,wBAAA,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;oBACzE;AACJ,gBAAA,CAAC,CAAC;YACN;AACA,YAAA,OAAO,KAAK;QAChB;aAAO;AACH,YAAA,OAAO,OAAO;QAClB;IACJ;AAEQ,IAAA,aAAa,CAAC,KAAuB,EAAA;AACzC,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC;AAClB,cAAE,eAAe,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;AACnE,cAAE,eAAe,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAAC;QAElF,OAAO,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;IAChG;AAEQ,IAAA,aAAa,CAAC,KAAuB,EAAA;AACzC,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC;AAClB,cAAE,eAAe,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;AACnE,cAAE,eAAe,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAAC;QAElF,OAAO,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC;IAC1D;IAEQ,UAAU,GAAA;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QAE/B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;YAChC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;YACzC,IAAI,OAAO,EAAE;gBACT,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC;YACzC;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC;AAC5D,QAAA,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC;AAEtE,QAAA,OAAO,KAAK;IAChB;AAEQ,IAAA,qBAAqB,CAAC,SAA2B,EAAA;AACrD,QAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;YAC9C,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;YACpC,OAAO,EAAE,aAAa,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC9C,QAAA,CAAC,CAAC;IACN;IAEQ,QAAQ,GAAA;AACZ,QAAA,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE;QAElC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;YAChC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;YACzC,IAAI,OAAO,EAAE;gBACT,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC;YAC3C;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,OAAO;IAClB;AAEQ,IAAA,gBAAgB,CAAC,KAAyB,EAAA;QAC9C,IAAI,KAAK,IAAI,IAAI;AAAE,YAAA,OAAO,EAAE;AAC5B,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE;AAC7F,QAAA,MAAM,OAAO,GAAG,CAAA,0BAAA,EAA6B,KAAK,CAAA,mBAAA,EAAsB,UAAU,GAAG;AACrF,QAAA,IAAI,SAAS,EAAE,IAAI,UAAU,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AAC1E,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC;AAChC,YAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QACzB;AACA,QAAA,OAAO,UAAU;IACrB;8GA3MS,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,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,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,SAAA,EAHtB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,yBAAyB,EAAE,CAAC,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAzBtE;;;;;;;;;;;;;;;AAeT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4DAAA,EAAA,sCAAA,EAAA,uFAAA,EAAA,2DAAA,EAAA,mCAAA,EAAA,yIAAA,EAAA,uJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAWS,YAAY,EAAA,EAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,IAAA,EAAA,eAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,EAAA,IAAA,EAAA,SAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,QAAQ,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEtI,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAhCpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,QAAA,EACjB,uBAAuB,EAAA,UAAA,EACrB,IAAI,EAAA,QAAA,EACN;;;;;;;;;;;;;;;KAeT,EAAA,SAAA,EAUU,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,yBAAyB,EAAE,CAAC,EAAA,OAAA,EACvE,CAAC,YAAY,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,WAAW,EAAE,mBAAmB,EAAE,QAAQ,CAAC,EAAA,MAAA,EAAA,CAAA,4DAAA,EAAA,sCAAA,EAAA,uFAAA,EAAA,2DAAA,EAAA,mCAAA,EAAA,yIAAA,EAAA,uJAAA,CAAA,EAAA;;sBAG/I;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBAEA;;sBACA;;sBAEA;;sBACA;;;MCzDQ,sBAAsB,CAAA;AAO/B,IAAA,WAAA,CAAoB,SAA2B,EAAA;QAA3B,IAAA,CAAA,SAAS,GAAT,SAAS;IAAqB;IAElD,QAAQ,GAAA;QACJ,IAAI,CAAC,cAAc,EAAE;IACzB;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,MAAM,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,aAAa,EAAE;AACtF,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE;AAE1E,QAAA,IAAI,gBAAgB,IAAI,YAAY,EAAE;YAClC,IAAI,CAAC,cAAc,EAAE;YACrB;QACJ;AAEA,QAAA,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE;YACvD,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;QACpD;IACJ;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE;IAChC;IAEQ,cAAc,GAAA;AAClB,QAAA,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE;AAE5B,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC7B,YAAA,SAAS,EAAE;gBACP,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC;AAC/B,gBAAA;AACI,oBAAA,OAAO,EAAE,KAAK;oBACd,QAAQ,EAAE,IAAI,CAAC,KAAK;AACvB,iBAAA;AACJ,aAAA;AACD,YAAA,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ;AAClC,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC;QAChF,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;IACnD;8GA/CS,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA;;sBAEI,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;sBACxB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;MCgHhB,cAAc,CAAA;8GAAd,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,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAlFnB,YAAY;YACZ,eAAe;YACf,eAAe;YACf,gBAAgB;YAChB,aAAa;YACb,gBAAgB;YAChB,cAAc;YACd,aAAa;YACb,iBAAiB;YACjB,kBAAkB;YAClB,cAAc;YACd,eAAe;YACf,cAAc;YACd,mBAAmB;YACnB,cAAc;YACd,gBAAgB;YAChB,cAAc;YACd,kBAAkB;YAClB,aAAa;YACb,aAAa;YACb,aAAa;YACb,cAAc;YACd,wBAAwB;YACxB,iBAAiB;YACjB,eAAe;YACf,qBAAqB;YACrB,oBAAoB;YACpB,aAAa;YACb,kBAAkB;YAClB,mBAAmB;YACnB,iBAAiB;YACjB,aAAa;YACb,eAAe;YACf,oBAAoB;YACpB,qBAAqB;AACrB,YAAA,YAAY,aAIZ,eAAe;YACf,gBAAgB;YAChB,aAAa;YACb,gBAAgB;YAChB,cAAc;YACd,aAAa;YACb,iBAAiB;YACjB,cAAc;YACd,kBAAkB;YAClB,eAAe;YACf,cAAc;YACd,mBAAmB;YACnB,cAAc;YACd,gBAAgB;YAChB,cAAc;YACd,kBAAkB;YAClB,aAAa;YACb,aAAa;YACb,aAAa;YACb,cAAc;YACd,wBAAwB;YACxB,iBAAiB;YACjB,eAAe;YACf,qBAAqB;YACrB,oBAAoB;YACpB,aAAa;YACb,kBAAkB;YAClB,mBAAmB;YACnB,iBAAiB;YACjB,aAAa;YACb,eAAe;YACf,oBAAoB;YACpB,eAAe;YACf,aAAa;YACb,qBAAqB;YACrB,YAAY,CAAA,EAAA,CAAA,CAAA;AAQP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EAAA,SAAA,EANZ;YACP,mBAAmB;YACnB;AACH,SAAA,EAAA,OAAA,EAAA,CA/EG,YAAY;YACZ,eAAe;YACf,eAAe;YACf,gBAAgB;YAChB,aAAa;YACb,gBAAgB;YAChB,cAAc;YACd,aAAa;YACb,iBAAiB;YACjB,kBAAkB;YAClB,cAAc;YACd,eAAe;YACf,cAAc;YACd,mBAAmB;YACnB,cAAc;YACd,gBAAgB;YAChB,cAAc;YACd,kBAAkB;YAClB,aAAa;YACb,aAAa;YACb,aAAa;YACb,cAAc;YACd,wBAAwB;YACxB,iBAAiB;YACjB,eAAe;YACf,qBAAqB;YACrB,oBAAoB;YACpB,aAAa;YACb,kBAAkB;YAClB,mBAAmB;YACnB,iBAAiB;YACjB,aAAa;YACb,eAAe;YACf,oBAAoB;YACpB,qBAAqB;AACrB,YAAA,YAAY,EAIZ,eAAe;YACf,gBAAgB;YAChB,aAAa;YACb,gBAAgB;YAChB,cAAc;YACd,aAAa;YACb,iBAAiB;YACjB,cAAc;YACd,kBAAkB;YAClB,eAAe;YACf,cAAc;YACd,mBAAmB;YACnB,cAAc;YACd,gBAAgB;YAChB,cAAc;YACd,kBAAkB;YAClB,aAAa;YACb,aAAa;YACb,aAAa;YACb,cAAc;YACd,wBAAwB;YACxB,iBAAiB;YACjB,eAAe;YACf,qBAAqB;YACrB,oBAAoB;YACpB,aAAa;YACb,kBAAkB;YAClB,mBAAmB;YACnB,iBAAiB;YACjB,aAAa;YACb,eAAe;YACf,oBAAoB;YACpB,eAAe;YAEf,qBAAqB;YACrB,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAQP,cAAc,EAAA,UAAA,EAAA,CAAA;kBApF1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,eAAe;wBACf,eAAe;wBACf,gBAAgB;wBAChB,aAAa;wBACb,gBAAgB;wBAChB,cAAc;wBACd,aAAa;wBACb,iBAAiB;wBACjB,kBAAkB;wBAClB,cAAc;wBACd,eAAe;wBACf,cAAc;wBACd,mBAAmB;wBACnB,cAAc;wBACd,gBAAgB;wBAChB,cAAc;wBACd,kBAAkB;wBAClB,aAAa;wBACb,aAAa;wBACb,aAAa;wBACb,cAAc;wBACd,wBAAwB;wBACxB,iBAAiB;wBACjB,eAAe;wBACf,qBAAqB;wBACrB,oBAAoB;wBACpB,aAAa;wBACb,kBAAkB;wBAClB,mBAAmB;wBACnB,iBAAiB;wBACjB,aAAa;wBACb,eAAe;wBACf,oBAAoB;wBACpB,qBAAqB;wBACrB;AACH,qBAAA;AAED,oBAAA,OAAO,EAAE;wBACL,eAAe;wBACf,gBAAgB;wBAChB,aAAa;wBACb,gBAAgB;wBAChB,cAAc;wBACd,aAAa;wBACb,iBAAiB;wBACjB,cAAc;wBACd,kBAAkB;wBAClB,eAAe;wBACf,cAAc;wBACd,mBAAmB;wBACnB,cAAc;wBACd,gBAAgB;wBAChB,cAAc;wBACd,kBAAkB;wBAClB,aAAa;wBACb,aAAa;wBACb,aAAa;wBACb,cAAc;wBACd,wBAAwB;wBACxB,iBAAiB;wBACjB,eAAe;wBACf,qBAAqB;wBACrB,oBAAoB;wBACpB,aAAa;wBACb,kBAAkB;wBAClB,mBAAmB;wBACnB,iBAAiB;wBACjB,aAAa;wBACb,eAAe;wBACf,oBAAoB;wBACpB,eAAe;wBACf,aAAa;wBACb,qBAAqB;wBACrB;AACH,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACP,mBAAmB;wBACnB;AACH;AACJ,iBAAA;;;MCpHY,wBAAwB,CAAA;AAJrC,IAAA,WAAA,GAAA;AAKqB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAA0B,UAAU,CAAC;AAKzE,IAAA;IAHG,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE;IACtC;8GALS,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAJpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA;;;MCOqB,iBAAiB,CAAA;AAqDnC,IAAA,WAAA,GAAA;AApDgB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAmB,KAAK,CAAC;AACvC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAiB,KAAK,CAAC;AACrC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAqB,cAAc,CAAC;QAC1D,IAAA,CAAA,EAAE,GAAG,MAAM,CAAe,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACvD,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAmC;QAElF,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE;oFAAC;AAEhE,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAe,MAAK;YAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;YAEpC,MAAM,UAAU,GACZ,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG;AACnB,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI;gBACjC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,aAAa,EAAE,IAAI,CAAC,aAAa;aACpC,CAAC,IAAI,EAAE;YAEZ,OAAO;AACH,gBAAA,GAAG,OAAO;AACV,gBAAA,GAAG,UAAU;aAChB;QACL,CAAC;4FAAC;AAEc,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,UAAU,IAAI,MAAM;uFAAC;AACxE,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,SAAS,IAAI,MAAM;sFAAC;QACtE,IAAA,CAAA,GAAG,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,GAAG;gFAAC;QACjD,IAAA,CAAA,GAAG,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,GAAG;gFAAC;AACjD,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,SAAS,IAAI,MAAM;sFAAC;QACvE,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI;iFAAC;QACnD,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO;oFAAC;QACzD,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO;oFAAC;AACzD,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,aAAa,IAAI,KAAK;0FAAC;AAC9E,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAmC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,IAAI,SAAS;kFAAC;AACnG,QAAA,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,IAAI,EAAE;iFAAC;AACxD,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,OAAO,IAAI,EAAE;oFAAC;AAC9D,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,gBAAgB,IAAI,MAAM;6FAAC;AACpF,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;kFAAC;AAC9E,QAAA,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI;iFAAC;AACtE,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW;wFAAC;AAC3F,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO;oFAAC;QAC/E,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ;qFAAC;AAC3D,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE;qFAAC;AAExE,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAClC,IAAA,CAAA,WAAW,GAAG,SAAS,CAAC,wBAAwB;wFAAC;AAI1D,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAQ;AAGtC,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AACtB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC;QACjE;QAEA,eAAe,CAAC,MAAK;AACjB,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;gBACtB,IAAI,CAAC,KAAK,EAAE;YAChB;AACJ,QAAA,CAAC,CAAC;IACN;IAEA,QAAQ,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;AACzB,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC;QACvE;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,KAAI;AAClG,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;AACzB,gBAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC;YAC5E;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;QAC7B;IACJ;IAEA,eAAe,GAAA;QACX,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE;AAClD,YAAA,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE;QACrC;IAEJ;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE;AAC7B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;IAC9B;IAEA,kBAAkB,GAAA;QACd,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;AAC1B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACpD,IAAI,OAAO,EAAE;AACT,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK;AACtD,gBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;oBAC1B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACnC,wBAAA,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK;AAC3B,wBAAA,IAAI,CAAC,CAAC,OAAO,EAAE;4BACX,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;gCACtB,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;AACxC,4BAAA,CAAC,CAAC;wBACN;6BAAO;4BACH,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;wBACnC;AACA,wBAAA,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACrE,oBAAA,CAAC,CAAC;gBACN;YACJ;QACJ;IACJ;IAEA,SAAS,GAAA;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO;IAC7E;IAEA,OAAO,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE;AACrB,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;QAC9C;IACJ;IAEA,MAAM,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;AACpB,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;QAC7C;IACJ;IAEU,KAAK,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE;IAC/B;AAEO,IAAA,aAAa,CAAC,QAAgB,EAAE,aAAoB,EAAE,KAAe,EAAA;QACxE,aAAa,CAAC,eAAe,EAAE;AAE/B,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG;YAClB,QAAQ;YACR,KAAK;AACL,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI;YACjC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,aAAa;AAChB,SAAA,CAAC;IACN;8GAnJkB,iBAAiB,EAAA,IAAA,EAAA,EAAA,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,QAAA,EAAA,IAAA,EAAA,iBAAiB,6JA+CQ,wBAAwB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FA/CjD,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBADtC;uHAgD8C,wBAAwB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA;sBAElE,WAAW;uBAAC,oBAAoB;;;AC3C/B,MAAO,sBAAuB,SAAQ,iBAAiB,CAAA;AACzD,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;QACP,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACtE;IAEA,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;IACpB;IAEA,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE;IACvB;8GAZS,sBAAsB,EAAA,IAAA,EAAA,EAAA,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,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EARrB;;;;KAIT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAES,YAAY,iNAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,wSAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,cAAc,kYAAE,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAExF,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAVlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE;;;;AAIT,IAAA,CAAA;AACD,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,cAAc,EAAE,wBAAwB,CAAC;AACrG,iBAAA;;;MCkBY,wBAAwB,CAAA;AA1BrC,IAAA,WAAA,GAAA;AA2Ba,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK;mGAA6C;AAEhE,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK;wGAAkD;AAE1E,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,iBAAiB,CAAc,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;4FAAC;AAE1F,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAM,iBAAiB,CAAmB,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC;iGAAC;AAEjG,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;QAEhC,IAAA,CAAA,QAAQ,GAAG,MAAM,CAA2C,SAAS;qFAAC;AAEtE,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CACrC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC5B,SAAS,CAAC,CAAC,OAAO,KAAI;AAClB,YAAA,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS;YAEpC,IAAI,CAAC,SAAS,EAAE;AACZ,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC;YACnB;YAEA,OAAO,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC;QAC7F,CAAC,CAAC,CACL,EACD;AACI,YAAA,YAAY,EAAE,IAAI;AACrB,SAAA,CACJ;AAEQ,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;;;YAG5B,IAAI,CAAC,aAAa,EAAE;YAEpB,OAAO,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,MAAM,IAAI,IAAI;QACrD,CAAC;mFAAC;AAKL,IAAA;IAHG,eAAe,GAAA;QACX,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;IAC9C;8GAxCS,wBAAwB,EAAA,IAAA,EAAA,EAAA,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,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxBvB;;;;;;;;;;;;;;AAcT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,mCAAA,CAAA,EAAA,CAAA,CAAA;;2FAUQ,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBA1BpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,QAAA,EACnB;;;;;;;;;;;;;;AAcT,IAAA,CAAA,EAAA,UAAA,EACW,IAAI,EAAA,MAAA,EAAA,CAAA,mCAAA,CAAA,EAAA;;;MCrBP,mBAAmB,CAAA;AAHhC,IAAA,WAAA,GAAA;QAII,IAAA,CAAA,OAAO,GAAG,SAAS;QACnB,IAAA,CAAA,SAAS,GAAG,YAAY;QACxB,IAAA,CAAA,WAAW,GAAG,OAAO;QACrB,IAAA,CAAA,MAAM,GAAG,QAAQ;QACjB,IAAA,CAAA,GAAG,GAAG,KAAK;QACX,IAAA,CAAA,MAAM,GAAG,QAAQ;QACjB,IAAA,CAAA,IAAI,GAAG,cAAc;QACrB,IAAA,CAAA,KAAK,GAAG,UAAU;QAClB,IAAA,CAAA,iBAAiB,GAAG,cAAc;QAClC,IAAA,CAAA,iBAAiB,GAAG,QAAQ;QAC5B,IAAA,CAAA,sBAAsB,GAAG,2BAA2B;QACpD,IAAA,CAAA,kBAAkB,GAAG,6CAA6C;AACrE,IAAA;8GAbY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFhB,MAAM,EAAA,CAAA,CAAA;;2FAET,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA;;;ACiHM,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,iBAAiB,CAAA;AAQzD,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AANH,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAW;QAC1C,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,KAAK;sFAAC;AAElB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAIrC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,SAAS,EAAE;YAChC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QACrE;IACJ;IAEA,QAAQ,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAC/B,oBAAoB,EAAE,EACtB,MAAM,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,EAChCE,WAAS,CAAC,CAAC,SAAS,KAAI;gBACpB,IAAI,SAAS,EAAE;AACX,oBAAA,IAAI,IAAuB;oBAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,YAAY,UAAU,EAAE;AAC1C,wBAAA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO;oBAC7B;yBAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,YAAY,QAAQ,EAAE;AAC/C,wBAAA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;oBAC/B;yBAAO;wBACH,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;oBACvC;oBACA,OAAO,MAAM,CACT,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,EAClC,IAAI,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,OAAc,KAAI;AACnB,wBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;oBACtC,CAAC,CAAC,CACL,CACJ;gBACL;qBAAO;AACH,oBAAA,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;gBAC9C;YACJ,CAAC,CAAC,CACL;QACL;aAAO;YACH,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,YAAY,UAAU,EAAE;AAC1C,gBAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAClB,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,EAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CACnB,GAAG,CAAC,CAAC,OAAc,KAAI;AACnB,oBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;gBACtC,CAAC,CAAC,CACL,CACJ;YACL;iBAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,YAAY,QAAQ,EAAE;AAC/C,gBAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAClB,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,EAClC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,CACrB,GAAG,CAAC,CAAC,OAAc,KAAI;AACnB,oBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;gBACtC,CAAC,CAAC,CACL,CACJ;YACL;iBAAO;gBACH,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YAC7E;QACJ;QAEA,IAAI,CAAC,eAAe,GAAG,MAAM,CACzB,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,IAAI,CAACC,WAAS,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAC5G,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAI;AACrB,YAAA,IAAI,QAAQ,CAAC,OAAO,EAAE;AAClB,gBAAA,OAAO,QAAQ;YACnB;iBAAO;AACH,gBAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,IAAI,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE;YAC7H;QACJ,CAAC,CAAC,CACL,CACJ;QAED,KAAK,CAAC,QAAQ,EAAE;IACpB;IAEA,OAAO,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AAC5C,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QAC7B;QAEA,KAAK,CAAC,OAAO,EAAE;IACnB;IAEQ,UAAU,CAAC,KAAU,EAAE,OAAc,EAAA;AACzC,QAAA,IAAI,WAAW;AACf,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ;AAEpC,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,iBAAiB,EAAE;AAC1F,YAAA,WAAW,GAAG,KAAK,CAAC,WAAW,EAAE;QACrC;aAAO,IAAI,QAAQ,EAAE;AACjB,YAAA,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE;QACjE;aAAO;YACH,WAAW,GAAG,KAAK,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE;QACvD;QAEA,IAAI,QAAQ,EAAE;YACV,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5G;QACA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAClG;AAEA,IAAA,SAAS,CAAC,KAAU,EAAA;AAChB,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YACxB,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC;QACxC;aAAO;AACH,YAAA,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;gBAC5C,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;YACvE;YACA,OAAO,KAAK,GAAG,KAAK,GAAG,EAAE;QAC7B;IACJ;IAEA,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE;IACvB;8GAzHS,sBAAsB,EAAA,IAAA,EAAA,EAAA,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,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA9FrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwFT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4CAAA,EAAA,iFAAA,EAAA,oGAAA,EAAA,8BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAIS,YAAY,4HAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,wSAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,kBAAkB,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,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,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,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,cAAc,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,UAAA,EAAA,IAAA,EAAE,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,OAAA,EAAA,8BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,yBAAA,EAAA,4BAAA,EAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,8TAAE,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAY,wBAAwB,2GAAE,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AAE/P,sBAAsB,GAAA,UAAA,CAAA;IAjGlC,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE;AAiGxB,CAAA,EAAA,sBAAsB,CA0HlC;2FA1HY,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAhGlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,QAAA,EACjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwFT,IAAA,CAAA,EAAA,UAAA,EAGW,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,cAAc,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,eAAe,EAAE,QAAQ,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,aAAa,EAAE,wBAAwB,CAAC,EAAA,MAAA,EAAA,CAAA,4CAAA,EAAA,iFAAA,EAAA,oGAAA,EAAA,8BAAA,CAAA,EAAA;;;AChFvQ,MAAO,qBAAsB,SAAQ,iBAAiB,CAAA;IACxD,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;IACpB;IAEA,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE;IACvB;8GAPS,qBAAqB,EAAA,IAAA,EAAA,IAAA,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,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtBpB;;;;;;;;;;;;;;;;;AAiBT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,4CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAGS,YAAY,EAAA,EAAA,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,EAAE,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,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,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,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,UAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAqB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,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,EAAAA,IAAA,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,UAAA,EAAA,IAAA,EAAE,mBAAmB,08BAAgD,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAElO,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAxBjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,QAAA,EACtB;;;;;;;;;;;;;;;;;AAiBT,IAAA,CAAA,EAAA,UAAA,EAEW,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,cAAc,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,wBAAwB,CAAC,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,4CAAA,CAAA,EAAA;;;ACR1O,MAAO,sBAAuB,SAAQ,iBAAiB,CAAA;AAhB7D,IAAA,WAAA,GAAA;;QAiBqB,IAAA,CAAA,YAAY,GAAG,YAAY,CAAC,cAAc;yFAAC;AAM5D,QAAA,IAAA,CAAA,QAAQ,GAAsB,EAAE,CAAC,EAAE,CAAC;AAmBvC,IAAA;IAvBsB,KAAK,GAAA;QACpB,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;IACtC;IAIA,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;QAEhB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,YAAY,UAAU,EAAE;YAC1C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO;QACtC;aACK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,YAAY,QAAQ,EAAE;YAC7C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;QACxC;aACK;AACD,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;QAChD;IACJ;IAEA,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE;IACvB;8GAzBS,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EACc,cAAc,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAfjD;;;;;;;;;CASb,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAGa,YAAY,EAAA,EAAA,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,EAAE,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,6NAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEvG,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAhBlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,QAAA,EACvB;;;;;;;;;AASb,CAAA,EAAA,UAAA,EAEe,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,mBAAmB,EAAE,UAAU,EAAE,wBAAwB,CAAC,EAAA;iGAGpE,cAAc,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACJxD,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,iBAAiB,CAAA;AAAzD,IAAA,WAAA,GAAA;;QACc,IAAA,CAAA,QAAQ,GAAG,SAAS,CAAC,WAAW;qFAAC;AAiBrD,IAAA;IAfsB,KAAK,GAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE;IAC5B;IAEA,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;IACpB;IAEA,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE;IACvB;AAEA,IAAA,QAAQ,CAAC,CAAoB,EAAA;QACzB,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;IACvE;8GAjBS,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACI,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAVvC;;;;KAIT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAGS,YAAY,4HAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,iRAAE,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AAErF,yBAAyB,GAAA,UAAA,CAAA;IAZrC,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE;AAY3B,CAAA,EAAA,yBAAyB,CAkBrC;2FAlBY,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAXrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,QAAA,EACpB;;;;AAIT,IAAA,CAAA,EAAA,UAAA,EAEW,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE,wBAAwB,CAAC,EAAA;0FAGzD,WAAW,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;SCfrC,wBAAwB,CAAC,KAAuB,EAAE,GAAuB,EAAE,KAA2B,EAAA;AAClH,IAAA,MAAM,IAAI,GAAwB;AAC9B,QAAA,IAAI,KAAK,IAAI,EAAE,CAAC;AAChB,QAAA,GAAG,EAAE,KAAK,EAAE,GAAG,IAAIC,EAAM,EAAE;KAC9B;AAED,IAAA,MAAM,KAAK,GAAG,IAAI,gBAAgB,CAAC;AAC/B,QAAA,GAAG,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;AACjC,KAAA,CAAC;IAEF,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,WAAW,IAAI,EAAE,EAAE;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AAEhC,QAAA,MAAM,UAAU,GAAqB;AACjC,YAAA,GAAG,QAAQ;AACX,YAAA,IAAI,IAAI,KAAK,SAAS,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;SACjD;AAED,QAAA,IAAI,OAAwB;AAE5B,QAAA,IAAI,QAAQ,CAAC,IAAI,EAAE;AACf,YAAA,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,uBAAuB,CAAC,UAAU,EAAE,GAAG,CAAC;QACzI;aAAO;AACH,YAAA,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,uBAAuB,CAAC,UAAU,EAAE,GAAG,CAAC;QACnJ;QAEA,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAC5C;AAEA,IAAA,OAAO,KAAK;AAChB;;AClCM,MAAO,aAAc,SAAQ,eAAe,CAAA;IACvC,MAAM,GAAA;AACT,QAAA,MAAM,KAAK,GAAG,IAAI,SAAS,CAAkB,EAAE,EAAE;AAC7C,YAAA,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;AAC9D,YAAA,eAAe,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,EAAE,CAAC;AAC7E,YAAA,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ;AAC5C,SAAA,CAAC;QAEF,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACjC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AAClC,gBAAA,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACrE;QACJ;aAAO;AACH,YAAA,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9D;AAEA,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACrB,KAAK,CAAC,OAAO,EAAE;QACnB;AAEA,QAAA,OAAO,KAAK;IAChB;AACH;;ACvBK,MAAO,YAAmJ,SAAQ,eAAkC,CAAA;AAGtM,IAAA,WAAA,CAAY,MAAgB,EAAA;AACxB,QAAA,KAAK,EAAE;QAHJ,IAAA,CAAA,MAAM,GAAY,EAAE;AAIvB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,EAAE;QAE1B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AACjC,YAAA,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;AAChC,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAW,CAAC;IACxE;AAEgB,IAAA,QAAQ,CAAC,KAAgB,EAAA;QACrC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACvB;QACJ;QACA,KAAK,CAAC,OAAO,CAAC,CAAC,QAAa,EAAE,KAAa,KAAI;YAC3C,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC;AACtC,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACtB,IAAI,CAAC,YAAY,EAAE;IACvB;AAEgB,IAAA,UAAU,CAAC,KAAyB,EAAA;AAChD,QAAA,IAAI,KAAK,IAAI,IAAI,EAAE;YACf;QACJ;QAEA,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,KAAI;YAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACzB,IAAI,EAAE,EAAE;AACJ,gBAAA,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC3B;AACJ,QAAA,CAAC,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,IAAK,EAAe;AAC9C,QAAA,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;QAEtB,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,KAAI;YAC9B,IAAI,CAAC,KAAK,CAAC,GAAG;AACV,gBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,gBAAA,GAAI,QAAgB;aACvB;AACL,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAc,CAAC;QAC/B,IAAI,CAAC,YAAY,EAAE;IACvB;IAES,iBAAiB,CAAC,GAAoB,EAAE,KAAU,EAAA;AACvD,QAAA,MAAM,KAAK,GAAG,OAAO,GAAG,KAAK,QAAQ,GAAG,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QAEzD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;YAAE;QAE3C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,IAAK,EAAe;AAC9C,QAAA,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;AAEtB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK;AAEnB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAc,CAAC;QAC/B,IAAI,CAAC,YAAY,EAAE;IACvB;AAEO,IAAA,EAAE,CAAC,KAAa,EAAA;QACnB,OAAO,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,IAAI;IACvC;AAEgB,IAAA,KAAK,CAAC,IAAqB,EAAA;AACvC,QAAA,MAAM,GAAG,GAAG,OAAO,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAC1D,QAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI;IACrD;AAEO,IAAA,IAAI,CAAC,OAAwB,EAAA;AAChC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,CAAC,OAAO,CAAC;AAE1D,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACpB;QACJ;AAEA,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACtB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;AAEhC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACtB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;QAC/B;QAEA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAW,CAAC;QAC5D,IAAI,CAAC,YAAY,EAAE;IACvB;IAEO,MAAM,CAAC,KAAa,EAAE,KAAsB,EAAA;AAC/C,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC;AAEpD,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACpB;QACJ;QAEA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAElE,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC;AAE1C,QAAA,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACjD,YAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QACtC;AAEA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAS;AACjC,QAAA,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;QAEtB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAE/D,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAc,CAAC;QAC/B,IAAI,CAAC,YAAY,EAAE;IACvB;AAEA,IAAA,QAAQ,CAAC,KAAa,EAAA;QAClB,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE;QAC9C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAE5B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,KAAI;AAC7B,YAAA,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5B,QAAA,CAAC,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,IAAK,EAAe;AAC9C,QAAA,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;AAEtB,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAErB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAc,CAAC;QAC/B,IAAI,CAAC,YAAY,EAAE;IACvB;IAEA,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;AACtB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAuB,CAAC;QACxC,IAAI,CAAC,YAAY,EAAE;IACvB;AACH;;ACvIK,MAAO,eAAgB,SAAQ,iBAAiB,CAAA;IAC3C,MAAM,GAAA;AACT,QAAA,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE;AAEhC,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AACrD,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;gBACjE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAK;AAC1B,oBAAA,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE;oBAChC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,QAAQ,KAAI;AACzC,wBAAA,IAAI,OAAO;AACX,wBAAA,IAAI,QAAQ,CAAC,IAAI,EAAE;AACf,4BAAA,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,QAAQ,CAAC;wBACjH;6BAAO;AACH,4BAAA,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,QAAQ,CAAC;wBAC3H;wBACA,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;AAC5C,oBAAA,CAAC,CAAC;AACF,oBAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;AACrB,gBAAA,CAAC,CAAC;YACN;QACJ;aAAO;AACH,YAAA,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE;YAChC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,QAAQ,KAAI;AACzC,gBAAA,IAAI,OAAO;AACX,gBAAA,IAAI,QAAQ,CAAC,IAAI,EAAE;AACf,oBAAA,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,QAAQ,CAAC;gBACjH;qBAAO;AACH,oBAAA,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,QAAQ,CAAC;gBAC3H;gBACA,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;AAC5C,YAAA,CAAC,CAAC;AACF,YAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QACrB;AAEA,QAAA,OAAO,KAAK;IAChB;AACH;;ACrCK,MAAO,eAAgB,SAAQ,iBAAiB,CAAA;IAC3C,MAAM,GAAA;AACT,QAAA,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE;AAEnC,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;YACjE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;AACxC,gBAAA,IAAI,EAAE;AAEN,gBAAA,IAAI,QAAQ,CAAC,IAAI,EAAE;oBACf,EAAE;AACE,wBAAA,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;4BACtI,kBAAkB,CAAC,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvG;qBAAO;oBACH,EAAE;AACE,wBAAA,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;4BAChJ,kBAAkB,CAAC,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvG;gBAEA,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;AAC1C,YAAA,CAAC,CAAC;QACN;AACA,QAAA,OAAO,QAAQ;IACnB;AACH;;ACsMM,IAAM,0BAA0B,GAAhC,MAAM,0BAA2B,SAAQ,iBAAiB,CAAA;AAO7D,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AAPF,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,mBAAmB,CAAC;QAIlC,IAAA,CAAA,WAAW,GAAG,MAAM,CAAuB,EAAE;wFAAC;AAInD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAA0D;AAC9G,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAChB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAK;YAC7B,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;QAClD,CAAC,CAAC,CACL;IACL;IAEA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAiB;QAC1D,KAAK,CAAC,QAAQ,EAAE;IACpB;AAEA,IAAA,QAAQ,CAAC,KAAa,EAAA;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAiB;IAC/C;AAEA,IAAA,IAAI,SAAS,GAAA;QACT,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC;IACrF;AAEA,IAAA,IAAI,eAAe,GAAA;AACf,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,aAAa,GAAG,aAAa,GAAG,MAAM;QAC1E;AAEA,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK;IACxC;AAEA,IAAA,WAAW,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,KAAK,YAAY,KAAK,KAAK,CAAC,CAAC;IAC7G;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AAClF,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,WAAW,KAAK,CAAC,GAAG,WAAW,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC;IACvG;IAEA,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE;IACvB;AAEA,IAAA,aAAa,CAAC,KAAuB,EAAA;QACjC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE;AAC3C,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ;QAEvC,IAAI,QAAQ,EAAE;AACV,YAAA,OAAO,CAAA,EAAG,QAAQ,CAAA,QAAA,EAAW,OAAO,EAAE;QAC1C;QAEA,OAAO,CAAA,KAAA,EAAQ,OAAO,CAAA,CAAE;IAC5B;AAEA,IAAA,UAAU,CAAC,KAAuB,EAAA;AAC9B,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO;AACrC,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ;AAEvC,QAAA,IAAI,QAAQ,IAAI,OAAO,EAAE;AACrB,YAAA,OAAO,CAAA,EAAG,QAAQ,CAAA,QAAA,EAAW,OAAO,EAAE;QAC1C;QAEA,IAAI,QAAQ,EAAE;YACV,OAAO,CAAA,EAAG,QAAQ,CAAA,CAAE;QACxB;QAEA,IAAI,OAAO,EAAE;YACT,OAAO,CAAA,KAAA,EAAQ,OAAO,CAAA,CAAE;QAC5B;AAEA,QAAA,OAAO,SAAS;IACpB;8GAlFS,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA3MzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,81CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAuJS,QAAQ,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,IAAA,EAAA,eAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AAEzH,0BAA0B,GAAA,UAAA,CAAA;AA9MtC,IAAA,WAAW,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,KAAK,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE;AA8MhI,CAAA,EAAA,0BAA0B,CAmFtC;2FAnFY,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBA7MtC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,QAAA,EACrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDT,IAAA,CAAA,EAAA,UAAA,EAsJW,IAAI,EAAA,OAAA,EACP,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,eAAe,EAAE,qBAAqB,CAAC,EAAA,MAAA,EAAA,CAAA,81CAAA,CAAA,EAAA;;;AC5JjI,MAAO,sBAAuB,SAAQ,iBAAiB,CAAA;AAvD7D,IAAA,WAAA,GAAA;;AAwDqB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAElD,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;AACpE,YAAA,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK;AACvC,SAAA,CAAC;QAEe,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;AACtE,YAAA,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM;AACxC,SAAA,CAAC;AAEO,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACjC,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE;YAE3D,OAAO,YAAY,EAAE,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE;QACpE,CAAC;wFAAC;AAEO,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACjC,YAAA,OAAO,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1C,CAAC;wFAAC;AAEO,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAClC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;YAEjC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACjD,gBAAA,OAAO,KAAK;YAChB;YAEA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,IAAI,WAAW;QAC1D,CAAC;yFAAC;AAEO,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACrC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAEhC,YAAA,OAAO,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,SAAS;QAC/C,CAAC;4FAAC;AAEO,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACrC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAEhC,YAAA,OAAO,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,SAAS;QACvD,CAAC;4FAAC;AAEO,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACpC,YAAA,OAAO,IAAI,CAAC,aAAa,EAAE,KAAK,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,KAAK,IAAI;QACrF,CAAC;2FAAC;AAWL,IAAA;AATG,IAAA,QAAQ,CAAC,KAAa,EAAA;AAClB,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;YACvB;QACJ;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;AAC9B,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;IACpC;8GAvDS,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,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAnDrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4CAAA,EAAA,6DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAtCS,YAAY,EAAA,EAAA,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,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,wSAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,kBAAkB,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,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,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,UAAA,EAAA,IAAA,EAAE,cAAc,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,UAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,mCAAmC,wSAAE,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAoDjL,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAvDlC,SAAS;+BACI,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,cAAc,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,mCAAmC,EAAE,wBAAwB,CAAC,EAAA,QAAA,EACjL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAqCT,EAAA,eAAA,EAYgB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,4CAAA,EAAA,6DAAA,CAAA,EAAA;;;MC1C7B,cAAc,CAAA;AAJpC,IAAA,WAAA,GAAA;QAKa,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,EAAE;iFAAC;QAChB,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,EAAE;kFAAC;QACjB,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ;kFAAC;QACvB,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,EAAE;iFAAC;QAChB,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,EAAE;oFAAC;QACnB,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK;qFAAC;QACvB,IAAA,CAAA,IAAI,GAAG,KAAK,CAAqB,QAAQ;iFAAC;QAC1C,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,EAAE;wFAAC;QACvB,IAAA,CAAA,KAAK,GAAG,KAAK,CAAU,EAAa;kFAAC;AACrC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK;+FAAU;QACzB,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAsB,MAAM;6FAAC;QAE3C,IAAA,CAAA,aAAa,GAAG,MAAM,CAAwB,SAAS;0FAAC;QAC1D,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAsB,SAAS;8FAAC;AAC1D,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAsB,SAAS,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,8BAAA,EAAA,CAAA,EAAI,KAAK,EAAE,MAAM,KAAK,EAAA,CAAG;AAE1F,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;2FAAC;AAC5E,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;2FAAC;AAC5E,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;0FAAC;AACzE,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE;6FAAC;QAClF,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;8FAAC;AACjH,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,KAAK,IAAI,CAAC,aAAa,EAAE,GAAG,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC;0FAAC;AACzH,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE;iGAAC;AACxF,QAAA,IAAA,CAAA,yBAAyB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,EAAE;sGAAC;AAC7G,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;2FAAC;AAExE,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAc;AAEvC,QAAA,IAAA,CAAA,QAAQ,GAA6B,MAAK,EAAE,CAAC;AAC7C,QAAA,IAAA,CAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AA8C7C,IAAA;AA5CG,IAAA,QAAQ,KAAU;AAElB,IAAA,KAAK,CAAC,KAAiB,EAAA;AACnB,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,QAAQ,EAAE;YAC/D;QACJ;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE;QACnC,IAAI,KAAK,EAAE;AACP,YAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE;AACzB,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC;AACjC,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACxB;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3B;AAEA,IAAA,UAAU,CAAC,KAAiC,EAAA;QACxC,IAAI,CAAC,KAAK,EAAE;YACR,KAAK,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,EAAa;QAC7C;AACA,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AACd,YAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE;QAC7B;QACA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;AACtC,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC;IACrC;AAEA,IAAA,gBAAgB,CAAC,EAA4B,EAAA;AACzC,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACtB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACvB;IAGU,aAAa,GAAA;QACnB,IAAI,CAAC,SAAS,EAAE;IACpB;AAEA,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACjC,QAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC;IAC1C;8GA3EkB,cAAc,EAAA,IAAA,EAAA,EAAA,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,QAAA,EAAA,IAAA,EAAA,cAAc,khDAHtB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAGM,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,EAAE;AACZ,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA;;sBA4BI;;sBAyCA,YAAY;uBAAC,UAAU;;;AC3DtB,MAAO,mBAAoB,SAAQ,cAAc,CAAA;8GAA1C,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,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAVjB;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,mBAAmB,CAAC;AAClD,gBAAA,KAAK,EAAE;AACV;SACJ,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApBS;;;;;;;;;;;;;KAaT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EASS,YAAY,4HAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,iRAAE,SAAS,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAElE,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA1B/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;AAaT,IAAA,CAAA;AACD,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,yBAAyB,CAAC;AAClD,4BAAA,KAAK,EAAE;AACV;AACJ,qBAAA;AACD,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS;AAC9E,iBAAA;;;ACDK,MAAO,uBAAwB,SAAQ,iBAAiB,CAAA;IAC1D,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;IACpB;IAEA,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE;IACvB;8GAPS,uBAAuB,EAAA,IAAA,EAAA,IAAA,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,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxBtB;;;;;;;;;;;;;;;;;;;KAmBT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,mBAAmB,uDAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAR,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEzC,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBA1BnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,QAAA,EAClB;;;;;;;;;;;;;;;;;;;AAmBT,IAAA,CAAA,EAAA,UAAA,EAEW,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,EAAA;;;AC0BjD,MAAO,0BAA2B,SAAQ,cAA8B,CAAA;IAC1E,UAAU,GAAA;QACN,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;IACnD;8GAHS,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,SAAA,EAVxB;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,0BAA0B,CAAC;AACzD,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;SACJ,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApCS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EASS,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,+KAAE,QAAQ,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEvE,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBA1CtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BT,IAAA,CAAA;AACD,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,gCAAgC,CAAC;AACzD,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACJ,qBAAA;AACD,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,QAAQ,CAAC;AACpF,iBAAA;;;ACxBK,MAAO,8BAA+B,SAAQ,iBAAiB,CAAA;IACjE,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;IACpB;IAEA,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE;IACvB;8GAPS,8BAA8B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAvB7B;;;;;;;;;;;;;;;;;;KAkBT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,0BAA0B,+DAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEhD,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAzB1C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EAAA,QAAA,EAC1B;;;;;;;;;;;;;;;;;;AAkBT,IAAA,CAAA,EAAA,UAAA,EAEW,IAAI,EAAA,OAAA,EACP,CAAC,0BAA0B,EAAE,mBAAmB,CAAC,EAAA;;;ACGxD,MAAO,uBAAwB,SAAQ,cAA2B,CAAA;AAtBxE,IAAA,WAAA,GAAA;;QAuBqB,IAAA,CAAA,IAAI,GAAG,SAAS,CAA+B,MAAM;iFAAC;QAC9D,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,KAAK;mFAAC;AACrB,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;4FAAC;AAgE3F,IAAA;AA9DG,IAAA,KAAK,CAAC,MAAkB,EAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAC3B,IAAI,CAAC,IAAI,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE;QACtC;IACJ;AAES,IAAA,UAAU,CAAC,KAAqC,EAAA;AACrD,QAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;AAEvB,QAAA,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE;YACrB,IAAI,CAAC,oBAAoB,EAAE;QAC/B;IACJ;IAEA,MAAM,YAAY,CAAC,KAAuB,EAAA;AACtC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK;AAEzB,QAAA,IAAI;YACA,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3B,MAAM,YAAY,GAA6B,EAAE;AACjD,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnC,oBAAA,IAAI;AACA,wBAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrD,wBAAA,IAAI,OAAO,KAAK,IAAI,EAAE;AAClB,4BAAA,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;wBAC9B;oBACJ;AAAE,oBAAA,MAAM;oBACR;gBACJ;AAEA,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE;AACnC,gBAAA,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE;AACzB,gBAAA,KAAK,CAAC,WAAW,GAAG,YAAY,CAAC,MAAM,KAAK,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY;AAC9E,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACpB,gBAAA,KAAK,CAAC,KAAK,GAAG,EAAE;YACpB;QACJ;gBAAU;YACN,IAAI,CAAC,aAAa,EAAE;QACxB;IACJ;AAEA,IAAA,gBAAgB,CAAC,SAAe,EAAA;AAC5B,QAAA,MAAM,mBAAmB,GAAG,IAAI,UAAU,EAAE;QAC5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACnC,YAAA,mBAAmB,CAAC,OAAO,GAAG,MAAK;gBAC/B,mBAAmB,CAAC,KAAK,EAAE;AAC3B,gBAAA,MAAM,KAAK,GAAiB,IAAI,YAAY,CAAC,6BAA6B,CAAC;gBAC3E,MAAM,CAAC,KAAK,CAAC;AACjB,YAAA,CAAC;AACD,YAAA,mBAAmB,CAAC,MAAM,GAAG,MAAK;AAC9B,gBAAA,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC;AACvC,YAAA,CAAC;AACD,YAAA,mBAAmB,CAAC,iBAAiB,CAAC,SAAS,CAAC;AACpD,QAAA,CAAC,CAAC;IACN;IAEQ,oBAAoB,GAAA;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,aAAa;QACxC,IAAI,KAAK,EAAE;AACP,YAAA,KAAK,CAAC,KAAK,GAAG,EAAE;QACpB;IACJ;8GAlES,uBAAuB,EAAA,IAAA,EAAA,IAAA,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,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAVrB;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC;AACtD,gBAAA,KAAK,EAAE;AACV;SACJ,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhBS;;;;;;;;;AAST,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EASS,mBAAmB,EAAA,QAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEpB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAtBnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE;;;;;;;;;AAST,IAAA,CAAA;AACD,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,6BAA6B,CAAC;AACtD,4BAAA,KAAK,EAAE;AACV;AACJ,qBAAA;AACD,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,mBAAmB,CAAC;AACjC,iBAAA;kEAEmE,MAAM,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACFpE,MAAO,2BAA4B,SAAQ,iBAAiB,CAAA;IAC9D,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;AAChB,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;IACpC;IAEA,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE;IACvB;8GARS,2BAA2B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAvB1B;;;;;;;;;;;;;;;;;;KAkBT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAGS,mBAAmB,gmBAAE,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAE7C,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAzBvC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,QAAA,EACvB;;;;;;;;;;;;;;;;;;AAkBT,IAAA,CAAA,EAAA,UAAA,EAEW,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,EAAE,uBAAuB,CAAC,EAAA;;;ACSrD,MAAO,yBAA0B,SAAQ,iBAAiB,CAAA;IAC5D,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;IACpB;IAEA,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE;IACvB;8GAPS,yBAAyB,EAAA,IAAA,EAAA,IAAA,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,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxBxB;;;;;;;;;;;;;;;;;;;AAmBT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAGS,YAAY,EAAA,EAAA,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,EAAE,wBAAwB,0GAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,wSAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,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,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,QAAQ,sDAAE,YAAY,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,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,QAAQ,wVAAE,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEtK,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBA1BrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,QAAA,EACpB;;;;;;;;;;;;;;;;;;;KAmBT,EAAA,UAAA,EAEW,IAAI,WACP,CAAC,YAAY,EAAE,wBAAwB,EAAE,eAAe,EAAE,mBAAmB,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,wBAAwB,CAAC,EAAA,MAAA,EAAA,CAAA,8BAAA,CAAA,EAAA;;;MC9BvK,iBAAiB,CAAA;IAE1B,SAAS,CAAC,KAAU,EAAE,KAAkD,EAAA;QAEpE,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,KAAI;AAC3B,gBAAA,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;AACjD,gBAAA,OAAO,GAAG;;;;;;;;;YASd,CAAC,EAAE,KAAK,CAAC;QACb;AACA,QAAA,OAAO,KAAK;IAEhB;8GApBS,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;AC4BM,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,iBAAiB,CAAA;IACxD,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;IACpB;IACA,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE;IACvB;8GANS,qBAAqB,EAAA,IAAA,EAAA,IAAA,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,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArBpB;;;;;;;AAOT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,qFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAYS,YAAY,EAAA,EAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAqB,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,0BAAlD,iBAAiB,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AAEhC,qBAAqB,GAAA,UAAA,CAAA;IAxBjC,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE;AAwBvB,CAAA,EAAA,qBAAqB,CAOjC;2FAPY,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAvBjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,QAAA,EAChB;;;;;;;KAOT,EAAA,UAAA,EAWW,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,mBAAmB,CAAC,EAAA,MAAA,EAAA,CAAA,qFAAA,CAAA,EAAA;;;ACJzE,MAAO,qBAAsB,SAAQ,iBAAiB,CAAA;AACxD,IAAA,QAAQ,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAE/B,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE;IACvB;8GALS,qBAAqB,EAAA,IAAA,EAAA,IAAA,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,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhBpB;;;;;;;;;;;AAWb,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAGa,YAAY,EAAA,EAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAqB,aAAa,EAAA,QAAA,EAAA,oFAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAjF,iBAAiB,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEzC,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAlBjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,QAAA,EAChB;;;;;;;;;;;AAWb,CAAA,EAAA,UAAA,EAEe,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,mBAAmB,CAAC,EAAA;;;AClBjH,MAAO,aAAc,SAAQ,eAAe,CAAA;IAEvC,MAAM,GAAA;AACT,QAAA,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,EAAE,CAAC;AAEzC,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;YACjE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,IAAG;AACtC,gBAAA,IAAI,OAAO;AACX,gBAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC;AAEjE,gBAAA,IAAI,QAAQ,CAAC,IAAI,EAAE;AACf,oBAAA,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,GAAG;AAChG,2BAAA,uBAAuB,CAAC,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC;gBACpE;qBAAO;oBACH,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE;AAChG,2BAAA,uBAAuB,CAAC,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC;gBACpE;gBAEA,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;AAC/C,YAAA,CAAC,CAAC;QACN;AAEA,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACrB,QAAQ,CAAC,OAAO,EAAE;QACtB;AAEA,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AACvB,YAAA,MAAM,CACF,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAClC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CACtB,IAAI,CAAC,CAAC,CAAC,EACP,UAAU,CAAC,CAAC,GAAG,KAAI;AACf,gBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AAClB,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC;YACnB,CAAC,CAAC,EACF,GAAG,CAAC,CAAC,KAAK,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAC9C,CACJ,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;gBACrB,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO;gBACrC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;AACxE,gBAAA,IAAI,QAAQ,CAAC,OAAO,EAAE;oBAClB,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;gBAC1C;qBAAO;AACH,oBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;wBACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;oBACzC;AACA,oBAAA,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;oBACnC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK;gBACrC;AACJ,YAAA,CAAC,CAAC;QACN;AAEA,QAAA,OAAO,QAAQ;IACnB;AACH;;ACdM,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,iBAAiB,CAAA;AAAtD,IAAA,WAAA,GAAA;;AACc,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAC9C,YAAA,QAAQ,IAAI,CAAC,KAAK,CAAC,SAAS;AACxB,gBAAA,KAAK,QAAQ;AACT,oBAAA,OAAO,wBAAwB;AACnC,gBAAA,KAAK,KAAK;AACN,oBAAA,OAAO,qBAAqB;AAChC,gBAAA,KAAK,MAAM;AACP,oBAAA,OAAO,sBAAsB;AACjC,gBAAA,KAAK,aAAa;AACd,oBAAA,OAAO,6BAA6B;AACxC,gBAAA;AACI,oBAAA,OAAO,iBAAiB;;QAEpC,CAAC;6FAAC;AAmBL,IAAA;AAjBG,IAAA,IAA0B,SAAS,GAAA;AAC/B,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE;QAChD,OAAO,gBAAgB,KAAK,qBAAqB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,GAAG,CAAA,EAAG,gBAAgB,yBAAyB,GAAG,gBAAgB;IACpJ;IAKA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAqB;AACxE,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAiB;QAC1D,KAAK,CAAC,QAAQ,EAAE;IACpB;IAEA,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE;IACvB;8GAhCS,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,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA/BrB;;;;;;;;;;;;;;;;AAgBT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,oGAAA,EAAA,4FAAA,EAAA,8CAAA,EAAA,uHAAA,EAAA,sEAAA,EAAA,2CAAA,EAAA,4CAAA,EAAA,0DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAaS,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,IAAA,EAAA,eAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AAE3D,sBAAsB,GAAA,UAAA,CAAA;AAnClC,IAAA,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,KAAK,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE;AAmCnI,CAAA,EAAA,sBAAsB,CAiClC;2FAjCY,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAlClC,SAAS;AAEI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,QAAA,EACZ;;;;;;;;;;;;;;;;KAgBT,EAAA,UAAA,EAYW,IAAI,WACP,CAAC,yBAAyB,EAAE,UAAU,EAAE,mBAAmB,CAAC,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,oGAAA,EAAA,4FAAA,EAAA,8CAAA,EAAA,uHAAA,EAAA,sEAAA,EAAA,2CAAA,EAAA,4CAAA,EAAA,0DAAA,CAAA,EAAA;;sBAkBpE,WAAW;uBAAC,OAAO;;;ACiClB,MAAO,+BAAgC,SAAQ,sBAAsB,CAAA;IACvE,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE;IACvB;8GAHS,+BAA+B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjF9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA2ET,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,oGAAA,EAAA,8BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAIS,YAAY,4HAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,wSAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,OAAA,EAAA,8BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,yBAAA,EAAA,4BAAA,EAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,2IAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAa,QAAQ,wVAAEI,UAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAEC,cAAY,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,EAAE,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAE3N,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAnF3C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAAA,QAAA,EAC3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2ET,IAAA,CAAA,EAAA,UAAA,EAGW,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,SAAS,EAAE,QAAQ,EAAED,UAAQ,EAAEC,cAAY,EAAE,wBAAwB,CAAC,EAAA,MAAA,EAAA,CAAA,oGAAA,EAAA,8BAAA,CAAA,EAAA;;;AC5EnO,MAAO,qBAAsB,SAAQ,iBAAiB,CAAA;IACxD,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;IACpB;IACA,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE;IACvB;8GANS,qBAAqB,EAAA,IAAA,EAAA,IAAA,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,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EATpB;;;;AAIT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAGS,YAAY,EAAA,EAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,gRAAE,mBAAmB,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEvD,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAXjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,QAAA,EAChB;;;;KAIT,EAAA,UAAA,EAEW,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,mBAAmB,CAAC,EAAA;;;ACK9D,IAAM,0BAA0B,GAAhC,MAAM,0BAA2B,SAAQ,iBAAiB,CAAA;AAC7D,IAAA,QAAQ,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC/B,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE;IACvB;8GAJS,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,uGAVzB,CAAA,CAAE,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,gDAAA,CAAA,EAAA,CAAA,CAAA;;AAUH,0BAA0B,GAAA,UAAA,CAAA;AAhBtC,IAAA,WAAW,CAAC;QACT,IAAI,EAAE,QAAQ,CAAC,SAAS;AACxB,QAAA,OAAO,EAAE,MAAM;KAClB;AAaY,CAAA,EAAA,0BAA0B,CAKtC;2FALY,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAZtC,SAAS;+BACI,sBAAsB,EAAA,QAAA,EACtB,CAAA,CAAE,EAAA,UAAA,EAQA,IAAI,EAAA,MAAA,EAAA,CAAA,gDAAA,CAAA,EAAA;;;MCZP,eAAe,CAAA;IAExB,SAAS,CAAC,MAAa,EAAE,QAAiB,EAAA;QACtC,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACjC,IAAI,QAAQ,EAAE;gBACV,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1E;iBAAO;AACH,gBAAA,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5B;QACJ;AACA,QAAA,OAAO,EAAE;IACb;8GAXS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,aAAa;AACnB,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA;;;ACUK,MAAO,qBAAsB,SAAQ,iBAAiB,CAAA;IACxD,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;IACpB;IAEA,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE;IACvB;8GAPS,qBAAqB,EAAA,IAAA,EAAA,IAAA,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,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EARpB;;;;AAIT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAES,YAAY,EAAA,EAAA,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,EAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAE9C,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAVjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE;;;;AAIT,IAAA,CAAA;AACD,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,mBAAmB,CAAC;AAC3D,iBAAA;;;ACoBK,MAAO,4BAA6B,SAAQ,iBAAiB,CAAA;AA3BnE,IAAA,WAAA,GAAA;;QA4BqB,IAAA,CAAA,WAAW,GAAG,SAAS,CAAC,cAAc;wFAAC;AAY3D,IAAA;IAVsB,KAAK,GAAA;AACpB,QAAA,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE;IAC/B;IAEA,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;IACpB;IACA,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE;IACvB;8GAZS,4BAA4B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACI,cAAc,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA1B7C;;;;;;;KAOT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,kMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAgBS,YAAY,6HAAE,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,gmBAAE,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAExF,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBA3BxC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAAA,QAAA,EACxB;;;;;;;AAOT,IAAA,CAAA,EAAA,UAAA,EAeW,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,mBAAmB,EAAE,wBAAwB,CAAC,EAAA,MAAA,EAAA,CAAA,kMAAA,CAAA,EAAA;6FAGzD,cAAc,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC9B3D;;;AAGG;MACU,kBAAkB,CAAA;;AAgB3B,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACjB,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACzD;QAEA,OAAO,IAAI,CAAC,SAAS;IACzB;IAKA,WAAA,CACY,SAAA,GAAY,KAAK,EACzB,uBAA6B,EACrB,YAAA,GAAe,IAAI,EACpB,WAAuC,EAAA;QAHtC,IAAA,CAAA,SAAS,GAAT,SAAS;QAET,IAAA,CAAA,YAAY,GAAZ,YAAY;QACb,IAAA,CAAA,WAAW,GAAX,WAAW;QA9BL,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,CAAC;sFAAC;;AAG9B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,GAAG,EAAK;;QAGzB,IAAA,CAAA,iBAAiB,GAAQ,EAAE;;QAG3B,IAAA,CAAA,eAAe,GAAQ,EAAE;;QAGzB,IAAA,CAAA,SAAS,GAAe,IAAI;;AAY3B,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAO;AAQjC,QAAA,IAAI,uBAAuB,IAAI,uBAAuB,CAAC,MAAM,EAAE;YAC3D,IAAI,SAAS,EAAE;AACX,gBAAA,uBAAuB,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACvE;iBAAO;gBACH,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;YAClD;;AAGA,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;QACnC;IACJ;AAEA;;;;;AAKG;IACH,MAAM,CAAC,MAAW,EAAE,MAA+B,EAAA;AAC/C,QAAA,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC;AACnC,QAAA,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAClD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACxC,QAAA,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,SAAS,EAAE;YAC9B,IAAI,CAAC,gBAAgB,EAAE;QAC3B;aAAO;AACH,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACzB;AACA,QAAA,OAAO,OAAO;IAClB;AAEA;;;;;AAKG;IACH,QAAQ,CAAC,MAAW,EAAE,MAA+B,EAAA;AACjD,QAAA,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC;AACnC,QAAA,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AACpD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACxC,QAAA,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,SAAS,EAAE;YAC9B,IAAI,CAAC,gBAAgB,EAAE;QAC3B;aAAO;AACH,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACzB;AACA,QAAA,OAAO,OAAO;IAClB;AAEA;;;;;AAKG;IACH,YAAY,CAAC,MAAW,EAAE,MAA+B,EAAA;AACrD,QAAA,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC;AACnC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ;QAC/B,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;AACpF,QAAA,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAElD;AACK,aAAA,MAAM,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1C,aAAA,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AAClD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE;AACxC,QAAA,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,SAAS,EAAE;YAC9B,IAAI,CAAC,gBAAgB,EAAE;QAC3B;aAAO;AACH,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACzB;AACA,QAAA,OAAO,OAAO;IAClB;AAEA;;;;;AAKG;AACH,IAAA,MAAM,CAAC,KAAQ,EAAA;AACX,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACtB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAC7E;aAAO;AACH,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;QACjF;IAEJ;AAEA;;;;;;AAMG;IACH,KAAK,CAAC,UAAU,GAAG,IAAI,EAAA;QACnB,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE;QACxC,IAAI,UAAU,EAAE;YACZ,IAAI,CAAC,gBAAgB,EAAE;QAC3B;AACA,QAAA,OAAO,OAAO;IAClB;AAEA;;AAEG;AACH,IAAA,UAAU,CAAC,KAAQ,EAAA;QACf,IAAI,CAAC,SAAS,EAAE;AAChB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC7D;AAEA;;AAEG;IACH,OAAO,GAAA;AACH,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC;IACrC;AAEA;;AAEG;IACH,QAAQ,GAAA;AACJ,QAAA,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE;IAC1B;AAEA;;AAEG;AACH,IAAA,IAAI,CAAC,SAAkC,EAAA;QACnC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjC,YAAA,IAAI,CAAC,SAAU,CAAC,IAAI,CAAC,SAAS,CAAC;QACnC;IACJ;AAEA;;AAEG;IACH,mBAAmB,GAAA;QACf,OAAO,IAAI,CAAC,SAAS;IACzB;;IAGQ,gBAAgB,GAAA;;AAEpB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AAErB,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;AAC9D,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AACd,gBAAA,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,IAAI,CAAC,eAAe;gBAC3B,OAAO,EAAE,IAAI,CAAC,iBAAiB;AAClC,aAAA,CAAC;AAEF,YAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;AAC3B,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE;QAC7B;IACJ;;AAGQ,IAAA,aAAa,CAAC,KAAQ,EAAA;AAC1B,QAAA,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AACzB,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACjB,IAAI,CAAC,UAAU,EAAE;YACrB;YAEA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AACzB,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,gBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,GAAG,CAAC,CAAC;YACrD;AAEA,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;YACpC;QACJ;IACJ;;AAGQ,IAAA,eAAe,CAAC,KAAQ,EAAA;AAC5B,QAAA,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACrC,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;AACxB,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;AAC7B,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,QAAQ,GAAG,CAAC,CAAC;AAEjD,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;YACtC;QACJ;IACJ;;IAGQ,UAAU,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACjE;IACJ;AAEA;;;AAGG;AACK,IAAA,sBAAsB,CAAC,MAAW,EAAA;QACtC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACtC,MAAM,uCAAuC,EAAE;QACnD;IACJ;;IAGQ,iBAAiB,GAAA;AACrB,QAAA,OAAO,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;IAC3E;;AAGQ,IAAA,iBAAiB,CAAC,UAAa,EAAA;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACnB,YAAA,OAAO,UAAU;QACrB;aAAO;AACH,YAAA,KAAK,IAAI,aAAa,IAAI,IAAI,CAAC,UAAU,EAAE;gBACvC,IAAI,IAAI,CAAC,WAAY,CAAC,UAAU,EAAE,aAAa,CAAC,EAAE;AAC9C,oBAAA,OAAO,aAAa;gBACxB;YACJ;AACA,YAAA,OAAO,UAAU;QACrB;IACJ;AACH;;ACpNK,MAAO,8BAA+B,SAAQ,iBAAiB,CAAA;AA3CrE,IAAA,WAAA,GAAA;;AA8CqB,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAC9C,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AAClE,YAAA,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;AACpC,SAAA,CAAC;AACO,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;YAC9B,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ;QAChC,CAAC;qFAAC;AAgDL,IAAA;IA9CG,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;QAEhB,IAAI,CAAC,SAAS,GAAG,IAAI,kBAAkB,CAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAO,EAAE,EAAO,KAAI;AACtG,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AACrB,gBAAA,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YAClE;iBAAO;gBACH,OAAO,EAAE,KAAK,EAAE;YACpB;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClG;QAEA,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,YAAY,UAAU,EAAE;YAC1C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO;QACtC;aAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,YAAY,QAAQ,EAAE;YAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;QACxC;aAAO;AACH,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;QAChD;QAEA,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC3E,YAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC7F,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;YACzE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC/C,YAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;AAC/B,YAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AAC9B,QAAA,CAAC,CAAC;IACN;IACA,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE;IACvB;AAEA,IAAA,iBAAiB,CAAC,SAAiC,EAAA;AAC/C,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACjB;QACJ;QAEA,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACjC,YAAA,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACrG,QAAA,CAAC,CAAC;IACN;8GAzDS,8BAA8B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAzC7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,6DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAWS,YAAY,EAAA,EAAA,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,UAAA,EAAA,IAAA,EAAqB,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,gCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAxH,iBAAiB,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEhC,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBA3C1C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EAAA,QAAA,EAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BT,IAAA,CAAA,EAAA,UAAA,EAUW,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,aAAa,EAAE,eAAe,EAAE,mBAAmB,CAAC,EAAA,MAAA,EAAA,CAAA,6DAAA,CAAA,EAAA;;;AClC9I,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,iBAAiB,CAAA;IAEzD,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;IACpB;IAEA,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE;IACvB;8GARS,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,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EATrB;;;;AAIb,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAGa,YAAY,EAAA,EAAA,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,UAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AAE/C,sBAAsB,GAAA,UAAA,CAAA;IAZlC,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE;AAYxB,CAAA,EAAA,sBAAsB,CASlC;2FATY,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAXlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE;;;;AAIb,CAAA;AACG,oBAAA,UAAU,EAAE,IAAI;AAEhB,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,cAAc,CAAC;AAC5D,iBAAA;;;ACMK,MAAO,kCAAmC,SAAQ,iBAAiB,CAAA;AAhBzE,IAAA,WAAA,GAAA;;QAiBqB,IAAA,CAAA,aAAa,GAAG,YAAY,CAAC,eAAe;0FAAC;AAM9D,QAAA,IAAA,CAAA,QAAQ,GAAsB,EAAE,CAAC,EAAE,CAAC;AAkBvC,IAAA;IAtBsB,KAAK,GAAA;QACpB,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;IACvC;IAIA,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;QAEhB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,YAAY,UAAU,EAAE;YAC1C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO;QACtC;aACK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,YAAY,QAAQ,EAAE;YAC7C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;QACxC;aACK;AACD,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;QAChD;IACJ;IACA,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE;IACvB;8GAxBS,kCAAkC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlC,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,SAAA,EACG,eAAe,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAfnD;;;;;;;;;;CAUb,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAEa,YAAY,4HAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAqB,qBAAqB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,8BAAA,EAAA,gCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,YAAA,EAAA,SAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,wBAAwB,8GAAlE,iBAAiB,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAErD,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAhB9C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,QAAQ,EAAE;;;;;;;;;;AAUb,CAAA;AACG,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,wBAAwB,CAAC;AACnH,iBAAA;kGAEiD,eAAe,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACgB1D,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,iBAAiB,CAAA;AAMzD,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AACP,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAqB;AACzE,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAiB;IAC9D;IAEA,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;IACpB;AAEA,IAAA,WAAW,CAAC,OAAwB,EAAA;AAChC,QAAA,OAAO,OAA2B;IACtC;AAEA,IAAA,IAAI,CAAC,KAAa,EAAA;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAiB;IAC/C;IAEA,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE;IACvB;8GA1BS,sBAAsB,EAAA,IAAA,EAAA,EAAA,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,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA3BrB;;;;;;;;;;;;;;AAcT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,8CAAA,EAAA,mDAAA,EAAA,+BAAA,EAAA,yDAAA,EAAA,0DAAA,EAAA,0CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAWS,YAAY,EAAA,EAAA,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,EAAE,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,IAAA,EAAA,eAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AAE7D,sBAAsB,GAAA,UAAA,CAAA;AA9BlC,IAAA,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,KAAK,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE;AA8BnI,CAAA,EAAA,sBAAsB,CA2BlC;2FA3BY,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBA7BlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,QAAA,EACZ;;;;;;;;;;;;;;KAcT,EAAA,UAAA,EAUW,IAAI,WACP,CAAC,YAAY,EAAE,yBAAyB,EAAE,mBAAmB,CAAC,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,8CAAA,EAAA,mDAAA,EAAA,+BAAA,EAAA,yDAAA,EAAA,0DAAA,EAAA,0CAAA,CAAA,EAAA;;;ACrCrE,MAAO,aAAc,SAAQ,eAAe,CAAA;IAEvC,MAAM,GAAA;AACT,QAAA,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC;AACxB,YAAA,KAAK,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,IAAI,KAAK,EAAE,CAAC;AAC5H,YAAA,GAAG,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,IAAI,KAAK,EAAE,CAAC;SACzH,EAAE;AACC,YAAA,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;AAC9D,YAAA,eAAe,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,EAAE,CAAC;AAChF,SAAA,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACrB,KAAK,CAAC,OAAO,EAAE;QACnB;AACA,QAAA,OAAO,KAAK;IAChB;AACH;;ACyBM,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,iBAAiB,CAAA;IACzD,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;IACpB;IAEA,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE;IACvB;8GAPS,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,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA3BrB;;;;;;;;;;;;;;;;;;;;;AAqBT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4CAAA,EAAA,8BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAIS,YAAY,EAAA,EAAA,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,EAAE,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,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,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,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,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,KAAA,EAAA,KAAA,EAAA,UAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,ijCAAE,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AAEjK,sBAAsB,GAAA,UAAA,CAAA;IA9BlC,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,KAAK,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE;AA8B/E,CAAA,EAAA,sBAAsB,CAQlC;2FARY,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBA7BlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,QAAA,EACvB;;;;;;;;;;;;;;;;;;;;;AAqBT,IAAA,CAAA,EAAA,UAAA,EAGW,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,cAAc,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,wBAAwB,CAAC,EAAA,MAAA,EAAA,CAAA,4CAAA,EAAA,8BAAA,CAAA,EAAA;;;ACNzK,MAAO,gBAAiB,SAAQ,cAAc,CAAA;8GAAvC,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAVd;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,gBAAgB,CAAC;AAC/C,gBAAA,KAAK,EAAE;AACV;SACJ,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApBS;;;;;;;;;;;;;AAaT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EASS,YAAY,EAAA,EAAA,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,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,8TAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAE/D,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBA1B5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;AAaT,IAAA,CAAA;AACD,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,sBAAsB,CAAC;AAC/C,4BAAA,KAAK,EAAE;AACV;AACJ,qBAAA;AACD,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe;AAC3E,iBAAA;;;ACDK,MAAO,oBAAqB,SAAQ,iBAAiB,CAAA;IACvD,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;IACpB;IAEA,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE;IACvB;8GAPS,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,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAvBnB;;;;;;;;;;;;;;;;;;KAkBT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAGS,aAAa,8BAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,oDAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAExF,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAzBhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,QAAA,EACf;;;;;;;;;;;;;;;;;;AAkBT,IAAA,CAAA,EAAA,UAAA,EAEW,IAAI,EAAA,OAAA,EACP,CAAC,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EAAA;;;ACIhG,MAAO,oBAAqB,SAAQ,cAAc,CAAA;8GAA3C,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,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,SAAA,EAVlB;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACnD,gBAAA,KAAK,EAAE;AACV;SACJ,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApBS;;;;;;;;;;;;;AAaT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EASS,YAAY,EAAA,EAAA,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,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,8TAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,0EAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAE/D,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBA1BhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;AAaT,IAAA,CAAA;AACD,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,0BAA0B,CAAC;AACnD,4BAAA,KAAK,EAAE;AACV;AACJ,qBAAA;AACD,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe;AAC3E,iBAAA;;;ACPK,MAAO,wBAAyB,SAAQ,iBAAiB,CAAA;IAE3D,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;IACpB;IAEA,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE;IACvB;8GARS,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,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EApBvB;;;;;;;;;;;;;;;KAeT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,oBAAoB,yDAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAE1C,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAtBpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,QAAA,EACpB;;;;;;;;;;;;;;;AAeT,IAAA,CAAA,EAAA,UAAA,EAEW,IAAI,EAAA,OAAA,EACP,CAAC,oBAAoB,EAAE,mBAAmB,CAAC,EAAA;;;ACGlD,MAAO,uBAAwB,SAAQ,cAAc,CAAA;8GAA9C,uBAAuB,EAAA,IAAA,EAAA,IAAA,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,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,SAAA,EAVrB;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC;AACtD,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;SACJ,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAfS;;;;;;;;AAQT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EASS,YAAY,EAAA,EAAA,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,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,uNAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAE/D,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBArBnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,IAAA,CAAA;AACD,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,6BAA6B,CAAC;AACtD,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACJ,qBAAA;AACD,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,CAAC;AAC5E,iBAAA;;;ACEK,MAAO,2BAA4B,SAAQ,iBAAiB,CAAA;IAC9D,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;IACpB;IAEA,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE;IACvB;8GAPS,2BAA2B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtB1B;;;;;;;;;;;;;;;;;KAiBT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAGS,mBAAmB,gmBAAE,uBAAuB,EAAA,QAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAE7C,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAxBvC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAAA,QAAA,EACvB;;;;;;;;;;;;;;;;;AAiBT,IAAA,CAAA,EAAA,UAAA,EAEW,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,EAAE,uBAAuB,CAAC,EAAA;;;ACoDrD,MAAO,oCAAqC,SAAQ,iBAAiB,CAAA;AA7D3E,IAAA,WAAA,GAAA;;AA+DI,QAAA,IAAA,CAAA,QAAQ,GAAsB,EAAE,CAAC,EAAE,CAAC;AACpC,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,WAAW,CAAgB,EAAE,CAAC;AAElD,QAAA,IAAA,CAAA,eAAe,GAAsB,EAAE,CAAC,EAAE,CAAC;AAC1B,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAC9C,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AAClE,YAAA,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;AACpC,SAAA,CAAC;AACO,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;YAC9B,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ;QAChC,CAAC;qFAAC;AAsFL,IAAA;IApFG,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE;AAC7B,YAAA,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS;QAC1C;QACA,KAAK,CAAC,QAAQ,EAAE;QAEhB,IAAI,CAAC,SAAS,GAAG,IAAI,kBAAkB,CAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAO,EAAE,EAAO,KAAI;AACtG,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AACrB,gBAAA,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YAClE;iBAAO;gBACH,OAAO,EAAE,KAAK,EAAE;YACpB;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAClG;QAEA,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,YAAY,UAAU,EAAE;AAC1C,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAC3D;QAEA,IAAI,CAAC,uBAAuB,EAAE;QAC9B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAE3G,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AAC3E,YAAA,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC7F,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;YACzE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC/C,YAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;AAC/B,YAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AAC9B,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CACvD,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAC1BJ,WAAS,CAAC,EAAE,CAAC,EACb,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC,EAC1C,oBAAoB,EAAE,EACtB,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,EAAE,WAAW,EAAE,CAAC,EACpCD,WAAS,CAAC,CAAC,KAAK,KAAI;YAChB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,YAAY,QAAQ,EAAE;gBACxC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACpC;iBAAO;AACH,gBAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,YAAY,UAAU,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,IAAI,CACjG,GAAG,CAAC,CAAC,OAAO,KAAI;oBACZ,IAAI,CAAC,KAAK,EAAE;AACR,wBAAA,OAAO,OAAO;oBAClB;AACA,oBAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAI;wBAC7B,QACI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,MAAM,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;6BACxE,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChG,6BAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAE9H,oBAAA,CAAC,CAAC;gBACN,CAAC,CAAC,CACL;YACL;QACJ,CAAC,CAAC,CACL;IACL;IACA,WAAW,GAAA;QACP,KAAK,CAAC,WAAW,EAAE;IACvB;AAEA,IAAA,iBAAiB,CAAC,SAAiC,EAAA;AAC/C,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACjB;QACJ;QAEA,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACjC,YAAA,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACrG,QAAA,CAAC,CAAC;IACN;IAEQ,uBAAuB,GAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;YACrD,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACpD;AAAO,aAAA,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;YAC5D,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACnD;IACJ;8GAlGS,oCAAoC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oCAAoC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA3DnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAsCT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+DAAA,EAAA,yEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAmBS,YAAY,4HAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,wSAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,kBAAkB,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,QAAA,EAAA,QAAA,EAAA,WAAA,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,UAAA,EAAA,IAAA,EAAE,cAAc,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,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,uNAAE,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,gCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAqB,sBAAsB,oGAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAlF,iBAAiB,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEpK,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBA7DhD,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,EAAA,QAAA,EACjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAsCT,EAAA,UAAA,EAkBW,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,wBAAwB,EAAE,eAAe,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,aAAa,EAAE,wBAAwB,CAAC,EAAA,MAAA,EAAA,CAAA,+DAAA,EAAA,yEAAA,CAAA,EAAA;;;MC7DtO,wBAAwB,CAAA;AAbrC,IAAA,WAAA,GAAA;QAcqB,IAAA,CAAA,SAAS,GAAG,SAAS,CAA+B,WAAW;sFAAC;QAChE,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,KAAK;0FAAC;QASrC,IAAA,CAAA,MAAM,GAAG,KAAK;QACd,IAAA,CAAA,QAAQ,GAAG,KAAK;QAEzB,IAAA,CAAA,KAAK,GAAyB,IAAI;AAE1B,QAAA,IAAA,CAAA,QAAQ,GAA0C,MAAK,EAAE,CAAC;AAC1D,QAAA,IAAA,CAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AA2D3C,IAAA;AAxEG,IAAA,IAAa,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE;IAC/B;IACA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;IACjC;AAUA,IAAA,UAAU,CAAC,KAAuC,EAAA;AAC9C,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,IAAI;QAE1B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa;YAC7C,IAAI,KAAK,EAAE;AACP,gBAAA,KAAK,CAAC,KAAK,GAAG,EAAE;YACpB;QACJ;IACJ;IAEA,MAAM,cAAc,CAAC,KAAuB,EAAA;AACxC,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK;QAE5B,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,MAAM,KAAK,GAAoB,EAAE;AAEjC,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACtC,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;gBAEpC,IAAI,CAAC,WAAW,EAAE;oBACd;gBACJ;gBAEA,KAAK,CAAC,CAAC,CAAC,GAAG;oBACP,IAAI,EAAE,WAAW,CAAC,IAAI;AACtB,oBAAA,OAAO,EAAE,MAAM,WAAW,CAAC,WAAW,EAAE;oBACxC,IAAI,EAAE,WAAW,CAAC,IAAI;oBACtB,IAAI,EAAE,WAAW,CAAC,IAAI;iBACzB;YACL;AAEA,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B;aAAO;AACH,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B;QAEA,IAAI,CAAC,aAAa,EAAE;IACxB;AAEA,IAAA,gBAAgB,CAAC,EAAyC,EAAA;AACtD,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACtB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACvB;IAEA,aAAa,GAAA;QACT,IAAI,CAAC,SAAS,EAAE;IACpB;AAEA,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACjC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC9B;8GA3ES,wBAAwB,EAAA,IAAA,EAAA,EAAA,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,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAVtB;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,wBAAwB,CAAC;AACvD,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;SACJ,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAPS,CAAA,kKAAA,CAAoK,2DASpK,WAAW,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEZ,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAbpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,CAAA,kKAAA,CAAoK;AAC9K,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,8BAA8B,CAAC;AACvD,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACJ,qBAAA;AACD,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,WAAW,CAAC;AACzB,iBAAA;uEAEwE,WAAW,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA;sBAG/E;;sBAOA;;sBACA;;;ACVE,IAAM,qBAAqB,GAA3B,MAAM,qBAAsB,SAAQ,iBAAiB,CAAA;8GAA/C,qBAAqB,EAAA,IAAA,EAAA,IAAA,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,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EATpB;;;;AAIT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AAE3D,qBAAqB,GAAA,UAAA,CAAA;IAZjC,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE;AAYvB,CAAA,EAAA,qBAAqB,CAA6B;2FAAlD,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAXjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,QAAA,EAChB;;;;KAIT,EAAA,UAAA,EAEW,IAAI,WACP,CAAC,wBAAwB,EAAE,WAAW,EAAE,mBAAmB,CAAC,EAAA,MAAA,EAAA,CAAA,8BAAA,CAAA,EAAA;;;ACwCnE,MAAO,yBAA0B,SAAQ,iBAAiB,CAAA;8GAAnD,yBAAyB,EAAA,IAAA,EAAA,IAAA,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,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA3CxB;;;;;;;;;;;;;;;;;;;;;KAqBT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,4CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAOG,YAAY,EAAA,EAAA,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,UAAA,EAAA,IAAA,EACZ,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,wSAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,YAAY,4LACZ,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,QAAQ,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACR,SAAS,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,QAAQ,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,EACR,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACV,mBAAmB,8ZACnB,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACxB,4BAA4B,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC5B,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAGnB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBA7CrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EAAA,QAAA,EAC1B;;;;;;;;;;;;;;;;;;;;;AAqBT,IAAA,CAAA,EAAA,UAAA,EAKW,IAAI,EAAA,OAAA,EACP;wBACL,YAAY;wBACZ,mBAAmB;wBACnB,YAAY;wBACZ,QAAQ;wBACR,OAAO;wBACP,QAAQ;wBACR,SAAS;wBACT,QAAQ;wBACR,UAAU;wBACV,mBAAmB;wBACnB,wBAAwB;wBACxB,4BAA4B;wBAC5B;AACH,qBAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,4CAAA,CAAA,EAAA;;;MCjCQ,qBAAqB,CAAA;AAVlC,IAAA,WAAA,GAAA;AAWqB,QAAA,IAAA,CAAA,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAa,SAAS;oFAAC;AAE3D,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAmB,KAAK,CAAC;AACvC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAiB,KAAK,CAAC;AACrC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAqB,cAAc,CAAC;AAC1D,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC1B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAErC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI;AAcxC,IAAA;AAZG,IAAA,IAAI,CAAC,KAAiB,EAAA;QAClB,KAAK,CAAC,eAAe,EAAE;QACvB,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,EAAE;AAC7J,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAE7B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,QAAA,OAAO,CAAC,QAAQ,GAAG,KAAK;QACxB,OAAO,CAAC,IAAI,EAAE;QACd,UAAU,CAAC,MAAK;AACZ,YAAA,OAAO,CAAC,QAAQ,GAAG,IAAI;QAC3B,CAAC,EAAE,IAAI,CAAC;IACZ;8GAtBS,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,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EARpB;;;;AAIT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAES,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,8TAAE,eAAe,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAElE,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAVjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE;;;;AAIT,IAAA,CAAA;AACD,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,CAAC;AAC/E,iBAAA;qEAE6D,SAAS,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC4FhE,IAAM,2BAA2B,GAAjC,MAAM,2BAAgD,SAAQ,iBAA2B,CAAA;AAAzF,IAAA,WAAA,GAAA;;AACH;;AAEG;AACM,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,KAA4C;AAEvD,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAE9C,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AAClE,YAAA,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;AACpC,SAAA,CAAC;AAEF;;AAEG;QACc,IAAA,CAAA,cAAc,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AAE3D,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE;AAC7C,YAAA,YAAY,EAAE,EAAoC;AACrD,SAAA,CAAC;AAEO,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;YAC9B,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ;QAChC,CAAC;qFAAC;AAEO,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;2FAAC;AAE/G,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,SAAS;sFAAC;AAwCnF,IAAA;AAtCG,IAAA,cAAc,CAAC,KAAiB,EAAA;QAC5B,KAAK,CAAC,eAAe,EAAE;IAC3B;AAEA,IAAA,UAAU,CAAC,MAAoC,EAAA;AAC3C,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC;IAC3E;IAEA,OAAO,CAAC,MAAoC,EAAE,KAAiB,EAAA;AAC3D,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YACzB,KAAK,CAAC,eAAe,EAAE;YACvB;QACJ;QAEA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC;IAChD;IAEQ,gBAAgB,CAAC,SAAwD,EAAE,YAAqB,EAAA;AACpG,QAAA,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE;AACjC,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;QACtE;QAEA,OAAO,SAAS,IAAI,YAAY;IACpC;IAEQ,cAAc,GAAA;AAClB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO;AAExC,QAAA,IAAI,OAAO,YAAY,UAAU,EAAE;AAC/B,YAAA,OAAO,OAAO;QAClB;AAEA,QAAA,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;YAC/B,OAAO,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACvD;AAEA,QAAA,OAAO,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC;IAC5B;8GAnES,2BAA2B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAtD1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA2CT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,mHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA7CS,YAAY,EAAA,EAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,oIAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;AAwDhG,2BAA2B,GAAA,UAAA,CAAA;AA9DvC,IAAA,WAAW,CAAC;AACT,QAAA,IAAI,EAAE,YAAY;KACrB;AA4DY,CAAA,EAAA,2BAA2B,CAoEvC;2FApEY,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBA3DvC,SAAS;+BACI,uBAAuB,EAAA,UAAA,EACrB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,CAAC,mBACzF,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CT,IAAA,CAAA,EAAA,MAAA,EAAA,CAAA,mHAAA,CAAA,EAAA;;;ACLC,MAAO,qBAAsB,SAAQ,iBAAiB,CAAA;AA5F5D,IAAA,WAAA,GAAA;;AA6FqB,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAE9C,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;AAChE,YAAA,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AACnC,SAAA,CAAC;AAEO,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACpC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;AAEjC,YAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACf,gBAAA,OAAO,EAAE;YACb;AAEA,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;gBACxB,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE;YAC9C;YAEA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAClD,gBAAA,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnD;AAEA,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC;QACxB,CAAC;2FAAC;AAEO,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE;yFAAC;AACtF,IAAA;8GA1BY,qBAAqB,EAAA,IAAA,EAAA,IAAA,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,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAvFpB;;;;;;;;;;;;;;;;;;;;;;;;AAwBT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,gtBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA1BS,YAAY,EAAA,EAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAyF9C,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBA5FjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,UAAA,EAClB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,gBAAgB,EAAE,aAAa,CAAC,EAAA,eAAA,EACvC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;;;;;;;;;;AAwBT,IAAA,CAAA,EAAA,MAAA,EAAA,CAAA,gtBAAA,CAAA,EAAA;;;ACnBL;;;;;AAKG;MAYU,kCAAkC,CAAA;AAX/C,IAAA,WAAA,GAAA;AAYqB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA+B,UAAU,CAAC;AAE7D,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;QAEpC,IAAA,CAAA,QAAQ,GAAG,KAAK;QAChB,IAAA,CAAA,MAAM,GAAG,OAAO;QAGzB,IAAA,CAAA,eAAe,GAAgD,QAAQ;QAK9D,IAAA,CAAA,WAAW,GAAG,IAAI;QAClB,IAAA,CAAA,aAAa,GAAG,IAAI;QAErB,IAAA,CAAA,YAAY,GAAkB,IAAI;QAClC,IAAA,CAAA,OAAO,GAAG,KAAK;AAEf,QAAA,IAAA,CAAA,QAAQ,GAAmC,MAAK,EAAE,CAAC;AAEnD,QAAA,IAAA,CAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAwM3C,IAAA;AAtMG,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACf,IAAI,CAAC,oBAAoB,EAAE;QAC/B;IACJ;AAEA,IAAA,UAAU,CAAC,KAAc,EAAA;QACrB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;AAEnD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACf,IAAI,CAAC,oBAAoB,EAAE;QAC/B;IACJ;AAEA,IAAA,gBAAgB,CAAC,QAAwC,EAAA;AACrD,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;IAC5B;AAEA,IAAA,iBAAiB,CAAC,QAAoB,EAAA;AAClC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;IAC7B;AAEA,IAAA,gBAAgB,CAAC,QAAiB,EAAA;AAC9B,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,CAAC;IAClF;IAGA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AAEnB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACnE;AAGA,IAAA,WAAW,CAAC,KAAY,EAAA;AACpB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;AAE9C,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK;AAE5B,QAAA,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AACxB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACnB;QACJ;QAEA,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;AAEvD;;;AAGG;AACH,QAAA,IAAI,WAAW,KAAK,IAAI,EAAE;YACtB;QACJ;QAEA,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,WAAW,GAAG,CAAC,EAAE;YACxC;QACJ;AAEA,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;IAC9B;IAGA,UAAU,GAAA;AACN,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;QAEpB,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,SAAS,EAAE;IACpB;AAEQ,IAAA,mBAAmB,CAAC,KAAc,EAAA;AACtC,QAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE;AACvD,YAAA,OAAO,IAAI;QACf;AAEA,QAAA,MAAM,WAAW,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAErE,QAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,WAAW,GAAG,IAAI;IAC5D;IAEQ,oBAAoB,GAAA;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC9D;AAEQ,IAAA,aAAa,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC;IAC5E;AAEQ,IAAA,cAAc,CAAC,KAAoB,EAAA;AACvC,QAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAChB,YAAA,OAAO,EAAE;QACb;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,2BAA2B,EAAE;AAElD,QAAA,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;IACpE;AAEA;;;AAGG;AACK,IAAA,mBAAmB,CAAC,KAAoB,EAAA;AAC5C,QAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAChB,YAAA,OAAO,EAAE;QACb;QAEA,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE;AACtC,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,IAAI,EAAE;AAC1D,SAAA,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;IACpB;IAEQ,2BAA2B,GAAA;AAC/B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB;AAE1C,QAAA,IAAI,OAAO,GAAG,IAAI,CAAC,qBAAqB;AAExC,QAAA,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,GAAG,OAAO,EAAE;YACrE,OAAO,GAAG,OAAO;QACrB;QAEA,OAAO;AACH,YAAA,KAAK,EAAE,UAAU;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,WAAW,EAAE,IAAI,CAAC,WAAW;YAE7B,IAAI,OAAO,KAAK;AACZ,kBAAE;AACI,oBAAA,qBAAqB,EAAE,OAAO;AACjC;kBACD,EAAE,CAAC;YAET,IAAI,OAAO,KAAK;AACZ,kBAAE;AACI,oBAAA,qBAAqB,EAAE,OAAO;AACjC;kBACD,EAAE,CAAC;SACZ;IACL;AAEQ,IAAA,oBAAoB,CAAC,QAAgB,EAAA;AACzC,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC;AAExE,QAAA,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,KAAK;QAEzE,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,KAAK,IAAI,GAAG;QAEpF,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE,KAAK,IAAI,GAAG;QAE/E,IAAI,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC;QAExD,IAAI,cAAc,EAAE;AAChB,YAAA,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1D;AAEA,QAAA,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAEzD,QAAA,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAElD;;;AAGG;QACH,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;QAElD,IAAI,UAAU,KAAK,EAAE,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI,EAAE;AACnI,YAAA,OAAO,IAAI;QACf;AAEA,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;AAEjC,QAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI;IAClD;AAEA;;;AAGG;AACK,IAAA,wBAAwB,CAAC,KAAa,EAAA;QAC1C,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE;AACjD,YAAA,WAAW,EAAE,KAAK;AACrB,SAAA,CAAC;QAEF,IAAI,UAAU,GAAG,KAAK;AAEtB,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;YACrC,MAAM,cAAc,GAAG,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,KAAK;YAEpG,IAAI,cAAc,EAAE;AAChB,gBAAA,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACrE;QACJ;AAEA,QAAA,OAAO,UAAU;IACrB;8GA7NS,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,cAAA,EAAA,EAAA,EAAA,SAAA,EARhC;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,kCAAkC,CAAC;AACjE,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;AACJ,SAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAEQ,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAX9C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,wCAAwC,CAAC;AACjE,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;AACJ,qBAAA;AACJ,iBAAA;;sBAMI;;sBACA;;sBAEA;;sBAGA;;sBACA;;sBAEA;;sBACA;;sBAmCA,YAAY;uBAAC,OAAO;;sBAOpB,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;sBA8BhC,YAAY;uBAAC,MAAM;;AAqNjB,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,iBAAiB,CAAA;AAAzD,IAAA,WAAA,GAAA;;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;QAErB,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,EAAE,eAAe;4FAAC;AAEhF,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC/D,IAAA;8GANY,yBAAyB,EAAA,IAAA,EAAA,IAAA,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,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArExB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2DT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4CAAA,EAAA,iFAAA,EAAA,8BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA5DS,YAAY,EAAA,EAAA,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,UAAA,EAAA,IAAA,EAAE,mBAAmB,y8BAAE,kBAAkB,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,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,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,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,cAAc,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,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,8TAAE,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAY,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAtOrK,kCAAkC,qMAsOyK,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;AAsEnO,yBAAyB,GAAA,UAAA,CAAA;AA5ErC,IAAA,WAAW,CAAC;QACT,IAAI,EAAE,QAAQ,CAAC,QAAQ;KAC1B;AA0EY,CAAA,EAAA,yBAAyB,CAMrC;2FANY,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAzErC,SAAS;+BACI,oBAAoB,EAAA,UAAA,EAClB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,QAAQ,EAAE,wBAAwB,EAAE,kCAAkC,EAAE,wBAAwB,CAAC,EAAA,QAAA,EACnO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2DT,IAAA,CAAA,EAAA,MAAA,EAAA,CAAA,4CAAA,EAAA,iFAAA,EAAA,8BAAA,CAAA,EAAA;;;ACrKE,IAAM,uBAAuB,GAA7B,MAAM,uBAA4C,SAAQ,iBAA2B,CAAA;AAArF,IAAA,WAAA,GAAA;;AACc,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAE9C,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;AACpG,YAAA,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;AACnC,SAAA,CAAC;QAEe,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE;AACvG,YAAA,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;AACpC,SAAA,CAAC;AAEO,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,UAAU,IAAI,MAAM;6FAAC;AAEjF,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,IAAI,IAAI;oFAAC;AAEnE,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;YAC9B,IAAI,CAAC,aAAa,EAAE;AAEpB,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ;QAChC,CAAC;qFAAC;AAEO,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;YAC7B,IAAI,CAAC,aAAa,EAAE;AAEpB,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,IAAI;QAC9D,CAAC;oFAAC;AAEO,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAA+B,MAAK;AAClE,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE;AACjC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa;AAExC,YAAA,IAAI,OAAO,EAAE,OAAO,EAAE;gBAClB,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;YACnF;YAEA,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAExC,MAAM,gBAAgB,GAAG,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC;YAE/C,IAAI,gBAAgB,EAAE;gBAClB,OAAO;AACH,oBAAA,IAAI,EAAE,SAAS;AACf,oBAAA,GAAG,gBAAgB;iBACtB;YACL;AAEA,YAAA,IAAI,OAAO,EAAE,QAAQ,EAAE;gBACnB,OAAO;AACH,oBAAA,IAAI,EAAE,SAAS;oBACf,GAAG,OAAO,CAAC,QAAQ;iBACtB;YACL;AAEA,YAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE;AACvD,gBAAA,OAAO,IAAI;YACf;YAEA,OAAO;AACH,gBAAA,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;AACtC,gBAAA,IAAI,EAAE,SAAS;aAClB;QACL,CAAC;2FAAC;AAiBL,IAAA;AAfW,IAAA,gBAAgB,CAAC,KAAU,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACpE,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC7C;AAEA,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC;IACxB;AAEQ,IAAA,mBAAmB,CAAC,KAAU,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACpE,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnD;AAEA,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC;IACxB;8GA7ES,uBAAuB,EAAA,IAAA,EAAA,IAAA,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,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA1ItB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,8qDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAtCS,YAAY,EAAA,EAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,8TAAE,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;AA4IxE,uBAAuB,GAAA,UAAA,CAAA;AAlJnC,IAAA,WAAW,CAAC;QACT,IAAI,EAAE,QAAQ,CAAC,MAAM;KACxB;AAgJY,CAAA,EAAA,uBAAuB,CA8EnC;2FA9EY,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBA/InC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,cAChB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,wBAAwB,CAAC,EAAA,eAAA,EACjE,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCT,IAAA,CAAA,EAAA,MAAA,EAAA,CAAA,8qDAAA,CAAA,EAAA;;;AC+BC,MAAO,yBAA0B,SAAQ,iBAAiB,CAAA;AAjEhE,IAAA,WAAA,GAAA;;AAkEa,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAuB;AAEpE,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAElC,QAAA,IAAA,CAAA,kBAAkB,GAAa,CAAC,KAAK,EAAE,KAAK,CAAC;AAEtD;;;;AAIG;AACM,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,WAAW,CAAM,EAAE,EAAE;AAC9C,YAAA,WAAW,EAAE,IAAI;AACpB,SAAA,CAAC;AAMF;;;AAGG;AACc,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,aAAa,CAAO,CAAC,CAAC;AAsP7D,IAAA;IApPY,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,mBAAmB,EAAE;AAE1C,QAAA,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CACtMR,KAAG,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,CAAC,KAAI;AACvC,YAAA,IAAI,QAAQ,CAAC,OAAO,EAAE;AAClB,gBAAA,OAAO,QAAQ;YACnB;AAEA,YAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,GAAG,EAAE;AAEpE;;;AAGG;AACH,YAAA,IAAI,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,aAAa,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;AAE9H;;;AAGG;YACH,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE;gBAC7C,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC;YAC9C;YAEA,OAAO;AACH,gBAAA,OAAO,EAAE,KAAK;gBACd,OAAO;aACV;QACL,CAAC,CAAC,CACL;QAED,KAAK,CAAC,QAAQ,EAAE;IACpB;IAES,OAAO,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACjB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QAC5B;QAEA,KAAK,CAAC,OAAO,EAAE;IACnB;AAEA,IAAA,UAAU,CAAC,KAAwB,EAAA;AAC/B;;;;;AAKG;AACH,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACrB;QACJ;QAEA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;QAEhC,IAAI,CAAC,KAAK,EAAE;YACR;QACJ;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAEnB,QAAA,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE;AACvB,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;IACnC;AAEA,IAAA,OAAO,CAAC,KAAc,EAAA;AAClB,QAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE;YACvD;QACJ;QAEA,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE;AAE1E;;AAEG;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAEpF,IAAI,MAAM,EAAE;YACR;QACJ;AAEA,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC;AAEzC,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;IAC9B;AAEA,IAAA,UAAU,CAAC,KAAc,EAAA;QACrB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE;QAE/E,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAExF,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACd;QACJ;AAEA,QAAA,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAEvB,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;IAC9B;IAEA,QAAQ,CAAC,KAAmC,EAAE,SAAuB,EAAA;AACjE,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK;AAEhC;;AAEG;AACH,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAEnB;;;AAGG;AACH,QAAA,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE;AAEvB;;;AAGG;QACH,SAAS,CAAC,KAAK,EAAE;AAEjB;;;;;AAKG;AACH,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;IACnC;AAEA,IAAA,YAAY,CAAC,KAAU,EAAA;QACnB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AACvC,YAAA,OAAO,EAAE;QACb;AAEA,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACrB,OAAO,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE;QAC7C;AAEA,QAAA,OAAO,KAAK;IAChB;IAEQ,mBAAmB,GAAA;AACvB;;;AAGG;AACH,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACjB,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CACzB,SAAS,CAAC,MACN,MAAM,CACF,EAAE,CAAC;AACC,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,OAAO,EAAE,EAAE;AACd,aAAA,CAAC,EACF,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CACtBA,KAAG,CAAC,CAAC,OAAO,MAAM;AACd,gBAAA,OAAO,EAAE,KAAK;gBACd,OAAO;AACV,aAAA,CAAC,CAAC,CACN,CACJ,CACJ,CACJ;QACL;AAEA;;;AAGG;QACH,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AACnC,YAAA,OAAO,EAAE,CAAC;AACN,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;AAC9B,aAAA,CAAC;QACN;AAEA;;;AAGG;QACH,OAAO,MAAM,CACT,EAAE,CAAC;AACC,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,OAAO,EAAE,EAAE;AACd,SAAA,CAAC,EACF,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CACtBA,KAAG,CAAC,CAAC,OAAO,MAAM;AACd,YAAA,OAAO,EAAE,KAAK;YACd,OAAO;SACV,CAAC,CAAC,CACN,CACJ;IACL;IAEQ,cAAc,GAAA;QAClB,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO;AAEnG,QAAA,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE;AACtB,YAAA,OAAO,MAAM;QACjB;AAEA,QAAA,OAAO,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC;IAC3B;IAEQ,UAAU,CAAC,MAAe,EAAE,OAAc,EAAA;AAC9C,QAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC5B,YAAA,OAAO,OAAO;QAClB;QAEA,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;QAE/C,IAAI,CAAC,WAAW,EAAE;AACd,YAAA,OAAO,OAAO;QAClB;AAEA,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAI;YAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;AAEvC,YAAA,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE;AACpB,iBAAA,WAAW;iBACX,UAAU,CAAC,WAAW,CAAC;AAChC,QAAA,CAAC,CAAC;IACN;IAEQ,YAAY,CAAC,CAAM,EAAE,CAAM,EAAA;AAC/B;;AAEG;AACH,QAAA,IAAI,CAAC,KAAK,CAAC,EAAE;AACT,YAAA,OAAO,IAAI;QACf;AAEA;;;AAGG;QACH,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,EAAE;AACvF,YAAA,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC5D;AAEA,QAAA,OAAO,KAAK;IAChB;8GA7QS,yBAAyB,EAAA,IAAA,EAAA,IAAA,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,QAAA,EAAA,IAAA,EAAA,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA/DxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAmDT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4CAAA,EAAA,iFAAA,EAAA,oGAAA,EAAA,8BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAUuC,qBAAqB,w1BAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,OAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,EAAA,+BAAA,EAAA,aAAA,EAAA,IAAA,EAAA,UAAA,EAAA,UAAA,EAAA,iCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,wEAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,QAAQ,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,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,EAAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,qLAAE,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,69BAAE,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAA/N,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAE7B,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAjErC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,QAAA,EACrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAmDT,EAAA,UAAA,EASW,IAAI,EAAA,OAAA,EACP,CAAC,SAAS,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,cAAc,EAAE,QAAQ,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,aAAa,EAAE,wBAAwB,EAAE,UAAU,EAAE,mBAAmB,EAAE,wBAAwB,CAAC,EAAA,MAAA,EAAA,CAAA,4CAAA,EAAA,iFAAA,EAAA,oGAAA,EAAA,8BAAA,CAAA,EAAA;;;ACzE9O,MAAM,qBAAqB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI;AAC7C,MAAM,cAAc,GAAG,iCAAiC;AAuIjD,IAAM,4BAA4B,GAAlC,MAAM,4BAA6B,SAAQ,iBAAiB,CAAA;AAA5D,IAAA,WAAA,GAAA;;AACM,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,mBAAmB,CAAC;QAE1B,IAAA,CAAA,SAAS,GAAG,SAAS,CAA+B,WAAW;sFAAC;AAChE,QAAA,IAAA,CAAA,OAAO,GAAoB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAC/D,IAAA,CAAA,eAAe,GAAG,MAAM,CAAgB,IAAI;4FAAC;QAC7C,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,KAAK;yFAAC;AAC5B,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAU,IAAI,CAAC,OAAO,CAAC,KAAK;yFAAC;AAG1D,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,IAAI,EAAE;oFAAC;AAC7D,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,cAAc;mFAAC;AAC5D,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ;qFAAC;QACzE,IAAA,CAAA,YAAY,GAAG,MAAM,CAAgB,IAAI;yFAAC;AAC1C,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAChC,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACrB,gBAAA,OAAO,IAAI;YACf;YAEA,OAAO,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI;QAC1G,CAAC;uFAAC;QACO,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE;qFAAC;AA0H1D,IAAA;IAxHY,QAAQ,GAAA;QACb,KAAK,CAAC,QAAQ,EAAE;AAChB,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACrE,YAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;YAC5B,IAAI,CAAC,KAAK,EAAE;gBACR,IAAI,CAAC,iBAAiB,EAAE;YAC5B;AACJ,QAAA,CAAC,CAAC;IACN;IAES,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE;QACvC,IAAI,CAAC,iBAAiB,EAAE;QACxB,KAAK,CAAC,WAAW,EAAE;IACvB;IAEA,cAAc,GAAA;QACV,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa,CAAC,KAAK,EAAE;IAC3C;IAEA,MAAM,UAAU,CAAC,KAAY,EAAA;AACzB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;QAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QAEjC,IAAI,CAAC,IAAI,EAAE;YACP;QACJ;QAEA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AACxB,YAAA,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,kBAAkB,IAAI,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC;YACvG;QACJ;AAEA,QAAA,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,IAAI,qBAAqB,CAAC,EAAE;AACnE,YAAA,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,kBAAkB,IAAI,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;YACnG;QACJ;QAEA,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,iBAAiB,EAAE;AACxB,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;AAE5B,QAAA,MAAM,KAAK,GAAkB;YACzB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,OAAO,EAAE,MAAM,IAAI,CAAC,WAAW,EAAE;YACjC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;SAClB;QACD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAgC,CAAC;AAC7D,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;IAChC;IAEA,WAAW,GAAA;QACP,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,iBAAiB,EAAE;AACxB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;QAE5B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa;QAC7C,IAAI,KAAK,EAAE;AACP,YAAA,KAAK,CAAC,KAAK,GAAG,EAAE;QACpB;IACJ;AAEQ,IAAA,gBAAgB,CAAC,KAAc,EAAA;AACnC,QAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,IAAI;IACnD;AAEQ,IAAA,UAAU,CAAC,IAAU,EAAA;AACzB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM;aAC5B,KAAK,CAAC,GAAG;AACT,aAAA,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;aACvC,MAAM,CAAC,OAAO,CAAC;AAEpB,QAAA,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAI;AACnC,YAAA,IAAI,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC9D,gBAAA,OAAO,IAAI;YACf;AACA,YAAA,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;gBAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACrD;AACA,YAAA,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACzB,gBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACpE;YACA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,QAAQ;AAC/C,QAAA,CAAC,CAAC;IACN;IAEQ,UAAU,CAAC,QAAgB,EAAE,OAAe,EAAA;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa;QAC7C,IAAI,KAAK,EAAE;AACP,YAAA,KAAK,CAAC,KAAK,GAAG,EAAE;QACpB;QAEA,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC,QAAQ,GAAG,IAAI,EAAE,CAAC;AAC5E,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;IAChC;IAEQ,gBAAgB,GAAA;AACpB,QAAA,MAAM,MAAM,GAAG,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE;AACjD,QAAA,OAAO,MAAM,CAAC,eAAe,CAAC;AAC9B,QAAA,OAAO,MAAM,CAAC,eAAe,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACtE;IAEQ,iBAAiB,GAAA;AACrB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,EAAE;QACtC,IAAI,OAAO,EAAE;AACT,YAAA,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC;AAC5B,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;QAClC;IACJ;8GA9IS,4BAA4B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA/H3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wrCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAvCS,YAAY,EAAA,EAAA,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,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;AAiIjC,4BAA4B,GAAA,UAAA,CAAA;IArIxC,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,WAAW,EAAE;AAqI9B,CAAA,EAAA,4BAA4B,CA+IxC;2FA/IY,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBApIxC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAAA,UAAA,EACtB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,EAAA,eAAA,EAC1B,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCT,IAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wrCAAA,CAAA,EAAA;uEA6FoE,WAAW,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC3FpF,MAAM,UAAU,GAAG;IACf,wBAAwB;IACxB,sBAAsB;IACtB,sBAAsB;IACtB,+BAA+B;IAC/B,sBAAsB;IACtB,qBAAqB;IACrB,wBAAwB;IACxB,mBAAmB;IACnB,uBAAuB;IACvB,0BAA0B;IAC1B,8BAA8B;IAC9B,uBAAuB;IACvB,2BAA2B;IAC3B,qBAAqB;IACrB,yBAAyB;IACzB,sBAAsB;IACtB,yBAAyB;IACzB,0BAA0B;IAC1B,sBAAsB;IACtB,yBAAyB;IACzB,qBAAqB;IACrB,qBAAqB;IACrB,sBAAsB;IACtB,qBAAqB;IACrB,0BAA0B;IAC1B,qBAAqB;IACrB,4BAA4B;IAC5B,8BAA8B;IAC9B,kCAAkC;IAClC,sBAAsB;IACtB,sBAAsB;IACtB,sBAAsB;IACtB,oBAAoB;IACpB,gBAAgB;IAChB,oBAAoB;IACpB,wBAAwB;IACxB,uBAAuB;IACvB,2BAA2B;IAC3B,oCAAoC;IACpC,qBAAqB;IACrB,qBAAqB;IACrB,2BAA2B;IAC3B,yBAAyB;IACzB,uBAAuB;IACvB,yBAAyB;IACzB,4BAA4B;CAC/B;AAED,MAAM,UAAU,GAAG,CAAC,yBAAyB,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,qBAAqB,CAAC;AACvH,MAAM,KAAK,GAAG,CAAC,iBAAiB,EAAE,eAAe,CAAC;MAOrC,8BAA8B,CAAA;aAChC,IAAA,CAAA,YAAY,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,CAAjC,CAAmC;8GAD7C,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAA9B,8BAA8B,EAAA,OAAA,EAAA,CAL7B,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,cAAc,EAnDxE,wBAAwB;YACxB,sBAAsB;YACtB,sBAAsB;YACtB,+BAA+B;YAC/B,sBAAsB;YACtB,qBAAqB;YACrB,wBAAwB;YACxB,mBAAmB;YACnB,uBAAuB;YACvB,0BAA0B;YAC1B,8BAA8B;YAC9B,uBAAuB;YACvB,2BAA2B;YAC3B,qBAAqB;YACrB,yBAAyB;YACzB,sBAAsB;YACtB,yBAAyB;YACzB,0BAA0B;YAC1B,sBAAsB;YACtB,yBAAyB;YACzB,qBAAqB;YACrB,qBAAqB;YACrB,sBAAsB;YACtB,qBAAqB;YACrB,0BAA0B;YAC1B,qBAAqB;YACrB,4BAA4B;YAC5B,8BAA8B;YAC9B,kCAAkC;YAClC,sBAAsB;YACtB,sBAAsB;YACtB,sBAAsB;YACtB,oBAAoB;YACpB,gBAAgB;YAChB,oBAAoB;YACpB,wBAAwB;YACxB,uBAAuB;YACvB,2BAA2B;YAC3B,oCAAoC;YACpC,qBAAqB;YACrB,qBAAqB;YACrB,2BAA2B;YAC3B,yBAAyB;YACzB,uBAAuB;YACvB,yBAAyB;AACzB,YAAA,4BAA4B,EAGZ,yBAAyB,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,qBAAqB,EACvG,iBAAiB,EAAE,eAAe,aAjD7C,wBAAwB;YACxB,sBAAsB;YACtB,sBAAsB;YACtB,+BAA+B;YAC/B,sBAAsB;YACtB,qBAAqB;YACrB,wBAAwB;YACxB,mBAAmB;YACnB,uBAAuB;YACvB,0BAA0B;YAC1B,8BAA8B;YAC9B,uBAAuB;YACvB,2BAA2B;YAC3B,qBAAqB;YACrB,yBAAyB;YACzB,sBAAsB;YACtB,yBAAyB;YACzB,0BAA0B;YAC1B,sBAAsB;YACtB,yBAAyB;YACzB,qBAAqB;YACrB,qBAAqB;YACrB,sBAAsB;YACtB,qBAAqB;YACrB,0BAA0B;YAC1B,qBAAqB;YACrB,4BAA4B;YAC5B,8BAA8B;YAC9B,kCAAkC;YAClC,sBAAsB;YACtB,sBAAsB;YACtB,sBAAsB;YACtB,oBAAoB;YACpB,gBAAgB;YAChB,oBAAoB;YACpB,wBAAwB;YACxB,uBAAuB;YACvB,2BAA2B;YAC3B,oCAAoC;YACpC,qBAAqB;YACrB,qBAAqB;YACrB,2BAA2B;YAC3B,yBAAyB;YACzB,uBAAuB;YACvB,yBAAyB;YACzB,4BAA4B,EAIjB,iBAAiB,EAAE,eAAe,EAD7B,yBAAyB,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,qBAAqB,CAAA,EAAA,CAAA,CAAA;+GAQzG,8BAA8B,EAAA,SAAA,EAJ5B,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,yBAAyB,EAAE,EAAE,KAAK,CAAC,EAAA,OAAA,EAAA,CAD7E,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,cAAc,EAnDxE,wBAAwB;YACxB,sBAAsB;YACtB,sBAAsB;YACtB,+BAA+B;YAC/B,sBAAsB;YACtB,qBAAqB;YACrB,wBAAwB;YACxB,mBAAmB;YACnB,uBAAuB;YACvB,0BAA0B;YAC1B,8BAA8B;YAC9B,uBAAuB;YACvB,2BAA2B;YAC3B,qBAAqB;YACrB,yBAAyB;YACzB,sBAAsB;YACtB,yBAAyB;YACzB,0BAA0B;YAC1B,sBAAsB;YACtB,yBAAyB;YACzB,qBAAqB;YACrB,qBAAqB;YACrB,sBAAsB;YACtB,qBAAqB;YAErB,qBAAqB;YACrB,4BAA4B;YAC5B,8BAA8B;YAC9B,kCAAkC;YAClC,sBAAsB;YACtB,sBAAsB;YACtB,sBAAsB;YACtB,oBAAoB;YACpB,gBAAgB;YAChB,oBAAoB;YACpB,wBAAwB;YACxB,uBAAuB;YACvB,2BAA2B;YAC3B,oCAAoC;YACpC,qBAAqB;YACrB,qBAAqB;YACrB,2BAA2B;YAC3B,yBAAyB;YACzB,uBAAuB;YACvB,yBAAyB;AACzB,YAAA,4BAA4B,EAGiE,qBAAqB,CAAA,EAAA,CAAA,CAAA;;2FAQzG,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAN1C,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC;AACxG,oBAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,yBAAyB,EAAE,EAAE,KAAK,CAAC;AACvF,oBAAA,OAAO,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC;AACxC,oBAAA,OAAO,EAAE,CAAC,sBAAsB,EAAE,gBAAgB,CAAC;AACtD,iBAAA;;;MC/FY,mCAAmC,CAAA;AAVhD,IAAA,WAAA,GAAA;AAWa,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAmB,KAAK,CAAC;AACvC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAiB,KAAK,CAAC;AACrC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAqB,cAAc,CAAC;QAEnD,IAAA,CAAA,EAAE,GAAG,MAAM,CAAe,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACtD,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAEtD,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAACb,KAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC5F,YAAA,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;AACtC,SAAA,CAAC;AAEO,QAAA,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,MAAK;AAC1B,YAAA,OAAO,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,SAAS,KAAK,UAAU;QAC1E,CAAC;iFAAC;AAML,IAAA;AAJG,IAAA,gBAAgB,CAAC,KAAiB,EAAA;QAC9B,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,MAAM,GAAG,UAAU,EAAE,CAAC;IAC/F;8GAnBS,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mCAAmC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EARlC;;;;KAIT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAES,OAAO,2IAAE,aAAa,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEvB,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAV/C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,QAAQ,EAAE;;;;AAIT,IAAA,CAAA;AACD,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC;AACpC,iBAAA;;;ACZD;MA0Ha,8BAA8B,CAAA;AAzH3C,IAAA,WAAA,GAAA;QA0Ha,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,QAAQ;oFAA8B;QACtD,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,EAAE;wFAAC;QACvB,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,gBAAgB;sFAAC;QACnC,IAAA,CAAA,cAAc,GAAG,KAAK,CAAC,cAAc;2FAAC;QACtC,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK;sFAAC;QAEhB,IAAA,CAAA,YAAY,GAAG,SAAS,CAA+B,aAAa;yFAAC;AAErE,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC7B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAACc,WAAS,CAAC;AAwFjD,IAAA;IArFG,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI;QAE9B,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE;AACtD,QAAA,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,2BAA2B,CAAC;AACxD,QAAA,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC;IACtD;IAEA,eAAe,GAAA;QACX,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;YACvF,IAAI,MAAM,EAAE;gBACR,UAAU,CAAC,MAAK;oBACZ,IAAI,CAAC,UAAU,EAAE;oBACjB,IAAI,CAAC,yBAAyB,EAAE;AACpC,gBAAA,CAAC,CAAC;YACN;iBAAO;AACH,gBAAA,IAAI,CAAC,wBAAwB,IAAI;AACjC,gBAAA,IAAI,CAAC,wBAAwB,GAAG,SAAS;YAC7C;AACJ,QAAA,CAAC,CAAC;IACN;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,wBAAwB,IAAI;IACrC;AAEA,IAAA,SAAS,CAAC,KAAoB,EAAA;QAC1B,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;YACxB,KAAK,CAAC,eAAe,EAAE;QAC3B;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;YAC7C,KAAK,CAAC,cAAc,EAAE;QAC1B;AAEA,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YAClD,UAAU,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACvC;IACJ;AAEA,IAAA,kBAAkB,CAAC,KAAiB,EAAA;QAChC,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;IAC3B;AAEA,IAAA,WAAW,CAAC,KAAiB,EAAA;QACzB,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC,UAAU,EAAE;IACrB;IAEQ,UAAU,GAAA;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,aAAwC;AAC5E,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;AACxC,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,YAAY,EAAE;YACzB;QACJ;AAEA,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS;AACjC,QAAA,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE;AAClC,QAAA,KAAK,CAAC,SAAS,GAAG,SAAS;IAC/B;AAEA;;;AAGG;IACK,yBAAyB,GAAA;AAC7B,QAAA,IAAI,CAAC,wBAAwB,IAAI;QAEjC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,aAAwC;QAC5E,IAAI,CAAC,KAAK,EAAE;YACR;QACJ;AAEA,QAAA,MAAM,OAAO,GAAG,CAAC,KAAoB,KAAI;AACrC,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;gBACxB,KAAK,CAAC,eAAe,EAAE;YAC3B;AACJ,QAAA,CAAC;AAED,QAAA,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC;AAC1C,QAAA,IAAI,CAAC,wBAAwB,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC;IACvF;8GAlGS,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EArH7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,qmDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA9BS,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAb,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,wSAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,2IAAE,kBAAkB,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAsHhE,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAzH1C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EAAA,UAAA,EACxB,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,EAAE,aAAa,EAAE,OAAO,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAChE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6BT,EAAA,aAAA,EAsFc,iBAAiB,CAAC,IAAI,EAAA,MAAA,EAAA,CAAA,qmDAAA,CAAA,EAAA;6jBASmC,aAAa,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC2ClF,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,iBAAiB,CAAA;AAAvD,IAAA,WAAA,GAAA;;AACM,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,WAAW,CAAS,EAAE,CAAC;AAC3C,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QAChE,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAC,KAAK;mGAAC;QACtC,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,KAAK;sFAAC;QACzB,IAAA,CAAA,eAAe,GAAG,MAAM,CAAQ,EAAE;4FAAC;AAEnC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACxB,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAE/C,IAAA,CAAA,SAAS,GAAG,SAAS,CAAC,SAAS;sFAAC;QAChC,IAAA,CAAA,eAAe,GAAG,SAAS,CAAC,wBAAwB;4FAAC;QAMtE,IAAA,CAAA,aAAa,GAA6B,EAAE;AAE3B,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAiB;QACtD,IAAA,CAAA,aAAa,GAAU,EAAE;QACzB,IAAA,CAAA,cAAc,GAAU,EAAE;QAC1B,IAAA,CAAA,WAAW,GAAG,KAAK;QACnB,IAAA,CAAA,sBAAsB,GAAG,KAAK;AA8HtC,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,KAAU,EAAE,MAAW,KAAa;YAC7C,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,IAAI,MAAM,EAAE;AACxC,gBAAA,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YACrE;YACA,OAAO,KAAK,KAAK,MAAM;AAC3B,QAAA,CAAC;AAsOJ,IAAA;IAnXsB,KAAK,GAAA;AACpB,QAAA,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE;IAC7B;IAYS,QAAQ,GAAA;QACb,KAAK,CAAC,QAAQ,EAAE;AAChB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,sBAAsB,EAAE;AAElD,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,CAACc,WAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACpG,YAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;AACjC,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACzC,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;AAC3B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE;AACtC,YAAA,IAAI,CAAC,aAAa,GAAG,QAAQ;AAC7B,YAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;;;;AAIhC,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;YACpE,IAAI,CAAC,yBAAyB,EAAE;QACpC;aAAO;YACH,IAAI,CAAC,kBAAkB,EAAE;QAC7B;QAEA,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE;YACtD,IAAI,CAAC,aAAa,CAAC;iBACd,IAAI,CACDX,WAAS,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EACnC,QAAQ,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EACzGY,sBAAoB,EAAE,EACtBD,WAAS,CAAC,IAAI,CAAC,UAAU,CAAC;AAE7B,iBAAA,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACjE;AAAO,aAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;YAC/B,IAAI,CAAC,aAAa,CAAC;iBACd,IAAI,CACD,QAAQ,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EACzGC,sBAAoB,EAAE,EACtBD,WAAS,CAAC,IAAI,CAAC,UAAU,CAAC;AAE7B,iBAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACjB,gBAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,oBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC;gBACpE;AACJ,YAAA,CAAC,CAAC;QACV;IACJ;IAES,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,sBAAsB,IAAI;AAC/B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;QAC9B,KAAK,CAAC,WAAW,EAAE;IACvB;IAES,eAAe,GAAA;QACpB,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,gCAAgC,EAAE;IAC3C;IAEA,eAAe,GAAA;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC;IAC7G;IAEA,YAAY,GAAA;AACR,QAAA,MAAM,OAAO,GAAG,CAAC,mBAAmB,CAAC;AACrC,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;AAC1B,YAAA,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC;QAC7C;AACA,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AACxB,YAAA,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC;QAC1C;AACA,QAAA,OAAO,OAAO;IAClB;AAEA,IAAA,cAAc,CAAC,MAAe,EAAA;AAC1B,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM;AAEzB,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;YAC3B,IAAI,MAAM,EAAE;AACR,gBAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK;;;gBAGnC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAACE,aAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9G;AACA,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAClH;AAEA,QAAA,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE,KAAK,IAAI,CAAC,aAAa,CAAC,YAAY,IAAI,IAAI,CAAC,EAAE;AAChF,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC;QAEA,IAAI,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YACpC,UAAU,CAAC,MAAK;gBACZ,IAAI,CAAC,eAAe,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;AACxC,gBAAA,IAAI,CAAC,eAAe,EAAE,EAAE,iBAAiB,EAAE;AAC/C,YAAA,CAAC,CAAC;QACN;IACJ;AAEA,IAAA,oBAAoB,CAAC,KAA2B,EAAA;AAC5C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE;AACtC,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC;AAEhF,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AAChB,YAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAC7G,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC;YAC1D;QACJ;AAEA,QAAA,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,YAAA,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;YACzG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAC,CAAC;QAC5E;IACJ;IAEA,wBAAwB,GAAA;AACpB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE;AACtC,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;AAC1B,YAAA,OAAO,QAAQ;QACnB;AAEA,QAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,cAAc,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7H;IASQ,sBAAsB,GAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;AACzB,YAAA,OAAO,EAAE;QACb;QAEA,MAAM,UAAU,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE;QACjF,OAAO;AACH,YAAA,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,OAAO;YAChC,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU;YAC9C,YAAY,EAAE,UAAU,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY;AAChE,YAAA,SAAS,EAAE,UAAU,CAAC,SAAS,IAAI,CAAC;AACpC,YAAA,YAAY,EAAE,UAAU,CAAC,YAAY,IAAI,IAAI;YAC7C,WAAW,EAAE,UAAU,CAAC,WAAW;YACnC,SAAS,EAAE,UAAU,CAAC,SAAS;SAClC;IACL;IAEQ,kBAAkB,GAAA;AACtB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,QAAQ;IACpE;IAEQ,kBAAkB,GAAA;AACtB,QAAA,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,UAAU,EAAE;AAC9E,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;QAC5B;QAEA,IAAI,CAAC,cAAc;AACd,aAAA,IAAI,CAACF,WAAS,CAAC,IAAI,CAAC,UAAU,CAAC;AAC/B,aAAA,SAAS,CAAC,CAAC,OAAO,KAAI;AACnB,YAAA,MAAM,WAAW,GAAG,OAAO,IAAI,EAAE;AACjC,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,YAAA,IAAI,CAAC,aAAa,GAAG,WAAW;AAChC,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;gBACxB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE,CAAC;YACzD;iBAAO;AACH,gBAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC;YACvC;AACJ,QAAA,CAAC,CAAC;IACV;IAEQ,yBAAyB,GAAA;AAC7B,QAAA,IAAI,CAAC;AACA,aAAA,IAAI,CACD,SAAS,CAAC,CAAC,KAAK,KAAI;AAChB,YAAA,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;AACxB,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE;;;gBAGtC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,SAA8B,EAAE,CAAC;YAC9I;AAEA,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE;YAChC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM;AACzC,YAAA,MAAM,oBAAoB,GAAG,YAAY,GAAG,CAAC,IAAI,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,IAAI,CAAC,CAAC;YACnG,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,oBAAoB,EAAE;AACjD,gBAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC7B,oBAAA,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,SAA8B,EAAE,CAAC;gBAC7G;gBAEA,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,cAAc,EAAE;gBACtE,OAAO,MAAM,CACT,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAW,EAAE,aAAa,EAAE,SAA8B,EAAE,CAAC,EAC1F,QAAQ,CAAC,IAAI,CACTf,KAAG,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,EAAE,CAAC,EAC/BA,KAAG,CAAC,CAAC,aAAa,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC,CAAC,CACtF,CACJ;YACL;AAEA,YAAA,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,sBAAsB,EAAE;gBAChG,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE,aAAa,EAAE,SAA8B,EAAE,CAAC;YACzI;YAEA,MAAM,QAAQ,GACV,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,UAAU,IAAI,YAAY,GAAG;AAC/F,kBAAE,IAAI,CAAC,cAAc,CAAC,MAAM;mBACzB,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;AACjE,YAAA,OAAO,MAAM,CACT,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAW,EAAE,aAAa,EAAE,SAA8B,EAAE,CAAC,EAC1F,QAAQ,CAAC,IAAI,CACTA,KAAG,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,EAAE,CAAC,EAC/BA,KAAG,CAAC,CAAC,aAAa,MAAM;AACpB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,QAAQ,IAAI,YAAY,GAAG,CAAC,GAAG,SAAS,GAAG,aAAa;gBACnG,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,QAAQ,GAAG,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,MAAM,CAAC;aAC5G,CAAC,CAAC,CACN,CACJ;QACL,CAAC,CAAC,EACFe,WAAS,CAAC,IAAI,CAAC,UAAU,CAAC;aAE7B,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,KAAI;AAC/C,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;YAC3B,IAAI,CAAC,OAAO,EAAE;AACV,gBAAA,IAAI,aAAa,KAAK,SAAS,EAAE;AAC7B,oBAAA,IAAI,CAAC,aAAa,GAAG,aAAa;AAClC,oBAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI;gBACtC;AACA,gBAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YACnC;AACJ,QAAA,CAAC,CAAC;IACV;AAEQ,IAAA,cAAc,CAAC,MAAe,EAAA;QAClC,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AAClC,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,OAA4B;QAClD;QACA,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,UAAU,EAAE;AAC1C,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAC/D;QACA,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;IACvC;AAEQ,IAAA,gBAAgB,CAAC,KAAa,EAAA;QAClC,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM;AACxC,QAAA,MAAM,OAAO,GAAG,YAAY,GAAG,CAAC,IAAI,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;AAC3J,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;IACnC;AAEQ,IAAA,iBAAiB,CAAC,OAAc,EAAA;AACpC,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO;AAC7B,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;AACjC,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;AACrE,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;IACzC;IAEQ,aAAa,CAAC,OAAc,EAAE,KAAa,EAAA;QAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,iBAAiB,EAAE;QAC/C,IAAI,CAAC,MAAM,EAAE;AACT,YAAA,OAAO,OAAO;QAClB;QAEA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,EAAE;AAC1C,QAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,KAAI;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC9F,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,KAAK;AAC7H,YAAA,OAAO,QAAQ,IAAI,aAAa,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACpI,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,oBAAoB,CAAC,KAAc,EAAA;AACvC,QAAA,OAAO,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE;IACjE;IAEQ,gCAAgC,GAAA;AACpC,QAAA,IAAI,IAAI,CAAC,sBAAsB,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;YAClF;QACJ;AAEA,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAA6D;QAC7F,IAAI,CAAC,SAAS,EAAE;YACZ;QACJ;AAEA,QAAA,MAAM,4BAA4B,GAAG,SAAS,CAAC,qBAAqB;AACpE,QAAA,SAAS,CAAC,qBAAqB,GAAG,CAAC,KAAa,KAAI;YAChD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE;AAC3C,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;AAC7B,YAAA,MAAM,aAAa,GAAG,MAAM,EAAE,eAAe,EAAE;YAE/C,IAAI,aAAa,EAAE,SAAS,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE;gBAChE,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,SAAS,KAAI;AACrD,oBAAA,MAAM,OAAO,GAAG,SAAS,CAAC,eAAe,EAAE;AAC3C,oBAAA,OAAO,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,6BAA6B,CAAC;AAC5F,gBAAA,CAAC,CAAC;AACF,gBAAA,IAAI,gBAAgB,IAAI,CAAC,IAAI,SAAS,CAAC,WAAW,CAAC,eAAe,KAAK,gBAAgB,EAAE;AACrF,oBAAA,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,gBAAgB,CAAC;gBACzD;gBACA;YACJ;AAEA,YAAA,4BAA4B,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC;AACnD,YAAA,qBAAqB,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;AAClF,QAAA,CAAC;AAED,QAAA,IAAI,CAAC,sBAAsB,GAAG,MAAK;AAC/B,YAAA,SAAS,CAAC,qBAAqB,GAAG,4BAA4B;AAC9D,YAAA,IAAI,CAAC,sBAAsB,GAAG,SAAS;AAC3C,QAAA,CAAC;IACL;AAEQ,IAAA,iBAAiB,CAAC,YAA0B,EAAA;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,aAAwC;AAC/E,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;YAC1D;QACJ;QAEA,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAgB,CAAc,mFAAmF,CAAC;QACxI,IAAI,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAClC,YAAA,KAAK,CAAC,SAAS,GAAG,CAAC;YACnB;QACJ;AACA,QAAA,IAAI,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;AACnD,YAAA,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,YAAY;YACpC;QACJ;AAEA,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,qBAAqB,EAAE;AAC/C,QAAA,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAAc,YAAY,CAAC,IAAI,KAAK,CAAC,aAAa,CAAc,4BAA4B,CAAC;AACpI,QAAA,MAAM,UAAU,GAAG,WAAW,EAAE,qBAAqB,EAAE,CAAC,MAAM,IAAI,SAAS,CAAC,GAAG;AAC/E,QAAA,MAAM,UAAU,GAAG,YAAY,CAAC,qBAAqB,EAAE;AACvD,QAAA,IAAI,UAAU,CAAC,GAAG,GAAG,UAAU,EAAE;YAC7B,KAAK,CAAC,SAAS,IAAI,UAAU,CAAC,GAAG,GAAG,UAAU;QAClD;aAAO,IAAI,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE;YAC7C,KAAK,CAAC,SAAS,IAAI,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM;QAC3D;IACJ;IAEQ,cAAc,GAAA;AAClB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK;QACxD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;AACvC,YAAA,OAAO,EAAE;QACb;AACA,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC;IACjD;AAEQ,IAAA,oBAAoB,CAAC,MAAW,EAAA;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACtB;QACJ;AAEA,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,EAAE;AACpD,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC;AAChF,QAAA,MAAM,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM;AACvH,QAAA,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,KAAK,cAAc,CAAC,MAAM;AACxF,QAAA,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AAClE,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACrE;8GA/XS,uBAAuB,EAAA,IAAA,EAAA,IAAA,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,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAUO,SAAS,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACH,wBAAwB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxJ3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqGT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+CAAA,EAAA,6DAAA,EAAA,uHAAA,EAAA,wFAAA,EAAA,6DAAA,EAAA,wHAAA,EAAA,+FAAA,EAAA,2EAAA,EAAA,kFAAA,EAAA,kMAAA,EAAA,kGAAA,EAAA,uGAAA,EAAA,kJAAA,EAAA,mHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAoBG,YAAY,EAAA,EAAA,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,UAAA,EAAA,IAAA,EACZ,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEnB,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,kBAAkB,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,OAAO,8EACPD,WAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACtB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,gCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,EAAA,0BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,QAAQ,sDACR,SAAS,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,YAAY,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,EACZ,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,8BAA8B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC9B,wBAAwB,yDAfxB,iBAAiB,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;AAkBZ,uBAAuB,GAAA,UAAA,CAAA;IAhJnC,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE;AAgJzB,CAAA,EAAA,uBAAuB,CAgYnC;2FAhYY,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBA/InC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,QAAA,EAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqGT,IAAA,CAAA,EAAA,aAAA,EAiBc,iBAAiB,CAAC,IAAI,EAAA,UAAA,EACzB,IAAI,EAAA,OAAA,EACP;wBACL,YAAY;wBACZ,mBAAmB;wBACnB,iBAAiB;wBACjB,wBAAwB;wBACxB,kBAAkB;wBAClB,OAAO;wBACPO,WAAS;wBACT,sBAAsB;wBACtB,eAAe;wBACf,gBAAgB;wBAChB,SAAS;wBACT,UAAU;wBACV,QAAQ;wBACR,SAAS;wBACT,YAAY;wBACZ,WAAW;wBACX,8BAA8B;wBAC9B,wBAAwB;AAC3B,qBAAA,EAAA,MAAA,EAAA,CAAA,+CAAA,EAAA,6DAAA,EAAA,uHAAA,EAAA,wFAAA,EAAA,6DAAA,EAAA,wHAAA,EAAA,+FAAA,EAAA,2EAAA,EAAA,kFAAA,EAAA,kMAAA,EAAA,kGAAA,EAAA,uGAAA,EAAA,kJAAA,EAAA,mHAAA,CAAA,EAAA;AAYsC,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,SAAS,8FACH,wBAAwB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC9LnE,SAAU,2BAA2B,CAAC,QAAkB,EAAA;IAC1D,OAAO,CAAC,OAAwB,KAAmC;AAC/D,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,KAAK,CAAC,QAAQ;YAAE,OAAO,EAAE,2BAA2B,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE;AAE1I,QAAA,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE;AACnC,YAAA,IAAI,OAAO,CAAC,KAAK,KAAK,EAAE,IAAI,QAAQ;AAAE,gBAAA,OAAO,IAAI;YACjD,OAAO,EAAE,2BAA2B,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE;QACpE;QACA,OAAO,IAAI,CAAA;AACf,IAAA,CAAC;AACL;AAEM,SAAU,2BAA2B,CAAC,YAA2B,EAAE,QAAkB,EAAA;IACvF,OAAO,CAAC,OAAwB,KAAmC;AAC/D,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,KAAK,QAAQ;AAAE,YAAA,OAAO,IAAI;AAC7E,QAAA,IAAI,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;YAC5C,OAAO,IAAI,CAAA;QACf;QACA,OAAO,EAAE,2BAA2B,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE;AACpE,IAAA,CAAC;AACL;;ACtBA;;AAEG;;ACFH;;AAEG;;"}