{"version":3,"file":"igniteui-angular-grids-pivot-grid.mjs","sources":["../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-row-dimension-header.component.ts","../../../projects/igniteui-angular/grids/core/src/headers/grid-header.component.html","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-row-header-group.component.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-row-dimension-header-group.component.html","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-header-row.component.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-header-row.component.html","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-grid-navigation.service.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-filtering.service.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-row-dimension-header-group.component.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-row-dimension-content.component.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-row-dimension-content.component.html","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-sort-strategy.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-sort-util.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-grid.directives.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-grid.pipes.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-row.component.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-row.component.html","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-row-dimension-mrl-row.component.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-row-dimension-mrl-row.component.html","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-grid-row.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-grid.component.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-grid.component.html","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-data-selector.component.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-data-selector.component.html","../../../projects/igniteui-angular/grids/pivot-grid/src/pivot-grid.module.ts","../../../projects/igniteui-angular/grids/pivot-grid/src/igniteui-angular-grids-pivot-grid.ts"],"sourcesContent":["import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, HostListener, inject } from '@angular/core';\n\nimport { PivotGridType, PivotRowLayoutType, PivotUtil } from 'igniteui-angular/grids/core';\n\nimport { IgxGridHeaderComponent } from 'igniteui-angular/grids/core';\nimport { IgxPivotColumnResizingService } from 'igniteui-angular/grids/core';\nimport { SortingIndexPipe } from 'igniteui-angular/grids/core';\nimport { NgTemplateOutlet, NgClass } from '@angular/common';\nimport { takeUntil } from 'rxjs/operators';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { ISortingExpression, SortingDirection } from 'igniteui-angular/core';\n\n/**\n * @hidden\n */\n@Component({\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    selector: 'igx-pivot-row-dimension-header',\n    templateUrl: '../../core/src/headers/grid-header.component.html',\n    imports: [IgxIconComponent, NgTemplateOutlet, NgClass, SortingIndexPipe]\n})\nexport class IgxPivotRowDimensionHeaderComponent extends IgxGridHeaderComponent implements AfterViewInit {\n    public override colResizingService = inject(IgxPivotColumnResizingService);\n    public refInstance = inject(ElementRef<HTMLElement>);\n\n    private pivotGrid: PivotGridType;\n\n    constructor() {\n        super();\n\n        this.pivotGrid = this.grid as PivotGridType;\n        this.pivotGrid.dimensionsSortingExpressionsChange\n            .pipe(takeUntil(this._destroy$))\n            .subscribe((_: ISortingExpression[]) => this.setSortIndex());\n    }\n\n    public ngAfterViewInit(): void {\n        this.setSortIndex();\n    }\n\n    @HostListener('click', ['$event'])\n    public override onClick(event: MouseEvent) {\n        event.preventDefault();\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override get selectable(): boolean {\n        return false;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override onSortingIconClick(event) {\n        event.stopPropagation();\n        const dim = this.pivotGrid.getRowDimensionByName(this.column.field);\n        const startDirection = dim.sortDirection || SortingDirection.None;\n        const direction = startDirection + 1 > SortingDirection.Desc ?\n            SortingDirection.None : startDirection + 1;\n        this.pivotGrid.sortDimension(dim, direction);\n    }\n\n    protected override getSortDirection() {\n        const dim = this.pivotGrid.getRowDimensionByName(this.column.field);\n        this.sortDirection = dim?.sortDirection || SortingDirection.None;\n    }\n\n    protected setSortIndex() {\n        if (this.column.sortable && this.sortIconContainer) {\n            const visibleRows = this.pivotGrid.pivotUI.rowLayout === PivotRowLayoutType.Vertical ?\n            this.pivotGrid.pivotConfiguration.rows :\n            PivotUtil.flatten(this.pivotGrid.pivotConfiguration.rows);\n            const dimIndex = visibleRows.findIndex((target) => target.memberName === this.column.field);\n            const dim = visibleRows[dimIndex];\n            let newSortIndex = -1;\n            if (dim.sortDirection) {\n                let priorSortedDims = 0;\n                for (let i = 0; i < dimIndex; i++) {\n                    if (visibleRows[i].sortDirection) {\n                        priorSortedDims++;\n                    }\n                }\n\n                // Sort index starts from 1.\n                newSortIndex = priorSortedDims + 1;\n            }\n\n            this.sortIconContainer.nativeElement.setAttribute(\"data-sortIndex\", newSortIndex >= 0 ? newSortIndex : \"\");\n        }\n    }\n}\n","<ng-template #defaultColumn>\n    <span [title]=\"title\">{{ column.header || column.field }}</span>\n</ng-template>\n\n<ng-template #defaultESFHeaderIconTemplate>\n    <igx-icon family=\"default\" name=\"more_vert\"></igx-icon>\n</ng-template>\n\n<ng-template #defaultSortHeaderIconTemplate>\n    <igx-icon\n        family=\"default\"\n        [name]=\"sortDirection < 2 ? 'sort_asc' : 'sort_desc'\">\n    </igx-icon>\n</ng-template>\n\n<span class=\"igx-grid-th__title\">\n    <ng-container\n        *ngTemplateOutlet=\"column.headerTemplate ? column.headerTemplate : defaultColumn; context: { $implicit: column, column: column}\">\n    </ng-container>\n</span>\n@if (!column.columnGroup) {\n    <div class=\"igx-grid-th__icons\">\n        @if (column.sortable && !disabled) {\n            <div #sortIconContainer class=\"sort-icon\"\n                [attr.data-sortIndex]=\"(grid.sortingOptions.mode === 'single' && grid.sortingExpressions.length <=1) ? null : column.field | sortingIndex:grid.sortingExpressions\"\n                (pointerdown)=\"onPointerDownIndicator($event)\" (click)=\"onSortingIconClick($event)\">\n                <ng-container *ngTemplateOutlet=\"sortIconTemplate; context: { $implicit:  this }\"></ng-container>\n            </div>\n        }\n        @if (grid.allowFiltering && column.filterable && grid.filterMode === 'excelStyleFilter') {\n            <div [ngClass]=\"filterIconClassName\" (pointerdown)=\"onPointerDownIndicator($event)\" (click)=\"onFilteringIconClick($event)\" >\n                <ng-container *ngTemplateOutlet=\"esfIconTemplate; context: { $implicit:  this }\"></ng-container>\n            </div>\n        }\n    </div>\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, inject, Input, ViewChild } from '@angular/core';\nimport { NgClass, NgStyle } from '@angular/common';\nimport {\n    IGX_GRID_BASE,\n    IgxColumnMovingDragDirective,\n    IgxColumnMovingDropDirective,\n    IgxGridHeaderGroupComponent,\n    IgxHeaderGroupStylePipe,\n    IgxPivotColumnResizingService,\n    IgxPivotResizeHandleDirective,\n    IPivotDimension,\n    PivotGridType,\n    PivotRowHeaderGroupType\n} from 'igniteui-angular/grids/core';\nimport { IgxPivotRowDimensionHeaderComponent } from './pivot-row-dimension-header.component';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { SortingDirection } from 'igniteui-angular/core';\n\n/**\n * @hidden\n */\n@Component({\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    selector: 'igx-pivot-row-header-group',\n    templateUrl: './pivot-row-dimension-header-group.component.html',\n    imports: [IgxIconComponent, IgxPivotRowDimensionHeaderComponent, NgClass, NgStyle, IgxColumnMovingDragDirective, IgxColumnMovingDropDirective, IgxPivotResizeHandleDirective, IgxHeaderGroupStylePipe]\n})\nexport class IgxPivotRowHeaderGroupComponent extends IgxGridHeaderGroupComponent implements PivotRowHeaderGroupType {\n    public override grid = inject<PivotGridType>(IGX_GRID_BASE);\n    public override colResizingService = inject(IgxPivotColumnResizingService);\n\n    /**\n     * @hidden\n     */\n    @HostBinding('style.user-select')\n    public userSelect = 'none';\n\n    /**\n     * @hidden\n     */\n    public get role(): string {\n        return 'columnheader';\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    @Input()\n    public rowIndex: number;\n\n    @Input()\n    public set dimWidth(value: number) {\n        this.column.width = value + 'px';\n    }\n    public get dimWidth() {\n        return parseFloat(this.column.width);\n    }\n\n    public get parent() {\n        return this;\n    };\n\n    @Input()\n    public rootDimension: IPivotDimension;\n\n    @ViewChild(IgxPivotRowDimensionHeaderComponent)\n    public override header: IgxPivotRowDimensionHeaderComponent;\n\n    @HostBinding('attr.id')\n    public override get headerID() {\n        return `${this.grid.id}_-2_${this.rootDimension.memberName}_${this.visibleIndex}`;\n    }\n\n    @HostBinding('attr.title')\n    public override get title() {\n        return this.rootDimension.displayName;\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public get visibleIndex(): number {\n        const rows = this.grid.visibleRowDimensions;\n        return rows.indexOf(this.rootDimension);\n    }\n\n    @HostBinding('class.igx-grid-th--active')\n    public override get active() {\n        const nav = this.grid.navigation;\n        const node = nav.activeNode;\n        return node && !this.column.columnGroup ?\n            nav.isRowDimensionHeaderActive &&\n            node.row === this.rowIndex &&\n            node.column === this.visibleIndex :\n            false;\n    }\n\n    @HostBinding('class.asc')\n    public get sortAscendingStyle() {\n        return this.rootDimension.sortDirection === SortingDirection.Asc;\n    }\n\n    @HostBinding('class.desc')\n    public get sortDescendingStyle() {\n        return this.rootDimension.sortDirection === SortingDirection.Desc;\n    }\n\n    @HostBinding('class.igx-grid-th--sortable')\n    public get sortableStyle() {\n        return true;\n    }\n\n    @HostBinding('class.igx-grid-th--sorted')\n    public get sortedStyle() {\n        return this.rootDimension.sortDirection !== undefined && this.rootDimension.sortDirection !== SortingDirection.None;\n    }\n\n    protected override get activeNode() {\n        this.grid.navigation.isRowDimensionHeaderActive = true;\n        this.grid.navigation.isRowHeaderActive = false;\n        return {\n            row: this.rowIndex, column: this.visibleIndex, level: null,\n            mchCache: {\n                level: 0,\n                visibleIndex:  this.visibleIndex\n            },\n            layout: null\n        };\n    }\n\n    public override activate() {\n        this.grid.navigation.setActiveNode(this.activeNode);\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override pointerdown(_event: PointerEvent): void {\n        this.activate();\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override onMouseDown(_event: MouseEvent): void {\n        this.activate();\n    }\n\n    public override get selectable(): boolean {\n        return false;\n    }\n\n    protected getHeaderWidthFromDimension() {\n        return this.grid.hasHorizontalLayout && this.dimWidth === -1 ? 'fit-content' : null;\n    }\n}\n","<ng-template #defaultColumn>\n    <span class=\"igx-grid-th__group-title\" [title]=\"title\">{{column.header}}</span>\n</ng-template>\n\n<ng-template #defaultCollapseIndicator>\n    <igx-icon\n        family=\"default\"\n        [name]=\"column.expanded ? 'tree_collapse' : 'tree_expand'\">\n    </igx-icon>\n</ng-template>\n\n@if (!column.columnGroup) {\n    @if (grid.hasMovableColumns) {\n        <span class=\"igx-grid-th__drop-indicator-left\"></span>\n    }\n    <igx-pivot-row-dimension-header\n        [attr.role]=\"role\"\n        class=\"igx-grid-th--fw\"\n        [id]=\"header ? grid.id + '_' + header.title : grid.id + '_' + column.field\"\n        [ngClass]=\"column.headerClasses\"\n        [ngStyle]=\"column.headerStyles | igxHeaderGroupStyle:column:grid.pipeTrigger\"\n        [igxColumnMovingDrag]=\"column\"\n        [ghostHost]=\"grid.outlet.nativeElement\"\n        [attr.droppable]=\"true\"\n        (pointerdown)=\"pointerdown($event)\"\n        [igxColumnMovingDrop]=\"column\"\n        [column]=\"column\"\n        (keydown)=\"grid.navigation.headerNavigation($event)\"\n        [style.min-width]=\"getHeaderWidthFromDimension()\"\n        [style.width]=\"getHeaderWidthFromDimension()\"\n    >\n    </igx-pivot-row-dimension-header>\n    @if (!column.columnGroup && column.resizable) {\n        <span class=\"igx-grid-th__resize-handle\"\n            [igxPivotResizeHandle]=\"column\"\n            [igxPivotResizeHandleHeader]=\"this\"\n            [attr.draggable]=\"false\"\n            [style.cursor]=\"colResizingService.resizeCursor\">\n        </span>\n    }\n    @if (grid.hasMovableColumns) {\n        <span class=\"igx-grid-th__drop-indicator-right\"></span>\n    }\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    OnChanges,\n    QueryList,\n    Renderer2,\n    ViewChild,\n    SimpleChanges,\n    ViewChildren,\n    HostBinding,\n    inject\n} from '@angular/core';\nimport { NgTemplateOutlet, NgClass, NgStyle } from '@angular/common';\n\nimport { AbsoluteScrollStrategy, AutoPositionStrategy, ColumnType, OverlaySettings, PositionSettings, SortingDirection, VerticalAlignment } from 'igniteui-angular/core';\nimport {\n    DropPosition,\n    IGX_GRID_BASE,\n    IgxExcelStyleColumnOperationsTemplateDirective,\n    IgxExcelStyleFilterOperationsTemplateDirective,\n    IgxExcelStyleSearchComponent,\n    IgxGridExcelStyleFilteringComponent,\n    IgxGridHeaderGroupComponent,\n    IgxGridHeaderRowComponent,\n    IgxGridTopLevelColumns,\n    IgxHeaderGroupStylePipe,\n    IPivotAggregator,\n    IPivotDimension,\n    IPivotValue,\n    PivotDimensionType,\n    PivotGridType,\n    PivotUtil\n} from 'igniteui-angular/grids/core';\nimport { IgxPivotRowHeaderGroupComponent } from './pivot-row-header-group.component';\nimport { IgxDropDirective, IgxGridForOfDirective } from 'igniteui-angular/directives';\nimport { IBaseChipEventArgs, IgxChipComponent, IgxChipsAreaComponent } from 'igniteui-angular/chips';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { IgxPrefixDirective, IgxSuffixDirective } from 'igniteui-angular/input-group';\nimport { IgxBadgeComponent } from 'igniteui-angular/badge';\nimport { IgxDropDownComponent, IgxDropDownItemComponent, IgxDropDownItemNavigationDirective, ISelectionEventArgs } from 'igniteui-angular/drop-down';\n\n/**\n *\n * For all intents & purposes treat this component as what a <thead> usually is in the default <table> element.\n *\n * This container holds the pivot grid header elements and their behavior/interactions.\n *\n * @hidden @internal\n */\n@Component({\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    selector: 'igx-pivot-header-row',\n    templateUrl: './pivot-header-row.component.html',\n    imports: [IgxDropDirective, IgxChipsAreaComponent, IgxChipComponent, IgxIconComponent,\n        IgxPrefixDirective, IgxBadgeComponent, IgxSuffixDirective, IgxDropDownItemNavigationDirective,\n        NgTemplateOutlet, IgxGridHeaderGroupComponent, NgClass, NgStyle, IgxGridForOfDirective,\n        IgxDropDownComponent, IgxDropDownItemComponent, IgxGridExcelStyleFilteringComponent,\n        IgxExcelStyleColumnOperationsTemplateDirective, IgxExcelStyleFilterOperationsTemplateDirective,\n        IgxExcelStyleSearchComponent, IgxHeaderGroupStylePipe, IgxGridTopLevelColumns,\n        IgxPivotRowHeaderGroupComponent]\n})\nexport class IgxPivotHeaderRowComponent extends IgxGridHeaderRowComponent implements OnChanges {\n    public override grid = inject<PivotGridType>(IGX_GRID_BASE);\n    protected renderer = inject(Renderer2);\n\n    public aggregateList: IPivotAggregator[] = [];\n\n    public value: IPivotValue;\n    public filterDropdownDimensions: Set<any> = new Set<any>();\n    public filterAreaDimensions: Set<any> = new Set<any>();\n    private _dropPos = DropPosition.AfterDropTarget;\n    private _subMenuPositionSettings: PositionSettings = {\n        verticalStartPoint: VerticalAlignment.Bottom,\n        closeAnimation: undefined\n    };\n    private _subMenuOverlaySettings: OverlaySettings = {\n        closeOnOutsideClick: true,\n        modal: false,\n        positionStrategy: new AutoPositionStrategy(this._subMenuPositionSettings),\n        scrollStrategy: new AbsoluteScrollStrategy()\n    };\n\n    /**\n     * @hidden @internal\n     */\n    @ViewChild('esf') public esf: any;\n\n    /**\n     * @hidden @internal\n     */\n    @ViewChild('filterAreaHidden', { static: false }) public filterArea;\n\n    /**\n     * @hidden @internal\n     */\n    @ViewChild('filterIcon') public filtersButton;\n\n    /**\n     * @hidden @internal\n     */\n    @ViewChild('dropdownChips') public dropdownChips;\n\n    /**\n     * @hidden @internal\n     */\n    @ViewChild('pivotFilterContainer') public pivotFilterContainer;\n\n    /**\n     * @hidden @internal\n     */\n    @ViewChild('pivotRowContainer') public pivotRowContainer;\n\n    /**\n    * @hidden\n    * @internal\n    */\n    @ViewChildren('notifyChip')\n    public notificationChips: QueryList<IgxChipComponent>;\n\n    /**\n    * @hidden\n    * @internal\n    * The virtualized part of the header row containing the unpinned header groups.\n    */\n    @ViewChildren('headerVirtualContainer', { read: IgxGridForOfDirective })\n    public headerContainers: QueryList<IgxGridForOfDirective<ColumnType, ColumnType[]>>;\n\n    /**\n    * @hidden\n    * @internal\n    */\n    @ViewChildren('rowDimensionHeaders')\n    public rowDimensionHeaders: QueryList<IgxPivotRowHeaderGroupComponent>;\n\n    public override get headerForOf() {\n        return this.headerContainers?.last;\n    }\n\n    @HostBinding('attr.aria-activedescendant')\n    public override get activeDescendant(): string {\n        const activeElem = this.navigation.activeNode;\n        if (!activeElem || !Object.keys(activeElem).length || this.grid.navigation.headerRowActiveDescendant) {\n            return null;\n        }\n\n        if (this.navigation.isRowDimensionHeaderActive) {\n            const activeHeader = this.grid.theadRow.rowDimensionHeaders.find(h => h.active);\n            if (activeHeader) {\n                const key = activeHeader.title ?? activeHeader.rootDimension?.memberName;\n                return key ? `${this.grid.id}_${key}` : null;\n            }\n            return null;\n        }\n\n        return super.activeDescendant;\n    }\n\n    /**\n    * @hidden\n    * @internal\n    * Default is a single empty level since default depth is 1\n    */\n    public columnDimensionsByLevel: any[] = [[]];\n\n    /**\n    * @hidden @internal\n    */\n    public get isFiltersButton(): boolean {\n        let chipsWidth = 0;\n        this.filterDropdownDimensions.clear();\n        this.filterAreaDimensions.clear();\n        if (this.filterArea?.chipsList && this.filterArea.chipsList.length !== 0) {\n            const styles = getComputedStyle(this.pivotFilterContainer.nativeElement);\n            const containerPaddings = parseFloat(styles.paddingLeft) + parseFloat(styles.paddingRight);\n            chipsWidth += containerPaddings + (this.filtersButton && this.filterArea?.chipsList.length > 1 ? this.filtersButton.el.nativeElement.getBoundingClientRect().width : 0);\n            this.filterArea.chipsList.forEach(chip => {\n                const dim = this.grid.filterDimensions.find(x => x.memberName === chip.id);\n                if (dim) {\n                    // 8 px margin between chips\n                    const currentChipWidth = chip.nativeElement.getBoundingClientRect().width + 8;\n                    if (chipsWidth + currentChipWidth < this.grid.pivotRowWidths) {\n                        this.filterAreaDimensions.add(dim);\n                    } else {\n                        this.filterDropdownDimensions.add(dim);\n                    }\n                    chipsWidth += currentChipWidth;\n                }\n            });\n            return this.filterDropdownDimensions.size > 0;\n        }\n        return false;\n    }\n\n    /**\n    * @hidden\n    * @internal\n    */\n    public get totalDepth() {\n        const columnDimensions = this.grid.columnDimensions;\n        if (columnDimensions.length === 0) {\n            return 1;\n        }\n        let totalDepth = columnDimensions.map(x => this.grid.data?.length > 0 ? PivotUtil.getDimensionDepth(x) + 1 : 0).reduce((acc, val) => acc + val);\n        if (this.grid.hasMultipleValues) {\n            totalDepth += 1;\n        }\n        return totalDepth;\n    }\n\n    /**\n    * @hidden\n    * @internal\n    */\n    public get maxContainerHeight() {\n        return this.totalDepth * this.grid.renderedRowHeight;\n    }\n\n    /**\n    * @hidden\n    * @internal\n    */\n    public override get isLeafHeaderAriaHidden(): boolean {\n        return super.isLeafHeaderAriaHidden || this.grid.navigation.isRowHeaderActive || this.grid.navigation.isRowDimensionHeaderActive;\n    }\n\n    /**\n    * @hidden\n    * @internal\n    */\n    public calcHeight(col: ColumnType, index: number) {\n        return !col.columnGroup && col.level < this.totalDepth && col.level === index ? (this.totalDepth - col.level) * this.grid.rowHeight : this.grid.rowHeight;\n    }\n\n    /**\n    * @hidden\n    * @internal\n    */\n    public isDuplicateOfExistingParent(col: ColumnType, lvl: number) {\n        const parentCollection = lvl > 0 ? this.columnDimensionsByLevel[lvl - 1] : [];\n        const duplicate = parentCollection.indexOf(col) !== -1;\n\n        return duplicate;\n    }\n\n    /**\n    * @hidden\n    * @internal\n    */\n    public isMultiRow(col: ColumnType, lvl: number) {\n        const isLeaf = !col.columnGroup;\n        return isLeaf && lvl !== this.totalDepth - 1;\n    }\n\n    /**\n    * @hidden\n    * @internal\n    */\n    public populateColumnDimensionsByLevel() {\n        const res = [];\n        for (let i = 0; i < this.totalDepth; i++) {\n            res[i] = [];\n        }\n        const cols = this.unpinnedColumnCollection;\n        // populate column dimension matrix recursively\n        this.populateDimensionRecursively(cols.filter(x => x.level === 0), 0, res);\n        this.columnDimensionsByLevel = res;\n    }\n\n    protected populateDimensionRecursively(currentLevelColumns: ColumnType[], level = 0, res: any[]) {\n        currentLevelColumns.forEach(col => {\n            if (res[level]) {\n                res[level].push(col);\n                if (col.columnGroup && col.children.length > 0) {\n                    const visibleColumns = col.children.toArray().filter(x => !x.hidden);\n                    this.populateDimensionRecursively(visibleColumns, level + 1, res);\n                } else if (level < this.totalDepth - 1) {\n                    for (let i = level + 1; i <= this.totalDepth - 1; i++) {\n                        res[i].push(col);\n                    }\n                }\n            }\n        });\n    }\n\n    /**\n    * @hidden\n    * @internal\n    */\n    public ngOnChanges(changes: SimpleChanges) {\n        if (changes.unpinnedColumnCollection) {\n            this.populateColumnDimensionsByLevel();\n        }\n    }\n\n    /**\n    * @hidden\n    * @internal\n    */\n    public onDimDragStart(event, area) {\n        this.cdr.detectChanges();\n        for (const chip of this.notificationChips) {\n            const parent = chip.nativeElement.parentElement;\n            if (area.chipsList.toArray().indexOf(chip) === -1 &&\n                parent.children.length > 0 &&\n                parent.children.item(0).id !== 'empty') {\n                chip.nativeElement.hidden = false;\n                parent.parentElement.scrollTo({ left: chip.nativeElement.offsetLeft });\n            }\n        }\n    }\n\n    /**\n    * @hidden\n    * @internal\n    */\n    public onDimDragEnd() {\n        for (const chip of this.notificationChips) {\n            chip.nativeElement.hidden = true;\n        }\n    }\n\n    /**\n    * @hidden\n    * @internal\n    */\n    public getAreaHeight(area: IgxChipsAreaComponent) {\n        const chips = area.chipsList;\n        return chips && chips.length > 0 ? chips.first.nativeElement.offsetHeight : 0;\n    }\n\n    /**\n    * @hidden\n    * @internal\n    */\n    public rowRemoved(event: IBaseChipEventArgs) {\n        const row = this.grid.pivotConfiguration.rows.find(x => x.memberName === event.owner.id);\n        this.grid.toggleDimension(row);\n    }\n\n    /**\n    * @hidden\n    * @internal\n    */\n    public columnRemoved(event: IBaseChipEventArgs) {\n        const col = this.grid.pivotConfiguration.columns.find(x => x.memberName === event.owner.id);\n        this.grid.toggleDimension(col);\n    }\n\n    /**\n    * @hidden\n    * @internal\n    */\n    public valueRemoved(event: IBaseChipEventArgs) {\n        const value = this.grid.pivotConfiguration.values.find(x => x.member === event.owner.id || x.displayName === event.owner.id);\n        this.grid.toggleValue(value);\n    }\n\n    /**\n    * @hidden\n    * @internal\n    */\n    public filterRemoved(event: IBaseChipEventArgs) {\n        const filter = this.grid.pivotConfiguration.filters.find(x => x.memberName === event.owner.id);\n        this.grid.toggleDimension(filter);\n        if (this.filterDropdownDimensions.size > 0) {\n            this.onFiltersAreaDropdownClick({ target: this.filtersButton.el.nativeElement }, undefined, false);\n        } else {\n            this.grid.filteringService.hideESF();\n        }\n    }\n\n    public onFiltersSelectionChanged(event?: IBaseChipEventArgs) {\n        this.dropdownChips.chipsList.forEach(chip => {\n            if (chip.id !== event.owner.id) {\n                chip.selected = false\n            }\n        });\n        this.onFiltersAreaDropdownClick({ target: this.filtersButton.el.nativeElement }, this.grid.filterDimensions.find(dim => dim.memberName === event.owner.id), false);\n    }\n\n    /**\n    * @hidden\n    * @internal\n    */\n    public onFilteringIconPointerDown(event) {\n        event.stopPropagation();\n        event.preventDefault();\n    }\n\n    /**\n    * @hidden\n    * @internal\n    */\n    public onFilteringIconClick(event, dimension) {\n        event.stopPropagation();\n        event.preventDefault();\n        const dim = dimension;\n        const col = this.grid.dimensionDataColumns.find(x => x.field === dim.memberName || x.field === dim.member);\n        this.grid.filteringService.toggleFilterDropdown(event.target, col);\n    }\n\n    /**\n    * @hidden\n    * @internal\n    */\n    public onSummaryClick(eventArgs, value: IPivotValue, dropdown: IgxDropDownComponent, chip: IgxChipComponent) {\n        this._subMenuOverlaySettings.target = eventArgs.currentTarget;\n        this.updateDropDown(value, dropdown, chip);\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public onFiltersAreaDropdownClick(event, dimension?, shouldReattach = true) {\n        const dim = dimension || this.filterDropdownDimensions.values().next().value;\n        const col = this.grid.dimensionDataColumns.find(x => x.field === dim.memberName || x.field === dim.member);\n        if (shouldReattach) {\n            this.dropdownChips.chipsList.forEach(chip => {\n                chip.selected = false\n            });\n            this.dropdownChips.chipsList.first.selected = true;\n        }\n        this.grid.filteringService.toggleFiltersESF(this.esf, event.target, col, shouldReattach);\n    }\n\n    /**\n    * @hidden\n    * @internal\n    */\n    public onAggregationChange(event: ISelectionEventArgs) {\n\n        if (!this.isSelected(event.newSelection.value)) {\n            this.value.aggregate = event.newSelection.value;\n            const isSingleValue = this.grid.values.length === 1;\n\n            PivotUtil.updateColumnTypeByAggregator(this.grid.columns, this.value, isSingleValue);\n\n            this.grid.pipeTrigger++;\n        }\n    }\n\n    /**\n    * @hidden\n    * @internal\n    */\n    public isSelected(val: IPivotAggregator) {\n        return this.value.aggregate.key === val.key;\n    }\n\n    /**\n    * @hidden\n    * @internal\n    */\n    public onChipSort(_event, dimension: IPivotDimension) {\n        if (dimension.sortable === undefined || dimension.sortable) {\n            const startDirection = dimension.sortDirection || SortingDirection.None;\n            const direction = startDirection + 1 > SortingDirection.Desc ?\n                SortingDirection.None : startDirection + 1;\n            this.grid.sortDimension(dimension, direction);\n        }\n    }\n\n    /**\n    * @hidden\n    * @internal\n    */\n    public onDimDragOver(event, dimension?: PivotDimensionType) {\n        if (!event.dragChip || !event.dragChip.data?.pivotArea) return;\n        const typeMismatch = dimension !== undefined ? this.grid.pivotConfiguration.values.find(x => x.member === event.dragChip.id\n            || x.displayName === event.dragChip.id) :\n            !this.grid.pivotConfiguration.values.find(x => x.member === event.dragChip.id || x.displayName === event.dragChip.id);\n        if (typeMismatch) {\n            // cannot drag between dimensions and value\n            return;\n        }\n        // if we are in the left half of the chip, drop on the left\n        // else drop on the right of the chip\n        const clientRect = event.owner.nativeElement.getBoundingClientRect();\n        const pos = clientRect.width / 2;\n\n        this._dropPos = event.originalEvent.offsetX > pos ? DropPosition.AfterDropTarget : DropPosition.BeforeDropTarget;\n        if (this._dropPos === DropPosition.AfterDropTarget) {\n            event.owner.nativeElement.previousElementSibling.style.visibility = 'hidden';\n            event.owner.nativeElement.nextElementSibling.style.visibility = '';\n        } else {\n            event.owner.nativeElement.nextElementSibling.style.visibility = 'hidden';\n            event.owner.nativeElement.previousElementSibling.style.visibility = '';\n        }\n    }\n\n    /**\n    * @hidden\n    * @internal\n    */\n    public onDimDragLeave(event) {\n        event.owner.nativeElement.previousElementSibling.style.visibility = 'hidden';\n        event.owner.nativeElement.nextElementSibling.style.visibility = 'hidden';\n        this._dropPos = DropPosition.AfterDropTarget;\n    }\n\n    /**\n    * @hidden\n    * @internal\n    */\n    public onAreaDragLeave(event, area) {\n        const dataChips = area.chipsList.toArray().filter(x => this.notificationChips.toArray().indexOf(x) === -1);\n        dataChips.forEach(element => {\n            if (element.nativeElement.previousElementSibling) {\n                element.nativeElement.previousElementSibling.style.visibility = 'hidden';\n            }\n            if (element.nativeElement.nextElementSibling) {\n                element.nativeElement.nextElementSibling.style.visibility = 'hidden';\n            }\n        });\n    }\n\n    /**\n    * @hidden\n    * @internal\n    */\n    public onValueDrop(event, area) {\n        if (!(event.dragChip && event.dragChip.data?.pivotArea) && !(event.dragData?.chip && !!event.dragData.chip.data.pivotArea)) return;\n        //values can only be reordered\n        const values = this.grid.pivotConfiguration.values;\n        const dragId = event.dragChip?.id || event.dragData?.chip.id;\n        const chipsArray = area.chipsList.toArray();\n        let chipIndex = chipsArray.indexOf(event.owner) !== -1 ? chipsArray.indexOf(event.owner) : chipsArray.length;\n        chipIndex = this._dropPos === DropPosition.AfterDropTarget ? chipIndex + 1 : chipIndex;\n        const value = values.find(x => x.member === dragId || x.displayName === dragId);\n        if (value) {\n            const dragChipIndex = chipsArray.indexOf(event.dragChip || event.dragData.chip);\n            this.grid.moveValue(value, dragChipIndex >= chipIndex ? chipIndex : chipIndex - 1);\n        }\n    }\n\n    /**\n    * @hidden\n    * @internal\n    */\n    public onDimDrop(event, area, dimensionType: PivotDimensionType) {\n        if (!(event.dragChip && event.dragChip.data?.pivotArea) && !(event.dragData?.chip && !!event.dragData.chip.data.pivotArea)) return;\n        const dragId = event.dragChip?.id || event.dragData?.chip.id;\n        const currentDim = this.grid.getDimensionsByType(dimensionType);\n        const chipsArray = area.chipsList.toArray();\n        const chip = chipsArray.find(x => x.id === dragId);\n        const isNewChip = chip === undefined;\n        const isReorder = event.owner.id !== undefined;\n        //const chipIndex = chipsArray.indexOf(event.owner) !== -1 ? chipsArray.indexOf(event.owner) : chipsArray.length;\n        const chipIndex = currentDim.findIndex(x => x.memberName === event.owner.id) !== -1 ?\n            currentDim.findIndex(x => x.memberName === event.owner.id) : currentDim.length;\n        const targetIndex = this._dropPos === DropPosition.AfterDropTarget ? chipIndex + 1 : chipIndex;\n        if (isNewChip) {\n            // chip moved from an external collection\n            const dim = this.grid.allDimensions.find(x => x && x.memberName === dragId);\n            if (!dim) {\n                // you have dragged something that is not a dimension\n                return;\n            }\n            this.grid.moveDimension(dim, dimensionType, targetIndex);\n        } else if (isReorder) {\n            // chip from same collection, reordered.\n            const newDim = currentDim.find(x => x.memberName === dragId);\n            const dragChipIndex = currentDim.findIndex(x => x.memberName === dragId);\n            this.grid.moveDimension(newDim, dimensionType, dragChipIndex > chipIndex ? targetIndex : targetIndex - 1);\n        }\n        this.grid.pipeTrigger++;\n        this.grid.dimensionsChange.emit({ dimensions: currentDim, dimensionCollectionType: dimensionType });\n        // clean states\n        this.onDimDragEnd();\n        this.onAreaDragLeave(event, area);\n    }\n\n    protected updateDropDown(value: IPivotValue, dropdown: IgxDropDownComponent, chip: IgxChipComponent) {\n        this.value = value;\n        dropdown.width = chip.nativeElement.clientWidth + 'px';\n        this.aggregateList = PivotUtil.getAggregateList(value, this.grid);\n        this.cdr.detectChanges();\n        dropdown.open(this._subMenuOverlaySettings);\n    }\n\n    protected getRowDimensionColumn(dim: IPivotDimension): ColumnType {\n        return this.grid.dimensionDataColumns ? this.grid.dimensionDataColumns.find((col) => col.field === dim.memberName) : null;\n    }\n}\n","<div>\n    <div class=\"igx-grid-thead__wrapper igx-grid-thead__wrapper--pivot\" role=\"row\" [style.width.px]=\"width\">\n        <div class=\"igx-grid__tr\" role=\"row\" [style.width.px]=\"width\">\n            <div class='igx-grid__tr-pivot--filter-container'>\n                @if (grid.pivotUI.showConfiguration) {\n                    <div #pivotFilterContainer\n                         class=\"igx-grid__tr-pivot igx-grid__tr-pivot--filter\" [style.min-width.px]=\"grid.pivotRowWidths - 1\"\n                         [style.max-width.px]=\"grid.pivotRowWidths - 1\" (igxDragLeave)=\"onAreaDragLeave($event, filterArea)\"\n                         igxDrop (dropped)=\"onDimDrop($event, filterArea, 2)\" (pointerdown)=\"$event.preventDefault()\">\n                        <!-- Filter area -->\n                        <igx-chips-area #filterArea droppable='true'>\n                            @if (grid.filterDimensions.length === 0) {\n                                <span id='empty' igxDrop (dropped)=\"onDimDrop($event, filterArea, 2)\"\n                                  class='igx-grid__pivot-empty-chip-area'>{{grid.resourceStrings.igx_grid_pivot_empty_filter_drop_area}}</span>\n                            }\n                            @for (filter of this.filterAreaDimensions; track filter; let last = $last) {\n                                <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n                                  [style.height.px]='getAreaHeight(filterArea)'></span>\n                                <igx-chip [id]=\"filter.memberName\" [draggable]=\"true\" [data]=\"{ pivotArea: 'filter' }\"\n                                      [removable]=\"true\" (remove)=\"filterRemoved($event)\" (dragOver)=\"onDimDragOver($event, 2)\"\n                                      (dragLeave)=\"onDimDragLeave($event)\" (dragDrop)=\"onDimDrop($event, filterArea, 2)\"\n                                      (moveStart)='onDimDragStart($event, filterArea)' (moveEnd)='onDimDragEnd()'>\n                                    <igx-icon\n                                        family=\"default\"\n                                        name=\"filter_list\"\n                                        igxPrefix\n                                        (pointerdown)='onFilteringIconPointerDown($event)'\n                                        (click)='onFilteringIconClick($event, filter)'>\n                                    </igx-icon>\n                                    {{filter.displayName || filter.memberName}}\n                                </igx-chip>\n                                @if (last) {\n                                    <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n                                      [style.height.px]='getAreaHeight(filterArea)'></span>\n                                }\n                            }\n                            <igx-chip igxDrop (dragDrop)=\"onDimDrop($event, filterArea, 2)\" #notifyChip [hidden]='true'>\n                                {{grid.resourceStrings.igx_grid_pivot_filter_drop_chip}}\n                            </igx-chip>\n                        </igx-chips-area>\n                        @if (isFiltersButton && grid.filterDimensions.length !== 0) {\n                            <div class=\"igx-grid__pivot-filter-toggle\">\n                                <igx-icon\n                                    family=\"default\"\n                                    name=\"filter_list\"\n                                    #filterIcon\n                                    (pointerdown)='onFilteringIconPointerDown($event)'\n                                    (click)='onFiltersAreaDropdownClick($event)'>\n                                </igx-icon>\n                                <igx-badge value=\"{{this.filterDropdownDimensions.size}}\"></igx-badge>\n                            </div>\n                        }\n                    </div>\n                }\n                <div class='igx-grid__tr-pivot--drop-row-area'>\n                    @if (grid.pivotUI.showConfiguration && grid.pivotUI.showRowHeaders) {\n                        <div #pivotRowContainer [style.width.px]=\"grid.pivotRowWidths - 1\"\n                            class=\"igx-grid__tr-pivot igx-grid__tr-pivot--small-row-area\" igxDrop\n                            (igxDragLeave)=\"onAreaDragLeave($event, rowArea)\"\n                            (dropped)=\"onDimDrop($event, rowArea, 0)\">\n                            <igx-chips-area #rowArea droppable='true'>\n                                @if (grid.rowDimensions.length === 0) {\n                                    <span id='empty' igxDrop (dropped)=\"onDimDrop($event, rowArea, 0)\"\n                                        class='igx-grid__pivot-empty-chip-area'>{{grid.resourceStrings.igx_grid_pivot_empty_row_drop_area}}</span>\n                                }\n                                @for (row of grid.rowDimensions; track row.memberName; let last = $last) {\n                                    <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n                                    [style.height.px]='getAreaHeight(rowArea)'></span>\n                                    <igx-chip [draggable]=\"true\" [id]=\"row.memberName\" [data]=\"{ pivotArea: 'row' }\"\n                                            [removable]=\"true\" (remove)=\"rowRemoved($event)\" (dragLeave)=\"onDimDragLeave($event)\"\n                                            (dragDrop)=\"onDimDrop($event, rowArea, 0)\" (dragOver)=\"onDimDragOver($event, 0)\"\n                                            (moveStart)='onDimDragStart($event, rowArea)' (moveEnd)='onDimDragEnd()'\n                                            (click)=\"onChipSort($event, row)\">\n                                        <igx-icon igxPrefix family=\"default\" name=\"table_rows\"></igx-icon>\n                                        <igx-icon\n                                            family=\"default\"\n                                            name=\"filter_list\"\n                                            igxPrefix\n                                            (pointerdown)='onFilteringIconPointerDown($event)'\n                                            (click)='onFilteringIconClick($event, row)'>\n                                        </igx-icon>\n                                        {{ row.displayName || row.memberName}}\n                                        @if (row.sortDirection) {\n                                            <igx-icon\n                                                family=\"default\"\n                                                [name]=\"row.sortDirection < 2 ? 'sort_asc' : 'sort_desc'\"\n                                                igxSuffix>\n                                            </igx-icon>\n                                        }\n                                    </igx-chip>\n                                    @if (last) {\n                                        <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n                                        [style.height.px]='getAreaHeight(rowArea)'></span>\n                                    }\n                                }\n                                <igx-chip igxDrop (dragDrop)=\"onDimDrop($event, rowArea, 0)\" #notifyChip [hidden]='true'>\n                                    {{grid.resourceStrings.igx_grid_pivot_row_drop_chip}}\n                                </igx-chip>\n                            </igx-chips-area>\n                        </div>\n                    }\n                </div>\n            </div>\n\n            <div class=\"igx-grid__tr-pivot-group\">\n                @if (grid.pivotUI.showConfiguration) {\n                    <div #pivotColumnContainer class=\"igx-grid__tr-pivot\"\n                         (dropped)=\"onDimDrop($event, colArea, 1)\" igxDrop (igxDragLeave)=\"onAreaDragLeave($event, colArea)\">\n                        <!-- Columns area -->\n                        <igx-chips-area #colArea droppable='true'>\n                            @if (grid.columnDimensions.length === 0) {\n                                <span id='empty' (dropped)=\"onDimDrop($event, colArea, 1)\" igxDrop\n                                    class='igx-grid__pivot-empty-chip-area'>\n                                {{grid.resourceStrings.igx_grid_pivot_empty_column_drop_area}}</span>\n                            }\n                            @for (col of grid.columnDimensions; track col.memberName; let last = $last) {\n                                <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n                                  [style.height.px]='getAreaHeight(colArea)'></span>\n                                <igx-chip [draggable]=\"true\" [id]=\"col.memberName\" [data]=\"{ pivotArea: 'column' }\"\n                                      [removable]=\"true\" (remove)=\"columnRemoved($event)\" (dragOver)=\"onDimDragOver($event, 1)\"\n                                      (dragLeave)=\"onDimDragLeave($event)\" (dragDrop)=\"onDimDrop($event, colArea, 1)\"\n                                      (moveStart)='onDimDragStart($event, colArea)' (moveEnd)='onDimDragEnd()'\n                                      (click)=\"onChipSort($event, col)\">\n                                    <igx-icon\n                                        family=\"default\"\n                                        name=\"view_column\"\n                                        igxPrefix>\n                                    </igx-icon>\n                                    <igx-icon\n                                        family=\"default\"\n                                        name=\"filter_list\"\n                                        igxPrefix\n                                        (pointerdown)='onFilteringIconPointerDown($event)'\n                                        (click)='onFilteringIconClick($event, col)'>\n                                    </igx-icon>\n                                    {{col.displayName || col.memberName}}\n                                    @if (col.sortDirection) {\n                                        <igx-icon\n                                            family=\"default\"\n                                            [name]=\"col.sortDirection < 2 ? 'sort_asc' : 'sort_desc'\"\n                                            igxSuffix>\n                                        </igx-icon>\n                                    }\n                                </igx-chip>\n                                @if (last) {\n                                    <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n                                      [style.height.px]='getAreaHeight(colArea)'></span>\n                                }\n                            }\n                            <igx-chip igxDrop (dragDrop)=\"onDimDrop($event, colArea, 1)\" #notifyChip [hidden]='true'>\n                                {{grid.resourceStrings.igx_grid_pivot_column_drop_chip}}\n                            </igx-chip>\n                        </igx-chips-area>\n                    </div>\n                }\n\n                @if (grid.pivotUI.showConfiguration) {\n                    <div #pivotValueContainer class=\"igx-grid__tr-pivot\"\n                         (pointerdown)=\"$event.preventDefault()\" (dropped)=\"onValueDrop($event, valueArea)\" igxDrop\n                         (igxDragLeave)=\"onAreaDragLeave($event, valueArea)\">\n                        <!-- Value area -->\n                        <igx-chips-area #valueArea droppable='true'>\n                            @if (grid.values.length === 0) {\n                                <span id='empty' (dropped)=\"onValueDrop($event, valueArea)\" igxDrop\n                                class='igx-grid__pivot-empty-chip-area'>{{grid.resourceStrings.igx_grid_pivot_empty_value_drop_area}}</span>\n                            }\n                            @for (value of grid.values; track value.member; let last = $last) {\n                                <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n                                  [style.height.px]='getAreaHeight(valueArea)'></span>\n                                <igx-chip #currChip [draggable]=\"true\" [id]=\"value.displayName || value.member\" [data]=\"{ pivotArea: 'value' }\"\n                                      [removable]=\"true\" (remove)=\"valueRemoved($event)\"\n                                      (dragLeave)=\"onDimDragLeave($event)\" (dragOver)=\"onDimDragOver($event)\"\n                                      (dragDrop)=\"onValueDrop($event, valueArea)\">\n                                    <div class=\"igx-grid__tr-pivot-toggle-icons\" igxPrefix\n                                         (click)='onSummaryClick($event, value, dropdown, currChip)'\n                                         (pointerdown)='$event.stopPropagation()' [igxDropDownItemNavigation]=\"dropdown\">\n                                        <igx-icon family=\"default\" name=\"functions\"></igx-icon>\n                                        <igx-icon family=\"default\" name=\"arrow_drop_down\"></igx-icon>\n                                    </div>\n                                    <ng-container *ngTemplateOutlet=\"grid.valueChipTemplate ? grid.valueChipTemplate : valueChipDefaultTemplate; context: { $implicit: value }\"></ng-container>\n                                </igx-chip>\n                                @if (last) {\n                                    <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n                                      [style.height.px]='getAreaHeight(valueArea)'></span>\n                                }\n                            }\n                            <igx-chip igxDrop (dragDrop)=\"onValueDrop($event, valueArea)\" #notifyValueChip [hidden]='true'>\n                                {{grid.resourceStrings.igx_grid_pivot_value_drop_chip}}\n                            </igx-chip>\n                        </igx-chips-area>\n                    </div>\n                }\n            </div>\n        </div>\n    </div>\n    <div role=\"rowgroup\" class=\"igx-grid-thead__wrapper\" [style.width.px]=\"width\"\n        [class.igx-grid__tr--mrl]=\"hasMRL\">\n\n        <!-- Column headers area -->\n        <div class=\"igx-grid__tr\" role=\"row\" [style.width.px]=\"width\">\n            @if (!grid.pivotUI.showRowHeaders || grid.rowDimensions.length === 0) {\n                <div #pivotContainer class=\"igx-grid__tr-pivot igx-grid__tr-pivot--row-area\"\n                    [style.width.px]=\"grid.pivotRowWidths - 1\" (igxDragLeave)=\"onAreaDragLeave($event, rowArea)\" igxDrop\n                    (dropped)=\"onDimDrop($event, rowArea, 0)\" (pointerdown)=\"$event.preventDefault()\">\n                    <!-- Row area -->\n                    <igx-chips-area #rowArea droppable='true'>\n                        @if (grid.pivotUI.showConfiguration || grid.rowDimensions.length === 0) {\n                            @if (grid.rowDimensions.length === 0) {\n                                <span id='empty' igxDrop (dropped)=\"onDimDrop($event, rowArea, 0)\"\n                                class='igx-grid__pivot-empty-chip-area'>{{grid.resourceStrings.igx_grid_pivot_empty_row_drop_area}}</span>\n                            }\n                            @for (row of grid.rowDimensions; track row.memberName; let last = $last) {\n                                <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n                                    [style.height.px]='getAreaHeight(rowArea)'></span>\n                                <igx-chip [draggable]=\"true\" [id]=\"row.memberName\" [data]=\"{ pivotArea: 'row' }\"\n                                        [removable]=\"true\" (remove)=\"rowRemoved($event)\" (dragLeave)=\"onDimDragLeave($event)\"\n                                        (dragDrop)=\"onDimDrop($event, rowArea, 0)\" (dragOver)=\"onDimDragOver($event, 0)\"\n                                        (moveStart)='onDimDragStart($event, rowArea)' (moveEnd)='onDimDragEnd()'\n                                        (click)=\"onChipSort($event, row)\">\n                                    <igx-icon igxPrefix family=\"default\" name=\"table_rows\"></igx-icon>\n                                    <igx-icon\n                                        family=\"default\"\n                                        name=\"filter_list\"\n                                        igxPrefix\n                                        (pointerdown)='onFilteringIconPointerDown($event)'\n                                        (click)='onFilteringIconClick($event, row)'>\n                                    </igx-icon>\n                                    {{ row.displayName || row.memberName}}\n                                    @if (row.sortDirection) {\n                                        <igx-icon\n                                            family=\"default\"\n                                            [name]=\"row.sortDirection < 2 ? 'sort_asc' : 'sort_desc'\"\n                                            igxSuffix>\n                                        </igx-icon>\n                                    }\n                                </igx-chip>\n                                @if (last) {\n                                    <span class=\"igx-grid__tr-pivot--chip_drop_indicator\"\n                                        [style.height.px]='getAreaHeight(rowArea)'></span>\n                                }\n                            }\n                            <igx-chip igxDrop (dragDrop)=\"onDimDrop($event, rowArea, 0)\" #notifyChip [hidden]='true'>\n                                {{grid.resourceStrings.igx_grid_pivot_row_drop_chip}}\n                            </igx-chip>\n                        }\n                    </igx-chips-area>\n                </div>\n            }\n\n            @if (grid.pivotUI.showRowHeaders && grid.rowDimensions.length > 0) {\n                <div class=\"igx-grid__tr igx-grid__tr-header-row\" [style.width.px]=\"grid.pivotRowWidths - 1\">\n                    @for (dim of grid.visibleRowDimensions; track dim; let colIndex = $index; let isLast = $last) {\n                        @if (getRowDimensionColumn(dim); as dimCol) {\n                            <igx-pivot-row-header-group #rowDimensionHeaders\n                                [ngClass]=\"dimCol.headerGroupClasses\"\n                                [ngStyle]=\"dimCol.headerGroupStyles | igxHeaderGroupStyle:dimCol:grid.pipeTrigger\"\n                                [style.width.px]=\"grid.rowDimensionWidthToPixels(this.grid.visibleRowDimensions[colIndex])\"\n                                [style.flex-basis.px]=\"grid.rowDimensionWidthToPixels(this.grid.visibleRowDimensions[colIndex])\"\n                                [column]=\"dimCol\"\n                                [rootDimension]=\"grid.visibleRowDimensions[colIndex]\"\n                                [dimWidth]=\"grid.rowDimensionWidthToPixels(this.grid.visibleRowDimensions[colIndex])\"\n                                [rowIndex]=\"-1\" >\n                            </igx-pivot-row-header-group>\n                        }\n                    }\n                </div>\n            }\n\n            <!-- Pinned columns collection from the start -->\n            @if (pinnedStartColumnCollection.length) {\n                @for (column of pinnedStartColumnCollection | igxTopLevel; track column) {\n                    <igx-grid-header-group [ngClass]=\"column.headerGroupClasses\"\n                        [ngStyle]=\"column.headerGroupStyles | igxHeaderGroupStyle:column:grid.pipeTrigger\" [column]=\"column\"\n                        [style.min-width]=\"column.resolvedWidth\"\n                        [style.flex-basis]=\"column.resolvedWidth\"\n                        (pointerdown)=\"grid.navigation.focusOutRowHeader($event)\">\n                    </igx-grid-header-group>\n                }\n            }\n            <div class=\"igx-grid-thead--virtualizationWrapper\" [style.max-height.px]=\"maxContainerHeight\" (click)=\"grid.navigation.focusOutRowHeader($event)\">\n                @for (dimLevelColumns of columnDimensionsByLevel; track $index; let i = $index) {\n                    <div class=\"igx-grid-thead__group igx-grid-thead--virtualizationContainer\" [style.height.px]=\"totalDepth > 1 ? grid.rowHeight : undefined\" [style.width.px]=\"grid.unpinnedWidth\">\n                        <ng-template igxGridFor #headerVirtualContainer let-column\n                            [igxGridForOf]=\"dimLevelColumns\" [igxGridForOfUniqueSizeCache]=\"true\" [igxForScrollContainer]=\"grid.parentVirtDir\"\n                            [igxForContainerSize]=\"grid.unpinnedWidth\" [igxForTrackBy]=\"grid.trackColumnChanges\"\n                            [igxForSizePropName]=\"'calcPixelWidth'\" [igxForScrollOrientation]=\"'horizontal'\">\n                            <igx-grid-header-group [ngClass]=\"column.headerGroupClasses\"\n                                [style.height.px]=\"totalDepth > 1 ? calcHeight(column, i) : undefined\"\n                                [ngStyle]=\"column.headerGroupStyles |igxHeaderGroupStyle:column:grid.pipeTrigger\" [column]=\"column\"\n                                [style.min-width]=\"column.resolvedWidth\"\n                                [style.flex-basis]=\"column.resolvedWidth\"\n                                [class.igx-grid__tr-pivot--columnDimensionLeaf]=\"isDuplicateOfExistingParent(column, i)\"\n                                [class.igx-grid__tr-pivot--columnMultiRowSpan]=\"isMultiRow(column, i)\"\n                            >\n                            </igx-grid-header-group>\n                        </ng-template>\n                    </div>\n                }\n            </div>\n\n            <!-- Pinned columns collection at the end -->\n            @if (pinnedEndColumnCollection.length) {\n                @for (column of pinnedEndColumnCollection | igxTopLevel; track column) {\n                    <igx-grid-header-group [ngClass]=\"column.headerGroupClasses\"\n                        [ngStyle]=\"column.headerGroupStyles |igxHeaderGroupStyle:column:grid.pipeTrigger\" [column]=\"column\"\n                        [style.min-width]=\"column.resolvedWidth\"\n                        [style.flex-basis]=\"column.resolvedWidth\"\n                        (pointerdown)=\"grid.navigation.focusOutRowHeader($event)\">\n                    </igx-grid-header-group>\n                }\n            }\n        </div>\n\n        <!-- Render a hidden row of the leaf column headers for accessibility purposes -->\n        <div role=\"row\" style=\"width: 0; height: 0; position: absolute; top: -10000px;\">\n            @for (column of visibleLeafColumns; track column.index) {\n                <div role=\"columnheader\" [attr.aria-hidden]=\"isLeafHeaderAriaHidden\">{{ column.header || column.field }}</div>\n            }\n        </div>\n    </div>\n</div>\n<!-- Header thumb area -->\n<div class=\"igx-grid-thead__thumb\" [hidden]=\"!grid.hasVerticalScroll()\" [style.width.px]=\"grid.scrollSize\">\n</div>\n\n<igx-drop-down #dropdown (selectionChanging)='onAggregationChange($event)'>\n    @for (item of aggregateList; track item.key) {\n        <igx-drop-down-item [selected]='isSelected(item)' [value]='item'>\n            {{ item.label }}\n        </igx-drop-down-item>\n    }\n</igx-drop-down>\n\n<div [hidden]='true'>\n    <igx-grid-excel-style-filtering [maxHeight]='grid.excelStyleFilterMaxHeight' [minHeight]='grid.excelStyleFilterMinHeight' #esf>\n        <div igxExcelStyleColumnOperations>\n            <igx-chips-area #dropdownChips>\n                @for (filter of this.filterDropdownDimensions; track filter) {\n                    <igx-chip [id]=\"filter.memberName\"\n                        [removable]=\"true\" (remove)=\"filterRemoved($event)\"\n                        (chipClick)='onFiltersSelectionChanged($event)' [selectable]='true' [selected]='filter === this.filterDropdownDimensions.values().next().value'>\n                        {{filter.displayName || filter.memberName}}\n                    </igx-chip>\n                }\n            </igx-chips-area>\n        </div>\n        <igx-excel-style-filter-operations>\n            <igx-excel-style-search></igx-excel-style-search>\n        </igx-excel-style-filter-operations>\n    </igx-grid-excel-style-filtering>\n</div>\n\n<div style=\"visibility: hidden; position: absolute; top: -10000px\">\n    <igx-chips-area #filterAreaHidden droppable='true'>\n        @for (filter of grid.filterDimensions; track filter) {\n            <igx-chip\n                [id]=\"filter.memberName\"\n                [draggable]=\"true\"\n                [removable]=\"true\"\n                (remove)=\"filterRemoved($event)\">\n                <igx-icon family=\"default\" name=\"filter_list\" igxPrefix></igx-icon>\n                {{filter.displayName || filter.memberName}}\n            </igx-chip>\n        }\n    </igx-chips-area>\n</div>\n\n<ng-template #valueChipDefaultTemplate let-value>\n    {{value.aggregate.key}}({{value.displayName || value.member}})\n</ng-template>\n","import { IActiveNode, IgxGridNavigationService, IMultiRowLayoutNode, IPivotDimension, IPivotGridRecord, PivotSummaryPosition, PivotUtil, HEADER_KEYS, ROW_COLLAPSE_KEYS, ROW_EXPAND_KEYS } from 'igniteui-angular/grids/core';\nimport { Injectable } from '@angular/core';\nimport { IgxPivotGridComponent } from './pivot-grid.component';\nimport { IgxPivotRowDimensionMrlRowComponent } from './pivot-row-dimension-mrl-row.component';\nimport { take, timeout } from 'rxjs/operators';\nimport { SortingDirection } from 'igniteui-angular/core';\n\n@Injectable()\nexport class IgxPivotGridNavigationService extends IgxGridNavigationService {\n    public override grid: IgxPivotGridComponent;\n    public isRowHeaderActive = false;\n    public isRowDimensionHeaderActive = false;\n\n    public get lastRowDimensionsIndex() {\n        return this.grid.visibleRowDimensions.length - 1;\n    }\n\n    public get lastRowDimensionMRLRowIndex() {\n        return this.grid.verticalRowDimScrollContainers.first.igxGridForOf.length - 1;\n    }\n\n    public focusOutRowHeader() {\n        this.isRowHeaderActive = false;\n        this.isRowDimensionHeaderActive = false;\n    }\n\n    public override async handleNavigation(event: KeyboardEvent) {\n        if (this.isRowHeaderActive) {\n            const key = event.key.toLowerCase();\n            const ctrl = event.ctrlKey;\n            if (!HEADER_KEYS.has(key)) {\n                return;\n            }\n            event.preventDefault();\n\n            const newActiveNode: IActiveNode = {\n                row: this.activeNode.row,\n                column: this.activeNode.column,\n                level: null,\n                mchCache: null,\n                layout: this.activeNode.layout\n            }\n\n            if (event.altKey) {\n                this.handleAlt(key, event);\n                return;\n            }\n\n            let verticalContainer;\n            if (this.grid.hasHorizontalLayout) {\n                let newPosition = {\n                    row: this.activeNode.row,\n                    column: this.activeNode.column,\n                    layout: this.activeNode.layout\n                };\n                verticalContainer = this.grid.verticalRowDimScrollContainers.first;\n                if (key.includes('left')) {\n                    newPosition = await this.getNextHorizontalPosition(true, ctrl);\n                }\n                if (key.includes('right')) {\n                    newPosition = await this.getNextHorizontalPosition(false, ctrl);\n                }\n                if (key.includes('up') || key === 'home') {\n                    newPosition = await this.getNextVerticalPosition(true, ctrl || key === 'home', key === 'home');\n                }\n\n                if (key.includes('down') || key === 'end') {\n                    newPosition = await this.getNextVerticalPosition(false, ctrl || key === 'end', key === 'end');\n                }\n\n                newActiveNode.row = newPosition.row;\n                newActiveNode.column = newPosition.column;\n                newActiveNode.layout = newPosition.layout;\n            } else {\n                if ((key.includes('left') || key === 'home') && this.activeNode.column > 0) {\n                    newActiveNode.column = ctrl || key === 'home' ? 0 : this.activeNode.column - 1;\n                }\n                if ((key.includes('right') || key === 'end') && this.activeNode.column < this.lastRowDimensionsIndex) {\n                    newActiveNode.column = ctrl || key === 'end' ? this.lastRowDimensionsIndex : this.activeNode.column + 1;\n                }\n\n                verticalContainer = this.grid.verticalRowDimScrollContainers.toArray()[newActiveNode.column];\n                if (key.includes('up')) {\n                    if (ctrl) {\n                        newActiveNode.row = 0;\n                    } else if (this.activeNode.row > 0) {\n                        newActiveNode.row = this.activeNode.row - 1;\n                    } else {\n                        newActiveNode.row = -1;\n                        newActiveNode.column = newActiveNode.layout ? newActiveNode.layout.colStart - 1 : 0;\n                        newActiveNode.layout = null;\n                        this.isRowDimensionHeaderActive = true;\n                        this.isRowHeaderActive = false;\n                        this.grid.theadRow.nativeElement.focus();\n                    }\n                }\n\n                if (key.includes('down') && this.activeNode.row < this.findLastDataRowIndex()) {\n                    newActiveNode.row = ctrl ? verticalContainer.igxForOf.length - 1 : Math.min(this.activeNode.row + 1, verticalContainer.igxForOf.length - 1);\n                }\n\n                if (key.includes('left') || key.includes('right')) {\n                    const prevRIndex = this.activeNode.row;\n                    const prevScrContainer = this.grid.verticalRowDimScrollContainers.toArray()[this.activeNode.column];\n                    const src = prevScrContainer.getScrollForIndex(prevRIndex);\n                    newActiveNode.row = this.activeNode.mchCache && this.activeNode.mchCache.level === newActiveNode.column ?\n                        this.activeNode.mchCache.visibleIndex :\n                        verticalContainer.getIndexAtScroll(src);\n                    newActiveNode.mchCache = {\n                        visibleIndex: this.activeNode.row,\n                        level: this.activeNode.column\n                    };\n                }\n            }\n\n            this.setActiveNode(newActiveNode);\n            if (!this.grid.hasHorizontalLayout && verticalContainer.isIndexOutsideView(newActiveNode.row)) {\n                verticalContainer.scrollTo(newActiveNode.row);\n            }\n        } else {\n            super.handleNavigation(event);\n        }\n    }\n\n    public override handleAlt(key: string, event: KeyboardEvent): void {\n        event.preventDefault();\n\n        let rowData, dimIndex;\n        if (!this.grid.hasHorizontalLayout) {\n            dimIndex = this.activeNode.column;\n            const scrContainer = this.grid.verticalRowDimScrollContainers.toArray()[dimIndex];\n            rowData = scrContainer.igxGridForOf[this.activeNode.row];\n        } else {\n            const mrlRow = this.grid.rowDimensionMrlRowsCollection.find(mrl => mrl.rowIndex === this.activeNode.row);\n            rowData = mrlRow.rowGroup[this.activeNode.layout.rowStart - 1];\n            dimIndex = this.activeNode.layout.colStart - 1;\n        }\n        const dimension = this.grid.visibleRowDimensions[dimIndex];\n        const expansionRowKey = PivotUtil.getRecordKey(rowData, dimension);\n        const isExpanded = this.grid.expansionStates.get(expansionRowKey) ?? true;\n\n        let prevCellLayout;\n        if (this.grid.hasHorizontalLayout) {\n            const parentRow = this.grid.rowDimensionMrlRowsCollection.find(row => row.rowIndex === this.activeNode.row);\n            prevCellLayout = this.getNextVerticalColumnIndex(\n                parentRow,\n                Math.min(parentRow.rowGroup.length, this.activeNode.layout.rowStart),\n                this.activeNode.layout.colStart);\n        }\n\n        if (ROW_EXPAND_KEYS.has(key) && !isExpanded) {\n            this.grid.gridAPI.set_row_expansion_state(expansionRowKey, true, event)\n        } else if (ROW_COLLAPSE_KEYS.has(key) && isExpanded) {\n            this.grid.gridAPI.set_row_expansion_state(expansionRowKey, false, event)\n        }\n\n        if ((ROW_EXPAND_KEYS.has(key) && !isExpanded) || (ROW_COLLAPSE_KEYS.has(key) && isExpanded)) {\n            this.onRowToggle(!isExpanded, dimension, rowData, prevCellLayout);\n        }\n        this.updateActiveNodeLayout();\n        this.grid.notifyChanges();\n    }\n\n    public updateActiveNodeLayout() {\n        if (this.grid.hasHorizontalLayout) {\n            const mrlRow = this.grid.rowDimensionMrlRowsCollection.find(row => row.rowIndex === this.activeNode.row);\n            const activeCell = mrlRow.contentCells.toArray()[this.activeNode.column];\n            this.activeNode.layout = activeCell.layout;\n        }\n    }\n\n    /** Update active cell when toggling row expand when horizontal summaries have position set to top */\n    public onRowToggle(newExpandState: boolean, dimension: IPivotDimension, rowData: IPivotGridRecord, prevCellLayout: IMultiRowLayoutNode){\n        if (this.grid.hasHorizontalLayout &&\n            rowData.totalRecordDimensionName !== dimension.memberName &&\n            dimension.horizontalSummary && this.grid.pivotUI.horizontalSummariesPosition === PivotSummaryPosition.Top) {\n            const maxActiveRow = Math.min(this.lastRowDimensionMRLRowIndex, this.activeNode.row);\n            const parentRowUpdated = this.grid.rowDimensionMrlRowsCollection.find(row => row.rowIndex === maxActiveRow);\n            const maxRowEnd = parentRowUpdated.rowGroup.length + 1;\n            const nextRowStart = Math.max(1, this.activeNode.layout.rowStart + (!newExpandState ? -1 : 1));\n            const curValidRowStart = Math.min(parentRowUpdated.rowGroup.length, nextRowStart);\n            // Get current cell layout, because the actineNode the rowStart might be different, based on where we come from(might be smaller cell).\n\n            const curCellLayout = this.getNextVerticalColumnIndex(parentRowUpdated, curValidRowStart, this.activeNode.layout.colStart);\n            const nextBlock = (!newExpandState && prevCellLayout.rowStart === 1) || (newExpandState &&  prevCellLayout.rowEnd >= maxRowEnd);\n            this.activeNode.row += nextBlock ? (!newExpandState ? -1 : 1) : 0;\n            this.activeNode.column = curCellLayout.columnVisibleIndex;\n            this.activeNode.layout = curCellLayout;\n        }\n    }\n\n    public override async headerNavigation(event: KeyboardEvent) {\n        const key = event.key.toLowerCase();\n        const ctrl = event.ctrlKey;\n        if (!HEADER_KEYS.has(key)) {\n            return;\n        }\n\n        if (this.isRowDimensionHeaderActive) {\n            event.preventDefault();\n\n            const newActiveNode: IActiveNode = {\n                row: this.activeNode.row,\n                column: this.activeNode.column,\n                level: null,\n                mchCache: this.activeNode.mchCache,\n                layout: null\n            }\n\n            if (ctrl) {\n                const dimIndex = this.activeNode.column;\n                const dim = this.grid.visibleRowDimensions[dimIndex];\n                if (this.activeNode.row === -1) {\n                    if (key.includes('down') || key.includes('up')) {\n                        let newSortDirection = SortingDirection.None;\n                        if (key.includes('down')) {\n                            newSortDirection = (dim.sortDirection === SortingDirection.Desc) ? SortingDirection.None : SortingDirection.Desc;\n                        } else if (key.includes('up')) {\n                            newSortDirection = (dim.sortDirection === SortingDirection.Asc) ? SortingDirection.None : SortingDirection.Asc;\n                        }\n                        this.grid.sortDimension(dim, newSortDirection);\n                        return;\n                    }\n                }\n            }\n            if ((key.includes('left') || key === 'home') && this.activeNode.column > 0) {\n                newActiveNode.column = ctrl || key === 'home' ? 0 : this.activeNode.column - 1;\n            }\n            if ((key.includes('right') || key === 'end') && this.activeNode.column < this.lastRowDimensionsIndex) {\n                newActiveNode.column = ctrl || key === 'end' ? this.lastRowDimensionsIndex : this.activeNode.column + 1;\n            } else if (key.includes('right')) {\n                this.isRowDimensionHeaderActive = false;\n                newActiveNode.column = 0;\n                newActiveNode.level = this.activeNode.mchCache?.level || 0;\n                newActiveNode.mchCache = this.activeNode.mchCache || {\n                    level: 0,\n                    visibleIndex: 0\n                };\n            }\n\n            if (key.includes('down')) {\n                if (this.grid.hasHorizontalLayout) {\n                    this.activeNode.row = 0;\n                    this.activeNode.layout = {\n                        rowStart: 1,\n                        rowEnd: 2,\n                        colStart: newActiveNode.column + 1,\n                        colEnd: newActiveNode.column + 2,\n                        columnVisibleIndex: newActiveNode.column\n                    };\n\n                    const newPosition = await this.getNextVerticalPosition(true, ctrl || key === 'home', key === 'home');\n                    newActiveNode.row = 0;\n                    newActiveNode.column = newPosition.column;\n                    newActiveNode.layout = newPosition.layout;\n                } else {\n                    const verticalContainer = this.grid.verticalRowDimScrollContainers.toArray()[newActiveNode.column];\n                    newActiveNode.row = ctrl ? verticalContainer.igxForOf.length - 1 : 0;\n                }\n\n                this.isRowDimensionHeaderActive = false;\n                this.isRowHeaderActive = true;\n                this.grid.rowDimensionContainer.toArray()[this.grid.hasHorizontalLayout ? 0 : newActiveNode.column].nativeElement.focus();\n            }\n\n            this.setActiveNode(newActiveNode);\n        } else if (key.includes('left') && this.activeNode.column === 0 && this.grid.pivotUI.showRowHeaders) {\n            this.isRowDimensionHeaderActive = true;\n            const newActiveNode: IActiveNode = {\n                row: this.activeNode.row,\n                column: this.lastRowDimensionsIndex,\n                level: null,\n                mchCache: this.activeNode.mchCache,\n                layout: null\n            }\n\n            this.setActiveNode(newActiveNode);\n        } else {\n            super.headerNavigation(event);\n        }\n    }\n\n    public override focusTbody(event) {\n        if (!this.activeNode || this.activeNode.row === null || this.activeNode.row === undefined) {\n            this.activeNode = this.lastActiveNode;\n        } else {\n            super.focusTbody(event);\n        }\n    }\n\n    public async getNextVerticalPosition(previous, ctrl, homeEnd) {\n        const parentRow = this.grid.rowDimensionMrlRowsCollection.find(row => row.rowIndex === this.activeNode.row);\n        const maxRowEnd = parentRow.rowGroup.length + 1;\n        const curValidRowStart = Math.min(parentRow.rowGroup.length, this.activeNode.layout.rowStart);\n        // Get current cell layout, because the actineNode the rowStart might be different, based on where we come from(might be smaller cell).\n        const curCellLayout = this.getNextVerticalColumnIndex(parentRow, curValidRowStart, this.activeNode.layout.colStart);\n        const nextBlock = (previous && curCellLayout.rowStart === 1) || (!previous && curCellLayout.rowEnd === maxRowEnd);\n        if (nextBlock &&\n            ((previous && this.activeNode.row === 0) ||\n            (!previous && this.activeNode.row === this.lastRowDimensionMRLRowIndex))) {\n            if (previous && this.grid.pivotUI.showRowHeaders) {\n                this.isRowDimensionHeaderActive = true;\n                this.isRowHeaderActive = false;\n                this.grid.theadRow.nativeElement.focus();\n                return  { row: -1, column: this.activeNode.layout.colStart - 1, layout: this.activeNode.layout };\n            }\n            return { row: this.activeNode.row, column: this.activeNode.column, layout: this.activeNode.layout };\n        }\n\n        const nextMRLRowIndex = previous ?\n            (ctrl ? 0 : this.activeNode.row - 1) :\n            (ctrl ? this.lastRowDimensionMRLRowIndex : this.activeNode.row + 1) ;\n        let nextRow = nextBlock || ctrl ? this.grid.rowDimensionMrlRowsCollection.find(row => row.rowIndex === nextMRLRowIndex) : parentRow;\n        if (!nextRow) {\n            const nextDataViewIndex = previous ?\n                (ctrl ? 0 : parentRow.rowGroup[curCellLayout.rowStart - 1].dataIndex - 1) :\n                (ctrl ? this.grid.dataView.length - 1 : parentRow.rowGroup[curCellLayout.rowEnd - 2].dataIndex + 1);\n            await this.scrollToNextHorizontalDimRow(nextDataViewIndex);\n            nextRow = nextBlock || ctrl ? this.grid.rowDimensionMrlRowsCollection.find(row => row.rowIndex === nextMRLRowIndex) : parentRow;\n        }\n\n        const nextRowStart = nextBlock ?\n            (previous ? nextRow.rowGroup.length : 1) :\n            (previous ? curCellLayout.rowStart - 1 : curCellLayout.rowEnd);\n        const maxColEnd = Math.max(...nextRow.contentCells.map(cell => cell.layout.colEnd));\n        const nextColumnLayout = this.getNextVerticalColumnIndex(\n            nextRow,\n            ctrl ? (previous ? 1 : nextRow.rowGroup.length) : nextRowStart,\n            homeEnd ? (previous ? 1 : maxColEnd - 1) : this.activeNode.layout.colStart\n        );\n\n        const nextDataViewIndex = previous ?\n            nextRow.rowGroup[nextColumnLayout.rowStart - 1].dataIndex:\n            nextRow.rowGroup[nextColumnLayout.rowEnd - 2].dataIndex;\n        await this.scrollToNextHorizontalDimRow(nextDataViewIndex);\n\n        return {\n            row: nextBlock || ctrl ? nextMRLRowIndex : this.activeNode.row,\n            column: nextColumnLayout.columnVisibleIndex,\n            layout: {\n                rowStart: nextColumnLayout.rowStart,\n                rowEnd: nextColumnLayout.rowEnd,\n                colStart: homeEnd ? nextColumnLayout.colStart : this.activeNode.layout.colStart,\n                colEnd: nextColumnLayout.colEnd,\n                columnVisibleIndex: nextColumnLayout.columnVisibleIndex\n            } as IMultiRowLayoutNode\n        };\n    }\n\n    public async getNextHorizontalPosition(previous, ctrl) {\n        const parentRow = this.grid.rowDimensionMrlRowsCollection.find(row => row.rowIndex === this.activeNode.row);\n        const maxColEnd = Math.max(...parentRow.contentCells.map(cell => cell.layout.colEnd));\n        // Get current cell layout, because the actineNode the rowStart might be different, based on where we come from(might be smaller cell).\n        const curCellLayout = this.getNextVerticalColumnIndex(parentRow, this.activeNode.layout.rowStart, this.activeNode.layout.colStart);\n\n        if ((previous && curCellLayout.colStart === 1) || (!previous && curCellLayout.colEnd === maxColEnd)) {\n            return { row: this.activeNode.row, column: this.activeNode.column, layout: this.activeNode.layout };\n        }\n\n        const nextColStartNormal = curCellLayout.colStart + (previous ? -1 : curCellLayout.colEnd - curCellLayout.colStart);\n        const nextColumnLayout = this.getNextVerticalColumnIndex(\n            parentRow,\n            this.activeNode.layout.rowStart,\n            ctrl ? (previous ? 1 : maxColEnd - 1) : nextColStartNormal\n        );\n\n        const nextDataViewIndex = parentRow.rowGroup[nextColumnLayout.rowStart - 1].dataIndex\n        await this.scrollToNextHorizontalDimRow(nextDataViewIndex);\n\n        return {\n            row: this.activeNode.row,\n            column: nextColumnLayout.columnVisibleIndex,\n            layout: {\n                rowStart: this.activeNode.layout.rowStart,\n                rowEnd: nextColumnLayout.rowEnd,\n                colStart: nextColumnLayout.colStart,\n                colEnd: nextColumnLayout.colEnd,\n                columnVisibleIndex: nextColumnLayout.columnVisibleIndex\n            } as IMultiRowLayoutNode\n        };\n    }\n\n    private async scrollToNextHorizontalDimRow(nextDataViewIndex: number) {\n        const verticalContainer = this.grid.verticalScrollContainer;\n        if (verticalContainer.isIndexOutsideView(nextDataViewIndex)) {\n            verticalContainer.scrollTo(nextDataViewIndex);\n            await new Promise((resolve) => {\n                this.grid.gridScroll.pipe(take(1), timeout({ first: 10000 })).subscribe({\n                    next: (value) => resolve(value),\n                    error: (err) => resolve(err)\n                });\n            });\n        }\n    }\n\n\n    private getNextVerticalColumnIndex(nextRow: IgxPivotRowDimensionMrlRowComponent, newRowStart, newColStart) {\n        const nextCell = nextRow.contentCells.find(cell => {\n            return cell.layout.rowStart <= newRowStart && newRowStart < cell.layout.rowEnd &&\n                cell.layout.colStart <= newColStart && newColStart < cell.layout.colEnd;\n        });\n        return nextCell.layout;\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { first, takeUntil } from 'rxjs/operators';\nimport { DimensionValuesFilteringStrategy, PivotUtil } from 'igniteui-angular/grids/core';\nimport { IgxFilteringService } from 'igniteui-angular/grids/core';\nimport { ColumnType, FilteringExpressionsTree, FilteringLogic, IFilteringExpressionsTree, IFilteringOperation } from 'igniteui-angular/core';\n\n@Injectable()\nexport class IgxPivotFilteringService extends IgxFilteringService {\n    private filtersESFId;\n\n    public override clearFilter(field: string): void {\n        this.clear_filter(field);\n    }\n\n    public override clear_filter(fieldName: string) {\n        super.clear_filter(fieldName);\n        const grid = this.grid;\n        const allDimensions = grid.allDimensions;\n        const allDimensionsFlat = PivotUtil.flatten(allDimensions);\n        const dim = allDimensionsFlat.find(x => x.memberName === fieldName);\n        dim.filter = undefined;\n        grid.filteringPipeTrigger++;\n        if (allDimensions.indexOf(dim) !== -1) {\n            // update columns\n            (grid as any).setupColumns();\n        }\n    }\n    protected override filter_internal(fieldName: string, term, conditionOrExpressionsTree: IFilteringOperation | IFilteringExpressionsTree,\n        ignoreCase: boolean) {\n        super.filter_internal(fieldName, term, conditionOrExpressionsTree, ignoreCase);\n        const grid = this.grid;\n        const config = grid.pivotConfiguration;\n        const allDimensions = PivotUtil.flatten(config.rows.concat(config.columns).concat(config.filters).filter(x => x !== null && x !== undefined));\n        const enabledDimensions = allDimensions.filter(x => x && x.enabled);\n        const dim = enabledDimensions.find(x => x.memberName === fieldName || x.member === fieldName);\n        const filteringTree = dim.filter || new FilteringExpressionsTree(FilteringLogic.And);\n        const fieldFilterIndex = filteringTree.findIndex(fieldName);\n        if (fieldFilterIndex > -1) {\n            filteringTree.filteringOperands.splice(fieldFilterIndex, 1);\n        }\n\n        this.prepare_filtering_expression(filteringTree, fieldName, term, conditionOrExpressionsTree, ignoreCase, fieldFilterIndex);\n        dim.filter = filteringTree;\n        grid.filteringPipeTrigger++;\n        grid.filterStrategy = grid.filterStrategy ?? new DimensionValuesFilteringStrategy();\n        if (allDimensions.indexOf(dim) !== -1) {\n            // update columns\n            (grid as any).setupColumns();\n        }\n    }\n\n    public toggleFiltersESF(dropdown: any, element: HTMLElement, column: ColumnType, shouldReattach: boolean) {\n        const filterIcon = column.filteringExpressionsTree ? 'igx-excel-filter__icon--filtered' : 'igx-excel-filter__icon';\n        const filterIconTarget = element.querySelector(`.${filterIcon}`) as HTMLElement || element;\n\n        const { id, ref } = this.grid.createFilterESF(dropdown, column, {\n            ...this._filterMenuOverlaySettings,\n            ...{ target: filterIconTarget }\n        }, shouldReattach);\n\n        this.filtersESFId = id;\n\n        if (shouldReattach) {\n            this._overlayService.opening\n                .pipe(\n                    first(overlay => overlay.id === id),\n                    takeUntil(this.destroy$)\n                )\n                .subscribe(() => this.lastActiveNode = this.grid.navigation.activeNode);\n\n            this._overlayService.closed\n                .pipe(\n                    first(overlay => overlay.id === id),\n                    takeUntil(this.destroy$)\n                )\n                .subscribe(() => {\n                    this._overlayService.detach(id);\n                    ref?.destroy();\n                    this.grid.navigation.activeNode = this.lastActiveNode;\n                    this.grid.theadRow.nativeElement.focus();\n                });\n\n            this.grid.columnPinned.pipe(first()).subscribe(() => ref?.destroy());\n            this._overlayService.show(id);\n        }\n    }\n\n    public hideESF() {\n        this._overlayService.hide(this.filtersESFId);\n    }\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, HostListener, inject, Input, NgZone, ViewChild } from '@angular/core';\nimport { NgClass, NgStyle } from '@angular/common';\n\nimport {\n    IGX_GRID_BASE,\n    IgxColumnComponent,\n    IgxColumnMovingDragDirective,\n    IgxColumnMovingDropDirective,\n    IgxGridHeaderGroupComponent,\n    IgxHeaderGroupStylePipe,\n    IgxPivotColumnResizingService,\n    IgxPivotResizeHandleDirective,\n    IMultiRowLayoutNode,\n    IPivotDimension,\n    PivotGridType,\n    PivotRowHeaderGroupType\n} from 'igniteui-angular/grids/core';\nimport { IgxPivotRowDimensionHeaderComponent } from './pivot-row-dimension-header.component';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\n\n/**\n * @hidden\n */\n@Component({\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    selector: 'igx-pivot-row-dimension-header-group',\n    templateUrl: './pivot-row-dimension-header-group.component.html',\n    imports: [IgxIconComponent, IgxPivotRowDimensionHeaderComponent, NgClass, NgStyle, IgxColumnMovingDragDirective, IgxColumnMovingDropDirective, IgxPivotResizeHandleDirective, IgxHeaderGroupStylePipe]\n})\nexport class IgxPivotRowDimensionHeaderGroupComponent extends IgxGridHeaderGroupComponent implements PivotRowHeaderGroupType {\n    public override grid = inject<PivotGridType>(IGX_GRID_BASE);\n    public override colResizingService = inject(IgxPivotColumnResizingService);\n    protected zone = inject(NgZone);\n\n    /**\n     * @hidden\n     */\n    @HostBinding('style.user-select')\n    public userSelect = 'none';\n\n    /**\n     * @hidden\n     */\n    public get role(): string {\n        return 'rowheader';\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    @Input()\n    public rowIndex: number;\n\n    /**\n     * @hidden\n     * @internal\n     */\n    @Input()\n    public colIndex: number;\n\n\n    /**\n     * @hidden\n     * @internal\n     */\n    @Input()\n    public layout: IMultiRowLayoutNode;\n\n    /**\n    * @hidden\n    * @internal\n    */\n    @Input()\n    public parent: any;\n\n    @ViewChild(IgxPivotRowDimensionHeaderComponent)\n    public override header: IgxPivotRowDimensionHeaderComponent;\n\n    @HostBinding('attr.id')\n    public override get headerID() {\n        return `${this.grid.id}_-2_${this.rowIndex}_${this.visibleIndex}`;\n    }\n\n    @HostBinding('attr.title')\n    public override get title() {\n        return this.column.header;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    @HostListener('click', ['$event'])\n    public onClick(event: MouseEvent) {\n        if (this.grid.rowSelection === 'none') {\n            return;\n        }\n        event?.stopPropagation();\n        const key = this.parent.getRowDimensionKey(this.column as IgxColumnComponent);\n        if (this.grid.selectionService.isRowSelected(key)) {\n            this.grid.selectionService.deselectRow(key, event);\n        } else {\n            this.grid.selectionService.selectRowById(key, true, event);\n        }\n\n        this.zone.run(() => {});\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public get visibleIndex(): number {\n        if (this.grid.hasHorizontalLayout) {\n            return this.colIndex;\n        }\n\n        const field = this.column.field;\n        const rows = this.grid.rowDimensions;\n        const rootDimension = this.findRootDimension(field);\n        return rows.indexOf(rootDimension);\n    }\n\n    @HostBinding('class.igx-grid-th--active')\n    public override get active() {\n        const nav = this.grid.navigation;\n        const node = nav.activeNode;\n        return node && !this.column.columnGroup ?\n            nav.isRowHeaderActive &&\n            node.row === this.rowIndex &&\n            node.column === this.visibleIndex :\n            false;\n    }\n\n    protected override get activeNode() {\n        this.grid.navigation.isRowHeaderActive = true;\n        this.grid.navigation.isRowDimensionHeaderActive = false;\n        return {\n            row: this.rowIndex, column: this.visibleIndex, level: null,\n            mchCache: null,\n            layout: this.layout || null\n        };\n    }\n\n\n    protected getHeaderWidthFromDimension() {\n        if (this.grid.hasHorizontalLayout) {\n            return this.parent.width === -1 ? 'fit-content' : this.width;\n        }\n        return this.grid.rowDimensionWidth(this.parent.rootDimension);\n    }\n\n    private findRootDimension(field: string): IPivotDimension {\n        const rows = this.grid.rowDimensions;\n        let tempRow;\n        let result = null;\n        rows.forEach(row => {\n            tempRow = row;\n            do {\n                if (tempRow.memberName === field) {\n                    result = row;\n                }\n                tempRow = tempRow.childLevel;\n            } while (tempRow)\n        });\n        return result;\n    }\n\n\n    public override activate() {\n        this.grid.navigation.isRowHeader = true;\n        this.grid.navigation.setActiveNode(this.activeNode);\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override pointerdown(_event: PointerEvent): void {\n        this.activate();\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override onMouseDown(_event: MouseEvent): void {\n        this.activate();\n    }\n\n    public override get selectable(): boolean {\n        return false;\n    }\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    createComponent,\n    EnvironmentInjector,\n    HostBinding,\n    inject,\n    Injector,\n    Input,\n    OnChanges,\n    QueryList,\n    SimpleChanges,\n    TemplateRef,\n    ViewChild,\n    ViewChildren,\n    ViewContainerRef\n} from '@angular/core';\nimport { NgClass, NgStyle } from '@angular/common';\n\nimport {\n    IGX_GRID_BASE,\n    IgxColumnComponent,\n    IgxGridHeaderRowComponent,\n    IgxHeaderGroupStylePipe,\n    IMultiRowLayoutNode,\n    IPivotDimension,\n    IPivotDimensionData,\n    IPivotGridGroupRecord,\n    PivotGridType,\n    PivotUtil\n} from 'igniteui-angular/grids/core';\nimport { IgxPivotRowDimensionHeaderGroupComponent } from './pivot-row-dimension-header-group.component';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\n\n/**\n *\n * For all intents & purposes treat this component as what a <thead> usually is in the default <table> element.\n *\n * This container holds the pivot grid header elements and their behavior/interactions.\n *\n * @hidden @internal\n */\n@Component({\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    selector: 'igx-pivot-row-dimension-content',\n    templateUrl: './pivot-row-dimension-content.component.html',\n    imports: [IgxPivotRowDimensionHeaderGroupComponent, NgClass, NgStyle, IgxIconComponent, IgxHeaderGroupStylePipe]\n})\nexport class IgxPivotRowDimensionContentComponent extends IgxGridHeaderRowComponent implements OnChanges {\n    public override grid = inject<PivotGridType>(IGX_GRID_BASE);\n    protected injector = inject(Injector);\n    protected envInjector = inject(EnvironmentInjector);\n    protected viewRef = inject(ViewContainerRef);\n\n    @HostBinding('style.grid-row-start')\n    public get rowStart(): string {\n        return this.layout ? `${this.layout.rowStart}` : \"\";\n    }\n\n    @HostBinding('style.grid-row-end')\n    public get rowsEnd(): string {\n        return this.layout ? `${this.layout.rowEnd}` : \"\";\n    }\n\n    @HostBinding('style.grid-column-start')\n    public get colStart(): string {\n        return this.layout ? `${this.layout.colStart}` : \"\";\n    }\n\n    @HostBinding('style.grid-column-end')\n    public get colEnd(): string {\n        return this.layout ? `${this.layout.colEnd}` : \"\";\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    @Input()\n    public rowIndex: number;\n\n    /**\n     * @hidden\n     * @internal\n     */\n    @Input()\n    public colIndex: number;\n\n    @Input()\n    public layout: IMultiRowLayoutNode;\n\n    @Input()\n    public dimension: IPivotDimension;\n\n    @Input()\n    public rootDimension: IPivotDimension;\n\n    @Input()\n    public rowData: IPivotGridGroupRecord;\n\n    /**\n    * @hidden @internal\n    */\n    @ViewChild('headerTemplate', { read: TemplateRef, static: true })\n    public headerTemplate: TemplateRef<any>;\n\n    /**\n     * @hidden @internal\n     */\n    @ViewChild('headerDefaultTemplate', { read: TemplateRef, static: true })\n    public headerTemplateDefault: TemplateRef<any>;\n\n    @ViewChildren(IgxPivotRowDimensionHeaderGroupComponent)\n    public headerGroups: QueryList<IgxPivotRowDimensionHeaderGroupComponent>\n\n    /**\n     * @hidden @internal\n     */\n    public rowDimensionData: IPivotDimensionData;\n\n    public get rowDimensionColumn() {\n        return this.rowDimensionData?.column;\n    }\n\n    /**\n    * @hidden\n    * @internal\n    */\n    public ngOnChanges(changes: SimpleChanges) {\n        if (changes.rowData) {\n            // generate new rowDimension on row data change\n            this.rowDimensionData = null;\n            this.viewRef.clear();\n            this.extractFromDimensions();\n            this.viewRef.clear();\n        }\n        if (changes.width && this.rowDimensionData) {\n            const data = this.rowDimensionData;\n            data.column.width = this.grid.rowDimensionWidthToPixels(this.rootDimension) + 'px';\n        }\n    }\n\n    /**\n    * @hidden\n    * @internal\n    */\n    public toggleRowDimension(event) {\n        this.grid.toggleRow(this.getRowDimensionKey());\n        this.grid.navigation.onRowToggle(this.getExpandState(), this.dimension, this.rowData, this.layout);\n        event?.stopPropagation();\n    }\n\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public getRowDimensionKey() {\n        const dimData = this.rowDimensionData;\n        const key = PivotUtil.getRecordKey(this.rowData, dimData.dimension);\n        return key;\n    }\n\n    public getExpandState() {\n        return this.grid.gridAPI.get_row_expansion_state(this.getRowDimensionKey());\n    }\n\n    public getLevel() {\n        return this.grid.hasHorizontalLayout ? 0 : this.dimension.level;\n    }\n\n    protected extractFromDimensions() {\n        if (this.dimension && this.rowData) {\n            const col = this.extractFromDimension(this.dimension, this.rowData);\n            const prevDims = [];\n            this.rowDimensionData = {\n                column: col,\n                dimension: this.dimension,\n                prevDimensions: prevDims\n            };\n        }\n    }\n\n    protected extractFromDimension(dim: IPivotDimension, rowData: IPivotGridGroupRecord) {\n        const field = dim.memberName;\n        const header = rowData?.dimensionValues.get(field);\n        const col = this._createColComponent(field, header, dim);\n        return col;\n    }\n\n    protected _createColComponent(field: string, header: string, dim: IPivotDimension) {\n        const ref = createComponent(IgxColumnComponent, { environmentInjector: this.envInjector, elementInjector: this.injector});\n        ref.instance.field = field;\n        ref.instance.header = header;\n        ref.instance.width = this.grid.rowDimensionWidthToPixels(this.rootDimension) + 'px';\n        ref.instance.resizable = this.grid.rowDimensionResizing;\n        (ref as any).instance._vIndex = this.grid.columns.length + this.rowIndex + this.rowIndex * this.grid.pivotConfiguration.rows.length;\n\n\n        if (header && dim.childLevel && (!this.rowData.totalRecordDimensionName || this.rowData.totalRecordDimensionName !== dim.memberName)) {\n            ref.instance.headerTemplate = this.headerTemplate;\n        } else {\n            ref.instance.headerTemplate = this.headerTemplateDefault;\n        }\n        return ref.instance;\n    }\n}\n","<div class=\"igx-grid-thead__wrapper\" [style.width.px]=\"width\"\n    [class.igx-grid__tr--mrl]=\"hasMRL\">\n    <div class=\"igx-grid__tr igx-grid__tr-header-row\" role=\"row\" [style.width.px]=\"width\">\n            <igx-pivot-row-dimension-header-group [ngClass]=\"rowDimensionColumn.headerGroupClasses\"\n                [ngStyle]=\"rowDimensionColumn.headerGroupStyles | igxHeaderGroupStyle:rowDimensionColumn:grid.pipeTrigger\" [column]=\"rowDimensionColumn\"\n                [rowIndex]=\"rowIndex\"\n                [colIndex]=\"colIndex\"\n                [layout]=\"layout\"\n                [parent]='this'>\n            </igx-pivot-row-dimension-header-group>\n    </div>\n</div>\n\n<ng-template #headerTemplate let-column>\n    <div class='igx-grid__tr--header igx-grid__row-indentation--level-{{getLevel()}}'>\n        <igx-icon\n            family=\"default\"\n            [name]=\"getExpandState() ? 'tree_collapse' : 'tree_expand'\"\n            [attr.draggable]=\"false\"\n            (click)=\"toggleRowDimension($event)\"\n            >\n        </igx-icon>\n        {{column.header}}\n    </div>\n</ng-template>\n\n<ng-template #headerDefaultTemplate let-column>\n    <div class='igx-grid__tr--header igx-grid__row-indentation--level-{{getLevel()}}' style=\"--component-size: 3\">\n        <!--Using the igx-icon as a sizable spacer spacer here-->\n        <igx-icon style='flex-shrink: 0;' [attr.draggable]=\"false\"></igx-icon>\n        {{column.header}}\n    </div>\n</ng-template>\n","import { parseDate } from 'igniteui-angular/core';\nimport { GridColumnDataType } from 'igniteui-angular/core';\nimport { DefaultSortingStrategy, SortingDirection } from 'igniteui-angular/core';\nimport { IPivotGridRecord, PivotGridType, PivotUtil } from 'igniteui-angular/grids/core';\n\nexport class DefaultPivotGridRecordSortingStrategy extends DefaultSortingStrategy {\n    protected static override _instance: DefaultPivotGridRecordSortingStrategy = null;\n    public static override instance(): DefaultPivotGridRecordSortingStrategy {\n        return this._instance || (this._instance = new this());\n    }\n    public override sort(data: any[],\n        fieldName: string,\n        dir: SortingDirection,\n        ignoreCase: boolean,\n        valueResolver: (obj: any, key: string, isDate?: boolean) => any,\n        isDate?: boolean,\n        isTime?: boolean,\n        _grid?: PivotGridType) {\n        return super.sort(data, fieldName, dir, ignoreCase, this.getFieldValue, isDate, isTime);\n    }\n\n    protected getFieldValue(obj: IPivotGridRecord, key: string, _isDate = false, _isTime = false): any {\n        return obj.aggregationValues.get(key);\n    }\n}\n\n\nexport class DefaultPivotSortingStrategy extends DefaultSortingStrategy {\n    protected static override _instance: DefaultPivotSortingStrategy = null;\n    protected dimension;\n    public static override instance(): DefaultPivotSortingStrategy {\n        return this._instance || (this._instance = new this());\n    }\n    public override sort(data: any[],\n        fieldName: string,\n        dir: SortingDirection,\n        ignoreCase: boolean,\n        valueResolver: (obj: any, key: string, isDate?: boolean) => any,\n        isDate?: boolean,\n        isTime?: boolean,\n        grid?: PivotGridType) {\n        const key = fieldName;\n        const allDimensions = grid.allDimensions;\n        const enabledDimensions = allDimensions.filter(x => x && x.enabled);\n        this.dimension = PivotUtil.flatten(enabledDimensions).find(x => x.memberName === key);\n        return super.sort(data, key, dir, ignoreCase, this.getFieldValue, isDate, isTime);\n    }\n\n    protected getFieldValue(obj: any, key: string, _isDate = false, isTime = false): any {\n        let resolvedValue = PivotUtil.extractValueFromDimension(this.dimension, obj) || obj[0];\n        const formatAsDate = this.dimension.dataType === GridColumnDataType.Date || this.dimension.dataType === GridColumnDataType.DateTime;\n        if (formatAsDate) {\n            const date = parseDate(resolvedValue);\n            resolvedValue = isTime && date ?\n                new Date().setHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()) : date;\n\n        }\n        return resolvedValue;\n    }\n}\n","import { ISortingExpression, SortingDirection } from 'igniteui-angular/core';\nimport { IPivotDimension, PivotUtil } from 'igniteui-angular/grids/core';\nimport { DefaultPivotSortingStrategy } from './pivot-sort-strategy';\n\nexport class PivotSortUtil {\n    public static generateDimensionSortingExpressions(dimensions: IPivotDimension[]): ISortingExpression[] {\n        const expressions: ISortingExpression[] = [];\n        PivotUtil.flatten(dimensions).forEach(x => {\n            if (x.sortDirection) {\n                expressions.push({\n                    dir: x.sortDirection,\n                    fieldName: x.memberName,\n                    strategy: DefaultPivotSortingStrategy.instance()\n                });\n            } else {\n                expressions.push({\n                    dir: SortingDirection.None,\n                    fieldName: x.memberName,\n                    strategy: DefaultPivotSortingStrategy.instance()\n                });\n            }\n        });\n        return expressions;\n    }\n}\n","import { Directive, TemplateRef, inject } from '@angular/core';\nimport { IgxColumnTemplateContext, IgxPivotGridValueTemplateContext } from 'igniteui-angular/grids/core';\n/**\n * @hidden\n */\n@Directive({\n    selector: '[igxPivotValueChip]',\n    standalone: true\n})\nexport class IgxPivotValueChipTemplateDirective {\n    public template = inject<TemplateRef<IgxPivotGridValueTemplateContext>>(TemplateRef);\n\n    public static ngTemplateContextGuard(_directive: IgxPivotValueChipTemplateDirective,\n        context: unknown): context is IgxPivotGridValueTemplateContext {\n        return true;\n    }\n}\n\n/**\n * @hidden\n */\n@Directive({\n    selector: '[igxPivotRowDimensionHeader]',\n    standalone: true\n})\nexport class IgxPivotRowDimensionHeaderTemplateDirective {\n    public template = inject<TemplateRef<IgxColumnTemplateContext>>(TemplateRef);\n\n    public static ngTemplateContextGuard(_directive: IgxPivotRowDimensionHeaderTemplateDirective,\n        context: unknown): context is IgxColumnTemplateContext {\n        return true;\n    }\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport {\n    DEFAULT_PIVOT_KEYS,\n    DimensionValuesFilteringStrategy,\n    GridBaseAPIService,\n    GridType,\n    IGX_GRID_BASE,\n    IPivotConfiguration,\n    IPivotDimension,\n    IPivotGridColumn,\n    IPivotGridGroupRecord,\n    IPivotGridHorizontalGroup,\n    IPivotGridRecord,\n    IPivotKeys,\n    IPivotValue,\n    PivotColumnDimensionsStrategy,\n    PivotGridType,\n    PivotRowDimensionsStrategy,\n    PivotUtil\n} from 'igniteui-angular/grids/core';\nimport { cloneArray, columnFieldPath, DataUtil, FilteringExpressionsTree, FilterUtil, IDataCloneStrategy, IFilteringExpressionsTree, IFilteringStrategy, IGridSortingStrategy, ISortingExpression, resolveNestedPath } from 'igniteui-angular/core';\nimport { IgxGridBaseDirective } from 'igniteui-angular/grids/grid';\nimport { PivotSortUtil } from './pivot-sort-util';\nimport { DefaultPivotGridRecordSortingStrategy } from './pivot-sort-strategy';\n\n/**\n * @hidden\n */\n@Pipe({\n    name: 'pivotGridRow',\n    pure: true,\n    standalone: true\n})\nexport class IgxPivotRowPipe implements PipeTransform {\n    private grid = inject<PivotGridType>(IGX_GRID_BASE);\n\n\n    public transform(\n        collection: any,\n        config: IPivotConfiguration,\n        cloneStrategy: IDataCloneStrategy,\n        _: Map<any, boolean>,\n        _pipeTrigger?: number,\n        __?\n    ): IPivotGridRecord[] {\n        const pivotKeys = config.pivotKeys || DEFAULT_PIVOT_KEYS;\n        const enabledRows = config.rows?.filter(x => x.enabled) || [];\n        const enabledColumns = config.columns?.filter(x => x.enabled) || [];\n        const enabledValues = config.values?.filter(x => x.enabled) || [];\n        if (enabledRows.length === 0 && enabledColumns.length === 0 && enabledValues.length === 0) {\n            // nothing to group and aggregate by ...\n            return [];\n        }\n        const rowStrategy = config.rowStrategy || PivotRowDimensionsStrategy.instance();\n        const data = cloneArray(collection, true);\n        return rowStrategy.process(data, enabledRows, config.values, cloneStrategy, pivotKeys);\n    }\n}\n\n/**\n * @hidden\n * Transforms generic array data into IPivotGridRecord[]\n */\n@Pipe({\n    name: 'pivotGridAutoTransform',\n    pure: true,\n    standalone: true\n})\nexport class IgxPivotAutoTransform implements PipeTransform {\n    public transform(\n        collection: any[],\n        config: IPivotConfiguration,\n        _pipeTrigger?: number,\n        __?,\n    ): IPivotGridRecord[] {\n        let needsTransformation = false;\n        if (collection.length > 0) {\n            needsTransformation = !this.isPivotRecord(collection[0]);\n        }\n\n        if (!needsTransformation) return collection;\n\n        const res = this.processCollectionToPivotRecord(config, collection);\n        return res;\n    }\n\n    protected isPivotRecord(arg: IPivotGridRecord): arg is IPivotGridRecord {\n        return !!(arg as IPivotGridRecord).aggregationValues;\n    }\n\n    protected processCollectionToPivotRecord(config: IPivotConfiguration, collection: any[]): IPivotGridRecord[] {\n        const pivotKeys: IPivotKeys = config.pivotKeys || DEFAULT_PIVOT_KEYS;\n        const enabledRows = config.rows.filter(x => x.enabled);\n        const allFlat: IPivotDimension[] = PivotUtil.flatten(enabledRows);\n        const result: IPivotGridRecord[] = [];\n        for (const rec of collection) {\n            const pivotRec: IPivotGridRecord = {\n                dimensionValues: new Map<string, string>(),\n                aggregationValues: new Map<string, string>(),\n                children: new Map<string, IPivotGridRecord[]>(),\n                dimensions: []\n            };\n            const keys = Object.keys(rec)\n            for (const key of keys) {\n                const dim = allFlat.find(x => x.memberName === key);\n                if (dim) {\n                    //field has matching dimension\n                    pivotRec.dimensions.push(dim);\n                    pivotRec.dimensionValues.set(key, rec[key]);\n                } else if (key.indexOf(pivotKeys.rowDimensionSeparator + pivotKeys.records) !== -1) {\n                    // field that contains child collection\n                    const dimKey = key.slice(0, key.indexOf(pivotKeys.rowDimensionSeparator + pivotKeys.records));\n                    const childData = rec[key];\n                    const childPivotData = this.processCollectionToPivotRecord(config, childData);\n                    pivotRec.children.set(dimKey, childPivotData);\n                } else {\n                    // an aggregation\n                    pivotRec.aggregationValues.set(key, rec[key]);\n                }\n            }\n            const flattened = PivotUtil.flatten(config.rows);\n            pivotRec.dimensions.sort((x, y) => flattened.indexOf(x) - flattened.indexOf(y));\n            result.push(pivotRec);\n        }\n        return result;\n    }\n\n}\n\n/**\n * @hidden\n */\n@Pipe({\n    name: 'pivotGridRowExpansion',\n    pure: true,\n    standalone: true\n})\nexport class IgxPivotRowExpansionPipe implements PipeTransform {\n    private grid = inject<PivotGridType>(IGX_GRID_BASE);\n\n\n    public transform(\n        collection: IPivotGridRecord[],\n        config: IPivotConfiguration,\n        expansionStates: Map<any, boolean>,\n        defaultExpand: boolean,\n        _pipeTrigger?: number,\n        __?,\n    ): IPivotGridRecord[] {\n        const enabledRows = config.rows?.filter(x => x.enabled) || [];\n        const data = collection ? cloneArray(collection, true) : [];\n        const horizontalRowDimensions = [];\n        for (const row of enabledRows) {\n            if (this.grid?.hasHorizontalLayout) {\n                PivotUtil.flattenGroupsHorizontally(\n                    data,\n                    row,\n                    expansionStates,\n                    defaultExpand,\n                    horizontalRowDimensions,\n                    this.grid.pivotUI.horizontalSummariesPosition\n                );\n            } else {\n                PivotUtil.flattenGroups(data, row, expansionStates, defaultExpand);\n            }\n        }\n\n        let finalData = data;\n        if (this.grid?.hasHorizontalLayout) {\n            const allRowDims = PivotUtil.flatten(this.grid.rowDimensions);\n            this.grid.visibleRowDimensions = allRowDims.filter((rowDim) => horizontalRowDimensions.some(targetDim => targetDim.memberName === rowDim.memberName));\n        } else {\n            if (this.grid) {\n                this.grid.visibleRowDimensions = enabledRows;\n            }\n            finalData = enabledRows.length > 0 ?\n                finalData.filter(x => x.dimensions.length === enabledRows.length) : finalData;\n        }\n\n        if (this.grid) {\n            this.grid.setFilteredSortedData(finalData, false);\n        }\n        return finalData;\n    }\n}\n\n/**\n * @hidden\n */\n@Pipe({\n    name: 'pivotGridCellMerging',\n    pure: true,\n    standalone: true\n})\nexport class IgxPivotCellMergingPipe implements PipeTransform {\n    private grid = inject<PivotGridType>(IGX_GRID_BASE);\n\n    public transform(\n        collection: IPivotGridRecord[],\n        config: IPivotConfiguration,\n        dim: IPivotDimension,\n        _pipeTrigger?: number\n    ): IPivotGridGroupRecord[] {\n        if (collection.length === 0 || config.rows.length === 0) return collection;\n        const data: IPivotGridGroupRecord[] = collection ? cloneArray(collection, true) : [];\n        const res: IPivotGridGroupRecord[] = [];\n\n        let groupData: IPivotGridGroupRecord[] = [];\n        let prevId;\n        const enabledRows = this.grid.hasHorizontalLayout ? (this.grid as any).visibleRowDimensions : config.rows?.filter(x => x.enabled);\n        const dimIndex = enabledRows.indexOf(dim);\n        for (const rec of data) {\n            let currentDim;\n            if (this.grid.hasHorizontalLayout) {\n                currentDim = dim;\n                rec.dimensions = enabledRows;\n            } else {\n                currentDim = rec.dimensions[dimIndex];\n            }\n\n            const id = PivotUtil.getRecordKey(rec, currentDim);\n            if (groupData.length > 0 && prevId !== id) {\n                const h = groupData.length > 1 ? groupData.length * this.grid.renderedRowHeight : undefined;\n                groupData[0].height = h;\n                groupData[0].rowSpan = groupData.length;\n                res.push(groupData[0]);\n                groupData = [];\n            }\n            groupData.push(rec);\n            prevId = id;\n        }\n        if (groupData.length > 0) {\n            const h = groupData.length > 1 ? groupData.length * this.grid.rowHeight + (groupData.length - 1) + 1 : undefined;\n            groupData[0].height = h;\n            groupData[0].rowSpan = groupData.length;\n            res.push(groupData[0]);\n        }\n        return res;\n    }\n}\n\n/**\n * @hidden\n */\n@Pipe({\n    name: \"pivotGridHorizontalRowGrouping\",\n    standalone: true\n})\nexport class IgxPivotGridHorizontalRowGrouping implements PipeTransform {\n    private grid = inject<GridType>(IGX_GRID_BASE);\n\n    public transform(\n        collection: IPivotGridRecord[],\n        config: IPivotConfiguration,\n        _pipeTrigger?: number,\n        _regroupTrigger?: number\n    ): IPivotGridRecord[][] {\n        if (collection.length === 0 || config.rows.length === 0) return null;\n        const data: IPivotGridRecord[] = collection ? cloneArray(collection, true) : [];\n        const res: IPivotGridRecord[][] = [];\n\n        const groupDim = config.rows.filter(dim => dim.enabled)[0];\n        let curGroup = [];\n        let curGroupValue = data[0].dimensionValues.get(groupDim.memberName);\n        for (const [index, curRec] of data.entries()) {\n            curRec.dataIndex = index;\n            const curRecValue = curRec.dimensionValues.get(groupDim.memberName);\n            if (curGroup.length === 0 || curRecValue === curGroupValue) {\n                curGroup.push(curRec);\n            } else {\n                curGroup[\"height\"] = this.grid.renderedRowHeight * curGroup.length;\n                res.push(curGroup);\n                curGroup = [curRec];\n                curGroupValue = curRecValue;\n            }\n        }\n        res.push(curGroup);\n\n        return res;\n    }\n}\n\n/**\n * @hidden\n */\n@Pipe({\n    name: \"pivotGridHorizontalRowCellMerging\",\n    standalone: true\n})\nexport class IgxPivotGridHorizontalRowCellMerging implements PipeTransform {\n    private grid = inject<PivotGridType>(IGX_GRID_BASE);\n\n    public transform(\n        collection: IPivotGridRecord[],\n        config: IPivotConfiguration,\n        _pipeTrigger?: number\n    ): IPivotGridHorizontalGroup[] {\n        if (collection.length === 0 || config.rows.length === 0) return [{\n            colStart: 1,\n            colSpan: 1,\n            rowStart: 1,\n            rowSpan: 1,\n            records: collection\n        }];\n        const data: IPivotGridRecord[] = collection ? cloneArray(collection, true) : [];\n        const res: IPivotGridHorizontalGroup[] = [];\n\n        // Merge vertically for each row dimension.\n        const verticalMergeGroups: IPivotGridHorizontalGroup[][] = [...data.map(_ => [])];\n        for (let dimIndex = 0; dimIndex < this.grid.visibleRowDimensions.length; dimIndex++) {\n            const curDim = this.grid.visibleRowDimensions[dimIndex];\n            let curGroup: IPivotGridHorizontalGroup = {\n                colStart: dimIndex + 1,\n                colSpan: 1,\n                rowStart: 1,\n                rowSpan: 1,\n                value: data[0].dimensionValues.get(curDim.memberName),\n                rootDimension: curDim,\n                dimensions: [curDim],\n                records: [data[0]]\n            };\n            for (let i = 1; i < data.length; i++) {\n                const curRec = data[i];\n                const curRecValue = curRec.dimensionValues.get(curDim.memberName);\n                const previousRowCell = verticalMergeGroups[i][verticalMergeGroups[i].length - 1];\n                if (curRecValue === curGroup.value && !previousRowCell) {\n                    // If previousRowCell is non existing, its merged so we can push in this vertigal group as well.\n                    curGroup.rowSpan++;\n                    curGroup.records.push(curRec);\n                } else {\n                    verticalMergeGroups[curGroup.rowStart - 1].push(curGroup);\n                    curGroup = {\n                        colStart: dimIndex + 1,\n                        colSpan: 1,\n                        rowStart: curGroup.rowStart + curGroup.rowSpan,\n                        rowSpan: 1,\n                        value: curRec.dimensionValues.get(curDim.memberName),\n                        rootDimension: curDim,\n                        dimensions: [curDim],\n                        records: [curRec]\n                    };\n                }\n            }\n\n            verticalMergeGroups[curGroup.rowStart - 1].push(curGroup);\n        }\n\n        // Merge rows in a single array\n        const sortedGroups = verticalMergeGroups.reduce((prev, cur) => prev.concat(...cur), []);\n\n        // Horizontally merge any groups that can be merged or have been\n        res.push(sortedGroups[0]);\n        let prevGroup = sortedGroups[0];\n        for (let i = 1; i < sortedGroups.length; i++) {\n            const curGroup = sortedGroups[i];\n            if (curGroup.value && prevGroup.value !== curGroup.value) {\n                prevGroup = curGroup;\n                res.push(curGroup);\n            } else {\n                prevGroup.dimensions.push(curGroup.rootDimension);\n                prevGroup.colSpan++;\n            }\n        }\n\n        return res;\n    }\n}\n\n/**\n * @hidden\n */\n@Pipe({\n    name: 'pivotGridColumn',\n    pure: true,\n    standalone: true\n})\nexport class IgxPivotColumnPipe implements PipeTransform {\n\n    public transform(\n        collection: IPivotGridRecord[],\n        config: IPivotConfiguration,\n        cloneStrategy: IDataCloneStrategy,\n        _: Map<any, boolean>,\n        _pipeTrigger?: number,\n        __?\n    ): IPivotGridRecord[] {\n        const pivotKeys = config.pivotKeys || DEFAULT_PIVOT_KEYS;\n        const enabledColumns = config.columns?.filter(x => x.enabled) || [];\n        const enabledValues = config.values?.filter(x => x.enabled) || [];\n\n        const colStrategy = config.columnStrategy || PivotColumnDimensionsStrategy.instance();\n        const data = cloneArray(collection, true);\n        return colStrategy.process(data, enabledColumns, enabledValues, cloneStrategy, pivotKeys);\n    }\n}\n\n/**\n * @hidden\n */\n@Pipe({\n    name: 'pivotGridFilter',\n    pure: true,\n    standalone: true\n})\nexport class IgxPivotGridFilterPipe implements PipeTransform {\n    private gridAPI = inject<GridBaseAPIService<IgxGridBaseDirective & GridType>>(GridBaseAPIService);\n\n    public transform(collection: any[],\n        config: IPivotConfiguration,\n        filterStrategy: IFilteringStrategy,\n        advancedExpressionsTree: IFilteringExpressionsTree,\n        _filterPipeTrigger: number,\n        _pipeTrigger: number): any[] {\n        const expressionsTree = PivotUtil.buildExpressionTree(config);\n\n        const state = {\n            expressionsTree,\n            strategy: filterStrategy || new DimensionValuesFilteringStrategy(),\n            advancedExpressionsTree\n        };\n\n        if (FilteringExpressionsTree.empty(state.expressionsTree) && FilteringExpressionsTree.empty(state.advancedExpressionsTree)) {\n            return collection;\n        }\n\n        const result = FilterUtil.filter(cloneArray(collection, true), state, this.gridAPI.grid);\n\n        return result;\n    }\n}\n\n\n/**\n * @hidden\n */\n@Pipe({\n    name: 'pivotGridColumnSort',\n    pure: true,\n    standalone: true\n})\nexport class IgxPivotGridColumnSortingPipe implements PipeTransform {\n    public transform(\n        collection: IPivotGridRecord[],\n        expressions: ISortingExpression[],\n        sorting: IGridSortingStrategy,\n        _pipeTrigger: number\n    ): IPivotGridRecord[] {\n        let result: IPivotGridRecord[];\n\n        if (!expressions.length) {\n            result = collection;\n        } else {\n            for (const expr of expressions) {\n                expr.strategy = DefaultPivotGridRecordSortingStrategy.instance();\n            }\n            result = PivotUtil.sort(cloneArray(collection), expressions, sorting);\n        }\n        return result;\n    }\n}\n\n/**\n * @hidden\n */\n@Pipe({\n    name: 'pivotGridSort',\n    pure: true,\n    standalone: true\n})\nexport class IgxPivotGridSortingPipe implements PipeTransform {\n    private gridAPI = inject<GridBaseAPIService<IgxGridBaseDirective & GridType>>(GridBaseAPIService);\n\n    public transform(collection: any[], config: IPivotConfiguration, sorting: IGridSortingStrategy, _pipeTrigger: number): any[] {\n        let result: any[];\n        const allDimensions = config.rows || [];\n        const enabledDimensions = allDimensions.filter(x => x && x.enabled);\n        const expressions = PivotSortUtil.generateDimensionSortingExpressions(enabledDimensions);\n        if (!expressions.length) {\n            result = collection;\n        } else {\n            result = DataUtil.sort(cloneArray(collection), expressions, sorting, this.gridAPI.grid);\n        }\n\n        return result;\n    }\n}\n\n/**\n * @hidden\n */\n@Pipe({\n    name: \"filterPivotItems\",\n    standalone: true\n})\nexport class IgxFilterPivotItemsPipe implements PipeTransform {\n    public transform(\n        collection: (IPivotDimension | IPivotValue)[],\n        filterCriteria: string,\n        _pipeTrigger: number\n    ): any[] {\n        if (!collection) {\n            return collection;\n        }\n        let copy = collection.slice(0);\n        if (filterCriteria && filterCriteria.length > 0) {\n            const filterFunc = (c) => {\n                const filterText = c.member || c.memberName;\n                if (!filterText) {\n                    return false;\n                }\n                return (\n                    filterText\n                        .toLocaleLowerCase()\n                        .indexOf(filterCriteria.toLocaleLowerCase()) >= 0 ||\n                    (c.children?.some(filterFunc) ?? false)\n                );\n            };\n            copy = collection.filter(filterFunc);\n        }\n        return copy;\n    }\n}\n\nexport interface GridStyleCSSProperty {\n    [prop: string]: any;\n}\n\n@Pipe({\n    name: 'igxPivotCellStyleClasses',\n    standalone: true\n})\nexport class IgxPivotGridCellStyleClassesPipe implements PipeTransform {\n\n    public transform(cssClasses: GridStyleCSSProperty, _: any, rowData: IPivotGridRecord, columnData: IPivotGridColumn, index: number, __: number): string {\n        if (!cssClasses) {\n            return '';\n        }\n\n        const result = [];\n        const pathParts = columnFieldPath(columnData.field);\n\n        for (const cssClass of Object.keys(cssClasses)) {\n            const callbackOrValue = cssClasses[cssClass];\n            const apply = typeof callbackOrValue === 'function' ?\n                callbackOrValue(rowData, columnData, resolveNestedPath(rowData, pathParts), index) : callbackOrValue;\n            if (apply) {\n                result.push(cssClass);\n            }\n        }\n\n        return result.join(' ');\n    }\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    forwardRef,\n    HostBinding, inject, Input, ViewContainerRef\n} from '@angular/core';\nimport { NgClass, NgStyle } from '@angular/common';\nimport {\n    IGX_GRID_BASE,\n    IgxColumnComponent,\n    IgxGridCellComponent,\n    IgxGridCellStylesPipe,\n    IgxGridNotGroupedPipe,\n    IgxGridTransactionStatePipe,\n    IgxRowDirective,\n    IPivotGridColumn,\n    IPivotGridRecord,\n    PivotGridType,\n    PivotUtil\n} from 'igniteui-angular/grids/core';\nimport { IgxPivotGridCellStyleClassesPipe } from './pivot-grid.pipes';\nimport { IgxGridForOfDirective } from 'igniteui-angular/directives';\nimport { IgxCheckboxComponent } from 'igniteui-angular/checkbox';\n\n@Component({\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    selector: 'igx-pivot-row',\n    templateUrl: './pivot-row.component.html',\n    providers: [{ provide: IgxRowDirective, useExisting: forwardRef(() => IgxPivotRowComponent) }],\n    imports: [IgxGridForOfDirective, IgxGridCellComponent, NgClass, NgStyle, IgxCheckboxComponent, IgxGridNotGroupedPipe, IgxGridCellStylesPipe, IgxGridTransactionStatePipe, IgxPivotGridCellStyleClassesPipe]\n})\nexport class IgxPivotRowComponent extends IgxRowDirective {\n    /* blazorSuppress */\n    public override grid = inject<PivotGridType>(IGX_GRID_BASE);\n    protected viewRef = inject(ViewContainerRef);\n\n    /**\n     * @hidden\n     */\n    @Input()\n    @HostBinding('attr.aria-selected')\n    public override get selected(): boolean {\n        let isSelected = false;\n        for (const rowDim of this.data.dimensions) {\n            const key = PivotUtil.getRecordKey(this.data, rowDim);\n            if (this.selectionService.isPivotRowSelected(key)) {\n                isSelected = true;\n            }\n        }\n        return isSelected;\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public override get viewIndex(): number {\n        return this.index;\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public override disabled = false;\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public override get addRowUI(): any {\n        return false;\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public override get inEditMode(): boolean {\n        return false;\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public override set pinned(_value: boolean) {\n    }\n\n    public override get pinned(): boolean {\n        return false;\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public override delete() {\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public override beginAddRow() {\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public override update(_value: any) {\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public override pin() {\n        return false;\n    }\n\n    /**\n    * @hidden\n    * @internal\n    */\n    public override unpin() {\n        return false;\n    }\n\n    /**\n    *  The pivot record data passed to the row component.\n    *\n    * ```typescript\n    * // get the pivot row data for the first selected row\n    * let selectedRowData = this.grid.selectedRows[0].data;\n    * ```\n    */\n    @Input()\n    public override get data(): IPivotGridRecord {\n        return this._data;\n    }\n\n    public override set data(v: IPivotGridRecord) {\n        this._data = v;\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public get pivotAggregationData() {\n        const aggregations = this.data.aggregationValues;\n        const obj = {};\n        aggregations.forEach((value, key) => {\n            obj[key] = value;\n        });\n        return obj;\n    }\n\n    public getCellClass(col: IgxColumnComponent) {\n        const values = this.grid.values;\n        if (values.length === 1) {\n            return values[0].styles;\n        }\n        const colName = col.field.split(this.grid.pivotKeys.columnDimensionSeparator);\n        const measureName = colName[colName.length - 1];\n        return values.find(v => v.member === measureName)?.styles;\n    }\n\n    public override isCellActive(visibleColumnIndex) {\n        const nav = this.grid.navigation\n        const node = nav.activeNode;\n        return node && Object.keys(node).length !== 0 ?\n            !nav.isRowHeaderActive &&\n            !nav.isRowDimensionHeaderActive &&\n            super.isCellActive(visibleColumnIndex) :\n            false;\n    }\n\n    public getColumnData(col: IgxColumnComponent) : IPivotGridColumn {\n        const path = col.field.split(this.grid.pivotKeys.columnDimensionSeparator);\n        const keyValueMap = new Map<string, string>();\n        const colDimensions = PivotUtil.flatten(this.grid.columnDimensions);\n        for (const dim of colDimensions) {\n            keyValueMap.set(dim.memberName, path.shift());\n        }\n        let pivotValue;\n        if (this.grid.hasMultipleValues && path.length) {\n            pivotValue = this.grid.values.find(x => x.member === path[0]);\n        } else {\n            pivotValue = this.grid.values ? this.grid.values[0] : undefined;\n        }\n        return {\n            field: col.field,\n            dimensions: this.grid.columnDimensions,\n            dimensionValues: keyValueMap,\n            value: pivotValue\n        };\n    }\n}\n","<ng-template igxGridFor let-col [igxGridForOf]=\"unpinnedColumns | igxNotGrouped\"\n    [igxForScrollContainer]=\"grid.parentVirtDir\" let-colIndex=\"index\" [igxForSizePropName]='\"calcPixelWidth\"'\n    [igxForScrollOrientation]=\"'horizontal'\" [igxForContainerSize]='grid.unpinnedWidth'\n    [igxForTrackBy]='grid.trackColumnChanges' #igxDirRef>\n    <igx-grid-cell #cell class=\"igx-grid__td igx-grid__td--fw\"\n        [class.igx-grid__td--edited]=\"key | transactionState:col.field:grid.rowEditable:grid.transactions:grid.pipeTrigger:grid.gridAPI.crudService.cell:grid.gridAPI.crudService.row\"\n\n        [class.igx-grid__td--number]=\"col.dataType === 'number' || col.dataType === 'percent' || col.dataType === 'currency'\"\n        [class.igx-grid__td--bool]=\"col.dataType === 'boolean'\"\n        [ngClass]=\"this.getCellClass(col) | igxPivotCellStyleClasses:data[col.field]:data:getColumnData(col):viewIndex:grid.pipeTrigger\"\n        [ngStyle]=\"col.cellStyles | igxCellStyles:pivotAggregationData[col.field]:pivotAggregationData:col.field:viewIndex:grid.pipeTrigger\"\n        [editMode]=\"col.editable && this.grid.crudService.targetInEdit(index, col.index)\" [column]=\"col\"\n        [formatter]=\"col.formatter\" [intRow]=\"this\" [active]=\"isCellActive(col.visibleIndex)\"\n        [rowData]=\"data\" [columnData]='getColumnData(col)'\n        [style.min-width]=\"col.resolvedWidth\" [style.max-width]=\"col.resolvedWidth\"\n        [style.flex-basis]=\"col.resolvedWidth\" [width]=\"col.getCellWidth()\" [visibleColumnIndex]=\"col.visibleIndex\"\n        [value]=\"pivotAggregationData[col.field]\"\n        [cellTemplate]=\"col.bodyTemplate\" [lastSearchInfo]=\"grid.lastSearchInfo\"\n        [cellSelectionMode]=\"grid.cellSelection\" [displayPinnedChip]=\"shouldDisplayPinnedChip(col)\"\n        (pointerdown)=\"grid.navigation.focusOutRowHeader($event)\">\n    </igx-grid-cell>\n</ng-template>\n\n<ng-template #rowSelectorBaseTemplate>\n    <div class=\"igx-grid__cbx-padding\">\n        <igx-checkbox [tabindex]=\"-1\" [readonly]=\"true\" [checked]=\"selected\" [disableRipple]=\"true\" [disabled]=\"deleted\"\n            [disableTransitions]=\"grid.disableTransitions\" [aria-label]=\"rowCheckboxAriaLabel\">\n        </igx-checkbox>\n    </div>\n</ng-template>\n\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    EnvironmentInjector,\n    HostBinding,\n    inject,\n    Injector,\n    Input,\n    QueryList,\n    ViewChildren,\n    ViewContainerRef\n} from '@angular/core';\nimport { IGX_GRID_BASE, IPivotDimension, IPivotDimensionData, IPivotGridHorizontalGroup, IPivotGridRecord, PivotGridType, PivotUtil } from 'igniteui-angular/grids/core';\nimport { IgxGridHeaderRowComponent } from 'igniteui-angular/grids/core';\nimport { IgxPivotRowDimensionContentComponent } from './pivot-row-dimension-content.component';\nimport { IgxPivotGridHorizontalRowCellMerging } from './pivot-grid.pipes';\n\n/**\n *\n * For all intents & purposes treat this component as what a <thead> usually is in the default <table> element.\n *\n * This container holds the pivot grid header elements and their behavior/interactions.\n *\n * @hidden @internal\n */\n@Component({\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    selector: 'igx-pivot-row-dimension-mrl-row',\n    templateUrl: './pivot-row-dimension-mrl-row.component.html',\n    imports: [IgxPivotRowDimensionContentComponent, IgxPivotGridHorizontalRowCellMerging]\n})\nexport class IgxPivotRowDimensionMrlRowComponent extends IgxGridHeaderRowComponent {\n    public override grid = inject<PivotGridType>(IGX_GRID_BASE);\n    protected injector = inject(Injector);\n    protected envInjector = inject(EnvironmentInjector);\n    protected viewRef = inject(ViewContainerRef);\n\n    @ViewChildren(IgxPivotRowDimensionContentComponent)\n    public rowDimensionContentCollection: QueryList<IgxPivotRowDimensionContentComponent>;\n\n    @HostBinding('class.igx-grid__tbody-pivot-dimension')\n    public pivotDim = true;\n\n    @HostBinding('class.igx-grid__mrl-block')\n    public mrlBlock =  true;\n\n    @HostBinding('style.grid-template-rows')\n    public get rowsTemplate(): string {\n        return this.getRowMRLTemplate(true, this.rowGroup);\n    }\n\n    @HostBinding('style.grid-template-columns')\n    public get colsTemplate(): string {\n        return this.getRowMRLTemplate(false, this.rowGroup);\n    }\n\n    /**\n     * @hidden @internal\n     */\n    @Input()\n    public rowIndex: number;\n\n    /**\n     * @hidden @internal\n     */\n    @Input()\n    public rowGroup: IPivotGridRecord[];\n\n    /**\n     * @hidden @internal\n     */\n    @Input()\n    public groupedData: IPivotGridRecord[][];\n\n    /**\n     * @hidden @internal\n     */\n    @ViewChildren(IgxPivotRowDimensionContentComponent)\n    public contentCells: QueryList<IgxPivotRowDimensionContentComponent>\n\n    /**\n     * @hidden @internal\n     */\n    public rowDimensionData: IPivotDimensionData;\n\n    protected getRowMRLTemplate(forRows: boolean, rows: IPivotGridRecord[]) {\n        if (forRows) {\n            return `repeat(${rows.length},1fr)`;\n        } else if (this.grid.visibleRowDimensions && this.grid.dimensionDataColumns) {\n            const res = [];\n            this.grid.visibleRowDimensions.forEach(dim => {\n                res.push(this.grid.rowDimensionWidth(dim));\n            });\n            return  res.join(' ');\n        }\n    }\n\n    public rowDimensionWidthCombined(dims: IPivotDimension[]) {\n        let resWidth = 0;\n        for (const dim of (dims || [])) {\n            const rowDimWidth = this.grid.rowDimensionWidth(dim);\n            if (rowDimWidth === 'fit-content') {\n                return -1;\n            } else {\n                resWidth += parseFloat(rowDimWidth);\n            }\n        }\n        return resWidth;\n    }\n\n    protected getGroupKey(group: IPivotGridHorizontalGroup) {\n        const rec = group.records[0];\n        const key = PivotUtil.getRecordKey(rec, group.rootDimension);\n        return key;\n    }\n}\n","@for (\n    cell of rowGroup | pivotGridHorizontalRowCellMerging:grid.pivotConfiguration:grid.pipeTrigger;\n    track getGroupKey(cell); let cellIndex = $index\n) {\n    <igx-pivot-row-dimension-content class=\"igx-grid-thead\"\n        [grid]=\"grid\"\n        [dimension]=\"cell.rootDimension\"\n        [rootDimension]=\"cell.rootDimension\"\n        [rowIndex]=\"rowIndex\"\n        [colIndex]=\"cellIndex\"\n        [rowData]=\"cell.records[0]\"\n        [width]=\"rowDimensionWidthCombined(cell.dimensions)\"\n        [layout]=\"{\n            rowStart: cell.rowStart,\n            rowEnd: cell.rowStart + cell.rowSpan,\n            colStart: cell.colStart,\n            colEnd: cell.colStart + cell.colSpan,\n            columnVisibleIndex: cellIndex\n        }\">\n    </igx-pivot-row-dimension-content>\n}\n","import { PivotUtil, RowType } from 'igniteui-angular/grids/core';\nimport { IgxPivotGridComponent } from './pivot-grid.component';\n\n\nexport class IgxPivotGridRow implements RowType {\n\n    /** The index of the row within the grid */\n    public index: number;\n\n    /**\n     * The grid that contains the row.\n     */\n    public grid: IgxPivotGridComponent;\n    private _data?: any;\n\n    constructor(grid: IgxPivotGridComponent, index: number, data?: any) {\n        this.grid = grid;\n        this.index = index;\n        this._data = data && data.addRow && data.recordRef ? data.recordRef : data;\n    }\n\n    /**\n     *  The data passed to the row component.\n     */\n    public get data(): any {\n        return this._data ?? this.grid.dataView[this.index];\n    }\n\n    /**\n     * Returns the view index calculated per the grid page.\n     */\n    public get viewIndex(): number {\n        return this.index + this.grid.page * this.grid.perPage;\n    }\n\n    /**\n     * Gets the row key.\n     * A row in the grid is identified either by:\n     * - primaryKey data value,\n     * - the whole rowData, if the primaryKey is omitted.\n     *\n     * ```typescript\n     * let rowKey = row.key;\n     * ```\n     */\n    public get key(): any {\n        const dimension = this.grid.visibleRowDimensions[this.grid.visibleRowDimensions.length - 1];\n        const recordKey =  PivotUtil.getRecordKey(this.data, dimension);\n        return recordKey ? recordKey : null;\n    }\n\n    /**\n     * Gets whether the row is selected.\n     * Default value is `false`.\n     * ```typescript\n     * row.selected = true;\n     * ```\n     */\n    public get selected(): boolean {\n        return this.grid.selectionService.isRowSelected(this.key);\n    }\n\n    public set selected(val: boolean) {\n        if (val) {\n            this.grid.selectionService.selectRowsWithNoEvent([this.key]);\n        } else {\n            this.grid.selectionService.deselectRowsWithNoEvent([this.key]);\n        }\n        this.grid.cdr.markForCheck();\n    }\n}\n","import { AfterContentInit, AfterViewInit, ChangeDetectionStrategy, Component, EventEmitter, ElementRef, HostBinding, Input, OnInit, Output, QueryList, TemplateRef, ViewChild, ViewChildren, ContentChild, createComponent, CUSTOM_ELEMENTS_SCHEMA, booleanAttribute, OnChanges, SimpleChanges, inject } from '@angular/core';\nimport { NgTemplateOutlet, NgClass, NgStyle } from '@angular/common';\n\nimport { first, take, takeUntil } from 'rxjs/operators';\nimport { DEFAULT_PIVOT_KEYS, IDimensionsChange, IgxFilteringService, IgxGridNavigationService, IgxGridValidationService, IgxPivotDateDimension, IgxPivotGridValueTemplateContext, IPivotConfiguration, IPivotConfigurationChangedEventArgs, IPivotDimension, IPivotUISettings, IPivotValue, IValuesChange, PivotDimensionType, PivotRowLayoutType, PivotSummaryPosition, PivotUtil } from 'igniteui-angular/grids/core';\nimport { IgxGridSelectionService } from 'igniteui-angular/grids/core';\nimport { GridType, IGX_GRID_BASE, IGX_GRID_SERVICE_BASE, IgxColumnTemplateContext, PivotGridType, RowType } from 'igniteui-angular/grids/core';\nimport { IgxGridCRUDService } from 'igniteui-angular/grids/core';\nimport { IgxGridSummaryService } from 'igniteui-angular/grids/core';\nimport { IgxPivotHeaderRowComponent } from './pivot-header-row.component';\nimport { IgxColumnGroupComponent } from 'igniteui-angular/grids/core';\nimport { IgxColumnComponent } from 'igniteui-angular/grids/core';\nimport { FilterMode, GridPagingMode, GridSummaryPosition } from 'igniteui-angular/grids/core';\nimport { WatchChanges } from 'igniteui-angular/grids/core';\nimport { cloneArray, ColumnType, DataUtil, DefaultDataCloneStrategy, GridColumnDataType, GridSummaryCalculationMode, IDataCloneStrategy, IFilteringExpressionsTree, IFilteringOperation, IFilteringStrategy, ISortingExpression, OverlaySettings, resizeObservable, ɵSize, SortingDirection, IgxOverlayOutletDirective } from 'igniteui-angular/core';\nimport {\n    IGridEditEventArgs,\n    ICellPosition,\n    IColumnMovingEndEventArgs, IColumnMovingEventArgs, IColumnMovingStartEventArgs,\n    IColumnVisibilityChangedEventArgs,\n    IGridEditDoneEventArgs,\n    IGridToolbarExportEventArgs,\n    IPinColumnCancellableEventArgs,\n    IPinColumnEventArgs,\n    IPinRowEventArgs,\n    IRowDataCancelableEventArgs,\n    IRowDataEventArgs,\n    IRowDragEndEventArgs,\n    IRowDragStartEventArgs\n} from 'igniteui-angular/grids/core';\nimport { DropPosition } from 'igniteui-angular/grids/core';\nimport { DimensionValuesFilteringStrategy, NoopPivotDimensionsStrategy } from 'igniteui-angular/grids/core';\nimport { IgxGridExcelStyleFilteringComponent, IgxExcelStyleColumnOperationsTemplateDirective, IgxExcelStyleFilterOperationsTemplateDirective } from 'igniteui-angular/grids/core';\nimport { IgxPivotGridNavigationService } from './pivot-grid-navigation.service';\nimport { IgxPivotColumnResizingService } from 'igniteui-angular/grids/core';\nimport { State, Transaction, TransactionService, onResourceChangeHandle } from 'igniteui-angular/core';\nimport { IgxPivotFilteringService } from './pivot-filtering.service';\nimport { GridBaseAPIService } from 'igniteui-angular/grids/core';\nimport { IgxPivotRowDimensionContentComponent } from './pivot-row-dimension-content.component';\nimport { IgxPivotGridColumnResizerComponent } from 'igniteui-angular/grids/core';\nimport { PivotSortUtil } from './pivot-sort-util';\nimport { IgxPivotRowDimensionHeaderTemplateDirective, IgxPivotValueChipTemplateDirective } from './pivot-grid.directives';\nimport { IgxPivotRowPipe, IgxPivotRowExpansionPipe, IgxPivotAutoTransform, IgxPivotColumnPipe, IgxPivotGridFilterPipe, IgxPivotGridSortingPipe, IgxPivotGridColumnSortingPipe, IgxPivotCellMergingPipe, IgxPivotGridHorizontalRowGrouping } from './pivot-grid.pipes';\nimport { IgxGridRowClassesPipe, IgxGridRowStylesPipe } from 'igniteui-angular/grids/core';\nimport { IgxExcelStyleSearchComponent } from 'igniteui-angular/grids/core';\nimport { IgxPivotRowComponent } from './pivot-row.component';\nimport { IgxColumnMovingDropDirective } from 'igniteui-angular/grids/core';\nimport { IgxGridDragSelectDirective } from 'igniteui-angular/grids/core';\nimport { IgxGridBodyDirective } from 'igniteui-angular/grids/core';\nimport { IgxColumnResizingService } from 'igniteui-angular/grids/core';\nimport { IgxPivotRowHeaderGroupComponent } from './pivot-row-header-group.component';\nimport { IgxPivotRowDimensionMrlRowComponent } from './pivot-row-dimension-mrl-row.component';\nimport { IForOfDataChangingEventArgs, IgxForOfScrollSyncService, IgxForOfSyncService, IgxGridForOfDirective, IgxTemplateOutletDirective, IgxToggleDirective } from 'igniteui-angular/directives';\nimport { IgxCircularProgressBarComponent } from 'igniteui-angular/progressbar';\nimport { IgxSnackbarComponent } from 'igniteui-angular/snackbar';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { IgxPivotGridRow } from './pivot-grid-row';\nimport { IgxGridBaseDirective, IgxGridRowComponent } from 'igniteui-angular/grids/grid';\n\nlet NEXT_ID = 0;\nconst MINIMUM_COLUMN_WIDTH = 200;\nconst MINIMUM_COLUMN_WIDTH_SUPER_COMPACT = 104;\n\n/* blazorAdditionalDependency: Column */\n/* blazorAdditionalDependency: ColumnGroup */\n/* blazorAdditionalDependency: ColumnLayout */\n/* blazorAdditionalDependency: GridToolbar */\n/* blazorAdditionalDependency: GridToolbarActions */\n/* blazorAdditionalDependency: GridToolbarTitle */\n/* blazorAdditionalDependency: GridToolbarAdvancedFiltering */\n/* blazorAdditionalDependency: GridToolbarExporter */\n/* blazorAdditionalDependency: GridToolbarHiding */\n/* blazorAdditionalDependency: GridToolbarPinning */\n/* blazorAdditionalDependency: ActionStrip */\n/* blazorAdditionalDependency: GridActionsBaseDirective */\n/* blazorAdditionalDependency: GridEditingActions */\n/* blazorAdditionalDependency: GridPinningActions */\n/* blazorAdditionalDependency: PivotDateDimension */\n/* blazorIndirectRender */\n/**\n * Pivot Grid provides a way to present and manipulate data in a pivot table view.\n *\n * @igxModule IgxPivotGridModule\n * @igxGroup Grids & Lists\n * @igxKeywords pivot, grid, table\n * @igxTheme igx-grid-theme\n * @remarks\n * The Ignite UI Pivot Grid is used for grouping and aggregating simple flat data into a pivot table.  Once data\n * has been bound and the dimensions and values configured it can be manipulated via sorting and filtering.\n * @example\n * ```html\n * <igx-pivot-grid [data]=\"data\" [pivotConfiguration]=\"configuration\">\n * </igx-pivot-grid>\n * ```\n */\n@Component({\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    preserveWhitespaces: false,\n    selector: 'igx-pivot-grid',\n    templateUrl: 'pivot-grid.component.html',\n    providers: [\n        IgxGridCRUDService,\n        IgxGridValidationService,\n        IgxGridSummaryService,\n        IgxGridSelectionService,\n        IgxColumnResizingService,\n        GridBaseAPIService,\n        { provide: IGX_GRID_SERVICE_BASE, useClass: GridBaseAPIService },\n        { provide: IGX_GRID_BASE, useExisting: IgxPivotGridComponent },\n        { provide: IgxFilteringService, useClass: IgxPivotFilteringService },\n        IgxGridNavigationService,\n        IgxPivotGridNavigationService,\n        IgxPivotColumnResizingService,\n        IgxForOfSyncService,\n        IgxForOfScrollSyncService\n    ],\n    imports: [\n        NgClass,\n        NgStyle,\n        NgTemplateOutlet,\n        IgxPivotHeaderRowComponent,\n        IgxGridBodyDirective,\n        IgxGridDragSelectDirective,\n        IgxColumnMovingDropDirective,\n        IgxGridForOfDirective,\n        IgxTemplateOutletDirective,\n        IgxPivotRowComponent,\n        IgxToggleDirective,\n        IgxCircularProgressBarComponent,\n        IgxSnackbarComponent,\n        IgxOverlayOutletDirective,\n        IgxPivotGridColumnResizerComponent,\n        IgxIconComponent,\n        IgxPivotRowDimensionContentComponent,\n        IgxGridExcelStyleFilteringComponent,\n        IgxExcelStyleColumnOperationsTemplateDirective,\n        IgxExcelStyleFilterOperationsTemplateDirective,\n        IgxExcelStyleSearchComponent,\n        IgxGridRowClassesPipe,\n        IgxGridRowStylesPipe,\n        IgxPivotRowPipe,\n        IgxPivotRowExpansionPipe,\n        IgxPivotAutoTransform,\n        IgxPivotColumnPipe,\n        IgxPivotGridFilterPipe,\n        IgxPivotGridSortingPipe,\n        IgxPivotGridColumnSortingPipe,\n        IgxPivotCellMergingPipe,\n        IgxPivotGridHorizontalRowGrouping,\n        IgxPivotRowDimensionMrlRowComponent\n    ],\n    schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class IgxPivotGridComponent extends IgxGridBaseDirective implements OnInit, AfterContentInit,\n    PivotGridType, AfterViewInit, OnChanges {\n    /* blazorSuppress */\n    public override readonly gridAPI = inject<GridBaseAPIService<IgxGridBaseDirective & GridType>>(GridBaseAPIService);\n    /* blazorSuppress */\n    public override navigation = inject(IgxPivotGridNavigationService);\n    protected override colResizingService = inject(IgxPivotColumnResizingService);\n\n    /**\n     * Emitted when the dimension collection is changed via the grid chip area.\n     *\n     * @remarks\n     * Returns the new dimension collection and its type:\n     * @example\n     * ```html\n     * <igx-pivot-grid #grid [data]=\"localData\" [height]=\"'305px'\"\n     *              (dimensionsChange)=\"dimensionsChange($event)\"></igx-grid>\n     * ```\n     */\n    @Output()\n    public dimensionsChange = new EventEmitter<IDimensionsChange>();\n\n    /**\n     * Emitted when any of the pivotConfiguration properties is changed via the grid chip area.\n     *\n     * @example\n     * ```html\n     * <igx-pivot-grid #grid [data]=\"localData\" [height]=\"'305px'\"\n     *              (pivotConfigurationChanged)=\"configurationChanged($event)\"></igx-grid>\n     * ```\n     */\n    @Output()\n    public pivotConfigurationChange = new EventEmitter<IPivotConfigurationChangedEventArgs>();\n\n\n    /**\n     * Emitted when the dimension is initialized.\n     * @remarks\n     * Emits the dimension that is about to be initialized.\n     * @example\n     * ```html\n     * <igx-pivot-grid #grid [data]=\"localData\" [height]=\"'305px'\"\n     *              (dimensionInit)=\"dimensionInit($event)\"></igx-pivot-grid>\n     * ```\n     */\n    @Output()\n    public dimensionInit = new EventEmitter<IPivotDimension>();\n\n    /**\n     * Emitted when the value is initialized.\n     * @remarks\n     * Emits the value that is about to be initialized.\n     * @example\n     * ```html\n     * <igx-pivot-grid #grid [data]=\"localData\" [height]=\"'305px'\"\n     *              (valueInit)=\"valueInit($event)\"></igx-pivot-grid>\n     * ```\n     */\n    @Output()\n    public valueInit = new EventEmitter<IPivotValue>();\n\n\n    /**\n     * Emitted when a dimension is sorted.\n     *\n     * @example\n     * ```html\n     * <igx-pivot-grid #grid [data]=\"localData\" [height]=\"'305px'\"\n     *              (dimensionsSortingExpressionsChange)=\"dimensionsSortingExpressionsChange($event)\"></igx-pivot-grid>\n     * ```\n     */\n    @Output()\n    public dimensionsSortingExpressionsChange = new EventEmitter<ISortingExpression[]>();\n\n    /**\n     * Emitted when the values collection is changed via the grid chip area.\n     *\n     * @remarks\n     * Returns the new dimension\n     * @example\n     * ```html\n     * <igx-pivot-grid #grid [data]=\"localData\" [height]=\"'305px'\"\n     *              (valuesChange)=\"valuesChange($event)\"></igx-grid>\n     * ```\n    */\n    @Output()\n    public valuesChange = new EventEmitter<IValuesChange>();\n\n\n    /**\n     * Gets the sorting expressions generated for the dimensions.\n     *\n     * @example\n     * ```typescript\n     * const expressions = this.grid.dimensionsSortingExpressions;\n     * ```\n     */\n    public get dimensionsSortingExpressions() {\n        const allEnabledDimensions = this.rowDimensions.concat(this.columnDimensions);\n        const dimensionsSortingExpressions = PivotSortUtil.generateDimensionSortingExpressions(allEnabledDimensions);\n        return dimensionsSortingExpressions;\n    }\n\n    /** @hidden @internal */\n    @ViewChild(IgxPivotHeaderRowComponent, { static: true })\n    public override theadRow: IgxPivotHeaderRowComponent;\n\n    /**\n    * @hidden @internal\n    */\n    @ContentChild(IgxPivotValueChipTemplateDirective, { read: IgxPivotValueChipTemplateDirective })\n    protected valueChipTemplateDirective: IgxPivotValueChipTemplateDirective;\n\n    /**\n     * @hidden @internal\n     */\n    @ContentChild(IgxPivotRowDimensionHeaderTemplateDirective, { read: IgxPivotRowDimensionHeaderTemplateDirective })\n    protected rowDimensionHeaderDirective: IgxPivotRowDimensionHeaderTemplateDirective;\n\n    /**\n     * Gets/Sets a custom template for the value chips.\n     *\n     * @example\n     * ```html\n     * <igx-pivot-grid [valueChipTemplate]=\"myTemplate\"><igx-pivot-grid>\n     * ```\n     */\n    @Input()\n    public valueChipTemplate: TemplateRef<IgxPivotGridValueTemplateContext>;\n\n    @Input()\n    public rowDimensionHeaderTemplate: TemplateRef<IgxColumnTemplateContext>;\n\n    /* mustSetInCodePlatforms: WebComponents;Blazor;React */\n    /* @tsTwoWayProperty (true, \"PivotConfigurationChange\", \"Detail.PivotConfiguration\", false) */\n    /**\n     * Gets/Sets the pivot configuration with all related dimensions and values.\n     *\n     * @example\n     * ```html\n     * <igx-pivot-grid [pivotConfiguration]=\"config\"></igx-pivot-grid>\n     * ```\n     */\n    @Input()\n    public set pivotConfiguration(value: IPivotConfiguration) {\n        this._pivotConfiguration = value;\n        this.emitInitEvents(this._pivotConfiguration);\n        this.filteringExpressionsTree = PivotUtil.buildExpressionTree(value);\n        if (!this._init) {\n            this.setupColumns();\n        }\n        this.notifyChanges(true);\n    }\n\n    /* mustSetInCodePlatforms: WebComponents;Blazor */\n    public get pivotConfiguration() {\n        return this._pivotConfiguration || { rows: null, columns: null, values: null, filters: null };\n    }\n\n    /**\n     * Gets/Sets whether to auto-generate the pivot configuration based on the provided data.\n     *\n     * @remarks\n     * The default value is false. When set to true, it will override all dimensions and values in the pivotConfiguration.\n     * @example\n     * ```html\n     * <igx-pivot-grid [data]=\"Data\" [autoGenerateConfig]=\"true\"></igx-pivot-grid>\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    public autoGenerateConfig = false;\n\n    @Input()\n    /**\n     * Gets/Sets the pivot ui settings for the pivot grid - chips and their\n     * corresponding containers for row, filter, column dimensions and values\n     * as well as headers for the row dimensions values.\n     * @example\n     * ```html\n     * <igx-pivot-grid [pivotUI]=\"{ showRowHeaders: true }\"></igx-pivot-grid>\n     * ```\n     */\n    public set pivotUI(value: IPivotUISettings) {\n        this._pivotUI = Object.assign(this._pivotUI, value || {});\n        this.pipeTrigger++;\n        this.notifyChanges(true);\n    }\n\n    public get pivotUI() {\n        return this._pivotUI;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    @HostBinding('attr.role')\n    public role = 'grid';\n\n    /**\n     * Enables a super compact theme for the component.\n     * @remarks\n     * Overrides the grid size option if one is set.\n     * @example\n     * ```html\n     * <igx-pivot-grid [superCompactMode]=\"true\"></igx-pivot-grid>\n     * ```\n     */\n    @HostBinding('class.igx-grid__pivot--super-compact')\n    @Input()\n    public get superCompactMode() {\n        return this._superCompactMode;\n    }\n\n    public set superCompactMode(value) {\n        this._superCompactMode = value;\n    }\n\n    /** @hidden @internal */\n    public override get gridSize() {\n        if (this.superCompactMode) {\n            return ɵSize.Small;\n        }\n        return super.gridSize;\n    }\n\n\n    /**\n     * Gets/Sets the values clone strategy of the pivot grid when assigning them to different dimensions.\n     *\n     * @example\n     * ```html\n     *  <igx-pivot-grid #grid [data]=\"localData\" [pivotValueCloneStrategy]=\"customCloneStrategy\"></igx-pivot-grid>\n     * ```\n     * @hidden @internal\n     */\n    @Input()\n    public get pivotValueCloneStrategy(): IDataCloneStrategy {\n        return this._pivotValueCloneStrategy;\n    }\n\n    public set pivotValueCloneStrategy(strategy: IDataCloneStrategy) {\n        if (strategy) {\n            this._pivotValueCloneStrategy = strategy;\n        }\n    }\n\n    /**\n     * @hidden @internal\n     */\n    @ViewChild('record_template', { read: TemplateRef, static: true })\n    public recordTemplate: TemplateRef<any>;\n\n    /**\n     * @hidden @internal\n     */\n    @ViewChild(IgxPivotRowDimensionMrlRowComponent, { read: IgxPivotRowDimensionMrlRowComponent })\n    public rowDimensionMrlComponent: IgxPivotRowDimensionMrlRowComponent;\n\n    /**\n     * @hidden @internal\n     */\n    @ViewChild('headerTemplate', { read: TemplateRef, static: true })\n    public headerTemplate: TemplateRef<any>;\n\n    /**\n     * @hidden @internal\n     */\n    @ViewChildren('rowDimensionContainer', { read: ElementRef })\n    public rowDimensionContainer: QueryList<ElementRef<any>>;\n\n    /**\n     * @hidden @internal\n     */\n    @ViewChild(IgxPivotGridColumnResizerComponent)\n    public override resizeLine: IgxPivotGridColumnResizerComponent;\n\n    /**\n     * @hidden @internal\n     */\n    @ViewChildren(IgxGridExcelStyleFilteringComponent, { read: IgxGridExcelStyleFilteringComponent })\n    public override excelStyleFilteringComponents: QueryList<IgxGridExcelStyleFilteringComponent>;\n\n    /**\n     * @hidden @internal\n     */\n    @ViewChildren(IgxPivotRowDimensionContentComponent)\n    protected rowDimensionContentCollection: QueryList<IgxPivotRowDimensionContentComponent>;\n\n    /**\n     * @hidden @internal\n     */\n    public override get minColumnWidth() {\n        if (this.superCompactMode) {\n            return MINIMUM_COLUMN_WIDTH_SUPER_COMPACT;\n        } else {\n            return MINIMUM_COLUMN_WIDTH;\n        }\n    }\n\n    /**\n     * @hidden @internal\n     */\n    @ViewChildren('verticalRowDimScrollContainer', { read: IgxGridForOfDirective })\n    public verticalRowDimScrollContainers: QueryList<IgxGridForOfDirective<any, any[]>>;\n\n    /**\n     * @hidden @internal\n     */\n    @ViewChildren(IgxPivotRowDimensionMrlRowComponent)\n    public rowDimensionMrlRowsCollection: QueryList<IgxPivotRowDimensionMrlRowComponent>;\n\n    /**\n     * @hidden @internal\n     */\n    @Input()\n    public override addRowEmptyTemplate: TemplateRef<void>;\n\n    /**\n     * @hidden @internal\n     */\n    @Input()\n    public override autoGenerateExclude: string[] = [];\n\n    /**\n     * @hidden @internal\n     */\n    @Input()\n    public override snackbarDisplayTime = 6000;\n\n    /**\n     * @hidden @internal\n     */\n    @Output()\n    public override cellEdit = new EventEmitter<IGridEditEventArgs>();\n\n    /**\n     * @hidden @internal\n     */\n    @Output()\n    public override cellEditDone = new EventEmitter<IGridEditDoneEventArgs>();\n\n    /**\n     * @hidden @internal\n     */\n    @Output()\n    public override cellEditEnter = new EventEmitter<IGridEditEventArgs>();\n\n    /**\n     * @hidden @internal\n     */\n    @Output()\n    public override cellEditExit = new EventEmitter<IGridEditDoneEventArgs>();\n\n    /**\n     * @hidden @internal\n     */\n    @Output()\n    public override columnMovingStart = new EventEmitter<IColumnMovingStartEventArgs>();\n\n    /**\n     * @hidden @internal\n     */\n    @Output()\n    public override columnMoving = new EventEmitter<IColumnMovingEventArgs>();\n\n    /**\n     * @hidden @internal\n     */\n    @Output()\n    public override columnMovingEnd = new EventEmitter<IColumnMovingEndEventArgs>();\n\n    /**\n     * @hidden @internal\n     */\n    @Output()\n    public override columnPin = new EventEmitter<IPinColumnCancellableEventArgs>();\n\n    /**\n     * @hidden @internal\n     */\n    @Output()\n    public override columnPinned = new EventEmitter<IPinColumnEventArgs>();\n\n    /**\n     * @hidden @internal\n     */\n    @Output()\n    public override rowAdd = new EventEmitter<IRowDataCancelableEventArgs>();\n\n    /**\n     * @hidden @internal\n     */\n    @Output()\n    public override rowAdded = new EventEmitter<IRowDataEventArgs>();\n\n    /**\n     * @hidden @internal\n     */\n    @Output()\n    public override rowDeleted = new EventEmitter<IRowDataEventArgs>();\n\n    /**\n     * @hidden @internal\n     */\n    @Output()\n    public override rowDelete = new EventEmitter<IRowDataCancelableEventArgs>();\n\n    /**\n     * @hidden @internal\n     */\n    @Output()\n    public override rowDragStart = new EventEmitter<IRowDragStartEventArgs>();\n\n    /**\n     * @hidden @internal\n     */\n    @Output()\n    public override rowDragEnd = new EventEmitter<IRowDragEndEventArgs>();\n\n    /**\n     * @hidden @internal\n     */\n    @Output()\n    public override rowEditEnter = new EventEmitter<IGridEditEventArgs>();\n\n    /**\n     * @hidden @internal\n     */\n    @Output()\n    public override rowEdit = new EventEmitter<IGridEditEventArgs>();\n\n    /**\n     * @hidden @internal\n     */\n    @Output()\n    public override rowEditDone = new EventEmitter<IGridEditDoneEventArgs>();\n\n    /**\n     * @hidden @internal\n     */\n    @Output()\n    public override rowEditExit = new EventEmitter<IGridEditDoneEventArgs>();\n\n    /**\n     * @hidden @internal\n     */\n    @Output()\n    public override rowPinning = new EventEmitter<IPinRowEventArgs>();\n\n    /**\n     * @hidden @internal\n     */\n    @Output()\n    public override rowPinned = new EventEmitter<IPinRowEventArgs>();\n\n    /** @hidden @internal */\n    public columnGroupStates = new Map<string, boolean>();\n    /** @hidden @internal */\n    public dimensionDataColumns: any[];\n    /** @hidden @internal */\n    public get pivotKeys() {\n        return this.pivotConfiguration.pivotKeys || DEFAULT_PIVOT_KEYS;\n    }\n    /** @hidden @internal */\n    public override get type(): GridType[\"type\"] {\n        return 'pivot';\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override dragRowID = null;\n\n    /**\n    * @hidden @internal\n    */\n    public override get rootSummariesEnabled(): boolean {\n        return false;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public rowDimensionResizing = true;\n\n    private _emptyRowDimension: IPivotDimension = { memberName: '', enabled: true, level: 0 };\n    /**\n     * @hidden @internal\n     */\n    public get emptyRowDimension(): IPivotDimension {\n        return this._emptyRowDimension;\n    }\n\n    protected _pivotValueCloneStrategy: IDataCloneStrategy = new DefaultDataCloneStrategy();\n    protected override _defaultExpandState = false;\n    protected override _filterStrategy: IFilteringStrategy = new DimensionValuesFilteringStrategy();\n    protected regroupTrigger = 0;\n    private _data;\n    private _pivotConfiguration: IPivotConfiguration = { rows: null, columns: null, values: null, filters: null };\n    private p_id = `igx-pivot-grid-${NEXT_ID++}`;\n    private _superCompactMode = false;\n    private _pivotUI: IPivotUISettings = {\n        showConfiguration: true,\n        showRowHeaders: false,\n        rowLayout: PivotRowLayoutType.Vertical,\n        horizontalSummariesPosition: PivotSummaryPosition.Bottom\n    };\n    private _sortableColumns = true;\n    private _visibleRowDimensions: IPivotDimension[] = [];\n    private _shouldUpdateSizes = false;\n\n    /**\n    * Gets/Sets the default expand state for all rows.\n    */\n    @Input({ transform: booleanAttribute })\n    public get defaultExpandState() {\n        return this._defaultExpandState;\n    }\n\n    public set defaultExpandState(val: boolean) {\n        this._defaultExpandState = val;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    @Input()\n    public override get pagingMode(): GridPagingMode {\n        return 'local';\n    }\n\n    public override set pagingMode(_val: GridPagingMode) {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    @WatchChanges()\n    @Input({ transform: booleanAttribute })\n    public override get hideRowSelectors(): boolean {\n        return false;\n    }\n\n    public override set hideRowSelectors(_value: boolean) {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override autoGenerate = true;\n\n    /**\n     * @hidden @internal\n     */\n    public override get actionStrip() {\n        return undefined as any;\n    }\n\n    /**\n     * @hidden @internal\n     * @deprecated in version 18.2.0. This property is no longer supported.\n     */\n    public override get shouldGenerate(): boolean {\n        return false;\n    }\n\n    public override set shouldGenerate(value: boolean) {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override moving = false;\n\n    /**\n     * @hidden @internal\n     */\n    public override toolbarExporting = new EventEmitter<IGridToolbarExportEventArgs>();\n\n    /**\n     * @hidden @internal\n     */\n    @Input({ transform: booleanAttribute })\n    public override get rowDraggable(): boolean {\n        return false;\n    }\n\n\n    public override set rowDraggable(_val: boolean) {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    @Input({ transform: booleanAttribute })\n    public override get allowAdvancedFiltering() {\n        return false;\n    }\n\n    public override set allowAdvancedFiltering(_value) {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    @Input()\n    public override get filterMode() {\n        return FilterMode.quickFilter;\n    }\n\n    public override set filterMode(_value: FilterMode) {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    @Input({ transform: booleanAttribute })\n    public override get allowFiltering() {\n        return false;\n    }\n\n    public override set allowFiltering(_value) {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    @Input()\n    public override get page(): number {\n        return 0;\n    }\n\n    public override set page(_val: number) {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    @Input()\n    public override get perPage(): number {\n        return 0;\n    }\n\n    public override set perPage(_val: number) {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override get pinnedColumns(): IgxColumnComponent[] {\n        return [];\n    }\n\n    /**\n    * @hidden @internal\n    */\n    public override get unpinnedColumns(): IgxColumnComponent[] {\n        return super.unpinnedColumns;\n    }\n\n    /**\n    * @hidden @internal\n    */\n    public override get unpinnedDataView(): any[] {\n        return super.unpinnedDataView;\n    }\n\n    /**\n    * @hidden @internal\n    */\n    public override get unpinnedWidth() {\n        return super.unpinnedWidth;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override get pinnedStartWidth() {\n        return super.pinnedStartWidth;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    @Input()\n    public override set summaryRowHeight(_value: number) {\n    }\n\n    public override get summaryRowHeight(): number {\n        return 0;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override get transactions(): TransactionService<Transaction, State> {\n        return this._transactions;\n    }\n\n\n\n    /**\n     * @hidden @internal\n     */\n    public override get dragIndicatorIconTemplate(): TemplateRef<any> {\n        return;\n    }\n\n    public override set dragIndicatorIconTemplate(_val: TemplateRef<any>) {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    @WatchChanges()\n    @Input({ transform: booleanAttribute })\n    public override get rowEditable(): boolean {\n        return;\n    }\n\n    public override set rowEditable(_val: boolean) {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    @Input()\n    public override get pinning() {\n        return {};\n    }\n    public override set pinning(_value) {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    @Input()\n    public override get summaryPosition() {\n        return;\n    }\n\n    public override set summaryPosition(_value: GridSummaryPosition) {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    @Input()\n    public override get summaryCalculationMode() {\n        return;\n    }\n\n    public override set summaryCalculationMode(_value: GridSummaryCalculationMode) {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    @Input({ transform: booleanAttribute })\n    public override get showSummaryOnCollapse() {\n        return;\n    }\n\n    public override set showSummaryOnCollapse(_value: boolean) {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override get hiddenColumnsCount(): number {\n        return 0;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override get pinnedColumnsCount(): number {\n        return 0;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    @Input({ transform: booleanAttribute })\n    public override get batchEditing(): boolean {\n        return false;\n    }\n\n    public override set batchEditing(_val: boolean) {\n    }\n\n    /* csSuppress */\n    public override get selectedRows(): any[] {\n        if (this.selectionService.getSelectedRows().length === 0) {\n            return [];\n        }\n        const selectedRowIds = [];\n        this.dataView.forEach(record => {\n            const prev = [];\n            for (const dim of this.rowDimensions) {\n                let currDim = dim;\n                let shouldBreak = false;\n                do {\n                    const key = PivotUtil.getRecordKey(record, currDim);\n                    if (this.selectionService.isPivotRowSelected(key) && !selectedRowIds.find(x => x === record)) {\n                        selectedRowIds.push(record);\n                        shouldBreak = true;\n                        break;\n                    }\n                    currDim = currDim.childLevel;\n                } while (currDim);\n                prev.push(dim);\n                if (shouldBreak) {\n                    break;\n                }\n            }\n\n        });\n\n        return selectedRowIds;\n    }\n\n    /**\n     * @hidden\n     */\n    public override ngOnInit() {\n        // pivot grid always generates columns automatically.\n        this.autoGenerate = true;\n        super.ngOnInit();\n    }\n\n    /**\n     * @hidden\n     */\n    public override ngAfterContentInit() {\n        // ignore any user defined columns and auto-generate based on pivot config.\n        this.updateColumns([]);\n        Promise.resolve().then(() => {\n            if (this.autoGenerateConfig) {\n                this.generateConfig();\n            }\n            this.setupColumns();\n            // Bind to onResourceChange after the columns have initialized the first time to avoid premature initialization.\n            onResourceChangeHandle(this.destroy$, () => {\n                // Since the columns are kinda static, due to assigning DisplayName on init, they need to be regenerated.\n                this.setupColumns();\n            }, this);\n        });\n        if (this.valueChipTemplateDirective) {\n            this.valueChipTemplate = this.valueChipTemplateDirective.template;\n        }\n        if (this.rowDimensionHeaderDirective) {\n            this.rowDimensionHeaderTemplate = this.rowDimensionHeaderDirective.template;\n        }\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override ngAfterViewInit() {\n        Promise.resolve().then(() => {\n            super.ngAfterViewInit();\n        });\n\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public ngOnChanges(changes: SimpleChanges) {\n        if (changes.superCompactMode && !changes.superCompactMode.isFirstChange()) {\n            this._shouldUpdateSizes = true;\n            resizeObservable(this.verticalScrollContainer.displayContainer).pipe(take(1), takeUntil(this.destroy$)).subscribe(() => this.resizeNotify.next());\n        }\n    }\n\n    /**\n     * Notifies for dimension change.\n     */\n    public notifyDimensionChange(regenerateColumns = false) {\n        if (regenerateColumns) {\n            this.setupColumns();\n        }\n        this.pipeTrigger++;\n        this.cdr.detectChanges();\n    }\n\n    /**\n     * Gets the full list of dimensions.\n     *\n     * @example\n     * ```typescript\n     * const dimensions = this.grid.allDimensions;\n     * ```\n     */\n    public get allDimensions() {\n        const config = this._pivotConfiguration;\n        if (!config) return [];\n        return (config.rows || []).concat((config.columns || [])).concat(config.filters || []).filter(x => x !== null && x !== undefined);\n    }\n\n    protected get allVisibleDimensions() {\n        const config = this._pivotConfiguration;\n        if (!config) return [];\n        const uniqueVisibleRowDims = this.visibleRowDimensions.filter(dim => !config.rows.find(configRow => configRow.memberName === dim.memberName));\n        const rows = (config.rows || []).concat(...uniqueVisibleRowDims);\n        return rows.concat((config.columns || [])).concat(config.filters || []).filter(x => x !== null && x !== undefined);\n    }\n\n    protected override get shouldResize(): boolean {\n        if (!this.dataRowList.first?.cells || this.dataRowList.first.cells.length === 0) {\n            return false;\n        }\n        const isSizePropChanged = super.shouldResize;\n        if (isSizePropChanged || this._shouldUpdateSizes) {\n            this._shouldUpdateSizes = false;\n            return true;\n        }\n        return false;\n    }\n\n    protected get emptyBottomSize() {\n        return this.totalHeight - (<any>this.verticalScroll).scrollComponent.size;\n    }\n\n    /** @hidden @internal */\n    public createFilterESF(dropdown: any, column: ColumnType, options: OverlaySettings, shouldReatach: boolean) {\n        options.outlet = this.outlet;\n        if (dropdown) {\n            dropdown.initialize(column, this.overlayService);\n            dropdown.populateData();\n            if (shouldReatach) {\n                const id = this.overlayService.attach(dropdown.element, options);\n                dropdown.overlayComponentId = id;\n                return { id, ref: undefined };\n            }\n            return { id: dropdown.overlayComponentId, ref: undefined };\n        }\n    }\n\n    /** @hidden */\n    public override featureColumnsWidth() {\n        return this.pivotRowWidths || 0;\n    }\n\n    /* blazorSuppress */\n    /**\n     * Gets/Sets the value of the `id` attribute.\n     *\n     * @remarks\n     * If not provided it will be automatically generated.\n     * @example\n     * ```html\n     * <igx-pivot-grid [id]=\"'igx-pivot-1'\" [data]=\"Data\"></igx-pivot-grid>\n     * ```\n     */\n    @HostBinding('attr.id')\n    @Input()\n    public get id(): string {\n        return this.p_id;\n    }\n    /* blazorSuppress */\n    public set id(value: string) {\n        this.p_id = value;\n    }\n\n    /* treatAsRef */\n    /* blazorAlternateType: object */\n    /**\n     * Gets/Sets the array of data that populates the component.\n     * ```html\n     * <igx-pivot-grid [data]=\"Data\"></igx-pivot-grid>\n     * ```\n     */\n    @Input()\n    public set data(value: any[] | null) {\n        this._data = value || [];\n        if (!this._init) {\n            if (this.autoGenerateConfig) {\n                this.generateConfig();\n            }\n            this.setupColumns();\n            this.reflow();\n        }\n        this.cdr.markForCheck();\n        if (this.height === null || this.height.indexOf('%') !== -1) {\n            // If the height will change based on how much data there is, recalculate sizes in igxForOf.\n            this.notifyChanges(true);\n        }\n    }\n\n    /* treatAsRef */\n    /* blazorAlternateType: object */\n    /**\n     * Returns an array of data set to the component.\n     * ```typescript\n     * let data = this.grid.data;\n     * ```\n     */\n    public get data(): any[] | null {\n        return this._data;\n    }\n\n    /**\n     * @hidden\n     */\n    public getContext(rowData, rowIndex): any {\n        return {\n            $implicit: rowData,\n            templateID: {\n                type: 'dataRow',\n                id: null\n            },\n            index: this.getDataViewIndex(rowIndex, false)\n        };\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public get pivotRowWidths() {\n        return this.visibleRowDimensions.length ? this.visibleRowDimensions.reduce((accumulator, dim) => accumulator + this.rowDimensionWidthToPixels(dim), 0) :\n            this.rowDimensionWidthToPixels(this.emptyRowDimension);\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public rowDimensionWidth(dim): string {\n        const isAuto = dim.width && dim.width.indexOf('auto') !== -1;\n        if (isAuto) {\n            return dim.autoWidth ? dim.autoWidth + 'px' : 'fit-content';\n        } else {\n            return this.rowDimensionWidthToPixels(dim) + 'px';\n        }\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public rowDimensionWidthToPixels(dim: IPivotDimension): number {\n        if (!dim?.width) {\n            return MINIMUM_COLUMN_WIDTH;\n        }\n        const isPercent = dim.width && dim.width.indexOf('%') !== -1;\n        const isAuto = dim.width && dim.width.indexOf('auto') !== -1;\n        if (isPercent) {\n            return Math.round(parseFloat(dim.width) / 100 * this.calcWidth);\n        } else if (isAuto) {\n            return dim.autoWidth;\n        } else {\n            return parseInt(dim.width, 10);\n        }\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public reverseDimensionWidthToPercent(width: number): number {\n        return (width * 100 / this.calcWidth);\n    }\n\n    /** @hidden @internal */\n    public get pivotContentCalcWidth() {\n        if (!this.platform.isBrowser) {\n            return undefined;\n        }\n        if (!this.visibleRowDimensions.length) {\n            return Math.max(0, this.calcWidth - this.pivotRowWidths);\n        }\n\n        const totalDimWidth = this.visibleRowDimensions.length > 0 ?\n            this.visibleRowDimensions.map((dim) => this.rowDimensionWidthToPixels(dim)).reduce((prev, cur) => prev + cur) :\n            0;\n        return this.calcWidth - totalDimWidth;\n    }\n\n    /** @hidden @internal */\n    public get pivotPinnedStartWidth() {\n        return !this._init ? this.pinnedStartWidth : 0;\n    }\n\n    /** @hidden @internal */\n    public get pivotPinnedEndWidth() {\n        return !this._init ? this.pinnedEndWidth : 0;\n    }\n\n    /** @hidden @internal */\n    public get pivotUnpinnedWidth() {\n        return this.unpinnedWidth || 0;\n    }\n\n    /** @hidden @internal */\n    public get rowDimensions() {\n        return this.pivotConfiguration.rows?.filter(x => x.enabled) || [];\n    }\n\n    /** @hidden @internal */\n    public set visibleRowDimensions(value: IPivotDimension[]) {\n        this._visibleRowDimensions = value;\n    }\n\n    public get visibleRowDimensions() {\n        return this._visibleRowDimensions || this.rowDimensions;\n    }\n\n    /** @hidden @internal */\n    public get columnDimensions() {\n        return this.pivotConfiguration.columns?.filter(x => x.enabled) || [];\n    }\n\n    /** @hidden @internal */\n    public get filterDimensions() {\n        return this.pivotConfiguration.filters?.filter(x => x.enabled) || [];\n    }\n\n    /** @hidden @internal */\n    public get values() {\n        return this.pivotConfiguration.values?.filter(x => x.enabled) || [];\n    }\n\n    public toggleColumn(col: IgxColumnComponent) {\n        const state = this.columnGroupStates.get(col.field);\n        const newState = !state;\n        this.columnGroupStates.set(col.field, newState);\n        this.toggleRowGroup(col, newState);\n        this.reflow();\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override isRecordPinnedByIndex(_rowIndex: number) {\n        return false;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override toggleColumnVisibility(_args: IColumnVisibilityChangedEventArgs) {\n        return;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override expandAll() {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override collapseAll() {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override expandRow(_rowID: any) {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override collapseRow(_rowID: any) {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override get pinnedRows(): IgxGridRowComponent[] {\n        return;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    @Input()\n    public override get totalRecords(): number {\n        return;\n    }\n\n    public override set totalRecords(_total: number) {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override moveColumn(_column: IgxColumnComponent, _target: IgxColumnComponent, _pos: DropPosition = DropPosition.AfterDropTarget) {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override addRow(_data: any): void {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override deleteRow(_rowSelector: any): any {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override updateCell(_value: any, _rowSelector: any, _column: string): void {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override updateRow(_value: any, _rowSelector: any): void {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override enableSummaries(..._rest) {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override disableSummaries(..._rest) {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override pinColumn(_columnName: string | IgxColumnComponent, _index?): boolean {\n        return;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override unpinColumn(_columnName: string | IgxColumnComponent, _index?): boolean {\n        return;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override pinRow(_rowID: any, _index?: number, _row?: RowType): boolean {\n        return;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override unpinRow(_rowID: any, _row?: RowType): boolean {\n        return;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override get pinnedRowHeight() {\n        return;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override get hasEditableColumns(): boolean {\n        return;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override get hasSummarizedColumns(): boolean {\n        return;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override get hasMovableColumns(): boolean {\n        return;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override get pinnedDataView(): any[] {\n        return [];\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override openAdvancedFilteringDialog(_overlaySettings?: OverlaySettings) {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override closeAdvancedFilteringDialog(_applyChanges: boolean) {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override endEdit(_commit = true, _event?: Event): boolean {\n        return;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override beginAddRowById(_rowID: any, _asChild?: boolean): void {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override beginAddRowByIndex(_index: number): void {\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override clearSearch() { }\n\n    /**\n    * @hidden @internal\n    */\n    public override refreshSearch(_updateActiveInfo?: boolean, _endEdit = true): number {\n        return 0;\n    }\n\n    /**\n    * @hidden @internal\n    */\n    public override findNext(_text: string, _caseSensitive?: boolean, _exactMatch?: boolean): number {\n        return 0;\n    }\n\n    /**\n    * @hidden @internal\n    */\n    public override findPrev(_text: string, _caseSensitive?: boolean, _exactMatch?: boolean): number {\n        return 0;\n    }\n\n    /**\n    * @hidden @internal\n    */\n    public override getNextCell(currRowIndex: number, curVisibleColIndex: number,\n        callback: (IgxColumnComponent) => boolean = null): ICellPosition {\n        return super.getNextCell(currRowIndex, curVisibleColIndex, callback);\n    }\n\n    /**\n    * @hidden @internal\n    */\n    public override getPreviousCell(currRowIndex: number, curVisibleColIndex: number,\n        callback: (IgxColumnComponent) => boolean = null): ICellPosition {\n        return super.getPreviousCell(currRowIndex, curVisibleColIndex, callback);\n    }\n\n    /**\n    * @hidden @internal\n    */\n    public override getPinnedStartWidth(takeHidden = false) {\n        return super.getPinnedStartWidth(takeHidden);\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public override get totalHeight() {\n        return this.calcHeight;\n    }\n\n    public getColumnGroupExpandState(col: IgxColumnComponent) {\n        const state = this.columnGroupStates.get(col.field);\n        // columns are expanded by default?\n        return state !== undefined && state !== null ? state : false;\n    }\n\n    public toggleRowGroup(col: IgxColumnComponent, newState: boolean) {\n        if (!col) return;\n        if (this.hasMultipleValues) {\n            const parentCols = col.parent ? col.parent.children.toArray() : this._autoGeneratedCols.filter(x => x.level === 0);\n            const siblingCol = parentCols.filter(x => x.header === col.header && x !== col)[0];\n            const currIndex = parentCols.indexOf(col);\n            const siblingIndex = parentCols.indexOf(siblingCol);\n            if (currIndex < siblingIndex) {\n                // clicked on the full hierarchy header\n                this.resolveToggle(col, newState);\n                siblingCol.headerTemplate = this.headerTemplate;\n            } else {\n                // clicked on summary parent column that contains just the measures\n                col.headerTemplate = undefined;\n                this.resolveToggle(siblingCol, newState);\n            }\n        } else {\n            const parentCols = col.parent ? col.parent.children : this._autoGeneratedCols.filter(x => x.level === 0);\n            const fieldColumn = parentCols.filter(x => x.header === col.header && !x.columnGroup)[0];\n            const groupColumn = parentCols.filter(x => x.header === col.header && x.columnGroup)[0];\n            this.resolveToggle(groupColumn, newState);\n            if (newState) {\n                fieldColumn.headerTemplate = this.headerTemplate;\n            } else {\n                fieldColumn.headerTemplate = undefined;\n            }\n        }\n    }\n\n    /**\n    * @hidden @internal\n    */\n    public override setupColumns() {\n        super.setupColumns();\n    }\n\n    /**\n    * @hidden @internal\n    */\n    public override dataRebinding(event: IForOfDataChangingEventArgs) {\n        if (this.hasHorizontalLayout) {\n            this.dimensionDataColumns = this.generateDimensionColumns();\n        }\n\n        super.dataRebinding(event);\n    }\n\n    /**\n     * Auto-sizes row dimension cells.\n     *\n     * @remarks\n     * Only sizes based on the dimension cells in view.\n     * @example\n     * ```typescript\n     * this.grid.autoSizeRowDimension(dimension);\n     * ```\n     * @param dimension The row dimension to size.\n     */\n    public autoSizeRowDimension(dimension: IPivotDimension) {\n        if (this.getDimensionType(dimension) === PivotDimensionType.Row) {\n            const relatedDims: string[] = PivotUtil.flatten([dimension]).map((x: IPivotDimension) => x.memberName);\n            const contentCollection = this.getContentCollection(dimension);\n            const content = contentCollection.filter(x => relatedDims.indexOf(x.dimension.memberName) !== -1);\n            const headers = content.map(x => x.headerGroups.toArray()).flat().map(x => x.header && x.header.refInstance);\n            if (this.pivotUI.showRowHeaders) {\n                const dimensionHeader = this.theadRow.rowDimensionHeaders.find(x => x.column.field === dimension.memberName);\n                headers.push(dimensionHeader);\n            }\n            const autoWidth = this.getLargesContentWidth(headers);\n            if (dimension.width === \"auto\") {\n                dimension.autoWidth = parseFloat(autoWidth);\n            } else {\n                dimension.width = autoWidth;\n            }\n            this.pipeTrigger++;\n            this.cdr.detectChanges();\n        }\n    }\n\n    /**\n     * Inserts dimension in target collection by type at specified index or at the collection's end.\n     *\n     * @example\n     * ```typescript\n     * this.grid.insertDimensionAt(dimension, PivotDimensionType.Row, 1);\n     * ```\n     * @param dimension The dimension that will be added.\n     * @param targetCollectionType The target collection type to add to. Can be Row, Column or Filter.\n     * @param index The index in the collection at which to add.\n     * This parameter is optional. If not set it will add it to the end of the collection.\n     */\n    public insertDimensionAt(dimension: IPivotDimension, targetCollectionType: PivotDimensionType, index?: number) {\n        const targetCollection = this.getDimensionsByType(targetCollectionType);\n        if (index !== undefined) {\n            targetCollection.splice(index, 0, dimension);\n        } else {\n            targetCollection.push(dimension);\n        }\n        if (targetCollectionType === PivotDimensionType.Column) {\n            this.setupColumns();\n        }\n        this.pipeTrigger++;\n        this.dimensionsChange.emit({ dimensions: targetCollection, dimensionCollectionType: targetCollectionType });\n        if (targetCollectionType === PivotDimensionType.Filter) {\n            this.dimensionDataColumns = this.generateDimensionColumns();\n            this.reflow();\n        }\n        this.pivotConfigurationChange.emit({ pivotConfiguration: this.pivotConfiguration });\n    }\n\n    /**\n     * Move dimension from its currently collection to the specified target collection by type at specified index or at the collection's end.\n     *\n     * @example\n     * ```typescript\n     * this.grid.moveDimension(dimension, PivotDimensionType.Row, 1);\n     * ```\n     * @param dimension The dimension that will be moved.\n     * @param targetCollectionType The target collection type to move it to. Can be Row, Column or Filter.\n     * @param index The index in the collection at which to add.\n     * This parameter is optional. If not set it will add it to the end of the collection.\n     */\n    public moveDimension(dimension: IPivotDimension, targetCollectionType: PivotDimensionType, index?: number) {\n        const prevCollectionType = this.getDimensionType(dimension);\n        if (prevCollectionType === null) return;\n        // remove from old collection\n        this._removeDimensionInternal(dimension);\n        // add to target\n        this.insertDimensionAt(dimension, targetCollectionType, index);\n\n        if (prevCollectionType === PivotDimensionType.Column) {\n            this.setupColumns();\n        }\n    }\n\n    /**\n     * Removes dimension from its currently collection.\n     * @remarks\n     * This is different than toggleDimension that enabled/disables the dimension.\n     * This completely removes the specified dimension from the collection.\n     * @example\n     * ```typescript\n     * this.grid.removeDimension(dimension);\n     * ```\n     * @param dimension The dimension to be removed.\n     */\n    public removeDimension(dimension: IPivotDimension) {\n        const prevCollectionType = this.getDimensionType(dimension);\n        this._removeDimensionInternal(dimension);\n        if (prevCollectionType === PivotDimensionType.Column) {\n            this.setupColumns();\n        }\n        if (prevCollectionType === PivotDimensionType.Filter) {\n            this.reflow();\n        }\n        this.pipeTrigger++;\n        this.cdr.detectChanges();\n    }\n\n    /**\n     * Toggles the dimension's enabled state on or off.\n     * @remarks\n     * The dimension remains in its current collection. This just changes its enabled state.\n     * @example\n     * ```typescript\n     * this.grid.toggleDimension(dimension);\n     * ```\n     * @param dimension The dimension to be toggled.\n     */\n    public toggleDimension(dimension: IPivotDimension) {\n        const dimType = this.getDimensionType(dimension);\n        if (dimType === null) return;\n        const collection = this.getDimensionsByType(dimType);\n        dimension.enabled = !dimension.enabled;\n        if (dimType === PivotDimensionType.Column) {\n            this.setupColumns();\n        }\n        if (!dimension.enabled && dimension.filter) {\n            this.filteringService.clearFilter(dimension.memberName);\n        }\n        this.pipeTrigger++;\n        this.dimensionsChange.emit({ dimensions: collection, dimensionCollectionType: dimType });\n        this.cdr.detectChanges();\n        if (dimType === PivotDimensionType.Filter) {\n            this.reflow();\n        }\n        this.pivotConfigurationChange.emit({ pivotConfiguration: this.pivotConfiguration });\n    }\n\n    /**\n     * Inserts value at specified index or at the end.\n     *\n     * @example\n     * ```typescript\n     * this.grid.insertValueAt(value, 1);\n     * ```\n     * @param value The value definition that will be added.\n     * @param index The index in the collection at which to add.\n     * This parameter is optional. If not set it will add it to the end of the collection.\n     */\n    public insertValueAt(value: IPivotValue, index?: number) {\n        if (!this.pivotConfiguration.values) {\n            this.pivotConfiguration.values = [];\n        }\n        const values = this.pivotConfiguration.values;\n        if (index !== undefined) {\n            values.splice(index, 0, value);\n        } else {\n            values.push(value);\n        }\n        this.setupColumns();\n        this.pipeTrigger++;\n        this.cdr.detectChanges();\n        this.valuesChange.emit({ values });\n        this.pivotConfigurationChange.emit({ pivotConfiguration: this.pivotConfiguration });\n    }\n\n    /**\n     * Move value from its currently at specified index or at the end.\n     *\n     * @example\n     * ```typescript\n     * this.grid.moveValue(value, 1);\n     * ```\n     * @param value The value that will be moved.\n     * @param index The index in the collection at which to add.\n     * This parameter is optional. If not set it will add it to the end of the collection.\n     */\n    public moveValue(value: IPivotValue, index?: number) {\n        if (this.pivotConfiguration.values.indexOf(value) === -1) return;\n        // remove from old index\n        this.removeValue(value);\n        // add to new\n        this.insertValueAt(value, index);\n    }\n\n    /**\n     * Removes value from collection.\n     * @remarks\n     * This is different than toggleValue that enabled/disables the value.\n     * This completely removes the specified value from the collection.\n     * @example\n     * ```typescript\n     * this.grid.removeValue(dimension);\n     * ```\n     * @param value The value to be removed.\n     */\n    public removeValue(value: IPivotValue,) {\n        const values = this.pivotConfiguration.values;\n        const currentIndex = values.indexOf(value);\n        if (currentIndex !== -1) {\n            values.splice(currentIndex, 1);\n            this.setupColumns();\n            this.pipeTrigger++;\n            this.valuesChange.emit({ values });\n            this.pivotConfigurationChange.emit({ pivotConfiguration: this.pivotConfiguration });\n        }\n    }\n\n    /**\n     * Toggles the value's enabled state on or off.\n     * @remarks\n     * The value remains in its current collection. This just changes its enabled state.\n     * @example\n     * ```typescript\n     * this.grid.toggleValue(value);\n     * ```\n     * @param value The value to be toggled.\n     */\n    public toggleValue(value: IPivotValue) {\n        if (this.pivotConfiguration.values.indexOf(value) === -1) return;\n        value.enabled = !value.enabled;\n        this.setupColumns();\n        this.pipeTrigger++;\n        this.valuesChange.emit({ values: this.pivotConfiguration.values });\n        this.reflow();\n        this.pivotConfigurationChange.emit({ pivotConfiguration: this.pivotConfiguration });\n    }\n\n    /**\n     * Sort the dimension and its children in the provided direction.\n     * @example\n     * ```typescript\n     * this.grid.sortDimension(dimension, SortingDirection.Asc);\n     * ```\n     * @param value The value to be toggled.\n     */\n    public sortDimension(dimension: IPivotDimension, sortDirection: SortingDirection) {\n        const dimensionType = this.getDimensionType(dimension);\n        dimension.sortDirection = sortDirection;\n        // apply same sort direction to children.\n        let dim = dimension;\n        if (this.pivotUI.rowLayout === PivotRowLayoutType.Vertical) {\n            while (dim.childLevel) {\n                dim.childLevel.sortDirection = dimension.sortDirection;\n                dim = dim.childLevel;\n            }\n        }\n\n        this.pipeTrigger++;\n        this.dimensionsSortingExpressionsChange.emit(this.dimensionsSortingExpressions);\n        if (dimensionType === PivotDimensionType.Column) {\n            this.setupColumns();\n        }\n        this.cdr.detectChanges();\n        this.pivotConfigurationChange.emit({ pivotConfiguration: this.pivotConfiguration });\n    }\n\n    /**\n     * Filters a single `IPivotDimension`.\n     *\n     * @example\n     * ```typescript\n     * public filter() {\n     *      const set = new Set();\n     *      set.add('Value 1');\n     *      set.add('Value 2');\n     *      this.grid1.filterDimension(this.pivotConfigHierarchy.rows[0], set, IgxStringFilteringOperand.instance().condition('in'));\n     * }\n     * ```\n     */\n    public filterDimension(dimension: IPivotDimension, value: any, conditionOrExpressionTree?: IFilteringOperation | IFilteringExpressionsTree) {\n        this.filteringService.filter(dimension.memberName, value, conditionOrExpressionTree);\n        const dimensionType = this.getDimensionType(dimension);\n        if (dimensionType === PivotDimensionType.Column) {\n            this.setupColumns();\n        }\n        this.cdr.detectChanges();\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public getRowDimensionByName(memberName: string) {\n        const visibleRows = this.pivotUI.rowLayout === PivotRowLayoutType.Vertical ?\n            this.pivotConfiguration.rows :\n            PivotUtil.flatten(this.pivotConfiguration.rows);\n        const dimIndex = visibleRows.findIndex((target) => target.memberName === memberName);\n        const dim = visibleRows[dimIndex];\n        return dim;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public getDimensionsByType(dimension: PivotDimensionType) {\n        switch (dimension) {\n            case PivotDimensionType.Row:\n                if (!this.pivotConfiguration.rows) {\n                    this.pivotConfiguration.rows = [];\n                }\n                return this.pivotConfiguration.rows;\n            case PivotDimensionType.Column:\n                if (!this.pivotConfiguration.columns) {\n                    this.pivotConfiguration.columns = [];\n                }\n                return this.pivotConfiguration.columns;\n            case PivotDimensionType.Filter:\n                if (!this.pivotConfiguration.filters) {\n                    this.pivotConfiguration.filters = [];\n                }\n                return this.pivotConfiguration.filters;\n            default:\n                return null;\n        }\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public resizeRowDimensionPixels(dimension: IPivotDimension, newWidth: number) {\n        const isPercentageWidth = dimension.width && typeof dimension.width === 'string' && dimension.width.indexOf('%') !== -1;\n        if (isPercentageWidth) {\n            dimension.width = this.reverseDimensionWidthToPercent(newWidth).toFixed(2) + '%';\n        } else {\n            dimension.width = newWidth + 'px';\n        }\n\n        // Notify the grid to reflow, to update if horizontal scrollbar needs to be rendered/removed.\n        this.pipeTrigger++;\n        this.cdr.detectChanges();\n    }\n\n    /*\n    * @hidden\n    * @internal\n    */\n    protected _removeDimensionInternal(dimension) {\n        const prevCollectionType = this.getDimensionType(dimension);\n        if (prevCollectionType === null) return;\n        const prevCollection = this.getDimensionsByType(prevCollectionType);\n        const currentIndex = prevCollection.indexOf(dimension);\n        prevCollection.splice(currentIndex, 1);\n        this.pipeTrigger++;\n        this.cdr.detectChanges();\n    }\n\n    protected getDimensionType(dimension: IPivotDimension): PivotDimensionType {\n        return PivotUtil.flatten(this.pivotConfiguration.rows).indexOf(dimension) !== -1 ? PivotDimensionType.Row :\n            PivotUtil.flatten(this.pivotConfiguration.columns).indexOf(dimension) !== -1 ? PivotDimensionType.Column :\n                (!!this.pivotConfiguration.filters && PivotUtil.flatten(this.pivotConfiguration.filters).indexOf(dimension) !== -1) ?\n                    PivotDimensionType.Filter : null;\n    }\n\n    protected getPivotRowHeaderContentWidth(headerGroup: IgxPivotRowHeaderGroupComponent) {\n        const headerSizes = this.getHeaderCellWidth(headerGroup.nativeElement);\n        return headerSizes.width + headerSizes.padding;\n    }\n\n    protected getLargesContentWidth(contents: ElementRef[]): string {\n        const largest = new Map<number, number>();\n        if (contents.length > 0) {\n            const cellsContentWidths = [];\n            contents.forEach((elem) => {\n                elem instanceof IgxPivotRowHeaderGroupComponent ?\n                    cellsContentWidths.push(this.getPivotRowHeaderContentWidth(elem)) :\n                    cellsContentWidths.push(this.getHeaderCellWidth(elem.nativeElement).width);\n            });\n            const index = cellsContentWidths.indexOf(Math.max(...cellsContentWidths));\n            const cellStyle = this.document.defaultView.getComputedStyle(contents[index].nativeElement);\n            const cellPadding = parseFloat(cellStyle.paddingLeft) + parseFloat(cellStyle.paddingRight) +\n                parseFloat(cellStyle.borderLeftWidth) + parseFloat(cellStyle.borderRightWidth);\n            largest.set(Math.max(...cellsContentWidths), cellPadding);\n        }\n        const largestCell = Math.max(...Array.from(largest.keys()));\n        const width = Math.ceil(largestCell + largest.get(largestCell));\n\n        if (Number.isNaN(width)) {\n            return null;\n        } else {\n            return width + 'px';\n        }\n    }\n\n    /** @hidden @internal */\n    public get hasHorizontalLayout() {\n        return this.pivotUI.rowLayout === PivotRowLayoutType.Horizontal;\n    }\n\n    /**\n    * @hidden\n    */\n    public get hasMultipleValues() {\n        return this.values.length > 1;\n    }\n\n    /**\n    * @hidden\n    */\n    public get excelStyleFilterMaxHeight() {\n        // max 10 rows, row size depends on grid size\n        const maxHeight = this.renderedRowHeight * 10;\n        return `${maxHeight}px`;\n    }\n\n    /**\n    * @hidden\n    */\n    public get excelStyleFilterMinHeight(): string {\n        // min 5 rows, row size depends on grid size\n        const minHeight = this.renderedRowHeight * 5;\n        return `${minHeight}px`;\n    }\n\n    /** @hidden @internal */\n    public override get activeDescendant(): string | undefined {\n        if (this.navigation.isRowHeaderActive || this.navigation.isRowDimensionHeaderActive) {\n            return;\n        }\n        return super.activeDescendant;\n    }\n\n    /** @hidden @internal */\n    public get headerRowActiveDescendant() {\n        const activeElem = this.navigation.activeNode;\n        if (!activeElem || !Object.keys(activeElem).length || !this.navigation.isRowHeaderActive) {\n            return null;\n        }\n\n        const rowDimensions = this.rowDimensionContentCollection.length > 0 ?\n            this.rowDimensionContentCollection.toArray() :\n            this.rowDimensionMrlComponent.rowDimensionContentCollection.toArray();\n\n        const rowDimensionContentActive = rowDimensions.find(rd => rd && rd.headerGroups?.some(hg => hg.active));\n        const activeHeader = rowDimensionContentActive?.headerGroups.toArray().find(hg => hg.active);\n\n        return activeHeader ? `${this.id}_${activeHeader.title}` : null;\n    }\n\n    protected resolveToggle(groupColumn: ColumnType, state: boolean) {\n        if (!groupColumn) return;\n        groupColumn.hidden = state;\n        this.columnGroupStates.set(groupColumn.field, state);\n        const childrenTotal = this.hasMultipleValues ?\n            groupColumn.children.filter(x => x.columnGroup && x.children.filter(y => !y.columnGroup).length === this.values.length) :\n            groupColumn.children.filter(x => !x.columnGroup);\n        const childrenSubgroups = this.hasMultipleValues ?\n            groupColumn.children.filter(x => x.columnGroup && x.children.filter(y => !y.columnGroup).length === 0) :\n            groupColumn.children.filter(x => x.columnGroup);\n        childrenTotal.forEach(group => {\n            const newState = this.columnGroupStates.get(group.field) || state;\n            if (newState) {\n                group.headerTemplate = this.headerTemplate;\n            } else {\n                group.headerTemplate = undefined;\n            }\n        });\n        if (!groupColumn.hidden && childrenSubgroups.length > 0) {\n            childrenSubgroups.forEach(group => {\n                const newState = this.columnGroupStates.get(group.field) || state;\n                this.resolveToggle(group, newState);\n            });\n        }\n    }\n\n    protected override buildDataView(data: any[]) {\n        this._dataView = data;\n    }\n\n    /**\n     * @hidden @internal\n     */\n    protected override getDataBasedBodyHeight(): number {\n        const dvl = this.dataView?.length || 0;\n        return dvl < this._defaultTargetRecordNumber ? 0 : this.defaultTargetBodyHeight;\n    }\n\n    protected override horizontalScrollHandler(event) {\n        const scrollLeft = event.target.scrollLeft;\n        this.theadRow.headerContainers.forEach(headerForOf => {\n            headerForOf.onHScroll(scrollLeft);\n        });\n        super.horizontalScrollHandler(event);\n    }\n\n    protected override verticalScrollHandler(event) {\n        this.verticalRowDimScrollContainers.forEach(x => {\n            x.onScroll(event);\n        });\n        super.verticalScrollHandler(event);\n    }\n\n    /**\n     * @hidden\n     */\n    protected override autogenerateColumns() {\n        let columns = [];\n        const data = this.gridAPI.filterDataByExpressions(this.filteringExpressionsTree);\n        this.dimensionDataColumns = this.generateDimensionColumns();\n        const flattenedColumnsWithSorting = PivotUtil.flatten(this.columnDimensions).filter(dim => dim.sortDirection);\n        const expressions = flattenedColumnsWithSorting.length > 0 ? PivotSortUtil.generateDimensionSortingExpressions(flattenedColumnsWithSorting) : [];\n        let sortedData = data;\n        if (expressions.length > 0) {\n            sortedData = DataUtil.sort(cloneArray(data), expressions, this.sortStrategy, this);\n        }\n        let fieldsMap;\n        if (this.pivotConfiguration.columnStrategy && this.pivotConfiguration.columnStrategy instanceof NoopPivotDimensionsStrategy) {\n            const fields = this.generateDataFields(sortedData);\n            if (fields.length === 0) return;\n            const rowFields = PivotUtil.flatten(this.pivotConfiguration.rows).map(x => x.memberName);\n            const keyFields = Object.values(this.pivotKeys);\n            const filteredFields = fields.filter(x => rowFields.indexOf(x) === -1 && keyFields.indexOf(x) === -1 &&\n                x.indexOf(this.pivotKeys.rowDimensionSeparator + this.pivotKeys.level) === -1 &&\n                x.indexOf(this.pivotKeys.rowDimensionSeparator + this.pivotKeys.records) === -1);\n            fieldsMap = this.generateFromData(filteredFields);\n        } else {\n            fieldsMap = PivotUtil.getFieldsHierarchy(\n                sortedData,\n                this.columnDimensions,\n                PivotDimensionType.Column,\n                this.pivotKeys,\n                this.pivotValueCloneStrategy\n            );\n        }\n        columns = this.generateColumnHierarchy(fieldsMap, sortedData);\n        this._autoGeneratedCols = columns;\n        // reset expansion states if any are stored.\n        this.columnGroupStates.forEach((value, key) => {\n            if (value) {\n                const primaryColumn = columns.find(x => x.field === key && x.headerTemplate === this.headerTemplate);\n                const groupSummaryColumn = columns.find(x => x.field === key && x.headerTemplate !== this.headerTemplate);\n                this.toggleRowGroup(primaryColumn, value);\n                if (groupSummaryColumn) {\n                    groupSummaryColumn.headerTemplate = this.headerTemplate;\n                }\n            }\n        });\n\n        this.updateColumns(columns);\n        this.pipeTrigger++;\n        this.reflow();\n    }\n\n    protected generateDimensionColumns(): IgxColumnComponent[] {\n        const columns = [];\n        this.allVisibleDimensions.forEach((dim) => {\n            const ref = createComponent(IgxColumnComponent, { environmentInjector: this.envInjector, elementInjector: this.injector });\n            ref.instance.field = dim.memberName;\n            ref.instance.header = dim.displayName || dim.memberName;\n            ref.instance.headerTemplate = this.rowDimensionHeaderTemplate;\n            ref.instance.resizable = this.rowDimensionResizing;\n            ref.instance.sortable = dim.sortable === undefined ? true : dim.sortable;\n            ref.instance.width = this.rowDimensionWidth(dim);\n            ref.instance.filteringIgnoreCase = false;\n            ref.changeDetectorRef.detectChanges();\n            columns.push(ref.instance);\n        });\n        return columns;\n    }\n\n    protected override calculateGridSizes(recalcFeatureWidth = true) {\n        super.calculateGridSizes(recalcFeatureWidth);\n        if (this.hasDimensionsToAutosize) {\n            this.cdr.detectChanges();\n            this.zone.onStable.pipe(first()).subscribe(() => {\n                requestAnimationFrame(() => {\n                    this.autoSizeDimensionsInView();\n                });\n            });\n        }\n    }\n\n    protected getContentCollection(dimenstion: IPivotDimension) {\n        let contentCollection;\n        if (this.hasHorizontalLayout) {\n            const allMrlContents = this.rowDimensionMrlRowsCollection.map(mrlRow => mrlRow.contentCells.toArray()).flat();\n            contentCollection = allMrlContents.filter(cell => cell.rootDimension === dimenstion);\n        } else {\n            contentCollection = this.rowDimensionContentCollection.toArray();\n        }\n        return contentCollection;\n    }\n\n    protected autoSizeDimensionsInView() {\n        if (!this.hasDimensionsToAutosize) return;\n        for (const dim of this.visibleRowDimensions) {\n            if (dim.width === 'auto') {\n                const contentWidths = [];\n                const relatedDims = PivotUtil.flatten([dim]).map(x => x.memberName);\n                const contentCollection = this.getContentCollection(dim);\n                const content = contentCollection.filter(x => relatedDims.indexOf(x.dimension.memberName) !== -1);\n                const headers = content.map(x => x.headerGroups.toArray()).flat().map(x => x.header && x.header.refInstance);\n                headers.forEach((header) => contentWidths.push(header?.nativeElement?.offsetWidth || 0));\n                if (this.pivotUI.showRowHeaders) {\n                    const dimensionHeader = this.theadRow.rowDimensionHeaders.find(x => x.column.field === dim.memberName);\n                    contentWidths.push(parseFloat(this.getLargesContentWidth([dimensionHeader])));\n                }\n                const max = Math.max(...contentWidths);\n                if (max === 0) {\n                    // cells not in DOM yet...\n                    continue;\n                }\n                const maxSize = Math.ceil(Math.max(...contentWidths));\n                dim.autoWidth = maxSize;\n            }\n        }\n\n        if (this.isColumnWidthSum) {\n            this.calcWidth = this.getColumnWidthSum();\n        }\n    }\n\n    /** @hidden @internal */\n    public get hasDimensionsToAutosize() {\n        return this.rowDimensions.some(x => x.width === 'auto' && !x.autoWidth);\n    }\n\n    protected generateFromData(fields: string[]) {\n        const separator = this.pivotKeys.columnDimensionSeparator;\n        const dataArr = fields.map(x => x.split(separator)).sort(x => x.length);\n        const hierarchy = new Map<string, any>();\n        const columnDimensions = PivotUtil.flatten(this.columnDimensions);\n        dataArr.forEach(arr => {\n            let currentHierarchy = hierarchy;\n            const path = [];\n            let index = 0;\n            for (const val of arr) {\n                path.push(val);\n                const newPath = path.join(separator);\n                let targetHierarchy = currentHierarchy.get(newPath);\n                if (!targetHierarchy) {\n                    const currentColumnDimension = columnDimensions[index];\n                    currentHierarchy.set(newPath, { value: newPath, expandable: !!currentColumnDimension.childLevel, children: new Map<string, any>(), dimension: currentColumnDimension });\n                    targetHierarchy = currentHierarchy.get(newPath);\n                }\n                currentHierarchy = targetHierarchy.children;\n                index++;\n            }\n        });\n        return hierarchy;\n    }\n    protected generateColumnHierarchy(fields: Map<string, any>, data, parent = null): IgxColumnComponent[] {\n        let columns = [];\n        if (fields.size === 0) {\n            this.values.forEach((value) => {\n                const ref = createComponent(IgxColumnComponent, { environmentInjector: this.envInjector, elementInjector: this.injector });\n                let columnDataType = value.dataType || this.resolveDataTypes(data.length ? data[0][value.member] : null);\n\n                if (value.aggregate?.key?.toLowerCase() === 'count' && (columnDataType === GridColumnDataType.Currency || columnDataType == GridColumnDataType.Percent)) {\n                    columnDataType = GridColumnDataType.Number;\n                }\n\n                ref.instance.header = value.displayName;\n                ref.instance.field = value.member;\n                ref.instance.parent = parent;\n                ref.instance.sortable = true;\n                ref.instance.dataType = columnDataType;\n                ref.instance.formatter = value.formatter;\n                columns.push(ref.instance);\n            });\n            return columns;\n        }\n        const currentFields = fields;\n        currentFields.forEach((value) => {\n            let shouldGenerate = true;\n            if (data.length === 0) {\n                shouldGenerate = false;\n            }\n            if (shouldGenerate && (value.children == null || value.children.length === 0 || value.children.size === 0)) {\n                const col = this.createColumnForDimension(value, data, parent, this.hasMultipleValues);\n\n                if (!this.hasMultipleValues && this.values.length > 0) {\n                    PivotUtil.updateColumnTypeByAggregator([col], this.values[0], true);\n                }\n\n                columns.push(col);\n                if (this.hasMultipleValues) {\n                    const measureChildren = this.getMeasureChildren(data, col, false, value.dimension.width);\n\n                    measureChildren.forEach((child, index) => {\n                        const pivotValue = this.values[index];\n                        PivotUtil.updateColumnTypeByAggregator([child], pivotValue, this.values.length === 1);\n                    });\n\n                    col.children.reset(measureChildren);\n                    columns = columns.concat(measureChildren);\n                }\n\n            } else if (shouldGenerate) {\n                const col = this.createColumnForDimension(value, data, parent, true);\n                if (value.expandable) {\n                    col.headerTemplate = this.headerTemplate;\n                }\n                const children = this.generateColumnHierarchy(value.children, data, col);\n                const filteredChildren = children.filter(x => x.level === col.level + 1);\n                columns.push(col);\n                if (this.hasMultipleValues) {\n                    let measureChildren = this.getMeasureChildren(data, col, true, value.dimension.width);\n                    const nestedChildren = filteredChildren;\n                    //const allChildren = children.concat(measureChildren);\n                    col.children.reset(nestedChildren);\n                    columns = columns.concat(children);\n                    if (value.dimension.childLevel) {\n                        const sibling = this.createColumnForDimension(value, data, parent, true);\n                        columns.push(sibling);\n\n                        measureChildren = this.getMeasureChildren(data, sibling, false, value.dimension?.width);\n                        sibling.children.reset(measureChildren);\n                        columns = columns.concat(measureChildren);\n                    }\n\n                } else {\n                    col.children.reset(filteredChildren);\n                    columns = columns.concat(children);\n                    if (value.dimension.childLevel) {\n                        const sibling = this.createColumnForDimension(value, data, parent, false);\n                        columns.push(sibling);\n                    }\n                }\n            }\n        });\n\n        return columns;\n    }\n\n\n    protected generateConfig() {\n        if (!this.data) return;\n\n        const data = this.data;\n        const fields = this.generateDataFields(data);\n        const columnDimensions: IPivotDimension[] = [];\n        const rowDimensions: IPivotDimension[] = [];\n        const values: IPivotValue[] = [];\n        let isFirstDate = true;\n        fields.forEach((field) => {\n            const dataType = this.resolveDataTypes(data[0][field]);\n            switch (dataType) {\n                case \"number\":\n                    {\n                        const value: IPivotValue = {\n                            member: field,\n                            displayName: field,\n                            dataType: dataType,\n                            aggregate: {\n                                key: 'sum',\n                                label: 'Sum',\n                                aggregatorName: \"SUM\"\n                            },\n                            enabled: true\n                        };\n                        values.push(value);\n                        break;\n                    }\n                case \"date\":\n                    {\n                        const dimension: IPivotDimension = new IgxPivotDateDimension(\n                            {\n                                memberName: field,\n                                enabled: isFirstDate,\n                                dataType: dataType\n                            }\n                        )\n                        rowDimensions.push(dimension);\n                        isFirstDate = false;\n                        break;\n                    }\n                default: {\n                    const dimension: IPivotDimension = {\n                        memberName: field,\n                        enabled: false,\n                        dataType: dataType\n                    };\n                    columnDimensions.push(dimension);\n                    break;\n                }\n            }\n        });\n        const config: IPivotConfiguration = {\n            columns: columnDimensions,\n            rows: rowDimensions,\n            values: values\n        };\n        this.pivotConfiguration = config;\n    }\n\n    protected createColumnForDimension(value: any, data: any, parent: ColumnType, isGroup: boolean) {\n        const key = value.value;\n        const ref = isGroup ?\n            createComponent(IgxColumnGroupComponent, { environmentInjector: this.envInjector, elementInjector: this.injector }) :\n            createComponent(IgxColumnComponent, { environmentInjector: this.envInjector, elementInjector: this.injector });\n        ref.instance.header = parent != null ? key.split(parent.header + this.pivotKeys.columnDimensionSeparator)[1] : key;\n        ref.instance.field = key;\n        ref.instance.parent = parent;\n        if (value.dimension.width) {\n            ref.instance.width = value.dimension.width;\n        }\n        const valueDefinition = this.values[0];\n        ref.instance.dataType = valueDefinition?.dataType || this.resolveDataTypes(data[0][valueDefinition?.member]);\n        ref.instance.formatter = valueDefinition?.formatter;\n        ref.instance.sortable = true;\n        ref.changeDetectorRef.detectChanges();\n        return ref.instance;\n    }\n\n    protected resolveColumnDimensionWidth(dim: IPivotDimension) {\n        if (dim.width) {\n            return dim.width;\n        }\n        return this.minColumnWidth + 'px';\n    }\n\n    protected getMeasureChildren(data, parent, hidden, parentWidth) {\n        const cols = [];\n        const count = this.values.length;\n        const childWidth = parseInt(parentWidth, 10) / count;\n        const isPercent = parentWidth && parentWidth.indexOf('%') !== -1;\n        const isAuto = parentWidth && parentWidth.indexOf('auto') !== -1;\n        this.values.forEach(val => {\n            const ref = createComponent(IgxColumnComponent, { environmentInjector: this.envInjector, elementInjector: this.injector });\n            ref.instance.header = val.displayName || val.member;\n            ref.instance.field = parent.field + this.pivotKeys.columnDimensionSeparator + val.member;\n            ref.instance.parent = parent;\n            if (parentWidth) {\n                ref.instance.width = isAuto ? 'auto' : isPercent ? childWidth + '%' : childWidth + 'px';\n            }\n            ref.instance.hidden = hidden;\n            ref.instance.sortable = this._sortableColumns;\n            ref.instance.dataType = val.dataType || this.resolveDataTypes(data[0][val.member]);\n            ref.instance.formatter = val.formatter;\n            ref.changeDetectorRef.detectChanges();\n            cols.push(ref.instance);\n        });\n        return cols;\n    }\n\n    /**\n    * @hidden @internal\n    */\n    @ViewChild('emptyPivotGridTemplate', { read: TemplateRef, static: true })\n    public defaultEmptyPivotGridTemplate: TemplateRef<any>;\n\n    /**\n     * Gets/Sets a custom template when pivot grid is empty.\n     *\n     * @example\n     * ```html\n     * <igx-pivot-grid [emptyPivotGridTemplate]=\"myTemplate\"><igx-pivot-grid>\n     * ```\n     */\n    @Input()\n    public emptyPivotGridTemplate: TemplateRef<void>;\n\n    /**\n    * @hidden @internal\n    */\n    public override get template(): TemplateRef<any> {\n        const allEnabledDimensions = this.rowDimensions.concat(this.columnDimensions);\n        if (allEnabledDimensions.length === 0 && this.values.length === 0) {\n            // no enabled values and dimensions\n            return this.emptyPivotGridTemplate || this.defaultEmptyPivotGridTemplate;\n        }\n        return super.template;\n    }\n\n    private emitInitEvents(pivotConfig: IPivotConfiguration) {\n        const dimensions = PivotUtil.flatten(this.allDimensions);\n        dimensions.forEach(dim => {\n            this.dimensionInit.emit(dim);\n        });\n        const values = pivotConfig?.values;\n        values?.forEach(val => {\n            this.valueInit.emit(val);\n        });\n    }\n\n    protected rowDimensionByName(memberName: string) {\n        return this.visibleRowDimensions.find((rowDim) => rowDim.memberName === memberName);\n    }\n\n    protected calculateResizerTop() {\n        return this.pivotUI.showRowHeaders ?\n            (this.theadRow.pivotFilterContainer?.nativeElement.offsetHeight || 0) + (this.theadRow.pivotRowContainer?.nativeElement.offsetHeight || 0) :\n            this.theadRow.nativeElement.offsetHeight;\n    }\n\n    protected override updateDefaultRowHeight() {\n        super.updateDefaultRowHeight();\n        if (this.hasHorizontalLayout) {\n            // Trigger pipes to recalc heights for the horizontal layout mrl rows.\n            this.regroupTrigger++;\n        }\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public createRow(index: number, data?: any): RowType {\n        let row: RowType;\n\n        const dataIndex = this._getDataViewIndex(index);\n        const rec = data ?? this.dataView[dataIndex];\n\n\n        if (!row && rec) {\n            row = new IgxPivotGridRow(this, index, rec);\n        }\n        return row;\n    }\n}\n","<!-- Toolbar area -->\n<ng-content select=\"igx-grid-toolbar,igc-grid-toolbar\"></ng-content>\n\n<!-- Grid table head row area -->\n<igx-pivot-header-row class=\"igx-grid-thead igx-grid-thead--pivot\" tabindex=\"0\"\n    [grid]=\"this\"\n    [hasMRL]=\"hasColumnLayouts\"\n    [width]=\"calcWidth\"\n    [pinnedStartColumnCollection]=\"pinnedStartColumns\"\n    [pinnedEndColumnCollection]=\"pinnedEndColumns\"\n    [unpinnedColumnCollection]=\"unpinnedColumns\"\n    (keydown.meta.c)=\"copyHandler($event)\"\n    (keydown.control.c)=\"copyHandler($event)\"\n    (copy)=\"copyHandler($event)\"\n    (keydown)=\"navigation.headerNavigation($event)\"\n    (scroll)=\"preventHeaderScroll($event)\"\n>\n</igx-pivot-header-row>\n\n<div igxGridBody (keydown.control.c)=\"copyHandler($event)\" (copy)=\"copyHandler($event)\" class=\"igx-grid__tbody\" role=\"rowgroup\">\n    <ng-container *ngTemplateOutlet=\"rowDimensions.length ? (hasHorizontalLayout ? horizontalRowDimensionsTemplate : defaultRowDimensionsTemplate) : emptyRowDimensionsTemplate; context: this\"></ng-container>\n    <div class=\"igx-grid__tbody-content\" tabindex=\"0\"  [attr.aria-activedescendant]=\"activeDescendant\" [attr.role]=\"dataView.length ? null : 'row'\" (keydown)=\"navigation.handleNavigation($event)\" (focus)=\"navigation.focusTbody($event)\"\n        (dragStop)=\"selectionService.dragMode = $event\" (scroll)=\"preventContainerScroll($event)\"\n        (dragScroll)=\"dragScroll($event)\" [igxGridDragSelect]=\"selectionService.dragMode\"\n        [style.height.px]=\"totalHeight\" [style.width.px]=\"pivotContentCalcWidth || null\" [style.width]=\"!platform.isBrowser ? '100%' : undefined\" #tbody [attr.aria-activedescendant]=\"activeDescendant\">\n        @if (hasMovableColumns && columnInDrag && pinnedColumns.length <= 0) {\n            <span [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n            class=\"igx-grid__scroll-on-drag-left\"></span>\n        }\n        @if (hasMovableColumns && columnInDrag && pinnedColumns.length > 0) {\n            <span [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n            class=\"igx-grid__scroll-on-drag-pinned\" [style.left.px]=\"pinnedStartWidth\"></span>\n        }\n        <ng-template igxGridFor let-rowData [igxGridForOf]=\"renderData\n        | pivotGridFilter:pivotConfiguration:filterStrategy:advancedFilteringExpressionsTree:filteringPipeTrigger:pipeTrigger\n        | pivotGridSort:pivotConfiguration:sortStrategy:pipeTrigger\n        | pivotGridRow:pivotConfiguration:pivotValueCloneStrategy:expansionStates:pipeTrigger:sortingExpressions\n        | pivotGridColumn:pivotConfiguration:pivotValueCloneStrategy:expansionStates:pipeTrigger:sortingExpressions\n        | pivotGridAutoTransform:pivotConfiguration:pipeTrigger\n        | pivotGridColumnSort:sortingExpressions:sortStrategy:pipeTrigger\n        | pivotGridRowExpansion:pivotConfiguration:expansionStates:defaultExpandState:pipeTrigger\"\n            let-rowIndex=\"index\" [igxForScrollOrientation]=\"'vertical'\" [igxForScrollContainer]=\"verticalScroll\"\n            [igxForContainerSize]=\"calcHeight\"\n            [igxForItemSize]=\"hasColumnLayouts ? rowHeight * multiRowLayoutRowSize + 1 : renderedRowHeight\"\n\n            #verticalScrollContainer (dataChanging)=\"dataRebinding($event)\" (dataChanged)=\"dataRebound($event)\">\n            <div [attr.data-index]=\"rowIndex\">\n            <ng-template\n                [igxTemplateOutlet]=\"recordTemplate\"\n                [igxTemplateOutletContext]=\"getContext(rowData, rowIndex)\"\n                (cachedViewLoaded)=\"cachedViewLoaded($event)\">\n            </ng-template>\n            </div>\n        </ng-template>\n        <ng-template #record_template let-rowIndex=\"index\" let-rowData>\n            <igx-pivot-row [gridID]=\"id\" [index]=\"rowIndex\" [data]=\"rowData\"\n                [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:isRecordMerged(rowData):false:rowData:pipeTrigger\"\n                [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\" #row>\n            </igx-pivot-row>\n        </ng-template>\n\n        <ng-container *ngTemplateOutlet=\"template; context: { $implicit: this }\"></ng-container>\n        <igc-trial-watermark></igc-trial-watermark>\n    </div>\n    <div igxToggle #loadingOverlay>\n        @if (shouldOverlayLoading) {\n            <igx-circular-bar [indeterminate]=\"true\">\n            </igx-circular-bar>\n        }\n    </div>\n    @if (hasMovableColumns && columnInDrag) {\n        <span [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\"\n        id=\"right\" class=\"igx-grid__scroll-on-drag-right\"></span>\n    }\n    <div [hidden]=\"!hasVerticalScroll()\" class=\"igx-grid__tbody-scrollbar\" [style.width.px]=\"scrollSize\" (pointerdown)=\"$event.preventDefault()\">\n        <div class=\"igx-grid__tbody-scrollbar-start\" [style.height.px]=\" isRowPinningToTop ? pinnedRowHeight : 0\"></div>\n        <div class=\"igx-grid__tbody-scrollbar-main\" [style.height.px]=\"calcHeight\">\n            <ng-template igxGridFor [igxGridForOf]=\"[]\" #verticalScrollHolder></ng-template>\n        </div>\n        <div class=\"igx-grid__tbody-scrollbar-end\" [style.height.px]=\"!isRowPinningToTop ? pinnedRowHeight : 0\"></div>\n    </div>\n\n    <div class=\"igx-grid__addrow-snackbar\">\n        <igx-snackbar #addRowSnackbar [outlet]=\"igxBodyOverlayOutlet\" [actionText]=\"resourceStrings.igx_grid_snackbar_addrow_actiontext\" [displayTime]=\"snackbarDisplayTime\">{{resourceStrings.igx_grid_snackbar_addrow_label}}</igx-snackbar>\n    </div>\n\n    <div #igxBodyOverlayOutlet=\"overlay-outlet\" igxOverlayOutlet></div>\n</div>\n\n<div class=\"igx-grid__scroll\" [style.height.px]=\"scrollSize\" #scr [hidden]=\"isHorizontalScrollHidden\" (pointerdown)=\"$event.preventDefault()\">\n    <div class=\"igx-grid__scroll-start\" [style.width.px]=\"pivotPinnedStartWidth\" [style.min-width.px]=\"pivotPinnedStartWidth\"></div>\n    <div class=\"igx-grid__scroll-main\" [style.width.px]=\"pivotUnpinnedWidth\">\n        <ng-template igxGridFor [igxGridForOf]=\"EMPTY_DATA\" #scrollContainer>\n        </ng-template>\n    </div>\n    <div class=\"igx-grid__scroll-end\" [style.width.px]=\"pivotPinnedEndWidth\" [style.min-width.px]=\"pivotPinnedEndWidth\" [hidden]=\"pivotPinnedEndWidth === 0\"></div>\n</div>\n\n<div class=\"igx-grid__tfoot\" role=\"rowgroup\" #tfoot>\n</div>\n\n<div class=\"igx-grid__footer\" #footer>\n    <ng-content select=\"igx-grid-footer,igc-grid-footer\"></ng-content>\n</div>\n\n<ng-template #emptyFilteredGrid>\n    <span class=\"igx-grid__tbody-message\" role=\"cell\">\n        <span>{{emptyFilteredGridMessage}}</span>\n    </span>\n</ng-template>\n\n<ng-template #defaultEmptyGrid>\n    <span class=\"igx-grid__tbody-message\" role=\"cell\">\n        <span>{{emptyGridMessage}}</span>\n    </span>\n</ng-template>\n\n<ng-template #defaultLoadingGrid>\n    <div class=\"igx-grid__loading\">\n        <igx-circular-bar [indeterminate]=\"true\">\n        </igx-circular-bar>\n    </div>\n</ng-template>\n@if (colResizingService.showResizer) {\n    <igx-pivot-grid-column-resizer [restrictResizerTop]=\"calculateResizerTop()\"></igx-pivot-grid-column-resizer>\n}\n<div class=\"igx-grid__loading-outlet\" #igxLoadingOverlayOutlet igxOverlayOutlet></div>\n<div class=\"igx-grid__outlet\" #igxFilteringOverlayOutlet igxOverlayOutlet></div>\n\n<ng-template #headerTemplate let-column>\n    <div class=\"igx-grid__tr--header\">\n        <igx-icon\n            family=\"default\"\n            [name]=\"getColumnGroupExpandState(column) ? 'tree_expand' : 'tree_collapse'\"\n            [attr.draggable]=\"false\"\n            (click)=\"toggleColumn(column)\">\n        </igx-icon>\n        {{column.header}}\n    </div>\n</ng-template>\n\n<ng-template #defaultRowDimensionsTemplate>\n    @for (dim of rowDimensions; track dim.memberName; let dimIndex = $index) {\n        <div tabindex=\"0\" [style.height.px]=\"totalHeight\" #rowDimensionContainer class=\"igx-grid__tbody-pivot-dimension\" (focus)=\"navigation.focusTbody($event)\" (keydown)=\"navigation.handleNavigation($event)\"\n            [attr.aria-activedescendant]=\"headerRowActiveDescendant\">\n            <ng-template igxGridFor let-rowData\n                [igxGridForOf]=\"dataView | pivotGridCellMerging:pivotConfiguration:dim:pipeTrigger\"\n                let-rowIndex=\"index\" [igxForScrollOrientation]=\"'vertical'\" [igxForScrollContainer]=\"verticalScroll\"\n                [igxForContainerSize]=\"calcHeight\"\n                [igxForItemSize]=\"renderedRowHeight\"\n                [igxForSizePropName]=\"'height'\"\n                #verticalRowDimScrollContainer\n            >\n                <igx-pivot-row-dimension-content\n                    class=\"igx-grid-thead\" [grid]=\"this\"\n                    [dimension]=\"rowData.dimensions[dimIndex]\"\n                    [rootDimension]=\"dim\"\n                    [style.height.px]=\"renderedRowHeight * (rowData.rowSpan || 1)\"\n                    [rowIndex]=\"rowIndex\" [rowData]=\"rowData\"\n                    [width]=\"rowDimensionWidthToPixels(dim)\">\n                </igx-pivot-row-dimension-content>\n            </ng-template>\n            <ng-container *ngTemplateOutlet=\"emptyRowDimensionFill; context: { $implicit: this, widthPx: rowDimensionWidthToPixels(dim) }\"></ng-container>\n        </div>\n    }\n</ng-template>\n\n<ng-template #horizontalRowDimensionsTemplate>\n    <div tabindex=\"0\" class=\"igx-grid__tbody-pivot-mrl-dimension\" #rowDimensionContainer [style.height.px]=\"totalHeight\" (focus)=\"navigation.focusTbody($event)\" (keydown)=\"navigation.handleNavigation($event)\"\n        [attr.aria-activedescendant]=\"headerRowActiveDescendant\">\n        @if (dataView | pivotGridHorizontalRowGrouping:pivotConfiguration:pipeTrigger:regroupTrigger; as groupedData) {\n            <ng-template #verticalRowDimScrollContainer role=\"rowgroup\" igxGridFor let-rowGroup let-rowIndex=\"index\"\n                [igxGridForOf]=\"groupedData\"\n                [igxForScrollOrientation]=\"'vertical'\"\n                [igxForScrollContainer]=\"verticalScroll\"\n                [igxForContainerSize]=\"calcHeight\"\n                [igxForItemSize]=\"renderedRowHeight\"\n                [igxForSizePropName]=\"'height'\"\n            >\n                <igx-pivot-row-dimension-mrl-row [rowIndex]=\"rowIndex\" [rowGroup]=\"rowGroup\" [groupedData]=\"groupedData\" [style.height.px]=\"renderedRowHeight * rowGroup.length\"></igx-pivot-row-dimension-mrl-row>\n            </ng-template>\n        }\n        <ng-container *ngTemplateOutlet=\"emptyRowDimensionFill; context: { $implicit: this, widthPx: pivotRowWidths }\"></ng-container>\n    </div>\n</ng-template>\n\n<ng-template #emptyRowDimensionsTemplate>\n    <div tabindex=\"0\" #rowDimensionContainer role=\"rowgroup\" class=\"igx-grid__tbody-pivot-dimension\" (focus)=\"navigation.focusTbody($event)\" (keydown)=\"navigation.handleNavigation($event)\"\n        [attr.aria-activedescendant]=\"headerRowActiveDescendant\">\n        @if ((columnDimensions.length > 0 || values.length > 0) && data.length > 0) {\n            <igx-pivot-row-dimension-content class=\"igx-grid-thead\" [grid]=\"this\"\n                [dimension]=\"emptyRowDimension\"\n                [rootDimension]=\"emptyRowDimension\"\n                [rowIndex]=\"0\" [rowData]=\"dataView[0]\"\n                [width]=\"rowDimensionWidthToPixels(emptyRowDimension)\">\n            </igx-pivot-row-dimension-content>\n        }\n        <ng-container *ngTemplateOutlet=\"emptyRowDimensionFill; context: { $implicit: this, widthPx: rowDimensionWidthToPixels(emptyRowDimension) }\"></ng-container>\n    </div>\n</ng-template>\n\n<ng-template #emptyPivotGridTemplate>\n    <span class=\"igx-grid__tbody-message\" role=\"cell\">\n        <span>{{resourceStrings.igx_grid_pivot_empty_message}}</span>\n    </span>\n</ng-template>\n\n<ng-template #emptyRowDimensionFill let-width=\"widthPx\">\n    @if (emptyBottomSize > 0) {\n        <div class=\"igx-pivot-grid-row-filler__wrapper\" [style.height.px]=\"emptyBottomSize\" [style.width.px]=\"width\">\n            <!-- Reuse header styles to keep visuals consistent -->\n            <div class=\"igx-grid-thead__wrapper\">\n                <div class=\"igx-grid-th\"></div>\n            </div>\n        </div>\n    }\n</ng-template>\n\n<div [hidden]=\"true\">\n    <igx-grid-excel-style-filtering [maxHeight]=\"excelStyleFilterMaxHeight\" [minHeight]=\"excelStyleFilterMinHeight\">\n        <div igxExcelStyleColumnOperations [hidden]=\"true\"></div>\n        <igx-excel-style-filter-operations>\n            <igx-excel-style-search></igx-excel-style-search>\n        </igx-excel-style-filter-operations>\n    </igx-grid-excel-style-filtering>\n</div>\n\n@if (platform.isElements) {\n    <div #sink style=\"display: none;\"></div>\n    <ng-content select=\"igx-grid-state,igc-grid-state\"></ng-content>\n}\n","import { useAnimation } from \"@angular/animations\";\nimport { ChangeDetectorRef, Component, EventEmitter, HostBinding, Input, Output, Renderer2, booleanAttribute, inject } from \"@angular/core\";\nimport { first } from \"rxjs/operators\";\nimport { IgxFilterPivotItemsPipe } from \"./pivot-grid.pipes\";\nimport { fadeIn, fadeOut } from 'igniteui-angular/animations';\nimport { IgxInputDirective, IgxInputGroupComponent, IgxPrefixDirective } from 'igniteui-angular/input-group';\nimport { IgxIconComponent } from 'igniteui-angular/icon';\nimport { IgxListComponent, IgxListItemComponent } from 'igniteui-angular/list';\nimport { IgxCheckboxComponent } from 'igniteui-angular/checkbox';\nimport { IgxAccordionComponent } from 'igniteui-angular/accordion';\nimport { IgxExpansionPanelBodyComponent, IgxExpansionPanelComponent, IgxExpansionPanelHeaderComponent, IgxExpansionPanelTitleDirective } from 'igniteui-angular/expansion-panel';\nimport { IDragBaseEventArgs, IDragGhostBaseEventArgs, IDragMoveEventArgs, IDropBaseEventArgs, IDropDroppedEventArgs, IgxDragDirective, IgxDragHandleDirective, IgxDropDirective } from 'igniteui-angular/directives';\nimport { IgxChipComponent } from 'igniteui-angular/chips';\nimport { IgxDropDownComponent, IgxDropDownItemComponent, IgxDropDownItemNavigationDirective, ISelectionEventArgs } from 'igniteui-angular/drop-down';\nimport { AbsoluteScrollStrategy, AutoPositionStrategy, ColumnType, OverlaySettings, PositionSettings, ɵSize, SortingDirection, VerticalAlignment } from 'igniteui-angular/core';\nimport { IPivotAggregator, IPivotDimension, IPivotValue, PivotDimensionType, PivotGridType, PivotUtil } from 'igniteui-angular/grids/core';\n\ninterface IDataSelectorPanel {\n    name: string;\n    i18n: string;\n    type?: PivotDimensionType;\n    dataKey: string;\n    icon: string;\n    itemKey: string;\n    displayKey?: string;\n    sortable: boolean;\n    dragChannels: string[];\n}\n\n/* blazorIndirectRender\n   blazorComponent */\n/* wcElementTag: igc-pivot-data-selector */\n/**\n * Pivot Data Selector provides means to configure the pivot state of the Pivot Grid via a vertical panel UI\n *\n * @igxModule IgxPivotGridModule\n * @igxGroup Grids & Lists\n * @igxKeywords data selector, pivot, grid\n * @igxTheme pivot-data-selector-theme\n * @remarks\n * The Ignite UI Data Selector has a searchable list with the grid data columns,\n * there are also four expandable areas underneath for filters, rows, columns, and values\n * is used for grouping and aggregating simple flat data into a pivot table.\n * @example\n * ```html\n * <igx-pivot-grid #grid1 [data]=\"data\" [pivotConfiguration]=\"configuration\">\n * </igx-pivot-grid>\n * <igx-pivot-data-selector [grid]=\"grid1\"></igx-pivot-data-selector>\n * ```\n */\n@Component({\n    selector: \"igx-pivot-data-selector\",\n    templateUrl: \"./pivot-data-selector.component.html\",\n    imports: [IgxInputGroupComponent, IgxIconComponent, IgxPrefixDirective, IgxInputDirective, IgxListComponent, IgxListItemComponent, IgxCheckboxComponent, IgxAccordionComponent, IgxExpansionPanelComponent, IgxExpansionPanelHeaderComponent, IgxDropDirective, IgxExpansionPanelTitleDirective, IgxChipComponent, IgxExpansionPanelBodyComponent, IgxDragDirective, IgxDropDownItemNavigationDirective, IgxDragHandleDirective, IgxDropDownComponent, IgxDropDownItemComponent, IgxFilterPivotItemsPipe]\n})\nexport class IgxPivotDataSelectorComponent {\n    private renderer = inject(Renderer2);\n    private cdr = inject(ChangeDetectorRef);\n\n\n    /**\n     * Gets/sets whether the columns panel is expanded\n     * Get\n     * ```typescript\n     *  const columnsPanelState: boolean = this.dataSelector.columnsExpanded;\n     * ```\n     * Set\n     * ```html\n     * <igx-pivot-data-selector [grid]=\"grid1\" [columnsExpanded]=\"columnsPanelState\"></igx-pivot-data-selector>\n     * ```\n     *\n     * Two-way data binding:\n     * ```html\n     * <igx-pivot-data-selector [grid]=\"grid1\" [(columnsExpanded)]=\"columnsPanelState\"></igx-pivot-data-selector>\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    public columnsExpanded = true;\n\n    /**\n     * Emitted when the columns panel is expanded or collapsed.\n     *\n     * @example\n     * ```html\n     * <igx-pivot-data-selector #grid [data]=\"localData\" [height]=\"'305px'\"\n     *              (columnsExpandedChange)=\"columnsExpandedChange($event)\"></igx-pivot-data-selector>\n     * ```\n    */\n    @Output()\n    public columnsExpandedChange = new EventEmitter<boolean>();\n\n    /**\n     * Gets/sets whether the rows panel is expanded\n     * Get\n     * ```typescript\n     *  const rowsPanelState: boolean = this.dataSelector.rowsExpanded;\n     * ```\n     * Set\n     * ```html\n     * <igx-pivot-data-selector [grid]=\"grid1\" [rowsExpanded]=\"rowsPanelState\"></igx-pivot-data-selector>\n     * ```\n     *\n     * Two-way data binding:\n     * ```html\n     * <igx-pivot-data-selector [grid]=\"grid1\" [(rowsExpanded)]=\"rowsPanelState\"></igx-pivot-data-selector>\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    public rowsExpanded = true;\n\n    /**\n     * Emitted when the rows panel is expanded or collapsed.\n     *\n     * @example\n     * ```html\n     * <igx-pivot-data-selector #grid [data]=\"localData\" [height]=\"'305px'\"\n     *              (rowsExpandedChange)=\"rowsExpandedChange($event)\"></igx-pivot-data-selector>\n     * ```\n    */\n    @Output()\n    public rowsExpandedChange = new EventEmitter<boolean>();\n\n    /**\n     * Gets/sets whether the filters panel is expanded\n     * Get\n     * ```typescript\n     *  const filtersPanelState: boolean = this.dataSelector.filtersExpanded;\n     * ```\n     * Set\n     * ```html\n     * <igx-pivot-data-selector [grid]=\"grid1\" [filtersExpanded]=\"filtersPanelState\"></igx-pivot-data-selector>\n     * ```\n     *\n     * Two-way data binding:\n     * ```html\n     * <igx-pivot-data-selector [grid]=\"grid1\" [(filtersExpanded)]=\"filtersPanelState\"></igx-pivot-data-selector>\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    public filtersExpanded = true;\n\n    /**\n     * Emitted when the filters panel is expanded or collapsed.\n     *\n     * @example\n     * ```html\n     * <igx-pivot-data-selector #grid [data]=\"localData\" [height]=\"'305px'\"\n     *              (filtersExpandedChange)=\"filtersExpandedChange($event)\"></igx-pivot-data-selector>\n     * ```\n    */\n    @Output()\n    public filtersExpandedChange = new EventEmitter<boolean>();\n\n    /**\n     * Gets/sets whether the values panel is expanded\n     * Get\n     * ```typescript\n     *  const valuesPanelState: boolean = this.dataSelector.valuesExpanded;\n     * ```\n     * Set\n     * ```html\n     * <igx-pivot-data-selector [grid]=\"grid1\" [valuesExpanded]=\"valuesPanelState\"></igx-pivot-data-selector>\n     * ```\n     *\n     * Two-way data binding:\n     * ```html\n     * <igx-pivot-data-selector [grid]=\"grid1\" [(valuesExpanded)]=\"valuesPanelState\"></igx-pivot-data-selector>\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    public valuesExpanded = true;\n\n    /**\n     * Emitted when the values panel is expanded or collapsed.\n     *\n     * @example\n     * ```html\n     * <igx-pivot-data-selector #grid [data]=\"localData\" [height]=\"'305px'\"\n     *              (valuesExpandedChange)=\"valuesExpandedChange($event)\"></igx-pivot-data-selector>\n     * ```\n    */\n    @Output()\n    public valuesExpandedChange = new EventEmitter<boolean>();\n\n    private _grid: PivotGridType;\n    private _dropDelta = 0;\n\n    /** @hidden @internal **/\n    @HostBinding(\"class.igx-pivot-data-selector\")\n    public cssClass = \"igx-pivot-data-selector\";\n\n    @HostBinding(\"style.--ig-size\")\n    protected get size(): ɵSize {\n        return this.grid?.gridSize;\n    }\n\n    /** @hidden @internal **/\n    public dimensions: IPivotDimension[];\n\n    private _subMenuPositionSettings: PositionSettings = {\n        verticalStartPoint: VerticalAlignment.Bottom,\n        closeAnimation: undefined,\n    };\n\n    private _subMenuOverlaySettings: OverlaySettings = {\n        closeOnOutsideClick: true,\n        modal: false,\n        positionStrategy: new AutoPositionStrategy(\n            this._subMenuPositionSettings\n        ),\n        scrollStrategy: new AbsoluteScrollStrategy(),\n    };\n\n    /* blazorSuppress */\n    public animationSettings = {\n        closeAnimation: useAnimation(fadeOut, {\n            params: {\n                duration: \"0ms\",\n            },\n        }),\n        openAnimation: useAnimation(fadeIn, {\n            params: {\n                duration: \"0ms\",\n            },\n        }),\n    };\n\n    /** @hidden @internal */\n    public aggregateList: IPivotAggregator[] = [];\n    /** @hidden @internal */\n    public value: IPivotValue;\n    /** @hidden @internal */\n    public ghostText: string;\n    /** @hidden @internal */\n    public ghostWidth: number;\n    /** @hidden @internal */\n    public dropAllowed: boolean;\n    /** @hidden @internal */\n    public get dims(): IPivotDimension[] {\n        return this._grid?.allDimensions || [];\n    }\n    /** @hidden @internal */\n    public get values(): IPivotValue[] {\n        return this._grid?.pivotConfiguration.values || [];\n    }\n\n    /**\n     * @hidden @internal\n     */\n    public _panels: IDataSelectorPanel[] = [\n        {\n            name: \"Filters\",\n            i18n: 'igx_grid_pivot_selector_filters',\n            type: PivotDimensionType.Filter,\n            dataKey: \"filterDimensions\",\n            icon: \"filter_list\",\n            itemKey: \"memberName\",\n            displayKey: 'displayName',\n            sortable: false,\n            dragChannels: [\"Filters\", \"Columns\", \"Rows\"]\n        },\n        {\n            name: \"Columns\",\n            i18n: 'igx_grid_pivot_selector_columns',\n            type: PivotDimensionType.Column,\n            dataKey: \"columnDimensions\",\n            icon: \"view_column\",\n            itemKey: \"memberName\",\n            displayKey: 'displayName',\n            sortable: true,\n            dragChannels: [\"Filters\", \"Columns\", \"Rows\"]\n        },\n        {\n            name: \"Rows\",\n            i18n: 'igx_grid_pivot_selector_rows',\n            type: PivotDimensionType.Row,\n            dataKey: \"rowDimensions\",\n            icon: \"table_rows\",\n            itemKey: \"memberName\",\n            displayKey: 'displayName',\n            sortable: true,\n            dragChannels: [\"Filters\", \"Columns\", \"Rows\"]\n        },\n        {\n            name: \"Values\",\n            i18n: 'igx_grid_pivot_selector_values',\n            type: null,\n            dataKey: \"values\",\n            icon: \"functions\",\n            itemKey: \"member\",\n            displayKey: 'displayName',\n            sortable: false,\n            dragChannels: [\"Values\"]\n        },\n    ];\n\n\n    /* treatAsRef */\n    /**\n     * Sets the grid.\n     */\n    @Input()\n    public set grid(value: PivotGridType) {\n        this._grid = value;\n    }\n\n    /* treatAsRef */\n    /**\n     * Returns the grid.\n     */\n    public get grid(): PivotGridType {\n        return this._grid;\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public onItemSort(\n        _: Event,\n        dimension: IPivotDimension,\n        dimensionType: PivotDimensionType\n    ) {\n        if (\n            !this._panels.find(\n                (panel: IDataSelectorPanel) => panel.type === dimensionType\n            ).sortable\n        )\n            return;\n\n        const startDirection = dimension.sortDirection || SortingDirection.None;\n        const direction = startDirection + 1 > SortingDirection.Desc ?\n            SortingDirection.None : startDirection + 1;\n        this.grid.sortDimension(dimension, direction);\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public onFilteringIconPointerDown(event: PointerEvent) {\n        event.stopPropagation();\n        event.preventDefault();\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public onFilteringIconClick(event: MouseEvent, dimension: IPivotDimension) {\n        event.stopPropagation();\n        event.preventDefault();\n\n        let dim = dimension;\n        let col: ColumnType;\n\n        while (dim) {\n            col = this.grid.dimensionDataColumns.find(\n                (x) => x.field === dim.memberName\n            );\n            if (col) {\n                break;\n            } else {\n                dim = dim.childLevel;\n            }\n        }\n\n        this.grid.filteringService.toggleFilterDropdown(event.target, col);\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    protected getDimensionState(dimensionType: PivotDimensionType) {\n        switch (dimensionType) {\n            case PivotDimensionType.Row:\n                return this.grid.rowDimensions;\n            case PivotDimensionType.Column:\n                return this.grid.columnDimensions;\n            case PivotDimensionType.Filter:\n                return this.grid.filterDimensions;\n            default:\n                return null;\n        }\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    protected moveValueItem(itemId: string) {\n        const aggregation = this.grid.pivotConfiguration.values;\n        const valueIndex =\n            aggregation.findIndex((x) => x.member === itemId) !== -1\n                ? aggregation?.findIndex((x) => x.member === itemId)\n                : aggregation.length;\n        const newValueIndex =\n            valueIndex + this._dropDelta < 0 ? 0 : valueIndex + this._dropDelta;\n\n        const aggregationItem = aggregation.find(\n            (x) => x.member === itemId || x.displayName === itemId\n        );\n\n        if (aggregationItem) {\n            this.grid.moveValue(aggregationItem, newValueIndex);\n            this.grid.valuesChange.emit({\n                values: this.grid.pivotConfiguration.values,\n            });\n        }\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public onItemDropped(\n        event: IDropDroppedEventArgs,\n        dimensionType: PivotDimensionType\n    ) {\n        if (!this.dropAllowed) {\n            return;\n        }\n\n        const dimension = this.grid.getDimensionsByType(dimensionType);\n        const dimensionState = this.getDimensionState(dimensionType);\n        const itemId = event.drag.element.nativeElement.id;\n        const targetId = event.owner.element.nativeElement.id;\n        const dimensionItem = dimension?.find((x) => x.memberName === itemId);\n        const itemIndex =\n            dimension?.findIndex((x) => x?.memberName === itemId) !== -1\n                ? dimension?.findIndex((x) => x.memberName === itemId)\n                : dimension?.length;\n        const dimensions = this.grid.allDimensions.filter((x) => x && x.memberName === itemId);\n\n        const reorder =\n            dimensionState?.findIndex((item) => item.memberName === itemId) !==\n            -1;\n\n        let targetIndex =\n            targetId !== \"\"\n                ? dimension?.findIndex((x) => x.memberName === targetId)\n                : dimension?.length;\n\n        if (!dimension) {\n            this.moveValueItem(itemId);\n        }\n\n        if (reorder) {\n            targetIndex =\n                itemIndex + this._dropDelta < 0\n                    ? 0\n                    : itemIndex + this._dropDelta;\n        }\n\n        if (dimensionItem) {\n            this.grid.moveDimension(dimensionItem, dimensionType, targetIndex);\n        } else {\n            const newDim = dimensions.find((x) => x.memberName === itemId);\n            this.grid.moveDimension(newDim, dimensionType, targetIndex);\n        }\n\n        this.grid.dimensionsChange.emit({\n            dimensions: dimension,\n            dimensionCollectionType: dimensionType,\n        });\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    protected updateDropDown(\n        value: IPivotValue,\n        dropdown: IgxDropDownComponent\n    ) {\n        this.value = value;\n        dropdown.width = \"200px\";\n        this.aggregateList = PivotUtil.getAggregateList(value, this.grid);\n        this.cdr.detectChanges();\n        dropdown.open(this._subMenuOverlaySettings);\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public onSummaryClick(\n        event: MouseEvent,\n        value: IPivotValue,\n        dropdown: IgxDropDownComponent\n    ) {\n        this._subMenuOverlaySettings.target =\n            event.currentTarget as HTMLElement;\n\n        if (dropdown.collapsed) {\n            this.updateDropDown(value, dropdown);\n        } else {\n            // close for previous chip\n            dropdown.close();\n            dropdown.closed.pipe(first()).subscribe(() => {\n                this.updateDropDown(value, dropdown);\n            });\n        }\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public onAggregationChange(event: ISelectionEventArgs) {\n\n        if (!this.isSelected(event.newSelection.value)) {\n            this.value.aggregate = event.newSelection.value;\n            const isSingleValue = this.grid.values.length === 1;\n\n            PivotUtil.updateColumnTypeByAggregator(this.grid.columns, this.value, isSingleValue);\n\n            this.grid.pipeTrigger++;\n            this.grid.cdr.markForCheck();\n        }\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public isSelected(val: IPivotAggregator) {\n        return this.value.aggregate.key === val.key;\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public ghostCreated(event: IDragGhostBaseEventArgs, value: string) {\n        const { width: itemWidth } =\n            event.owner.element.nativeElement.getBoundingClientRect();\n        this.ghostWidth = itemWidth;\n        this.ghostText = value;\n        this.renderer.setStyle(\n            event.owner.element.nativeElement,\n            \"position\",\n            \"absolute\"\n        );\n        this.renderer.setStyle(\n            event.owner.element.nativeElement,\n            \"visibility\",\n            \"hidden\"\n        );\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public toggleItem(item: IPivotDimension | IPivotValue) {\n        if (item as IPivotValue) {\n            this.grid.toggleValue(item as IPivotValue);\n        }\n\n        if (item as IPivotDimension) {\n            this.grid.toggleDimension(item as IPivotDimension);\n        }\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public onPanelEntry(event: IDropBaseEventArgs, panel: string) {\n        this.dropAllowed = event.dragData.gridID === this.grid.id && event.dragData.selectorChannels?.some(\n            (channel: string) => channel === panel\n        );\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public onItemDragMove(event: IDragMoveEventArgs) {\n        const clientRect =\n            event.owner.element.nativeElement.getBoundingClientRect();\n        this._dropDelta = Math.round(\n            (event.nextPageY - event.startY) / clientRect.height\n        );\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public onItemDragEnd(event: IDragBaseEventArgs) {\n        this.renderer.setStyle(\n            event.owner.element.nativeElement,\n            \"position\",\n            \"static\"\n        );\n        this.renderer.setStyle(\n            event.owner.element.nativeElement,\n            \"visibility\",\n            \"visible\"\n        );\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public onItemDragOver(event: IDropBaseEventArgs) {\n        if (this.dropAllowed) {\n            this.renderer.addClass(\n                event.owner.element.nativeElement,\n                \"igx-drag--push\"\n            );\n        }\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public onItemDragLeave(event: IDropBaseEventArgs) {\n        if (this.dropAllowed) {\n            this.renderer.removeClass(\n                event.owner.element.nativeElement,\n                \"igx-drag--push\"\n            );\n        }\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public getPanelCollapsed(panelType: PivotDimensionType): boolean {\n        switch (panelType) {\n            case PivotDimensionType.Column:\n                return !this.columnsExpanded;\n            case PivotDimensionType.Filter:\n                return !this.filtersExpanded;\n            case PivotDimensionType.Row:\n                return !this.rowsExpanded;\n            default:\n                return !this.valuesExpanded;\n        }\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public onCollapseChange(value: boolean, panelType: PivotDimensionType): void {\n        switch (panelType) {\n            case PivotDimensionType.Column:\n                this.columnsExpanded = !value;\n                this.columnsExpandedChange.emit(this.columnsExpanded);\n                break;\n            case PivotDimensionType.Filter:\n                this.filtersExpanded = !value;\n                this.filtersExpandedChange.emit(this.filtersExpanded);\n                break;\n            case PivotDimensionType.Row:\n                this.rowsExpanded = !value;\n                this.rowsExpandedChange.emit(this.rowsExpanded);\n                break;\n            default:\n                this.valuesExpanded = !value;\n                this.valuesExpandedChange.emit(this.valuesExpanded)\n        }\n    }\n}\n","<div class=\"igx-pivot-data-selector__filter\">\n    <igx-input-group type=\"box\">\n        <igx-icon family=\"default\" name=\"search\" igxPrefix></igx-icon>\n        <input\n            #input\n            igxInput\n            tabindex=\"0\"\n            placeholder=\"Search\"\n            autocomplete=\"off\"\n        />\n    </igx-input-group>\n    <igx-list>\n        @for (\n            item of dims | filterPivotItems: input.value:grid?.pipeTrigger;\n            track item.memberName\n        ) {\n            <igx-list-item [id]=\"item.memberName\">\n                <igx-checkbox\n                    [aria-labelledby]=\"item.memberName\"\n                    [disableRipple]=\"true\"\n                    [checked]=\"item.enabled\"\n                    (click)=\"toggleItem(item)\"\n                ></igx-checkbox>\n                <span>{{ item.displayName || item.memberName }}</span>\n            </igx-list-item>\n        }\n        @for (\n            item of values | filterPivotItems: input.value:grid?.pipeTrigger;\n            track item\n        ) {\n            <igx-list-item [id]=\"item.member\">\n                <igx-checkbox\n                    [aria-labelledby]=\"item.member\"\n                    [disableRipple]=\"true\"\n                    [checked]=\"item.enabled\"\n                    (click)=\"toggleItem(item)\"\n                ></igx-checkbox>\n                <span>{{ item.displayName || item.member }}</span>\n            </igx-list-item>\n        }\n    </igx-list>\n</div>\n\n<igx-accordion>\n    @for (panel of _panels; track panel) {\n        <igx-expansion-panel\n            [animationSettings]=\"animationSettings\"\n            [collapsed]=\"getPanelCollapsed(panel.type)\"\n            (collapsedChange)=\"onCollapseChange($event, panel.type)\"\n        >\n            <igx-expansion-panel-header\n                iconPosition=\"left\"\n                [disabled]=\"false\"\n                igxDrop\n                (enter)=\"onPanelEntry($event, panel.name)\"\n                (dropped)=\"onItemDropped($event, panel.type)\"\n            >\n                <igx-expansion-panel-title class=\"igx-pivot-data-selector__header\">\n                    <h6 class=\"igx-pivot-data-selector__header-title\">\n                        {{ grid?.resourceStrings[panel.i18n] }}\n                    </h6>\n                    <div class=\"igx-pivot-data-selector__header-extra\">\n                        <igx-icon family=\"default\" [name]=\"panel.icon\"></igx-icon>\n                        <igx-chip>{{ this.grid ? this.grid[panel.dataKey].length : 0 }}</igx-chip>\n                    </div>\n                </igx-expansion-panel-title>\n            </igx-expansion-panel-header>\n            <igx-expansion-panel-body\n                igxDrop\n                (enter)=\"onPanelEntry($event, panel.name)\"\n                (dropped)=\"onItemDropped($event, panel.type)\"\n            >\n                @if (this.grid && this.grid[panel.dataKey].length > 0) {\n                    <igx-list>\n                        @for (\n                            item of this.grid[panel.dataKey];\n                            track (item.memberName || item.member)\n                        ) {\n                            <igx-list-item\n                                igxDrop\n                                [igxDrag]=\"{ gridID: grid.id, selectorChannels: panel.dragChannels }\"\n                                [ghostTemplate]=\"itemGhost\"\n                                (ghostCreate)=\"ghostCreated($event, item[panel.itemKey])\"\n                                (over)=\"onItemDragOver($event)\"\n                                (leave)=\"onItemDragLeave($event)\"\n                                (dragMove)=\"onItemDragMove($event)\"\n                                (dragEnd)=\"onItemDragEnd($event)\"\n                                (dropped)=\"onItemDropped($event, panel.type)\"\n                                [id]=\"item[panel.itemKey]\"\n                            >\n                                <div class=\"igx-pivot-data-selector__item\">\n                                    <div\n                                        class=\"igx-pivot-data-selector__item-start\"\n                                        (click)=\"onItemSort($event, item, panel.type)\"\n                                        [class.igx-pivot-data-selector__action-sort]=\"\n                                            panel.sortable\n                                        \"\n                                    >\n                                        <div class=\"igx-pivot-data-selector__item-text\">\n                                            @if (panel.type === null) {\n                                                <span>{{\n                                                    item.aggregate.key\n                                                }}</span>\n                                            }\n                                            @if (panel.type === null) {\n                                                <span>(</span>\n                                            }\n                                            <span>{{ item[panel.displayKey] || item[panel.itemKey] }}</span>\n                                            @if (panel.type === null) {\n                                                <span>)</span>\n                                            }\n                                        </div>\n                                        @if (panel.sortable && item.sortDirection) {\n                                            <igx-icon\n                                                family=\"default\"\n                                                [name]=\"item.sortDirection < 2 ? 'sort_asc' : 'sort_desc'\"\n                                                class=\"igx-pivot-data-selector__action-sort\"\n                                            >\n                                            </igx-icon>\n                                        }\n                                    </div>\n                                    <div class=\"igx-pivot-data-selector__item-end\">\n                                        @if (panel.type !== null) {\n                                            <igx-icon\n                                                family=\"default\"\n                                                name=\"filter_list\"\n                                                class=\"igx-pivot-data-selector__action-filter\"\n                                                (pointerdown)=\"onFilteringIconPointerDown($event)\"\n                                                (click)=\"onFilteringIconClick($event, item)\">\n                                            </igx-icon>\n                                        }\n                                        @if (panel.type === null) {\n                                            <igx-icon\n                                                family=\"default\"\n                                                name=\"functions\"\n                                                class=\"igx-pivot-data-selector__action-summary\"\n                                                (click)=\"onSummaryClick($event, item, dropdown)\"\n                                                [igxDropDownItemNavigation]=\"dropdown\">\n                                            </igx-icon>\n                                        }\n                                        @if (panel.dragChannels.length > 0) {\n                                            <igx-icon\n                                                family=\"default\"\n                                                name=\"drag_indicator\"\n                                                igxDragHandle\n                                                class=\"igx-pivot-data-selector__action-move\"\n                                            >\n                                            </igx-icon>\n                                        }\n                                    </div>\n                                </div>\n                            </igx-list-item>\n                        }\n                    </igx-list>\n                    }\n                    @if (this.grid && this.grid[panel.dataKey].length === 0) {\n                        <div class=\"igx-pivot-data-selector__empty\">\n                            {{ grid?.resourceStrings.igx_grid_pivot_selector_panel_empty }}\n                        </div>\n                    }\n            </igx-expansion-panel-body>\n        </igx-expansion-panel>\n    }\n</igx-accordion>\n\n<igx-drop-down #dropdown (selectionChanging)=\"onAggregationChange($event)\">\n    @for (item of aggregateList; track item) {\n        <igx-drop-down-item\n            [selected]=\"isSelected(item)\"\n            [value]=\"item\"\n        >\n            {{ item.label }}\n        </igx-drop-down-item>\n    }\n</igx-drop-down>\n\n<ng-template #itemGhost>\n    <div\n        class=\"igx-pivot-data-selector__item-ghost\"\n        [style.width.px]=\"ghostWidth\"\n        [class.igx-pivot-data-selector__item-ghost--no-drop]=\"!dropAllowed\"\n    >\n        <div class=\"igx-pivot-data-selector__item-ghost-text\">\n            <igx-icon family=\"default\" name=\"import_export\"></igx-icon>\n            <span>{{ ghostText }}</span>\n        </div>\n        <igx-icon family=\"default\" name=\"drag_indicator\"></igx-icon>\n    </div>\n</ng-template>\n","import { NgModule } from \"@angular/core\";\nimport { IgxPivotDataSelectorComponent } from './pivot-data-selector.component';\nimport { IgxPivotGridComponent } from './pivot-grid.component';\nimport { IgxPivotValueChipTemplateDirective } from './pivot-grid.directives';\n\n/* Imports that cannot be resolved from IGX_GRID_COMMON_DIRECTIVES spread\n    NOTE: Do not remove! Issue: https://github.com/IgniteUI/igniteui-angular/issues/13310\n*/\nimport {\n    IgxRowDirective,\n    IgxGridFooterComponent,\n    IgxAdvancedFilteringDialogComponent,\n    IgxHeaderCollapsedIndicatorDirective,\n    IgxHeaderExpandedIndicatorDirective,\n    IgxRowCollapsedIndicatorDirective,\n    IgxRowExpandedIndicatorDirective,\n    IgxSortAscendingHeaderIconDirective,\n    IgxSortDescendingHeaderIconDirective,\n    IgxSortHeaderIconDirective,\n    IgxExcelStyleHeaderIconDirective,\n    IgxDragIndicatorIconDirective,\n    IgxRowDragGhostDirective,\n    IgxGridStateDirective,\n    IgxGridHeaderComponent,\n    IgxGridHeaderGroupComponent,\n    IgxGridHeaderRowComponent,\n    IgxFilterCellTemplateDirective,\n    IgxSummaryTemplateDirective,\n    IgxCellTemplateDirective,\n    IgxCellValidationErrorDirective,\n    IgxCellHeaderTemplateDirective,\n    IgxCellFooterTemplateDirective,\n    IgxCellEditorTemplateDirective,\n    IgxCollapsibleIndicatorTemplateDirective,\n    IgxColumnComponent,\n    IgxColumnGroupComponent,\n    IgxColumnLayoutComponent,\n    IgxColumnActionsComponent,\n    IgxColumnHidingDirective,\n    IgxColumnPinningDirective,\n    IgxRowSelectorDirective,\n    IgxGroupByRowSelectorDirective,\n    IgxHeadSelectorDirective,\n    IgxCSVTextDirective,\n    IgxExcelTextDirective,\n    IgxGridToolbarActionsComponent,\n    IgxGridToolbarAdvancedFilteringComponent,\n    IgxGridToolbarComponent,\n    IgxGridToolbarExporterComponent,\n    IgxGridToolbarHidingComponent,\n    IgxGridToolbarPinningComponent,\n    IgxGridToolbarTitleComponent,\n    IgxGridToolbarDirective,\n    IgxGridExcelStyleFilteringComponent,\n    IgxExcelStyleHeaderComponent,\n    IgxExcelStyleSortingComponent,\n    IgxExcelStylePinningComponent,\n    IgxExcelStyleHidingComponent,\n    IgxExcelStyleSelectingComponent,\n    IgxExcelStyleClearFiltersComponent,\n    IgxExcelStyleConditionalFilterComponent,\n    IgxExcelStyleMovingComponent,\n    IgxExcelStyleSearchComponent,\n    IgxExcelStyleColumnOperationsTemplateDirective,\n    IgxExcelStyleFilterOperationsTemplateDirective,\n    IgxExcelStyleLoadingValuesTemplateDirective,\n    IgxGridActionButtonComponent,\n    IgxGridActionsBaseDirective,\n    IgxGridEditingActionsComponent,\n    IgxGridPinningActionsComponent\n} from \"igniteui-angular/grids/core\";\n\n/* NOTE: Pivot grid directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_PIVOT_GRID_DIRECTIVES = [\n    IgxPivotGridComponent,\n    IgxPivotDataSelectorComponent,\n    IgxPivotValueChipTemplateDirective,\n    // IGX_GRID_COMMON_DIRECTIVES:\n    IgxRowDirective,\n    IgxGridFooterComponent,\n    IgxAdvancedFilteringDialogComponent,\n    IgxRowExpandedIndicatorDirective,\n    IgxRowCollapsedIndicatorDirective,\n    IgxHeaderExpandedIndicatorDirective,\n    IgxHeaderCollapsedIndicatorDirective,\n    IgxExcelStyleHeaderIconDirective,\n    IgxSortAscendingHeaderIconDirective,\n    IgxSortDescendingHeaderIconDirective,\n    IgxSortHeaderIconDirective,\n    IgxDragIndicatorIconDirective,\n    IgxRowDragGhostDirective,\n    IgxGridStateDirective,\n    // IGX_GRID_ACTIONS\n    IgxGridPinningActionsComponent,\n    IgxGridEditingActionsComponent,\n    IgxGridActionsBaseDirective,\n    IgxGridActionButtonComponent,\n    // IGX_GRID_HEADERS_DIRECTIVES:\n    IgxGridHeaderComponent,\n    IgxGridHeaderGroupComponent,\n    IgxGridHeaderRowComponent,\n    // IGX_GRID_COLUMN_DIRECTIVES:\n    IgxFilterCellTemplateDirective,\n    IgxSummaryTemplateDirective,\n    IgxCellTemplateDirective,\n    IgxCellValidationErrorDirective,\n    IgxCellHeaderTemplateDirective,\n    IgxCellFooterTemplateDirective,\n    IgxCellEditorTemplateDirective,\n    IgxCollapsibleIndicatorTemplateDirective,\n    IgxColumnComponent,\n    IgxColumnGroupComponent,\n    IgxColumnLayoutComponent,\n    // IGX_GRID_COLUMN_ACTIONS_DIRECTIVES:\n    IgxColumnActionsComponent,\n    IgxColumnHidingDirective,\n    IgxColumnPinningDirective,\n    // IGX_GRID_SELECTION_DIRECTIVES:\n    IgxRowSelectorDirective,\n    IgxGroupByRowSelectorDirective,\n    IgxHeadSelectorDirective,\n    // IGX_GRID_TOOLBAR_DIRECTIVES:\n    IgxCSVTextDirective,\n    IgxExcelTextDirective,\n    IgxGridToolbarActionsComponent,\n    IgxGridToolbarAdvancedFilteringComponent,\n    IgxGridToolbarComponent,\n    IgxGridToolbarExporterComponent,\n    IgxGridToolbarHidingComponent,\n    IgxGridToolbarPinningComponent,\n    IgxGridToolbarTitleComponent,\n    IgxGridToolbarDirective,\n    // IGX_GRID_EXCEL_STYLE_FILTER_DIRECTIVES:\n    IgxGridExcelStyleFilteringComponent,\n    IgxExcelStyleHeaderComponent,\n    IgxExcelStyleSortingComponent,\n    IgxExcelStylePinningComponent,\n    IgxExcelStyleHidingComponent,\n    IgxExcelStyleSelectingComponent,\n    IgxExcelStyleClearFiltersComponent,\n    IgxExcelStyleConditionalFilterComponent,\n    IgxExcelStyleMovingComponent,\n    IgxExcelStyleSearchComponent,\n    IgxExcelStyleColumnOperationsTemplateDirective,\n    IgxExcelStyleFilterOperationsTemplateDirective,\n    IgxExcelStyleLoadingValuesTemplateDirective\n] as const;\n\n/**\n * @hidden\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n    imports: [\n        ...IGX_PIVOT_GRID_DIRECTIVES\n    ],\n    exports: [\n        ...IGX_PIVOT_GRID_DIRECTIVES\n    ]\n})\nexport class IgxPivotGridModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["ɵSize"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAYA;;AAEG;AAOG,MAAO,mCAAoC,SAAQ,sBAAsB,CAAA;AAM3E,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AANK,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,6BAA6B,CAAC;AACnE,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,EAAC,UAAuB,EAAC;AAOhD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAqB;QAC3C,IAAI,CAAC,SAAS,CAAC;AACV,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;aAC9B,SAAS,CAAC,CAAC,CAAuB,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;IACpE;IAEO,eAAe,GAAA;QAClB,IAAI,CAAC,YAAY,EAAE;IACvB;AAGgB,IAAA,OAAO,CAAC,KAAiB,EAAA;QACrC,KAAK,CAAC,cAAc,EAAE;IAC1B;AAEA;;AAEG;AACH,IAAA,IAAoB,UAAU,GAAA;AAC1B,QAAA,OAAO,KAAK;IAChB;AAEA;;AAEG;AACa,IAAA,kBAAkB,CAAC,KAAK,EAAA;QACpC,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QACnE,MAAM,cAAc,GAAG,GAAG,CAAC,aAAa,IAAI,gBAAgB,CAAC,IAAI;QACjE,MAAM,SAAS,GAAG,cAAc,GAAG,CAAC,GAAG,gBAAgB,CAAC,IAAI;YACxD,gBAAgB,CAAC,IAAI,GAAG,cAAc,GAAG,CAAC;QAC9C,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC;IAChD;IAEmB,gBAAgB,GAAA;AAC/B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QACnE,IAAI,CAAC,aAAa,GAAG,GAAG,EAAE,aAAa,IAAI,gBAAgB,CAAC,IAAI;IACpE;IAEU,YAAY,GAAA;QAClB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAChD,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,KAAK,kBAAkB,CAAC,QAAQ;AACpF,gBAAA,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI;gBACtC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC;YACzD,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,UAAU,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAC3F,YAAA,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC;AACjC,YAAA,IAAI,YAAY,GAAG,CAAC,CAAC;AACrB,YAAA,IAAI,GAAG,CAAC,aAAa,EAAE;gBACnB,IAAI,eAAe,GAAG,CAAC;AACvB,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;AAC/B,oBAAA,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE;AAC9B,wBAAA,eAAe,EAAE;oBACrB;gBACJ;;AAGA,gBAAA,YAAY,GAAG,eAAe,GAAG,CAAC;YACtC;YAEA,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,YAAY,CAAC,gBAAgB,EAAE,YAAY,IAAI,CAAC,GAAG,YAAY,GAAG,EAAE,CAAC;QAC9G;IACJ;8GAtES,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnC,mCAAmC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBhD,ipDAoCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjBc,gBAAgB,yGAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAE9D,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAN/C,SAAS;AACW,YAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,gCAAgC,EAAA,OAAA,EAEjC,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,ipDAAA,EAAA;;sBAqBvE,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;AEtBrC;;AAEG;AAOG,MAAO,+BAAgC,SAAQ,2BAA2B,CAAA;AANhF,IAAA,WAAA,GAAA;;AAOoB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAgB,aAAa,CAAC;AAC3C,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,6BAA6B,CAAC;AAE1E;;AAEG;QAEI,IAAA,CAAA,UAAU,GAAG,MAAM;AA0H7B,IAAA;AAxHG;;AAEG;AACH,IAAA,IAAW,IAAI,GAAA;AACX,QAAA,OAAO,cAAc;IACzB;IASA,IACW,QAAQ,CAAC,KAAa,EAAA;QAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI;IACpC;AACA,IAAA,IAAW,QAAQ,GAAA;QACf,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IACxC;AAEA,IAAA,IAAW,MAAM,GAAA;AACb,QAAA,OAAO,IAAI;IACf;;AAQA,IAAA,IACoB,QAAQ,GAAA;AACxB,QAAA,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA,IAAA,EAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAA,CAAA,EAAI,IAAI,CAAC,YAAY,EAAE;IACrF;AAEA,IAAA,IACoB,KAAK,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW;IACzC;AAEA;;;AAGG;AACH,IAAA,IAAW,YAAY,GAAA;AACnB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB;QAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;IAC3C;AAEA,IAAA,IACoB,MAAM,GAAA;AACtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU;AAChC,QAAA,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU;QAC3B,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW;AACnC,YAAA,GAAG,CAAC,0BAA0B;AAC9B,gBAAA,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,QAAQ;AAC1B,gBAAA,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY;AACjC,YAAA,KAAK;IACb;AAEA,IAAA,IACW,kBAAkB,GAAA;QACzB,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,KAAK,gBAAgB,CAAC,GAAG;IACpE;AAEA,IAAA,IACW,mBAAmB,GAAA;QAC1B,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,KAAK,gBAAgB,CAAC,IAAI;IACrE;AAEA,IAAA,IACW,aAAa,GAAA;AACpB,QAAA,OAAO,IAAI;IACf;AAEA,IAAA,IACW,WAAW,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,KAAK,gBAAgB,CAAC,IAAI;IACvH;AAEA,IAAA,IAAuB,UAAU,GAAA;QAC7B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,0BAA0B,GAAG,IAAI;QACtD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,GAAG,KAAK;QAC9C,OAAO;AACH,YAAA,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI;AAC1D,YAAA,QAAQ,EAAE;AACN,gBAAA,KAAK,EAAE,CAAC;gBACR,YAAY,EAAG,IAAI,CAAC;AACvB,aAAA;AACD,YAAA,MAAM,EAAE;SACX;IACL;IAEgB,QAAQ,GAAA;QACpB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC;IACvD;AAEA;;AAEG;AACa,IAAA,WAAW,CAAC,MAAoB,EAAA;QAC5C,IAAI,CAAC,QAAQ,EAAE;IACnB;AAEA;;AAEG;AACa,IAAA,WAAW,CAAC,MAAkB,EAAA;QAC1C,IAAI,CAAC,QAAQ,EAAE;IACnB;AAEA,IAAA,IAAoB,UAAU,GAAA;AAC1B,QAAA,OAAO,KAAK;IAChB;IAEU,2BAA2B,GAAA;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,GAAG,aAAa,GAAG,IAAI;IACvF;8GAjIS,+BAA+B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,ojBAuC7B,mCAAmC,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClElD,4qDA4CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDnBc,gBAAgB,yGAAE,mCAAmC,EAAA,QAAA,EAAA,gCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,2EAAE,4BAA4B,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,4BAA4B,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,6BAA6B,8HAAE,uBAAuB,EAAA,IAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAE5L,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAN3C,SAAS;sCACW,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,4BAA4B,WAE7B,CAAC,gBAAgB,EAAE,mCAAmC,EAAE,OAAO,EAAE,OAAO,EAAE,4BAA4B,EAAE,4BAA4B,EAAE,6BAA6B,EAAE,uBAAuB,CAAC,EAAA,QAAA,EAAA,4qDAAA,EAAA;;sBASrM,WAAW;uBAAC,mBAAmB;;sBAc/B;;sBAGA;;sBAYA;;sBAGA,SAAS;uBAAC,mCAAmC;;sBAG7C,WAAW;uBAAC,SAAS;;sBAKrB,WAAW;uBAAC,YAAY;;sBAcxB,WAAW;uBAAC,2BAA2B;;sBAWvC,WAAW;uBAAC,WAAW;;sBAKvB,WAAW;uBAAC,YAAY;;sBAKxB,WAAW;uBAAC,6BAA6B;;sBAKzC,WAAW;uBAAC,2BAA2B;;;AEzE5C;;;;;;;AAOG;AAaG,MAAO,0BAA2B,SAAQ,yBAAyB,CAAA;AAZzE,IAAA,WAAA,GAAA;;AAaoB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAgB,aAAa,CAAC;AACjD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;QAE/B,IAAA,CAAA,aAAa,GAAuB,EAAE;AAGtC,QAAA,IAAA,CAAA,wBAAwB,GAAa,IAAI,GAAG,EAAO;AACnD,QAAA,IAAA,CAAA,oBAAoB,GAAa,IAAI,GAAG,EAAO;AAC9C,QAAA,IAAA,CAAA,QAAQ,GAAG,YAAY,CAAC,eAAe;AACvC,QAAA,IAAA,CAAA,wBAAwB,GAAqB;YACjD,kBAAkB,EAAE,iBAAiB,CAAC,MAAM;AAC5C,YAAA,cAAc,EAAE;SACnB;AACO,QAAA,IAAA,CAAA,uBAAuB,GAAoB;AAC/C,YAAA,mBAAmB,EAAE,IAAI;AACzB,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,gBAAgB,EAAE,IAAI,oBAAoB,CAAC,IAAI,CAAC,wBAAwB,CAAC;YACzE,cAAc,EAAE,IAAI,sBAAsB;SAC7C;AA6ED;;;;AAIE;AACK,QAAA,IAAA,CAAA,uBAAuB,GAAU,CAAC,EAAE,CAAC;AAqa/C,IAAA;AAjcG,IAAA,IAAoB,WAAW,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,IAAI;IACtC;AAEA,IAAA,IACoB,gBAAgB,GAAA;AAChC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU;QAC7C,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,yBAAyB,EAAE;AAClG,YAAA,OAAO,IAAI;QACf;AAEA,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,0BAA0B,EAAE;YAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;YAC/E,IAAI,YAAY,EAAE;gBACd,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,IAAI,YAAY,CAAC,aAAa,EAAE,UAAU;AACxE,gBAAA,OAAO,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,CAAA,CAAE,GAAG,IAAI;YAChD;AACA,YAAA,OAAO,IAAI;QACf;QAEA,OAAO,KAAK,CAAC,gBAAgB;IACjC;AASA;;AAEE;AACF,IAAA,IAAW,eAAe,GAAA;QACtB,IAAI,UAAU,GAAG,CAAC;AAClB,QAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE;AACrC,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE;AACjC,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YACtE,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC;AACxE,YAAA,MAAM,iBAAiB,GAAG,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC;AAC1F,YAAA,UAAU,IAAI,iBAAiB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;YACvK,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,IAAG;gBACrC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,EAAE,CAAC;gBAC1E,IAAI,GAAG,EAAE;;AAEL,oBAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,CAAC;oBAC7E,IAAI,UAAU,GAAG,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC1D,wBAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC;oBACtC;yBAAO;AACH,wBAAA,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC;oBAC1C;oBACA,UAAU,IAAI,gBAAgB;gBAClC;AACJ,YAAA,CAAC,CAAC;AACF,YAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,GAAG,CAAC;QACjD;AACA,QAAA,OAAO,KAAK;IAChB;AAEA;;;AAGE;AACF,IAAA,IAAW,UAAU,GAAA;AACjB,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB;AACnD,QAAA,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/B,YAAA,OAAO,CAAC;QACZ;QACA,IAAI,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC;AAC/I,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC7B,UAAU,IAAI,CAAC;QACnB;AACA,QAAA,OAAO,UAAU;IACrB;AAEA;;;AAGE;AACF,IAAA,IAAW,kBAAkB,GAAA;QACzB,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB;IACxD;AAEA;;;AAGE;AACF,IAAA,IAAoB,sBAAsB,GAAA;AACtC,QAAA,OAAO,KAAK,CAAC,sBAAsB,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,0BAA0B;IACpI;AAEA;;;AAGE;IACK,UAAU,CAAC,GAAe,EAAE,KAAa,EAAA;QAC5C,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS;IAC7J;AAEA;;;AAGE;IACK,2BAA2B,CAAC,GAAe,EAAE,GAAW,EAAA;QAC3D,MAAM,gBAAgB,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE;QAC7E,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAEtD,QAAA,OAAO,SAAS;IACpB;AAEA;;;AAGE;IACK,UAAU,CAAC,GAAe,EAAE,GAAW,EAAA;AAC1C,QAAA,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,WAAW;QAC/B,OAAO,MAAM,IAAI,GAAG,KAAK,IAAI,CAAC,UAAU,GAAG,CAAC;IAChD;AAEA;;;AAGE;IACK,+BAA+B,GAAA;QAClC,MAAM,GAAG,GAAG,EAAE;AACd,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE;AACtC,YAAA,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE;QACf;AACA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,wBAAwB;;QAE1C,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;AAC1E,QAAA,IAAI,CAAC,uBAAuB,GAAG,GAAG;IACtC;AAEU,IAAA,4BAA4B,CAAC,mBAAiC,EAAE,KAAK,GAAG,CAAC,EAAE,GAAU,EAAA;AAC3F,QAAA,mBAAmB,CAAC,OAAO,CAAC,GAAG,IAAG;AAC9B,YAAA,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE;gBACZ,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACpB,gBAAA,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC5C,MAAM,cAAc,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;oBACpE,IAAI,CAAC,4BAA4B,CAAC,cAAc,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC;gBACrE;qBAAO,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE;AACpC,oBAAA,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;wBACnD,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;oBACpB;gBACJ;YACJ;AACJ,QAAA,CAAC,CAAC;IACN;AAEA;;;AAGE;AACK,IAAA,WAAW,CAAC,OAAsB,EAAA;AACrC,QAAA,IAAI,OAAO,CAAC,wBAAwB,EAAE;YAClC,IAAI,CAAC,+BAA+B,EAAE;QAC1C;IACJ;AAEA;;;AAGE;IACK,cAAc,CAAC,KAAK,EAAE,IAAI,EAAA;AAC7B,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AACxB,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACvC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa;AAC/C,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7C,gBAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;AAC1B,gBAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,EAAE;AACxC,gBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,KAAK;AACjC,gBAAA,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;YAC1E;QACJ;IACJ;AAEA;;;AAGE;IACK,YAAY,GAAA;AACf,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACvC,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI;QACpC;IACJ;AAEA;;;AAGE;AACK,IAAA,aAAa,CAAC,IAA2B,EAAA;AAC5C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS;QAC5B,OAAO,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,GAAG,CAAC;IACjF;AAEA;;;AAGE;AACK,IAAA,UAAU,CAAC,KAAyB,EAAA;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;AACxF,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;IAClC;AAEA;;;AAGE;AACK,IAAA,aAAa,CAAC,KAAyB,EAAA;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;AAC3F,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;IAClC;AAEA;;;AAGE;AACK,IAAA,YAAY,CAAC,KAAyB,EAAA;AACzC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,WAAW,KAAK,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;AAC5H,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IAChC;AAEA;;;AAGE;AACK,IAAA,aAAa,CAAC,KAAyB,EAAA;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;AAC9F,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;QACjC,IAAI,IAAI,CAAC,wBAAwB,CAAC,IAAI,GAAG,CAAC,EAAE;AACxC,YAAA,IAAI,CAAC,0BAA0B,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC;QACtG;aAAO;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;QACxC;IACJ;AAEO,IAAA,yBAAyB,CAAC,KAA0B,EAAA;QACvD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,IAAG;YACxC,IAAI,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE;AAC5B,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;YACzB;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,0BAA0B,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,KAAK,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;IACtK;AAEA;;;AAGE;AACK,IAAA,0BAA0B,CAAC,KAAK,EAAA;QACnC,KAAK,CAAC,eAAe,EAAE;QACvB,KAAK,CAAC,cAAc,EAAE;IAC1B;AAEA;;;AAGE;IACK,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAA;QACxC,KAAK,CAAC,eAAe,EAAE;QACvB,KAAK,CAAC,cAAc,EAAE;QACtB,MAAM,GAAG,GAAG,SAAS;AACrB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,MAAM,CAAC;AAC1G,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC;IACtE;AAEA;;;AAGE;AACK,IAAA,cAAc,CAAC,SAAS,EAAE,KAAkB,EAAE,QAA8B,EAAE,IAAsB,EAAA;QACvG,IAAI,CAAC,uBAAuB,CAAC,MAAM,GAAG,SAAS,CAAC,aAAa;QAC7D,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC;IAC9C;AAEA;;AAEG;AACI,IAAA,0BAA0B,CAAC,KAAK,EAAE,SAAU,EAAE,cAAc,GAAG,IAAI,EAAA;AACtE,QAAA,MAAM,GAAG,GAAG,SAAS,IAAI,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;AAC5E,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,MAAM,CAAC;QAC1G,IAAI,cAAc,EAAE;YAChB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,IAAG;AACxC,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACzB,YAAA,CAAC,CAAC;YACF,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI;QACtD;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,cAAc,CAAC;IAC5F;AAEA;;;AAGE;AACK,IAAA,mBAAmB,CAAC,KAA0B,EAAA;AAEjD,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;YAC5C,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK;YAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;AAEnD,YAAA,SAAS,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC;AAEpF,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;QAC3B;IACJ;AAEA;;;AAGE;AACK,IAAA,UAAU,CAAC,GAAqB,EAAA;QACnC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG;IAC/C;AAEA;;;AAGE;IACK,UAAU,CAAC,MAAM,EAAE,SAA0B,EAAA;QAChD,IAAI,SAAS,CAAC,QAAQ,KAAK,SAAS,IAAI,SAAS,CAAC,QAAQ,EAAE;YACxD,MAAM,cAAc,GAAG,SAAS,CAAC,aAAa,IAAI,gBAAgB,CAAC,IAAI;YACvE,MAAM,SAAS,GAAG,cAAc,GAAG,CAAC,GAAG,gBAAgB,CAAC,IAAI;gBACxD,gBAAgB,CAAC,IAAI,GAAG,cAAc,GAAG,CAAC;YAC9C,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC;QACjD;IACJ;AAEA;;;AAGE;IACK,aAAa,CAAC,KAAK,EAAE,SAA8B,EAAA;AACtD,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS;YAAE;AACxD,QAAA,MAAM,YAAY,GAAG,SAAS,KAAK,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,QAAQ,CAAC;eAClH,CAAC,CAAC,WAAW,KAAK,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;AACvC,YAAA,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,WAAW,KAAK,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzH,IAAI,YAAY,EAAE;;YAEd;QACJ;;;QAGA,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,qBAAqB,EAAE;AACpE,QAAA,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,GAAG,CAAC;QAEhC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,GAAG,GAAG,GAAG,YAAY,CAAC,eAAe,GAAG,YAAY,CAAC,gBAAgB;QAChH,IAAI,IAAI,CAAC,QAAQ,KAAK,YAAY,CAAC,eAAe,EAAE;AAChD,YAAA,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;AAC5E,YAAA,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE;QACtE;aAAO;AACH,YAAA,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;AACxE,YAAA,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE;QAC1E;IACJ;AAEA;;;AAGE;AACK,IAAA,cAAc,CAAC,KAAK,EAAA;AACvB,QAAA,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;AAC5E,QAAA,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;AACxE,QAAA,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,eAAe;IAChD;AAEA;;;AAGE;IACK,eAAe,CAAC,KAAK,EAAE,IAAI,EAAA;AAC9B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1G,QAAA,SAAS,CAAC,OAAO,CAAC,OAAO,IAAG;AACxB,YAAA,IAAI,OAAO,CAAC,aAAa,CAAC,sBAAsB,EAAE;gBAC9C,OAAO,CAAC,aAAa,CAAC,sBAAsB,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;YAC5E;AACA,YAAA,IAAI,OAAO,CAAC,aAAa,CAAC,kBAAkB,EAAE;gBAC1C,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;YACxE;AACJ,QAAA,CAAC,CAAC;IACN;AAEA;;;AAGE;IACK,WAAW,CAAC,KAAK,EAAE,IAAI,EAAA;AAC1B,QAAA,IAAI,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YAAE;;QAE5H,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM;AAClD,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,EAAE,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE;QAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AAC3C,QAAA,IAAI,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,MAAM;AAC5G,QAAA,SAAS,GAAG,IAAI,CAAC,QAAQ,KAAK,YAAY,CAAC,eAAe,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS;QACtF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,WAAW,KAAK,MAAM,CAAC;QAC/E,IAAI,KAAK,EAAE;AACP,YAAA,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC/E,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,IAAI,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,CAAC,CAAC;QACtF;IACJ;AAEA;;;AAGE;AACK,IAAA,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,aAAiC,EAAA;AAC3D,QAAA,IAAI,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YAAE;AAC5H,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,EAAE,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE;QAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC;QAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AAC3C,QAAA,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC;AAClD,QAAA,MAAM,SAAS,GAAG,IAAI,KAAK,SAAS;QACpC,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,SAAS;;QAE9C,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YAC/E,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM;AAClF,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,KAAK,YAAY,CAAC,eAAe,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS;QAC9F,IAAI,SAAS,EAAE;;YAEX,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC;YAC3E,IAAI,CAAC,GAAG,EAAE;;gBAEN;YACJ;YACA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,WAAW,CAAC;QAC5D;aAAO,IAAI,SAAS,EAAE;;AAElB,YAAA,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC;AAC5D,YAAA,MAAM,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC;YACxE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,CAAC,CAAC;QAC7G;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,uBAAuB,EAAE,aAAa,EAAE,CAAC;;QAEnG,IAAI,CAAC,YAAY,EAAE;AACnB,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC;IACrC;AAEU,IAAA,cAAc,CAAC,KAAkB,EAAE,QAA8B,EAAE,IAAsB,EAAA;AAC/F,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;QAClB,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI;AACtD,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;AACjE,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AACxB,QAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC;IAC/C;AAEU,IAAA,qBAAqB,CAAC,GAAoB,EAAA;AAChD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI;IAC7H;8GAzgBS,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,4BAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,KAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,KAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EA+Da,qBAAqB,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5HzE,k2xBAkXA,4CD7Tc,gBAAgB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,2bAAE,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjF,kBAAkB,EAAA,QAAA,EAAA,mCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,sIAAE,kBAAkB,EAAA,QAAA,EAAA,iCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kCAAkC,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC7F,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,2BAA2B,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,oFAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,qBAAqB,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,6BAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtF,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,wBAAwB,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,mCAAmC,sPACnF,8CAA8C,EAAA,QAAA,EAAA,mEAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,8CAA8C,EAAA,QAAA,EAAA,mEAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC9F,4BAA4B,mFAC5B,+BAA+B,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EADD,uBAAuB,EAAA,IAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,sBAAsB,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGxE,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAZtC,SAAS;AACW,YAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,sBAAsB,EAAA,OAAA,EAEvB,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,gBAAgB;AACjF,wBAAA,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,kCAAkC;AAC7F,wBAAA,gBAAgB,EAAE,2BAA2B,EAAE,OAAO,EAAE,OAAO,EAAE,qBAAqB;wBACtF,oBAAoB,EAAE,wBAAwB,EAAE,mCAAmC;AACnF,wBAAA,8CAA8C,EAAE,8CAA8C;wBAC9F,4BAA4B,EAAE,uBAAuB,EAAE,sBAAsB;AAC7E,wBAAA,+BAA+B,CAAC,EAAA,QAAA,EAAA,k2xBAAA,EAAA;;sBA0BnC,SAAS;uBAAC,KAAK;;sBAKf,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,kBAAkB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;sBAK/C,SAAS;uBAAC,YAAY;;sBAKtB,SAAS;uBAAC,eAAe;;sBAKzB,SAAS;uBAAC,sBAAsB;;sBAKhC,SAAS;uBAAC,mBAAmB;;sBAM7B,YAAY;uBAAC,YAAY;;sBAQzB,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,wBAAwB,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE;;sBAOtE,YAAY;uBAAC,qBAAqB;;sBAOlC,WAAW;uBAAC,4BAA4B;;;AElIvC,MAAO,6BAA8B,SAAQ,wBAAwB,CAAA;AAD3E,IAAA,WAAA,GAAA;;QAGW,IAAA,CAAA,iBAAiB,GAAG,KAAK;QACzB,IAAA,CAAA,0BAA0B,GAAG,KAAK;AAwY5C,IAAA;AAtYG,IAAA,IAAW,sBAAsB,GAAA;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC;IACpD;AAEA,IAAA,IAAW,2BAA2B,GAAA;AAClC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;IACjF;IAEO,iBAAiB,GAAA;AACpB,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;AAC9B,QAAA,IAAI,CAAC,0BAA0B,GAAG,KAAK;IAC3C;IAEgB,MAAM,gBAAgB,CAAC,KAAoB,EAAA;AACvD,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE;AACnC,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO;YAC1B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBACvB;YACJ;YACA,KAAK,CAAC,cAAc,EAAE;AAEtB,YAAA,MAAM,aAAa,GAAgB;AAC/B,gBAAA,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG;AACxB,gBAAA,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;AAC9B,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC;aAC3B;AAED,YAAA,IAAI,KAAK,CAAC,MAAM,EAAE;AACd,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC;gBAC1B;YACJ;AAEA,YAAA,IAAI,iBAAiB;AACrB,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AAC/B,gBAAA,IAAI,WAAW,GAAG;AACd,oBAAA,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG;AACxB,oBAAA,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;AAC9B,oBAAA,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC;iBAC3B;gBACD,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,KAAK;AAClE,gBAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;oBACtB,WAAW,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,IAAI,EAAE,IAAI,CAAC;gBAClE;AACA,gBAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;oBACvB,WAAW,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,IAAI,CAAC;gBACnE;gBACA,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,MAAM,EAAE;AACtC,oBAAA,WAAW,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,IAAI,GAAG,KAAK,MAAM,EAAE,GAAG,KAAK,MAAM,CAAC;gBAClG;gBAEA,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,KAAK,EAAE;AACvC,oBAAA,WAAW,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,IAAI,IAAI,GAAG,KAAK,KAAK,EAAE,GAAG,KAAK,KAAK,CAAC;gBACjG;AAEA,gBAAA,aAAa,CAAC,GAAG,GAAG,WAAW,CAAC,GAAG;AACnC,gBAAA,aAAa,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM;AACzC,gBAAA,aAAa,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM;YAC7C;iBAAO;gBACH,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;oBACxE,aAAa,CAAC,MAAM,GAAG,IAAI,IAAI,GAAG,KAAK,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;gBAClF;gBACA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,KAAK,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,sBAAsB,EAAE;oBAClG,aAAa,CAAC,MAAM,GAAG,IAAI,IAAI,GAAG,KAAK,KAAK,GAAG,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;gBAC3G;AAEA,gBAAA,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC;AAC5F,gBAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;oBACpB,IAAI,IAAI,EAAE;AACN,wBAAA,aAAa,CAAC,GAAG,GAAG,CAAC;oBACzB;yBAAO,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,EAAE;wBAChC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC;oBAC/C;yBAAO;AACH,wBAAA,aAAa,CAAC,GAAG,GAAG,CAAC,CAAC;wBACtB,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC;AACnF,wBAAA,aAAa,CAAC,MAAM,GAAG,IAAI;AAC3B,wBAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI;AACtC,wBAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;wBAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE;oBAC5C;gBACJ;AAEA,gBAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAC3E,oBAAA,aAAa,CAAC,GAAG,GAAG,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,EAAE,iBAAiB,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC/I;AAEA,gBAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC/C,oBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG;AACtC,oBAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;oBACnG,MAAM,GAAG,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,UAAU,CAAC;oBAC1D,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,KAAK,aAAa,CAAC,MAAM;AACnG,wBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY;AACrC,wBAAA,iBAAiB,CAAC,gBAAgB,CAAC,GAAG,CAAC;oBAC3C,aAAa,CAAC,QAAQ,GAAG;AACrB,wBAAA,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG;AACjC,wBAAA,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC;qBAC1B;gBACL;YACJ;AAEA,YAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;AACjC,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,iBAAiB,CAAC,kBAAkB,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;AAC3F,gBAAA,iBAAiB,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;YACjD;QACJ;aAAO;AACH,YAAA,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC;QACjC;IACJ;IAEgB,SAAS,CAAC,GAAW,EAAE,KAAoB,EAAA;QACvD,KAAK,CAAC,cAAc,EAAE;QAEtB,IAAI,OAAO,EAAE,QAAQ;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AAChC,YAAA,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM;AACjC,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;YACjF,OAAO,GAAG,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAC5D;aAAO;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;AACxG,YAAA,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;YAC9D,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC;QAClD;QACA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;QAC1D,MAAM,eAAe,GAAG,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC;AAClE,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,IAAI;AAEzE,QAAA,IAAI,cAAc;AAClB,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;AAC3G,YAAA,cAAc,GAAG,IAAI,CAAC,0BAA0B,CAC5C,SAAS,EACT,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,EACpE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC;QACxC;QAEA,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE;AACzC,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,eAAe,EAAE,IAAI,EAAE,KAAK,CAAC;QAC3E;aAAO,IAAI,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,UAAU,EAAE;AACjD,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,eAAe,EAAE,KAAK,EAAE,KAAK,CAAC;QAC5E;QAEA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,MAAM,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,EAAE;AACzF,YAAA,IAAI,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,CAAC;QACrE;QACA,IAAI,CAAC,sBAAsB,EAAE;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;IAC7B;IAEO,sBAAsB,GAAA;AACzB,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;AACxG,YAAA,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YACxE,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM;QAC9C;IACJ;;AAGO,IAAA,WAAW,CAAC,cAAuB,EAAE,SAA0B,EAAE,OAAyB,EAAE,cAAmC,EAAA;AAClI,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB;AAC7B,YAAA,OAAO,CAAC,wBAAwB,KAAK,SAAS,CAAC,UAAU;AACzD,YAAA,SAAS,CAAC,iBAAiB,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,2BAA2B,KAAK,oBAAoB,CAAC,GAAG,EAAE;AAC3G,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,2BAA2B,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YACpF,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;YAC3G,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;AACtD,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9F,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;;AAGjF,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,0BAA0B,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC1H,MAAM,SAAS,GAAG,CAAC,CAAC,cAAc,IAAI,cAAc,CAAC,QAAQ,KAAK,CAAC,MAAM,cAAc,IAAK,cAAc,CAAC,MAAM,IAAI,SAAS,CAAC;YAC/H,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,SAAS,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;YACjE,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,aAAa,CAAC,kBAAkB;AACzD,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,aAAa;QAC1C;IACJ;IAEgB,MAAM,gBAAgB,CAAC,KAAoB,EAAA;QACvD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE;AACnC,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO;QAC1B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACvB;QACJ;AAEA,QAAA,IAAI,IAAI,CAAC,0BAA0B,EAAE;YACjC,KAAK,CAAC,cAAc,EAAE;AAEtB,YAAA,MAAM,aAAa,GAAgB;AAC/B,gBAAA,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG;AACxB,gBAAA,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;AAC9B,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ;AAClC,gBAAA,MAAM,EAAE;aACX;YAED,IAAI,IAAI,EAAE;AACN,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM;gBACvC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;gBACpD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE;AAC5B,oBAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC5C,wBAAA,IAAI,gBAAgB,GAAG,gBAAgB,CAAC,IAAI;AAC5C,wBAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;4BACtB,gBAAgB,GAAG,CAAC,GAAG,CAAC,aAAa,KAAK,gBAAgB,CAAC,IAAI,IAAI,gBAAgB,CAAC,IAAI,GAAG,gBAAgB,CAAC,IAAI;wBACpH;AAAO,6BAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;4BAC3B,gBAAgB,GAAG,CAAC,GAAG,CAAC,aAAa,KAAK,gBAAgB,CAAC,GAAG,IAAI,gBAAgB,CAAC,IAAI,GAAG,gBAAgB,CAAC,GAAG;wBAClH;wBACA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,gBAAgB,CAAC;wBAC9C;oBACJ;gBACJ;YACJ;YACA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACxE,aAAa,CAAC,MAAM,GAAG,IAAI,IAAI,GAAG,KAAK,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YAClF;YACA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,KAAK,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,sBAAsB,EAAE;gBAClG,aAAa,CAAC,MAAM,GAAG,IAAI,IAAI,GAAG,KAAK,KAAK,GAAG,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YAC3G;AAAO,iBAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC9B,gBAAA,IAAI,CAAC,0BAA0B,GAAG,KAAK;AACvC,gBAAA,aAAa,CAAC,MAAM,GAAG,CAAC;AACxB,gBAAA,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC;gBAC1D,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI;AACjD,oBAAA,KAAK,EAAE,CAAC;AACR,oBAAA,YAAY,EAAE;iBACjB;YACL;AAEA,YAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACtB,gBAAA,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AAC/B,oBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC;AACvB,oBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG;AACrB,wBAAA,QAAQ,EAAE,CAAC;AACX,wBAAA,MAAM,EAAE,CAAC;AACT,wBAAA,QAAQ,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC;AAClC,wBAAA,MAAM,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC;wBAChC,kBAAkB,EAAE,aAAa,CAAC;qBACrC;AAED,oBAAA,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,IAAI,IAAI,GAAG,KAAK,MAAM,EAAE,GAAG,KAAK,MAAM,CAAC;AACpG,oBAAA,aAAa,CAAC,GAAG,GAAG,CAAC;AACrB,oBAAA,aAAa,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM;AACzC,oBAAA,aAAa,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM;gBAC7C;qBAAO;AACH,oBAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC;AAClG,oBAAA,aAAa,CAAC,GAAG,GAAG,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC;gBACxE;AAEA,gBAAA,IAAI,CAAC,0BAA0B,GAAG,KAAK;AACvC,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;AAC7B,gBAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,GAAG,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE;YAC7H;AAEA,YAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;QACrC;aAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;AACjG,YAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI;AACtC,YAAA,MAAM,aAAa,GAAgB;AAC/B,gBAAA,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG;gBACxB,MAAM,EAAE,IAAI,CAAC,sBAAsB;AACnC,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ;AAClC,gBAAA,MAAM,EAAE;aACX;AAED,YAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;QACrC;aAAO;AACH,YAAA,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC;QACjC;IACJ;AAEgB,IAAA,UAAU,CAAC,KAAK,EAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,SAAS,EAAE;AACvF,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc;QACzC;aAAO;AACH,YAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;QAC3B;IACJ;AAEO,IAAA,MAAM,uBAAuB,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAA;QACxD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAC3G,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QAC/C,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC;;AAE7F,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC;QACnH,MAAM,SAAS,GAAG,CAAC,QAAQ,IAAI,aAAa,CAAC,QAAQ,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,aAAa,CAAC,MAAM,KAAK,SAAS,CAAC;AACjH,QAAA,IAAI,SAAS;aACR,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;AACvC,iBAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,IAAI,CAAC,2BAA2B,CAAC,CAAC,EAAE;YAC1E,IAAI,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;AAC9C,gBAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI;AACtC,gBAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;gBAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE;gBACxC,OAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;YACpG;YACA,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;QACvG;AAEA,QAAA,MAAM,eAAe,GAAG,QAAQ;AAC5B,aAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC;AACnC,aAAC,IAAI,GAAG,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC;AACvE,QAAA,IAAI,OAAO,GAAG,SAAS,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,eAAe,CAAC,GAAG,SAAS;QACnI,IAAI,CAAC,OAAO,EAAE;AACV,YAAA,MAAM,iBAAiB,GAAG,QAAQ;iBAC7B,IAAI,GAAG,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC;AACxE,iBAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;AACvG,YAAA,MAAM,IAAI,CAAC,4BAA4B,CAAC,iBAAiB,CAAC;AAC1D,YAAA,OAAO,GAAG,SAAS,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,eAAe,CAAC,GAAG,SAAS;QACnI;AAEA,QAAA,MAAM,YAAY,GAAG,SAAS;AAC1B,aAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;AACvC,aAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,GAAG,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC;QAClE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACnF,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,0BAA0B,CACpD,OAAO,EACP,IAAI,IAAI,QAAQ,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,IAAI,YAAY,EAC9D,OAAO,IAAI,QAAQ,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAC7E;AAED,QAAA,MAAM,iBAAiB,GAAG,QAAQ;AAC9B,YAAA,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,SAAS;YACzD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,SAAS;AAC3D,QAAA,MAAM,IAAI,CAAC,4BAA4B,CAAC,iBAAiB,CAAC;QAE1D,OAAO;AACH,YAAA,GAAG,EAAE,SAAS,IAAI,IAAI,GAAG,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG;YAC9D,MAAM,EAAE,gBAAgB,CAAC,kBAAkB;AAC3C,YAAA,MAAM,EAAE;gBACJ,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;gBACnC,MAAM,EAAE,gBAAgB,CAAC,MAAM;AAC/B,gBAAA,QAAQ,EAAE,OAAO,GAAG,gBAAgB,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ;gBAC/E,MAAM,EAAE,gBAAgB,CAAC,MAAM;gBAC/B,kBAAkB,EAAE,gBAAgB,CAAC;AACjB;SAC3B;IACL;AAEO,IAAA,MAAM,yBAAyB,CAAC,QAAQ,EAAE,IAAI,EAAA;QACjD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAC3G,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;;QAErF,MAAM,aAAa,GAAG,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC;QAElI,IAAI,CAAC,QAAQ,IAAI,aAAa,CAAC,QAAQ,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,aAAa,CAAC,MAAM,KAAK,SAAS,CAAC,EAAE;YACjG,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;QACvG;QAEA,MAAM,kBAAkB,GAAG,aAAa,CAAC,QAAQ,IAAI,QAAQ,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC;AACnH,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,0BAA0B,CACpD,SAAS,EACT,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAC/B,IAAI,IAAI,QAAQ,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,IAAI,kBAAkB,CAC7D;AAED,QAAA,MAAM,iBAAiB,GAAG,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,SAAS;AACrF,QAAA,MAAM,IAAI,CAAC,4BAA4B,CAAC,iBAAiB,CAAC;QAE1D,OAAO;AACH,YAAA,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG;YACxB,MAAM,EAAE,gBAAgB,CAAC,kBAAkB;AAC3C,YAAA,MAAM,EAAE;AACJ,gBAAA,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ;gBACzC,MAAM,EAAE,gBAAgB,CAAC,MAAM;gBAC/B,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;gBACnC,MAAM,EAAE,gBAAgB,CAAC,MAAM;gBAC/B,kBAAkB,EAAE,gBAAgB,CAAC;AACjB;SAC3B;IACL;IAEQ,MAAM,4BAA4B,CAAC,iBAAyB,EAAA;AAChE,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,uBAAuB;AAC3D,QAAA,IAAI,iBAAiB,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,EAAE;AACzD,YAAA,iBAAiB,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AAC7C,YAAA,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;gBAC1B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;oBACpE,IAAI,EAAE,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC;oBAC/B,KAAK,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG;AAC9B,iBAAA,CAAC;AACN,YAAA,CAAC,CAAC;QACN;IACJ;AAGQ,IAAA,0BAA0B,CAAC,OAA4C,EAAE,WAAW,EAAE,WAAW,EAAA;QACrG,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAG;AAC9C,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,WAAW,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;AAC1E,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,WAAW,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;AAC/E,QAAA,CAAC,CAAC;QACF,OAAO,QAAQ,CAAC,MAAM;IAC1B;8GA1YS,6BAA6B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAA7B,6BAA6B,EAAA,CAAA,CAAA;;2FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBADzC;;;ACAK,MAAO,wBAAyB,SAAQ,mBAAmB,CAAA;AAG7C,IAAA,WAAW,CAAC,KAAa,EAAA;AACrC,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;IAC5B;AAEgB,IAAA,YAAY,CAAC,SAAiB,EAAA;AAC1C,QAAA,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC;AAC7B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;AACtB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa;QACxC,MAAM,iBAAiB,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC;AAC1D,QAAA,MAAM,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC;AACnE,QAAA,GAAG,CAAC,MAAM,GAAG,SAAS;QACtB,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;;YAElC,IAAY,CAAC,YAAY,EAAE;QAChC;IACJ;AACmB,IAAA,eAAe,CAAC,SAAiB,EAAE,IAAI,EAAE,0BAA2E,EACnI,UAAmB,EAAA;QACnB,KAAK,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,EAAE,0BAA0B,EAAE,UAAU,CAAC;AAC9E,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;AACtB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB;AACtC,QAAA,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC;AAC7I,QAAA,MAAM,iBAAiB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;QACnE,MAAM,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC;AAC7F,QAAA,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,IAAI,IAAI,wBAAwB,CAAC,cAAc,CAAC,GAAG,CAAC;QACpF,MAAM,gBAAgB,GAAG,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC;AAC3D,QAAA,IAAI,gBAAgB,GAAG,CAAC,CAAC,EAAE;YACvB,aAAa,CAAC,iBAAiB,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC/D;AAEA,QAAA,IAAI,CAAC,4BAA4B,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE,0BAA0B,EAAE,UAAU,EAAE,gBAAgB,CAAC;AAC3H,QAAA,GAAG,CAAC,MAAM,GAAG,aAAa;QAC1B,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,gCAAgC,EAAE;QACnF,IAAI,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;;YAElC,IAAY,CAAC,YAAY,EAAE;QAChC;IACJ;AAEO,IAAA,gBAAgB,CAAC,QAAa,EAAE,OAAoB,EAAE,MAAkB,EAAE,cAAuB,EAAA;AACpG,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,GAAG,kCAAkC,GAAG,wBAAwB;AAClH,QAAA,MAAM,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA,CAAA,EAAI,UAAU,CAAA,CAAE,CAAgB,IAAI,OAAO;AAE1F,QAAA,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE;YAC5D,GAAG,IAAI,CAAC,0BAA0B;AAClC,YAAA,GAAG,EAAE,MAAM,EAAE,gBAAgB;SAChC,EAAE,cAAc,CAAC;AAElB,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;QAEtB,IAAI,cAAc,EAAE;YAChB,IAAI,CAAC,eAAe,CAAC;iBAChB,IAAI,CACD,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EACnC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAE3B,iBAAA,SAAS,CAAC,MAAM,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAE3E,IAAI,CAAC,eAAe,CAAC;iBAChB,IAAI,CACD,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EACnC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;iBAE3B,SAAS,CAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC/B,GAAG,EAAE,OAAO,EAAE;gBACd,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc;gBACrD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE;AAC5C,YAAA,CAAC,CAAC;YAEN,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,OAAO,EAAE,CAAC;AACpE,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC;IACJ;IAEO,OAAO,GAAA;QACV,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;IAChD;8GAlFS,wBAAwB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAxB,wBAAwB,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC;;;ACcD;;AAEG;AAOG,MAAO,wCAAyC,SAAQ,2BAA2B,CAAA;AANzF,IAAA,WAAA,GAAA;;AAOoB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAgB,aAAa,CAAC;AAC3C,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,6BAA6B,CAAC;AAChE,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;AAE/B;;AAEG;QAEI,IAAA,CAAA,UAAU,GAAG,MAAM;AAyJ7B,IAAA;AAvJG;;AAEG;AACH,IAAA,IAAW,IAAI,GAAA;AACX,QAAA,OAAO,WAAW;IACtB;AAkCA,IAAA,IACoB,QAAQ,GAAA;AACxB,QAAA,OAAO,CAAA,EAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA,IAAA,EAAO,IAAI,CAAC,QAAQ,CAAA,CAAA,EAAI,IAAI,CAAC,YAAY,EAAE;IACrE;AAEA,IAAA,IACoB,KAAK,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM;IAC7B;AAEA;;AAEG;AAEI,IAAA,OAAO,CAAC,KAAiB,EAAA;QAC5B,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,MAAM,EAAE;YACnC;QACJ;QACA,KAAK,EAAE,eAAe,EAAE;AACxB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAA4B,CAAC;QAC7E,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;YAC/C,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC;QACtD;aAAO;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC;QAC9D;QAEA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK,EAAE,CAAC,CAAC;IAC3B;AAEA;;;AAGG;AACH,IAAA,IAAW,YAAY,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC/B,OAAO,IAAI,CAAC,QAAQ;QACxB;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;AAC/B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa;QACpC,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACnD,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;IACtC;AAEA,IAAA,IACoB,MAAM,GAAA;AACtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU;AAChC,QAAA,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU;QAC3B,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW;AACnC,YAAA,GAAG,CAAC,iBAAiB;AACrB,gBAAA,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,QAAQ;AAC1B,gBAAA,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY;AACjC,YAAA,KAAK;IACb;AAEA,IAAA,IAAuB,UAAU,GAAA;QAC7B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,GAAG,IAAI;QAC7C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,0BAA0B,GAAG,KAAK;QACvD,OAAO;AACH,YAAA,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI;AAC1D,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI;SAC1B;IACL;IAGU,2BAA2B,GAAA;AACjC,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;AAC/B,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,aAAa,GAAG,IAAI,CAAC,KAAK;QAChE;AACA,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;IACjE;AAEQ,IAAA,iBAAiB,CAAC,KAAa,EAAA;AACnC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa;AACpC,QAAA,IAAI,OAAO;QACX,IAAI,MAAM,GAAG,IAAI;AACjB,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,IAAG;YACf,OAAO,GAAG,GAAG;AACb,YAAA,GAAG;AACC,gBAAA,IAAI,OAAO,CAAC,UAAU,KAAK,KAAK,EAAE;oBAC9B,MAAM,GAAG,GAAG;gBAChB;AACA,gBAAA,OAAO,GAAG,OAAO,CAAC,UAAU;YAChC,CAAC,QAAQ,OAAO;AACpB,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,MAAM;IACjB;IAGgB,QAAQ,GAAA;QACpB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,IAAI;QACvC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC;IACvD;AAEA;;AAEG;AACa,IAAA,WAAW,CAAC,MAAoB,EAAA;QAC5C,IAAI,CAAC,QAAQ,EAAE;IACnB;AAEA;;AAEG;AACa,IAAA,WAAW,CAAC,MAAkB,EAAA;QAC1C,IAAI,CAAC,QAAQ,EAAE;IACnB;AAEA,IAAA,IAAoB,UAAU,GAAA;AAC1B,QAAA,OAAO,KAAK;IAChB;8GAjKS,wCAAwC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wCAAwC,qbA+CtC,mCAAmC,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EL5ElD,4qDA4CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EKjBc,gBAAgB,yGAAE,mCAAmC,EAAA,QAAA,EAAA,gCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,2EAAE,4BAA4B,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,4BAA4B,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,6BAA6B,8HAAE,uBAAuB,EAAA,IAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAE5L,wCAAwC,EAAA,UAAA,EAAA,CAAA;kBANpD,SAAS;sCACW,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,sCAAsC,WAEvC,CAAC,gBAAgB,EAAE,mCAAmC,EAAE,OAAO,EAAE,OAAO,EAAE,4BAA4B,EAAE,4BAA4B,EAAE,6BAA6B,EAAE,uBAAuB,CAAC,EAAA,QAAA,EAAA,4qDAAA,EAAA;;sBAUrM,WAAW;uBAAC,mBAAmB;;sBAc/B;;sBAOA;;sBAQA;;sBAOA;;sBAGA,SAAS;uBAAC,mCAAmC;;sBAG7C,WAAW;uBAAC,SAAS;;sBAKrB,WAAW;uBAAC,YAAY;;sBAQxB,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;sBA+BhC,WAAW;uBAAC,2BAA2B;;;ACzF5C;;;;;;;AAOG;AAOG,MAAO,oCAAqC,SAAQ,yBAAyB,CAAA;AANnF,IAAA,WAAA,GAAA;;AAOoB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAgB,aAAa,CAAC;AACjD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACzC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;AA0J/C,IAAA;AAxJG,IAAA,IACW,QAAQ,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAA,CAAE,GAAG,EAAE;IACvD;AAEA,IAAA,IACW,OAAO,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA,CAAE,GAAG,EAAE;IACrD;AAEA,IAAA,IACW,QAAQ,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAA,CAAE,GAAG,EAAE;IACvD;AAEA,IAAA,IACW,MAAM,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,CAAA,EAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA,CAAE,GAAG,EAAE;IACrD;AAgDA,IAAA,IAAW,kBAAkB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,MAAM;IACxC;AAEA;;;AAGE;AACK,IAAA,WAAW,CAAC,OAAsB,EAAA;AACrC,QAAA,IAAI,OAAO,CAAC,OAAO,EAAE;;AAEjB,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YACpB,IAAI,CAAC,qBAAqB,EAAE;AAC5B,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;QACxB;QACA,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACxC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB;AAClC,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI;QACtF;IACJ;AAEA;;;AAGE;AACK,IAAA,kBAAkB,CAAC,KAAK,EAAA;QAC3B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;QAClG,KAAK,EAAE,eAAe,EAAE;IAC5B;AAGA;;;AAGG;IACI,kBAAkB,GAAA;AACrB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB;AACrC,QAAA,MAAM,GAAG,GAAG,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC;AACnE,QAAA,OAAO,GAAG;IACd;IAEO,cAAc,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC/E;IAEO,QAAQ,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,mBAAmB,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK;IACnE;IAEU,qBAAqB,GAAA;QAC3B,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE;AAChC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC;YACnE,MAAM,QAAQ,GAAG,EAAE;YACnB,IAAI,CAAC,gBAAgB,GAAG;AACpB,gBAAA,MAAM,EAAE,GAAG;gBACX,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,gBAAA,cAAc,EAAE;aACnB;QACL;IACJ;IAEU,oBAAoB,CAAC,GAAoB,EAAE,OAA8B,EAAA;AAC/E,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU;QAC5B,MAAM,MAAM,GAAG,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;AAClD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC;AACxD,QAAA,OAAO,GAAG;IACd;AAEU,IAAA,mBAAmB,CAAC,KAAa,EAAE,MAAc,EAAE,GAAoB,EAAA;QAC7E,MAAM,GAAG,GAAG,eAAe,CAAC,kBAAkB,EAAE,EAAE,mBAAmB,EAAE,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,QAAQ,EAAC,CAAC;AACzH,QAAA,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK;AAC1B,QAAA,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM;AAC5B,QAAA,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI;QACnF,GAAG,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB;AACtD,QAAA,GAAW,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM;QAGnI,IAAI,MAAM,IAAI,GAAG,CAAC,UAAU,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB,IAAI,IAAI,CAAC,OAAO,CAAC,wBAAwB,KAAK,GAAG,CAAC,UAAU,CAAC,EAAE;YAClI,GAAG,CAAC,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;QACrD;aAAO;YACH,GAAG,CAAC,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,qBAAqB;QAC5D;QACA,OAAO,GAAG,CAAC,QAAQ;IACvB;8GA7JS,oCAAoC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oCAAoC,2gBAuDR,WAAW,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAMJ,WAAW,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAGzC,wCAAwC,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChH1D,u+CAiCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDac,wCAAwC,uIAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,oGAAE,uBAAuB,EAAA,IAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEtG,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBANhD,SAAS;AACW,YAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,iCAAiC,WAElC,CAAC,wCAAwC,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,CAAC,EAAA,QAAA,EAAA,u+CAAA,EAAA;;sBAQ/G,WAAW;uBAAC,sBAAsB;;sBAKlC,WAAW;uBAAC,oBAAoB;;sBAKhC,WAAW;uBAAC,yBAAyB;;sBAKrC,WAAW;uBAAC,uBAAuB;;sBASnC;;sBAOA;;sBAGA;;sBAGA;;sBAGA;;sBAGA;;sBAMA,SAAS;uBAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAM/D,SAAS;uBAAC,uBAAuB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAGtE,YAAY;uBAAC,wCAAwC;;;AE3GpD,MAAO,qCAAsC,SAAQ,sBAAsB,CAAA;aACnD,IAAA,CAAA,SAAS,GAA0C,IAAI,CAAC;AAC3E,IAAA,OAAgB,QAAQ,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IAC1D;AACgB,IAAA,IAAI,CAAC,IAAW,EAC5B,SAAiB,EACjB,GAAqB,EACrB,UAAmB,EACnB,aAA+D,EAC/D,MAAgB,EAChB,MAAgB,EAChB,KAAqB,EAAA;QACrB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC;IAC3F;IAEU,aAAa,CAAC,GAAqB,EAAE,GAAW,EAAE,OAAO,GAAG,KAAK,EAAE,OAAO,GAAG,KAAK,EAAA;QACxF,OAAO,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC;IACzC;;AAIE,MAAO,2BAA4B,SAAQ,sBAAsB,CAAA;aACzC,IAAA,CAAA,SAAS,GAAgC,IAAI,CAAC;AAEjE,IAAA,OAAgB,QAAQ,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IAC1D;AACgB,IAAA,IAAI,CAAC,IAAW,EAC5B,SAAiB,EACjB,GAAqB,EACrB,UAAmB,EACnB,aAA+D,EAC/D,MAAgB,EAChB,MAAgB,EAChB,IAAoB,EAAA;QACpB,MAAM,GAAG,GAAG,SAAS;AACrB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa;AACxC,QAAA,MAAM,iBAAiB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;QACnE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,GAAG,CAAC;QACrF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC;IACrF;IAEU,aAAa,CAAC,GAAQ,EAAE,GAAW,EAAE,OAAO,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,EAAA;AAC1E,QAAA,IAAI,aAAa,GAAG,SAAS,CAAC,yBAAyB,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QACtF,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,kBAAkB,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,kBAAkB,CAAC,QAAQ;QACnI,IAAI,YAAY,EAAE;AACd,YAAA,MAAM,IAAI,GAAG,SAAS,CAAC,aAAa,CAAC;AACrC,YAAA,aAAa,GAAG,MAAM,IAAI,IAAI;AAC1B,gBAAA,IAAI,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,IAAI;QAEjH;AACA,QAAA,OAAO,aAAa;IACxB;;;MCtDS,aAAa,CAAA;IACf,OAAO,mCAAmC,CAAC,UAA6B,EAAA;QAC3E,MAAM,WAAW,GAAyB,EAAE;QAC5C,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,IAAG;AACtC,YAAA,IAAI,CAAC,CAAC,aAAa,EAAE;gBACjB,WAAW,CAAC,IAAI,CAAC;oBACb,GAAG,EAAE,CAAC,CAAC,aAAa;oBACpB,SAAS,EAAE,CAAC,CAAC,UAAU;AACvB,oBAAA,QAAQ,EAAE,2BAA2B,CAAC,QAAQ;AACjD,iBAAA,CAAC;YACN;iBAAO;gBACH,WAAW,CAAC,IAAI,CAAC;oBACb,GAAG,EAAE,gBAAgB,CAAC,IAAI;oBAC1B,SAAS,EAAE,CAAC,CAAC,UAAU;AACvB,oBAAA,QAAQ,EAAE,2BAA2B,CAAC,QAAQ;AACjD,iBAAA,CAAC;YACN;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,WAAW;IACtB;AACH;;ACtBD;;AAEG;MAKU,kCAAkC,CAAA;AAJ/C,IAAA,WAAA,GAAA;AAKW,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAgD,WAAW,CAAC;AAMvF,IAAA;AAJU,IAAA,OAAO,sBAAsB,CAAC,UAA8C,EAC/E,OAAgB,EAAA;AAChB,QAAA,OAAO,IAAI;IACf;8GANS,kCAAkC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlC,kCAAkC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAlC,kCAAkC,EAAA,UAAA,EAAA,CAAA;kBAJ9C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAUD;;AAEG;MAKU,2CAA2C,CAAA;AAJxD,IAAA,WAAA,GAAA;AAKW,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAwC,WAAW,CAAC;AAM/E,IAAA;AAJU,IAAA,OAAO,sBAAsB,CAAC,UAAuD,EACxF,OAAgB,EAAA;AAChB,QAAA,OAAO,IAAI;IACf;8GANS,2CAA2C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA3C,2CAA2C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA3C,2CAA2C,EAAA,UAAA,EAAA,CAAA;kBAJvD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACCD;;AAEG;MAMU,eAAe,CAAA;AAL5B,IAAA,WAAA,GAAA;AAMY,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAgB,aAAa,CAAC;AAuBtD,IAAA;IApBU,SAAS,CACZ,UAAe,EACf,MAA2B,EAC3B,aAAiC,EACjC,CAAoB,EACpB,YAAqB,EACrB,EAAG,EAAA;AAEH,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,kBAAkB;AACxD,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE;AAC7D,QAAA,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE;AACnE,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE;AACjE,QAAA,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;;AAEvF,YAAA,OAAO,EAAE;QACb;QACA,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,0BAA0B,CAAC,QAAQ,EAAE;QAC/E,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC;AACzC,QAAA,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,CAAC;IAC1F;8GAvBS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,UAAU,EAAE;AACf,iBAAA;;AA2BD;;;AAGG;MAMU,qBAAqB,CAAA;AACvB,IAAA,SAAS,CACZ,UAAiB,EACjB,MAA2B,EAC3B,YAAqB,EACrB,EAAG,EAAA;QAEH,IAAI,mBAAmB,GAAG,KAAK;AAC/B,QAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,mBAAmB,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC5D;AAEA,QAAA,IAAI,CAAC,mBAAmB;AAAE,YAAA,OAAO,UAAU;QAE3C,MAAM,GAAG,GAAG,IAAI,CAAC,8BAA8B,CAAC,MAAM,EAAE,UAAU,CAAC;AACnE,QAAA,OAAO,GAAG;IACd;AAEU,IAAA,aAAa,CAAC,GAAqB,EAAA;AACzC,QAAA,OAAO,CAAC,CAAE,GAAwB,CAAC,iBAAiB;IACxD;IAEU,8BAA8B,CAAC,MAA2B,EAAE,UAAiB,EAAA;AACnF,QAAA,MAAM,SAAS,GAAe,MAAM,CAAC,SAAS,IAAI,kBAAkB;AACpE,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;QACtD,MAAM,OAAO,GAAsB,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC;QACjE,MAAM,MAAM,GAAuB,EAAE;AACrC,QAAA,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;AAC1B,YAAA,MAAM,QAAQ,GAAqB;gBAC/B,eAAe,EAAE,IAAI,GAAG,EAAkB;gBAC1C,iBAAiB,EAAE,IAAI,GAAG,EAAkB;gBAC5C,QAAQ,EAAE,IAAI,GAAG,EAA8B;AAC/C,gBAAA,UAAU,EAAE;aACf;YACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7B,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACpB,gBAAA,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,GAAG,CAAC;gBACnD,IAAI,GAAG,EAAE;;AAEL,oBAAA,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7B,oBAAA,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC/C;AAAO,qBAAA,IAAI,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,qBAAqB,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;;oBAEhF,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,qBAAqB,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;AAC7F,oBAAA,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC;oBAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,8BAA8B,CAAC,MAAM,EAAE,SAAS,CAAC;oBAC7E,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;gBACjD;qBAAO;;AAEH,oBAAA,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;gBACjD;YACJ;YACA,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;YAChD,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/E,YAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACzB;AACA,QAAA,OAAO,MAAM;IACjB;8GAzDS,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,wBAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,wBAAwB;AAC9B,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,UAAU,EAAE;AACf,iBAAA;;AA8DD;;AAEG;MAMU,wBAAwB,CAAA;AALrC,IAAA,WAAA,GAAA;AAMY,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAgB,aAAa,CAAC;AA8CtD,IAAA;IA3CU,SAAS,CACZ,UAA8B,EAC9B,MAA2B,EAC3B,eAAkC,EAClC,aAAsB,EACtB,YAAqB,EACrB,EAAG,EAAA;AAEH,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE;AAC7D,QAAA,MAAM,IAAI,GAAG,UAAU,GAAG,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;QAC3D,MAAM,uBAAuB,GAAG,EAAE;AAClC,QAAA,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE;AAC3B,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,mBAAmB,EAAE;gBAChC,SAAS,CAAC,yBAAyB,CAC/B,IAAI,EACJ,GAAG,EACH,eAAe,EACf,aAAa,EACb,uBAAuB,EACvB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAChD;YACL;iBAAO;gBACH,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,eAAe,EAAE,aAAa,CAAC;YACtE;QACJ;QAEA,IAAI,SAAS,GAAG,IAAI;AACpB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,mBAAmB,EAAE;AAChC,YAAA,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;AAC7D,YAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,uBAAuB,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,CAAC,CAAC;QACzJ;aAAO;AACH,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACX,gBAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,GAAG,WAAW;YAChD;AACA,YAAA,SAAS,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC;gBAC9B,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS;QACrF;AAEA,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,KAAK,CAAC;QACrD;AACA,QAAA,OAAO,SAAS;IACpB;8GA9CS,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,uBAAA,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,uBAAuB;AAC7B,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAkDD;;AAEG;MAMU,uBAAuB,CAAA;AALpC,IAAA,WAAA,GAAA;AAMY,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAgB,aAAa,CAAC;AA4CtD,IAAA;AA1CU,IAAA,SAAS,CACZ,UAA8B,EAC9B,MAA2B,EAC3B,GAAoB,EACpB,YAAqB,EAAA;AAErB,QAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,UAAU;AAC1E,QAAA,MAAM,IAAI,GAA4B,UAAU,GAAG,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;QACpF,MAAM,GAAG,GAA4B,EAAE;QAEvC,IAAI,SAAS,GAA4B,EAAE;AAC3C,QAAA,IAAI,MAAM;AACV,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,GAAI,IAAI,CAAC,IAAY,CAAC,oBAAoB,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;QACjI,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC;AACzC,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACpB,YAAA,IAAI,UAAU;AACd,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;gBAC/B,UAAU,GAAG,GAAG;AAChB,gBAAA,GAAG,CAAC,UAAU,GAAG,WAAW;YAChC;iBAAO;AACH,gBAAA,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC;YACzC;YAEA,MAAM,EAAE,GAAG,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,UAAU,CAAC;YAClD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,KAAK,EAAE,EAAE;gBACvC,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,GAAG,SAAS;AAC3F,gBAAA,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;gBACvB,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,MAAM;gBACvC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACtB,SAAS,GAAG,EAAE;YAClB;AACA,YAAA,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;YACnB,MAAM,GAAG,EAAE;QACf;AACA,QAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACtB,YAAA,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS;AAChH,YAAA,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;YACvB,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,MAAM;YACvC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC1B;AACA,QAAA,OAAO,GAAG;IACd;8GA5CS,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,sBAAsB;AAC5B,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAgDD;;AAEG;MAKU,iCAAiC,CAAA;AAJ9C,IAAA,WAAA,GAAA;AAKY,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAW,aAAa,CAAC;AA+BjD,IAAA;AA7BU,IAAA,SAAS,CACZ,UAA8B,EAC9B,MAA2B,EAC3B,YAAqB,EACrB,eAAwB,EAAA;AAExB,QAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI;AACpE,QAAA,MAAM,IAAI,GAAuB,UAAU,GAAG,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;QAC/E,MAAM,GAAG,GAAyB,EAAE;AAEpC,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1D,IAAI,QAAQ,GAAG,EAAE;AACjB,QAAA,IAAI,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;AACpE,QAAA,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAC1C,YAAA,MAAM,CAAC,SAAS,GAAG,KAAK;AACxB,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;YACnE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,KAAK,aAAa,EAAE;AACxD,gBAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;YACzB;iBAAO;AACH,gBAAA,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,MAAM;AAClE,gBAAA,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AAClB,gBAAA,QAAQ,GAAG,CAAC,MAAM,CAAC;gBACnB,aAAa,GAAG,WAAW;YAC/B;QACJ;AACA,QAAA,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AAElB,QAAA,OAAO,GAAG;IACd;8GA/BS,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAjC,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gCAAA,EAAA,CAAA,CAAA;;2FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAJ7C,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,gCAAgC;AACtC,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAmCD;;AAEG;MAKU,oCAAoC,CAAA;AAJjD,IAAA,WAAA,GAAA;AAKY,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAgB,aAAa,CAAC;AA4EtD,IAAA;AA1EU,IAAA,SAAS,CACZ,UAA8B,EAC9B,MAA2B,EAC3B,YAAqB,EAAA;AAErB,QAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,CAAC;AAC7D,oBAAA,QAAQ,EAAE,CAAC;AACX,oBAAA,OAAO,EAAE,CAAC;AACV,oBAAA,QAAQ,EAAE,CAAC;AACX,oBAAA,OAAO,EAAE,CAAC;AACV,oBAAA,OAAO,EAAE;AACZ,iBAAA,CAAC;AACF,QAAA,MAAM,IAAI,GAAuB,UAAU,GAAG,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;QAC/E,MAAM,GAAG,GAAgC,EAAE;;AAG3C,QAAA,MAAM,mBAAmB,GAAkC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACjF,QAAA,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE;YACjF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;AACvD,YAAA,IAAI,QAAQ,GAA8B;gBACtC,QAAQ,EAAE,QAAQ,GAAG,CAAC;AACtB,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,QAAQ,EAAE,CAAC;AACX,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;AACrD,gBAAA,aAAa,EAAE,MAAM;gBACrB,UAAU,EAAE,CAAC,MAAM,CAAC;AACpB,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;aACpB;AACD,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAClC,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;AACtB,gBAAA,MAAM,WAAW,GAAG,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;AACjE,gBAAA,MAAM,eAAe,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;gBACjF,IAAI,WAAW,KAAK,QAAQ,CAAC,KAAK,IAAI,CAAC,eAAe,EAAE;;oBAEpD,QAAQ,CAAC,OAAO,EAAE;AAClB,oBAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;gBACjC;qBAAO;AACH,oBAAA,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;AACzD,oBAAA,QAAQ,GAAG;wBACP,QAAQ,EAAE,QAAQ,GAAG,CAAC;AACtB,wBAAA,OAAO,EAAE,CAAC;AACV,wBAAA,QAAQ,EAAE,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,OAAO;AAC9C,wBAAA,OAAO,EAAE,CAAC;wBACV,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;AACpD,wBAAA,aAAa,EAAE,MAAM;wBACrB,UAAU,EAAE,CAAC,MAAM,CAAC;wBACpB,OAAO,EAAE,CAAC,MAAM;qBACnB;gBACL;YACJ;AAEA,YAAA,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC7D;;QAGA,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC;;QAGvF,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AACzB,QAAA,IAAI,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC;AAC/B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1C,YAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC;AAChC,YAAA,IAAI,QAAQ,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,EAAE;gBACtD,SAAS,GAAG,QAAQ;AACpB,gBAAA,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YACtB;iBAAO;gBACH,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;gBACjD,SAAS,CAAC,OAAO,EAAE;YACvB;QACJ;AAEA,QAAA,OAAO,GAAG;IACd;8GA5ES,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAApC,oCAAoC,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,mCAAA,EAAA,CAAA,CAAA;;2FAApC,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAJhD,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,mCAAmC;AACzC,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAgFD;;AAEG;MAMU,kBAAkB,CAAA;IAEpB,SAAS,CACZ,UAA8B,EAC9B,MAA2B,EAC3B,aAAiC,EACjC,CAAoB,EACpB,YAAqB,EACrB,EAAG,EAAA;AAEH,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,kBAAkB;AACxD,QAAA,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE;AACnE,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE;QAEjE,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,IAAI,6BAA6B,CAAC,QAAQ,EAAE;QACrF,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC;AACzC,QAAA,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,CAAC;IAC7F;8GAjBS,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,iBAAiB;AACvB,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAqBD;;AAEG;MAMU,sBAAsB,CAAA;AALnC,IAAA,WAAA,GAAA;AAMY,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAsD,kBAAkB,CAAC;AAwBpG,IAAA;IAtBU,SAAS,CAAC,UAAiB,EAC9B,MAA2B,EAC3B,cAAkC,EAClC,uBAAkD,EAClD,kBAA0B,EAC1B,YAAoB,EAAA;QACpB,MAAM,eAAe,GAAG,SAAS,CAAC,mBAAmB,CAAC,MAAM,CAAC;AAE7D,QAAA,MAAM,KAAK,GAAG;YACV,eAAe;AACf,YAAA,QAAQ,EAAE,cAAc,IAAI,IAAI,gCAAgC,EAAE;YAClE;SACH;AAED,QAAA,IAAI,wBAAwB,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,wBAAwB,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAAE;AACxH,YAAA,OAAO,UAAU;QACrB;QAEA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAExF,QAAA,OAAO,MAAM;IACjB;8GAxBS,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,iBAAiB;AACvB,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,UAAU,EAAE;AACf,iBAAA;;AA6BD;;AAEG;MAMU,6BAA6B,CAAA;AAC/B,IAAA,SAAS,CACZ,UAA8B,EAC9B,WAAiC,EACjC,OAA6B,EAC7B,YAAoB,EAAA;AAEpB,QAAA,IAAI,MAA0B;AAE9B,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACrB,MAAM,GAAG,UAAU;QACvB;aAAO;AACH,YAAA,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;AAC5B,gBAAA,IAAI,CAAC,QAAQ,GAAG,qCAAqC,CAAC,QAAQ,EAAE;YACpE;AACA,YAAA,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC;QACzE;AACA,QAAA,OAAO,MAAM;IACjB;8GAlBS,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,CAAA,CAAA;;2FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBALzC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,qBAAqB;AAC3B,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAsBD;;AAEG;MAMU,uBAAuB,CAAA;AALpC,IAAA,WAAA,GAAA;AAMY,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAsD,kBAAkB,CAAC;AAepG,IAAA;AAbU,IAAA,SAAS,CAAC,UAAiB,EAAE,MAA2B,EAAE,OAA6B,EAAE,YAAoB,EAAA;AAChH,QAAA,IAAI,MAAa;AACjB,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE;AACvC,QAAA,MAAM,iBAAiB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;QACnE,MAAM,WAAW,GAAG,aAAa,CAAC,mCAAmC,CAAC,iBAAiB,CAAC;AACxF,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YACrB,MAAM,GAAG,UAAU;QACvB;aAAO;YACH,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QAC3F;AAEA,QAAA,OAAO,MAAM;IACjB;8GAfS,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,eAAe;AACrB,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAmBD;;AAEG;MAKU,uBAAuB,CAAA;AACzB,IAAA,SAAS,CACZ,UAA6C,EAC7C,cAAsB,EACtB,YAAoB,EAAA;QAEpB,IAAI,CAAC,UAAU,EAAE;AACb,YAAA,OAAO,UAAU;QACrB;QACA,IAAI,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9B,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,YAAA,MAAM,UAAU,GAAG,CAAC,CAAC,KAAI;gBACrB,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,UAAU;gBAC3C,IAAI,CAAC,UAAU,EAAE;AACb,oBAAA,OAAO,KAAK;gBAChB;AACA,gBAAA,QACI;AACK,qBAAA,iBAAiB;AACjB,qBAAA,OAAO,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC;AACrD,qBAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC;AAE/C,YAAA,CAAC;AACD,YAAA,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC;QACxC;AACA,QAAA,OAAO,IAAI;IACf;8GA1BS,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,kBAAA,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,kBAAkB;AACxB,oBAAA,UAAU,EAAE;AACf,iBAAA;;MAsCY,gCAAgC,CAAA;IAElC,SAAS,CAAC,UAAgC,EAAE,CAAM,EAAE,OAAyB,EAAE,UAA4B,EAAE,KAAa,EAAE,EAAU,EAAA;QACzI,IAAI,CAAC,UAAU,EAAE;AACb,YAAA,OAAO,EAAE;QACb;QAEA,MAAM,MAAM,GAAG,EAAE;QACjB,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC;QAEnD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAC5C,YAAA,MAAM,eAAe,GAAG,UAAU,CAAC,QAAQ,CAAC;AAC5C,YAAA,MAAM,KAAK,GAAG,OAAO,eAAe,KAAK,UAAU;AAC/C,gBAAA,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,eAAe;YACxG,IAAI,KAAK,EAAE;AACP,gBAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;YACzB;QACJ;AAEA,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IAC3B;8GApBS,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAhC,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,0BAAA,EAAA,CAAA,CAAA;;2FAAhC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAJ5C,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,0BAA0B;AAChC,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACnfK,MAAO,oBAAqB,SAAQ,eAAe,CAAA;AAPzD,IAAA,WAAA,GAAA;;;AASoB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAgB,aAAa,CAAC;AACjD,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;AA0B5C;;;AAGG;QACa,IAAA,CAAA,QAAQ,GAAG,KAAK;AAwInC,IAAA;AApKG;;AAEG;AACH,IAAA,IAEoB,QAAQ,GAAA;QACxB,IAAI,UAAU,GAAG,KAAK;QACtB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACvC,YAAA,MAAM,GAAG,GAAG,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;YACrD,IAAI,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE;gBAC/C,UAAU,GAAG,IAAI;YACrB;QACJ;AACA,QAAA,OAAO,UAAU;IACrB;AAEA;;;AAGG;AACH,IAAA,IAAoB,SAAS,GAAA;QACzB,OAAO,IAAI,CAAC,KAAK;IACrB;AAQA;;;AAGG;AACH,IAAA,IAAoB,QAAQ,GAAA;AACxB,QAAA,OAAO,KAAK;IAChB;AAEA;;;AAGG;AACH,IAAA,IAAoB,UAAU,GAAA;AAC1B,QAAA,OAAO,KAAK;IAChB;AAEA;;;AAGG;IACH,IAAoB,MAAM,CAAC,MAAe,EAAA;IAC1C;AAEA,IAAA,IAAoB,MAAM,GAAA;AACtB,QAAA,OAAO,KAAK;IAChB;AAEA;;;AAGG;IACa,MAAM,GAAA;IACtB;AAEA;;;AAGG;IACa,WAAW,GAAA;IAC3B;AAEA;;;AAGG;AACa,IAAA,MAAM,CAAC,MAAW,EAAA;IAClC;AAEA;;;AAGG;IACa,GAAG,GAAA;AACf,QAAA,OAAO,KAAK;IAChB;AAEA;;;AAGE;IACc,KAAK,GAAA;AACjB,QAAA,OAAO,KAAK;IAChB;AAEA;;;;;;;AAOE;AACF,IAAA,IACoB,IAAI,GAAA;QACpB,OAAO,IAAI,CAAC,KAAK;IACrB;IAEA,IAAoB,IAAI,CAAC,CAAmB,EAAA;AACxC,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC;IAClB;AAEA;;;AAGG;AACH,IAAA,IAAW,oBAAoB,GAAA;AAC3B,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB;QAChD,MAAM,GAAG,GAAG,EAAE;QACd,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,KAAI;AAChC,YAAA,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACpB,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,GAAG;IACd;AAEO,IAAA,YAAY,CAAC,GAAuB,EAAA;AACvC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;AAC/B,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,YAAA,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM;QAC3B;AACA,QAAA,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC;QAC7E,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/C,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,EAAE,MAAM;IAC7D;AAEgB,IAAA,YAAY,CAAC,kBAAkB,EAAA;AAC3C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU;AAChC,QAAA,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU;AAC3B,QAAA,OAAO,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;YACzC,CAAC,GAAG,CAAC,iBAAiB;gBACtB,CAAC,GAAG,CAAC,0BAA0B;AAC/B,gBAAA,KAAK,CAAC,YAAY,CAAC,kBAAkB,CAAC;AACtC,YAAA,KAAK;IACb;AAEO,IAAA,aAAa,CAAC,GAAuB,EAAA;AACxC,QAAA,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC;AAC1E,QAAA,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB;AAC7C,QAAA,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACnE,QAAA,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE;AAC7B,YAAA,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QACjD;AACA,QAAA,IAAI,UAAU;QACd,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,MAAM,EAAE;YAC5C,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;QACjE;aAAO;YACH,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS;QACnE;QACA,OAAO;YACH,KAAK,EAAE,GAAG,CAAC,KAAK;AAChB,YAAA,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB;AACtC,YAAA,eAAe,EAAE,WAAW;AAC5B,YAAA,KAAK,EAAE;SACV;IACL;8GAxKS,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,6KAHlB,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC,EAAE,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5BlG,yvEA+BA,4CDFc,qBAAqB,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,6BAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,eAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,6BAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,mJAAE,qBAAqB,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,qBAAqB,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,2BAA2B,oDAAE,gCAAgC,EAAA,IAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAEjM,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACW,YAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,eAAe,EAAA,SAAA,EAEd,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,CAAC,0BAA0B,CAAC,EAAE,CAAC,EAAA,OAAA,EACrF,CAAC,qBAAqB,EAAE,oBAAoB,EAAE,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,gCAAgC,CAAC,EAAA,QAAA,EAAA,yvEAAA,EAAA;;sBAU1M;;sBACA,WAAW;uBAAC,oBAAoB;;sBAkGhC;;;AEzHL;;;;;;;AAOG;AAOG,MAAO,mCAAoC,SAAQ,yBAAyB,CAAA;AANlF,IAAA,WAAA,GAAA;;AAOoB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAgB,aAAa,CAAC;AACjD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACzC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAMrC,IAAA,CAAA,QAAQ,GAAG,IAAI;QAGf,IAAA,CAAA,QAAQ,GAAI,IAAI;AAuE1B,IAAA;AArEG,IAAA,IACW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;IACtD;AAEA,IAAA,IACW,YAAY,GAAA;QACnB,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;IACvD;IA+BU,iBAAiB,CAAC,OAAgB,EAAE,IAAwB,EAAA;QAClE,IAAI,OAAO,EAAE;AACT,YAAA,OAAO,CAAA,OAAA,EAAU,IAAI,CAAC,MAAM,OAAO;QACvC;AAAO,aAAA,IAAI,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YACzE,MAAM,GAAG,GAAG,EAAE;YACd,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,GAAG,IAAG;AACzC,gBAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAC9C,YAAA,CAAC,CAAC;AACF,YAAA,OAAQ,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;QACzB;IACJ;AAEO,IAAA,yBAAyB,CAAC,IAAuB,EAAA;QACpD,IAAI,QAAQ,GAAG,CAAC;QAChB,KAAK,MAAM,GAAG,KAAK,IAAI,IAAI,EAAE,GAAG;YAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;AACpD,YAAA,IAAI,WAAW,KAAK,aAAa,EAAE;gBAC/B,OAAO,CAAC,CAAC;YACb;iBAAO;AACH,gBAAA,QAAQ,IAAI,UAAU,CAAC,WAAW,CAAC;YACvC;QACJ;AACA,QAAA,OAAO,QAAQ;IACnB;AAEU,IAAA,WAAW,CAAC,KAAgC,EAAA;QAClD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5B,QAAA,MAAM,GAAG,GAAG,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,aAAa,CAAC;AAC5D,QAAA,OAAO,GAAG;IACd;8GAnFS,mCAAmC,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnC,mCAAmC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uCAAA,EAAA,eAAA,EAAA,2BAAA,EAAA,eAAA,EAAA,0BAAA,EAAA,mBAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,+BAAA,EAAA,SAAA,EAM9B,oCAAoC,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAwCpC,oCAAoC,uEC7EtD,kzBAqBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDQc,oCAAoC,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,WAAA,EAAA,eAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,oCAAoC,EAAA,IAAA,EAAA,mCAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAE3E,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAN/C,SAAS;sCACW,uBAAuB,CAAC,MAAM,EAAA,QAAA,EACrC,iCAAiC,WAElC,CAAC,oCAAoC,EAAE,oCAAoC,CAAC,EAAA,QAAA,EAAA,kzBAAA,EAAA;;sBAQpF,YAAY;uBAAC,oCAAoC;;sBAGjD,WAAW;uBAAC,uCAAuC;;sBAGnD,WAAW;uBAAC,2BAA2B;;sBAGvC,WAAW;uBAAC,0BAA0B;;sBAKtC,WAAW;uBAAC,6BAA6B;;sBAQzC;;sBAMA;;sBAMA;;sBAMA,YAAY;uBAAC,oCAAoC;;;MEzEzC,eAAe,CAAA;AAWxB,IAAA,WAAA,CAAY,IAA2B,EAAE,KAAa,EAAE,IAAU,EAAA;AAC9D,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;QAClB,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI;IAC9E;AAEA;;AAEG;AACH,IAAA,IAAW,IAAI,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;IACvD;AAEA;;AAEG;AACH,IAAA,IAAW,SAAS,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO;IAC1D;AAEA;;;;;;;;;AASG;AACH,IAAA,IAAW,GAAG,GAAA;AACV,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3F,QAAA,MAAM,SAAS,GAAI,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;QAC/D,OAAO,SAAS,GAAG,SAAS,GAAG,IAAI;IACvC;AAEA;;;;;;AAMG;AACH,IAAA,IAAW,QAAQ,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;IAC7D;IAEA,IAAW,QAAQ,CAAC,GAAY,EAAA;QAC5B,IAAI,GAAG,EAAE;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChE;aAAO;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClE;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;IAChC;AACH;;ACXD,IAAI,OAAO,GAAG,CAAC;AACf,MAAM,oBAAoB,GAAG,GAAG;AAChC,MAAM,kCAAkC,GAAG,GAAG;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AAeG;AA2DG,MAAO,qBAAsB,SAAQ,oBAAoB,CAAA;AA1D/D,IAAA,WAAA,GAAA;;;AA6D6B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAsD,kBAAkB,CAAC;;AAElG,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,6BAA6B,CAAC;AAC/C,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,6BAA6B,CAAC;AAE7E;;;;;;;;;;AAUG;AAEI,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAqB;AAE/D;;;;;;;;AAQG;AAEI,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,YAAY,EAAuC;AAGzF;;;;;;;;;AASG;AAEI,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAmB;AAE1D;;;;;;;;;AASG;AAEI,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAe;AAGlD;;;;;;;;AAQG;AAEI,QAAA,IAAA,CAAA,kCAAkC,GAAG,IAAI,YAAY,EAAwB;AAEpF;;;;;;;;;;AAUE;AAEK,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAiB;AAyEvD;;;;;;;;;AASG;QAEI,IAAA,CAAA,kBAAkB,GAAG,KAAK;AAsBjC;;AAEG;QAEI,IAAA,CAAA,IAAI,GAAG,MAAM;AAyHpB;;AAEG;QAEa,IAAA,CAAA,mBAAmB,GAAa,EAAE;AAElD;;AAEG;QAEa,IAAA,CAAA,mBAAmB,GAAG,IAAI;AAE1C;;AAEG;AAEa,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAsB;AAEjE;;AAEG;AAEa,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAA0B;AAEzE;;AAEG;AAEa,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAsB;AAEtE;;AAEG;AAEa,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAA0B;AAEzE;;AAEG;AAEa,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAA+B;AAEnF;;AAEG;AAEa,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAA0B;AAEzE;;AAEG;AAEa,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAA6B;AAE/E;;AAEG;AAEa,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAkC;AAE9E;;AAEG;AAEa,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAuB;AAEtE;;AAEG;AAEa,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAA+B;AAExE;;AAEG;AAEa,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAqB;AAEhE;;AAEG;AAEa,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAqB;AAElE;;AAEG;AAEa,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAA+B;AAE3E;;AAEG;AAEa,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAA0B;AAEzE;;AAEG;AAEa,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAwB;AAErE;;AAEG;AAEa,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAsB;AAErE;;AAEG;AAEa,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAsB;AAEhE;;AAEG;AAEa,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAA0B;AAExE;;AAEG;AAEa,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAA0B;AAExE;;AAEG;AAEa,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAoB;AAEjE;;AAEG;AAEa,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAoB;;AAGzD,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,GAAG,EAAmB;AAYrD;;AAEG;QACa,IAAA,CAAA,SAAS,GAAG,IAAI;AAShC;;AAEG;QACI,IAAA,CAAA,oBAAoB,GAAG,IAAI;AAE1B,QAAA,IAAA,CAAA,kBAAkB,GAAoB,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE;AAQ/E,QAAA,IAAA,CAAA,wBAAwB,GAAuB,IAAI,wBAAwB,EAAE;QACpE,IAAA,CAAA,mBAAmB,GAAG,KAAK;AAC3B,QAAA,IAAA,CAAA,eAAe,GAAuB,IAAI,gCAAgC,EAAE;QACrF,IAAA,CAAA,cAAc,GAAG,CAAC;AAEpB,QAAA,IAAA,CAAA,mBAAmB,GAAwB,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;AACrG,QAAA,IAAA,CAAA,IAAI,GAAG,CAAA,eAAA,EAAkB,OAAO,EAAE,EAAE;QACpC,IAAA,CAAA,iBAAiB,GAAG,KAAK;AACzB,QAAA,IAAA,CAAA,QAAQ,GAAqB;AACjC,YAAA,iBAAiB,EAAE,IAAI;AACvB,YAAA,cAAc,EAAE,KAAK;YACrB,SAAS,EAAE,kBAAkB,CAAC,QAAQ;YACtC,2BAA2B,EAAE,oBAAoB,CAAC;SACrD;QACO,IAAA,CAAA,gBAAgB,GAAG,IAAI;QACvB,IAAA,CAAA,qBAAqB,GAAsB,EAAE;QAC7C,IAAA,CAAA,kBAAkB,GAAG,KAAK;AAqClC;;AAEG;QACa,IAAA,CAAA,YAAY,GAAG,IAAI;AAoBnC;;AAEG;QACa,IAAA,CAAA,MAAM,GAAG,KAAK;AAE9B;;AAEG;AACa,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAA+B;AAquDrF,IAAA;AA7sEG;;;;;;;AAOG;AACH,IAAA,IAAW,4BAA4B,GAAA;AACnC,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC7E,MAAM,4BAA4B,GAAG,aAAa,CAAC,mCAAmC,CAAC,oBAAoB,CAAC;AAC5G,QAAA,OAAO,4BAA4B;IACvC;;;AAkCA;;;;;;;AAOG;IACH,IACW,kBAAkB,CAAC,KAA0B,EAAA;AACpD,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK;AAChC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC;QAC7C,IAAI,CAAC,wBAAwB,GAAG,SAAS,CAAC,mBAAmB,CAAC,KAAK,CAAC;AACpE,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACb,IAAI,CAAC,YAAY,EAAE;QACvB;AACA,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;IAC5B;;AAGA,IAAA,IAAW,kBAAkB,GAAA;QACzB,OAAO,IAAI,CAAC,mBAAmB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;IACjG;IAeA,IAUW,OAAO,CAAC,KAAuB,EAAA;AACtC,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC;QACzD,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;IAC5B;AAEA,IAAA,IAAW,OAAO,GAAA;QACd,OAAO,IAAI,CAAC,QAAQ;IACxB;AAQA;;;;;;;;AAQG;AACH,IAAA,IAEW,gBAAgB,GAAA;QACvB,OAAO,IAAI,CAAC,iBAAiB;IACjC;IAEA,IAAW,gBAAgB,CAAC,KAAK,EAAA;AAC7B,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;IAClC;;AAGA,IAAA,IAAoB,QAAQ,GAAA;AACxB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,OAAOA,KAAK,CAAC,KAAK;QACtB;QACA,OAAO,KAAK,CAAC,QAAQ;IACzB;AAGA;;;;;;;;AAQG;AACH,IAAA,IACW,uBAAuB,GAAA;QAC9B,OAAO,IAAI,CAAC,wBAAwB;IACxC;IAEA,IAAW,uBAAuB,CAAC,QAA4B,EAAA;QAC3D,IAAI,QAAQ,EAAE;AACV,YAAA,IAAI,CAAC,wBAAwB,GAAG,QAAQ;QAC5C;IACJ;AA4CA;;AAEG;AACH,IAAA,IAAoB,cAAc,GAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,OAAO,kCAAkC;QAC7C;aAAO;AACH,YAAA,OAAO,oBAAoB;QAC/B;IACJ;;AAmKA,IAAA,IAAW,SAAS,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,IAAI,kBAAkB;IAClE;;AAEA,IAAA,IAAoB,IAAI,GAAA;AACpB,QAAA,OAAO,OAAO;IAClB;AAOA;;AAEE;AACF,IAAA,IAAoB,oBAAoB,GAAA;AACpC,QAAA,OAAO,KAAK;IAChB;AAQA;;AAEG;AACH,IAAA,IAAW,iBAAiB,GAAA;QACxB,OAAO,IAAI,CAAC,kBAAkB;IAClC;AAoBA;;AAEE;AACF,IAAA,IACW,kBAAkB,GAAA;QACzB,OAAO,IAAI,CAAC,mBAAmB;IACnC;IAEA,IAAW,kBAAkB,CAAC,GAAY,EAAA;AACtC,QAAA,IAAI,CAAC,mBAAmB,GAAG,GAAG;IAClC;AAEA;;AAEG;AACH,IAAA,IACoB,UAAU,GAAA;AAC1B,QAAA,OAAO,OAAO;IAClB;IAEA,IAAoB,UAAU,CAAC,IAAoB,EAAA;IACnD;AAEA;;AAEG;AAEH,IAAA,IACoB,gBAAgB,GAAA;AAChC,QAAA,OAAO,KAAK;IAChB;IAEA,IAAoB,gBAAgB,CAAC,MAAe,EAAA;IACpD;AAOA;;AAEG;AACH,IAAA,IAAoB,WAAW,GAAA;AAC3B,QAAA,OAAO,SAAgB;IAC3B;AAEA;;;AAGG;AACH,IAAA,IAAoB,cAAc,GAAA;AAC9B,QAAA,OAAO,KAAK;IAChB;IAEA,IAAoB,cAAc,CAAC,KAAc,EAAA;IACjD;AAYA;;AAEG;AACH,IAAA,IACoB,YAAY,GAAA;AAC5B,QAAA,OAAO,KAAK;IAChB;IAGA,IAAoB,YAAY,CAAC,IAAa,EAAA;IAC9C;AAEA;;AAEG;AACH,IAAA,IACoB,sBAAsB,GAAA;AACtC,QAAA,OAAO,KAAK;IAChB;IAEA,IAAoB,sBAAsB,CAAC,MAAM,EAAA;IACjD;AAEA;;AAEG;AACH,IAAA,IACoB,UAAU,GAAA;QAC1B,OAAO,UAAU,CAAC,WAAW;IACjC;IAEA,IAAoB,UAAU,CAAC,MAAkB,EAAA;IACjD;AAEA;;AAEG;AACH,IAAA,IACoB,cAAc,GAAA;AAC9B,QAAA,OAAO,KAAK;IAChB;IAEA,IAAoB,cAAc,CAAC,MAAM,EAAA;IACzC;AAEA;;AAEG;AACH,IAAA,IACoB,IAAI,GAAA;AACpB,QAAA,OAAO,CAAC;IACZ;IAEA,IAAoB,IAAI,CAAC,IAAY,EAAA;IACrC;AAEA;;AAEG;AACH,IAAA,IACoB,OAAO,GAAA;AACvB,QAAA,OAAO,CAAC;IACZ;IAEA,IAAoB,OAAO,CAAC,IAAY,EAAA;IACxC;AAEA;;AAEG;AACH,IAAA,IAAoB,aAAa,GAAA;AAC7B,QAAA,OAAO,EAAE;IACb;AAEA;;AAEE;AACF,IAAA,IAAoB,eAAe,GAAA;QAC/B,OAAO,KAAK,CAAC,eAAe;IAChC;AAEA;;AAEE;AACF,IAAA,IAAoB,gBAAgB,GAAA;QAChC,OAAO,KAAK,CAAC,gBAAgB;IACjC;AAEA;;AAEE;AACF,IAAA,IAAoB,aAAa,GAAA;QAC7B,OAAO,KAAK,CAAC,aAAa;IAC9B;AAEA;;AAEG;AACH,IAAA,IAAoB,gBAAgB,GAAA;QAChC,OAAO,KAAK,CAAC,gBAAgB;IACjC;AAEA;;AAEG;IACH,IACoB,gBAAgB,CAAC,MAAc,EAAA;IACnD;AAEA,IAAA,IAAoB,gBAAgB,GAAA;AAChC,QAAA,OAAO,CAAC;IACZ;AAEA;;AAEG;AACH,IAAA,IAAoB,YAAY,GAAA;QAC5B,OAAO,IAAI,CAAC,aAAa;IAC7B;AAIA;;AAEG;AACH,IAAA,IAAoB,yBAAyB,GAAA;QACzC;IACJ;IAEA,IAAoB,yBAAyB,CAAC,IAAsB,EAAA;IACpE;AAEA;;AAEG;AAEH,IAAA,IACoB,WAAW,GAAA;QAC3B;IACJ;IAEA,IAAoB,WAAW,CAAC,IAAa,EAAA;IAC7C;AAEA;;AAEG;AACH,IAAA,IACoB,OAAO,GAAA;AACvB,QAAA,OAAO,EAAE;IACb;IACA,IAAoB,OAAO,CAAC,MAAM,EAAA;IAClC;AAEA;;AAEG;AACH,IAAA,IACoB,eAAe,GAAA;QAC/B;IACJ;IAEA,IAAoB,eAAe,CAAC,MAA2B,EAAA;IAC/D;AAEA;;AAEG;AACH,IAAA,IACoB,sBAAsB,GAAA;QACtC;IACJ;IAEA,IAAoB,sBAAsB,CAAC,MAAkC,EAAA;IAC7E;AAEA;;AAEG;AACH,IAAA,IACoB,qBAAqB,GAAA;QACrC;IACJ;IAEA,IAAoB,qBAAqB,CAAC,MAAe,EAAA;IACzD;AAEA;;AAEG;AACH,IAAA,IAAoB,kBAAkB,GAAA;AAClC,QAAA,OAAO,CAAC;IACZ;AAEA;;AAEG;AACH,IAAA,IAAoB,kBAAkB,GAAA;AAClC,QAAA,OAAO,CAAC;IACZ;AAEA;;AAEG;AACH,IAAA,IACoB,YAAY,GAAA;AAC5B,QAAA,OAAO,KAAK;IAChB;IAEA,IAAoB,YAAY,CAAC,IAAa,EAAA;IAC9C;;AAGA,IAAA,IAAoB,YAAY,GAAA;QAC5B,IAAI,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;AACtD,YAAA,OAAO,EAAE;QACb;QACA,MAAM,cAAc,GAAG,EAAE;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAG;YAC3B,MAAM,IAAI,GAAG,EAAE;AACf,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE;gBAClC,IAAI,OAAO,GAAG,GAAG;gBACjB,IAAI,WAAW,GAAG,KAAK;AACvB,gBAAA,GAAG;oBACC,MAAM,GAAG,GAAG,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;oBACnD,IAAI,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,EAAE;AAC1F,wBAAA,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;wBAC3B,WAAW,GAAG,IAAI;wBAClB;oBACJ;AACA,oBAAA,OAAO,GAAG,OAAO,CAAC,UAAU;gBAChC,CAAC,QAAQ,OAAO;AAChB,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBACd,IAAI,WAAW,EAAE;oBACb;gBACJ;YACJ;AAEJ,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,cAAc;IACzB;AAEA;;AAEG;IACa,QAAQ,GAAA;;AAEpB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QACxB,KAAK,CAAC,QAAQ,EAAE;IACpB;AAEA;;AAEG;IACa,kBAAkB,GAAA;;AAE9B,QAAA,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;AACtB,QAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;AACxB,YAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBACzB,IAAI,CAAC,cAAc,EAAE;YACzB;YACA,IAAI,CAAC,YAAY,EAAE;;AAEnB,YAAA,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAK;;gBAEvC,IAAI,CAAC,YAAY,EAAE;YACvB,CAAC,EAAE,IAAI,CAAC;AACZ,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,IAAI,CAAC,0BAA0B,EAAE;YACjC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ;QACrE;AACA,QAAA,IAAI,IAAI,CAAC,2BAA2B,EAAE;YAClC,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,2BAA2B,CAAC,QAAQ;QAC/E;IACJ;AAEA;;AAEG;IACa,eAAe,GAAA;AAC3B,QAAA,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAK;YACxB,KAAK,CAAC,eAAe,EAAE;AAC3B,QAAA,CAAC,CAAC;IAEN;AAEA;;AAEG;AACI,IAAA,WAAW,CAAC,OAAsB,EAAA;AACrC,QAAA,IAAI,OAAO,CAAC,gBAAgB,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,EAAE;AACvE,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI;AAC9B,YAAA,gBAAgB,CAAC,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QACrJ;IACJ;AAEA;;AAEG;IACI,qBAAqB,CAAC,iBAAiB,GAAG,KAAK,EAAA;QAClD,IAAI,iBAAiB,EAAE;YACnB,IAAI,CAAC,YAAY,EAAE;QACvB;QACA,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC5B;AAEA;;;;;;;AAOG;AACH,IAAA,IAAW,aAAa,GAAA;AACpB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB;AACvC,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,EAAE;AACtB,QAAA,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAC;IACrI;AAEA,IAAA,IAAc,oBAAoB,GAAA;AAC9B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB;AACvC,QAAA,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,EAAE;AACtB,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,UAAU,KAAK,GAAG,CAAC,UAAU,CAAC,CAAC;AAC7I,QAAA,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,MAAM,CAAC,GAAG,oBAAoB,CAAC;AAChE,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,CAAC;IACtH;AAEA,IAAA,IAAuB,YAAY,GAAA;QAC/B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7E,YAAA,OAAO,KAAK;QAChB;AACA,QAAA,MAAM,iBAAiB,GAAG,KAAK,CAAC,YAAY;AAC5C,QAAA,IAAI,iBAAiB,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC9C,YAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK;AAC/B,YAAA,OAAO,IAAI;QACf;AACA,QAAA,OAAO,KAAK;IAChB;AAEA,IAAA,IAAc,eAAe,GAAA;QACzB,OAAO,IAAI,CAAC,WAAW,GAAS,IAAI,CAAC,cAAe,CAAC,eAAe,CAAC,IAAI;IAC7E;;AAGO,IAAA,eAAe,CAAC,QAAa,EAAE,MAAkB,EAAE,OAAwB,EAAE,aAAsB,EAAA;AACtG,QAAA,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;QAC5B,IAAI,QAAQ,EAAE;YACV,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC;YAChD,QAAQ,CAAC,YAAY,EAAE;YACvB,IAAI,aAAa,EAAE;AACf,gBAAA,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;AAChE,gBAAA,QAAQ,CAAC,kBAAkB,GAAG,EAAE;AAChC,gBAAA,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE;YACjC;YACA,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE,SAAS,EAAE;QAC9D;IACJ;;IAGgB,mBAAmB,GAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,cAAc,IAAI,CAAC;IACnC;;AAGA;;;;;;;;;AASG;AACH,IAAA,IAEW,EAAE,GAAA;QACT,OAAO,IAAI,CAAC,IAAI;IACpB;;IAEA,IAAW,EAAE,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK;IACrB;;;AAIA;;;;;AAKG;IACH,IACW,IAAI,CAAC,KAAmB,EAAA;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACb,YAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBACzB,IAAI,CAAC,cAAc,EAAE;YACzB;YACA,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,MAAM,EAAE;QACjB;AACA,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACvB,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;;AAEzD,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;QAC5B;IACJ;;;AAIA;;;;;AAKG;AACH,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAK;IACrB;AAEA;;AAEG;IACI,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAA;QAC/B,OAAO;AACH,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,UAAU,EAAE;AACR,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,EAAE,EAAE;AACP,aAAA;YACD,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK;SAC/C;IACL;AAEA;;AAEG;AACH,IAAA,IAAW,cAAc,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,WAAW,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClJ,YAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,iBAAiB,CAAC;IAC9D;AAEA;;AAEG;AACI,IAAA,iBAAiB,CAAC,GAAG,EAAA;AACxB,QAAA,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5D,IAAI,MAAM,EAAE;AACR,YAAA,OAAO,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,GAAG,IAAI,GAAG,aAAa;QAC/D;aAAO;YACH,OAAO,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,GAAG,IAAI;QACrD;IACJ;AAEA;;AAEG;AACI,IAAA,yBAAyB,CAAC,GAAoB,EAAA;AACjD,QAAA,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE;AACb,YAAA,OAAO,oBAAoB;QAC/B;AACA,QAAA,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5D,QAAA,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5D,IAAI,SAAS,EAAE;AACX,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;QACnE;aAAO,IAAI,MAAM,EAAE;YACf,OAAO,GAAG,CAAC,SAAS;QACxB;aAAO;YACH,OAAO,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC;QAClC;IACJ;AAEA;;AAEG;AACI,IAAA,8BAA8B,CAAC,KAAa,EAAA;QAC/C,QAAQ,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS;IACxC;;AAGA,IAAA,IAAW,qBAAqB,GAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;AAC1B,YAAA,OAAO,SAAS;QACpB;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE;AACnC,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC;QAC5D;QAEA,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC;AACtD,YAAA,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,GAAG,CAAC;AAC7G,YAAA,CAAC;AACL,QAAA,OAAO,IAAI,CAAC,SAAS,GAAG,aAAa;IACzC;;AAGA,IAAA,IAAW,qBAAqB,GAAA;AAC5B,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,GAAG,CAAC;IAClD;;AAGA,IAAA,IAAW,mBAAmB,GAAA;AAC1B,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,GAAG,CAAC;IAChD;;AAGA,IAAA,IAAW,kBAAkB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,aAAa,IAAI,CAAC;IAClC;;AAGA,IAAA,IAAW,aAAa,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE;IACrE;;IAGA,IAAW,oBAAoB,CAAC,KAAwB,EAAA;AACpD,QAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK;IACtC;AAEA,IAAA,IAAW,oBAAoB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,aAAa;IAC3D;;AAGA,IAAA,IAAW,gBAAgB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE;IACxE;;AAGA,IAAA,IAAW,gBAAgB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE;IACxE;;AAGA,IAAA,IAAW,MAAM,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE;IACvE;AAEO,IAAA,YAAY,CAAC,GAAuB,EAAA;AACvC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;AACnD,QAAA,MAAM,QAAQ,GAAG,CAAC,KAAK;QACvB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC/C,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,QAAQ,CAAC;QAClC,IAAI,CAAC,MAAM,EAAE;IACjB;AAEA;;AAEG;AACa,IAAA,qBAAqB,CAAC,SAAiB,EAAA;AACnD,QAAA,OAAO,KAAK;IAChB;AAEA;;AAEG;AACa,IAAA,sBAAsB,CAAC,KAAwC,EAAA;QAC3E;IACJ;AAEA;;AAEG;IACa,SAAS,GAAA;IACzB;AAEA;;AAEG;IACa,WAAW,GAAA;IAC3B;AAEA;;AAEG;AACa,IAAA,SAAS,CAAC,MAAW,EAAA;IACrC;AAEA;;AAEG;AACa,IAAA,WAAW,CAAC,MAAW,EAAA;IACvC;AAEA;;AAEG;AACH,IAAA,IAAoB,UAAU,GAAA;QAC1B;IACJ;AAEA;;AAEG;AACH,IAAA,IACoB,YAAY,GAAA;QAC5B;IACJ;IAEA,IAAoB,YAAY,CAAC,MAAc,EAAA;IAC/C;AAEA;;AAEG;IACa,UAAU,CAAC,OAA2B,EAAE,OAA2B,EAAE,IAAA,GAAqB,YAAY,CAAC,eAAe,EAAA;IACtI;AAEA;;AAEG;AACa,IAAA,MAAM,CAAC,KAAU,EAAA;IACjC;AAEA;;AAEG;AACa,IAAA,SAAS,CAAC,YAAiB,EAAA;IAC3C;AAEA;;AAEG;AACa,IAAA,UAAU,CAAC,MAAW,EAAE,YAAiB,EAAE,OAAe,EAAA;IAC1E;AAEA;;AAEG;IACa,SAAS,CAAC,MAAW,EAAE,YAAiB,EAAA;IACxD;AAEA;;AAEG;IACa,eAAe,CAAC,GAAG,KAAK,EAAA;IACxC;AAEA;;AAEG;IACa,gBAAgB,CAAC,GAAG,KAAK,EAAA;IACzC;AAEA;;AAEG;IACa,SAAS,CAAC,WAAwC,EAAE,MAAO,EAAA;QACvE;IACJ;AAEA;;AAEG;IACa,WAAW,CAAC,WAAwC,EAAE,MAAO,EAAA;QACzE;IACJ;AAEA;;AAEG;AACa,IAAA,MAAM,CAAC,MAAW,EAAE,MAAe,EAAE,IAAc,EAAA;QAC/D;IACJ;AAEA;;AAEG;IACa,QAAQ,CAAC,MAAW,EAAE,IAAc,EAAA;QAChD;IACJ;AAEA;;AAEG;AACH,IAAA,IAAoB,eAAe,GAAA;QAC/B;IACJ;AAEA;;AAEG;AACH,IAAA,IAAoB,kBAAkB,GAAA;QAClC;IACJ;AAEA;;AAEG;AACH,IAAA,IAAoB,oBAAoB,GAAA;QACpC;IACJ;AAEA;;AAEG;AACH,IAAA,IAAoB,iBAAiB,GAAA;QACjC;IACJ;AAEA;;AAEG;AACH,IAAA,IAAoB,cAAc,GAAA;AAC9B,QAAA,OAAO,EAAE;IACb;AAEA;;AAEG;AACa,IAAA,2BAA2B,CAAC,gBAAkC,EAAA;IAC9E;AAEA;;AAEG;AACa,IAAA,4BAA4B,CAAC,aAAsB,EAAA;IACnE;AAEA;;AAEG;AACa,IAAA,OAAO,CAAC,OAAO,GAAG,IAAI,EAAE,MAAc,EAAA;QAClD;IACJ;AAEA;;AAEG;IACa,eAAe,CAAC,MAAW,EAAE,QAAkB,EAAA;IAC/D;AAEA;;AAEG;AACa,IAAA,kBAAkB,CAAC,MAAc,EAAA;IACjD;AAEA;;AAEG;AACa,IAAA,WAAW,KAAK;AAEhC;;AAEE;AACc,IAAA,aAAa,CAAC,iBAA2B,EAAE,QAAQ,GAAG,IAAI,EAAA;AACtE,QAAA,OAAO,CAAC;IACZ;AAEA;;AAEE;AACc,IAAA,QAAQ,CAAC,KAAa,EAAE,cAAwB,EAAE,WAAqB,EAAA;AACnF,QAAA,OAAO,CAAC;IACZ;AAEA;;AAEE;AACc,IAAA,QAAQ,CAAC,KAAa,EAAE,cAAwB,EAAE,WAAqB,EAAA;AACnF,QAAA,OAAO,CAAC;IACZ;AAEA;;AAEE;AACc,IAAA,WAAW,CAAC,YAAoB,EAAE,kBAA0B,EACxE,WAA4C,IAAI,EAAA;QAChD,OAAO,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE,kBAAkB,EAAE,QAAQ,CAAC;IACxE;AAEA;;AAEE;AACc,IAAA,eAAe,CAAC,YAAoB,EAAE,kBAA0B,EAC5E,WAA4C,IAAI,EAAA;QAChD,OAAO,KAAK,CAAC,eAAe,CAAC,YAAY,EAAE,kBAAkB,EAAE,QAAQ,CAAC;IAC5E;AAEA;;AAEE;IACc,mBAAmB,CAAC,UAAU,GAAG,KAAK,EAAA;AAClD,QAAA,OAAO,KAAK,CAAC,mBAAmB,CAAC,UAAU,CAAC;IAChD;AAEA;;AAEG;AACH,IAAA,IAAoB,WAAW,GAAA;QAC3B,OAAO,IAAI,CAAC,UAAU;IAC1B;AAEO,IAAA,yBAAyB,CAAC,GAAuB,EAAA;AACpD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;;AAEnD,QAAA,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,GAAG,KAAK;IAChE;IAEO,cAAc,CAAC,GAAuB,EAAE,QAAiB,EAAA;AAC5D,QAAA,IAAI,CAAC,GAAG;YAAE;AACV,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,YAAA,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;YAClH,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;YAClF,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC;YACzC,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC;AACnD,YAAA,IAAI,SAAS,GAAG,YAAY,EAAE;;AAE1B,gBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC;AACjC,gBAAA,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;YACnD;iBAAO;;AAEH,gBAAA,GAAG,CAAC,cAAc,GAAG,SAAS;AAC9B,gBAAA,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC;YAC5C;QACJ;aAAO;AACH,YAAA,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;YACxG,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACxF,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACvF,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC;YACzC,IAAI,QAAQ,EAAE;AACV,gBAAA,WAAW,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;YACpD;iBAAO;AACH,gBAAA,WAAW,CAAC,cAAc,GAAG,SAAS;YAC1C;QACJ;IACJ;AAEA;;AAEE;IACc,YAAY,GAAA;QACxB,KAAK,CAAC,YAAY,EAAE;IACxB;AAEA;;AAEE;AACc,IAAA,aAAa,CAAC,KAAkC,EAAA;AAC5D,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC1B,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,wBAAwB,EAAE;QAC/D;AAEA,QAAA,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC;IAC9B;AAEA;;;;;;;;;;AAUG;AACI,IAAA,oBAAoB,CAAC,SAA0B,EAAA;QAClD,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,kBAAkB,CAAC,GAAG,EAAE;YAC7D,MAAM,WAAW,GAAa,SAAS,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAkB,KAAK,CAAC,CAAC,UAAU,CAAC;YACtG,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC;YAC9D,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AACjG,YAAA,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;AAC5G,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;gBAC7B,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,UAAU,CAAC;AAC5G,gBAAA,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;YACjC;YACA,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC;AACrD,YAAA,IAAI,SAAS,CAAC,KAAK,KAAK,MAAM,EAAE;AAC5B,gBAAA,SAAS,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;YAC/C;iBAAO;AACH,gBAAA,SAAS,CAAC,KAAK,GAAG,SAAS;YAC/B;YACA,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;QAC5B;IACJ;AAEA;;;;;;;;;;;AAWG;AACI,IAAA,iBAAiB,CAAC,SAA0B,EAAE,oBAAwC,EAAE,KAAc,EAAA;QACzG,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC;AACvE,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;YACrB,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC;QAChD;aAAO;AACH,YAAA,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;QACpC;AACA,QAAA,IAAI,oBAAoB,KAAK,kBAAkB,CAAC,MAAM,EAAE;YACpD,IAAI,CAAC,YAAY,EAAE;QACvB;QACA,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,CAAC;AAC3G,QAAA,IAAI,oBAAoB,KAAK,kBAAkB,CAAC,MAAM,EAAE;AACpD,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,wBAAwB,EAAE;YAC3D,IAAI,CAAC,MAAM,EAAE;QACjB;AACA,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACvF;AAEA;;;;;;;;;;;AAWG;AACI,IAAA,aAAa,CAAC,SAA0B,EAAE,oBAAwC,EAAE,KAAc,EAAA;QACrG,MAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;QAC3D,IAAI,kBAAkB,KAAK,IAAI;YAAE;;AAEjC,QAAA,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC;;QAExC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,oBAAoB,EAAE,KAAK,CAAC;AAE9D,QAAA,IAAI,kBAAkB,KAAK,kBAAkB,CAAC,MAAM,EAAE;YAClD,IAAI,CAAC,YAAY,EAAE;QACvB;IACJ;AAEA;;;;;;;;;;AAUG;AACI,IAAA,eAAe,CAAC,SAA0B,EAAA;QAC7C,MAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;AAC3D,QAAA,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC;AACxC,QAAA,IAAI,kBAAkB,KAAK,kBAAkB,CAAC,MAAM,EAAE;YAClD,IAAI,CAAC,YAAY,EAAE;QACvB;AACA,QAAA,IAAI,kBAAkB,KAAK,kBAAkB,CAAC,MAAM,EAAE;YAClD,IAAI,CAAC,MAAM,EAAE;QACjB;QACA,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC5B;AAEA;;;;;;;;;AASG;AACI,IAAA,eAAe,CAAC,SAA0B,EAAA;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;QAChD,IAAI,OAAO,KAAK,IAAI;YAAE;QACtB,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;AACpD,QAAA,SAAS,CAAC,OAAO,GAAG,CAAC,SAAS,CAAC,OAAO;AACtC,QAAA,IAAI,OAAO,KAAK,kBAAkB,CAAC,MAAM,EAAE;YACvC,IAAI,CAAC,YAAY,EAAE;QACvB;QACA,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,MAAM,EAAE;YACxC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC;QAC3D;QACA,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,uBAAuB,EAAE,OAAO,EAAE,CAAC;AACxF,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AACxB,QAAA,IAAI,OAAO,KAAK,kBAAkB,CAAC,MAAM,EAAE;YACvC,IAAI,CAAC,MAAM,EAAE;QACjB;AACA,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACvF;AAEA;;;;;;;;;;AAUG;IACI,aAAa,CAAC,KAAkB,EAAE,KAAc,EAAA;AACnD,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE;AACjC,YAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,EAAE;QACvC;AACA,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM;AAC7C,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;YACrB,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC;QAClC;aAAO;AACH,YAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACtB;QACA,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;QACxB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;AAClC,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACvF;AAEA;;;;;;;;;;AAUG;IACI,SAAS,CAAC,KAAkB,EAAE,KAAc,EAAA;AAC/C,QAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAAE;;AAE1D,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;;AAEvB,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC;IACpC;AAEA;;;;;;;;;;AAUG;AACI,IAAA,WAAW,CAAC,KAAkB,EAAA;AACjC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM;QAC7C,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AAC1C,QAAA,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE;AACrB,YAAA,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;YAC9B,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;AAClC,YAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACvF;IACJ;AAEA;;;;;;;;;AASG;AACI,IAAA,WAAW,CAAC,KAAkB,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAAE;AAC1D,QAAA,KAAK,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO;QAC9B,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC;QAClE,IAAI,CAAC,MAAM,EAAE;AACb,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACvF;AAEA;;;;;;;AAOG;IACI,aAAa,CAAC,SAA0B,EAAE,aAA+B,EAAA;QAC5E,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;AACtD,QAAA,SAAS,CAAC,aAAa,GAAG,aAAa;;QAEvC,IAAI,GAAG,GAAG,SAAS;QACnB,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,kBAAkB,CAAC,QAAQ,EAAE;AACxD,YAAA,OAAO,GAAG,CAAC,UAAU,EAAE;gBACnB,GAAG,CAAC,UAAU,CAAC,aAAa,GAAG,SAAS,CAAC,aAAa;AACtD,gBAAA,GAAG,GAAG,GAAG,CAAC,UAAU;YACxB;QACJ;QAEA,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC;AAC/E,QAAA,IAAI,aAAa,KAAK,kBAAkB,CAAC,MAAM,EAAE;YAC7C,IAAI,CAAC,YAAY,EAAE;QACvB;AACA,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AACxB,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACvF;AAEA;;;;;;;;;;;;AAYG;AACI,IAAA,eAAe,CAAC,SAA0B,EAAE,KAAU,EAAE,yBAA2E,EAAA;AACtI,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,EAAE,yBAAyB,CAAC;QACpF,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;AACtD,QAAA,IAAI,aAAa,KAAK,kBAAkB,CAAC,MAAM,EAAE;YAC7C,IAAI,CAAC,YAAY,EAAE;QACvB;AACA,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC5B;AAEA;;AAEG;AACI,IAAA,qBAAqB,CAAC,UAAkB,EAAA;AAC3C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,kBAAkB,CAAC,QAAQ;AACtE,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI;YAC5B,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;AACnD,QAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,UAAU,KAAK,UAAU,CAAC;AACpF,QAAA,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC;AACjC,QAAA,OAAO,GAAG;IACd;AAEA;;AAEG;AACI,IAAA,mBAAmB,CAAC,SAA6B,EAAA;QACpD,QAAQ,SAAS;YACb,KAAK,kBAAkB,CAAC,GAAG;AACvB,gBAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE;AAC/B,oBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,GAAG,EAAE;gBACrC;AACA,gBAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI;YACvC,KAAK,kBAAkB,CAAC,MAAM;AAC1B,gBAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;AAClC,oBAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,GAAG,EAAE;gBACxC;AACA,gBAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO;YAC1C,KAAK,kBAAkB,CAAC,MAAM;AAC1B,gBAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;AAClC,oBAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,GAAG,EAAE;gBACxC;AACA,gBAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO;AAC1C,YAAA;AACI,gBAAA,OAAO,IAAI;;IAEvB;AAEA;;AAEG;IACI,wBAAwB,CAAC,SAA0B,EAAE,QAAgB,EAAA;QACxE,MAAM,iBAAiB,GAAG,SAAS,CAAC,KAAK,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ,IAAI,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvH,IAAI,iBAAiB,EAAE;AACnB,YAAA,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG;QACpF;aAAO;AACH,YAAA,SAAS,CAAC,KAAK,GAAG,QAAQ,GAAG,IAAI;QACrC;;QAGA,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC5B;AAEA;;;AAGE;AACQ,IAAA,wBAAwB,CAAC,SAAS,EAAA;QACxC,MAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;QAC3D,IAAI,kBAAkB,KAAK,IAAI;YAAE;QACjC,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC;QACnE,MAAM,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC;AACtD,QAAA,cAAc,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;IAC5B;AAEU,IAAA,gBAAgB,CAAC,SAA0B,EAAA;QACjD,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,kBAAkB,CAAC,GAAG;YACrG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,kBAAkB,CAAC,MAAM;AACpG,gBAAA,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC9G,oBAAA,kBAAkB,CAAC,MAAM,GAAG,IAAI;IAChD;AAEU,IAAA,6BAA6B,CAAC,WAA4C,EAAA;QAChF,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,aAAa,CAAC;AACtE,QAAA,OAAO,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,OAAO;IAClD;AAEU,IAAA,qBAAqB,CAAC,QAAsB,EAAA;AAClD,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB;AACzC,QAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACrB,MAAM,kBAAkB,GAAG,EAAE;AAC7B,YAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;gBACtB,IAAI,YAAY,+BAA+B;oBAC3C,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC;AACjE,oBAAA,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC;AAClF,YAAA,CAAC,CAAC;AACF,YAAA,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,CAAC;AACzE,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC;AAC3F,YAAA,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,YAAY,CAAC;AACtF,gBAAA,UAAU,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,gBAAgB,CAAC;AAClF,YAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,EAAE,WAAW,CAAC;QAC7D;AACA,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3D,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAE/D,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AACrB,YAAA,OAAO,IAAI;QACf;aAAO;YACH,OAAO,KAAK,GAAG,IAAI;QACvB;IACJ;;AAGA,IAAA,IAAW,mBAAmB,GAAA;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,kBAAkB,CAAC,UAAU;IACnE;AAEA;;AAEE;AACF,IAAA,IAAW,iBAAiB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;IACjC;AAEA;;AAEE;AACF,IAAA,IAAW,yBAAyB,GAAA;;AAEhC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,GAAG,EAAE;QAC7C,OAAO,CAAA,EAAG,SAAS,CAAA,EAAA,CAAI;IAC3B;AAEA;;AAEE;AACF,IAAA,IAAW,yBAAyB,GAAA;;AAEhC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,GAAG,CAAC;QAC5C,OAAO,CAAA,EAAG,SAAS,CAAA,EAAA,CAAI;IAC3B;;AAGA,IAAA,IAAoB,gBAAgB,GAAA;AAChC,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,IAAI,IAAI,CAAC,UAAU,CAAC,0BAA0B,EAAE;YACjF;QACJ;QACA,OAAO,KAAK,CAAC,gBAAgB;IACjC;;AAGA,IAAA,IAAW,yBAAyB,GAAA;AAChC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU;QAC7C,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE;AACtF,YAAA,OAAO,IAAI;QACf;QAEA,MAAM,aAAa,GAAG,IAAI,CAAC,6BAA6B,CAAC,MAAM,GAAG,CAAC;AAC/D,YAAA,IAAI,CAAC,6BAA6B,CAAC,OAAO,EAAE;AAC5C,YAAA,IAAI,CAAC,wBAAwB,CAAC,6BAA6B,CAAC,OAAO,EAAE;QAEzE,MAAM,yBAAyB,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;AACxG,QAAA,MAAM,YAAY,GAAG,yBAAyB,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC;AAE5F,QAAA,OAAO,YAAY,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,CAAA,CAAA,EAAI,YAAY,CAAC,KAAK,CAAA,CAAE,GAAG,IAAI;IACnE;IAEU,aAAa,CAAC,WAAuB,EAAE,KAAc,EAAA;AAC3D,QAAA,IAAI,CAAC,WAAW;YAAE;AAClB,QAAA,WAAW,CAAC,MAAM,GAAG,KAAK;QAC1B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC;AACpD,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB;AACxC,YAAA,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AACvH,YAAA,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;AACpD,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB;AAC5C,YAAA,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACtG,YAAA,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;AACnD,QAAA,aAAa,CAAC,OAAO,CAAC,KAAK,IAAG;AAC1B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK;YACjE,IAAI,QAAQ,EAAE;AACV,gBAAA,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;YAC9C;iBAAO;AACH,gBAAA,KAAK,CAAC,cAAc,GAAG,SAAS;YACpC;AACJ,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;AACrD,YAAA,iBAAiB,CAAC,OAAO,CAAC,KAAK,IAAG;AAC9B,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK;AACjE,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC;AACvC,YAAA,CAAC,CAAC;QACN;IACJ;AAEmB,IAAA,aAAa,CAAC,IAAW,EAAA;AACxC,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;IACzB;AAEA;;AAEG;IACgB,sBAAsB,GAAA;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;AACtC,QAAA,OAAO,GAAG,GAAG,IAAI,CAAC,0BAA0B,GAAG,CAAC,GAAG,IAAI,CAAC,uBAAuB;IACnF;AAEmB,IAAA,uBAAuB,CAAC,KAAK,EAAA;AAC5C,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU;QAC1C,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,WAAW,IAAG;AACjD,YAAA,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC;AACrC,QAAA,CAAC,CAAC;AACF,QAAA,KAAK,CAAC,uBAAuB,CAAC,KAAK,CAAC;IACxC;AAEmB,IAAA,qBAAqB,CAAC,KAAK,EAAA;AAC1C,QAAA,IAAI,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC,IAAG;AAC5C,YAAA,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;AACrB,QAAA,CAAC,CAAC;AACF,QAAA,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC;IACtC;AAEA;;AAEG;IACgB,mBAAmB,GAAA;QAClC,IAAI,OAAO,GAAG,EAAE;AAChB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,IAAI,CAAC,wBAAwB,CAAC;AAChF,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,wBAAwB,EAAE;QAC3D,MAAM,2BAA2B,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC;QAC7G,MAAM,WAAW,GAAG,2BAA2B,CAAC,MAAM,GAAG,CAAC,GAAG,aAAa,CAAC,mCAAmC,CAAC,2BAA2B,CAAC,GAAG,EAAE;QAChJ,IAAI,UAAU,GAAG,IAAI;AACrB,QAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,YAAA,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC;QACtF;AACA,QAAA,IAAI,SAAS;AACb,QAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,cAAc,IAAI,IAAI,CAAC,kBAAkB,CAAC,cAAc,YAAY,2BAA2B,EAAE;YACzH,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC;AAClD,YAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE;YACzB,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;YACxF,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;AAC/C,YAAA,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAChG,gBAAA,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC7E,gBAAA,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACpF,YAAA,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC;QACrD;aAAO;YACH,SAAS,GAAG,SAAS,CAAC,kBAAkB,CACpC,UAAU,EACV,IAAI,CAAC,gBAAgB,EACrB,kBAAkB,CAAC,MAAM,EACzB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,uBAAuB,CAC/B;QACL;QACA,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,UAAU,CAAC;AAC7D,QAAA,IAAI,CAAC,kBAAkB,GAAG,OAAO;;QAEjC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,KAAI;YAC1C,IAAI,KAAK,EAAE;gBACP,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,GAAG,IAAI,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC,cAAc,CAAC;gBACpG,MAAM,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,GAAG,IAAI,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC,cAAc,CAAC;AACzG,gBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,KAAK,CAAC;gBACzC,IAAI,kBAAkB,EAAE;AACpB,oBAAA,kBAAkB,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;gBAC3D;YACJ;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;QAC3B,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,MAAM,EAAE;IACjB;IAEU,wBAAwB,GAAA;QAC9B,MAAM,OAAO,GAAG,EAAE;QAClB,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;YACtC,MAAM,GAAG,GAAG,eAAe,CAAC,kBAAkB,EAAE,EAAE,mBAAmB,EAAE,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1H,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,GAAG,CAAC,UAAU;AACnC,YAAA,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,UAAU;YACvD,GAAG,CAAC,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,0BAA0B;YAC7D,GAAG,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,oBAAoB;YAClD,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,KAAK,SAAS,GAAG,IAAI,GAAG,GAAG,CAAC,QAAQ;YACxE,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;AAChD,YAAA,GAAG,CAAC,QAAQ,CAAC,mBAAmB,GAAG,KAAK;AACxC,YAAA,GAAG,CAAC,iBAAiB,CAAC,aAAa,EAAE;AACrC,YAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC9B,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,OAAO;IAClB;IAEmB,kBAAkB,CAAC,kBAAkB,GAAG,IAAI,EAAA;AAC3D,QAAA,KAAK,CAAC,kBAAkB,CAAC,kBAAkB,CAAC;AAC5C,QAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAC9B,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;gBAC5C,qBAAqB,CAAC,MAAK;oBACvB,IAAI,CAAC,wBAAwB,EAAE;AACnC,gBAAA,CAAC,CAAC;AACN,YAAA,CAAC,CAAC;QACN;IACJ;AAEU,IAAA,oBAAoB,CAAC,UAA2B,EAAA;AACtD,QAAA,IAAI,iBAAiB;AACrB,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE;AAC7G,YAAA,iBAAiB,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,KAAK,UAAU,CAAC;QACxF;aAAO;AACH,YAAA,iBAAiB,GAAG,IAAI,CAAC,6BAA6B,CAAC,OAAO,EAAE;QACpE;AACA,QAAA,OAAO,iBAAiB;IAC5B;IAEU,wBAAwB,GAAA;QAC9B,IAAI,CAAC,IAAI,CAAC,uBAAuB;YAAE;AACnC,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACzC,YAAA,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM,EAAE;gBACtB,MAAM,aAAa,GAAG,EAAE;gBACxB,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;gBACnE,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC;gBACxD,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AACjG,gBAAA,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC5G,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,IAAI,CAAC,CAAC,CAAC;AACxF,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;oBAC7B,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,GAAG,CAAC,UAAU,CAAC;AACtG,oBAAA,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;gBACjF;gBACA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC;AACtC,gBAAA,IAAI,GAAG,KAAK,CAAC,EAAE;;oBAEX;gBACJ;AACA,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC;AACrD,gBAAA,GAAG,CAAC,SAAS,GAAG,OAAO;YAC3B;QACJ;AAEA,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE;QAC7C;IACJ;;AAGA,IAAA,IAAW,uBAAuB,GAAA;QAC9B,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E;AAEU,IAAA,gBAAgB,CAAC,MAAgB,EAAA;AACvC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,wBAAwB;AACzD,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AACvE,QAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAe;QACxC,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACjE,QAAA,OAAO,CAAC,OAAO,CAAC,GAAG,IAAG;YAClB,IAAI,gBAAgB,GAAG,SAAS;YAChC,MAAM,IAAI,GAAG,EAAE;YACf,IAAI,KAAK,GAAG,CAAC;AACb,YAAA,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;AACnB,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBACd,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBACpC,IAAI,eAAe,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC;gBACnD,IAAI,CAAC,eAAe,EAAE;AAClB,oBAAA,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,KAAK,CAAC;AACtD,oBAAA,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,sBAAsB,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAe,EAAE,SAAS,EAAE,sBAAsB,EAAE,CAAC;AACvK,oBAAA,eAAe,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC;gBACnD;AACA,gBAAA,gBAAgB,GAAG,eAAe,CAAC,QAAQ;AAC3C,gBAAA,KAAK,EAAE;YACX;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,SAAS;IACpB;AACU,IAAA,uBAAuB,CAAC,MAAwB,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,EAAA;QAC3E,IAAI,OAAO,GAAG,EAAE;AAChB,QAAA,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE;YACnB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;gBAC1B,MAAM,GAAG,GAAG,eAAe,CAAC,kBAAkB,EAAE,EAAE,mBAAmB,EAAE,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC1H,gBAAA,IAAI,cAAc,GAAG,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;gBAExG,IAAI,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,OAAO,KAAK,cAAc,KAAK,kBAAkB,CAAC,QAAQ,IAAI,cAAc,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE;AACrJ,oBAAA,cAAc,GAAG,kBAAkB,CAAC,MAAM;gBAC9C;gBAEA,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,WAAW;gBACvC,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM;AACjC,gBAAA,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM;AAC5B,gBAAA,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI;AAC5B,gBAAA,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,cAAc;gBACtC,GAAG,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS;AACxC,gBAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC9B,YAAA,CAAC,CAAC;AACF,YAAA,OAAO,OAAO;QAClB;QACA,MAAM,aAAa,GAAG,MAAM;AAC5B,QAAA,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;YAC5B,IAAI,cAAc,GAAG,IAAI;AACzB,YAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;gBACnB,cAAc,GAAG,KAAK;YAC1B;YACA,IAAI,cAAc,KAAK,KAAK,CAAC,QAAQ,IAAI,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE;AACxG,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC;AAEtF,gBAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACnD,oBAAA,SAAS,CAAC,4BAA4B,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;gBACvE;AAEA,gBAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AACjB,gBAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,oBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;oBAExF,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;wBACrC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AACrC,wBAAA,SAAS,CAAC,4BAA4B,CAAC,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;AACzF,oBAAA,CAAC,CAAC;AAEF,oBAAA,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC;AACnC,oBAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC;gBAC7C;YAEJ;iBAAO,IAAI,cAAc,EAAE;AACvB,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC;AACpE,gBAAA,IAAI,KAAK,CAAC,UAAU,EAAE;AAClB,oBAAA,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc;gBAC5C;AACA,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC;gBACxE,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;AACxE,gBAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AACjB,gBAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,oBAAA,IAAI,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;oBACrF,MAAM,cAAc,GAAG,gBAAgB;;AAEvC,oBAAA,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC;AAClC,oBAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;AAClC,oBAAA,IAAI,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE;AAC5B,wBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC;AACxE,wBAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AAErB,wBAAA,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC;AACvF,wBAAA,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC;AACvC,wBAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC;oBAC7C;gBAEJ;qBAAO;AACH,oBAAA,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC;AACpC,oBAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;AAClC,oBAAA,IAAI,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE;AAC5B,wBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC;AACzE,wBAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;oBACzB;gBACJ;YACJ;AACJ,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,OAAO;IAClB;IAGU,cAAc,GAAA;QACpB,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE;AAEhB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;QAC5C,MAAM,gBAAgB,GAAsB,EAAE;QAC9C,MAAM,aAAa,GAAsB,EAAE;QAC3C,MAAM,MAAM,GAAkB,EAAE;QAChC,IAAI,WAAW,GAAG,IAAI;AACtB,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACrB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACtD,QAAQ,QAAQ;AACZ,gBAAA,KAAK,QAAQ;oBACT;AACI,wBAAA,MAAM,KAAK,GAAgB;AACvB,4BAAA,MAAM,EAAE,KAAK;AACb,4BAAA,WAAW,EAAE,KAAK;AAClB,4BAAA,QAAQ,EAAE,QAAQ;AAClB,4BAAA,SAAS,EAAE;AACP,gCAAA,GAAG,EAAE,KAAK;AACV,gCAAA,KAAK,EAAE,KAAK;AACZ,gCAAA,cAAc,EAAE;AACnB,6BAAA;AACD,4BAAA,OAAO,EAAE;yBACZ;AACD,wBAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;wBAClB;oBACJ;AACJ,gBAAA,KAAK,MAAM;oBACP;AACI,wBAAA,MAAM,SAAS,GAAoB,IAAI,qBAAqB,CACxD;AACI,4BAAA,UAAU,EAAE,KAAK;AACjB,4BAAA,OAAO,EAAE,WAAW;AACpB,4BAAA,QAAQ,EAAE;AACb,yBAAA,CACJ;AACD,wBAAA,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;wBAC7B,WAAW,GAAG,KAAK;wBACnB;oBACJ;gBACJ,SAAS;AACL,oBAAA,MAAM,SAAS,GAAoB;AAC/B,wBAAA,UAAU,EAAE,KAAK;AACjB,wBAAA,OAAO,EAAE,KAAK;AACd,wBAAA,QAAQ,EAAE;qBACb;AACD,oBAAA,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;oBAChC;gBACJ;;AAER,QAAA,CAAC,CAAC;AACF,QAAA,MAAM,MAAM,GAAwB;AAChC,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,MAAM,EAAE;SACX;AACD,QAAA,IAAI,CAAC,kBAAkB,GAAG,MAAM;IACpC;AAEU,IAAA,wBAAwB,CAAC,KAAU,EAAE,IAAS,EAAE,MAAkB,EAAE,OAAgB,EAAA;AAC1F,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK;AACvB,QAAA,MAAM,GAAG,GAAG,OAAO;AACf,YAAA,eAAe,CAAC,uBAAuB,EAAE,EAAE,mBAAmB,EAAE,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AACnH,YAAA,eAAe,CAAC,kBAAkB,EAAE,EAAE,mBAAmB,EAAE,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AAClH,QAAA,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG;AAClH,QAAA,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,GAAG;AACxB,QAAA,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM;AAC5B,QAAA,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE;YACvB,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK;QAC9C;QACA,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACtC,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,eAAe,EAAE,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAC5G,GAAG,CAAC,QAAQ,CAAC,SAAS,GAAG,eAAe,EAAE,SAAS;AACnD,QAAA,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI;AAC5B,QAAA,GAAG,CAAC,iBAAiB,CAAC,aAAa,EAAE;QACrC,OAAO,GAAG,CAAC,QAAQ;IACvB;AAEU,IAAA,2BAA2B,CAAC,GAAoB,EAAA;AACtD,QAAA,IAAI,GAAG,CAAC,KAAK,EAAE;YACX,OAAO,GAAG,CAAC,KAAK;QACpB;AACA,QAAA,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI;IACrC;AAEU,IAAA,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAA;QAC1D,MAAM,IAAI,GAAG,EAAE;AACf,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;QAChC,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,GAAG,KAAK;AACpD,QAAA,MAAM,SAAS,GAAG,WAAW,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAChE,QAAA,MAAM,MAAM,GAAG,WAAW,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAG;YACtB,MAAM,GAAG,GAAG,eAAe,CAAC,kBAAkB,EAAE,EAAE,mBAAmB,EAAE,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC1H,YAAA,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,MAAM;AACnD,YAAA,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,wBAAwB,GAAG,GAAG,CAAC,MAAM;AACxF,YAAA,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM;YAC5B,IAAI,WAAW,EAAE;gBACb,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,GAAG,GAAG,UAAU,GAAG,IAAI;YAC3F;AACA,YAAA,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM;YAC5B,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB;YAC7C,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAClF,GAAG,CAAC,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS;AACtC,YAAA,GAAG,CAAC,iBAAiB,CAAC,aAAa,EAAE;AACrC,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC3B,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,IAAI;IACf;AAmBA;;AAEE;AACF,IAAA,IAAoB,QAAQ,GAAA;AACxB,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAC7E,QAAA,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;;AAE/D,YAAA,OAAO,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,6BAA6B;QAC5E;QACA,OAAO,KAAK,CAAC,QAAQ;IACzB;AAEQ,IAAA,cAAc,CAAC,WAAgC,EAAA;QACnD,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;AACxD,QAAA,UAAU,CAAC,OAAO,CAAC,GAAG,IAAG;AACrB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;AAChC,QAAA,CAAC,CAAC;AACF,QAAA,MAAM,MAAM,GAAG,WAAW,EAAE,MAAM;AAClC,QAAA,MAAM,EAAE,OAAO,CAAC,GAAG,IAAG;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5B,QAAA,CAAC,CAAC;IACN;AAEU,IAAA,kBAAkB,CAAC,UAAkB,EAAA;AAC3C,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,UAAU,KAAK,UAAU,CAAC;IACvF;IAEU,mBAAmB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc;YAC9B,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,aAAa,CAAC,YAAY,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,aAAa,CAAC,YAAY,IAAI,CAAC,CAAC;AAC1I,YAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY;IAChD;IAEmB,sBAAsB,GAAA;QACrC,KAAK,CAAC,sBAAsB,EAAE;AAC9B,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;;YAE1B,IAAI,CAAC,cAAc,EAAE;QACzB;IACJ;AAEA;;AAEG;IACI,SAAS,CAAC,KAAa,EAAE,IAAU,EAAA;AACtC,QAAA,IAAI,GAAY;QAEhB,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;QAC/C,MAAM,GAAG,GAAG,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;AAG5C,QAAA,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE;YACb,GAAG,GAAG,IAAI,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;QAC/C;AACA,QAAA,OAAO,GAAG;IACd;8GAryES,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,yQAyKV,gBAAgB,CAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAyVhB,gBAAgB,CAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,CAAA,kBAAA,EAAA,kBAAA,EAwBhB,gBAAgB,kDA4ChB,gBAAgB,CAAA,EAAA,sBAAA,EAAA,CAAA,wBAAA,EAAA,wBAAA,EAYhB,gBAAgB,CAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,EAsBhB,gBAAgB,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAmGhB,gBAAgB,uLA2ChB,gBAAgB,CAAA,EAAA,YAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAyBhB,gBAAgB,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,aAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,kCAAA,EAAA,oCAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,WAAA,EAAA,sCAAA,EAAA,uBAAA,EAAA,SAAA,EAAA,SAAA,EAAA,EAAA,EAAA,SAAA,EAp0BzB;YACP,kBAAkB;YAClB,wBAAwB;YACxB,qBAAqB;YACrB,uBAAuB;YACvB,wBAAwB;YACxB,kBAAkB;AAClB,YAAA,EAAE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,kBAAkB,EAAE;AAChE,YAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,qBAAqB,EAAE;AAC9D,YAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,wBAAwB,EAAE;YACpE,wBAAwB;YACxB,6BAA6B;YAC7B,6BAA6B;YAC7B,mBAAmB;YACnB;SACH,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,4BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAoJa,kCAAkC,2BAAU,kCAAkC,EAAA,EAAA,EAAA,YAAA,EAAA,6BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAM9E,2CAA2C,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,2CAA2C,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAZnG,0BAA0B,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAiJC,WAAW,sFAMtC,mCAAmC,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,mCAAmC,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAMtD,WAAW,wEAYrC,kCAAkC,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,+BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EA+8DA,WAAW,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,SAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAr9DT,UAAU,EAAA,EAAA,EAAA,YAAA,EAAA,+BAAA,EAAA,SAAA,EAY3C,mCAAmC,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,mCAAmC,gEAMhF,oCAAoC,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gCAAA,EAAA,SAAA,EAAA,CAAA,+BAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAiBK,qBAAqB,EAAA,EAAA,EAAA,YAAA,EAAA,+BAAA,EAAA,SAAA,EAM9D,mCAAmC,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC7crD,o3ZAuOA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDlHQ,OAAO,oFACP,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,0BAA0B,iEAC1B,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,0BAA0B,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC1B,4BAA4B,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC5B,qBAAqB,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,6BAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,0BAA0B,0MAC1B,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,+BAA+B,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,gBAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC/B,oBAAoB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,YAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,yBAAyB,6FACzB,kCAAkC,EAAA,QAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClC,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,oCAAoC,iKACpC,mCAAmC,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,YAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnC,8CAA8C,EAAA,QAAA,EAAA,mEAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC9C,8CAA8C,EAAA,QAAA,EAAA,mEAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC9C,4BAA4B,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAY5B,mCAAmC,wHAXnC,qBAAqB,EAAA,IAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACrB,oBAAoB,EAAA,IAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACpB,eAAe,EAAA,IAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACf,wBAAwB,EAAA,IAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACxB,qBAAqB,0DACrB,kBAAkB,EAAA,IAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAClB,sBAAsB,EAAA,IAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACtB,uBAAuB,iDACvB,6BAA6B,EAAA,IAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAC7B,uBAAuB,EAAA,IAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACvB,iCAAiC,EAAA,IAAA,EAAA,gCAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;AA+hBrC,UAAA,CAAA;AADC,IAAA,YAAY;AAIZ,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,IAAA,CAAA;AA8KD,UAAA,CAAA;AADC,IAAA,YAAY;AAIZ,CAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,IAAA,CAAA;2FA9sBQ,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBA1DjC,SAAS;AACW,YAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,mBAAA,EAC1B,KAAK,EAAA,QAAA,EAChB,gBAAgB,EAAA,SAAA,EAEf;wBACP,kBAAkB;wBAClB,wBAAwB;wBACxB,qBAAqB;wBACrB,uBAAuB;wBACvB,wBAAwB;wBACxB,kBAAkB;AAClB,wBAAA,EAAE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,kBAAkB,EAAE;AAChE,wBAAA,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,uBAAuB,EAAE;AAC9D,wBAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,wBAAwB,EAAE;wBACpE,wBAAwB;wBACxB,6BAA6B;wBAC7B,6BAA6B;wBAC7B,mBAAmB;wBACnB;qBACH,EAAA,OAAA,EACQ;wBACL,OAAO;wBACP,OAAO;wBACP,gBAAgB;wBAChB,0BAA0B;wBAC1B,oBAAoB;wBACpB,0BAA0B;wBAC1B,4BAA4B;wBAC5B,qBAAqB;wBACrB,0BAA0B;wBAC1B,oBAAoB;wBACpB,kBAAkB;wBAClB,+BAA+B;wBAC/B,oBAAoB;wBACpB,yBAAyB;wBACzB,kCAAkC;wBAClC,gBAAgB;wBAChB,oCAAoC;wBACpC,mCAAmC;wBACnC,8CAA8C;wBAC9C,8CAA8C;wBAC9C,4BAA4B;wBAC5B,qBAAqB;wBACrB,oBAAoB;wBACpB,eAAe;wBACf,wBAAwB;wBACxB,qBAAqB;wBACrB,kBAAkB;wBAClB,sBAAsB;wBACtB,uBAAuB;wBACvB,6BAA6B;wBAC7B,uBAAuB;wBACvB,iCAAiC;wBACjC;qBACH,EAAA,OAAA,EACQ,CAAC,sBAAsB,CAAC,EAAA,QAAA,EAAA,o3ZAAA,EAAA;;sBAqBhC;;sBAYA;;sBAcA;;sBAaA;;sBAaA;;sBAcA;;sBAmBA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,0BAA0B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAMtD,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,kCAAkC,EAAE,EAAE,IAAI,EAAE,kCAAkC,EAAE;;sBAM7F,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,2CAA2C,EAAE,EAAE,IAAI,EAAE,2CAA2C,EAAE;;sBAW/G;;sBAGA;;sBAaA;;sBA0BA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAGrC;;sBAuBA,WAAW;uBAAC,WAAW;;sBAYvB,WAAW;uBAAC,sCAAsC;;sBAClD;;sBA2BA;;sBAcA,SAAS;uBAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAMhE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,mCAAmC,EAAE,EAAE,IAAI,EAAE,mCAAmC,EAAE;;sBAM5F,SAAS;uBAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAM/D,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,uBAAuB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;;sBAM1D,SAAS;uBAAC,kCAAkC;;sBAM5C,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,mCAAmC,EAAE,EAAE,IAAI,EAAE,mCAAmC,EAAE;;sBAM/F,YAAY;uBAAC,oCAAoC;;sBAiBjD,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,+BAA+B,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE;;sBAM7E,YAAY;uBAAC,mCAAmC;;sBAMhD;;sBAMA;;sBAMA;;sBAMA;;sBAMA;;sBAMA;;sBAMA;;sBAMA;;sBAMA;;sBAMA;;sBAMA;;sBAMA;;sBAMA;;sBAMA;;sBAMA;;sBAMA;;sBAMA;;sBAMA;;sBAMA;;sBAMA;;sBAMA;;sBAMA;;sBAMA;;sBAMA;;sBA8DA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAYrC;;sBAYA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBA4CrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAYrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAWrC;;sBAWA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAWrC;;sBAWA;;sBA8CA;;sBA+BA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAWrC;;sBAUA;;sBAWA;;sBAWA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAyBrC,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBA6KrC,WAAW;uBAAC,SAAS;;sBACrB;;sBAiBA;;sBA2MA;;sBAukCA,SAAS;uBAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAWvE;;;AEv2EL;AACqB;AACrB;AACA;;;;;;;;;;;;;;;;;AAiBG;MAMU,6BAA6B,CAAA;AAL1C,IAAA,WAAA,GAAA;AAMY,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAGvC;;;;;;;;;;;;;;;AAeG;QAEI,IAAA,CAAA,eAAe,GAAG,IAAI;AAE7B;;;;;;;;AAQE;AAEK,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,YAAY,EAAW;AAE1D;;;;;;;;;;;;;;;AAeG;QAEI,IAAA,CAAA,YAAY,GAAG,IAAI;AAE1B;;;;;;;;AAQE;AAEK,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,EAAW;AAEvD;;;;;;;;;;;;;;;AAeG;QAEI,IAAA,CAAA,eAAe,GAAG,IAAI;AAE7B;;;;;;;;AAQE;AAEK,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,YAAY,EAAW;AAE1D;;;;;;;;;;;;;;;AAeG;QAEI,IAAA,CAAA,cAAc,GAAG,IAAI;AAE5B;;;;;;;;AAQE;AAEK,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAW;QAGjD,IAAA,CAAA,UAAU,GAAG,CAAC;;QAIf,IAAA,CAAA,QAAQ,GAAG,yBAAyB;AAUnC,QAAA,IAAA,CAAA,wBAAwB,GAAqB;YACjD,kBAAkB,EAAE,iBAAiB,CAAC,MAAM;AAC5C,YAAA,cAAc,EAAE,SAAS;SAC5B;AAEO,QAAA,IAAA,CAAA,uBAAuB,GAAoB;AAC/C,YAAA,mBAAmB,EAAE,IAAI;AACzB,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,gBAAgB,EAAE,IAAI,oBAAoB,CACtC,IAAI,CAAC,wBAAwB,CAChC;YACD,cAAc,EAAE,IAAI,sBAAsB,EAAE;SAC/C;;AAGM,QAAA,IAAA,CAAA,iBAAiB,GAAG;AACvB,YAAA,cAAc,EAAE,YAAY,CAAC,OAAO,EAAE;AAClC,gBAAA,MAAM,EAAE;AACJ,oBAAA,QAAQ,EAAE,KAAK;AAClB,iBAAA;aACJ,CAAC;AACF,YAAA,aAAa,EAAE,YAAY,CAAC,MAAM,EAAE;AAChC,gBAAA,MAAM,EAAE;AACJ,oBAAA,QAAQ,EAAE,KAAK;AAClB,iBAAA;aACJ,CAAC;SACL;;QAGM,IAAA,CAAA,aAAa,GAAuB,EAAE;AAkB7C;;AAEG;AACI,QAAA,IAAA,CAAA,OAAO,GAAyB;AACnC,YAAA;AACI,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,IAAI,EAAE,iCAAiC;gBACvC,IAAI,EAAE,kBAAkB,CAAC,MAAM;AAC/B,gBAAA,OAAO,EAAE,kBAAkB;AAC3B,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,OAAO,EAAE,YAAY;AACrB,gBAAA,UAAU,EAAE,aAAa;AACzB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,YAAY,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM;AAC9C,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,IAAI,EAAE,iCAAiC;gBACvC,IAAI,EAAE,kBAAkB,CAAC,MAAM;AAC/B,gBAAA,OAAO,EAAE,kBAAkB;AAC3B,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,OAAO,EAAE,YAAY;AACrB,gBAAA,UAAU,EAAE,aAAa;AACzB,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,YAAY,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM;AAC9C,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,IAAI,EAAE,8BAA8B;gBACpC,IAAI,EAAE,kBAAkB,CAAC,GAAG;AAC5B,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,IAAI,EAAE,YAAY;AAClB,gBAAA,OAAO,EAAE,YAAY;AACrB,gBAAA,UAAU,EAAE,aAAa;AACzB,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,YAAY,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM;AAC9C,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,IAAI,EAAE,gCAAgC;AACtC,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,UAAU,EAAE,aAAa;AACzB,gBAAA,QAAQ,EAAE,KAAK;gBACf,YAAY,EAAE,CAAC,QAAQ;AAC1B,aAAA;SACJ;AAyXJ,IAAA;AAheG,IAAA,IACc,IAAI,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,QAAQ;IAC9B;;AA4CA,IAAA,IAAW,IAAI,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,aAAa,IAAI,EAAE;IAC1C;;AAEA,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,KAAK,EAAE,kBAAkB,CAAC,MAAM,IAAI,EAAE;IACtD;;AAsDA;;AAEG;IACH,IACW,IAAI,CAAC,KAAoB,EAAA;AAChC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;IACtB;;AAGA;;AAEG;AACH,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAK;IACrB;AAEA;;;AAGG;AACI,IAAA,UAAU,CACb,CAAQ,EACR,SAA0B,EAC1B,aAAiC,EAAA;AAEjC,QAAA,IACI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CACd,CAAC,KAAyB,KAAK,KAAK,CAAC,IAAI,KAAK,aAAa,CAC9D,CAAC,QAAQ;YAEV;QAEJ,MAAM,cAAc,GAAG,SAAS,CAAC,aAAa,IAAI,gBAAgB,CAAC,IAAI;QACvE,MAAM,SAAS,GAAG,cAAc,GAAG,CAAC,GAAG,gBAAgB,CAAC,IAAI;YACxD,gBAAgB,CAAC,IAAI,GAAG,cAAc,GAAG,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC;IACjD;AAEA;;;AAGG;AACI,IAAA,0BAA0B,CAAC,KAAmB,EAAA;QACjD,KAAK,CAAC,eAAe,EAAE;QACvB,KAAK,CAAC,cAAc,EAAE;IAC1B;AAEA;;;AAGG;IACI,oBAAoB,CAAC,KAAiB,EAAE,SAA0B,EAAA;QACrE,KAAK,CAAC,eAAe,EAAE;QACvB,KAAK,CAAC,cAAc,EAAE;QAEtB,IAAI,GAAG,GAAG,SAAS;AACnB,QAAA,IAAI,GAAe;QAEnB,OAAO,GAAG,EAAE;YACR,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CACrC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,UAAU,CACpC;YACD,IAAI,GAAG,EAAE;gBACL;YACJ;iBAAO;AACH,gBAAA,GAAG,GAAG,GAAG,CAAC,UAAU;YACxB;QACJ;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC;IACtE;AAEA;;;AAGG;AACO,IAAA,iBAAiB,CAAC,aAAiC,EAAA;QACzD,QAAQ,aAAa;YACjB,KAAK,kBAAkB,CAAC,GAAG;AACvB,gBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa;YAClC,KAAK,kBAAkB,CAAC,MAAM;AAC1B,gBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB;YACrC,KAAK,kBAAkB,CAAC,MAAM;AAC1B,gBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB;AACrC,YAAA;AACI,gBAAA,OAAO,IAAI;;IAEvB;AAEA;;;AAGG;AACO,IAAA,aAAa,CAAC,MAAc,EAAA;QAClC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM;AACvD,QAAA,MAAM,UAAU,GACZ,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC;AACnD,cAAE,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM;AACnD,cAAE,WAAW,CAAC,MAAM;QAC5B,MAAM,aAAa,GACf,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU,GAAG,IAAI,CAAC,UAAU;QAEvE,MAAM,eAAe,GAAG,WAAW,CAAC,IAAI,CACpC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,WAAW,KAAK,MAAM,CACzD;QAED,IAAI,eAAe,EAAE;YACjB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,aAAa,CAAC;AACnD,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AACxB,gBAAA,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM;AAC9C,aAAA,CAAC;QACN;IACJ;AAEA;;;AAGG;IACI,aAAa,CAChB,KAA4B,EAC5B,aAAiC,EAAA;AAEjC,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACnB;QACJ;QAEA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC;QAC9D,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC;QAC5D,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;QAClD,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;AACrD,QAAA,MAAM,aAAa,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC;AACrE,QAAA,MAAM,SAAS,GACX,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,UAAU,KAAK,MAAM,CAAC,KAAK,CAAC;AACvD,cAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,MAAM;AACrD,cAAE,SAAS,EAAE,MAAM;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC;AAEtF,QAAA,MAAM,OAAO,GACT,cAAc,EAAE,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,KAAK,MAAM,CAAC;AAC/D,YAAA,CAAC,CAAC;AAEN,QAAA,IAAI,WAAW,GACX,QAAQ,KAAK;AACT,cAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,QAAQ;AACvD,cAAE,SAAS,EAAE,MAAM;QAE3B,IAAI,CAAC,SAAS,EAAE;AACZ,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QAC9B;QAEA,IAAI,OAAO,EAAE;YACT,WAAW;AACP,gBAAA,SAAS,GAAG,IAAI,CAAC,UAAU,GAAG;AAC1B,sBAAE;AACF,sBAAE,SAAS,GAAG,IAAI,CAAC,UAAU;QACzC;QAEA,IAAI,aAAa,EAAE;YACf,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,aAAa,EAAE,WAAW,CAAC;QACtE;aAAO;AACH,YAAA,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC;YAC9D,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,CAAC;QAC/D;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAC5B,YAAA,UAAU,EAAE,SAAS;AACrB,YAAA,uBAAuB,EAAE,aAAa;AACzC,SAAA,CAAC;IACN;AAEA;;;AAGG;IACO,cAAc,CACpB,KAAkB,EAClB,QAA8B,EAAA;AAE9B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,QAAQ,CAAC,KAAK,GAAG,OAAO;AACxB,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;AACjE,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AACxB,QAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC;IAC/C;AAEA;;;AAGG;AACI,IAAA,cAAc,CACjB,KAAiB,EACjB,KAAkB,EAClB,QAA8B,EAAA;QAE9B,IAAI,CAAC,uBAAuB,CAAC,MAAM;YAC/B,KAAK,CAAC,aAA4B;AAEtC,QAAA,IAAI,QAAQ,CAAC,SAAS,EAAE;AACpB,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC;QACxC;aAAO;;YAEH,QAAQ,CAAC,KAAK,EAAE;AAChB,YAAA,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,MAAK;AACzC,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC;AACxC,YAAA,CAAC,CAAC;QACN;IACJ;AAEA;;;AAGG;AACI,IAAA,mBAAmB,CAAC,KAA0B,EAAA;AAEjD,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;YAC5C,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK;YAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;AAEnD,YAAA,SAAS,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC;AAEpF,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACvB,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;QAChC;IACJ;AAEA;;;AAGG;AACI,IAAA,UAAU,CAAC,GAAqB,EAAA;QACnC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG;IAC/C;AAEA;;;AAGG;IACI,YAAY,CAAC,KAA8B,EAAE,KAAa,EAAA;AAC7D,QAAA,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GACtB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,qBAAqB,EAAE;AAC7D,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAC3B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAClB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,EACjC,UAAU,EACV,UAAU,CACb;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAClB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,EACjC,YAAY,EACZ,QAAQ,CACX;IACL;AAEA;;;AAGG;AACI,IAAA,UAAU,CAAC,IAAmC,EAAA;QACjD,IAAI,IAAmB,EAAE;AACrB,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAmB,CAAC;QAC9C;QAEA,IAAI,IAAuB,EAAE;AACzB,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAuB,CAAC;QACtD;IACJ;AAEA;;;AAGG;IACI,YAAY,CAAC,KAAyB,EAAE,KAAa,EAAA;AACxD,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAC9F,CAAC,OAAe,KAAK,OAAO,KAAK,KAAK,CACzC;IACL;AAEA;;;AAGG;AACI,IAAA,cAAc,CAAC,KAAyB,EAAA;AAC3C,QAAA,MAAM,UAAU,GACZ,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,qBAAqB,EAAE;QAC7D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CACxB,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,CACvD;IACL;AAEA;;;AAGG;AACI,IAAA,aAAa,CAAC,KAAyB,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAClB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,EACjC,UAAU,EACV,QAAQ,CACX;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAClB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,EACjC,YAAY,EACZ,SAAS,CACZ;IACL;AAEA;;;AAGG;AACI,IAAA,cAAc,CAAC,KAAyB,EAAA;AAC3C,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAClB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,EACjC,gBAAgB,CACnB;QACL;IACJ;AAEA;;;AAGG;AACI,IAAA,eAAe,CAAC,KAAyB,EAAA;AAC5C,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CACrB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,EACjC,gBAAgB,CACnB;QACL;IACJ;AAEA;;;AAGG;AACI,IAAA,iBAAiB,CAAC,SAA6B,EAAA;QAClD,QAAQ,SAAS;YACb,KAAK,kBAAkB,CAAC,MAAM;AAC1B,gBAAA,OAAO,CAAC,IAAI,CAAC,eAAe;YAChC,KAAK,kBAAkB,CAAC,MAAM;AAC1B,gBAAA,OAAO,CAAC,IAAI,CAAC,eAAe;YAChC,KAAK,kBAAkB,CAAC,GAAG;AACvB,gBAAA,OAAO,CAAC,IAAI,CAAC,YAAY;AAC7B,YAAA;AACI,gBAAA,OAAO,CAAC,IAAI,CAAC,cAAc;;IAEvC;AAEA;;;AAGG;IACI,gBAAgB,CAAC,KAAc,EAAE,SAA6B,EAAA;QACjE,QAAQ,SAAS;YACb,KAAK,kBAAkB,CAAC,MAAM;AAC1B,gBAAA,IAAI,CAAC,eAAe,GAAG,CAAC,KAAK;gBAC7B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;gBACrD;YACJ,KAAK,kBAAkB,CAAC,MAAM;AAC1B,gBAAA,IAAI,CAAC,eAAe,GAAG,CAAC,KAAK;gBAC7B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;gBACrD;YACJ,KAAK,kBAAkB,CAAC,GAAG;AACvB,gBAAA,IAAI,CAAC,YAAY,GAAG,CAAC,KAAK;gBAC1B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;gBAC/C;AACJ,YAAA;AACI,gBAAA,IAAI,CAAC,cAAc,GAAG,CAAC,KAAK;gBAC5B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;;IAE/D;8GAvmBS,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,CAAA,iBAAA,EAAA,iBAAA,EAqBlB,gBAAgB,CAAA,EAAA,YAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EA+BhB,gBAAgB,2DA+BhB,gBAAgB,CAAA,EAAA,cAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,EA+BhB,gBAAgB,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,+BAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzKxC,m0SA6LA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDxIc,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,yGAAE,kBAAkB,EAAA,QAAA,EAAA,mCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,IAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,wJAAE,qBAAqB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,mBAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,0BAA0B,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,IAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gCAAgC,qJAAE,gBAAgB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,+BAA+B,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,8BAA8B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,eAAA,EAAA,eAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kCAAkC,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,sBAAsB,4DAAE,oBAAoB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,YAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,wBAAwB,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,uBAAuB,EAAA,IAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAE/d,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBALzC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,WAE1B,CAAC,sBAAsB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,gCAAgC,EAAE,gBAAgB,EAAE,+BAA+B,EAAE,gBAAgB,EAAE,8BAA8B,EAAE,gBAAgB,EAAE,kCAAkC,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,uBAAuB,CAAC,EAAA,QAAA,EAAA,m0SAAA,EAAA;;sBAuBxe,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAYrC;;sBAmBA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAYrC;;sBAmBA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAYrC;;sBAmBA,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;;sBAYrC;;sBAOA,WAAW;uBAAC,+BAA+B;;sBAG3C,WAAW;uBAAC,iBAAiB;;sBA8G7B;;;AErOL;AACO,MAAM,yBAAyB,GAAG;IACrC,qBAAqB;IACrB,6BAA6B;IAC7B,kCAAkC;;IAElC,eAAe;IACf,sBAAsB;IACtB,mCAAmC;IACnC,gCAAgC;IAChC,iCAAiC;IACjC,mCAAmC;IACnC,oCAAoC;IACpC,gCAAgC;IAChC,mCAAmC;IACnC,oCAAoC;IACpC,0BAA0B;IAC1B,6BAA6B;IAC7B,wBAAwB;IACxB,qBAAqB;;IAErB,8BAA8B;IAC9B,8BAA8B;IAC9B,2BAA2B;IAC3B,4BAA4B;;IAE5B,sBAAsB;IACtB,2BAA2B;IAC3B,yBAAyB;;IAEzB,8BAA8B;IAC9B,2BAA2B;IAC3B,wBAAwB;IACxB,+BAA+B;IAC/B,8BAA8B;IAC9B,8BAA8B;IAC9B,8BAA8B;IAC9B,wCAAwC;IACxC,kBAAkB;IAClB,uBAAuB;IACvB,wBAAwB;;IAExB,yBAAyB;IACzB,wBAAwB;IACxB,yBAAyB;;IAEzB,uBAAuB;IACvB,8BAA8B;IAC9B,wBAAwB;;IAExB,mBAAmB;IACnB,qBAAqB;IACrB,8BAA8B;IAC9B,wCAAwC;IACxC,uBAAuB;IACvB,+BAA+B;IAC/B,6BAA6B;IAC7B,8BAA8B;IAC9B,4BAA4B;IAC5B,uBAAuB;;IAEvB,mCAAmC;IACnC,4BAA4B;IAC5B,6BAA6B;IAC7B,6BAA6B;IAC7B,4BAA4B;IAC5B,+BAA+B;IAC/B,kCAAkC;IAClC,uCAAuC;IACvC,4BAA4B;IAC5B,4BAA4B;IAC5B,8CAA8C;IAC9C,8CAA8C;IAC9C;;AAGJ;;;AAGG;MASU,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAtF3B,qBAAqB;YACrB,6BAA6B;YAC7B,kCAAkC;;YAElC,eAAe;YACf,sBAAsB;YACtB,mCAAmC;YACnC,gCAAgC;YAChC,iCAAiC;YACjC,mCAAmC;YACnC,oCAAoC;YACpC,gCAAgC;YAChC,mCAAmC;YACnC,oCAAoC;YACpC,0BAA0B;YAC1B,6BAA6B;YAC7B,wBAAwB;YACxB,qBAAqB;;YAErB,8BAA8B;YAC9B,8BAA8B;YAC9B,2BAA2B;YAC3B,4BAA4B;;YAE5B,sBAAsB;YACtB,2BAA2B;YAC3B,yBAAyB;;YAEzB,8BAA8B;YAC9B,2BAA2B;YAC3B,wBAAwB;YACxB,+BAA+B;YAC/B,8BAA8B;YAC9B,8BAA8B;YAC9B,8BAA8B;YAC9B,wCAAwC;YACxC,kBAAkB;YAClB,uBAAuB;YACvB,wBAAwB;;YAExB,yBAAyB;YACzB,wBAAwB;YACxB,yBAAyB;;YAEzB,uBAAuB;YACvB,8BAA8B;YAC9B,wBAAwB;;YAExB,mBAAmB;YACnB,qBAAqB;YACrB,8BAA8B;YAC9B,wCAAwC;YACxC,uBAAuB;YACvB,+BAA+B;YAC/B,6BAA6B;YAC7B,8BAA8B;YAC9B,4BAA4B;YAC5B,uBAAuB;;YAEvB,mCAAmC;YACnC,4BAA4B;YAC5B,6BAA6B;YAC7B,6BAA6B;YAC7B,4BAA4B;YAC5B,+BAA+B;YAC/B,kCAAkC;YAClC,uCAAuC;YACvC,4BAA4B;YAC5B,4BAA4B;YAC5B,8CAA8C;YAC9C,8CAA8C;AAC9C,YAAA,2CAA2C,aAvE3C,qBAAqB;YACrB,6BAA6B;YAC7B,kCAAkC;;YAElC,eAAe;YACf,sBAAsB;YACtB,mCAAmC;YACnC,gCAAgC;YAChC,iCAAiC;YACjC,mCAAmC;YACnC,oCAAoC;YACpC,gCAAgC;YAChC,mCAAmC;YACnC,oCAAoC;YACpC,0BAA0B;YAC1B,6BAA6B;YAC7B,wBAAwB;YACxB,qBAAqB;;YAErB,8BAA8B;YAC9B,8BAA8B;YAC9B,2BAA2B;YAC3B,4BAA4B;;YAE5B,sBAAsB;YACtB,2BAA2B;YAC3B,yBAAyB;;YAEzB,8BAA8B;YAC9B,2BAA2B;YAC3B,wBAAwB;YACxB,+BAA+B;YAC/B,8BAA8B;YAC9B,8BAA8B;YAC9B,8BAA8B;YAC9B,wCAAwC;YACxC,kBAAkB;YAClB,uBAAuB;YACvB,wBAAwB;;YAExB,yBAAyB;YACzB,wBAAwB;YACxB,yBAAyB;;YAEzB,uBAAuB;YACvB,8BAA8B;YAC9B,wBAAwB;;YAExB,mBAAmB;YACnB,qBAAqB;YACrB,8BAA8B;YAC9B,wCAAwC;YACxC,uBAAuB;YACvB,+BAA+B;YAC/B,6BAA6B;YAC7B,8BAA8B;YAC9B,4BAA4B;YAC5B,uBAAuB;;YAEvB,mCAAmC;YACnC,4BAA4B;YAC5B,6BAA6B;YAC7B,6BAA6B;YAC7B,4BAA4B;YAC5B,+BAA+B;YAC/B,kCAAkC;YAClC,uCAAuC;YACvC,4BAA4B;YAC5B,4BAA4B;YAC5B,8CAA8C;YAC9C,8CAA8C;YAC9C,2CAA2C,CAAA,EAAA,CAAA,CAAA;AAelC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAtF3B,qBAAqB;YACrB,6BAA6B;YAI7B,sBAAsB;YACtB,mCAAmC;;YAanC,8BAA8B;YAC9B,8BAA8B;YAE9B,4BAA4B;;YAE5B,sBAAsB;YACtB,2BAA2B;YAC3B,yBAAyB;YAUzB,kBAAkB;YAClB,uBAAuB;YACvB,wBAAwB;;YAExB,yBAAyB;YAUzB,8BAA8B;YAC9B,wCAAwC;YACxC,uBAAuB;YACvB,+BAA+B;YAC/B,6BAA6B;YAC7B,8BAA8B;YAC9B,4BAA4B;;YAG5B,mCAAmC;YACnC,4BAA4B;YAC5B,6BAA6B;YAC7B,6BAA6B;YAC7B,4BAA4B;YAC5B,+BAA+B;YAC/B,kCAAkC;YAClC,uCAAuC;YACvC,4BAA4B;YAC5B,4BAA4B,CAAA,EAAA,CAAA,CAAA;;2FAkBnB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAR9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;AACL,wBAAA,GAAG;AACN,qBAAA;AACD,oBAAA,OAAO,EAAE;AACL,wBAAA,GAAG;AACN;AACJ,iBAAA;;;AC/JD;;AAEG;;;;"}