{"version":3,"file":"synerty-peek-plugin-base-js.mjs","sources":["../../src/components/peek-checkbox/peek-checkbox.component.ts","../../src/components/peek-checkbox/peek-checkbox.component.html","../../src/components/peek-select-input/peek-select-input.component.ts","../../src/components/peek-select-input/peek-select-input.component.html","../../src/components/peek-text-area-input/peek-text-area-input.component.ts","../../src/components/peek-text-area-input/peek-text-area-input.component.html","../../src/components/peek-text-input/peek-text-input.component.ts","../../src/components/peek-text-input/peek-text-input.component.html","../../src/components/peek-components.module.ts","../../src/utils/timezone.util.ts","../../src/pipes/full-date.pipe.ts","../../src/pipes/short-date.pipe.ts","../../src/pipes/time.pipe.ts","../../src/pipes/pipes.module.ts","../../src/pipes/nice-duration.pipe.ts","../../src/components/peek-date-time-picker/peek-date-time-picker.component.ts","../../src/components/peek-date-time-picker/peek-date-time-picker.component.html","../../src/components/admin-panel-header/admin-panel-header.component.ts","../../src/components/admin-panel-header/admin-panel-header.component.html","../../src/modules/balloon-msg/constants/balloon-msg.constants.ts","../../src/modules/balloon-msg/components/item/balloon-msg-item.animations.ts","../../src/modules/balloon-msg/components/item/balloon-msg-item.component.ts","../../src/modules/balloon-msg/components/item/balloon-msg-item.component.html","../../src/modules/balloon-msg/classes/usr-msg-details.ts","../../src/modules/balloon-msg/services/balloon-msg.service.ts","../../src/modules/balloon-msg/components/queue/balloon-msg-queue.component.ts","../../src/modules/balloon-msg/components/queue/balloon-msg-queue.component.html","../../src/modules/balloon-msg/balloon-msg.module.ts","../../src/components/admin-content-wrapper-tuple-data-loader/admin-content-wrapper-tuple-data-loader.component.ts","../../src/components/admin-content-wrapper-tuple-data-loader/admin-content-wrapper-tuple-data-loader.component.html","../../src/components/admin-panel-header-for-tuple-loader-delegate/admin-panel-header-for-tuple-loader-delegate.component.ts","../../src/components/admin-panel-header-for-tuple-loader-delegate/admin-panel-header-for-tuple-loader-delegate.component.html","../../src/constants/util.constants.ts","../../src/services/page-body.service.ts","../../src/services/footer.service.ts","../../src/services/header.service.ts","../../src/services/nav-back.service.ts","../../src/classes/sound.ts","../../src/classes/platform.ts","../../synerty-peek-plugin-base-js.ts"],"sourcesContent":["import { Component } from \"@angular/core\";\n\n@Component({\n    selector: \"peek-checkbox-component\",\n    templateUrl: \"./peek-checkbox.component.html\",\n    styleUrls: [\"./peek-checkbox.component.scss\"],\n})\nexport class PeekCheckboxComponent {\n    constructor() {}\n}\n","","import { Component } from \"@angular/core\";\n\n@Component({\n    selector: \"peek-select-input-component\",\n    templateUrl: \"./peek-select-input.component.html\",\n    styleUrls: [\"./peek-select-input.component.scss\"],\n})\nexport class PeekSelectInputComponent {\n    constructor() {}\n}\n","","import { Component } from \"@angular/core\";\n\n@Component({\n    selector: \"peek-text-area-input-component\",\n    templateUrl: \"./peek-text-area-input.component.html\",\n    styleUrls: [\"./peek-text-area-input.component.scss\"],\n})\nexport class PeekTextAreaInputComponent {\n    constructor() {}\n}\n","","import { Component } from \"@angular/core\";\n\n@Component({\n    selector: \"peek-text-input-component\",\n    templateUrl: \"./peek-text-input.component.html\",\n    styleUrls: [\"./peek-text-input.component.scss\"],\n})\nexport class PeekTextInputComponent {\n    constructor() {}\n}\n","","import { NgModule } from \"@angular/core\";\nimport { BrowserModule } from \"@angular/platform-browser\";\nimport { RouterModule } from \"@angular/router\";\nimport { FormsModule } from \"@angular/forms\";\nimport { PeekCheckboxComponent } from \"./peek-checkbox\";\nimport { PeekSelectInputComponent } from \"./peek-select-input\";\nimport { PeekTextAreaInputComponent } from \"./peek-text-area-input\";\nimport { PeekTextInputComponent } from \"./peek-text-input\";\n\nconst COMPONENTS = [\n    PeekCheckboxComponent,\n    PeekSelectInputComponent,\n    PeekTextAreaInputComponent,\n    PeekTextInputComponent,\n];\n\n@NgModule({\n    declarations: COMPONENTS,\n    imports: [RouterModule, FormsModule, BrowserModule],\n    exports: COMPONENTS,\n})\nexport class PeekComponentsModule {}\n","export function localTimezoneAsOfDate(date: Date): string {\n    // generate a timezone offset in format of [+-]HHMM for DatePipe,\n    //  regardless of timzone shifts.\n\n    // e.g. if current timzone is +1200, a date object 14:00+1300 generates\n    //       a timezone of +1400 for display as 15:00 through datePipe;\n    //      if current timezone is same as the timezone of the date object,\n    //       original timezone of the date object is generated\n    const recordedDate = date;\n\n    const dateNow = new Date();\n\n    const timezoneOffsetDiff =\n        recordedDate.getTimezoneOffset() - dateNow.getTimezoneOffset();\n    let timezone = recordedDate.getTimezoneOffset() + timezoneOffsetDiff;\n\n    timezone = -timezone;\n\n    const hour = Math.floor(timezone / 60).toString();\n    const minute = Math.floor(timezone % 60).toString();\n    const sign = timezone > 0 ? \"+\" : \"-\";\n\n    return `${sign}${hour.padStart(2, \"0\")}${minute.padStart(2, \"0\")}`;\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { DatePipe } from \"@angular/common\";\nimport { localTimezoneAsOfDate } from \"../utils\";\n\n@Pipe({ name: \"fullDate\", standalone: true })\nexport class FullDatePipe implements PipeTransform {\n    constructor(private datePipe: DatePipe) {}\n\n    transform(value: Date | string | undefined | null): string {\n        if (!value) {\n            return \"\";\n        }\n        const date = value instanceof Date ? value : new Date(value);\n\n        return this.datePipe.transform(\n            value,\n            \"HH:mm, EE, dd MMM y\",\n            localTimezoneAsOfDate(date),\n        );\n    }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { DatePipe } from \"@angular/common\";\nimport { localTimezoneAsOfDate } from \"../utils\";\n\n@Pipe({ name: \"shortDate\", standalone: true })\nexport class ShortDatePipe implements PipeTransform {\n    constructor(private datePipe: DatePipe) {}\n\n    transform(value: Date | string | undefined | null): string {\n        if (!value) {\n            return \"\";\n        }\n        const date = value instanceof Date ? value : new Date(value);\n\n        return this.datePipe.transform(\n            value,\n            \"EE, dd MMM y\",\n            localTimezoneAsOfDate(date),\n        );\n    }\n}\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { DatePipe } from \"@angular/common\";\nimport { localTimezoneAsOfDate } from \"../utils\";\n\n@Pipe({ name: \"time\", standalone: true })\nexport class TimePipe implements PipeTransform {\n    constructor(private datePipe: DatePipe) {}\n\n    transform(value: Date | string | undefined | null): string {\n        if (!value) {\n            return \"\";\n        }\n        const date = new Date(value);\n        return this.datePipe.transform(\n            value,\n            \"HH:mm\",\n            localTimezoneAsOfDate(date),\n        );\n    }\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule, DatePipe } from \"@angular/common\";\nimport { FullDatePipe } from \"./full-date.pipe\";\nimport { ShortDatePipe } from \"./short-date.pipe\";\nimport { TimePipe } from \"./time.pipe\";\n\nconst PIPES = [FullDatePipe, ShortDatePipe, TimePipe];\n\n@NgModule({\n    imports: [CommonModule, PIPES],\n    providers: [DatePipe],\n    exports: PIPES,\n})\nexport class PipesModule {}\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\nexport function makeNiceDurationFromSeconds(\n    durationInSeconds: number,\n    long: boolean = false,\n    showSeconds: boolean = true,\n    showMilliSeconds: boolean = false,\n): string {\n    if (durationInSeconds == null) return \"unknown time\";\n\n    durationInSeconds = Math.abs(durationInSeconds);\n    const secondsWithMs = Math.round((durationInSeconds % 60) * 1000) / 1000;\n    const seconds = Math.round((durationInSeconds % 60) * 10) / 10;\n    const minutes = Math.floor((durationInSeconds % 3600) / 60);\n    const hours = Math.floor(durationInSeconds / 3600);\n\n    const str: string[] = [];\n    if (hours) str.push(hours + (long ? \" hours \" : \"h\"));\n\n    if (minutes || str.length) str.push(minutes + (long ? \" minutes \" : \"m\"));\n\n    if (showSeconds) {\n        // Don't show milliseconds if we have minutes\n        if (minutes === 0 && showMilliSeconds) {\n            str.push(secondsWithMs + (long ? \" seconds \" : \"s\"));\n        } else {\n            str.push(seconds + (long ? \" seconds \" : \"s\"));\n        }\n    }\n\n    return str.join(\", \");\n}\n\n@Pipe({\n    name: \"niceDuration\",\n})\nexport class NiceDurationPipe implements PipeTransform {\n    transform(durationInSeconds: number): string {\n        return makeNiceDurationFromSeconds(durationInSeconds);\n    }\n}\n\n@Pipe({\n    name: \"niceDurationMS\",\n})\nexport class NiceDurationMsPipe implements PipeTransform {\n    transform(durationInSeconds: number): string {\n        return makeNiceDurationFromSeconds(\n            durationInSeconds,\n            false,\n            true,\n            true,\n        );\n    }\n}\n","import { Component, forwardRef, Input } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { NgZorroAntdMobileModule } from \"ng-zorro-antd-mobile\";\nimport { FormsModule, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { NzModalModule } from \"ng-zorro-antd/modal\";\nimport { NzButtonModule } from \"ng-zorro-antd/button\";\nimport { FullDatePipe, ShortDatePipe, TimePipe } from \"../../pipes\";\n\n@Component({\n    imports: [\n        CommonModule,\n        FormsModule,\n        NzModalModule,\n        NzButtonModule,\n        NgZorroAntdMobileModule,\n    ],\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => PeekDateTimePickerComponent),\n            multi: true,\n        },\n        TimePipe,\n        ShortDatePipe,\n        FullDatePipe,\n    ],\n    standalone: true,\n    selector: \"peek-date-time-picker\",\n    templateUrl: \"./peek-date-time-picker.component.html\",\n    styleUrls: [\"./peek-date-time-picker.component.scss\"],\n})\nexport class PeekDateTimePickerComponent {\n    @Input() editDate: boolean = true;\n    @Input() editTime: boolean = true;\n    @Input() debugValue: string | null = null;\n\n    isVisible = false;\n    years: number[] = [];\n    months: string[] = [\n        \"Jan\",\n        \"Feb\",\n        \"Mar\",\n        \"Apr\",\n        \"May\",\n        \"Jun\",\n        \"Jul\",\n        \"Aug\",\n        \"Sep\",\n        \"Oct\",\n        \"Nov\",\n        \"Dec\",\n    ];\n    days: number[] = [];\n    hours: string[] = [];\n    minutes: string[] = [];\n\n    selectedYear: number[] = [new Date().getFullYear()];\n    selectedMonth: string[] = [this.months[new Date().getMonth()]];\n    selectedDay: number[] = [new Date().getDate()];\n    selectedHour: string[] = [\"00\"];\n    selectedMinute: string[] = [\"00\"];\n\n    private onChangeCallback: (value: Date) => void = () => {};\n    private onTouchedCallback: () => void = () => {};\n\n    initialValue: Date | null = null;\n    disabled = false;\n\n    constructor(\n        private timePipe: TimePipe,\n        private shortDatePipe: ShortDatePipe,\n        private fullDatePipe: FullDatePipe,\n    ) {\n        this.generateOptions();\n    }\n\n    generateOptions() {\n        const currentYear = new Date().getFullYear();\n        this.years = Array.from({ length: 10 }, (_, i) => currentYear + i);\n        this.days = Array.from({ length: 31 }, (_, i) => i + 1);\n        this.hours = Array.from({ length: 24 }, (_, i) =>\n            i.toString().padStart(2, \"0\"),\n        );\n        this.minutes = Array.from({ length: 60 }, (_, i) =>\n            i.toString().padStart(2, \"0\"),\n        );\n    }\n\n    showModal(): void {\n        this.initialValue = this.getSelectedDateTime();\n        this.isVisible = true;\n    }\n\n    modalTitle(): string {\n        if (this.editTime && !this.editDate) {\n            return \"Select Time\";\n        }\n        if (!this.editTime && this.editDate) {\n            return \"Select Date\";\n        }\n        return \"Select Date and Time\";\n    }\n\n    handleCancel(): void {\n        if (this.initialValue) {\n            this.writeValue(this.initialValue);\n            this.onChangeCallback(this.initialValue);\n        }\n        this.onTouchedCallback();\n        this.isVisible = false;\n    }\n\n    onChange() {}\n\n    handleOk(): void {\n        const selectedDateTime = this.getSelectedDateTime();\n        this.initialValue = selectedDateTime;\n        this.resetToCurrentDate(selectedDateTime);\n        this.onChangeCallback(selectedDateTime);\n        this.onTouchedCallback();\n        this.isVisible = false;\n    }\n\n    // Updated to return a Date object\n    getSelectedDateTime(): Date {\n        return new Date(\n            this.selectedYear[0],\n            this.months.indexOf(this.selectedMonth[0]),\n            this.selectedDay[0],\n            parseInt(this.selectedHour[0]),\n            parseInt(this.selectedMinute[0]),\n        );\n    }\n\n    getFormattedDateTime(date: Date): string {\n        if (this.editTime && !this.editDate) {\n            return this.timePipe.transform(date);\n        }\n        if (!this.editTime && this.editDate) {\n            return this.shortDatePipe.transform(date);\n        }\n        return this.fullDatePipe.transform(date);\n    }\n\n    writeValue(value: Date | null): void {\n        if (!value) {\n            this.resetToCurrentDate(new Date());\n            return;\n        }\n\n        if (!(value instanceof Date)) {\n            throw new Error(`ERROR: Expected Date, got ${value}`);\n        }\n\n        this.initialValue = value;\n        this.resetToCurrentDate(value);\n    }\n\n    // Add a method to reset to current date\n    private resetToCurrentDate(now: Date): void {\n        this.selectedYear = [now.getFullYear()];\n        this.selectedMonth = [this.months[now.getMonth()]];\n        this.selectedDay = [now.getDate()];\n        this.selectedHour = [now.getHours().toString().padStart(2, \"0\")];\n        this.selectedMinute = [now.getMinutes().toString().padStart(2, \"0\")];\n    }\n\n    registerOnChange(fn: (value: Date) => void): void {\n        this.onChangeCallback = fn;\n    }\n\n    registerOnTouched(fn: () => void): void {\n        this.onTouchedCallback = fn;\n    }\n\n    setDisabledState?(isDisabled: boolean): void {\n        this.disabled = isDisabled;\n    }\n}\n","<button [disabled]=\"disabled\" nz-button (click)=\"showModal()\">\n    {{ debugValue ? debugValue : getFormattedDateTime(initialValue) }}\n</button>\n\n<nz-modal\n    [(nzVisible)]=\"isVisible\"\n    [nzTitle]=\"modalTitle()\"\n    (nzOnCancel)=\"handleCancel()\"\n    (nzOnOk)=\"handleOk()\"\n>\n    <ng-container *nzModalContent>\n        <div class=\"picker-container\">\n            <PickerView\n                *ngIf=\"editDate\"\n                [data]=\"days\"\n                [(ngModel)]=\"selectedDay\"\n                (ngModelChange)=\"onChange()\"\n            ></PickerView>\n            <PickerView\n                *ngIf=\"editDate\"\n                [data]=\"months\"\n                [(ngModel)]=\"selectedMonth\"\n                (ngModelChange)=\"onChange()\"\n            ></PickerView>\n            <PickerView\n                *ngIf=\"editDate\"\n                [data]=\"years\"\n                [(ngModel)]=\"selectedYear\"\n                (ngModelChange)=\"onChange()\"\n            ></PickerView>\n            <PickerView\n                *ngIf=\"editTime\"\n                [data]=\"hours\"\n                [(ngModel)]=\"selectedHour\"\n                (ngModelChange)=\"onChange()\"\n            ></PickerView>\n            <PickerView\n                *ngIf=\"editTime\"\n                [data]=\"minutes\"\n                [(ngModel)]=\"selectedMinute\"\n                (ngModelChange)=\"onChange()\"\n            ></PickerView>\n        </div>\n        <div class=\"centered-text\">\n            {{ getFormattedDateTime(getSelectedDateTime()) }}\n        </div>\n    </ng-container>\n</nz-modal>\n","import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    Input,\n    OnInit,\n} from \"@angular/core\";\nimport { BehaviorSubject, combineLatest } from \"rxjs\";\nimport { NzButtonModule } from \"ng-zorro-antd/button\";\nimport { CommonModule } from \"@angular/common\";\nimport { NzIconModule } from \"ng-zorro-antd/icon\";\nimport { NzPopconfirmModule } from \"ng-zorro-antd/popconfirm\";\nimport { NzDropDownModule } from \"ng-zorro-antd/dropdown\";\nimport { NzSpinModule } from \"ng-zorro-antd/spin\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { NgLifeCycleEvents } from \"@synerty/vortexjs\";\nimport { NzTypographyModule } from \"ng-zorro-antd/typography\";\n\nexport type ReusablePanelButtonCallable = () => Promise<void>;\nexport type ReusablePanelCancelCallable = () => void;\n\n@Component({\n    selector: \"peek-admin-panel-header\",\n    templateUrl: \"./admin-panel-header.component.html\",\n    styleUrls: [\"./admin-panel-header.component.less\"],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true,\n    imports: [\n        NzButtonModule,\n        CommonModule,\n        NzIconModule,\n        NzPopconfirmModule,\n        NzDropDownModule,\n        NzSpinModule,\n        NzTypographyModule,\n    ],\n})\nexport class AdminPanelHeaderComponent\n    extends NgLifeCycleEvents\n    implements OnInit, AfterViewInit\n{\n    @Input()\n    title: string;\n\n    @Input()\n    manageIndicators: boolean = true;\n\n    @Input()\n    showDeleteStandalone$ = new BehaviorSubject<boolean>(false);\n\n    @Input()\n    modalLayout: boolean = false;\n\n    // Create button\n    @Input()\n    createButtonText: string = \"Create\";\n    @Input()\n    createButtonIcon: string = \"plus\";\n    @Input()\n    createClickedCallable: null | ReusablePanelButtonCallable;\n    @Input()\n    createButtonVisible$ = new BehaviorSubject<boolean>(false);\n    @Input()\n    createButtonLoading$ = new BehaviorSubject<boolean>(false);\n    @Input()\n    createButtonDisabled$ = new BehaviorSubject<boolean>(false);\n\n    // Cancel button\n    @Input()\n    cancelButtonText: string = \"Cancel\";\n    @Input()\n    cancelButtonIcon: string = \"close\";\n    @Input()\n    cancelClickedCallable: null | ReusablePanelCancelCallable;\n    @Input()\n    cancelButtonVisible$ = new BehaviorSubject<boolean>(false);\n    @Input()\n    cancelButtonLoading$ = new BehaviorSubject<boolean>(false);\n    @Input()\n    cancelButtonDisabled$ = new BehaviorSubject<boolean>(false);\n\n    // Store button\n    @Input()\n    storeButtonText: string = \"Save\";\n    @Input()\n    storeClickedCallable: null | ReusablePanelButtonCallable;\n    @Input()\n    storeButtonVisible$ = new BehaviorSubject<boolean>(true);\n    @Input()\n    storeButtonLoading$ = new BehaviorSubject<boolean>(false);\n    @Input()\n    storeButtonDisabled$ = new BehaviorSubject<boolean>(false);\n\n    // Revert button\n    @Input()\n    revertButtonText: string = \"Revert\";\n    @Input()\n    revertClickedCallable: null | ReusablePanelButtonCallable;\n    @Input()\n    revertButtonVisible$ = new BehaviorSubject<boolean>(false);\n    @Input()\n    revertButtonLoading$ = new BehaviorSubject<boolean>(false);\n    @Input()\n    revertButtonDisabled$ = new BehaviorSubject<boolean>(false);\n\n    // Reset button\n    @Input()\n    deleteButtonText: string = \"Delete\";\n    @Input()\n    deleteClickedCallable: null | ReusablePanelButtonCallable;\n    @Input()\n    deleteButtonVisible$ = new BehaviorSubject<boolean>(true);\n    @Input()\n    deleteButtonLoading$ = new BehaviorSubject<boolean>(false);\n    @Input()\n    deleteButtonDisabled$ = new BehaviorSubject<boolean>(false);\n\n    readonly showDropDownIcon$ = new BehaviorSubject<boolean>(true);\n\n    constructor(private elementRef: ElementRef) {\n        super();\n    }\n\n    override ngAfterViewInit() {\n        super.ngAfterViewInit();\n        this.checkSize();\n\n        const hostElem = this.elementRef.nativeElement;\n        const resizeObserver = new ResizeObserver(() => this.checkSize());\n        resizeObserver.observe(hostElem);\n        this.onDestroyEvent.subscribe(() => resizeObserver.disconnect());\n    }\n\n    private checkSize() {\n        const componentWidth = this.elementRef.nativeElement.offsetWidth;\n\n        if (this.modalLayout || componentWidth < 600) {\n            // Do something or set some variable based on component width.\n            // Alternatively, you can add a CSS class\n            this.elementRef.nativeElement.classList.add(\"header-thin\");\n            this.elementRef.nativeElement.classList.remove(\"header-wide\");\n        } else {\n            this.elementRef.nativeElement.classList.add(\"header-wide\");\n            this.elementRef.nativeElement.classList.remove(\"header-thin\");\n        }\n    }\n\n    override ngOnInit(): void {\n        combineLatest([\n            this.showDeleteStandalone$,\n            this.deleteButtonVisible$,\n            this.revertButtonVisible$,\n        ])\n            .pipe(takeUntil(this.onDestroyEvent))\n            .subscribe(([deleteStandalone, deleteVisible, revertVisible]) => {\n                this.showDropDownIcon$.next(\n                    (!deleteStandalone && deleteVisible) || revertVisible,\n                );\n            });\n    }\n\n    private resetButtons(): void {\n        this.createButtonLoading$.next(false);\n        this.createButtonDisabled$.next(false);\n\n        this.storeButtonLoading$.next(false);\n        this.storeButtonDisabled$.next(false);\n\n        this.revertButtonLoading$.next(false);\n        this.revertButtonDisabled$.next(false);\n\n        this.deleteButtonLoading$.next(false);\n        this.deleteButtonDisabled$.next(false);\n    }\n\n    async _createClicked(): Promise<void> {\n        if (!this.manageIndicators) {\n            await this.createClickedCallable();\n        } else {\n            try {\n                this.createButtonLoading$.next(true);\n                this.storeButtonDisabled$.next(true);\n                this.revertButtonDisabled$.next(true);\n                this.deleteButtonDisabled$.next(true);\n                await this.createClickedCallable();\n            } finally {\n                this.resetButtons();\n            }\n        }\n    }\n\n    _cancelClicked(): void {\n        this.cancelClickedCallable();\n    }\n\n    async _resetClicked(): Promise<void> {\n        if (!this.manageIndicators) {\n            await this.revertClickedCallable();\n        } else {\n            try {\n                this.createButtonDisabled$.next(true);\n                this.storeButtonDisabled$.next(true);\n                this.revertButtonLoading$.next(true);\n                this.deleteButtonDisabled$.next(true);\n                await this.revertClickedCallable();\n            } finally {\n                this.resetButtons();\n            }\n        }\n    }\n\n    async _storeClicked(): Promise<void> {\n        if (!this.manageIndicators) {\n            await this.storeClickedCallable();\n        } else {\n            try {\n                this.createButtonDisabled$.next(true);\n                this.storeButtonLoading$.next(true);\n                this.revertButtonDisabled$.next(true);\n                this.deleteButtonDisabled$.next(true);\n                await this.storeClickedCallable();\n            } finally {\n                this.resetButtons();\n            }\n        }\n    }\n\n    async _deleteClicked(): Promise<void> {\n        if (!this.manageIndicators) {\n            await this.deleteClickedCallable();\n        } else {\n            try {\n                this.createButtonDisabled$.next(true);\n                this.storeButtonDisabled$.next(true);\n                this.revertButtonDisabled$.next(true);\n                this.deleteButtonLoading$.next(true);\n                await this.deleteClickedCallable();\n            } finally {\n                this.resetButtons();\n            }\n        }\n    }\n}\n","<p nz-typography\n   nzEllipsis class=\"text-left\">\n    {{ title }}\n</p>\n\n<div class=\"text-left grow\"></div>\n\n<nz-button-group>\n    <button\n        *ngIf=\"storeButtonVisible$ | async\"\n        (click)=\"_storeClicked()\"\n        nz-button\n        nzType=\"primary\"\n        [nzLoading]=\"storeButtonLoading$ | async\"\n        [disabled]=\"storeButtonDisabled$ | async\"\n    >\n        <i nz-icon nzType=\"save\" nzTheme=\"outline\"></i>\n        <span>{{ storeButtonText }}</span>\n    </button>\n\n    <button\n        *ngIf=\"createButtonVisible$ | async\"\n        (click)=\"_createClicked()\"\n        nz-button\n        nzType=\"primary\"\n        [nzLoading]=\"createButtonLoading$ | async\"\n        [disabled]=\"createButtonDisabled$ | async\"\n    >\n        <i nz-icon [nzType]=\"createButtonIcon\" nzTheme=\"outline\"></i>\n        <span>{{ createButtonText }}</span>\n    </button>\n\n    <button\n        *ngIf=\"cancelButtonVisible$ | async\"\n        (click)=\"_cancelClicked()\"\n        nz-button\n        [nzLoading]=\"cancelButtonLoading$ | async\"\n        [disabled]=\"cancelButtonDisabled$ | async\"\n    >\n        <i nz-icon [nzType]=\"cancelButtonIcon\" nzTheme=\"outline\"></i>\n        <span>{{ cancelButtonText }}</span>\n    </button>\n    <button\n        *ngIf=\"(deleteButtonVisible$ | async)\n                        && (showDeleteStandalone$ | async)\"\n        nz-popconfirm\n        nzPopconfirmTitle=\"Are you sure?\"\n        (nzOnConfirm)=\"_deleteClicked()\"\n        nzPopconfirmPlacement=\"bottom\"\n        nz-button\n        [disabled]=\"deleteButtonDisabled$ | async\"\n        [nzLoading]=\"deleteButtonLoading$ | async\"\n    >\n        <i nz-icon nzType=\"delete\"></i>\n        <span>Delete</span>\n    </button>\n\n    <button *ngIf=\"showDropDownIcon$ | async\"\n            nz-button nz-dropdown\n            nzTrigger=\"click\"\n            [nzDropdownMenu]=\"lowUsageButtonsMenu\"\n            nzPlacement=\"bottomRight\">\n        <span nz-icon nzType=\"ellipsis\"></span>\n    </button>\n\n    <nz-dropdown-menu #lowUsageButtonsMenu=\"nzDropdownMenu\">\n        <ul nz-menu>\n            <li\n                nz-menu-item\n                *ngIf=\"revertButtonVisible$ | async\"\n                (click)=\"_resetClicked()\"\n                [nzDisabled]=\"revertButtonDisabled$ | async\"\n            >\n                <i nz-icon nzType=\"undo\" nzTheme=\"outline\"\n                   [nzSpin]=\"revertButtonLoading$ | async\"></i>\n                <span>&nbsp;{{ revertButtonText }}</span>\n            </li>\n            <li\n                nz-menu-item\n                *ngIf=\"(deleteButtonVisible$ | async)\n                        && !(showDeleteStandalone$ | async)\"\n                nz-popconfirm\n                nzPopconfirmTitle=\"Are you sure?\"\n                (nzOnConfirm)=\"_deleteClicked()\"\n                nzPopconfirmPlacement=\"bottom\"\n                [nzDisabled]=\"deleteButtonDisabled$ | async\"\n            >\n                <i nz-icon nzType=\"delete\" nzTheme=\"outline\"\n                   [nzSpin]=\"deleteButtonLoading$ | async\"></i>\n                <span>&nbsp;{{ deleteButtonText }}</span>\n            </li>\n        </ul>\n    </nz-dropdown-menu>\n</nz-button-group>\n\n<div class=\"text-right grow\"></div>\n\n<p nz-typography\n   nzEllipsis class=\"text-right\">\n    {{ title }}\n</p>\n<span *ngIf=\"\n            (title?.length || 0) !== 0\n            || (createButtonVisible$ | async)\n            || (storeButtonVisible$ | async)\n            || (revertButtonVisible$ | async)\n            || (deleteButtonVisible$ | async)\n            || (cancelButtonVisible$ | async)\n        \"\n      class=\"keep-height attune-shared-panel-header\">&nbsp;</span>\n\n","export enum BalloonMsgLevel {\n    Error = 1,\n    Warning = 2,\n    Info = 4,\n    Success = 8,\n}\n\nexport enum BalloonMsgType {\n    Fleeting = 1,\n    Sticky = 2,\n    Confirm = 4,\n    ConfirmCancel = 8,\n}\n\nexport enum BalloonMsgClickType {\n    BalloonMsgClicked = 1,\n    PopupOpenButtonClicked = 2,\n    DiagramConfirmButtonClicked = 4,\n    DiagramCancelButtonClicked = 8,\n}\n","import {\n    animate,\n    state,\n    style,\n    transition,\n    trigger,\n} from \"@angular/animations\";\n\nexport const balloonMsgItemAnimations = [\n    trigger(\"msgPopup\", [\n        state(\n            \"void\",\n            style({\n                opacity: 0,\n                transform: \"scale(2)\",\n            }),\n        ),\n        state(\n            \"shown\",\n            style({\n                opacity: 1,\n                transform: \"scale(1)\",\n            }),\n        ),\n        state(\n            \"hidden\",\n            style({\n                opacity: 0,\n                transform: \"scale(0)\",\n            }),\n        ),\n        transition(\"* => *\", animate(\"500ms\")),\n    ]),\n    trigger(\"msgDialog\", [\n        state(\n            \"void\",\n            style({\n                opacity: 0,\n            }),\n        ),\n        state(\n            \"shown\",\n            style({\n                opacity: 1,\n            }),\n        ),\n        state(\n            \"hidden\",\n            style({\n                opacity: 0,\n            }),\n        ),\n        transition(\"* => *\", animate(\"500ms\")),\n    ]),\n];\n","import { AfterViewInit, Component, Inject, Input } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\nimport { UsrMsgDetails } from \"../../classes\";\nimport { balloonMsgItemAnimations } from \"./balloon-msg-item.animations\";\nimport { BehaviorSubject } from \"rxjs\";\nimport { BalloonMsgClickType } from \"../../constants/balloon-msg.constants\";\n\n@Component({\n    selector: \"balloon-msg-item-component\",\n    templateUrl: \"./balloon-msg-item.component.html\",\n    animations: balloonMsgItemAnimations,\n    styleUrls: [\"./balloon-msg-item.component.scss\"],\n})\nexport class BalloonMsgItemComponent implements AfterViewInit {\n    @Input()\n    msgDetails: UsrMsgDetails;\n\n    afterViewInit$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(\n        false,\n    );\n\n    shown: boolean = true;\n    shownStr: string = \"shown\";\n\n    // in ms, The time it takes for change of animation state\n    protected readonly animationDuration = 500;\n\n    // in ms, The time it takes before it fades out\n    protected readonly showDuration = 2000;\n\n    // in ms, The time to wait before expiring the message\n    protected readonly expireDuration = 3000; // showDuration + fade in/out time\n\n    // in ms, Additional time to show the message for if it has a route\n    protected readonly withRouteDuration = 2000;\n\n    constructor(@Inject(Router) public router) {}\n\n    ngOnInit() {\n        let expireDuration = this.msgDetails.hasRoute()\n            ? this.expireDuration + this.withRouteDuration\n            : this.expireDuration;\n\n        let showDuration = this.msgDetails.hasRoute()\n            ? this.showDuration + this.withRouteDuration\n            : this.showDuration;\n\n        // Hide the message after a certain period.\n        if (this.msgDetails.isFleeting()) {\n            setTimeout(() => {\n                this.shown = false;\n                this.shownStr = \"hidden\";\n            }, showDuration);\n\n            setTimeout(() => {\n                this.msgDetails.expired = true;\n            }, expireDuration);\n        }\n    }\n\n    ngAfterViewInit() {\n        setTimeout(() => this.afterViewInit$.next(true), 100);\n    }\n\n    msgClicked(): void {\n        this.msgDetails.expired = true;\n        setTimeout(() => {\n            this.msgDetails.resolve(BalloonMsgClickType.BalloonMsgClicked);\n        }, this.animationDuration + 100);\n    }\n\n    openClicked(): void {\n        this.msgDetails.expired = true;\n        this.router.navigate([this.msgDetails.routePath]);\n        setTimeout(() => {\n            this.msgDetails.resolve(BalloonMsgClickType.PopupOpenButtonClicked);\n        }, this.animationDuration + 100);\n    }\n\n    confirmClicked(): void {\n        this.shownStr = \"hidden\";\n        // Add 100ms to allow animations to complete\n        setTimeout(() => {\n            this.msgDetails.resolve(\n                BalloonMsgClickType.DiagramConfirmButtonClicked,\n            );\n            this.msgDetails.expired = true;\n            this.shown = false;\n\n            // Route when they click ok\n            if (this.msgDetails.hasRoute())\n                this.router.navigate([this.msgDetails.routePath]);\n        }, this.animationDuration + 100);\n    }\n\n    cancelClicked(): void {\n        this.shownStr = \"hidden\";\n        setTimeout(() => {\n            this.msgDetails.reject(\n                BalloonMsgClickType.DiagramCancelButtonClicked,\n            );\n            this.msgDetails.expired = true;\n            this.shown = false;\n        }, this.animationDuration + 100);\n    }\n}\n","<div>\n    <div\n        *ngIf=\"msgDetails.isFleeting() || msgDetails.isSticky()\"\n        [@msgPopup]=\"shownStr\"\n    >\n        <div (click)=\"msgClicked()\">\n            <div\n                class=\"alert\"\n                [class.alert-success]=\"msgDetails.isSuccess()\"\n                [class.alert-info]=\"msgDetails.isInfo()\"\n                [class.alert-warning]=\"msgDetails.isWarning()\"\n                [class.alert-danger]=\"msgDetails.isError()\"\n            >\n                <span style=\"white-space: pre-wrap\"\n                    >{{ msgDetails.msg }}\n                    <Button\n                        *ngIf=\"msgDetails.hasRoute()\"\n                        class=\"btn invisible\"\n                        type=\"button\"\n                        >&nbsp;</Button\n                    >\n                    <Button\n                        *ngIf=\"msgDetails.hasRoute()\"\n                        class=\"btn pull-right\"\n                        type=\"button\"\n                        (click)=\"openClicked()\"\n                        >Open</Button\n                    ></span\n                >\n            </div>\n        </div>\n    </div>\n\n    <div *ngIf=\"msgDetails.isConfirm() || msgDetails.isConfirmCancel()\">\n        <div\n            class=\"modal\"\n            [class.bg-success]=\"msgDetails.isSuccess()\"\n            [class.bg-info]=\"msgDetails.isInfo()\"\n            [class.bg-warning]=\"msgDetails.isWarning()\"\n            [class.bg-danger]=\"msgDetails.isError()\"\n            [class.show]=\"afterViewInit$ | async\"\n            id=\"BalloonMsg{{ msgDetails.msgId }}\"\n            tabindex=\"-1\"\n            role=\"dialog\"\n            [@msgDialog]=\"shownStr\"\n            data-backdrop=\"false\"\n            data-keyboard=\"false\"\n            data-show=\"true\"\n        >\n            <div class=\"modal-dialog panel\" role=\"document\">\n                <div class=\"modal-content\">\n                    <div\n                        class=\"modal-header\"\n                        *ngIf=\"msgDetails.dialogTitle != null\"\n                    >\n                        <h4 class=\"modal-title\">\n                            {{ msgDetails.dialogTitle }}\n                        </h4>\n                    </div>\n                    <div class=\"modal-body\">\n                        <p style=\"white-space: pre-wrap\">\n                            {{ msgDetails.msg }}\n                        </p>\n                    </div>\n                    <div class=\"modal-footer\">\n                        <button\n                            *ngIf=\"msgDetails.isConfirmCancel()\"\n                            (click)=\"cancelClicked()\"\n                            type=\"button\"\n                            class=\"btn\"\n                        >\n                            {{ msgDetails.cancelText }}\n                        </button>\n                        <button\n                            type=\"button\"\n                            class=\"btn btn-primary\"\n                            (click)=\"confirmClicked()\"\n                        >\n                            {{ msgDetails.confirmText }}\n                        </button>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n","import {\n    BalloonMsgLevel,\n    BalloonMsgType,\n    BalloonMsgClickType,\n} from \"../constants\";\n\nexport class UsrMsgDetails {\n    private static nextMsgId = 1;\n\n    msgId: number;\n    expired: boolean = false;\n    promise: Promise<BalloonMsgClickType> | null = null;\n\n    private rejector: any = null;\n    private resolver: any = null;\n\n    constructor(\n        public msg: string,\n        public level: BalloonMsgLevel,\n        public type: BalloonMsgType,\n        public confirmText: string | null = null,\n        public cancelText: string | null = null,\n        public dialogTitle: string | null = null,\n        public routePath: string | null = null,\n    ) {\n        this.msgId = UsrMsgDetails.nextMsgId++;\n\n        if (this.confirmText == null) this.confirmText = \"Confirm\";\n\n        if (this.cancelText == null) this.cancelText = \"Cancel\";\n\n        this.promise = new Promise<BalloonMsgClickType>(\n            (resolver, rejector) => {\n                this.resolver = resolver;\n                this.rejector = rejector;\n            },\n        );\n    }\n\n    // Level\n    isSuccess() {\n        return this.level === BalloonMsgLevel.Success;\n    }\n\n    isInfo() {\n        return this.level === BalloonMsgLevel.Info;\n    }\n\n    isWarning() {\n        return this.level === BalloonMsgLevel.Warning;\n    }\n\n    isError() {\n        return this.level === BalloonMsgLevel.Error;\n    }\n\n    // Type\n    isFleeting() {\n        return this.type === BalloonMsgType.Fleeting;\n    }\n\n    isSticky() {\n        return this.type === BalloonMsgType.Sticky;\n    }\n\n    isConfirm() {\n        return this.type === BalloonMsgType.Confirm;\n    }\n\n    isConfirmCancel() {\n        return this.type === BalloonMsgType.ConfirmCancel;\n    }\n\n    // Other\n    isModal() {\n        return this.isConfirm() || this.isConfirmCancel();\n    }\n\n    hasRoute() {\n        return this.routePath != null;\n    }\n\n    resolve(balloonMsgClickType: BalloonMsgClickType) {\n        if (this.resolver != null) this.resolver(balloonMsgClickType);\n    }\n\n    reject(balloonMsgClickType: BalloonMsgClickType) {\n        if (this.rejector != null) this.rejector(balloonMsgClickType);\n    }\n}\n","import { Injectable } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { UsrMsgDetails } from \"../classes\";\nimport {\n    BalloonMsgLevel,\n    BalloonMsgType,\n    BalloonMsgClickType,\n} from \"../constants\";\nimport { IBalloonMsgParams } from \"../models\";\n\n@Injectable({\n    providedIn: \"root\",\n})\nexport class BalloonMsgService {\n    private observable: Subject<UsrMsgDetails>;\n\n    constructor() {\n        this.observable = new Subject<UsrMsgDetails>();\n    }\n\n    getObservable() {\n        return this.observable;\n    }\n\n    showError(msg: string, routePath?: string | null): void {\n        if (!(msg || \"\").trim().length) return;\n\n        this.observable.next(\n            new UsrMsgDetails(\n                msg,\n                BalloonMsgLevel.Error,\n                BalloonMsgType.Sticky,\n                null,\n                null,\n                null,\n                routePath,\n            ),\n        );\n    }\n\n    showWarning(msg: string, routePath?: string | null): void {\n        if (!(msg || \"\").trim().length) return;\n\n        this.observable.next(\n            new UsrMsgDetails(\n                msg,\n                BalloonMsgLevel.Warning,\n                BalloonMsgType.Fleeting,\n                null,\n                null,\n                null,\n                routePath,\n            ),\n        );\n    }\n\n    showInfo(msg: string, routePath?: string | null): void {\n        if (!(msg || \"\").trim().length) return;\n\n        this.observable.next(\n            new UsrMsgDetails(\n                msg,\n                BalloonMsgLevel.Info,\n                BalloonMsgType.Fleeting,\n                null,\n                null,\n                null,\n                routePath,\n            ),\n        );\n    }\n\n    showSuccess(msg: string, routePath?: string | null): void {\n        if (!(msg || \"\").trim().length) return;\n\n        this.observable.next(\n            new UsrMsgDetails(\n                msg,\n                BalloonMsgLevel.Success,\n                BalloonMsgType.Fleeting,\n                null,\n                null,\n                null,\n                routePath,\n            ),\n        );\n    }\n\n    showMessage(\n        msg: string,\n        level: BalloonMsgLevel,\n        type: BalloonMsgType,\n        parameters: IBalloonMsgParams = {},\n    ): Promise<BalloonMsgClickType> {\n        let { confirmText, cancelText, dialogTitle, routePath } = parameters;\n        let msgObj = new UsrMsgDetails(\n            msg,\n            level,\n            type,\n            confirmText,\n            cancelText,\n            dialogTitle,\n            routePath,\n        );\n        this.observable.next(msgObj);\n        return msgObj.promise;\n    }\n}\n","import { Component, EventEmitter, Inject, Output } from \"@angular/core\";\nimport { BalloonMsgService } from \"../../services\";\nimport { UsrMsgDetails } from \"../../classes\";\n\n@Component({\n    selector: \"balloon-msg-queue-component\",\n    templateUrl: \"./balloon-msg-queue.component.html\",\n    styleUrls: [\"./balloon-msg-queue.component.scss\"],\n})\nexport class BalloonMsgQueueComponent {\n    @Output(\"showModalEvent\")\n    showModalEvent = new EventEmitter<boolean>();\n    @Output(\"showPopupEvent\")\n    showPopupEvent = new EventEmitter<boolean>();\n    backlog: UsrMsgDetails[] = [];\n    // Max Queue Length, the number of messages to show in the screen\n    protected readonly maxQueueLength = 3;\n    protected _onScreen: UsrMsgDetails[] = [];\n    private lastShowingModal: boolean | null = null;\n    private lastShowingPopup: boolean | null = null;\n\n    constructor(@Inject(BalloonMsgService) private msgService) {}\n\n    ngOnInit(): void {\n        this.msgService\n            .getObservable()\n            .subscribe((msgDetails) => this.backlog.push(msgDetails));\n    }\n\n    getShown(): UsrMsgDetails[] {\n        // First, remove all the shown messages that arn't shown\n        this.backlog = this.backlog.filter((msgDetails) => !msgDetails.expired);\n\n        // We can't just re-create the array otherwise angular2-dev complains that the\n        // object has changed after a check\n\n        // Remove the items from the array\n        for (let i = this._onScreen.length - 1; i >= 0; i--) {\n            if (this._onScreen[i].expired) this._onScreen.splice(i, 1);\n        }\n\n        // Now add three back\n        while (\n            this._onScreen.length < this.maxQueueLength &&\n            this.backlog.length\n        ) {\n            // If we have one message, and it's a modal message, then break.\n            // We only show one modal message at a time\n            if (this._onScreen.length == 1 && this._onScreen[0].isModal())\n                break;\n\n            // If we already have messages\n            // they won't be modal (because of the above check)\n            // So if the next one is modal, then don't add it. We need to clear out\n            // the other messages first.\n            if (this._onScreen.length != 0 && this.backlog[0].isModal()) break;\n\n            this._onScreen.push(this.backlog.shift());\n        }\n\n        if (this.lastShowingModal !== this.isShowingModal()) {\n            this.lastShowingModal = this.isShowingModal();\n            this.showModalEvent.emit(this.lastShowingModal);\n        }\n\n        if (this.lastShowingPopup !== this.isShowingPopup()) {\n            this.lastShowingPopup = this.isShowingPopup();\n            this.showPopupEvent.emit(this.lastShowingPopup);\n        }\n\n        return this._onScreen;\n    }\n\n    isShowingModal(): boolean {\n        return this._onScreen.length != 0 && this._onScreen[0].isModal();\n    }\n\n    isShowingPopup(): boolean {\n        return this._onScreen.length != 0 && !this._onScreen[0].isModal();\n    }\n}\n","<div class=\"balloon-msg-queue\">\n    <balloon-msg-item-component\n        *ngFor=\"let msgDetails of getShown()\"\n        [msgDetails]=\"msgDetails\"\n    >\n    </balloon-msg-item-component>\n</div>\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport {\n    BalloonMsgItemComponent,\n    BalloonMsgQueueComponent,\n} from \"./components\";\n\n@NgModule({\n    declarations: [BalloonMsgQueueComponent, BalloonMsgItemComponent],\n    imports: [CommonModule],\n    exports: [BalloonMsgQueueComponent, BalloonMsgItemComponent],\n})\nexport class BalloonMsgModule {}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    HostListener,\n    Input,\n    OnInit,\n} from \"@angular/core\";\nimport {\n    NgLifeCycleEvents,\n    TupleDataLoaderDelegate,\n    TupleDataLoaderTupleABC,\n    TupleDataNotValidError,\n} from \"@synerty/vortexjs\";\nimport { CommonModule } from \"@angular/common\";\nimport { NzAlertModule } from \"ng-zorro-antd/alert\";\nimport { NzSpinModule } from \"ng-zorro-antd/spin\";\nimport { BehaviorSubject, merge } from \"rxjs\";\nimport { debounceTime, takeUntil } from \"rxjs/operators\";\nimport { BalloonMsgService } from \"../../modules\";\nimport { makeNiceDurationFromSeconds } from \"../../pipes/nice-duration.pipe\";\n\n@Component({\n    selector: \"peek-admin-content-tuple-data-loader\",\n    templateUrl: \"./admin-content-wrapper-tuple-data-loader.component.html\",\n    styleUrls: [\"./admin-content-wrapper-tuple-data-loader.component.less\"],\n    standalone: true,\n    imports: [CommonModule, NzAlertModule, NzSpinModule],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AdminContentWrapperTupleDataLoaderComponent\n    extends NgLifeCycleEvents\n    implements OnInit\n{\n    @Input()\n    delegate: TupleDataLoaderDelegate<TupleDataLoaderTupleABC>;\n\n    @Input() createMode: boolean = false;\n\n    @Input() editableMode: boolean = true;\n\n    readonly dirtyMessage$ = new BehaviorSubject<string | null>(null);\n    readonly lockMessage$ = new BehaviorSubject<string | null>(null);\n\n    private hasFocus = false;\n\n    constructor(private balloonMsg: BalloonMsgService) {\n        super();\n    }\n\n    override ngOnInit(): void {\n        merge(\n            this.delegate.dataDirtyOrWeHaveLock$,\n            this.delegate.ready$,\n            this.delegate.dataLocked$,\n            this.delegate.data$,\n        )\n            .pipe(takeUntil(this.onDestroyEvent))\n            .pipe(debounceTime(50))\n            .subscribe(() => {\n                this.dirtyMessage$.next(this.dirtyMessage);\n                this.lockMessage$.next(this.lockMessage);\n            });\n\n        this.delegate.lockExpires$\n            .pipe(takeUntil(this.onDestroyEvent))\n            .pipe(debounceTime(2000))\n            .subscribe(() => {\n                this.dirtyMessage$.next(this.dirtyMessage);\n                this.lockMessage$.next(this.lockMessage);\n            });\n    }\n\n    @HostListener(\"focusin\")\n    onFocus() {\n        this.hasFocus = true;\n    }\n\n    @HostListener(\"focusout\")\n    onBlur() {\n        this.hasFocus = false;\n    }\n\n    @HostListener(\"window:keydown\", [\"$event\"])\n    onKeyDownEvent(event: KeyboardEvent) {\n        if (\n            !this.hasFocus ||\n            !this.delegate.dataDirtyOrWeHaveLock$.getValue() ||\n            this.delegate.selector == null // Create state\n        ) {\n            return;\n        }\n\n        // Check if CTRL or COMMAND is pressed along with 's'.\n        if ((event.ctrlKey || event.metaKey) && event.key === \"s\") {\n            // Prevent browser's default 'CTRL+S' behavior.\n            event.preventDefault();\n\n            this.store() //\n                .catch((e) => {\n                    console.log(\n                        \"SharedPanelHeaderComponent:onKeyDownEvent\" +\n                            ` save failed: ${e}`,\n                    );\n                });\n        }\n    }\n\n    private async store() {\n        try {\n            await this.delegate.store();\n            this.balloonMsg.showSuccess(\"Store successful\");\n        } catch (e) {\n            if (e instanceof TupleDataNotValidError) {\n                this.balloonMsg.showWarning(e.message);\n            } else {\n                this.balloonMsg.showError(`Store Failed: ${e}`);\n            }\n        }\n    }\n\n    private get dirtyMessage(): string {\n        const lockExpires = this.delegate.lockExpires$.getValue();\n        let message = \"You have unsaved changes.\";\n        if (lockExpires != null) {\n            const remaining = makeNiceDurationFromSeconds(\n                Math.round(\n                    (lockExpires.getTime() - new Date().getTime()) / 1000,\n                ),\n                true,\n                false,\n            );\n            message += ` Your unsaved changes will revert in ${remaining}`;\n        }\n        return message;\n    }\n\n    private get lockMessage(): string {\n        const lockExpires = this.delegate.lockExpires$.getValue();\n        if (lockExpires == null) {\n            return \"This data is being edited by XXX.\";\n        } else {\n            return (\n                \"This data is being edited by XXX. The lock will expire in \" +\n                makeNiceDurationFromSeconds(\n                    Math.round(\n                        (lockExpires.getTime() - new Date().getTime()) / 1000,\n                    ),\n                    true,\n                    false,\n                )\n            );\n        }\n    }\n}\n","<nz-spin [nzSpinning]=\"!(delegate.ready$ | async)\"\n         nzTip=\"Processing...\">\n\n    <nz-alert\n        *ngIf=\"!createMode && (delegate.dataDirtyOrWeHaveLock$ | async)\"\n        nzType=\"info\"\n        [nzMessage]=\"dirtyMessage$ | async\"\n    ></nz-alert>\n    <nz-alert\n        *ngIf=\"!createMode && (delegate.dataLocked$ | async)\n                && !(delegate.dataDirtyOrWeHaveLock$ | async)\"\n        nzType=\"info\"\n        [nzMessage]=\"lockMessage$ | async\"\n    ></nz-alert>\n    <nz-spin [nzIndicator]=\"backDropWithNoSpinnerTpl\"\n             [nzSpinning]=\"\n             !editableMode\n             || (delegate.dataLocked$ | async)\n                && !(delegate.dataDirtyOrWeHaveLock$ | async)\n        \">\n        <ng-content></ng-content>\n    </nz-spin>\n</nz-spin>\n\n\n<ng-template #backDropWithNoSpinnerTpl></ng-template>","import { Component, Input, OnInit } from \"@angular/core\";\nimport {\n    NgLifeCycleEvents,\n    TupleDataLoaderDelegate,\n    TupleDataLoaderTupleABC,\n    TupleDataNotValidError,\n    TupleSelector,\n} from \"@synerty/vortexjs\";\nimport {\n    ReusablePanelButtonCallable,\n    ReusablePanelCancelCallable,\n    AdminPanelHeaderComponent,\n} from \"../admin-panel-header/admin-panel-header.component\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { BehaviorSubject, combineLatest } from \"rxjs\";\nimport { BalloonMsgService } from \"../../modules/balloon-msg\";\nimport { CommonModule } from \"@angular/common\";\n\nexport type ReusablePanelDeletePrecheckCallable = () => Promise<void>;\n\n@Component({\n    selector: \"peek-admin-panel-header-for-tuple-loader-delegate\",\n    templateUrl:\n        \"./admin-panel-header-for-tuple-loader-delegate.component.html\",\n    styleUrls: [\n        \"./admin-panel-header-for-tuple-loader-delegate.component.less\",\n    ],\n    standalone: true,\n    imports: [AdminPanelHeaderComponent, CommonModule],\n})\nexport class AdminPanelHeaderForTupleLoaderDelegateComponent\n    extends NgLifeCycleEvents\n    implements OnInit\n{\n    @Input()\n    title: string;\n\n    @Input()\n    delegate: TupleDataLoaderDelegate<any>;\n\n    @Input()\n    onDeletePreCheckCallable: ReusablePanelDeletePrecheckCallable | null = null;\n\n    @Input()\n    onCancelCallable: ReusablePanelCancelCallable | null = null;\n\n    @Input()\n    createMode: boolean = false;\n\n    @Input()\n    modalMode: boolean = false;\n\n    @Input()\n    editableMode: boolean = true;\n\n    @Input()\n    deleteEnabled: boolean = true;\n\n    readonly showDeleteStandalone$ = new BehaviorSubject<boolean>(false);\n\n    // Create Button\n    readonly createButtonVisible$ = new BehaviorSubject<boolean>(false);\n    readonly createButtonLoading$ = new BehaviorSubject<boolean>(false);\n    readonly createButtonDisabled$ = new BehaviorSubject<boolean>(false);\n\n    // Cancel Button\n    readonly cancelButtonText$ = new BehaviorSubject<string>(\"Cancel\");\n    readonly cancelButtonVisible$ = new BehaviorSubject<boolean>(false);\n    readonly cancelButtonLoading$ = new BehaviorSubject<boolean>(false);\n    readonly cancelButtonDisabled$ = new BehaviorSubject<boolean>(false);\n\n    // Save Button\n    readonly storeButtonVisible$ = new BehaviorSubject<boolean>(false);\n    readonly storeButtonLoading$ = new BehaviorSubject<boolean>(false);\n    readonly storeButtonDisabled$ = new BehaviorSubject<boolean>(false);\n\n    // Revert button\n    readonly revertButtonVisible$ = new BehaviorSubject<boolean>(false);\n    readonly revertButtonLoading$ = new BehaviorSubject<boolean>(false);\n    readonly revertButtonDisabled$ = new BehaviorSubject<boolean>(false);\n\n    // Revert button\n    readonly deleteButtonVisible$ = new BehaviorSubject<boolean>(false);\n    readonly deleteButtonLoading$ = new BehaviorSubject<boolean>(false);\n    readonly deleteButtonDisabled$ = new BehaviorSubject<boolean>(false);\n\n    // Show Menu\n    readonly showPanelHeader$ = new BehaviorSubject<boolean>(false);\n\n    constructor(private balloonMsg: BalloonMsgService) {\n        super();\n    }\n\n    override ngOnInit(): void {\n        if (this.modalMode) {\n            this.cancelButtonVisible$.next(true);\n        } else {\n        }\n\n        if (this.createMode) {\n        } else {\n            this.deleteButtonVisible$.next(true);\n        }\n\n        // noinspection JSUnusedLocalSymbols\n        combineLatest([this.delegate.selector$, this.delegate.data$])\n            .pipe(takeUntil(this.onDestroyEvent))\n            .subscribe(\n                ([selector, data]: [\n                    TupleSelector,\n                    TupleDataLoaderTupleABC,\n                ]) => {\n                    this.updateDelete();\n                    this.showPanelHeader$.next(data != null);\n                },\n            );\n\n        combineLatest([\n            this.delegate.dataLocked$,\n            this.delegate.dataDirtyOrWeHaveLock$,\n        ])\n            .pipe(takeUntil(this.onDestroyEvent))\n            .subscribe(\n                ([locked, dataDirtyOrWeHoldLock]: [boolean, boolean]) => {\n                    if (this.createMode) {\n                        this.createButtonVisible$.next(\n                            this.editableMode && dataDirtyOrWeHoldLock,\n                        );\n                    } else {\n                        this.storeButtonVisible$.next(\n                            this.editableMode && dataDirtyOrWeHoldLock,\n                        );\n                        this.revertButtonVisible$.next(\n                            this.editableMode && dataDirtyOrWeHoldLock,\n                        );\n                        this.updateDelete();\n                        this.showDeleteStandalone$.next(!locked);\n                    }\n                },\n            );\n\n        combineLatest([this.delegate.ready$, this.delegate.storing$])\n            .pipe(takeUntil(this.onDestroyEvent))\n            .subscribe(([ready, storing]) => {\n                this.storeButtonDisabled$.next(!ready && !storing);\n                this.storeButtonLoading$.next(storing);\n            });\n\n        combineLatest([this.delegate.ready$, this.delegate.loading$])\n            .pipe(takeUntil(this.onDestroyEvent))\n            .subscribe(([ready, revert]) => {\n                this.revertButtonDisabled$.next(!ready && !revert);\n                this.revertButtonLoading$.next(revert);\n            });\n\n        combineLatest([this.delegate.ready$, this.delegate.deleting$])\n            .pipe(takeUntil(this.onDestroyEvent))\n            .subscribe(([ready, deleting]) => {\n                this.storeButtonLoading$.next(!ready && !deleting);\n                this.deleteButtonDisabled$.next(deleting);\n            });\n    }\n\n    private updateDelete(): void {\n        const selectorIsNotNull = this.delegate.selector != null;\n        const locked = this.delegate.dataLocked;\n        this.deleteButtonVisible$.next(\n            this.editableMode &&\n                selectorIsNotNull &&\n                this.deleteEnabled &&\n                !locked,\n        );\n    }\n\n    makeDeleteClickedCallable(): ReusablePanelButtonCallable {\n        return async () => {\n            try {\n                if (this.onDeletePreCheckCallable) {\n                    await this.onDeletePreCheckCallable();\n                }\n            } catch (e) {\n                console.log(\n                    \"SharedPanelHeaderForTupleLoaderDelegateComponent:\" +\n                        ` delete pre-check didn't pass, message: ${e}`,\n                );\n                return;\n            }\n\n            try {\n                await this.delegate.delete();\n                this.balloonMsg.showSuccess(\"Delete successful\");\n            } catch (e) {\n                this.balloonMsg.showError(`Delete Failed: ${e}`);\n            }\n        };\n    }\n\n    makeCreateClickedCallable(): ReusablePanelButtonCallable {\n        return async () => {\n            try {\n                await this.delegate.create();\n                this.balloonMsg.showSuccess(\"Create successful\");\n            } catch (e) {\n                if (e instanceof TupleDataNotValidError) {\n                    this.balloonMsg.showWarning(e.message);\n                } else {\n                    this.balloonMsg.showError(`Create Failed: ${e}`);\n                }\n            }\n        };\n    }\n\n    makeSaveClickedCallable(): ReusablePanelButtonCallable {\n        return async () => {\n            try {\n                await this.delegate.store();\n                this.balloonMsg.showSuccess(\"Store successful\");\n            } catch (e) {\n                if (e instanceof TupleDataNotValidError) {\n                    this.balloonMsg.showWarning(e.message);\n                } else {\n                    this.balloonMsg.showError(`Store Failed: ${e}`);\n                }\n            }\n        };\n    }\n\n    makeRevertClickedCallable(): ReusablePanelButtonCallable {\n        return async () => {\n            try {\n                await this.delegate.revert();\n                this.balloonMsg.showSuccess(\"Revert successful\");\n            } catch (e) {\n                this.balloonMsg.showError(`Revert Failed: ${e}`);\n            }\n        };\n    }\n\n    makeCancelClickedCallable(): ReusablePanelCancelCallable | null {\n        return this.onCancelCallable;\n    }\n}\n","<peek-admin-panel-header\n    *ngIf=\"showPanelHeader$ | async\"\n    [title]=\"title\"\n    [manageIndicators]=\"false\"\n\n    [showDeleteStandalone$]=\"showDeleteStandalone$\"\n\n    [deleteClickedCallable]=\"makeDeleteClickedCallable()\"\n    [deleteButtonVisible$]=\"deleteButtonVisible$\"\n    [deleteButtonLoading$]=\"deleteButtonLoading$\"\n    [deleteButtonDisabled$]=\"deleteButtonDisabled$\"\n\n    [createClickedCallable]=\"makeCreateClickedCallable()\"\n    [createButtonVisible$]=\"createButtonVisible$\"\n    [createButtonLoading$]=\"createButtonLoading$\"\n    [createButtonDisabled$]=\"createButtonDisabled$\"\n\n    [cancelButtonText]=\"cancelButtonText$ | async\"\n    [cancelClickedCallable]=\"makeCancelClickedCallable()\"\n    [cancelButtonVisible$]=\"cancelButtonVisible$\"\n    [cancelButtonLoading$]=\"cancelButtonLoading$\"\n    [cancelButtonDisabled$]=\"cancelButtonDisabled$\"\n\n    [storeClickedCallable]=\"makeSaveClickedCallable()\"\n    [storeButtonVisible$]=\"storeButtonVisible$\"\n    [storeButtonLoading$]=\"storeButtonLoading$\"\n    [storeButtonDisabled$]=\"storeButtonDisabled$\"\n\n    [revertClickedCallable]=\"makeRevertClickedCallable()\"\n    [revertButtonVisible$]=\"revertButtonVisible$\"\n    [revertButtonLoading$]=\"revertButtonLoading$\"\n    [revertButtonDisabled$]=\"revertButtonDisabled$\"\n\n    [modalLayout]=\"modalMode\"\n></peek-admin-panel-header>\n","export enum EDeviceSize {\n    dpi300,\n    dpi400,\n    default,\n}\n","import { Injectable } from \"@angular/core\";\nimport { BehaviorSubject } from \"rxjs\";\n\n@Injectable({\n    providedIn: \"root\",\n})\nexport class PageBodyService {\n    scrollEnabled$ = new BehaviorSubject<boolean>(true);\n\n    setScrollEnabled(enabled: boolean) {\n        this.scrollEnabled$.next(enabled);\n    }\n\n    get scrollEnabled() {\n        return this.scrollEnabled$.getValue();\n    }\n}\n","import { Injectable } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { IConfigLink } from \"../models\";\n\n@Injectable({\n    providedIn: \"root\",\n})\nexport class FooterService {\n    statusText = new Subject<string>();\n    statusTextSnapshot = \"\";\n\n    configLinks = new Subject<IConfigLink[]>();\n    configLinksSnapshot: IConfigLink[] = [];\n\n    constructor() {}\n\n    setLinks(links: IConfigLink[]) {\n        this.configLinksSnapshot = links;\n        this.configLinks.next(links);\n    }\n\n    setStatusText(title: string) {\n        this.statusTextSnapshot = title;\n        this.statusText.next(title);\n    }\n}\n","import { Injectable } from \"@angular/core\";\nimport { BehaviorSubject } from \"rxjs\";\nimport { IHeaderLink } from \"../models\";\n\n@Injectable({\n    providedIn: \"root\",\n})\nexport class HeaderService {\n    title$ = new BehaviorSubject<string>(\"no title\");\n    isEnabled$ = new BehaviorSubject<boolean>(true);\n    links$ = new BehaviorSubject<IHeaderLink[]>([]);\n\n    get title() {\n        return this.title$.getValue();\n    }\n\n    set title(value) {\n        this.title$.next(value);\n    }\n\n    get isEnabled() {\n        return this.isEnabled$.getValue();\n    }\n\n    set isEnabled(value) {\n        this.isEnabled$.next(value);\n    }\n\n    get links() {\n        return this.links$.getValue();\n    }\n\n    set links(value) {\n        this.links$.next(value);\n    }\n\n    setLinks(links: IHeaderLink[]): void {\n        this.links = links;\n    }\n\n    setTitle(title: string): void {\n        this.title = title;\n    }\n\n    setEnabled(value: boolean) {\n        this.isEnabled = value;\n    }\n\n    updateBadgeCount(pluginName: string, badgeCount: number | null) {\n        const links = [...this.links];\n\n        for (let link of links) {\n            if (link.plugin === pluginName) {\n                link.badgeCount = badgeCount;\n                this.links = links;\n                return;\n            }\n        }\n    }\n}\n","import { Inject, Injectable } from \"@angular/core\";\nimport { NavigationEnd, Router } from \"@angular/router\";\nimport { filter } from \"rxjs/operators\";\nimport { HeaderService } from \"./header.service\";\n\n@Injectable({\n    providedIn: \"root\",\n})\nexport class NavBackService {\n    private readonly MAX_BACK = 20;\n    private backTitles: string[] = [];\n    private backUrls: string[] = [];\n\n    constructor(\n        @Inject(HeaderService) private headerService,\n        @Inject(Router) private router,\n    ) {\n        this.router.events\n            .pipe(filter((e) => e instanceof NavigationEnd))\n            .subscribe((e: NavigationEnd) => {\n                this._recordRouteChange(e);\n            });\n\n        // Update the route titles as they come in\n        this.headerService.title$.subscribe((title: string) => {\n            if (this.backTitles.length == 0) {\n                return;\n            }\n\n            this.backTitles[this.backTitles.length - 1] = title;\n        });\n    }\n\n    navBack(count = 1): void {\n        if (this.backUrls.length < count) {\n            throw new Error(\n                `${count} exceeds max nav back ${this.backUrls.length}`,\n            );\n        }\n\n        let url = \"\";\n        for (let i = 0; i <= count; i++) {\n            url = this.backUrls.pop();\n            this.backTitles.pop();\n        }\n\n        this.router.navigateByUrl(url);\n    }\n\n    navBackTitles(): string[] {\n        return this.backTitles.slice(1);\n    }\n\n    navBackLen(): number {\n        // The last item on the queue is the current route\n        return this.backUrls.length;\n    }\n\n    private _recordRouteChange(e: NavigationEnd): void {\n        let thisUrl = e.urlAfterRedirects;\n        let lastUrl = \"\";\n\n        if (this.backUrls.length != 0) {\n            lastUrl = this.backUrls[this.backUrls.length - 1];\n            lastUrl = this._stripUrlParams(lastUrl);\n        }\n\n        if (lastUrl == this._stripUrlParams(thisUrl)) {\n            this.backUrls[this.backUrls.length - 1] = thisUrl;\n            this.backTitles[this.backTitles.length - 1] =\n                this.headerService.title;\n        } else {\n            this.backUrls.push(thisUrl);\n            this.backTitles.push(this.headerService.title);\n        }\n\n        // This should never happen\n        if (this.backTitles.length != this.backUrls.length) {\n            throw new Error(\"backTitles and backUrls length missmatch\");\n        }\n\n        while (this.backUrls.length > this.MAX_BACK) {\n            this.backUrls.shift();\n            this.backTitles.shift();\n        }\n    }\n\n    private _stripUrlParams(url: string): string {\n        if (url == null) {\n            return \"\";\n        }\n\n        let route: string;\n\n        const params = url.split(\";\");\n        const coordParam = params.find((param: string) =>\n            param.includes(\"coordSetKey\"),\n        );\n\n        route = params[0];\n\n        if (coordParam) {\n            if (this.backUrls[this.backUrls.length - 1] === route) {\n                this.backUrls.pop();\n                this.backTitles.pop();\n            }\n            route += coordParam;\n        }\n\n        return route;\n    }\n}\n","import { ISound } from \"../models\";\n\nexport class Sound implements ISound {\n    private audio: any;\n\n    constructor(soundFilePath: string) {\n        this.audio = new Audio(soundFilePath);\n    }\n\n    play(): Promise<void> {\n        try {\n            const optionalPromise = this.audio.play();\n            if (optionalPromise != null) return optionalPromise;\n        } catch (e) {\n            return Promise.reject(e.toString());\n        }\n        return Promise.resolve();\n    }\n}\n","import { EDeviceSize } from \"../constants\";\n\nexport class Platform {\n    static isWeb(): boolean {\n        return true;\n    }\n\n    static deviceSize(): EDeviceSize {\n        return EDeviceSize.default;\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.TimePipe","i1.ShortDatePipe","i1.FullDatePipe","i2","i5","i4","i6","i7","i8","i2.BalloonMsgItemComponent","i1.BalloonMsgService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAOa,qBAAqB,CAAA;AAC9B,IAAA,WAAA,GAAA,GAAgB;wGADP,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,+DCPlC,EAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDOa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;+BACI,yBAAyB,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;;MEI1B,wBAAwB,CAAA;AACjC,IAAA,WAAA,GAAA,GAAgB;wGADP,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,mECPrC,EAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDOa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;+BACI,6BAA6B,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;;MEI9B,0BAA0B,CAAA;AACnC,IAAA,WAAA,GAAA,GAAgB;wGADP,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,sECPvC,EAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDOa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;+BACI,gCAAgC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;;MEIjC,sBAAsB,CAAA;AAC/B,IAAA,WAAA,GAAA,GAAgB;wGADP,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,iECPnC,EAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDOa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;+BACI,2BAA2B,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;;AEMzC,MAAM,UAAU,GAAG;IACf,qBAAqB;IACrB,wBAAwB;IACxB,0BAA0B;IAC1B,sBAAsB;CACzB,CAAC;MAOW,oBAAoB,CAAA;wGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,iBAX7B,qBAAqB;YACrB,wBAAwB;YACxB,0BAA0B;AAC1B,YAAA,sBAAsB,aAKZ,YAAY,EAAE,WAAW,EAAE,aAAa,aARlD,qBAAqB;YACrB,wBAAwB;YACxB,0BAA0B;YAC1B,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAQb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAHnB,OAAA,EAAA,CAAA,YAAY,EAAE,WAAW,EAAE,aAAa,CAAA,EAAA,CAAA,CAAA;;4FAGzC,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE,UAAU;AACxB,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,aAAa,CAAC;AACnD,oBAAA,OAAO,EAAE,UAAU;AACtB,iBAAA,CAAA;;;ACpBK,SAAU,qBAAqB,CAAC,IAAU,EAAA;;;;;;;IAQ5C,MAAM,YAAY,GAAG,IAAI,CAAC;AAE1B,IAAA,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;IAE3B,MAAM,kBAAkB,GACpB,YAAY,CAAC,iBAAiB,EAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IACnE,IAAI,QAAQ,GAAG,YAAY,CAAC,iBAAiB,EAAE,GAAG,kBAAkB,CAAC;IAErE,QAAQ,GAAG,CAAC,QAAQ,CAAC;AAErB,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AAClD,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AACpD,IAAA,MAAM,IAAI,GAAG,QAAQ,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;IAEtC,OAAO,CAAA,EAAG,IAAI,CAAG,EAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAG,EAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAE,CAAC;AACvE;;MClBa,YAAY,CAAA;AACD,IAAA,QAAA,CAAA;AAApB,IAAA,WAAA,CAAoB,QAAkB,EAAA;QAAlB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;KAAI;AAE1C,IAAA,SAAS,CAAC,KAAuC,EAAA;QAC7C,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;AACD,QAAA,MAAM,IAAI,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AAE7D,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAC1B,KAAK,EACL,qBAAqB,EACrB,qBAAqB,CAAC,IAAI,CAAC,CAC9B,CAAC;KACL;wGAdQ,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;sGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;;;MCC/B,aAAa,CAAA;AACF,IAAA,QAAA,CAAA;AAApB,IAAA,WAAA,CAAoB,QAAkB,EAAA;QAAlB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;KAAI;AAE1C,IAAA,SAAS,CAAC,KAAuC,EAAA;QAC7C,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;AACD,QAAA,MAAM,IAAI,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AAE7D,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAC1B,KAAK,EACL,cAAc,EACd,qBAAqB,CAAC,IAAI,CAAC,CAC9B,CAAC;KACL;wGAdQ,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;sGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;;;MCChC,QAAQ,CAAA;AACG,IAAA,QAAA,CAAA;AAApB,IAAA,WAAA,CAAoB,QAAkB,EAAA;QAAlB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;KAAI;AAE1C,IAAA,SAAS,CAAC,KAAuC,EAAA;QAC7C,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;AACD,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7B,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAC1B,KAAK,EACL,OAAO,EACP,qBAAqB,CAAC,IAAI,CAAC,CAC9B,CAAC;KACL;wGAbQ,QAAQ,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;sGAAR,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,CAAA;;4FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBADpB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;;;ACExC,MAAM,KAAK,GAAG,CAAC,YAAY,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;MAOzC,WAAW,CAAA;wGAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,EAJV,OAAA,EAAA,CAAA,YAAY,EAHX,YAAY,EAAE,aAAa,EAAE,QAAQ,CAArC,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,aAAa,EAAE,QAAQ,CAAA,EAAA,CAAA,CAAA;AAOvC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,EAHT,SAAA,EAAA,CAAC,QAAQ,CAAC,YADX,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAIb,WAAW,EAAA,UAAA,EAAA,CAAA;kBALvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC;oBAC9B,SAAS,EAAE,CAAC,QAAQ,CAAC;AACrB,oBAAA,OAAO,EAAE,KAAK;AACjB,iBAAA,CAAA;;;ACVe,SAAA,2BAA2B,CACvC,iBAAyB,EACzB,IAAA,GAAgB,KAAK,EACrB,WAAuB,GAAA,IAAI,EAC3B,gBAAA,GAA4B,KAAK,EAAA;IAEjC,IAAI,iBAAiB,IAAI,IAAI;AAAE,QAAA,OAAO,cAAc,CAAC;AAErD,IAAA,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAChD,IAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,iBAAiB,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;AACzE,IAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,iBAAiB,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;AAC/D,IAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,iBAAiB,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAEnD,MAAM,GAAG,GAAa,EAAE,CAAC;AACzB,IAAA,IAAI,KAAK;AAAE,QAAA,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC;AAEtD,IAAA,IAAI,OAAO,IAAI,GAAG,CAAC,MAAM;AAAE,QAAA,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,GAAG,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC;AAE1E,IAAA,IAAI,WAAW,EAAE;;AAEb,QAAA,IAAI,OAAO,KAAK,CAAC,IAAI,gBAAgB,EAAE;AACnC,YAAA,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,GAAG,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC;AACxD,SAAA;AAAM,aAAA;AACH,YAAA,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,GAAG,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC;AAClD,SAAA;AACJ,KAAA;AAED,IAAA,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;MAKY,gBAAgB,CAAA;AACzB,IAAA,SAAS,CAAC,iBAAyB,EAAA;AAC/B,QAAA,OAAO,2BAA2B,CAAC,iBAAiB,CAAC,CAAC;KACzD;wGAHQ,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;sGAAhB,gBAAgB,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,cAAc;AACvB,iBAAA,CAAA;;MAUY,kBAAkB,CAAA;AAC3B,IAAA,SAAS,CAAC,iBAAyB,EAAA;QAC/B,OAAO,2BAA2B,CAC9B,iBAAiB,EACjB,KAAK,EACL,IAAI,EACJ,IAAI,CACP,CAAC;KACL;wGARQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;sGAAlB,kBAAkB,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,gBAAgB;AACzB,iBAAA,CAAA;;;MCbY,2BAA2B,CAAA;AAsCxB,IAAA,QAAA,CAAA;AACA,IAAA,aAAA,CAAA;AACA,IAAA,YAAA,CAAA;IAvCH,QAAQ,GAAY,IAAI,CAAC;IACzB,QAAQ,GAAY,IAAI,CAAC;IACzB,UAAU,GAAkB,IAAI,CAAC;IAE1C,SAAS,GAAG,KAAK,CAAC;IAClB,KAAK,GAAa,EAAE,CAAC;AACrB,IAAA,MAAM,GAAa;QACf,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;KACR,CAAC;IACF,IAAI,GAAa,EAAE,CAAC;IACpB,KAAK,GAAa,EAAE,CAAC;IACrB,OAAO,GAAa,EAAE,CAAC;IAEvB,YAAY,GAAa,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACpD,IAAA,aAAa,GAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC/D,WAAW,GAAa,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/C,IAAA,YAAY,GAAa,CAAC,IAAI,CAAC,CAAC;AAChC,IAAA,cAAc,GAAa,CAAC,IAAI,CAAC,CAAC;AAE1B,IAAA,gBAAgB,GAA0B,MAAK,GAAG,CAAC;AACnD,IAAA,iBAAiB,GAAe,MAAK,GAAG,CAAC;IAEjD,YAAY,GAAgB,IAAI,CAAC;IACjC,QAAQ,GAAG,KAAK,CAAC;AAEjB,IAAA,WAAA,CACY,QAAkB,EAClB,aAA4B,EAC5B,YAA0B,EAAA;QAF1B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAElC,IAAI,CAAC,eAAe,EAAE,CAAC;KAC1B;IAED,eAAe,GAAA;QACX,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,WAAW,GAAG,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KACzC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAChC,CAAC;AACF,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAC3C,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAChC,CAAC;KACL;IAED,SAAS,GAAA;AACL,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC/C,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;KACzB;IAED,UAAU,GAAA;QACN,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACjC,YAAA,OAAO,aAAa,CAAC;AACxB,SAAA;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjC,YAAA,OAAO,aAAa,CAAC;AACxB,SAAA;AACD,QAAA,OAAO,sBAAsB,CAAC;KACjC;IAED,YAAY,GAAA;QACR,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC5C,SAAA;QACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KAC1B;AAED,IAAA,QAAQ,MAAK;IAEb,QAAQ,GAAA;AACJ,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AACpD,QAAA,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAAC;AACrC,QAAA,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QACxC,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KAC1B;;IAGD,mBAAmB,GAAA;QACf,OAAO,IAAI,IAAI,CACX,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EACpB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAC1C,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EACnB,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAC9B,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CACnC,CAAC;KACL;AAED,IAAA,oBAAoB,CAAC,IAAU,EAAA;QAC3B,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxC,SAAA;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjC,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC7C,SAAA;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KAC5C;AAED,IAAA,UAAU,CAAC,KAAkB,EAAA;QACzB,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YACpC,OAAO;AACV,SAAA;AAED,QAAA,IAAI,EAAE,KAAK,YAAY,IAAI,CAAC,EAAE;AAC1B,YAAA,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,CAAA,CAAE,CAAC,CAAC;AACzD,SAAA;AAED,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;KAClC;;AAGO,IAAA,kBAAkB,CAAC,GAAS,EAAA;QAChC,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;AACxC,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACjE,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;KACxE;AAED,IAAA,gBAAgB,CAAC,EAAyB,EAAA;AACtC,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;KAC9B;AAED,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC5B,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;KAC/B;AAED,IAAA,gBAAgB,CAAE,UAAmB,EAAA;AACjC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;KAC9B;wGAlJQ,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2BAA2B,EAfzB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,2BAA2B,CAAC;AAC1D,gBAAA,KAAK,EAAE,IAAI;AACd,aAAA;YACD,QAAQ;YACR,aAAa;YACb,YAAY;SACf,ECzBL,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,mmDAgDA,EDtCQ,MAAA,EAAA,CAAA,kjBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EACZ,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,8VACX,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,aAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,UAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,aAAA,EAAA,QAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,YAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,qIAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2EAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,uBAAuB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAiBlB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAvBvC,SAAS;AACG,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA;wBACL,YAAY;wBACZ,WAAW;wBACX,aAAa;wBACb,cAAc;wBACd,uBAAuB;qBAC1B,EACU,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,iCAAiC,CAAC;AAC1D,4BAAA,KAAK,EAAE,IAAI;AACd,yBAAA;wBACD,QAAQ;wBACR,aAAa;wBACb,YAAY;qBACf,EACW,UAAA,EAAA,IAAI,YACN,uBAAuB,EAAA,QAAA,EAAA,mmDAAA,EAAA,MAAA,EAAA,CAAA,kjBAAA,CAAA,EAAA,CAAA;6IAKxB,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;;;AEIJ,MAAO,yBACT,SAAQ,iBAAiB,CAAA;AAiFL,IAAA,UAAA,CAAA;AA7EpB,IAAA,KAAK,CAAS;IAGd,gBAAgB,GAAY,IAAI,CAAC;AAGjC,IAAA,qBAAqB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;IAG5D,WAAW,GAAY,KAAK,CAAC;;IAI7B,gBAAgB,GAAW,QAAQ,CAAC;IAEpC,gBAAgB,GAAW,MAAM,CAAC;AAElC,IAAA,qBAAqB,CAAqC;AAE1D,IAAA,oBAAoB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAE3D,IAAA,oBAAoB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAE3D,IAAA,qBAAqB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;;IAI5D,gBAAgB,GAAW,QAAQ,CAAC;IAEpC,gBAAgB,GAAW,OAAO,CAAC;AAEnC,IAAA,qBAAqB,CAAqC;AAE1D,IAAA,oBAAoB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAE3D,IAAA,oBAAoB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAE3D,IAAA,qBAAqB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;;IAI5D,eAAe,GAAW,MAAM,CAAC;AAEjC,IAAA,oBAAoB,CAAqC;AAEzD,IAAA,mBAAmB,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC,CAAC;AAEzD,IAAA,mBAAmB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAE1D,IAAA,oBAAoB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;;IAI3D,gBAAgB,GAAW,QAAQ,CAAC;AAEpC,IAAA,qBAAqB,CAAqC;AAE1D,IAAA,oBAAoB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAE3D,IAAA,oBAAoB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAE3D,IAAA,qBAAqB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;;IAI5D,gBAAgB,GAAW,QAAQ,CAAC;AAEpC,IAAA,qBAAqB,CAAqC;AAE1D,IAAA,oBAAoB,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC,CAAC;AAE1D,IAAA,oBAAoB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAE3D,IAAA,qBAAqB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAEnD,IAAA,iBAAiB,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC,CAAC;AAEhE,IAAA,WAAA,CAAoB,UAAsB,EAAA;AACtC,QAAA,KAAK,EAAE,CAAC;QADQ,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;KAEzC;IAEQ,eAAe,GAAA;QACpB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,SAAS,EAAE,CAAC;AAEjB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AAC/C,QAAA,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;AAClE,QAAA,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC;KACpE;IAEO,SAAS,GAAA;QACb,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC;AAEjE,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,cAAc,GAAG,GAAG,EAAE;;;YAG1C,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC3D,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACjE,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC3D,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACjE,SAAA;KACJ;IAEQ,QAAQ,GAAA;AACb,QAAA,aAAa,CAAC;AACV,YAAA,IAAI,CAAC,qBAAqB;AAC1B,YAAA,IAAI,CAAC,oBAAoB;AACzB,YAAA,IAAI,CAAC,oBAAoB;SAC5B,CAAC;AACG,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aACpC,SAAS,CAAC,CAAC,CAAC,gBAAgB,EAAE,aAAa,EAAE,aAAa,CAAC,KAAI;AAC5D,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACvB,CAAC,CAAC,gBAAgB,IAAI,aAAa,KAAK,aAAa,CACxD,CAAC;AACN,SAAC,CAAC,CAAC;KACV;IAEO,YAAY,GAAA;AAChB,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAEvC,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAEtC,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAEvC,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1C;AAED,IAAA,MAAM,cAAc,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACxB,YAAA,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;AACtC,SAAA;AAAM,aAAA;YACH,IAAI;AACA,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrC,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrC,gBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,gBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,gBAAA,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;AACtC,aAAA;AAAS,oBAAA;gBACN,IAAI,CAAC,YAAY,EAAE,CAAC;AACvB,aAAA;AACJ,SAAA;KACJ;IAED,cAAc,GAAA;QACV,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAChC;AAED,IAAA,MAAM,aAAa,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACxB,YAAA,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;AACtC,SAAA;AAAM,aAAA;YACH,IAAI;AACA,gBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrC,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrC,gBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,gBAAA,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;AACtC,aAAA;AAAS,oBAAA;gBACN,IAAI,CAAC,YAAY,EAAE,CAAC;AACvB,aAAA;AACJ,SAAA;KACJ;AAED,IAAA,MAAM,aAAa,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACxB,YAAA,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACrC,SAAA;AAAM,aAAA;YACH,IAAI;AACA,gBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,gBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC,gBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,gBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,gBAAA,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACrC,aAAA;AAAS,oBAAA;gBACN,IAAI,CAAC,YAAY,EAAE,CAAC;AACvB,aAAA;AACJ,SAAA;KACJ;AAED,IAAA,MAAM,cAAc,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACxB,YAAA,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;AACtC,SAAA;AAAM,aAAA;YACH,IAAI;AACA,gBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrC,gBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrC,gBAAA,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;AACtC,aAAA;AAAS,oBAAA;gBACN,IAAI,CAAC,YAAY,EAAE,CAAC;AACvB,aAAA;AACJ,SAAA;KACJ;wGA5MQ,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,ECtCtC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,ysHA+GA,EDlFQ,MAAA,EAAA,CAAA,gXAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,yzBACd,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,kBAAkB,EAClB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,gCAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,2BAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,gBAAgB,EAChB,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,SAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8BACZ,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,gIAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAGb,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAhBrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,mBAGlB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACL,cAAc;wBACd,YAAY;wBACZ,YAAY;wBACZ,kBAAkB;wBAClB,gBAAgB;wBAChB,YAAY;wBACZ,kBAAkB;AACrB,qBAAA,EAAA,QAAA,EAAA,ysHAAA,EAAA,MAAA,EAAA,CAAA,gXAAA,CAAA,EAAA,CAAA;iGAOD,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAIN,gBAAgB,EAAA,CAAA;sBADf,KAAK;gBAIN,qBAAqB,EAAA,CAAA;sBADpB,KAAK;gBAIN,WAAW,EAAA,CAAA;sBADV,KAAK;gBAKN,gBAAgB,EAAA,CAAA;sBADf,KAAK;gBAGN,gBAAgB,EAAA,CAAA;sBADf,KAAK;gBAGN,qBAAqB,EAAA,CAAA;sBADpB,KAAK;gBAGN,oBAAoB,EAAA,CAAA;sBADnB,KAAK;gBAGN,oBAAoB,EAAA,CAAA;sBADnB,KAAK;gBAGN,qBAAqB,EAAA,CAAA;sBADpB,KAAK;gBAKN,gBAAgB,EAAA,CAAA;sBADf,KAAK;gBAGN,gBAAgB,EAAA,CAAA;sBADf,KAAK;gBAGN,qBAAqB,EAAA,CAAA;sBADpB,KAAK;gBAGN,oBAAoB,EAAA,CAAA;sBADnB,KAAK;gBAGN,oBAAoB,EAAA,CAAA;sBADnB,KAAK;gBAGN,qBAAqB,EAAA,CAAA;sBADpB,KAAK;gBAKN,eAAe,EAAA,CAAA;sBADd,KAAK;gBAGN,oBAAoB,EAAA,CAAA;sBADnB,KAAK;gBAGN,mBAAmB,EAAA,CAAA;sBADlB,KAAK;gBAGN,mBAAmB,EAAA,CAAA;sBADlB,KAAK;gBAGN,oBAAoB,EAAA,CAAA;sBADnB,KAAK;gBAKN,gBAAgB,EAAA,CAAA;sBADf,KAAK;gBAGN,qBAAqB,EAAA,CAAA;sBADpB,KAAK;gBAGN,oBAAoB,EAAA,CAAA;sBADnB,KAAK;gBAGN,oBAAoB,EAAA,CAAA;sBADnB,KAAK;gBAGN,qBAAqB,EAAA,CAAA;sBADpB,KAAK;gBAKN,gBAAgB,EAAA,CAAA;sBADf,KAAK;gBAGN,qBAAqB,EAAA,CAAA;sBADpB,KAAK;gBAGN,oBAAoB,EAAA,CAAA;sBADnB,KAAK;gBAGN,oBAAoB,EAAA,CAAA;sBADnB,KAAK;gBAGN,qBAAqB,EAAA,CAAA;sBADpB,KAAK;;;IEnHE,gBAKX;AALD,CAAA,UAAY,eAAe,EAAA;AACvB,IAAA,eAAA,CAAA,eAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;AACT,IAAA,eAAA,CAAA,eAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACX,IAAA,eAAA,CAAA,eAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR,IAAA,eAAA,CAAA,eAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACf,CAAC,EALW,eAAe,KAAf,eAAe,GAK1B,EAAA,CAAA,CAAA,CAAA;IAEW,eAKX;AALD,CAAA,UAAY,cAAc,EAAA;AACtB,IAAA,cAAA,CAAA,cAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AACZ,IAAA,cAAA,CAAA,cAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACV,IAAA,cAAA,CAAA,cAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACX,IAAA,cAAA,CAAA,cAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAiB,CAAA;AACrB,CAAC,EALW,cAAc,KAAd,cAAc,GAKzB,EAAA,CAAA,CAAA,CAAA;IAEW,oBAKX;AALD,CAAA,UAAY,mBAAmB,EAAA;AAC3B,IAAA,mBAAA,CAAA,mBAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAqB,CAAA;AACrB,IAAA,mBAAA,CAAA,mBAAA,CAAA,wBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,wBAA0B,CAAA;AAC1B,IAAA,mBAAA,CAAA,mBAAA,CAAA,6BAAA,CAAA,GAAA,CAAA,CAAA,GAAA,6BAA+B,CAAA;AAC/B,IAAA,mBAAA,CAAA,mBAAA,CAAA,4BAAA,CAAA,GAAA,CAAA,CAAA,GAAA,4BAA8B,CAAA;AAClC,CAAC,EALW,mBAAmB,KAAnB,mBAAmB,GAK9B,EAAA,CAAA,CAAA;;ACXM,MAAM,wBAAwB,GAAG;IACpC,OAAO,CAAC,UAAU,EAAE;AAChB,QAAA,KAAK,CACD,MAAM,EACN,KAAK,CAAC;AACF,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,SAAS,EAAE,UAAU;AACxB,SAAA,CAAC,CACL;AACD,QAAA,KAAK,CACD,OAAO,EACP,KAAK,CAAC;AACF,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,SAAS,EAAE,UAAU;AACxB,SAAA,CAAC,CACL;AACD,QAAA,KAAK,CACD,QAAQ,EACR,KAAK,CAAC;AACF,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,SAAS,EAAE,UAAU;AACxB,SAAA,CAAC,CACL;AACD,QAAA,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;KACzC,CAAC;IACF,OAAO,CAAC,WAAW,EAAE;AACjB,QAAA,KAAK,CACD,MAAM,EACN,KAAK,CAAC;AACF,YAAA,OAAO,EAAE,CAAC;AACb,SAAA,CAAC,CACL;AACD,QAAA,KAAK,CACD,OAAO,EACP,KAAK,CAAC;AACF,YAAA,OAAO,EAAE,CAAC;AACb,SAAA,CAAC,CACL;AACD,QAAA,KAAK,CACD,QAAQ,EACR,KAAK,CAAC;AACF,YAAA,OAAO,EAAE,CAAC;AACb,SAAA,CAAC,CACL;AACD,QAAA,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;KACzC,CAAC;CACL;;MCzCY,uBAAuB,CAAA;AAuBG,IAAA,MAAA,CAAA;AArBnC,IAAA,UAAU,CAAgB;AAE1B,IAAA,cAAc,GAA6B,IAAI,eAAe,CAC1D,KAAK,CACR,CAAC;IAEF,KAAK,GAAY,IAAI,CAAC;IACtB,QAAQ,GAAW,OAAO,CAAC;;IAGR,iBAAiB,GAAG,GAAG,CAAC;;IAGxB,YAAY,GAAG,IAAI,CAAC;;AAGpB,IAAA,cAAc,GAAG,IAAI,CAAC;;IAGtB,iBAAiB,GAAG,IAAI,CAAC;AAE5C,IAAA,WAAA,CAAmC,MAAM,EAAA;QAAN,IAAM,CAAA,MAAA,GAAN,MAAM,CAAA;KAAI;IAE7C,QAAQ,GAAA;AACJ,QAAA,IAAI,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;AAC3C,cAAE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,iBAAiB;AAC9C,cAAE,IAAI,CAAC,cAAc,CAAC;AAE1B,QAAA,IAAI,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;AACzC,cAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB;AAC5C,cAAE,IAAI,CAAC,YAAY,CAAC;;AAGxB,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE;YAC9B,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,gBAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;aAC5B,EAAE,YAAY,CAAC,CAAC;YAEjB,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;aAClC,EAAE,cAAc,CAAC,CAAC;AACtB,SAAA;KACJ;IAED,eAAe,GAAA;AACX,QAAA,UAAU,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;KACzD;IAED,UAAU,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;QAC/B,UAAU,CAAC,MAAK;YACZ,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;AACnE,SAAC,EAAE,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,CAAC;KACpC;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;QAClD,UAAU,CAAC,MAAK;YACZ,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,CAAC;AACxE,SAAC,EAAE,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,CAAC;KACpC;IAED,cAAc,GAAA;AACV,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;;QAEzB,UAAU,CAAC,MAAK;YACZ,IAAI,CAAC,UAAU,CAAC,OAAO,CACnB,mBAAmB,CAAC,2BAA2B,CAClD,CAAC;AACF,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;AAC/B,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;;AAGnB,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;AAC1B,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1D,SAAC,EAAE,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,CAAC;KACpC;IAED,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,UAAU,CAAC,MAAK;YACZ,IAAI,CAAC,UAAU,CAAC,MAAM,CAClB,mBAAmB,CAAC,0BAA0B,CACjD,CAAC;AACF,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;AAC/B,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACvB,SAAC,EAAE,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,CAAC;KACpC;AA3FQ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,kBAuBZ,MAAM,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAvBjB,uBAAuB,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbpC,0xGAsFA,EAAA,MAAA,EAAA,CAAA,kCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,UAAA,ED5EgB,wBAAwB,EAAA,CAAA,CAAA;;4FAG3B,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,cAE1B,wBAAwB,EAAA,QAAA,EAAA,0xGAAA,EAAA,MAAA,EAAA,CAAA,kCAAA,CAAA,EAAA,CAAA;;0BA0BvB,MAAM;2BAAC,MAAM,CAAA;4CArB1B,UAAU,EAAA,CAAA;sBADT,KAAK;;;MERG,aAAa,CAAA;AAWX,IAAA,GAAA,CAAA;AACA,IAAA,KAAA,CAAA;AACA,IAAA,IAAA,CAAA;AACA,IAAA,WAAA,CAAA;AACA,IAAA,UAAA,CAAA;AACA,IAAA,WAAA,CAAA;AACA,IAAA,SAAA,CAAA;AAhBH,IAAA,OAAO,SAAS,GAAG,CAAC,CAAC;AAE7B,IAAA,KAAK,CAAS;IACd,OAAO,GAAY,KAAK,CAAC;IACzB,OAAO,GAAwC,IAAI,CAAC;IAE5C,QAAQ,GAAQ,IAAI,CAAC;IACrB,QAAQ,GAAQ,IAAI,CAAC;AAE7B,IAAA,WAAA,CACW,GAAW,EACX,KAAsB,EACtB,IAAoB,EACpB,WAA6B,GAAA,IAAI,EACjC,UAAA,GAA4B,IAAI,EAChC,WAAA,GAA6B,IAAI,EACjC,YAA2B,IAAI,EAAA;QAN/B,IAAG,CAAA,GAAA,GAAH,GAAG,CAAQ;QACX,IAAK,CAAA,KAAA,GAAL,KAAK,CAAiB;QACtB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAgB;QACpB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAsB;QACjC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAsB;QAChC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAsB;QACjC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAsB;AAEtC,QAAA,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC;AAEvC,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI;AAAE,YAAA,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;AAE3D,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI;AAAE,YAAA,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;QAExD,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CACtB,CAAC,QAAQ,EAAE,QAAQ,KAAI;AACnB,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC7B,SAAC,CACJ,CAAC;KACL;;IAGD,SAAS,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,eAAe,CAAC,OAAO,CAAC;KACjD;IAED,MAAM,GAAA;AACF,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,eAAe,CAAC,IAAI,CAAC;KAC9C;IAED,SAAS,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,eAAe,CAAC,OAAO,CAAC;KACjD;IAED,OAAO,GAAA;AACH,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,eAAe,CAAC,KAAK,CAAC;KAC/C;;IAGD,UAAU,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,QAAQ,CAAC;KAChD;IAED,QAAQ,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,MAAM,CAAC;KAC9C;IAED,SAAS,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,OAAO,CAAC;KAC/C;IAED,eAAe,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,aAAa,CAAC;KACrD;;IAGD,OAAO,GAAA;QACH,OAAO,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;KACrD;IAED,QAAQ,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;KACjC;AAED,IAAA,OAAO,CAAC,mBAAwC,EAAA;AAC5C,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI;AAAE,YAAA,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;KACjE;AAED,IAAA,MAAM,CAAC,mBAAwC,EAAA;AAC3C,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI;AAAE,YAAA,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;KACjE;;;MC3EQ,iBAAiB,CAAA;AAClB,IAAA,UAAU,CAAyB;AAE3C,IAAA,WAAA,GAAA;AACI,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,OAAO,EAAiB,CAAC;KAClD;IAED,aAAa,GAAA;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAED,SAAS,CAAC,GAAW,EAAE,SAAyB,EAAA;QAC5C,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM;YAAE,OAAO;QAEvC,IAAI,CAAC,UAAU,CAAC,IAAI,CAChB,IAAI,aAAa,CACb,GAAG,EACH,eAAe,CAAC,KAAK,EACrB,cAAc,CAAC,MAAM,EACrB,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,SAAS,CACZ,CACJ,CAAC;KACL;IAED,WAAW,CAAC,GAAW,EAAE,SAAyB,EAAA;QAC9C,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM;YAAE,OAAO;QAEvC,IAAI,CAAC,UAAU,CAAC,IAAI,CAChB,IAAI,aAAa,CACb,GAAG,EACH,eAAe,CAAC,OAAO,EACvB,cAAc,CAAC,QAAQ,EACvB,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,SAAS,CACZ,CACJ,CAAC;KACL;IAED,QAAQ,CAAC,GAAW,EAAE,SAAyB,EAAA;QAC3C,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM;YAAE,OAAO;QAEvC,IAAI,CAAC,UAAU,CAAC,IAAI,CAChB,IAAI,aAAa,CACb,GAAG,EACH,eAAe,CAAC,IAAI,EACpB,cAAc,CAAC,QAAQ,EACvB,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,SAAS,CACZ,CACJ,CAAC;KACL;IAED,WAAW,CAAC,GAAW,EAAE,SAAyB,EAAA;QAC9C,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM;YAAE,OAAO;QAEvC,IAAI,CAAC,UAAU,CAAC,IAAI,CAChB,IAAI,aAAa,CACb,GAAG,EACH,eAAe,CAAC,OAAO,EACvB,cAAc,CAAC,QAAQ,EACvB,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,SAAS,CACZ,CACJ,CAAC;KACL;IAED,WAAW,CACP,GAAW,EACX,KAAsB,EACtB,IAAoB,EACpB,aAAgC,EAAE,EAAA;QAElC,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC;AACrE,QAAA,IAAI,MAAM,GAAG,IAAI,aAAa,CAC1B,GAAG,EACH,KAAK,EACL,IAAI,EACJ,WAAW,EACX,UAAU,EACV,WAAW,EACX,SAAS,CACZ,CAAC;AACF,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7B,OAAO,MAAM,CAAC,OAAO,CAAC;KACzB;wGA7FQ,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFd,MAAM,EAAA,CAAA,CAAA;;4FAET,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;MCHY,wBAAwB,CAAA;AAYc,IAAA,UAAA,CAAA;AAV/C,IAAA,cAAc,GAAG,IAAI,YAAY,EAAW,CAAC;AAE7C,IAAA,cAAc,GAAG,IAAI,YAAY,EAAW,CAAC;IAC7C,OAAO,GAAoB,EAAE,CAAC;;IAEX,cAAc,GAAG,CAAC,CAAC;IAC5B,SAAS,GAAoB,EAAE,CAAC;IAClC,gBAAgB,GAAmB,IAAI,CAAC;IACxC,gBAAgB,GAAmB,IAAI,CAAC;AAEhD,IAAA,WAAA,CAA+C,UAAU,EAAA;QAAV,IAAU,CAAA,UAAA,GAAV,UAAU,CAAA;KAAI;IAE7D,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU;AACV,aAAA,aAAa,EAAE;AACf,aAAA,SAAS,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;KACjE;IAED,QAAQ,GAAA;;AAEJ,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;;;;AAMxE,QAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACjD,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO;gBAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9D,SAAA;;QAGD,OACI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc;AAC3C,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EACrB;;;AAGE,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;gBACzD,MAAM;;;;;AAMV,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;gBAAE,MAAM;AAEnE,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;AAC7C,SAAA;QAED,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,cAAc,EAAE,EAAE;AACjD,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAC9C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACnD,SAAA;QAED,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,cAAc,EAAE,EAAE;AACjD,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAC9C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACnD,SAAA;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IAED,cAAc,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;KACpE;IAED,cAAc,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;KACrE;AAtEQ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,kBAYb,iBAAiB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAZ5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,oJCTrC,8MAOA,EAAA,MAAA,EAAA,CAAA,mFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDEa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;+BACI,6BAA6B,EAAA,QAAA,EAAA,8MAAA,EAAA,MAAA,EAAA,CAAA,mFAAA,CAAA,EAAA,CAAA;;0BAgB1B,MAAM;2BAAC,iBAAiB,CAAA;4CAVrC,cAAc,EAAA,CAAA;sBADb,MAAM;uBAAC,gBAAgB,CAAA;gBAGxB,cAAc,EAAA,CAAA;sBADb,MAAM;uBAAC,gBAAgB,CAAA;;;MEAf,gBAAgB,CAAA;wGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;yGAAhB,gBAAgB,EAAA,YAAA,EAAA,CAJV,wBAAwB,EAAE,uBAAuB,aACtD,YAAY,CAAA,EAAA,OAAA,EAAA,CACZ,wBAAwB,EAAE,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAElD,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAHf,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAGb,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE,CAAC,wBAAwB,EAAE,uBAAuB,CAAC;oBACjE,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,OAAO,EAAE,CAAC,wBAAwB,EAAE,uBAAuB,CAAC;AAC/D,iBAAA,CAAA;;;ACkBK,MAAO,2CACT,SAAQ,iBAAiB,CAAA;AAeL,IAAA,UAAA,CAAA;AAXpB,IAAA,QAAQ,CAAmD;IAElD,UAAU,GAAY,KAAK,CAAC;IAE5B,YAAY,GAAY,IAAI,CAAC;AAE7B,IAAA,aAAa,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC,CAAC;AACzD,IAAA,YAAY,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC,CAAC;IAEzD,QAAQ,GAAG,KAAK,CAAC;AAEzB,IAAA,WAAA,CAAoB,UAA6B,EAAA;AAC7C,QAAA,KAAK,EAAE,CAAC;QADQ,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;KAEhD;IAEQ,QAAQ,GAAA;QACb,KAAK,CACD,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EACpC,IAAI,CAAC,QAAQ,CAAC,MAAM,EACpB,IAAI,CAAC,QAAQ,CAAC,WAAW,EACzB,IAAI,CAAC,QAAQ,CAAC,KAAK,CACtB;AACI,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACpC,aAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;aACtB,SAAS,CAAC,MAAK;YACZ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC7C,SAAC,CAAC,CAAC;QAEP,IAAI,CAAC,QAAQ,CAAC,YAAY;AACrB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACpC,aAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;aACxB,SAAS,CAAC,MAAK;YACZ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC7C,SAAC,CAAC,CAAC;KACV;IAGD,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;KACxB;IAGD,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACzB;AAGD,IAAA,cAAc,CAAC,KAAoB,EAAA;QAC/B,IACI,CAAC,IAAI,CAAC,QAAQ;AACd,YAAA,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,EAAE;AAChD,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,IAAI;AAChC,UAAA;YACE,OAAO;AACV,SAAA;;AAGD,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;;YAEvD,KAAK,CAAC,cAAc,EAAE,CAAC;AAEvB,YAAA,IAAI,CAAC,KAAK,EAAE;AACP,iBAAA,KAAK,CAAC,CAAC,CAAC,KAAI;gBACT,OAAO,CAAC,GAAG,CACP,2CAA2C;oBACvC,CAAiB,cAAA,EAAA,CAAC,CAAE,CAAA,CAC3B,CAAC;AACN,aAAC,CAAC,CAAC;AACV,SAAA;KACJ;AAEO,IAAA,MAAM,KAAK,GAAA;QACf,IAAI;AACA,YAAA,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AAC5B,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;AACnD,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,YAAY,sBAAsB,EAAE;gBACrC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC1C,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAiB,cAAA,EAAA,CAAC,CAAE,CAAA,CAAC,CAAC;AACnD,aAAA;AACJ,SAAA;KACJ;AAED,IAAA,IAAY,YAAY,GAAA;QACpB,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAC1D,IAAI,OAAO,GAAG,2BAA2B,CAAC;QAC1C,IAAI,WAAW,IAAI,IAAI,EAAE;AACrB,YAAA,MAAM,SAAS,GAAG,2BAA2B,CACzC,IAAI,CAAC,KAAK,CACN,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,IAAI,CACxD,EACD,IAAI,EACJ,KAAK,CACR,CAAC;AACF,YAAA,OAAO,IAAI,CAAA,qCAAA,EAAwC,SAAS,CAAA,CAAE,CAAC;AAClE,SAAA;AACD,QAAA,OAAO,OAAO,CAAC;KAClB;AAED,IAAA,IAAY,WAAW,GAAA;QACnB,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAC1D,IAAI,WAAW,IAAI,IAAI,EAAE;AACrB,YAAA,OAAO,mCAAmC,CAAC;AAC9C,SAAA;AAAM,aAAA;AACH,YAAA,QACI,4DAA4D;gBAC5D,2BAA2B,CACvB,IAAI,CAAC,KAAK,CACN,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,IAAI,CACxD,EACD,IAAI,EACJ,KAAK,CACR,EACH;AACL,SAAA;KACJ;wGA3HQ,2CAA2C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3C,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,2CAA2C,sUC7BxD,i2BAyBqD,EAAA,MAAA,EAAA,CAAA,yGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDCvC,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,aAAa,sTAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAG1C,2CAA2C,EAAA,UAAA,EAAA,CAAA;kBARvD,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sCAAsC,EAGpC,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,aAAa,EAAE,YAAY,CAAC,EACnC,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,i2BAAA,EAAA,MAAA,EAAA,CAAA,yGAAA,CAAA,EAAA,CAAA;qGAO/C,QAAQ,EAAA,CAAA;sBADP,KAAK;gBAGG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAmCN,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,SAAS,CAAA;gBAMvB,MAAM,EAAA,CAAA;sBADL,YAAY;uBAAC,UAAU,CAAA;gBAMxB,cAAc,EAAA,CAAA;sBADb,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAA;;;AEpDxC,MAAO,+CACT,SAAQ,iBAAiB,CAAA;AA0DL,IAAA,UAAA,CAAA;AAtDpB,IAAA,KAAK,CAAS;AAGd,IAAA,QAAQ,CAA+B;IAGvC,wBAAwB,GAA+C,IAAI,CAAC;IAG5E,gBAAgB,GAAuC,IAAI,CAAC;IAG5D,UAAU,GAAY,KAAK,CAAC;IAG5B,SAAS,GAAY,KAAK,CAAC;IAG3B,YAAY,GAAY,IAAI,CAAC;IAG7B,aAAa,GAAY,IAAI,CAAC;AAErB,IAAA,qBAAqB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;;AAG5D,IAAA,oBAAoB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAC3D,IAAA,oBAAoB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAC3D,IAAA,qBAAqB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;;AAG5D,IAAA,iBAAiB,GAAG,IAAI,eAAe,CAAS,QAAQ,CAAC,CAAC;AAC1D,IAAA,oBAAoB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAC3D,IAAA,oBAAoB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAC3D,IAAA,qBAAqB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;;AAG5D,IAAA,mBAAmB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAC1D,IAAA,mBAAmB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAC1D,IAAA,oBAAoB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;;AAG3D,IAAA,oBAAoB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAC3D,IAAA,oBAAoB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAC3D,IAAA,qBAAqB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;;AAG5D,IAAA,oBAAoB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAC3D,IAAA,oBAAoB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAC3D,IAAA,qBAAqB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;;AAG5D,IAAA,gBAAgB,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAEhE,IAAA,WAAA,CAAoB,UAA6B,EAAA;AAC7C,QAAA,KAAK,EAAE,CAAC;QADQ,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;KAEhD;IAEQ,QAAQ,GAAA;QACb,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxC,SAAA;AAAM,aAAA;AACN,SAAA;QAED,IAAI,IAAI,CAAC,UAAU,EAAE;AACpB,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxC,SAAA;;AAGD,QAAA,aAAa,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxD,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aACpC,SAAS,CACN,CAAC,CAAC,QAAQ,EAAE,IAAI,CAGf,KAAI;YACD,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AAC7C,SAAC,CACJ,CAAC;AAEN,QAAA,aAAa,CAAC;YACV,IAAI,CAAC,QAAQ,CAAC,WAAW;YACzB,IAAI,CAAC,QAAQ,CAAC,sBAAsB;SACvC,CAAC;AACG,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aACpC,SAAS,CACN,CAAC,CAAC,MAAM,EAAE,qBAAqB,CAAqB,KAAI;YACpD,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAC1B,IAAI,CAAC,YAAY,IAAI,qBAAqB,CAC7C,CAAC;AACL,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,mBAAmB,CAAC,IAAI,CACzB,IAAI,CAAC,YAAY,IAAI,qBAAqB,CAC7C,CAAC;gBACF,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAC1B,IAAI,CAAC,YAAY,IAAI,qBAAqB,CAC7C,CAAC;gBACF,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;AAC5C,aAAA;AACL,SAAC,CACJ,CAAC;AAEN,QAAA,aAAa,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACxD,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aACpC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,KAAI;YAC5B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;AACnD,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3C,SAAC,CAAC,CAAC;AAEP,QAAA,aAAa,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACxD,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aACpC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAI;YAC3B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;AACnD,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC3C,SAAC,CAAC,CAAC;AAEP,QAAA,aAAa,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACzD,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aACpC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAI;YAC7B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnD,YAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9C,SAAC,CAAC,CAAC;KACV;IAEO,YAAY,GAAA;QAChB,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,IAAI,CAAC;AACzD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;AACxC,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAC1B,IAAI,CAAC,YAAY;YACb,iBAAiB;AACjB,YAAA,IAAI,CAAC,aAAa;YAClB,CAAC,MAAM,CACd,CAAC;KACL;IAED,yBAAyB,GAAA;QACrB,OAAO,YAAW;YACd,IAAI;gBACA,IAAI,IAAI,CAAC,wBAAwB,EAAE;AAC/B,oBAAA,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;AACzC,iBAAA;AACJ,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;gBACR,OAAO,CAAC,GAAG,CACP,mDAAmD;oBAC/C,CAA2C,wCAAA,EAAA,CAAC,CAAE,CAAA,CACrD,CAAC;gBACF,OAAO;AACV,aAAA;YAED,IAAI;AACA,gBAAA,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC7B,gBAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;AACpD,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;gBACR,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAkB,eAAA,EAAA,CAAC,CAAE,CAAA,CAAC,CAAC;AACpD,aAAA;AACL,SAAC,CAAC;KACL;IAED,yBAAyB,GAAA;QACrB,OAAO,YAAW;YACd,IAAI;AACA,gBAAA,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC7B,gBAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;AACpD,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;gBACR,IAAI,CAAC,YAAY,sBAAsB,EAAE;oBACrC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC1C,iBAAA;AAAM,qBAAA;oBACH,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAkB,eAAA,EAAA,CAAC,CAAE,CAAA,CAAC,CAAC;AACpD,iBAAA;AACJ,aAAA;AACL,SAAC,CAAC;KACL;IAED,uBAAuB,GAAA;QACnB,OAAO,YAAW;YACd,IAAI;AACA,gBAAA,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AAC5B,gBAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;AACnD,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;gBACR,IAAI,CAAC,YAAY,sBAAsB,EAAE;oBACrC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAC1C,iBAAA;AAAM,qBAAA;oBACH,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAiB,cAAA,EAAA,CAAC,CAAE,CAAA,CAAC,CAAC;AACnD,iBAAA;AACJ,aAAA;AACL,SAAC,CAAC;KACL;IAED,yBAAyB,GAAA;QACrB,OAAO,YAAW;YACd,IAAI;AACA,gBAAA,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC7B,gBAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;AACpD,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;gBACR,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAkB,eAAA,EAAA,CAAC,CAAE,CAAA,CAAC,CAAC;AACpD,aAAA;AACL,SAAC,CAAC;KACL;IAED,yBAAyB,GAAA;QACrB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAChC;wGAlNQ,+CAA+C,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAK,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/C,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,+CAA+C,EC9B5D,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,m4CAmCA,EDPc,MAAA,EAAA,CAAA,6CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,yBAAyB,mwBAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAExC,+CAA+C,EAAA,UAAA,EAAA,CAAA;kBAV3D,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mDAAmD,cAMjD,IAAI,EAAA,OAAA,EACP,CAAC,yBAAyB,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,m4CAAA,EAAA,MAAA,EAAA,CAAA,6CAAA,CAAA,EAAA,CAAA;qGAOlD,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAIN,QAAQ,EAAA,CAAA;sBADP,KAAK;gBAIN,wBAAwB,EAAA,CAAA;sBADvB,KAAK;gBAIN,gBAAgB,EAAA,CAAA;sBADf,KAAK;gBAIN,UAAU,EAAA,CAAA;sBADT,KAAK;gBAIN,SAAS,EAAA,CAAA;sBADR,KAAK;gBAIN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAIN,aAAa,EAAA,CAAA;sBADZ,KAAK;;;IEvDE,YAIX;AAJD,CAAA,UAAY,WAAW,EAAA;AACnB,IAAA,WAAA,CAAA,WAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN,IAAA,WAAA,CAAA,WAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN,IAAA,WAAA,CAAA,WAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACX,CAAC,EAJW,WAAW,KAAX,WAAW,GAItB,EAAA,CAAA,CAAA;;MCEY,eAAe,CAAA;AACxB,IAAA,cAAc,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC,CAAC;AAEpD,IAAA,gBAAgB,CAAC,OAAgB,EAAA;AAC7B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACrC;AAED,IAAA,IAAI,aAAa,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;KACzC;wGATQ,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFZ,MAAM,EAAA,CAAA,CAAA;;4FAET,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;MCEY,aAAa,CAAA;AACtB,IAAA,UAAU,GAAG,IAAI,OAAO,EAAU,CAAC;IACnC,kBAAkB,GAAG,EAAE,CAAC;AAExB,IAAA,WAAW,GAAG,IAAI,OAAO,EAAiB,CAAC;IAC3C,mBAAmB,GAAkB,EAAE,CAAC;AAExC,IAAA,WAAA,GAAA,GAAgB;AAEhB,IAAA,QAAQ,CAAC,KAAoB,EAAA;AACzB,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;AACjC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAChC;AAED,IAAA,aAAa,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC/B;wGAjBQ,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFV,MAAM,EAAA,CAAA,CAAA;;4FAET,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;MCCY,aAAa,CAAA;AACtB,IAAA,MAAM,GAAG,IAAI,eAAe,CAAS,UAAU,CAAC,CAAC;AACjD,IAAA,UAAU,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC,CAAC;AAChD,IAAA,MAAM,GAAG,IAAI,eAAe,CAAgB,EAAE,CAAC,CAAC;AAEhD,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;KACjC;IAED,IAAI,KAAK,CAAC,KAAK,EAAA;AACX,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3B;AAED,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KACrC;IAED,IAAI,SAAS,CAAC,KAAK,EAAA;AACf,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC/B;AAED,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;KACjC;IAED,IAAI,KAAK,CAAC,KAAK,EAAA;AACX,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3B;AAED,IAAA,QAAQ,CAAC,KAAoB,EAAA;AACzB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;AAED,IAAA,QAAQ,CAAC,KAAa,EAAA;AAClB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;AAED,IAAA,UAAU,CAAC,KAAc,EAAA;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KAC1B;IAED,gBAAgB,CAAC,UAAkB,EAAE,UAAyB,EAAA;QAC1D,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AAE9B,QAAA,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;AACpB,YAAA,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE;AAC5B,gBAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBACnB,OAAO;AACV,aAAA;AACJ,SAAA;KACJ;wGAnDQ,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFV,MAAM,EAAA,CAAA,CAAA;;4FAET,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;MCEY,cAAc,CAAA;AAMY,IAAA,aAAA,CAAA;AACP,IAAA,MAAA,CAAA;IANX,QAAQ,GAAG,EAAE,CAAC;IACvB,UAAU,GAAa,EAAE,CAAC;IAC1B,QAAQ,GAAa,EAAE,CAAC;IAEhC,WACmC,CAAA,aAAa,EACpB,MAAM,EAAA;QADC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAA;QACpB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAA;QAE9B,IAAI,CAAC,MAAM,CAAC,MAAM;AACb,aAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,aAAa,CAAC,CAAC;AAC/C,aAAA,SAAS,CAAC,CAAC,CAAgB,KAAI;AAC5B,YAAA,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC/B,SAAC,CAAC,CAAC;;QAGP,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAa,KAAI;AAClD,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE;gBAC7B,OAAO;AACV,aAAA;AAED,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AACxD,SAAC,CAAC,CAAC;KACN;IAED,OAAO,CAAC,KAAK,GAAG,CAAC,EAAA;AACb,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,EAAE;AAC9B,YAAA,MAAM,IAAI,KAAK,CACX,CAAA,EAAG,KAAK,CAAA,sBAAA,EAAyB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA,CAAE,CAC1D,CAAC;AACL,SAAA;QAED,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE;AAC7B,YAAA,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AAC1B,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;AACzB,SAAA;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;KAClC;IAED,aAAa,GAAA;QACT,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACnC;IAED,UAAU,GAAA;;AAEN,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;KAC/B;AAEO,IAAA,kBAAkB,CAAC,CAAgB,EAAA;AACvC,QAAA,IAAI,OAAO,GAAG,CAAC,CAAC,iBAAiB,CAAC;QAClC,IAAI,OAAO,GAAG,EAAE,CAAC;AAEjB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;AAC3B,YAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAClD,YAAA,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAC3C,SAAA;QAED,IAAI,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;AAC1C,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;YAClD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;AACvC,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AAChC,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAClD,SAAA;;QAGD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AAChD,YAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;AAC/D,SAAA;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE;AACzC,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;AACtB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AAC3B,SAAA;KACJ;AAEO,IAAA,eAAe,CAAC,GAAW,EAAA;QAC/B,IAAI,GAAG,IAAI,IAAI,EAAE;AACb,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;AAED,QAAA,IAAI,KAAa,CAAC;QAElB,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC9B,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAa,KACzC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAChC,CAAC;AAEF,QAAA,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAElB,QAAA,IAAI,UAAU,EAAE;AACZ,YAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,KAAK,EAAE;AACnD,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AACpB,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;AACzB,aAAA;YACD,KAAK,IAAI,UAAU,CAAC;AACvB,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;wGAtGQ,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAMX,aAAa,EAAA,EAAA,EAAA,KAAA,EACb,MAAM,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAPT,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFX,MAAM,EAAA,CAAA,CAAA;;4FAET,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;0BAOQ,MAAM;2BAAC,aAAa,CAAA;;0BACpB,MAAM;2BAAC,MAAM,CAAA;;;MCbT,KAAK,CAAA;AACN,IAAA,KAAK,CAAM;AAEnB,IAAA,WAAA,CAAY,aAAqB,EAAA;QAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;KACzC;IAED,IAAI,GAAA;QACA,IAAI;YACA,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAC1C,IAAI,eAAe,IAAI,IAAI;AAAE,gBAAA,OAAO,eAAe,CAAC;AACvD,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;YACR,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvC,SAAA;AACD,QAAA,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;KAC5B;AACJ;;MChBY,QAAQ,CAAA;AACjB,IAAA,OAAO,KAAK,GAAA;AACR,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,OAAO,UAAU,GAAA;QACb,OAAO,WAAW,CAAC,OAAO,CAAC;KAC9B;AACJ;;ACVD;;AAEG;;;;"}