{"version":3,"file":"koobiq-components-navbar.mjs","sources":["../../../packages/components/navbar/navbar-item.component.ts","../../../packages/components/navbar/navbar-item.component.html","../../../packages/components/navbar/navbar-brand.component.ts","../../../packages/components/navbar/navbar.component.ts","../../../packages/components/navbar/vertical-navbar.component.ts","../../../packages/components/navbar/navbar-toggle.component.ts","../../../packages/components/navbar/navbar.module.ts","../../../packages/components/navbar/koobiq-components-navbar.ts"],"sourcesContent":["import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Platform } from '@angular/cdk/platform';\nimport {\n    AfterContentInit,\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    Directive,\n    ElementRef,\n    Input,\n    NgZone,\n    OnDestroy,\n    Optional,\n    ViewEncapsulation,\n    booleanAttribute,\n    inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { IFocusableOption } from '@koobiq/cdk/a11y';\nimport { DOWN_ARROW, RIGHT_ARROW } from '@koobiq/cdk/keycodes';\nimport { KbqButton, KbqButtonCssStyler } from '@koobiq/components/button';\nimport { KBQ_WINDOW, PopUpPlacements, PopUpTriggers, kbqInjectNativeElement } from '@koobiq/components/core';\nimport { KbqDropdownTrigger } from '@koobiq/components/dropdown';\nimport { KbqFormField } from '@koobiq/components/form-field';\nimport { KbqIcon } from '@koobiq/components/icon';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { Subject } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nexport interface KbqNavbarFocusableItemEvent {\n    item: KbqNavbarFocusableItem;\n}\n\n@Directive({\n    selector: 'kbq-navbar-logo, [kbq-navbar-logo]',\n    host: {\n        class: 'kbq-navbar-logo',\n        '(mouseenter)': 'hovered.next(true)',\n        '(mouseleave)': 'hovered.next(false)'\n    }\n})\nexport class KbqNavbarLogo {\n    readonly hovered = new Subject<boolean>();\n}\n\n@Directive({\n    selector: 'kbq-navbar-item[bento], [kbq-navbar-item][bento]',\n    host: {\n        class: 'kbq-navbar-bento'\n    }\n})\nexport class KbqNavbarBento {}\n\n@Directive({\n    selector: 'kbq-navbar-title, [kbq-navbar-title]',\n    host: {\n        class: 'kbq-navbar-title',\n        '[class.kbq-navbar-title_small]': 'isTextOverflown',\n\n        '(mouseenter)': 'hovered.next(true)',\n        '(mouseleave)': 'hovered.next(false)'\n    }\n})\nexport class KbqNavbarTitle implements AfterViewInit {\n    protected readonly isBrowser = inject(Platform).isBrowser;\n    protected readonly nativeElement = kbqInjectNativeElement();\n    private readonly window = inject(KBQ_WINDOW);\n\n    readonly hovered = new Subject<boolean>();\n\n    outerElementWidth: number;\n    isTextOverflown: boolean = false;\n\n    get text(): string {\n        return this.nativeElement.textContent || '';\n    }\n\n    get isOverflown() {\n        return this.nativeElement.scrollWidth > this.nativeElement.clientWidth;\n    }\n\n    getOuterElementWidth(): number {\n        if (!this.isBrowser) return 0;\n\n        const { width, marginLeft, marginRight } = this.window.getComputedStyle(this.nativeElement);\n\n        return [width, marginLeft, marginRight].reduce((acc, item) => acc + parseInt(item) || 0, 0);\n    }\n\n    checkTextOverflown() {\n        this.isTextOverflown = this.text.length > 18;\n    }\n\n    ngAfterViewInit(): void {\n        this.outerElementWidth = this.getOuterElementWidth();\n    }\n}\n\n@Directive({\n    selector: 'kbq-navbar-divider',\n    host: {\n        class: 'kbq-navbar-divider'\n    }\n})\nexport class KbqNavbarDivider {}\n\n@Directive({\n    selector: 'kbq-navbar-item, [kbq-navbar-item], kbq-navbar-brand, [kbq-navbar-brand], kbq-navbar-toggle',\n    host: {\n        '[attr.tabindex]': 'tabIndex',\n        '[attr.disabled]': 'disabled || null',\n\n        class: 'kbq-navbar-focusable-item',\n        '[class.kbq-navbar-item_has-nested]': '!!nestedElement',\n        '[class.kbq-disabled]': 'disabled',\n\n        '(focus)': 'onFocusHandler()',\n        '(blur)': 'blur()'\n    }\n})\nexport class KbqNavbarFocusableItem implements AfterContentInit, AfterViewInit, OnDestroy, IFocusableOption {\n    @ContentChild(KbqNavbarTitle) title: KbqNavbarTitle;\n\n    @ContentChild(KbqButton) button: KbqButton;\n\n    @ContentChild(KbqFormField) formField: KbqFormField;\n\n    get nestedElement(): KbqButton | KbqFormField {\n        return this.button || this.formField;\n    }\n\n    get tooltip(): KbqTooltipTrigger {\n        return this._tooltip;\n    }\n\n    private _tooltip: KbqTooltipTrigger;\n\n    readonly onFocus = new Subject<KbqNavbarFocusableItemEvent>();\n\n    readonly onBlur = new Subject<KbqNavbarFocusableItemEvent>();\n\n    get hasFocus(): boolean {\n        return !!this.nestedElement?.hasFocus || this._hasFocus;\n    }\n\n    set hasFocus(value: boolean) {\n        this._hasFocus = value;\n    }\n\n    private _hasFocus: boolean = false;\n\n    /** Whether the item is disabled. */\n    @Input({ transform: booleanAttribute })\n    get disabled() {\n        return this._disabled;\n    }\n\n    set disabled(value: boolean) {\n        if (value !== this._disabled) {\n            this._disabled = value;\n            this.changeDetector.markForCheck();\n        }\n    }\n\n    private _disabled = false;\n\n    get tabIndex(): number {\n        return -1;\n    }\n\n    constructor(\n        private elementRef: ElementRef<HTMLElement>,\n        private changeDetector: ChangeDetectorRef,\n        private focusMonitor: FocusMonitor,\n        private ngZone: NgZone\n    ) {}\n\n    ngAfterViewInit(): void {\n        this.focusMonitor.monitor(this.elementRef);\n    }\n\n    ngAfterContentInit(): void {\n        if (this.button) {\n            this.button.tabIndex = -1;\n        }\n    }\n\n    ngOnDestroy() {\n        this.focusMonitor.stopMonitoring(this.elementRef);\n    }\n\n    setTooltip(value: KbqTooltipTrigger) {\n        this._tooltip = value;\n    }\n\n    onFocusHandler() {\n        if (this.disabled || this.hasFocus) {\n            return;\n        }\n\n        this.onFocus.next({ item: this });\n\n        this.hasFocus = true;\n\n        this.changeDetector.markForCheck();\n\n        this.elementRef.nativeElement.focus();\n    }\n\n    focus(origin?: FocusOrigin): void {\n        if (this.disabled || this.hasFocus) {\n            return;\n        }\n\n        if (origin === 'keyboard') {\n            this.focusMonitor.focusVia(this.elementRef, origin);\n        }\n\n        if (this.nestedElement) {\n            if (origin === 'keyboard') {\n                this.nestedElement.focusViaKeyboard();\n            }\n\n            this.changeDetector.markForCheck();\n\n            return;\n        }\n\n        if (origin === 'keyboard') {\n            this.tooltip?.show();\n            this.onFocusHandler();\n        }\n    }\n\n    blur(): void {\n        // When animations are enabled, Angular may end up removing the option from the DOM a little\n        // earlier than usual, causing it to be blurred and throwing off the logic in the list\n        // that moves focus not the next item. To work around the issue, we defer marking the option\n        // as not focused until the next time the zone stabilizes.\n        this.ngZone.onStable\n            .asObservable()\n            .pipe(take(1))\n            .subscribe(() => {\n                this.ngZone.run(() => {\n                    this._hasFocus = false;\n\n                    this.tooltip?.hide();\n\n                    if (this.button?.hasFocus) {\n                        return;\n                    }\n\n                    this.onBlur.next({ item: this });\n                });\n            });\n    }\n\n    getLabel(): string {\n        return this.title?.text || '';\n    }\n}\n\n@Directive({\n    selector: 'kbq-navbar-item, [kbq-navbar-item], kbq-navbar-divider, kbq-navbar-brand, [kbq-navbar-brand]',\n    host: {\n        '[class.kbq-vertical]': 'vertical',\n        '[class.kbq-horizontal]': 'horizontal',\n\n        '[class.kbq-expanded]': 'vertical && !collapsed',\n        '[class.kbq-collapsed]': 'vertical && collapsed'\n    }\n})\nexport class KbqNavbarRectangleElement {\n    protected readonly isBrowser = inject(Platform).isBrowser;\n    protected readonly nativeElement = kbqInjectNativeElement();\n    private readonly window = inject(KBQ_WINDOW);\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n    readonly state = new Subject<void>();\n\n    get horizontal(): boolean {\n        return this._horizontal;\n    }\n\n    set horizontal(value: boolean) {\n        if (this._horizontal === value) return;\n\n        this._horizontal = value;\n        this._vertical = !value;\n\n        this.state.next();\n        this.changeDetectorRef.markForCheck();\n    }\n\n    private _horizontal: boolean = false;\n\n    get vertical(): boolean {\n        return this._vertical;\n    }\n\n    set vertical(value: boolean) {\n        if (this._vertical === value) return;\n\n        this._vertical = value;\n        this._horizontal = !value;\n\n        this.state.next();\n        this.changeDetectorRef.markForCheck();\n    }\n\n    private _vertical: boolean = true;\n\n    get collapsed(): boolean {\n        return this._collapsed;\n    }\n\n    set collapsed(value: boolean) {\n        this._collapsed = value;\n\n        this.state.next();\n    }\n\n    private _collapsed: boolean;\n\n    @ContentChild(KbqButtonCssStyler) button: KbqButtonCssStyler;\n\n    getOuterElementWidth(): number {\n        if (!this.isBrowser) return 0;\n\n        const { width, marginLeft, marginRight } = this.window.getComputedStyle(this.nativeElement);\n\n        return [width, marginLeft, marginRight].reduce((acc, item) => acc + parseInt(item), 0);\n    }\n}\n\n@Component({\n    selector: 'kbq-navbar-item, [kbq-navbar-item]',\n    imports: [\n        KbqIcon\n    ],\n    templateUrl: './navbar-item.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    exportAs: 'kbqNavbarItem',\n    host: {\n        class: 'kbq-navbar-item',\n        '[class.kbq-navbar-item_collapsed]': 'isCollapsed',\n        '[class.kbq-navbar-item_with-title]': '!!title',\n\n        '(keydown)': 'onKeyDown($event)'\n    }\n})\nexport class KbqNavbarItem extends KbqTooltipTrigger implements AfterContentInit {\n    @ContentChild(KbqNavbarTitle) title: KbqNavbarTitle;\n\n    @ContentChild(KbqIcon) icon: KbqIcon;\n\n    @Input()\n    get collapsedText(): string {\n        return this._collapsedText;\n    }\n\n    set collapsedText(value: string) {\n        this._collapsedText = value;\n\n        this.updateTooltip();\n    }\n\n    private _collapsedText: string;\n\n    @Input('kbqTrigger')\n    get trigger(): string {\n        return this._trigger;\n    }\n\n    set trigger(value: string) {\n        if (value) {\n            this._trigger = value;\n\n            this.initListeners();\n        }\n    }\n\n    set collapsed(value: boolean) {\n        if (this._collapsed !== value) {\n            this._collapsed = value;\n\n            this.updateTooltip();\n        }\n    }\n\n    // todo in future need rename to 'collapsed'\n    get isCollapsed(): boolean {\n        return this._collapsed ?? this.rectangleElement.collapsed;\n    }\n\n    private _collapsed = false;\n\n    get croppedText(): string {\n        const croppedTitleText = this.title?.isOverflown ? this.titleText : '';\n\n        return `${croppedTitleText}`;\n    }\n\n    @Input()\n    get collapsable(): boolean {\n        return this._collapsable;\n    }\n\n    set collapsable(value: boolean) {\n        this._collapsable = coerceBooleanProperty(value);\n    }\n\n    private _collapsable: boolean = true;\n\n    get titleText(): string | null {\n        return this._collapsedText || this.title?.text || null;\n    }\n\n    get disabled(): boolean {\n        if (this._disabled !== undefined) {\n            return this._disabled;\n        }\n\n        return !this.isCollapsed && !this.hasCroppedText;\n    }\n\n    set disabled(value) {\n        this._disabled = coerceBooleanProperty(value);\n    }\n\n    get hasDropDownTrigger(): boolean {\n        return !!this.dropdownTrigger;\n    }\n\n    get showVerticalDropDownAngle(): boolean {\n        return !this.bento && this.hasDropDownTrigger && this.rectangleElement.vertical && !this.isCollapsed;\n    }\n\n    get showHorizontalDropDownAngle(): boolean {\n        return this.hasDropDownTrigger && this.rectangleElement.horizontal && !this.isCollapsed;\n    }\n\n    get hasCroppedText(): boolean {\n        return !!this.title?.isOverflown;\n    }\n\n    constructor(\n        public rectangleElement: KbqNavbarRectangleElement,\n        public navbarFocusableItem: KbqNavbarFocusableItem,\n        private changeDetectorRef: ChangeDetectorRef,\n        @Optional() private dropdownTrigger: KbqDropdownTrigger,\n        @Optional() private bento: KbqNavbarBento\n    ) {\n        super();\n\n        if (this.hasDropDownTrigger) {\n            this.dropdownTrigger.openByArrowDown = false;\n        }\n\n        this.rectangleElement.state.pipe(takeUntilDestroyed()).subscribe(() => {\n            this.collapsed = this.rectangleElement.collapsed;\n\n            this.updateDropdown();\n\n            this.changeDetectorRef.detectChanges();\n        });\n\n        this._trigger = `${PopUpTriggers.Hover}`;\n\n        this.navbarFocusableItem.setTooltip(this);\n\n        this.arrow = false;\n        this.offset = 0;\n\n        this.overlayConfig.panelClass = 'kbq-tooltip-panel_horizontal-navbar';\n    }\n\n    ngAfterContentInit(): void {\n        this.updateTooltip();\n    }\n\n    updateDropdown(): void {\n        if (!this.dropdownTrigger?.dropdown) return;\n\n        if (this.rectangleElement.vertical) {\n            this.dropdownTrigger.dropdown.overlapTriggerX = false;\n            this.dropdownTrigger.dropdown.overlapTriggerY = true;\n            // needs to shift dropdown to the left by 8 pixels\n            this.dropdownTrigger.offsetX = -8;\n        }\n    }\n\n    updateTooltip(): void {\n        if (this.isCollapsed) {\n            this.content = `${this.titleText || ''}`;\n        } else if (!this.isCollapsed && this.hasCroppedText) {\n            this.content = this.croppedText;\n        }\n\n        if (this.rectangleElement.vertical) {\n            this.placement = PopUpPlacements.Right;\n            this.placementPriority = PopUpPlacements.Right;\n        }\n\n        this.changeDetectorRef.markForCheck();\n    }\n\n    getTitleWidth(): number {\n        return this.title.outerElementWidth;\n    }\n\n    onKeyDown($event: KeyboardEvent) {\n        if (!this.hasDropDownTrigger) {\n            return;\n        }\n\n        if (\n            (this.rectangleElement.horizontal && $event.keyCode === DOWN_ARROW) ||\n            (this.rectangleElement.vertical && $event.keyCode === RIGHT_ARROW)\n        ) {\n            this.dropdownTrigger.openedBy = 'keyboard';\n            this.dropdownTrigger.open();\n\n            $event.stopPropagation();\n            $event.preventDefault();\n        }\n    }\n}\n","<ng-content select=\"[kbq-icon]\" />\n\n@if (title) {\n    <div class=\"kbq-navbar-item__container\">\n        <div class=\"kbq-navbar-item__title\">\n            <ng-content select=\"kbq-navbar-title, [kbq-navbar-title]\" />\n        </div>\n        @if (showVerticalDropDownAngle) {\n            <i class=\"kbq-navbar-item__arrow-icon\" kbq-icon=\"kbq-chevron-right_16\" color=\"contrast\"></i>\n        }\n        @if (showHorizontalDropDownAngle) {\n            <i class=\"kbq-navbar-item__arrow-icon\" kbq-icon=\"kbq-chevron-down-s_16\" color=\"contrast\"></i>\n        }\n    </div>\n}\n\n<ng-content />\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { AfterContentInit, ChangeDetectorRef, Component, ContentChild, inject, Input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { kbqInjectNativeElement, PopUpPlacements, PopUpTriggers } from '@koobiq/components/core';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { KbqNavbarFocusableItem, KbqNavbarRectangleElement, KbqNavbarTitle } from './navbar-item.component';\n\n@Component({\n    selector: 'kbq-navbar-brand, [kbq-navbar-brand]',\n    exportAs: 'kbqNavbarBrand',\n    template: `\n        <ng-content />\n    `,\n    styleUrls: [\n        './navbar-brand.scss'\n    ],\n    host: {\n        class: 'kbq-navbar-brand',\n        '[class.kbq-navbar-brand_long-title]': 'longTitle',\n        '[class.kbq-navbar-brand_link]': 'isLink'\n    }\n})\nexport class KbqNavbarBrand extends KbqTooltipTrigger implements AfterContentInit {\n    /** @docs-private */\n    protected readonly nativeElement = kbqInjectNativeElement();\n    /** @docs-private */\n    protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n    /** @docs-private */\n    protected readonly rectangleElement = inject(KbqNavbarRectangleElement);\n    /** @docs-private */\n    protected readonly navbarFocusableItem = inject(KbqNavbarFocusableItem);\n\n    /** @docs-private */\n    @ContentChild(KbqNavbarTitle) title: KbqNavbarTitle;\n\n    /** alternative display of the brand name in two lines */\n    @Input() longTitle: boolean = false;\n\n    /** text that will be displayed in the tooltip. By default, the text is taken from kbq-navbar-title. */\n    @Input()\n    get collapsedText(): string {\n        return this._collapsedText;\n    }\n\n    set collapsedText(value: string) {\n        this._collapsedText = value;\n\n        this.updateTooltip();\n    }\n\n    private _collapsedText: string;\n\n    get isLink(): boolean {\n        return this.nativeElement.tagName === 'A';\n    }\n\n    /** @docs-private */\n    get croppedText(): string {\n        const croppedTitleText = this.title?.isOverflown ? this.titleText : '';\n\n        return `${croppedTitleText}`;\n    }\n\n    /** @docs-private */\n    get hasCroppedText(): boolean {\n        return !!this.title?.isOverflown;\n    }\n\n    /** @docs-private */\n    get titleText(): string | null {\n        return this.collapsedText || this.title?.text || null;\n    }\n\n    /** @docs-private */\n    get disabled(): boolean {\n        if (this._disabled !== undefined) {\n            return this._disabled;\n        }\n\n        return !this.collapsed && !this.hasCroppedText;\n    }\n\n    set disabled(value) {\n        this._disabled = coerceBooleanProperty(value);\n    }\n\n    /** @docs-private */\n    get collapsed(): boolean {\n        return this._collapsed ?? this.rectangleElement.collapsed;\n    }\n\n    set collapsed(value: boolean) {\n        if (this._collapsed !== value) {\n            this._collapsed = value;\n\n            this.updateTooltip();\n        }\n    }\n\n    private _collapsed = false;\n\n    constructor() {\n        super();\n\n        this.rectangleElement.state.pipe(takeUntilDestroyed()).subscribe(() => {\n            this.collapsed = this.rectangleElement.collapsed;\n\n            this.changeDetectorRef.detectChanges();\n        });\n\n        this._trigger = `${PopUpTriggers.Hover}`;\n\n        this.navbarFocusableItem.setTooltip(this);\n\n        this.arrow = false;\n        this.offset = 0;\n\n        this.navbarFocusableItem.disabled = !this.isLink;\n    }\n\n    ngAfterContentInit(): void {\n        this.updateTooltip();\n    }\n\n    private updateTooltip(): void {\n        if (this.collapsed) {\n            this.content = `${this.titleText || ''}`;\n        } else if (!this.collapsed && this.hasCroppedText) {\n            this.content = this.croppedText;\n        }\n\n        if (this.rectangleElement.vertical) {\n            this.placement = PopUpPlacements.Right;\n        }\n\n        this.changeDetectorRef.markForCheck();\n    }\n}\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport {\n    AfterContentInit,\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    contentChildren,\n    ContentChildren,\n    DestroyRef,\n    Directive,\n    effect,\n    ElementRef,\n    forwardRef,\n    inject,\n    Input,\n    OnDestroy,\n    QueryList,\n    ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FocusKeyManager } from '@koobiq/cdk/a11y';\nimport { isHorizontalMovement, isVerticalMovement, LEFT_ARROW, RIGHT_ARROW, TAB } from '@koobiq/cdk/keycodes';\nimport { KBQ_DROPDOWN_HOST } from '@koobiq/components/dropdown';\nimport { merge, Observable, Subject, Subscription } from 'rxjs';\nimport { debounceTime, startWith } from 'rxjs/operators';\nimport {\n    KbqNavbarFocusableItem,\n    KbqNavbarFocusableItemEvent,\n    KbqNavbarItem,\n    KbqNavbarRectangleElement\n} from './navbar-item.component';\n\nexport type KbqNavbarContainerPositionType = 'left' | 'right';\n\n@Directive()\nexport class KbqFocusableComponent implements AfterContentInit, AfterViewInit, OnDestroy {\n    @ContentChildren(forwardRef(() => KbqNavbarFocusableItem), { descendants: true })\n    focusableItems: QueryList<KbqNavbarFocusableItem>;\n\n    keyManager: FocusKeyManager<KbqNavbarFocusableItem>;\n\n    @Input()\n    get tabIndex(): any {\n        return this._tabIndex;\n    }\n\n    set tabIndex(value: any) {\n        this._tabIndex = value;\n    }\n\n    private _tabIndex = 0;\n\n    private lastFocusOrigin: FocusOrigin = null;\n\n    get optionFocusChanges(): Observable<KbqNavbarFocusableItemEvent> {\n        return merge(...this.focusableItems.map((item) => item.onFocus));\n    }\n\n    get optionBlurChanges(): Observable<KbqNavbarFocusableItemEvent> {\n        return merge(...this.focusableItems.map((option) => option.onBlur));\n    }\n\n    private readonly destroyRef = inject(DestroyRef);\n\n    private optionFocusSubscription: Subscription | null;\n    private optionBlurSubscription: Subscription | null;\n\n    constructor(\n        protected readonly changeDetectorRef: ChangeDetectorRef,\n        protected readonly elementRef: ElementRef<HTMLElement>,\n        protected readonly focusMonitor: FocusMonitor\n    ) {}\n\n    ngAfterContentInit(): void {\n        this.keyManager = new FocusKeyManager<KbqNavbarFocusableItem>(this.focusableItems).withTypeAhead();\n\n        this.keyManager.tabOut.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n            this.tabIndex = -1;\n\n            setTimeout(() => {\n                this.tabIndex = 0;\n                this.changeDetectorRef.markForCheck();\n            });\n        });\n\n        this.focusableItems.changes.pipe(startWith(null), takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n            this.resetOptions();\n\n            // Check to see if we need to update our tab index\n            this.updateTabIndex();\n        });\n    }\n\n    ngAfterViewInit(): void {\n        this.focusMonitor.monitor(this.elementRef).subscribe((focusOrigin) => {\n            this.lastFocusOrigin = focusOrigin;\n            this.keyManager.setFocusOrigin(focusOrigin);\n        });\n    }\n\n    ngOnDestroy() {\n        this.focusMonitor.stopMonitoring(this.elementRef);\n    }\n\n    focus(): void {\n        if (this.focusableItems.length === 0) {\n            return;\n        }\n\n        // Pointer focus on the navbar host (e.g. clicking empty area) should not\n        // steal keyboard focus into the first item, which would surface its tooltip.\n        if (this.lastFocusOrigin === 'mouse' || this.lastFocusOrigin === 'touch') {\n            return;\n        }\n\n        this.keyManager.setFirstItemActive();\n    }\n\n    blur() {\n        if (!this.hasFocusedItem()) {\n            this.keyManager.setActiveItem(-1);\n        }\n\n        this.changeDetectorRef.markForCheck();\n    }\n\n    protected resetOptions() {\n        this.dropSubscriptions();\n        this.listenToOptionsFocus();\n    }\n\n    protected dropSubscriptions() {\n        if (this.optionFocusSubscription) {\n            this.optionFocusSubscription.unsubscribe();\n            this.optionFocusSubscription = null;\n        }\n\n        if (this.optionBlurSubscription) {\n            this.optionBlurSubscription.unsubscribe();\n            this.optionBlurSubscription = null;\n        }\n    }\n\n    private listenToOptionsFocus(): void {\n        this.optionFocusSubscription = this.optionFocusChanges.subscribe((event) => {\n            const index: number = this.focusableItems.toArray().indexOf(event.item);\n\n            if (this.isValidIndex(index)) {\n                this.keyManager.updateActiveItem(index);\n            }\n        });\n\n        this.optionBlurSubscription = this.optionBlurChanges.subscribe(() => this.blur());\n    }\n\n    private updateTabIndex(): void {\n        this.tabIndex = this.focusableItems.length === 0 ? -1 : 0;\n    }\n\n    private isValidIndex(index: number): boolean {\n        return index >= 0 && index < this.focusableItems.length;\n    }\n\n    private hasFocusedItem() {\n        return this.focusableItems.some((item) => item.hasFocus);\n    }\n}\n\n@Directive({\n    selector: 'kbq-navbar-container',\n    host: {\n        class: 'kbq-navbar-container'\n    }\n})\nexport class KbqNavbarContainer {}\n\n@Component({\n    selector: 'kbq-navbar',\n    template: `\n        <ng-content select=\"[kbq-navbar-container], kbq-navbar-container\" />\n    `,\n    styleUrls: [\n        './navbar.scss',\n        './navbar-item.scss',\n        './navbar-brand.scss',\n        './navbar-divider.scss',\n        './navbar-tokens.scss'\n    ],\n    providers: [\n        { provide: KBQ_DROPDOWN_HOST, useExisting: KbqNavbar }\n    ],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'kbq-navbar',\n        '[attr.tabindex]': 'tabIndex',\n        '(focus)': 'focus()',\n        '(blur)': 'blur()',\n        '(keydown)': 'onKeyDown($event)',\n        '(window:resize)': 'resizeStream.next($event)'\n    }\n})\nexport class KbqNavbar extends KbqFocusableComponent implements AfterViewInit, AfterContentInit, OnDestroy {\n    readonly rectangleElements = contentChildren(\n        forwardRef(() => KbqNavbarRectangleElement),\n        { descendants: true }\n    );\n\n    @ContentChildren(forwardRef(() => KbqNavbarItem), { descendants: true }) navbarItems: QueryList<KbqNavbarItem>;\n\n    readonly resizeStream = new Subject<Event>();\n\n    private readonly resizeDebounceInterval: number = 100;\n\n    private get width(): number {\n        const element = this.elementRef.nativeElement;\n\n        // For SSR compatibility\n        if (typeof element.getClientRects !== 'function') return 0;\n\n        return element.getBoundingClientRect().width;\n    }\n\n    private get totalItemsWidth(): number {\n        return this.rectangleElements().reduce((acc, item) => acc + item.getOuterElementWidth(), 0);\n    }\n\n    private get collapsableItems(): KbqNavbarItem[] {\n        return this.navbarItems\n            .toArray()\n            .filter((item) => item.icon && item.title && item.collapsable)\n            .reverse();\n    }\n\n    private resizeSubscription: Subscription;\n\n    constructor(\n        protected readonly elementRef: ElementRef<HTMLElement>,\n        protected readonly changeDetectorRef: ChangeDetectorRef,\n        protected readonly focusMonitor: FocusMonitor\n    ) {\n        super(changeDetectorRef, elementRef, focusMonitor);\n\n        this.resizeSubscription = this.resizeStream\n            .pipe(debounceTime(this.resizeDebounceInterval), takeUntilDestroyed())\n            .subscribe(this.updateExpandedStateForItems);\n\n        effect(() => this.setItemsState(this.rectangleElements()));\n    }\n\n    ngAfterContentInit(): void {\n        super.ngAfterContentInit();\n\n        this.keyManager.withVerticalOrientation(false).withHorizontalOrientation('ltr');\n    }\n\n    ngAfterViewInit(): void {\n        super.ngAfterViewInit();\n\n        // Note: this wait is required for loading and rendering fonts for icons;\n        // unfortunately we cannot control font rendering\n        setTimeout(this.updateExpandedStateForItems);\n    }\n\n    ngOnDestroy() {\n        this.resizeSubscription.unsubscribe();\n\n        super.ngOnDestroy();\n    }\n\n    onKeyDown(event: KeyboardEvent) {\n        const keyCode = event.keyCode;\n\n        if (!this.eventFromInput(event) && (isVerticalMovement(event) || isHorizontalMovement(event))) {\n            event.preventDefault();\n        }\n\n        if (keyCode === TAB) {\n            this.keyManager.tabOut.next();\n\n            return;\n        } else if (this.eventFromInput(event) && this.cursorOnLastPosition(event) && keyCode === RIGHT_ARROW) {\n            this.keyManager.setNextItemActive();\n        } else if (this.eventFromInput(event) && this.cursorOnFirstPosition(event) && keyCode === LEFT_ARROW) {\n            this.keyManager.setPreviousItemActive();\n        } else if (!this.eventFromInput(event)) {\n            this.keyManager.onKeydown(event);\n        }\n    }\n\n    updateExpandedStateForItems = () => {\n        const collapseDelta = this.totalItemsWidth - this.width;\n\n        const needCollapse = collapseDelta > 0;\n\n        if (needCollapse) {\n            this.collapseItems(collapseDelta);\n        } else {\n            this.expandItems(collapseDelta);\n        }\n    };\n\n    private eventFromInput(event: KeyboardEvent): boolean {\n        return !!(event.target as HTMLElement).attributes.getNamedItem('kbqinput');\n    }\n\n    private cursorOnFirstPosition(event: KeyboardEvent): boolean {\n        const input = event.target as HTMLInputElement;\n\n        return input.selectionStart === 0;\n    }\n\n    private cursorOnLastPosition(event: KeyboardEvent): boolean {\n        const input = event.target as HTMLInputElement;\n\n        return input.selectionEnd === input.value.length;\n    }\n\n    private collapseItems(collapseDelta: number) {\n        let delta = collapseDelta;\n\n        const unCollapsedItems = this.collapsableItems.filter((item) => !item.collapsed);\n\n        for (const item of unCollapsedItems) {\n            item.collapsed = true;\n            delta -= item.getTitleWidth();\n\n            if (delta < 0) {\n                break;\n            }\n        }\n    }\n\n    private expandItems(collapseDelta: number) {\n        let delta = collapseDelta;\n\n        this.collapsableItems\n            .filter((item) => item.collapsed)\n            .forEach((item) => {\n                if (delta + item.getTitleWidth() < 0) {\n                    item.collapsed = false;\n                    delta += item.getTitleWidth();\n                }\n            });\n    }\n\n    private setItemsState = (rectangleElements: Readonly<KbqNavbarRectangleElement[]>) => {\n        Promise.resolve().then(() => rectangleElements.forEach((item) => (item.horizontal = true)));\n    };\n}\n","import { CdkMonitorFocus, FocusMonitor } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n    AfterContentInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    contentChildren,\n    ContentChildren,\n    effect,\n    ElementRef,\n    forwardRef,\n    inject,\n    InjectionToken,\n    Input,\n    QueryList,\n    ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DOWN_ARROW, isHorizontalMovement, isVerticalMovement, TAB, UP_ARROW } from '@koobiq/cdk/keycodes';\nimport { KBQ_LOCALE_SERVICE, ruRULocaleData } from '@koobiq/components/core';\nimport { Subject } from 'rxjs';\nimport { KbqNavbarBento, KbqNavbarItem, KbqNavbarRectangleElement } from './navbar-item.component';\nimport { KbqFocusableComponent } from './navbar.component';\n\n/** default configuration of navbar */\n/** @docs-private */\nexport const KBQ_VERTICAL_NAVBAR_DEFAULT_CONFIGURATION = ruRULocaleData.navbar;\n\n/** Injection Token for providing configuration of navbar */\n/** @docs-private */\nexport const KBQ_VERTICAL_NAVBAR_CONFIGURATION = new InjectionToken('KbqVerticalNavbarConfiguration');\n\n@Component({\n    selector: 'kbq-vertical-navbar',\n    template: `\n        <div class=\"kbq-vertical-navbar__container\" [class.kbq-collapsed]=\"!expanded\" [class.kbq-expanded]=\"expanded\">\n            <ng-content select=\"[kbq-navbar-container], kbq-navbar-container\" />\n            <ng-content select=\"[kbq-navbar-toggle], kbq-navbar-toggle\" />\n        </div>\n    `,\n    styleUrls: [\n        './vertical-navbar.scss',\n        './navbar-item.scss',\n        './navbar-brand.scss',\n        './navbar-divider.scss',\n        './navbar-tokens.scss'\n    ],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    exportAs: 'KbqVerticalNavbar',\n    host: {\n        class: 'kbq-vertical-navbar',\n        '[class.kbq-vertical-navbar_open-over]': 'openOver',\n        '[attr.tabindex]': 'tabIndex',\n        '[attr.cdkMonitorSubtreeFocus]': 'true',\n\n        '(focus)': 'focus()',\n        '(blur)': 'blur()',\n\n        '(keydown)': 'onKeyDown($event)'\n    },\n    hostDirectives: [CdkMonitorFocus]\n})\nexport class KbqVerticalNavbar extends KbqFocusableComponent implements AfterContentInit {\n    /** @docs-private */\n    protected readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n\n    readonly externalConfiguration = inject(KBQ_VERTICAL_NAVBAR_CONFIGURATION, { optional: true });\n\n    configuration;\n\n    rectangleElements = contentChildren(\n        forwardRef(() => KbqNavbarRectangleElement),\n        { descendants: true }\n    );\n\n    @ContentChildren(forwardRef(() => KbqNavbarItem), { descendants: true }) items: QueryList<KbqNavbarItem>;\n\n    @ContentChild(forwardRef(() => KbqNavbarBento)) bento: KbqNavbarBento;\n\n    readonly animationDone: Subject<void> = new Subject();\n\n    @Input() openOver: boolean = false;\n\n    @Input()\n    get expanded() {\n        return this._expanded;\n    }\n\n    set expanded(value: boolean) {\n        this._expanded = coerceBooleanProperty(value);\n\n        this.updateExpandedStateForItems();\n    }\n\n    private _expanded: boolean = false;\n\n    constructor(\n        protected elementRef: ElementRef<HTMLElement>,\n        changeDetectorRef: ChangeDetectorRef,\n        focusMonitor: FocusMonitor\n    ) {\n        super(changeDetectorRef, elementRef, focusMonitor);\n\n        this.animationDone.pipe(takeUntilDestroyed()).subscribe(this.updateTooltipForItems);\n\n        effect(() => this.setItemsVerticalStateAndUpdateExpandedState(this.rectangleElements()));\n\n        this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n        if (!this.localeService) {\n            this.initDefaultParams();\n        }\n    }\n\n    ngAfterContentInit(): void {\n        this.updateTooltipForItems();\n\n        super.ngAfterContentInit();\n\n        this.keyManager.withVerticalOrientation(true);\n    }\n\n    toggle(): void {\n        this.expanded = !this.expanded;\n\n        this.changeDetectorRef.markForCheck();\n    }\n\n    onKeyDown(event: KeyboardEvent) {\n        const keyCode = event.keyCode;\n\n        if (\n            !(event.target as HTMLElement).attributes.getNamedItem('kbqinput') &&\n            (isVerticalMovement(event) || isHorizontalMovement(event))\n        ) {\n            event.preventDefault();\n        }\n\n        if (keyCode === TAB) {\n            this.keyManager.tabOut.next();\n\n            return;\n        } else if (keyCode === DOWN_ARROW) {\n            this.keyManager.setNextItemActive();\n        } else if (keyCode === UP_ARROW) {\n            this.keyManager.setPreviousItemActive();\n        } else {\n            this.keyManager.onKeydown(event);\n        }\n    }\n\n    private updateExpandedStateForItems = () => this.rectangleElements().forEach(this.updateItemExpandedState);\n\n    private updateTooltipForItems = () => this.items.forEach((item) => item.updateTooltip());\n\n    private setItemsVerticalStateAndUpdateExpandedState = (rectangleElements: Readonly<KbqNavbarRectangleElement[]>) =>\n        rectangleElements.forEach(this.setItemVerticalStateAndUpdateExpandedState);\n\n    private setItemVerticalStateAndUpdateExpandedState = (item: KbqNavbarRectangleElement): void => {\n        queueMicrotask(() => this.setItemVerticalState(item));\n        this.updateItemExpandedState(item);\n    };\n\n    private setItemVerticalState = (item: KbqNavbarRectangleElement): void => {\n        item.vertical = true;\n    };\n\n    private updateItemExpandedState = (item: KbqNavbarRectangleElement): void => {\n        item.collapsed = !this.expanded;\n        setTimeout(() => item.button?.updateClassModifierForIcons());\n    };\n\n    private updateLocaleParams = () => {\n        this.configuration = this.externalConfiguration || this.localeService?.getParams('navbar');\n\n        this.changeDetectorRef.markForCheck();\n    };\n\n    private initDefaultParams() {\n        this.configuration = KBQ_VERTICAL_NAVBAR_DEFAULT_CONFIGURATION;\n    }\n}\n","import { CdkMonitorFocus } from '@angular/cdk/a11y';\nimport {\n    afterNextRender,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    inject,\n    NgZone,\n    OnDestroy,\n    ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ENTER, NUMPAD_DIVIDE, SLASH, SPACE } from '@koobiq/cdk/keycodes';\nimport { KBQ_WINDOW, PopUpPlacements } from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { KbqVerticalNavbar } from './vertical-navbar.component';\n\n@Component({\n    selector: 'kbq-navbar-toggle, [kbq-navbar-toggle]',\n    imports: [\n        KbqIconModule\n    ],\n    template: `\n        <span class=\"kbq-navbar-toggle__circle\">\n            <ng-content select=\"[kbq-icon]\">\n                <i\n                    kbq-icon\n                    [class.kbq-chevron-double-left-s_16]=\"navbar.expanded\"\n                    [class.kbq-chevron-double-right-s_16]=\"!navbar.expanded\"\n                ></i>\n            </ng-content>\n        </span>\n    `,\n    styleUrls: ['./navbar-toggle.scss'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'kbq-navbar-toggle kbq-vertical',\n        '[class.kbq-collapsed]': '!navbar.expanded',\n        '[class.kbq-expanded]': 'navbar.expanded',\n\n        '(keydown)': 'keydownHandler($event)',\n        '(click)': 'toggle()'\n    },\n    hostDirectives: [CdkMonitorFocus, KbqTooltipTrigger]\n})\nexport class KbqNavbarToggle implements OnDestroy {\n    private readonly window = inject(KBQ_WINDOW);\n    private readonly ngZone = inject(NgZone);\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n    private readonly tooltip = inject(KbqTooltipTrigger, { self: true });\n\n    /** @docs-private */\n    protected readonly navbar = inject(KbqVerticalNavbar);\n\n    constructor() {\n        afterNextRender(() => {\n            this.ngZone.runOutsideAngular(() => this.window.addEventListener('keydown', this.windowToggleHandler));\n        });\n\n        this.tooltip.arrow = false;\n        this.updateTooltipContent();\n        this.tooltip.tooltipPlacement = PopUpPlacements.Right;\n\n        this.tooltip.visibleChange.pipe(takeUntilDestroyed()).subscribe(this.updateTooltipContent);\n    }\n\n    ngOnDestroy(): void {\n        this.window.removeEventListener('keydown', this.windowToggleHandler);\n    }\n\n    /** @docs-private */\n    keydownHandler($event: KeyboardEvent) {\n        if ([SPACE, ENTER].includes($event.keyCode)) {\n            this.toggle();\n\n            $event.stopPropagation();\n            $event.preventDefault();\n        }\n    }\n\n    /** toggles the state of the navbar */\n    toggle() {\n        this.navbar.toggle();\n        this.tooltip.hide();\n\n        this.changeDetectorRef.detectChanges();\n    }\n\n    private updateTooltipContent = () => {\n        this.tooltip.content = this.navbar.expanded\n            ? this.navbar.configuration.toggle.collapse\n            : this.navbar.configuration.toggle.expand;\n    };\n\n    private windowToggleHandler = (event: KeyboardEvent) => {\n        if (event.ctrlKey && [NUMPAD_DIVIDE, SLASH].includes(event.keyCode)) {\n            this.ngZone.run(this.navbar.toggle);\n        }\n    };\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { NgModule } from '@angular/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqToolTipModule } from '@koobiq/components/tooltip';\nimport { KbqNavbarBrand } from './navbar-brand.component';\nimport {\n    KbqNavbarBento,\n    KbqNavbarDivider,\n    KbqNavbarFocusableItem,\n    KbqNavbarItem,\n    KbqNavbarLogo,\n    KbqNavbarRectangleElement,\n    KbqNavbarTitle\n} from './navbar-item.component';\nimport { KbqNavbarToggle } from './navbar-toggle.component';\nimport { KbqNavbar, KbqNavbarContainer } from './navbar.component';\nimport { KbqVerticalNavbar } from './vertical-navbar.component';\n\n@NgModule({\n    imports: [\n        A11yModule,\n        PlatformModule,\n        KbqIconModule,\n        KbqToolTipModule,\n        KbqNavbar,\n        KbqNavbarContainer,\n        KbqNavbarTitle,\n        KbqNavbarItem,\n        KbqNavbarBrand,\n        KbqNavbarLogo,\n        KbqNavbarToggle,\n        KbqVerticalNavbar,\n        KbqNavbarDivider,\n        KbqNavbarFocusableItem,\n        KbqNavbarRectangleElement,\n        KbqNavbarBento\n    ],\n    exports: [\n        KbqNavbar,\n        KbqNavbarContainer,\n        KbqNavbarTitle,\n        KbqNavbarItem,\n        KbqNavbarBrand,\n        KbqNavbarLogo,\n        KbqNavbarToggle,\n        KbqVerticalNavbar,\n        KbqNavbarDivider,\n        KbqNavbarFocusableItem,\n        KbqNavbarRectangleElement,\n        KbqNavbarBento\n    ]\n})\nexport class KbqNavbarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2"],"mappings":";;;;;;;;;;;;;;;;;;;;;MA4Ca,aAAa,CAAA;AAR1B,IAAA,WAAA,GAAA;AASa,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAW;AAC5C,IAAA;kIAFY,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBARzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oCAAoC;AAC9C,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,iBAAiB;AACxB,wBAAA,cAAc,EAAE,oBAAoB;AACpC,wBAAA,cAAc,EAAE;AACnB;AACJ,iBAAA;;MAWY,cAAc,CAAA;kIAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kDAAkD;AAC5D,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV;AACJ,iBAAA;;MAaY,cAAc,CAAA;AAV3B,IAAA,WAAA,GAAA;AAWuB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS;QACtC,IAAA,CAAA,aAAa,GAAG,sBAAsB,EAAE;AAC1C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;AAEnC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAW;QAGzC,IAAA,CAAA,eAAe,GAAY,KAAK;AAyBnC,IAAA;AAvBG,IAAA,IAAI,IAAI,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,IAAI,EAAE;IAC/C;AAEA,IAAA,IAAI,WAAW,GAAA;QACX,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW;IAC1E;IAEA,oBAAoB,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,SAAS;AAAE,YAAA,OAAO,CAAC;AAE7B,QAAA,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC;AAE3F,QAAA,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/F;IAEA,kBAAkB,GAAA;QACd,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE;IAChD;IAEA,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,EAAE;IACxD;kIAhCS,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,8BAAA,EAAA,iBAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAV1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sCAAsC;AAChD,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,kBAAkB;AACzB,wBAAA,gCAAgC,EAAE,iBAAiB;AAEnD,wBAAA,cAAc,EAAE,oBAAoB;AACpC,wBAAA,cAAc,EAAE;AACnB;AACJ,iBAAA;;MA0CY,gBAAgB,CAAA;kIAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV;AACJ,iBAAA;;MAiBY,sBAAsB,CAAA;AAO/B,IAAA,IAAI,aAAa,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS;IACxC;AAEA,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ;IACxB;AAQA,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,IAAI,IAAI,CAAC,SAAS;IAC3D;IAEA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;IAC1B;;AAKA,IAAA,IACI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS;IACzB;IAEA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;QACtC;IACJ;AAIA,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,CAAC,CAAC;IACb;AAEA,IAAA,WAAA,CACY,UAAmC,EACnC,cAAiC,EACjC,YAA0B,EAC1B,MAAc,EAAA;QAHd,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,cAAc,GAAd,cAAc;QACd,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,MAAM,GAAN,MAAM;AArCT,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAA+B;AAEpD,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,OAAO,EAA+B;QAUpD,IAAA,CAAA,SAAS,GAAY,KAAK;QAe1B,IAAA,CAAA,SAAS,GAAG,KAAK;IAWtB;IAEH,eAAe,GAAA;QACX,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;IAC9C;IAEA,kBAAkB,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC7B;IACJ;IAEA,WAAW,GAAA;QACP,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC;IACrD;AAEA,IAAA,UAAU,CAAC,KAAwB,EAAA;AAC/B,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;IACzB;IAEA,cAAc,GAAA;QACV,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;YAChC;QACJ;QAEA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAEjC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AAEpB,QAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;AAElC,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;IACzC;AAEA,IAAA,KAAK,CAAC,MAAoB,EAAA;QACtB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;YAChC;QACJ;AAEA,QAAA,IAAI,MAAM,KAAK,UAAU,EAAE;YACvB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC;QACvD;AAEA,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,IAAI,MAAM,KAAK,UAAU,EAAE;AACvB,gBAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE;YACzC;AAEA,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;YAElC;QACJ;AAEA,QAAA,IAAI,MAAM,KAAK,UAAU,EAAE;AACvB,YAAA,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;YACpB,IAAI,CAAC,cAAc,EAAE;QACzB;IACJ;IAEA,IAAI,GAAA;;;;;QAKA,IAAI,CAAC,MAAM,CAAC;AACP,aAAA,YAAY;AACZ,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACZ,SAAS,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACjB,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AAEtB,gBAAA,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;AAEpB,gBAAA,IAAI,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE;oBACvB;gBACJ;gBAEA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACpC,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;IACV;IAEA,QAAQ,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE;IACjC;kIA3IS,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,4KAgCX,gBAAgB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,kCAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,2BAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA/BtB,cAAc,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAEd,SAAS,4EAET,YAAY,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FALjB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAdlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,6FAA6F;AACvG,oBAAA,IAAI,EAAE;AACF,wBAAA,iBAAiB,EAAE,UAAU;AAC7B,wBAAA,iBAAiB,EAAE,kBAAkB;AAErC,wBAAA,KAAK,EAAE,2BAA2B;AAClC,wBAAA,oCAAoC,EAAE,iBAAiB;AACvD,wBAAA,sBAAsB,EAAE,UAAU;AAElC,wBAAA,SAAS,EAAE,kBAAkB;AAC7B,wBAAA,QAAQ,EAAE;AACb;AACJ,iBAAA;+JAEiC,KAAK,EAAA,CAAA;sBAAlC,YAAY;uBAAC,cAAc;gBAEH,MAAM,EAAA,CAAA;sBAA9B,YAAY;uBAAC,SAAS;gBAEK,SAAS,EAAA,CAAA;sBAApC,YAAY;uBAAC,YAAY;gBA4BtB,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;MAwH7B,yBAAyB,CAAA;AAVtC,IAAA,WAAA,GAAA;AAWuB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS;QACtC,IAAA,CAAA,aAAa,GAAG,sBAAsB,EAAE;AAC1C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;AAC3B,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAErD,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,OAAO,EAAQ;QAgB5B,IAAA,CAAA,WAAW,GAAY,KAAK;QAgB5B,IAAA,CAAA,SAAS,GAAY,IAAI;AAuBpC,IAAA;AArDG,IAAA,IAAI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,WAAW;IAC3B;IAEA,IAAI,UAAU,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK;YAAE;AAEhC,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK;AAEvB,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACjB,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;IACzC;AAIA,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS;IACzB;IAEA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK;YAAE;AAE9B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,KAAK;AAEzB,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACjB,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;IACzC;AAIA,IAAA,IAAI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,UAAU;IAC1B;IAEA,IAAI,SAAS,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AAEvB,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;IACrB;IAMA,oBAAoB,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,SAAS;AAAE,YAAA,OAAO,CAAC;AAE7B,QAAA,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC;QAE3F,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1F;kIA5DS,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,8XAoDpB,kBAAkB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FApDvB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAVrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,8FAA8F;AACxG,oBAAA,IAAI,EAAE;AACF,wBAAA,sBAAsB,EAAE,UAAU;AAClC,wBAAA,wBAAwB,EAAE,YAAY;AAEtC,wBAAA,sBAAsB,EAAE,wBAAwB;AAChD,wBAAA,uBAAuB,EAAE;AAC5B;AACJ,iBAAA;8BAqDqC,MAAM,EAAA,CAAA;sBAAvC,YAAY;uBAAC,kBAAkB;;AA4B9B,MAAO,aAAc,SAAQ,iBAAiB,CAAA;AAKhD,IAAA,IACI,aAAa,GAAA;QACb,OAAO,IAAI,CAAC,cAAc;IAC9B;IAEA,IAAI,aAAa,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;QAE3B,IAAI,CAAC,aAAa,EAAE;IACxB;AAIA,IAAA,IACI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ;IACxB;IAEA,IAAI,OAAO,CAAC,KAAa,EAAA;QACrB,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;YAErB,IAAI,CAAC,aAAa,EAAE;QACxB;IACJ;IAEA,IAAI,SAAS,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE;AAC3B,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;YAEvB,IAAI,CAAC,aAAa,EAAE;QACxB;IACJ;;AAGA,IAAA,IAAI,WAAW,GAAA;QACX,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS;IAC7D;AAIA,IAAA,IAAI,WAAW,GAAA;AACX,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC,SAAS,GAAG,EAAE;QAEtE,OAAO,CAAA,EAAG,gBAAgB,CAAA,CAAE;IAChC;AAEA,IAAA,IACI,WAAW,GAAA;QACX,OAAO,IAAI,CAAC,YAAY;IAC5B;IAEA,IAAI,WAAW,CAAC,KAAc,EAAA;AAC1B,QAAA,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,KAAK,CAAC;IACpD;AAIA,IAAA,IAAI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,IAAI;IAC1D;AAEA,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;YAC9B,OAAO,IAAI,CAAC,SAAS;QACzB;QAEA,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,cAAc;IACpD;IAEA,IAAI,QAAQ,CAAC,KAAK,EAAA;AACd,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;IACjD;AAEA,IAAA,IAAI,kBAAkB,GAAA;AAClB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe;IACjC;AAEA,IAAA,IAAI,yBAAyB,GAAA;AACzB,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW;IACxG;AAEA,IAAA,IAAI,2BAA2B,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,gBAAgB,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,WAAW;IAC3F;AAEA,IAAA,IAAI,cAAc,GAAA;AACd,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW;IACpC;IAEA,WAAA,CACW,gBAA2C,EAC3C,mBAA2C,EAC1C,iBAAoC,EACxB,eAAmC,EACnC,KAAqB,EAAA;AAEzC,QAAA,KAAK,EAAE;QANA,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;QAClB,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACL,IAAA,CAAA,eAAe,GAAf,eAAe;QACf,IAAA,CAAA,KAAK,GAAL,KAAK;QAxDrB,IAAA,CAAA,UAAU,GAAG,KAAK;QAiBlB,IAAA,CAAA,YAAY,GAAY,IAAI;AA2ChC,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,CAAC,eAAe,CAAC,eAAe,GAAG,KAAK;QAChD;AAEA,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;YAClE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS;YAEhD,IAAI,CAAC,cAAc,EAAE;AAErB,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAC1C,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,CAAA,EAAG,aAAa,CAAC,KAAK,EAAE;AAExC,QAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC;AAEzC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC;AAEf,QAAA,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,qCAAqC;IACzE;IAEA,kBAAkB,GAAA;QACd,IAAI,CAAC,aAAa,EAAE;IACxB;IAEA,cAAc,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ;YAAE;AAErC,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;YAChC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,eAAe,GAAG,KAAK;YACrD,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,eAAe,GAAG,IAAI;;AAEpD,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,CAAC,CAAC;QACrC;IACJ;IAEA,aAAa,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,OAAO,GAAG,CAAA,EAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAA,CAAE;QAC5C;aAAO,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,EAAE;AACjD,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW;QACnC;AAEA,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;AAChC,YAAA,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,KAAK;AACtC,YAAA,IAAI,CAAC,iBAAiB,GAAG,eAAe,CAAC,KAAK;QAClD;AAEA,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;IACzC;IAEA,aAAa,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB;IACvC;AAEA,IAAA,SAAS,CAAC,MAAqB,EAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC1B;QACJ;AAEA,QAAA,IACI,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,IAAI,MAAM,CAAC,OAAO,KAAK,UAAU;AAClE,aAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,KAAK,WAAW,CAAC,EACpE;AACE,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,UAAU;AAC1C,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;YAE3B,MAAM,CAAC,eAAe,EAAE;YACxB,MAAM,CAAC,cAAc,EAAE;QAC3B;IACJ;kIA/KS,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,0bACR,cAAc,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAEd,OAAO,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtWzB,qmBAiBA,4CDoUQ,OAAO,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAcF,aAAa,EAAA,UAAA,EAAA,CAAA;kBAjBzB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oCAAoC,EAAA,OAAA,EACrC;wBACL;qBACH,EAAA,aAAA,EAEc,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,eAAe,EAAA,IAAA,EACnB;AACF,wBAAA,KAAK,EAAE,iBAAiB;AACxB,wBAAA,mCAAmC,EAAE,aAAa;AAClD,wBAAA,oCAAoC,EAAE,SAAS;AAE/C,wBAAA,WAAW,EAAE;AAChB,qBAAA,EAAA,QAAA,EAAA,qmBAAA,EAAA;;0BAqGI;;0BACA;yCAnGyB,KAAK,EAAA,CAAA;sBAAlC,YAAY;uBAAC,cAAc;gBAEL,IAAI,EAAA,CAAA;sBAA1B,YAAY;uBAAC,OAAO;gBAGjB,aAAa,EAAA,CAAA;sBADhB;gBAcG,OAAO,EAAA,CAAA;sBADV,KAAK;uBAAC,YAAY;gBAmCf,WAAW,EAAA,CAAA;sBADd;;;AEjYC,MAAO,cAAe,SAAQ,iBAAiB,CAAA;;AAiBjD,IAAA,IACI,aAAa,GAAA;QACb,OAAO,IAAI,CAAC,cAAc;IAC9B;IAEA,IAAI,aAAa,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;QAE3B,IAAI,CAAC,aAAa,EAAE;IACxB;AAIA,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,KAAK,GAAG;IAC7C;;AAGA,IAAA,IAAI,WAAW,GAAA;AACX,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC,SAAS,GAAG,EAAE;QAEtE,OAAO,CAAA,EAAG,gBAAgB,CAAA,CAAE;IAChC;;AAGA,IAAA,IAAI,cAAc,GAAA;AACd,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW;IACpC;;AAGA,IAAA,IAAI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,IAAI;IACzD;;AAGA,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;YAC9B,OAAO,IAAI,CAAC,SAAS;QACzB;QAEA,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,cAAc;IAClD;IAEA,IAAI,QAAQ,CAAC,KAAK,EAAA;AACd,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;IACjD;;AAGA,IAAA,IAAI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS;IAC7D;IAEA,IAAI,SAAS,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE;AAC3B,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;YAEvB,IAAI,CAAC,aAAa,EAAE;QACxB;IACJ;AAIA,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;;QA9EQ,IAAA,CAAA,aAAa,GAAG,sBAAsB,EAAE;;AAExC,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;;AAE7C,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,yBAAyB,CAAC;;AAEpD,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,sBAAsB,CAAC;;QAM9D,IAAA,CAAA,SAAS,GAAY,KAAK;QA+D3B,IAAA,CAAA,UAAU,GAAG,KAAK;AAKtB,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;YAClE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS;AAEhD,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAC1C,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG,CAAA,EAAG,aAAa,CAAC,KAAK,EAAE;AAExC,QAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC;AAEzC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC;QAEf,IAAI,CAAC,mBAAmB,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM;IACpD;IAEA,kBAAkB,GAAA;QACd,IAAI,CAAC,aAAa,EAAE;IACxB;IAEQ,aAAa,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,OAAO,GAAG,CAAA,EAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAA,CAAE;QAC5C;aAAO,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE;AAC/C,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW;QACnC;AAEA,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;AAChC,YAAA,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,KAAK;QAC1C;AAEA,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;IACzC;kIAlHS,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mCAAA,EAAA,WAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAWT,cAAc,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAvBlB;;AAET,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,i2JAAA,CAAA,EAAA,CAAA,CAAA;;4FAUQ,cAAc,EAAA,UAAA,EAAA,CAAA;kBAf1B,SAAS;+BACI,sCAAsC,EAAA,QAAA,EACtC,gBAAgB,EAAA,QAAA,EAChB;;KAET,EAAA,IAAA,EAIK;AACF,wBAAA,KAAK,EAAE,kBAAkB;AACzB,wBAAA,qCAAqC,EAAE,WAAW;AAClD,wBAAA,+BAA+B,EAAE;AACpC,qBAAA,EAAA,MAAA,EAAA,CAAA,i2JAAA,CAAA,EAAA;wDAa6B,KAAK,EAAA,CAAA;sBAAlC,YAAY;uBAAC,cAAc;gBAGnB,SAAS,EAAA,CAAA;sBAAjB;gBAIG,aAAa,EAAA,CAAA;sBADhB;;;MCHQ,qBAAqB,CAAA;AAM9B,IAAA,IACI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS;IACzB;IAEA,IAAI,QAAQ,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;IAC1B;AAMA,IAAA,IAAI,kBAAkB,GAAA;AAClB,QAAA,OAAO,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC;IACpE;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACjB,QAAA,OAAO,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC;IACvE;AAOA,IAAA,WAAA,CACuB,iBAAoC,EACpC,UAAmC,EACnC,YAA0B,EAAA;QAF1B,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,YAAY,GAAZ,YAAY;QApB3B,IAAA,CAAA,SAAS,GAAG,CAAC;QAEb,IAAA,CAAA,eAAe,GAAgB,IAAI;AAU1B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IAS7C;IAEH,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,CAAyB,IAAI,CAAC,cAAc,CAAC,CAAC,aAAa,EAAE;AAElG,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAC5E,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YAElB,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC;AACjB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACzC,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YAClG,IAAI,CAAC,YAAY,EAAE;;YAGnB,IAAI,CAAC,cAAc,EAAE;AACzB,QAAA,CAAC,CAAC;IACN;IAEA,eAAe,GAAA;AACX,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,KAAI;AACjE,YAAA,IAAI,CAAC,eAAe,GAAG,WAAW;AAClC,YAAA,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC;AAC/C,QAAA,CAAC,CAAC;IACN;IAEA,WAAW,GAAA;QACP,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC;IACrD;IAEA,KAAK,GAAA;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;YAClC;QACJ;;;AAIA,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,OAAO,IAAI,IAAI,CAAC,eAAe,KAAK,OAAO,EAAE;YACtE;QACJ;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE;IACxC;IAEA,IAAI,GAAA;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;YACxB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACrC;AAEA,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;IACzC;IAEU,YAAY,GAAA;QAClB,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,oBAAoB,EAAE;IAC/B;IAEU,iBAAiB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAC9B,YAAA,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE;AAC1C,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI;QACvC;AAEA,QAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC7B,YAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE;AACzC,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI;QACtC;IACJ;IAEQ,oBAAoB,GAAA;AACxB,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACvE,YAAA,MAAM,KAAK,GAAW,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;AAEvE,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;AAC1B,gBAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAC3C;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IACrF;IAEQ,cAAc,GAAA;AAClB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;IAC7D;AAEQ,IAAA,YAAY,CAAC,KAAa,EAAA;QAC9B,OAAO,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM;IAC3D;IAEQ,cAAc,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC;IAC5D;kIAlIS,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,mIACI,sBAAsB,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAD/C,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;0IAGG,cAAc,EAAA,CAAA;sBADb,eAAe;uBAAC,UAAU,CAAC,MAAM,sBAAsB,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;gBAM5E,QAAQ,EAAA,CAAA;sBADX;;MAqIQ,kBAAkB,CAAA;kIAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sHAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV;AACJ,iBAAA;;AA6BK,MAAO,SAAU,SAAQ,qBAAqB,CAAA;AAYhD,IAAA,IAAY,KAAK,GAAA;AACb,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;;AAG7C,QAAA,IAAI,OAAO,OAAO,CAAC,cAAc,KAAK,UAAU;AAAE,YAAA,OAAO,CAAC;AAE1D,QAAA,OAAO,OAAO,CAAC,qBAAqB,EAAE,CAAC,KAAK;IAChD;AAEA,IAAA,IAAY,eAAe,GAAA;QACvB,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;IAC/F;AAEA,IAAA,IAAY,gBAAgB,GAAA;QACxB,OAAO,IAAI,CAAC;AACP,aAAA,OAAO;AACP,aAAA,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW;AAC5D,aAAA,OAAO,EAAE;IAClB;AAIA,IAAA,WAAA,CACuB,UAAmC,EACnC,iBAAoC,EACpC,YAA0B,EAAA;AAE7C,QAAA,KAAK,CAAC,iBAAiB,EAAE,UAAU,EAAE,YAAY,CAAC;QAJ/B,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QACjB,IAAA,CAAA,YAAY,GAAZ,YAAY;AApC1B,QAAA,IAAA,CAAA,iBAAiB,GAAG,eAAe,CACxC,UAAU,CAAC,MAAM,yBAAyB,CAAC,EAC3C,EAAE,WAAW,EAAE,IAAI,EAAE,CACxB;AAIQ,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAS;QAE3B,IAAA,CAAA,sBAAsB,GAAW,GAAG;QA8ErD,IAAA,CAAA,2BAA2B,GAAG,MAAK;YAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK;AAEvD,YAAA,MAAM,YAAY,GAAG,aAAa,GAAG,CAAC;YAEtC,IAAI,YAAY,EAAE;AACd,gBAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;YACrC;iBAAO;AACH,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;YACnC;AACJ,QAAA,CAAC;AA8CO,QAAA,IAAA,CAAA,aAAa,GAAG,CAAC,iBAAwD,KAAI;YACjF,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC;AAC/F,QAAA,CAAC;AAzGG,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;aAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,kBAAkB,EAAE;AACpE,aAAA,SAAS,CAAC,IAAI,CAAC,2BAA2B,CAAC;AAEhD,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC9D;IAEA,kBAAkB,GAAA;QACd,KAAK,CAAC,kBAAkB,EAAE;AAE1B,QAAA,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,yBAAyB,CAAC,KAAK,CAAC;IACnF;IAEA,eAAe,GAAA;QACX,KAAK,CAAC,eAAe,EAAE;;;AAIvB,QAAA,UAAU,CAAC,IAAI,CAAC,2BAA2B,CAAC;IAChD;IAEA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE;QAErC,KAAK,CAAC,WAAW,EAAE;IACvB;AAEA,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC1B,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO;QAE7B,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,kBAAkB,CAAC,KAAK,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAE;YAC3F,KAAK,CAAC,cAAc,EAAE;QAC1B;AAEA,QAAA,IAAI,OAAO,KAAK,GAAG,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE;YAE7B;QACJ;AAAO,aAAA,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,WAAW,EAAE;AAClG,YAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE;QACvC;AAAO,aAAA,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,UAAU,EAAE;AAClG,YAAA,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE;QAC3C;aAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;QACpC;IACJ;AAcQ,IAAA,cAAc,CAAC,KAAoB,EAAA;AACvC,QAAA,OAAO,CAAC,CAAE,KAAK,CAAC,MAAsB,CAAC,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC;IAC9E;AAEQ,IAAA,qBAAqB,CAAC,KAAoB,EAAA;AAC9C,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;AAE9C,QAAA,OAAO,KAAK,CAAC,cAAc,KAAK,CAAC;IACrC;AAEQ,IAAA,oBAAoB,CAAC,KAAoB,EAAA;AAC7C,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAA0B;QAE9C,OAAO,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC,KAAK,CAAC,MAAM;IACpD;AAEQ,IAAA,aAAa,CAAC,aAAqB,EAAA;QACvC,IAAI,KAAK,GAAG,aAAa;AAEzB,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;AAEhF,QAAA,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE;AACjC,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,YAAA,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE;AAE7B,YAAA,IAAI,KAAK,GAAG,CAAC,EAAE;gBACX;YACJ;QACJ;IACJ;AAEQ,IAAA,WAAW,CAAC,aAAqB,EAAA;QACrC,IAAI,KAAK,GAAG,aAAa;AAEzB,QAAA,IAAI,CAAC;aACA,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS;AAC/B,aAAA,OAAO,CAAC,CAAC,IAAI,KAAI;YACd,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE;AAClC,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,gBAAA,KAAK,IAAI,IAAI,CAAC,aAAa,EAAE;YACjC;AACJ,QAAA,CAAC,CAAC;IACV;kIA9IS,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAT,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,2BAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EAdP;AACP,YAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS;SACvD,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAcoB,yBAAyB,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAIZ,aAAa,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA9BrC;;AAET,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,kgHAAA,EAAA,o+KAAA,EAAA,i2JAAA,EAAA,oPAAA,EAAA,27DAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAsBQ,SAAS,EAAA,UAAA,EAAA,CAAA;kBA1BrB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,QAAA,EACZ;;KAET,EAAA,SAAA,EAQU;AACP,wBAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,WAAW;AACvD,qBAAA,EAAA,aAAA,EACc,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACF,wBAAA,KAAK,EAAE,YAAY;AACnB,wBAAA,iBAAiB,EAAE,UAAU;AAC7B,wBAAA,SAAS,EAAE,SAAS;AACpB,wBAAA,QAAQ,EAAE,QAAQ;AAClB,wBAAA,WAAW,EAAE,mBAAmB;AAChC,wBAAA,iBAAiB,EAAE;AACtB,qBAAA,EAAA,MAAA,EAAA,CAAA,kgHAAA,EAAA,o+KAAA,EAAA,i2JAAA,EAAA,oPAAA,EAAA,27DAAA,CAAA,EAAA;0IAQwE,WAAW,EAAA,CAAA;sBAAnF,eAAe;uBAAC,UAAU,CAAC,MAAM,aAAa,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;;;ACvL3E;AACA;AACO,MAAM,yCAAyC,GAAG,cAAc,CAAC;AAExE;AACA;MACa,iCAAiC,GAAG,IAAI,cAAc,CAAC,gCAAgC;AAiC9F,MAAO,iBAAkB,SAAQ,qBAAqB,CAAA;AAqBxD,IAAA,IACI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS;IACzB;IAEA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC;QAE7C,IAAI,CAAC,2BAA2B,EAAE;IACtC;AAIA,IAAA,WAAA,CACc,UAAmC,EAC7C,iBAAoC,EACpC,YAA0B,EAAA;AAE1B,QAAA,KAAK,CAAC,iBAAiB,EAAE,UAAU,EAAE,YAAY,CAAC;QAJxC,IAAA,CAAA,UAAU,GAAV,UAAU;;QAjCL,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAExE,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,iCAAiC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAI9F,QAAA,IAAA,CAAA,iBAAiB,GAAG,eAAe,CAC/B,UAAU,CAAC,MAAM,yBAAyB,CAAC,EAC3C,EAAE,WAAW,EAAE,IAAI,EAAE,CACxB;AAMQ,QAAA,IAAA,CAAA,aAAa,GAAkB,IAAI,OAAO,EAAE;QAE5C,IAAA,CAAA,QAAQ,GAAY,KAAK;QAa1B,IAAA,CAAA,SAAS,GAAY,KAAK;AAyD1B,QAAA,IAAA,CAAA,2BAA2B,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC;QAElG,IAAA,CAAA,qBAAqB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;AAEhF,QAAA,IAAA,CAAA,2CAA2C,GAAG,CAAC,iBAAwD,KAC3G,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,0CAA0C,CAAC;AAEtE,QAAA,IAAA,CAAA,0CAA0C,GAAG,CAAC,IAA+B,KAAU;YAC3F,cAAc,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AACrD,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;AACtC,QAAA,CAAC;AAEO,QAAA,IAAA,CAAA,oBAAoB,GAAG,CAAC,IAA+B,KAAU;AACrE,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACxB,QAAA,CAAC;AAEO,QAAA,IAAA,CAAA,uBAAuB,GAAG,CAAC,IAA+B,KAAU;AACxE,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,QAAQ;YAC/B,UAAU,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,2BAA2B,EAAE,CAAC;AAChE,QAAA,CAAC;QAEO,IAAA,CAAA,kBAAkB,GAAG,MAAK;AAC9B,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,QAAQ,CAAC;AAE1F,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACzC,QAAA,CAAC;AAzEG,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC;AAEnF,QAAA,MAAM,CAAC,MAAM,IAAI,CAAC,2CAA2C,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAExF,QAAA,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC;AAEzF,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACrB,IAAI,CAAC,iBAAiB,EAAE;QAC5B;IACJ;IAEA,kBAAkB,GAAA;QACd,IAAI,CAAC,qBAAqB,EAAE;QAE5B,KAAK,CAAC,kBAAkB,EAAE;AAE1B,QAAA,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,IAAI,CAAC;IACjD;IAEA,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ;AAE9B,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;IACzC;AAEA,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC1B,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO;QAE7B,IACI,CAAE,KAAK,CAAC,MAAsB,CAAC,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC;aACjE,kBAAkB,CAAC,KAAK,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAC5D;YACE,KAAK,CAAC,cAAc,EAAE;QAC1B;AAEA,QAAA,IAAI,OAAO,KAAK,GAAG,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE;YAE7B;QACJ;AAAO,aAAA,IAAI,OAAO,KAAK,UAAU,EAAE;AAC/B,YAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE;QACvC;AAAO,aAAA,IAAI,OAAO,KAAK,QAAQ,EAAE;AAC7B,YAAA,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE;QAC3C;aAAO;AACH,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;QACpC;IACJ;IA6BQ,iBAAiB,GAAA;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,yCAAyC;IAClE;kIAtHS,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,0cASL,yBAAyB,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAMf,cAAc,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAFX,aAAa,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA1CrC;;;;;AAKT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,4/HAAA,EAAA,o+KAAA,EAAA,i2JAAA,EAAA,oPAAA,EAAA,27DAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAwBQ,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA/B7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,QAAA,EACrB;;;;;KAKT,EAAA,aAAA,EAQc,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,mBAAmB,EAAA,IAAA,EACvB;AACF,wBAAA,KAAK,EAAE,qBAAqB;AAC5B,wBAAA,uCAAuC,EAAE,UAAU;AACnD,wBAAA,iBAAiB,EAAE,UAAU;AAC7B,wBAAA,+BAA+B,EAAE,MAAM;AAEvC,wBAAA,SAAS,EAAE,SAAS;AACpB,wBAAA,QAAQ,EAAE,QAAQ;AAElB,wBAAA,WAAW,EAAE;qBAChB,EAAA,cAAA,EACe,CAAC,eAAe,CAAC,EAAA,MAAA,EAAA,CAAA,4/HAAA,EAAA,o+KAAA,EAAA,i2JAAA,EAAA,oPAAA,EAAA,27DAAA,CAAA,EAAA;0IAewC,KAAK,EAAA,CAAA;sBAA7E,eAAe;uBAAC,UAAU,CAAC,MAAM,aAAa,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;gBAEvB,KAAK,EAAA,CAAA;sBAApD,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,CAAC,MAAM,cAAc,CAAC;gBAIrC,QAAQ,EAAA,CAAA;sBAAhB;gBAGG,QAAQ,EAAA,CAAA;sBADX;;;MCvCQ,eAAe,CAAA;AAUxB,IAAA,WAAA,GAAA;AATiB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;AAC3B,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAE7C,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;AAGjD,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAoC7C,IAAA,CAAA,oBAAoB,GAAG,MAAK;YAChC,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;kBAC7B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC;kBACjC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM;AACjD,QAAA,CAAC;AAEO,QAAA,IAAA,CAAA,mBAAmB,GAAG,CAAC,KAAoB,KAAI;AACnD,YAAA,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;gBACjE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACvC;AACJ,QAAA,CAAC;QA3CG,eAAe,CAAC,MAAK;YACjB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC1G,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK;QAC1B,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,eAAe,CAAC,KAAK;AAErD,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC;IAC9F;IAEA,WAAW,GAAA;QACP,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC;IACxE;;AAGA,IAAA,cAAc,CAAC,MAAqB,EAAA;AAChC,QAAA,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;YACzC,IAAI,CAAC,MAAM,EAAE;YAEb,MAAM,CAAC,eAAe,EAAE;YACxB,MAAM,CAAC,cAAc,EAAE;QAC3B;IACJ;;IAGA,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACpB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;AAEnB,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;IAC1C;kIA1CS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,EAAA,cAAA,EAAA,gCAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAxBd;;;;;;;;;;AAUT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,ygCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAZG,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FA0BR,eAAe,EAAA,UAAA,EAAA,CAAA;kBA7B3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wCAAwC,EAAA,OAAA,EACzC;wBACL;qBACH,EAAA,QAAA,EACS;;;;;;;;;;AAUT,IAAA,CAAA,EAAA,aAAA,EAEc,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACF,wBAAA,KAAK,EAAE,gCAAgC;AACvC,wBAAA,uBAAuB,EAAE,kBAAkB;AAC3C,wBAAA,sBAAsB,EAAE,iBAAiB;AAEzC,wBAAA,WAAW,EAAE,wBAAwB;AACrC,wBAAA,SAAS,EAAE;AACd,qBAAA,EAAA,cAAA,EACe,CAAC,eAAe,EAAE,iBAAiB,CAAC,EAAA,MAAA,EAAA,CAAA,ygCAAA,CAAA,EAAA;;;MCQ3C,eAAe,CAAA;kIAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAhCpB,UAAU;YACV,cAAc;YACd,aAAa;YACb,gBAAgB;YAChB,SAAS;YACT,kBAAkB;YAClB,cAAc;YACd,aAAa;YACb,cAAc;YACd,aAAa;YACb,eAAe;YACf,iBAAiB;YACjB,gBAAgB;YAChB,sBAAsB;YACtB,yBAAyB;AACzB,YAAA,cAAc,aAGd,SAAS;YACT,kBAAkB;YAClB,cAAc;YACd,aAAa;YACb,cAAc;YACd,aAAa;YACb,eAAe;YACf,iBAAiB;YACjB,gBAAgB;YAChB,sBAAsB;YACtB,yBAAyB;YACzB,cAAc,CAAA,EAAA,CAAA,CAAA;AAGT,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAhCpB,UAAU;YACV,cAAc;YACd,aAAa;YACb,gBAAgB;YAIhB,aAAa;YAGb,eAAe,CAAA,EAAA,CAAA,CAAA;;4FAsBV,eAAe,EAAA,UAAA,EAAA,CAAA;kBAlC3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,UAAU;wBACV,cAAc;wBACd,aAAa;wBACb,gBAAgB;wBAChB,SAAS;wBACT,kBAAkB;wBAClB,cAAc;wBACd,aAAa;wBACb,cAAc;wBACd,aAAa;wBACb,eAAe;wBACf,iBAAiB;wBACjB,gBAAgB;wBAChB,sBAAsB;wBACtB,yBAAyB;wBACzB;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,SAAS;wBACT,kBAAkB;wBAClB,cAAc;wBACd,aAAa;wBACb,cAAc;wBACd,aAAa;wBACb,eAAe;wBACf,iBAAiB;wBACjB,gBAAgB;wBAChB,sBAAsB;wBACtB,yBAAyB;wBACzB;AACH;AACJ,iBAAA;;;ACpDD;;AAEG;;;;"}