@swimlane/ngx-datatable 24.0.0 → 24.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swimlane-ngx-datatable.mjs","sources":["../../../../projects/swimlane/ngx-datatable/src/lib/components/body/body-group-header-template.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/body-group-header.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/body-row-def.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/columns/column-cell.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/columns/column-ghost-cell.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/columns/column-header.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/columns/tree.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/columns/column.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/directives/visibility.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/ngx-datatable.config.ts","../../../../projects/swimlane/ngx-datatable/src/lib/services/scrollbar-helper.service.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/camel-case.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/column-prop-getters.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/id.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/sort.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/column-helper.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/column.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/math.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/number-or-undefined-attribute.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/table-token.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/throttle.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/tree.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/keys.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/row-height-cache.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/selection.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/body-group-wrapper.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/body-row-wrapper.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/body-cell.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/body-row.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/body-row.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/ghost-loader/ghost-loader.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/ghost-loader/ghost-loader.component.html","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/scroller.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/summary/summary-row.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/body.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/progress-bar.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/footer/pager.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/footer/footer.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/footer/footer-template.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/footer/footer.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/directives/datatable-draggable.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/directives/orderable.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/header/header-cell.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/header/header.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/row-detail/row-detail-template.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/row-detail/row-detail.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/datatable.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/datatable.component.html","../../../../projects/swimlane/ngx-datatable/src/lib/directives/disable-row.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/ngx-datatable.module.ts","../../../../projects/swimlane/ngx-datatable/src/lib/types/public.types.ts","../../../../projects/swimlane/ngx-datatable/src/public-api.ts","../../../../projects/swimlane/ngx-datatable/src/swimlane-ngx-datatable.ts"],"sourcesContent":["import { Directive } from '@angular/core';\n\nimport { GroupContext } from '../../types/public.types';\n\n@Directive({\n selector: '[ngx-datatable-group-header-template]'\n})\nexport class DatatableGroupHeaderTemplateDirective {\n static ngTemplateContextGuard(\n directive: DatatableGroupHeaderTemplateDirective,\n context: unknown\n ): context is GroupContext {\n return true;\n }\n}\n","import { computed, contentChild, Directive, input, output, TemplateRef } from '@angular/core';\n\nimport { Group, GroupContext, GroupToggleEvents, Row } from '../../types/public.types';\nimport { DatatableGroupHeaderTemplateDirective } from './body-group-header-template.directive';\n\n@Directive({\n selector: 'ngx-datatable-group-header'\n})\nexport class DatatableGroupHeaderDirective<TRow extends Row = any> {\n /**\n * Row height is required when virtual scroll is enabled.\n */\n readonly rowHeight = input<number | ((group?: Group<TRow>, index?: number) => number)>(0);\n\n /**\n * Show checkbox at group header to select all rows of the group.\n */\n readonly checkboxable = input(false);\n\n readonly _templateInput = input<TemplateRef<GroupContext<TRow>>>(undefined, {\n alias: 'template'\n });\n\n readonly _templateQuery = contentChild(DatatableGroupHeaderTemplateDirective, {\n read: TemplateRef\n });\n\n readonly template = computed(() => this._templateInput() ?? this._templateQuery() ?? null);\n\n /**\n * Track toggling of group visibility\n */\n readonly toggle = output<GroupToggleEvents<TRow>>();\n\n /**\n * Toggle the expansion of a group\n */\n toggleExpandGroup(group: Group<TRow>): void {\n this.toggle.emit({\n type: 'group',\n value: group\n });\n }\n\n /**\n * Expand all groups\n */\n expandAllGroups(): void {\n this.toggle.emit({\n type: 'all',\n value: true\n });\n }\n\n /**\n * Collapse all groups\n */\n collapseAllGroups(): void {\n this.toggle.emit({\n type: 'all',\n value: false\n });\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n Directive,\n inject,\n InjectionToken,\n Injector,\n input,\n OnInit,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\n\nimport { RowOrGroup } from '../../types/public.types';\n\n/**\n * This component is passed as ng-template and rendered by BodyComponent.\n * BodyComponent uses rowDefInternal to first inject actual row template.\n * This component will render that actual row template.\n */\n@Component({\n selector: 'datatable-row-def',\n imports: [NgTemplateOutlet],\n template: `@if (rowDef.rowDefInternal().rowTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"rowDef.rowDefInternal().rowTemplate\"\n [ngTemplateOutletContext]=\"rowContext\"\n />\n }`\n})\nexport class DatatableRowDefComponent {\n rowDef = inject(ROW_DEF_TOKEN);\n rowContext = {\n ...this.rowDef.rowDefInternal(),\n disabled: this.rowDef.rowDefInternalDisabled()\n };\n}\n\n@Directive({\n selector: '[rowDef]'\n})\nexport class DatatableRowDefDirective {\n static ngTemplateContextGuard(\n _dir: DatatableRowDefDirective,\n ctx: unknown\n ): ctx is RowDefContext {\n return true;\n }\n}\n\n/**\n * @internal To be used internally by ngx-datatable.\n */\n@Directive({\n selector: '[rowDefInternal]'\n})\nexport class DatatableRowDefInternalDirective implements OnInit {\n vc = inject(ViewContainerRef);\n\n readonly rowDefInternal = input.required<RowDefContext>();\n readonly rowDefInternalDisabled = input<boolean>();\n\n ngOnInit(): void {\n this.vc.createEmbeddedView(\n this.rowDefInternal().template,\n {\n ...this.rowDefInternal()\n },\n {\n injector: Injector.create({\n providers: [\n {\n provide: ROW_DEF_TOKEN,\n useValue: this\n }\n ]\n })\n }\n );\n }\n}\nconst ROW_DEF_TOKEN = new InjectionToken<DatatableRowDefInternalDirective>('RowDef');\ninterface RowDefContext {\n template: TemplateRef<unknown>;\n rowTemplate: TemplateRef<unknown>;\n row: RowOrGroup<unknown>;\n index: number;\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\nimport { CellContext } from '../../types/public.types';\n\n@Directive({\n selector: '[ngx-datatable-cell-template]'\n})\nexport class DataTableColumnCellDirective {\n template = inject<TemplateRef<CellContext>>(TemplateRef);\n\n static ngTemplateContextGuard(dir: DataTableColumnCellDirective, ctx: any): ctx is CellContext {\n return true;\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[ngx-datatable-ghost-cell-template]'\n})\nexport class DataTableColumnGhostCellDirective {\n static ngTemplateContextGuard(\n directive: DataTableColumnGhostCellDirective,\n context: unknown\n ): context is void {\n return true;\n }\n}\n","import { Directive } from '@angular/core';\n\nimport { HeaderCellContext } from '../../types/public.types';\n\n@Directive({\n selector: '[ngx-datatable-header-template]'\n})\nexport class DataTableColumnHeaderDirective {\n static ngTemplateContextGuard(\n directive: DataTableColumnHeaderDirective,\n context: unknown\n ): context is HeaderCellContext {\n return true;\n }\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[ngx-datatable-tree-toggle]'\n})\nexport class DataTableColumnCellTreeToggle {\n template = inject<TemplateRef<any>>(TemplateRef);\n}\n","import {\n booleanAttribute,\n computed,\n contentChild,\n Directive,\n input,\n numberAttribute,\n PipeTransform,\n Signal,\n TemplateRef\n} from '@angular/core';\n\nimport { CellContext, HeaderCellContext, Row } from '../../types/public.types';\nimport { TableColumn, TableColumnProp } from '../../types/table-column.type';\nimport { DataTableColumnCellDirective } from './column-cell.directive';\nimport { DataTableColumnGhostCellDirective } from './column-ghost-cell.directive';\nimport { DataTableColumnHeaderDirective } from './column-header.directive';\nimport { DataTableColumnCellTreeToggle } from './tree.directive';\n\n@Directive({\n selector: 'ngx-datatable-column'\n})\nexport class DataTableColumnDirective<TRow extends Row> {\n readonly name = input<string>();\n readonly prop = input<TableColumnProp>();\n readonly bindAsUnsafeHtml = input(false, { transform: booleanAttribute });\n readonly frozenLeft = input(false, { transform: booleanAttribute });\n readonly frozenRight = input(false, { transform: booleanAttribute });\n readonly flexGrow = input<number, number | string | undefined>(undefined, {\n transform: numberAttribute\n });\n readonly resizeable = input<boolean, boolean | string | undefined>(undefined, {\n transform: booleanAttribute\n });\n readonly comparator = input<\n ((valueA: any, valueB: any, rowA: TRow, rowB: TRow) => number) | undefined\n >();\n readonly pipe = input<PipeTransform | undefined>();\n readonly sortable = input<boolean, boolean | string | undefined>(undefined, {\n transform: booleanAttribute\n });\n readonly draggable = input<boolean, boolean | string | undefined>(undefined, {\n transform: booleanAttribute\n });\n readonly canAutoResize = input<boolean, boolean | string | undefined>(undefined, {\n transform: booleanAttribute\n });\n readonly minWidth = input<number, number | string | undefined>(undefined, {\n transform: numberAttribute\n });\n readonly width = input<number, number | string | undefined>(undefined, {\n transform: numberAttribute\n });\n readonly maxWidth = input<number, number | string | undefined>(undefined, {\n transform: numberAttribute\n });\n readonly checkboxable = input(false, { transform: booleanAttribute });\n readonly headerCheckboxable = input(false, { transform: booleanAttribute });\n readonly headerClass = input<\n string | ((data: { column: TableColumn }) => string | Record<string, boolean>) | undefined\n >();\n readonly cellClass = input<\n | string\n | ((data: {\n row: TRow;\n group?: TRow[];\n column: TableColumn<TRow>;\n value: any;\n rowHeight: number;\n }) => string | Record<string, boolean>)\n | undefined\n >();\n readonly isTreeColumn = input(false, { transform: booleanAttribute });\n readonly treeLevelIndent = input<number | undefined>();\n readonly summaryFunc = input<((cells: any[]) => any) | undefined>();\n readonly summaryTemplate = input<TemplateRef<any> | undefined>();\n\n readonly cellTemplateInput = input<TemplateRef<CellContext<TRow>> | undefined>(undefined, {\n alias: 'cellTemplate'\n });\n readonly cellTemplateQuery = contentChild(DataTableColumnCellDirective, { read: TemplateRef });\n\n readonly headerTemplateInput = input<TemplateRef<HeaderCellContext> | undefined>(undefined, {\n alias: 'headerTemplate'\n });\n readonly headerTemplateQuery = contentChild(DataTableColumnHeaderDirective, {\n read: TemplateRef\n });\n\n readonly treeToggleTemplateInput = input<TemplateRef<any> | undefined>(undefined, {\n alias: 'treeToggleTemplate'\n });\n readonly treeToggleTemplateQuery = contentChild(DataTableColumnCellTreeToggle, {\n read: TemplateRef\n });\n\n readonly ghostCellTemplateInput = input<TemplateRef<void> | undefined>(undefined, {\n alias: 'ghostCellTemplate'\n });\n readonly ghostCellTemplateQuery = contentChild(DataTableColumnGhostCellDirective, {\n read: TemplateRef\n });\n\n /**\n * Computed property that returns the column configuration as a TableColumn object\n */\n readonly column: Signal<TableColumn<TRow>> = computed(() => ({\n name: this.name(),\n prop: this.prop(),\n bindAsUnsafeHtml: this.bindAsUnsafeHtml(),\n frozenLeft: this.frozenLeft(),\n frozenRight: this.frozenRight(),\n flexGrow: this.flexGrow(),\n resizeable: this.resizeable(),\n comparator: this.comparator(),\n pipe: this.pipe(),\n sortable: this.sortable(),\n draggable: this.draggable(),\n canAutoResize: this.canAutoResize(),\n minWidth: this.minWidth(),\n width: this.width(),\n maxWidth: this.maxWidth(),\n checkboxable: this.checkboxable(),\n headerCheckboxable: this.headerCheckboxable(),\n headerClass: this.headerClass(),\n cellClass: this.cellClass(),\n isTreeColumn: this.isTreeColumn(),\n treeLevelIndent: this.treeLevelIndent(),\n summaryFunc: this.summaryFunc(),\n summaryTemplate: this.summaryTemplate(),\n cellTemplate: this.cellTemplateInput() ?? this.cellTemplateQuery(),\n headerTemplate: this.headerTemplateInput() ?? this.headerTemplateQuery(),\n treeToggleTemplate: this.treeToggleTemplateInput() ?? this.treeToggleTemplateQuery(),\n ghostCellTemplate: this.ghostCellTemplateInput() ?? this.ghostCellTemplateQuery()\n }));\n}\n","import {\n Directive,\n ElementRef,\n inject,\n NgZone,\n OnDestroy,\n OnInit,\n output,\n signal\n} from '@angular/core';\n\n/**\n * Visibility Observer Directive\n *\n * Usage:\n *\n * \t\t<div\n * \t\t\tvisibilityObserver\n * \t\t\t(visible)=\"onVisible($event)\">\n * \t\t</div>\n *\n */\n@Directive({\n selector: '[visibilityObserver]',\n host: {\n '[class.visible]': 'isVisible()'\n }\n})\nexport class VisibilityDirective implements OnInit, OnDestroy {\n private element = inject(ElementRef);\n private zone = inject(NgZone);\n\n readonly isVisible = signal(false);\n\n readonly visible = output<boolean>();\n\n timeout?: number;\n\n ngOnInit(): void {\n this.runCheck();\n }\n\n ngOnDestroy(): void {\n clearTimeout(this.timeout);\n }\n\n onVisibilityChange(): void {\n // trigger zone recalc for columns\n this.zone.run(() => {\n this.isVisible.set(true);\n this.visible.emit(true);\n });\n }\n\n runCheck(): void {\n const check = (): void => {\n // https://davidwalsh.name/offsetheight-visibility\n const { offsetHeight, offsetWidth } = this.element.nativeElement;\n\n if (offsetHeight && offsetWidth) {\n clearTimeout(this.timeout);\n this.onVisibilityChange();\n } else {\n clearTimeout(this.timeout);\n this.zone.runOutsideAngular(() => {\n this.timeout = window.setTimeout(() => check(), 50);\n });\n }\n };\n\n this.timeout = window.setTimeout(() => check());\n }\n}\n","import { InjectionToken, Provider } from '@angular/core';\n\n/** Interface for messages to override default table texts. */\nexport interface NgxDatatableMessages {\n /** Message to show when the array is present but empty */\n emptyMessage: string;\n /** Footer total message */\n totalMessage: string;\n /** Footer selected message */\n selectedMessage: string;\n /** Pager screen reader message for the first page button */\n ariaFirstPageMessage: string;\n /**\n * Pager screen reader message for the n-th page button.\n * It will be rendered as: `{{ariaPageNMessage}} {{n}}`.\n */\n ariaPageNMessage: string;\n /** Pager screen reader message for the previous page button */\n ariaPreviousPageMessage: string;\n /** Pager screen reader message for the next page button */\n ariaNextPageMessage: string;\n /** Pager screen reader message for the last page button */\n ariaLastPageMessage: string;\n /** Row checkbox aria label */\n ariaRowCheckboxMessage: string;\n /** Header checkbox aria label */\n ariaHeaderCheckboxMessage: string;\n /** Group header checkbox aria label */\n ariaGroupHeaderCheckboxMessage: string;\n}\n\n/** CSS classes for icons that override the default table icons. */\nexport interface NgxDatatableCssClasses {\n sortAscending: string;\n sortDescending: string;\n sortUnset: string;\n pagerLeftArrow: string;\n pagerRightArrow: string;\n pagerPrevious: string;\n pagerNext: string;\n treeStatusLoading: string;\n treeStatusExpanded: string;\n treeStatusCollapsed: string;\n}\n\n/**\n * Interface definition for ngx-datatable global configuration\n */\n// TODO those properties should all be required in the interface. Should be changed with signal migration.\nexport interface NgxDatatableConfig {\n messages?: NgxDatatableMessages;\n cssClasses?: NgxDatatableCssClasses;\n headerHeight?: number;\n footerHeight?: number;\n rowHeight?: number;\n defaultColumnWidth?: number;\n}\n\nexport const NGX_DATATABLE_CONFIG = new InjectionToken<NgxDatatableConfig>('ngx-datatable.config');\n\n/**\n * This makes all properties recursively optional.\n *\n * @internal\n */\nexport type AllPartial<T> = { [K in keyof T]?: AllPartial<T[K]> };\n\n/**\n * Interface definition for INgxDatatableConfig global configuration.\n *\n * @deprecated Use {@link NgxDatatableConfig} instead.\n */\nexport type INgxDatatableConfig = NgxDatatableConfig;\n\n/**\n * Provides a global configuration for ngx-datatable.\n *\n * @param overrides The overrides of the table configuration.\n */\nexport const providedNgxDatatableConfig = (overrides: AllPartial<NgxDatatableConfig>): Provider => {\n return {\n provide: NGX_DATATABLE_CONFIG,\n useValue: overrides\n };\n};\n","import { DOCUMENT, inject, Injectable } from '@angular/core';\n\n/**\n * Gets the width of the scrollbar. Nesc for windows\n * http://stackoverflow.com/a/13382873/888165\n */\n@Injectable({ providedIn: 'root' })\nexport class ScrollbarHelper {\n private document = inject(DOCUMENT);\n\n width: number = this.getWidth();\n\n getWidth(): number {\n const outer = this.document.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n this.document.body.appendChild(outer);\n\n const widthNoScroll = outer.offsetWidth;\n outer.style.overflow = 'scroll';\n\n const inner = this.document.createElement('div');\n inner.style.width = '100%';\n outer.appendChild(inner);\n\n const widthWithScroll = inner.offsetWidth;\n this.document.body.removeChild(outer);\n\n return widthNoScroll - widthWithScroll;\n }\n}\n","/**\n * Converts strings from something to camel case\n * http://stackoverflow.com/questions/10425287/convert-dash-separated-string-to-camelcase\n */\nexport const camelCase = (str: string): string => {\n // Replace special characters with a space\n str = str.replace(/[^a-zA-Z0-9 ]/g, ' ');\n // put a space before an uppercase letter\n str = str.replace(/([a-z](?=[A-Z]))/g, '$1 ');\n\n // Lower case first character and some other stuff\n str = str\n .replace(/([^a-zA-Z0-9 ])|^[0-9]+/g, '')\n .trim()\n .toLowerCase();\n\n // uppercase characters preceded by a space or number\n str = str.replace(/([ 0-9]+)([a-zA-Z])/g, (a, b, c) => {\n return b.trim() + c.toUpperCase();\n });\n\n return str;\n};\n\n/**\n * Converts strings from camel case to words\n * http://stackoverflow.com/questions/7225407/convert-camelcasetext-to-camel-case-text\n */\nexport const deCamelCase = (str: string): string => {\n return str.replace(/([A-Z])/g, match => ` ${match}`).replace(/^./, match => match.toUpperCase());\n};\n","import { TableColumnProp } from '../types/table-column.type';\n\n// maybe rename this file to prop-getters.ts\n\nexport type ValueGetter = (obj: any, prop: TableColumnProp) => any;\n\n/**\n * Always returns the empty string ''\n */\nexport const emptyStringGetter = (): string => {\n return '';\n};\n\n/**\n * Returns the appropriate getter function for this kind of prop.\n * If prop == null, returns the emptyStringGetter.\n */\nexport const getterForProp = (prop: TableColumnProp | undefined): ValueGetter => {\n // TODO requires better typing which will also involve adjust TableColum. So postponing it.\n if (prop == null) {\n return emptyStringGetter;\n }\n\n if (typeof prop === 'number') {\n return numericIndexGetter as ValueGetter;\n } else {\n // deep or simple\n if (prop.includes('.')) {\n return deepValueGetter as ValueGetter;\n } else {\n return shallowValueGetter as ValueGetter;\n }\n }\n};\n\n/**\n * Returns the value at this numeric index.\n * @param row array of values\n * @param index numeric index\n * @returns any or '' if invalid index\n */\nexport const numericIndexGetter = (row: any[], index: number): any => {\n if (row == null) {\n return '';\n }\n // mimic behavior of deepValueGetter\n if (!row || index == null) {\n return row;\n }\n\n const value = row[index];\n if (value == null) {\n return '';\n }\n return value;\n};\n\n/**\n * Returns the value of a field.\n * (more efficient than deepValueGetter)\n * @param obj object containing the field\n * @param fieldName field name string\n */\nexport const shallowValueGetter = (obj: any, fieldName: string): any => {\n if (obj == null) {\n return '';\n }\n if (!obj || !fieldName) {\n return obj;\n }\n\n const value = obj[fieldName];\n if (value == null) {\n return '';\n }\n return value;\n};\n\n/**\n * Returns a deep object given a string. zoo['animal.type']\n */\nexport const deepValueGetter = (obj: any, path: string): any => {\n if (obj == null) {\n return '';\n }\n if (!obj || !path) {\n return obj;\n }\n\n // check if path matches a root-level field\n // { \"a.b.c\": 123 }\n let current = obj[path];\n if (current !== undefined) {\n return current;\n }\n\n current = obj;\n const split = path.split('.');\n\n if (split.length) {\n for (let i = 0; i < split.length; i++) {\n current = current[split[i]];\n\n // if found undefined, return empty string\n if (current === undefined || current === null) {\n return '';\n }\n }\n }\n\n return current;\n};\n","/**\n * Creates a unique object id.\n * http://stackoverflow.com/questions/6248666/how-to-generate-short-uid-like-ax4j9z-in-js\n */\nexport const id = () => {\n return ('0000' + ((Math.random() * Math.pow(36, 4)) << 0).toString(36)).slice(-4);\n};\n","import { SortableTableColumnInternal, TableColumnInternal } from '../types/internal.types';\nimport { Group, SortDirection, SortPropDir, SortType } from '../types/public.types';\nimport { TableColumnProp } from '../types/table-column.type';\nimport { getterForProp } from './column-prop-getters';\n\n/**\n * Gets the next sort direction\n */\nexport const nextSortDir = (\n sortType: SortType,\n current: SortDirection | 'desc' | 'asc' | undefined\n): SortDirection | undefined => {\n if (sortType === 'single') {\n if (current === 'asc') {\n return 'desc';\n } else {\n return 'asc';\n }\n } else {\n if (!current) {\n return 'asc';\n } else if (current === 'asc') {\n return 'desc';\n } else if (current === 'desc') {\n return undefined;\n }\n // avoid TS7030: Not all code paths return a value.\n return undefined;\n }\n};\n\n/**\n * Adapted from fueld-ui on 6/216\n * https://github.com/FuelInteractive/fuel-ui/tree/master/src/pipes/OrderBy\n */\nexport const orderByComparator = (a: any, b: any): number => {\n if (a === null || typeof a === 'undefined') {\n a = 0;\n }\n if (b === null || typeof b === 'undefined') {\n b = 0;\n }\n if (a instanceof Date && b instanceof Date) {\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n } else if (isNaN(parseFloat(a)) || !isFinite(a) || isNaN(parseFloat(b)) || !isFinite(b)) {\n // Convert to string in case of a=0 or b=0\n a = String(a);\n b = String(b);\n // Isn't a number so lowercase the string to properly compare\n if (a.toLowerCase() < b.toLowerCase()) {\n return -1;\n }\n if (a.toLowerCase() > b.toLowerCase()) {\n return 1;\n }\n } else {\n // Parse strings as numbers to compare properly\n if (parseFloat(a) < parseFloat(b)) {\n return -1;\n }\n if (parseFloat(a) > parseFloat(b)) {\n return 1;\n }\n }\n\n // equal each other\n return 0;\n};\n\n/**\n * creates a shallow copy of the `rows` input and returns the sorted copy. this function\n * does not sort the `rows` argument in place\n */\nexport const sortRows = <TRow>(\n rows: TRow[],\n columns: TableColumnInternal[],\n dirs: SortPropDir[],\n sortOnGroupHeader?: SortPropDir\n): TRow[] => {\n if (!rows) {\n return [];\n }\n if (!dirs?.length || !columns) {\n return [...rows];\n }\n\n const temp = [...rows];\n const cols = columns.reduce(\n (obj, col) => {\n if (col.sortable) {\n obj[col.prop] = col.comparator;\n }\n return obj;\n },\n {} as Record<TableColumnProp, SortableTableColumnInternal['comparator'] | undefined>\n );\n\n // cache valueGetter and compareFn so that they\n // do not need to be looked-up in the sort function body\n const cachedDirs = dirs.map(dir => {\n // When sorting on group header, override prop to 'key'\n const prop = sortOnGroupHeader?.prop === dir.prop ? 'key' : dir.prop;\n // SortDirs may contain columns that are not sortable, so compareFn would be undefined. In that case just return a comparator that returns 0.\n const compareFn = cols[dir.prop] ?? (() => 0);\n return {\n prop,\n dir: dir.dir,\n valueGetter: getterForProp(prop),\n compareFn\n };\n });\n\n return temp.sort((rowA: TRow, rowB: TRow) => {\n for (const cachedDir of cachedDirs) {\n // Get property and valuegetters for column to be sorted\n const { prop, valueGetter } = cachedDir;\n // Get A and B cell values from rows based on properties of the columns\n const propA = valueGetter(rowA, prop);\n const propB = valueGetter(rowB, prop);\n\n // Compare function gets five parameters:\n // Two cell values to be compared as propA and propB\n // Two rows corresponding to the cells as rowA and rowB\n // Direction of the sort for this column as SortDirection\n // Compare can be a standard JS comparison function (a,b) => -1|0|1\n // as additional parameters are silently ignored. The whole row and sort\n // direction enable more complex sort logic.\n const comparison =\n cachedDir.dir !== 'desc'\n ? cachedDir.compareFn(propA, propB, rowA, rowB)\n : -cachedDir.compareFn(propA, propB, rowA, rowB);\n\n // Don't return 0 yet in case of needing to sort by next property\n if (comparison !== 0) {\n return comparison;\n }\n }\n\n return 0;\n });\n};\n\nexport const sortGroupedRows = <TRow>(\n groupedRows: Group<TRow>[],\n columns: TableColumnInternal[],\n dirs: SortPropDir[],\n sortOnGroupHeader: SortPropDir | undefined\n): Group<TRow>[] => {\n if (sortOnGroupHeader) {\n groupedRows = sortRows(groupedRows, columns, dirs, sortOnGroupHeader);\n }\n return groupedRows.map(group => ({ ...group, value: sortRows(group.value, columns, dirs) }));\n};\n","import { signal } from '@angular/core';\n\nimport { TableColumnInternal } from '../types/internal.types';\nimport { Row } from '../types/public.types';\nimport { TableColumn } from '../types/table-column.type';\nimport { camelCase, deCamelCase } from './camel-case';\nimport { getterForProp } from './column-prop-getters';\nimport { id } from './id';\nimport { orderByComparator } from './sort';\n\nexport const toInternalColumn = <T extends Row>(\n columns: TableColumn<T>[],\n defaultColumnWidth = 150\n): TableColumnInternal<T>[] => {\n let hasTreeColumn = false;\n // TS fails to infer the type here.\n return (columns as TableColumn<T>[]).map(column => {\n const prop = column.prop ?? (column.name ? camelCase(column.name) : undefined);\n // Only one column should hold the tree view,\n // Thus if multiple columns are provided with\n // isTreeColumn as true, we take only the first one\n const isTreeColumn = !!column.isTreeColumn && !hasTreeColumn;\n hasTreeColumn = hasTreeColumn || isTreeColumn;\n // TODO: add check if prop or name is provided if sorting is enabled.\n\n return {\n ...column,\n $$id: id(),\n $$originalColumn: column,\n $$valueGetter: getterForProp(prop),\n prop,\n name: column.name ?? (prop ? deCamelCase(String(prop)) : ''),\n resizeable: column.resizeable ?? true,\n sortable: column.sortable ?? true,\n comparator: column.comparator ?? orderByComparator,\n draggable: column.draggable ?? true,\n canAutoResize: column.canAutoResize ?? true,\n width: signal(column.width ?? defaultColumnWidth),\n isTreeColumn,\n // in case of the directive, those are getters, so call them explicitly.\n headerTemplate: column.headerTemplate,\n cellTemplate: column.cellTemplate,\n summaryTemplate: column.summaryTemplate,\n ghostCellTemplate: column.ghostCellTemplate,\n treeToggleTemplate: column.treeToggleTemplate\n } as TableColumnInternal; // TS cannot cast here\n });\n};\n\nexport const toPublicColumn = (column: TableColumnInternal): TableColumn => {\n return {\n ...column.$$originalColumn,\n checkboxable: column.checkboxable,\n frozenLeft: column.frozenLeft,\n frozenRight: column.frozenRight,\n flexGrow: column.flexGrow,\n minWidth: column.minWidth,\n maxWidth: column.maxWidth,\n width: column.width(),\n resizeable: column.resizeable,\n comparator: column.comparator,\n pipe: column.pipe,\n sortable: column.sortable,\n draggable: column.draggable,\n canAutoResize: column.canAutoResize,\n name: column.name,\n prop: column.prop,\n bindAsUnsafeHtml: column.bindAsUnsafeHtml,\n cellTemplate: column.cellTemplate,\n ghostCellTemplate: column.ghostCellTemplate,\n headerTemplate: column.headerTemplate,\n treeToggleTemplate: column.treeToggleTemplate,\n cellClass: column.cellClass,\n headerClass: column.headerClass,\n headerCheckboxable: column.headerCheckboxable,\n isTreeColumn: column.isTreeColumn,\n treeLevelIndent: column.treeLevelIndent,\n summaryFunc: column.summaryFunc,\n summaryTemplate: column.summaryTemplate\n };\n};\n","import {\n ColumnGroupWidth,\n PinnedColumns,\n TableColumnGroup,\n TableColumnInternal\n} from '../types/internal.types';\n\n/**\n * Returns the columns by pin.\n */\nexport const columnsByPin = (cols: TableColumnInternal[]) => {\n const ret: TableColumnGroup = {\n left: [],\n center: [],\n right: []\n };\n\n if (cols) {\n for (const col of cols) {\n if (col.frozenLeft) {\n ret.left.push(col);\n } else if (col.frozenRight) {\n ret.right.push(col);\n } else {\n ret.center.push(col);\n }\n }\n }\n\n return ret;\n};\n\n/**\n * Returns the widths of all group sets of a column\n */\nexport const columnGroupWidths = (\n groups: TableColumnGroup,\n all: TableColumnInternal[]\n): ColumnGroupWidth => {\n return {\n left: columnTotalWidth(groups.left),\n center: columnTotalWidth(groups.center),\n right: columnTotalWidth(groups.right),\n total: Math.floor(columnTotalWidth(all))\n };\n};\n\n/**\n * Calculates the total width of all columns\n */\nexport const columnTotalWidth = (columns?: TableColumnInternal[]) => {\n return columns?.reduce((total, column) => total + column.width(), 0) ?? 0;\n};\n\nexport const columnsByPinArr = (val: TableColumnInternal[]): PinnedColumns[] => {\n const colsByPin = columnsByPin(val);\n return [\n { type: 'left' as const, columns: colsByPin.left },\n { type: 'center' as const, columns: colsByPin.center },\n { type: 'right' as const, columns: colsByPin.right }\n ];\n};\n","import { TableColumnGroup, TableColumnInternal } from '../types/internal.types';\nimport { TableColumnProp } from '../types/table-column.type';\nimport { columnsByPin, columnTotalWidth } from './column';\n\n/**\n * Calculates the Total Flex Grow\n */\nexport const getTotalFlexGrow = (columns: TableColumnInternal[]) => {\n let totalFlexGrow = 0;\n\n for (const c of columns) {\n totalFlexGrow += c.flexGrow ?? 0;\n }\n\n return totalFlexGrow;\n};\n\n/**\n * Adjusts the column widths.\n * Inspired by: https://github.com/facebook/fixed-data-table/blob/master/src/FixedDataTableWidthHelper.js\n */\nexport const adjustColumnWidths = (allColumns: TableColumnInternal[], expectedWidth: number) => {\n const columnsWidth = columnTotalWidth(allColumns);\n const totalFlexGrow = getTotalFlexGrow(allColumns);\n const colsByGroup = columnsByPin(allColumns);\n\n if (columnsWidth !== expectedWidth) {\n scaleColumns(colsByGroup, expectedWidth, totalFlexGrow);\n }\n};\n\n/**\n * Resizes columns based on the flexGrow property, while respecting manually set widths\n */\nconst scaleColumns = (colsByGroup: TableColumnGroup, maxWidth: number, totalFlexGrow: number) => {\n const columns: TableColumnInternal[] = Object.values(colsByGroup).flat();\n let remainingWidth = maxWidth;\n\n // calculate total width and flexgrow points for columns that can be resized\n for (const column of columns) {\n if (column.$$oldWidth) {\n // when manually resized, switch off auto-resize\n column.canAutoResize = false;\n }\n if (!column.canAutoResize) {\n remainingWidth -= column.width();\n totalFlexGrow -= column.flexGrow ?? 0;\n } else {\n column.width.set(0);\n }\n }\n\n const hasMinWidth: Record<TableColumnProp, boolean> = {};\n\n // resize columns until no width is left to be distributed\n do {\n const widthPerFlexPoint = remainingWidth / totalFlexGrow;\n remainingWidth = 0;\n\n for (const column of columns) {\n // if the column can be resize and it hasn't reached its minimum width yet\n if (column.canAutoResize && !hasMinWidth[column.prop]) {\n const newWidth = column.width() + (column.flexGrow ?? 0) * widthPerFlexPoint;\n if (column.minWidth !== undefined && newWidth < column.minWidth) {\n remainingWidth += newWidth - column.minWidth;\n column.width.set(column.minWidth);\n hasMinWidth[column.prop] = true;\n } else {\n column.width.set(newWidth);\n }\n }\n }\n } while (remainingWidth !== 0);\n\n // Adjust for any remaining offset in computed widths vs maxWidth\n const totalWidthAchieved = columns.reduce((acc, col) => acc + col.width(), 0);\n const delta = maxWidth - totalWidthAchieved;\n\n if (delta === 0) {\n return;\n }\n\n // adjust the first column that can be auto-resized respecting the min/max widths\n for (const col of columns.filter(c => c.canAutoResize).sort((a, b) => a.width() - b.width())) {\n if (\n (delta > 0 && (!col.maxWidth || col.width() + delta <= col.maxWidth)) ||\n (delta < 0 && (!col.minWidth || col.width() + delta >= col.minWidth))\n ) {\n col.width.update(value => value + delta);\n break;\n }\n }\n};\n\n/**\n * Forces the width of the columns to\n * distribute equally but overflowing when necessary\n *\n * Rules:\n *\n * - If combined withs are less than the total width of the grid,\n * proportion the widths given the min / max / normal widths to fill the width.\n *\n * - If the combined widths, exceed the total width of the grid,\n * use the standard widths.\n *\n * - If a column is resized, it should always use that width\n *\n * - The proportional widths should never fall below min size if specified.\n *\n * - If the grid starts off small but then becomes greater than the size ( + / - )\n * the width should use the original width; not the newly proportioned widths.\n */\nexport const forceFillColumnWidths = (\n allColumns: TableColumnInternal[],\n expectedWidth: number,\n startIdx: number,\n allowBleed: boolean,\n defaultColWidth: number = 150,\n verticalScrollWidth = 0\n) => {\n const columnsToResize = allColumns\n .slice(startIdx + 1, allColumns.length)\n .filter(c => c.canAutoResize !== false);\n\n for (const column of columnsToResize) {\n if (!column.$$oldWidth) {\n column.$$oldWidth = column.width();\n }\n }\n\n let additionWidthPerColumn = 0;\n let exceedsWindow = false;\n let contentWidth = getContentWidth(allColumns, defaultColWidth);\n let remainingWidth = expectedWidth - contentWidth;\n const initialRemainingWidth = remainingWidth;\n const columnsProcessed: any[] = [];\n const remainingWidthLimit = 1; // when to stop\n\n // This loop takes care of the\n do {\n additionWidthPerColumn = remainingWidth / columnsToResize.length;\n exceedsWindow = contentWidth >= expectedWidth;\n\n for (const column of columnsToResize) {\n // don't bleed if the initialRemainingWidth is same as verticalScrollWidth\n if (exceedsWindow && allowBleed && initialRemainingWidth !== -1 * verticalScrollWidth) {\n column.width.update(value => value || defaultColWidth);\n } else {\n const newSize = (column.width() || defaultColWidth) + additionWidthPerColumn;\n\n if (column.minWidth && newSize < column.minWidth) {\n column.width.set(column.minWidth);\n columnsProcessed.push(column);\n } else if (column.maxWidth && newSize > column.maxWidth) {\n column.width.set(column.maxWidth);\n columnsProcessed.push(column);\n } else {\n column.width.set(newSize);\n }\n }\n\n column.width.update(value => Math.max(0, value));\n }\n\n contentWidth = getContentWidth(allColumns, defaultColWidth);\n remainingWidth = expectedWidth - contentWidth;\n removeProcessedColumns(columnsToResize, columnsProcessed);\n } while (remainingWidth > remainingWidthLimit && columnsToResize.length !== 0);\n\n // reset so we don't have stale values\n for (const column of columnsToResize) {\n column.$$oldWidth = 0;\n }\n};\n\n/**\n * Remove the processed columns from the current active columns.\n */\nconst removeProcessedColumns = (\n columnsToResize: TableColumnInternal[],\n columnsProcessed: TableColumnInternal[]\n) => {\n for (const column of columnsProcessed) {\n const index = columnsToResize.indexOf(column);\n columnsToResize.splice(index, 1);\n }\n};\n\n/**\n * Gets the width of the columns\n */\nconst getContentWidth = (allColumns: TableColumnInternal[], defaultColWidth = 150): number => {\n let contentWidth = 0;\n\n for (const column of allColumns) {\n contentWidth += column.width() || defaultColWidth;\n }\n\n return contentWidth;\n};\n","import { numberAttribute } from '@angular/core';\n\n/**\n * Same as {@link numberAttribute} but returns `undefined` if the value is `undefined`.\n * {@link numberAttribute} would return `NaN` in that case.\n * @param value\n */\n// Must be a function.\nexport function numberOrUndefinedAttribute(value: unknown | undefined): number | undefined {\n if (value === undefined) {\n return undefined;\n }\n\n return numberAttribute(value);\n}\n","import { InjectionToken } from '@angular/core';\n\nimport type { DatatableComponent } from '../components/datatable.component';\n\n/**\n * This token is created to break cycling import error which occurs when we import\n * DatatableComponent in DataTableRowWrapperComponent.\n */\nexport const DATATABLE_COMPONENT_TOKEN = new InjectionToken<DatatableComponent>(\n 'DatatableComponentToken'\n);\n","/**\n * Throttle a function\n */\nexport const throttle = (func: any, wait: number, options?: any) => {\n options ??= {};\n let args: any;\n let result: any;\n let timeout: any = null;\n let previous = 0;\n\n const later = () => {\n previous = options.leading === false ? 0 : +new Date();\n timeout = null;\n result = func(...args);\n };\n\n return (...argsNew: any[]) => {\n const now = +new Date();\n\n if (!previous && options.leading === false) {\n previous = now;\n }\n\n const remaining = wait - (now - previous);\n args = argsNew;\n\n if (remaining <= 0) {\n clearTimeout(timeout);\n timeout = null;\n previous = now;\n result = func(...args);\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n\n return result;\n };\n};\n\n/**\n * Throttle decorator\n *\n * class MyClass {\n * throttleable(10)\n * myFn() { ... }\n * }\n */\nexport const throttleable = (duration: number, options?: any) => {\n return (target: any, key: PropertyKey, descriptor: PropertyDescriptor) => {\n return {\n configurable: true,\n enumerable: descriptor.enumerable,\n get: function () {\n Object.defineProperty(this, key, {\n configurable: true,\n enumerable: descriptor.enumerable,\n value: throttle(descriptor.value.bind(this), duration, options)\n });\n\n return (this as any)[key];\n }\n };\n };\n};\n","import { Row } from '../types/public.types';\nimport { TableColumnProp } from '../types/table-column.type';\nimport { getterForProp } from './column-prop-getters';\n\nexport type OptionalValueGetter = ((row: any) => any) | undefined;\nexport const optionalGetterForProp = (prop: TableColumnProp | undefined): OptionalValueGetter => {\n return prop ? row => getterForProp(prop)(row, prop) : undefined;\n};\n\n/**\n * This functions rearrange items by their parents\n * Also sets the level value to each of the items\n *\n * Note: Expecting each item has a property called parentId\n * Note: This algorithm will fail if a list has two or more items with same ID\n * NOTE: This algorithm will fail if there is a deadlock of relationship\n *\n * For example,\n *\n * Input\n *\n * id -> parent\n * 1 -> 0\n * 2 -> 0\n * 3 -> 1\n * 4 -> 1\n * 5 -> 2\n * 7 -> 8\n * 6 -> 3\n *\n *\n * Output\n * id -> level\n * 1 -> 0\n * --3 -> 1\n * ----6 -> 2\n * --4 -> 1\n * 2 -> 0\n * --5 -> 1\n * 7 -> 8\n *\n *\n * @param rows\n *\n */\nexport const groupRowsByParents = <TRow extends Row>(\n rows: (TRow | undefined)[],\n from?: OptionalValueGetter,\n to?: OptionalValueGetter\n): (TRow | undefined)[] => {\n if (from && to) {\n const treeRows = rows.filter(row => !!row).map(row => new TreeNode(row));\n const uniqIDs = new Map(treeRows.map(node => [to(node.row), node]));\n\n const rootNodes = treeRows.reduce((root, node) => {\n const fromValue = from(node.row);\n const parent = uniqIDs.get(fromValue);\n if (parent) {\n node.row.level = parent.row.level! + 1; // TODO: should be reflected by type, that level is defined\n node.parent = parent;\n parent.children.push(node);\n } else {\n node.row.level = 0;\n root.push(node);\n }\n return root;\n }, [] as TreeNode<TRow>[]);\n\n return rootNodes.flatMap(child => child.flatten());\n } else {\n return rows;\n }\n};\n\nclass TreeNode<TRow extends Row> {\n public row: TRow;\n public parent?: TreeNode<TRow>;\n public children: TreeNode<TRow>[];\n\n constructor(row: TRow) {\n this.row = row;\n this.children = [];\n }\n\n flatten(): TRow[] {\n if (this.row.treeStatus === 'expanded') {\n return [this.row, ...this.children.flatMap(child => child.flatten())];\n } else {\n return [this.row];\n }\n }\n}\n\nexport const expandToRow = <TRow extends Row>(\n targetRow: TRow,\n rows: (TRow | undefined)[],\n from?: OptionalValueGetter,\n to?: OptionalValueGetter\n) => {\n if (from && to) {\n const uniqIDs = new Map(rows.filter(row => !!row).map(node => [to(node), node]));\n const visitedRowIds = new Set<unknown>();\n let currentRow: TRow | undefined = targetRow;\n\n while (currentRow) {\n const currentRowId = to(currentRow);\n if (visitedRowIds.has(currentRowId)) {\n // cycle detected, abort to avoid an infinite loop\n break;\n }\n visitedRowIds.add(currentRowId);\n\n if (currentRow.treeStatus === 'collapsed') {\n currentRow.treeStatus = 'expanded';\n }\n currentRow = uniqIDs.get(from(currentRow));\n }\n }\n};\n","export const ARROW_UP = 'ArrowUp';\nexport const ARROW_DOWN = 'ArrowDown';\nexport const ENTER = 'Enter';\nexport const ESCAPE = 'Escape';\nexport const ARROW_LEFT = 'ArrowLeft';\nexport const ARROW_RIGHT = 'ArrowRight';\n","/**\n * This object contains the cache of the various row heights that are present inside\n * the data table. Its based on Fenwick tree data structure that helps with\n * querying sums that have time complexity of log n.\n *\n * Fenwick Tree Credits: http://petr-mitrichev.blogspot.com/2013/05/fenwick-tree-range-updates.html\n * https://github.com/mikolalysenko/fenwick-tree\n *\n */\nexport class RowHeightCache<TRow> {\n /**\n * Tree Array stores the cumulative information of the row heights to perform efficient\n * range queries and updates. Currently the tree is initialized to the base row\n * height instead of the detail row height.\n */\n private treeArray: number[] = [];\n\n /**\n * Clear the Tree array.\n */\n clearCache(): void {\n this.treeArray = [];\n }\n\n /**\n * Initialize the Fenwick tree with row Heights.\n */\n initCache(details: {\n rows: TRow[];\n rowHeight: number | 'auto' | ((row: TRow) => number);\n detailRowHeight: number | ((row: TRow, index: number) => number);\n externalVirtual: boolean | undefined;\n indexOffset: number;\n rowCount: number;\n rowExpansions: Set<TRow>;\n }): void {\n const {\n rows,\n rowHeight,\n detailRowHeight,\n externalVirtual,\n indexOffset,\n rowCount,\n rowExpansions\n } = details;\n const isFn = typeof rowHeight === 'function';\n const isDetailFn = typeof detailRowHeight === 'function';\n\n if (rowHeight === 'auto' || (!isFn && isNaN(rowHeight))) {\n throw new Error(`Row Height cache initialization failed. Please ensure that 'rowHeight' is a\n valid number or function value: (${rowHeight}) when 'scrollbarV' is enabled.`);\n }\n\n // Add this additional guard in case detailRowHeight is set to 'auto' as it wont work.\n if (!isDetailFn && isNaN(detailRowHeight)) {\n throw new Error(`Row Height cache initialization failed. Please ensure that 'detailRowHeight' is a\n valid number or function value: (${detailRowHeight}) when 'scrollbarV' is enabled.`);\n }\n\n const n = externalVirtual ? rowCount : rows.length;\n this.treeArray = new Array(n);\n\n for (let i = 0; i < n; ++i) {\n this.treeArray[i] = 0;\n }\n\n for (let i = 0; i < n; ++i) {\n const row = rows[i];\n let currentRowHeight = isFn ? rowHeight(row) : rowHeight;\n\n // Add the detail row height to the already expanded rows.\n // This is useful for the table that goes through a filter or sort.\n const expanded = rowExpansions.has(row);\n if (row && expanded) {\n currentRowHeight += isDetailFn ? detailRowHeight(row, indexOffset + i) : detailRowHeight;\n }\n\n this.update(i, currentRowHeight);\n }\n }\n\n /**\n * Given the ScrollY position i.e. sum, provide the rowIndex\n * that is present in the current view port. Below handles edge cases.\n */\n getRowIndex(scrollY: number): number {\n if (scrollY === 0) {\n return 0;\n }\n return this.calcRowIndex(scrollY);\n }\n\n /**\n * When a row is expanded or rowHeight is changed, update the height. This can\n * be utilized in future when Angular Data table supports dynamic row heights.\n */\n update(atRowIndex: number, byRowHeight: number): void {\n if (!this.treeArray.length) {\n throw new Error(`Update at index ${atRowIndex} with value ${byRowHeight} failed:\n Row Height cache not initialized.`);\n }\n\n const n = this.treeArray.length;\n atRowIndex |= 0;\n\n while (atRowIndex < n) {\n this.treeArray[atRowIndex] += byRowHeight;\n atRowIndex |= atRowIndex + 1;\n }\n }\n\n /**\n * Range Sum query from 1 to the rowIndex\n */\n query(atIndex: number): number {\n if (!this.treeArray.length) {\n throw new Error(`query at index ${atIndex} failed: Fenwick tree array not initialized.`);\n }\n\n let sum = 0;\n atIndex |= 0;\n\n while (atIndex >= 0) {\n sum += this.treeArray[atIndex];\n atIndex = (atIndex & (atIndex + 1)) - 1;\n }\n\n return sum;\n }\n\n /**\n * Find the total height between 2 row indexes\n */\n queryBetween(atIndexA: number, atIndexB: number): number {\n return this.query(atIndexB) - this.query(atIndexA - 1);\n }\n\n /**\n * Given the ScrollY position i.e. sum, provide the rowIndex\n * that is present in the current view port.\n */\n private calcRowIndex(sum: number): number {\n if (!this.treeArray.length) {\n return 0;\n }\n\n let pos = -1;\n const dataLength = this.treeArray.length;\n\n // Get the highest bit for the block size.\n const highestBit = Math.pow(2, dataLength.toString(2).length - 1);\n\n for (let blockSize = highestBit; blockSize !== 0; blockSize >>= 1) {\n const nextPos = pos + blockSize;\n if (nextPos < dataLength && sum >= this.treeArray[nextPos]) {\n sum -= this.treeArray[nextPos];\n pos = nextPos;\n }\n }\n\n return pos + 1;\n }\n}\n","export const selectRows = <TRow>(selected: TRow[], row: TRow, comparefn: any) => {\n const selectedIndex = comparefn(row, selected);\n\n if (selectedIndex > -1) {\n selected.splice(selectedIndex, 1);\n } else {\n selected.push(row);\n }\n\n return selected;\n};\n\nexport const selectRowsBetween = <TRow>(\n selected: TRow[],\n rows: (TRow | undefined)[],\n index: number,\n prevIndex: number\n): TRow[] => {\n const reverse = index < prevIndex;\n\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n const greater = i >= prevIndex && i <= index;\n const lesser = i <= prevIndex && i >= index;\n\n let range = { start: 0, end: 0 };\n if (reverse) {\n range = {\n start: index,\n end: prevIndex\n };\n } else {\n range = {\n start: prevIndex,\n end: index + 1\n };\n }\n\n if ((reverse && lesser) || (!reverse && greater)) {\n // if in the positive range to be added to `selected`, and\n // not already in the selected array, add it\n if (i >= range.start && i <= range.end && row) {\n selected.push(row);\n }\n }\n }\n\n return selected;\n};\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n output\n} from '@angular/core';\n\nimport { Group, GroupContext, Row } from '../../types/public.types';\nimport { DatatableGroupHeaderDirective } from './body-group-header.directive';\n\n@Component({\n selector: 'datatable-group-wrapper',\n imports: [NgTemplateOutlet],\n template: `\n @let groupHeader = this.groupHeader();\n @if (groupHeader && groupHeader.template()) {\n <div\n class=\"datatable-group-header\"\n [style.height.px]=\"groupHeaderRowHeight()\"\n [style.width.px]=\"innerWidth()\"\n >\n <div class=\"datatable-group-cell\">\n @if (groupHeader.checkboxable()) {\n <div>\n <label class=\"datatable-checkbox\">\n <input\n #select\n type=\"checkbox\"\n [attr.aria-label]=\"ariaGroupHeaderCheckboxMessage()\"\n [checked]=\"checked()\"\n [indeterminate]=\"indeterminate()\"\n (change)=\"onCheckboxChange(select.checked)\"\n />\n </label>\n </div>\n }\n <ng-template\n [ngTemplateOutlet]=\"groupHeader.template()\"\n [ngTemplateOutletContext]=\"context()\"\n />\n </div>\n </div>\n }\n @if (expanded()) {\n <ng-content />\n }\n `,\n styleUrl: './body-group-wrapper.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'datatable-group-wrapper'\n }\n})\nexport class DataTableGroupWrapperComponent<TRow extends Row = any> {\n readonly innerWidth = input.required<number>();\n readonly groupHeader = input.required<DatatableGroupHeaderDirective | undefined>();\n readonly groupHeaderRowHeight = input.required<number>();\n readonly group = input.required<Group<TRow>>();\n readonly groupedRows = input<Group<TRow>[]>();\n readonly selected = input.required<TRow[]>();\n readonly disabled = input<boolean>();\n readonly rowIndex = input.required<number>();\n readonly expanded = input(false, { transform: booleanAttribute });\n readonly ariaGroupHeaderCheckboxMessage = input.required<string>();\n readonly groupSelectedChange = output<boolean>();\n\n readonly context = computed<GroupContext<TRow>>(() => {\n return {\n group: this.group(),\n expanded: this.expanded(),\n rowIndex: this.rowIndex()\n };\n });\n readonly selectedRowsOfGroup = computed(() => {\n const groupValue = this.group().value;\n return this.selected().filter(row => groupValue.includes(row));\n });\n readonly checked = computed(\n () => this.selectedRowsOfGroup().length === this.group().value.length\n );\n readonly indeterminate = computed(() => this.selectedRowsOfGroup().length > 0 && !this.checked());\n\n onCheckboxChange(groupSelected: boolean): void {\n this.groupSelectedChange.emit(groupSelected);\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DoCheck,\n ElementRef,\n HostListener,\n inject,\n input,\n KeyValueDiffers,\n output,\n signal\n} from '@angular/core';\n\nimport { Row, RowDetailContext, RowOrGroup, ScrollToRowOptions } from '../../types/public.types';\nimport { DatatableRowDetailDirective } from '../row-detail/row-detail.directive';\n\n@Component({\n selector: 'datatable-row-wrapper',\n imports: [NgTemplateOutlet],\n template: `\n <ng-content />\n @let rowDetailTemplate = rowDetail()?.template();\n @if (rowDetailTemplate && expanded()) {\n <div class=\"datatable-row-detail\" [style.height.px]=\"detailsRowHeight()\">\n <ng-template [ngTemplateOutlet]=\"rowDetailTemplate\" [ngTemplateOutletContext]=\"context()\" />\n </div>\n }\n `,\n styleUrl: './body-row-wrapper.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'datatable-row-wrapper'\n }\n})\nexport class DataTableRowWrapperComponent<TRow extends Row = any> implements DoCheck {\n readonly innerWidth = input.required<number>();\n readonly rowDetail = input<DatatableRowDetailDirective>();\n readonly detailRowHeightFn = input.required<(row?: TRow, index?: number) => number>();\n readonly row = input.required<TRow>();\n readonly disabled = input<boolean>();\n readonly rowContextmenu = output<{\n event: MouseEvent;\n row: RowOrGroup<TRow>;\n }>();\n\n readonly rowIndex = input.required<number>();\n\n readonly expanded = input(false, { transform: booleanAttribute });\n readonly ariaGroupHeaderCheckboxMessage = input.required<string>();\n readonly checkRowPropertyChanges = input(true, { transform: booleanAttribute });\n\n readonly detailsRowHeight = computed(() => this.detailRowHeightFn()(this.row(), this.rowIndex()));\n readonly context = computed<RowDetailContext<TRow>>(() => {\n this.rowDiffedCount(); // This allows us to get re-evaluated when the row was mutated internally.\n return {\n row: this.row(),\n expanded: this.expanded(),\n rowIndex: this.rowIndex(),\n disabled: this.disabled()\n };\n });\n\n // This counter will be incremented every time the row object is mutated.\n readonly rowDiffedCount = signal(0);\n\n private rowDiffer = inject(KeyValueDiffers).find({}).create<keyof RowOrGroup<TRow>, any>();\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n ngDoCheck(): void {\n if (!this.checkRowPropertyChanges()) {\n return;\n }\n const row = this.row();\n if (this.rowDiffer.diff(row)) {\n this.rowDiffedCount.update(count => count + 1);\n }\n }\n\n scrollIntoView(options?: ScrollToRowOptions): void {\n this.elementRef.nativeElement.scrollIntoView({\n behavior: options?.behavior,\n block: options?.block ?? 'start'\n });\n }\n\n @HostListener('contextmenu', ['$event'])\n onContextmenu($event: MouseEvent): void {\n this.rowContextmenu.emit({ event: $event, row: this.row() });\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DoCheck,\n ElementRef,\n inject,\n input,\n linkedSignal,\n output,\n signal\n} from '@angular/core';\n\nimport { NgxDatatableConfig } from '../../ngx-datatable.config';\nimport { CellActiveEvent, RowIndex, TableColumnInternal } from '../../types/internal.types';\nimport { ActivateEvent, CellContext, Row, RowOrGroup, TreeStatus } from '../../types/public.types';\nimport { TableColumn } from '../../types/table-column.type';\nimport { toPublicColumn } from '../../utils/column-helper';\nimport { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, ENTER } from '../../utils/keys';\n\n@Component({\n selector: 'datatable-body-cell',\n imports: [NgTemplateOutlet],\n template: `\n @let column = this.column();\n @let row = this.row();\n <div class=\"datatable-body-cell-label\" [style.margin-left.px]=\"calcLeftMargin(column, row)\">\n @let displayCheck = this.displayCheck();\n @if (column.checkboxable && (!displayCheck || displayCheck(row, publicColumn(), value()))) {\n <label class=\"datatable-checkbox\">\n <input\n type=\"checkbox\"\n [attr.aria-label]=\"ariaRowCheckboxMessage()\"\n [disabled]=\"disabled()\"\n [checked]=\"isSelected()\"\n (click)=\"onCheckboxChange($event)\"\n />\n </label>\n }\n @if (column.isTreeColumn) {\n @if (!column.treeToggleTemplate) {\n @let treeStatus = this.treeStatus() ?? 'collapsed';\n <button\n class=\"datatable-tree-button\"\n type=\"button\"\n [disabled]=\"treeStatus === 'disabled'\"\n [attr.aria-label]=\"treeStatus\"\n (click)=\"onTreeAction()\"\n >\n <span>\n @if (treeStatus === 'loading') {\n <i [class]=\"cssClasses().treeStatusLoading ?? 'icon datatable-icon-collapse'\"></i>\n }\n @if (treeStatus === 'collapsed') {\n <i [class]=\"cssClasses().treeStatusCollapsed ?? 'icon datatable-icon-up'\"></i>\n }\n @if (treeStatus === 'expanded' || treeStatus === 'disabled') {\n <i [class]=\"cssClasses().treeStatusExpanded ?? 'icon datatable-icon-down'\"></i>\n }\n </span>\n </button>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"column.treeToggleTemplate\"\n [ngTemplateOutletContext]=\"{ cellContext: cellContext() }\"\n />\n }\n }\n @if (!column.cellTemplate) {\n @if (column.bindAsUnsafeHtml) {\n <span [title]=\"sanitizedValue()\" [innerHTML]=\"value()\"> </span>\n } @else {\n <span [title]=\"sanitizedValue()\">{{ value() }}</span>\n }\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"column.cellTemplate\"\n [ngTemplateOutletContext]=\"cellContext()\"\n />\n }\n </div>\n `,\n styleUrl: './body-cell.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'datatable-body-cell',\n '[class]': 'columnCssClasses()',\n '[class.active]': 'isFocused() && !disabled()',\n '[class.row-disabled]': 'disabled()',\n '[style.width.px]': 'column().width()',\n '[style.minWidth.px]': 'column().minWidth',\n '[style.maxWidth.px]': 'column().maxWidth',\n '[style.height]': 'height()',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '(click)': 'onClick($event)',\n '(dblclick)': 'onDblClick($event)',\n '(keydown)': 'onKeyDown($event)'\n }\n})\nexport class DataTableBodyCellComponent<TRow extends Row = any> implements DoCheck {\n readonly displayCheck = input<(row: TRow, column: TableColumn, value: any) => boolean>();\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly group = input<TRow[]>();\n\n readonly rowHeight = input<number>(0);\n\n readonly isSelected = input(false, { transform: booleanAttribute });\n\n readonly rowIndex = input<RowIndex>();\n\n readonly column = input.required<TableColumnInternal>();\n\n readonly row = input.required<TRow>();\n\n readonly treeStatus = input<TreeStatus | undefined>('collapsed');\n\n readonly ariaRowCheckboxMessage = input.required<string>();\n\n readonly cssClasses = input.required<Partial<Required<NgxDatatableConfig>['cssClasses']>>();\n\n readonly expanded = input(false, { transform: booleanAttribute });\n\n readonly activate = output<CellActiveEvent<TRow>>();\n\n readonly treeAction = output<TRow>();\n\n protected readonly publicColumn = computed(() => toPublicColumn(this.column()));\n\n protected readonly columnCssClasses = computed(() => {\n const column = this.column();\n if (!column.cellClass) {\n return [];\n }\n if (typeof column.cellClass === 'string') {\n return column.cellClass;\n }\n return column.cellClass({\n row: this.row(),\n group: this.group(),\n column: this.publicColumn(),\n value: this.value(),\n rowHeight: this.rowHeight()\n });\n });\n\n protected readonly height = computed(() => {\n const height = this.rowHeight();\n if (isNaN(height)) {\n return height;\n }\n return height + 'px';\n });\n\n protected readonly sanitizedValue = computed(() => {\n const value = this.value();\n return value !== null && value !== undefined ? this.stripHtml(value) : value;\n });\n readonly value = linkedSignal(() => this.getComputedValue());\n protected readonly cellContext = computed<CellContext<TRow>>(() => {\n return {\n onCheckboxChangeFn: (event: Event) => this.onCheckboxChange(event),\n activateFn: (event: ActivateEvent<TRow>) => this.activate.emit(event),\n row: this.row(),\n group: this.group(),\n value: this.value(),\n column: this.publicColumn(),\n rowHeight: this.rowHeight(),\n isSelected: this.isSelected(),\n rowIndex: this.rowIndex()?.index ?? 0,\n rowInGroupIndex: this.rowIndex()?.indexInGroup,\n treeStatus: this.treeStatus() ?? 'collapsed',\n disabled: this.disabled(),\n expanded: this.expanded(),\n onTreeAction: () => this.onTreeAction()\n };\n });\n\n protected readonly isFocused = signal(false);\n private _element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n ngDoCheck(): void {\n const value = this.getComputedValue();\n if (value !== this.value()) {\n this.value.set(value);\n }\n }\n\n private getComputedValue(): any {\n let value = '';\n const column = this.column();\n const row = this.row();\n if (!row || column.prop == undefined) {\n value = '';\n } else {\n const val = column.$$valueGetter(row, column.prop);\n const userPipe = column.pipe;\n\n if (userPipe) {\n value = userPipe.transform(val);\n } else if (value !== undefined) {\n value = val;\n }\n }\n return value;\n }\n\n protected onFocus(): void {\n this.isFocused.set(true);\n }\n\n protected onBlur(): void {\n this.isFocused.set(false);\n }\n\n protected onClick(event: MouseEvent): void {\n this.activate.emit({\n type: 'click',\n event,\n row: this.row(),\n group: this.group(),\n rowHeight: this.rowHeight(),\n column: this.publicColumn(),\n value: this.value(),\n cellElement: this._element\n });\n }\n\n protected onDblClick(event: MouseEvent): void {\n this.activate.emit({\n type: 'dblclick',\n event,\n row: this.row(),\n group: this.group(),\n rowHeight: this.rowHeight(),\n column: this.publicColumn(),\n value: this.value(),\n cellElement: this._element\n });\n }\n\n protected onKeyDown(event: KeyboardEvent): void {\n const key = event.key;\n const isTargetCell = event.target === this._element;\n\n const isAction =\n key === ENTER ||\n key === ARROW_DOWN ||\n key === ARROW_UP ||\n key === ARROW_LEFT ||\n key === ARROW_RIGHT;\n\n if (isAction && isTargetCell) {\n event.preventDefault();\n event.stopPropagation();\n\n this.activate.emit({\n type: 'keydown',\n event,\n row: this.row(),\n group: this.group(),\n rowHeight: this.rowHeight(),\n column: this.publicColumn(),\n value: this.value(),\n cellElement: this._element\n });\n }\n }\n\n onCheckboxChange(event: Event): void {\n this.activate.emit({\n type: 'checkbox',\n event,\n row: this.row(),\n group: this.group(),\n rowHeight: this.rowHeight(),\n column: this.publicColumn(),\n value: this.value(),\n cellElement: this._element,\n treeStatus: 'collapsed'\n });\n }\n\n stripHtml(html: string): string {\n if (!html.replace) {\n return html;\n }\n return html.replace(/<\\/?[^>]+(>|$)/g, '');\n }\n\n protected onTreeAction() {\n this.treeAction.emit(this.row());\n }\n\n calcLeftMargin(column: TableColumnInternal, row: RowOrGroup<TRow>): number {\n const levelIndent = column.treeLevelIndent ?? 50;\n return column.isTreeColumn ? (row as TRow).level! * levelIndent : 0;\n }\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n DoCheck,\n ElementRef,\n HostBinding,\n HostListener,\n inject,\n input,\n KeyValueDiffer,\n KeyValueDiffers,\n output\n} from '@angular/core';\n\nimport { NgxDatatableConfig } from '../../ngx-datatable.config';\nimport { CellActiveEvent, RowIndex, TableColumnInternal } from '../../types/internal.types';\nimport { ActivateEvent, Row, RowOrGroup, TreeStatus } from '../../types/public.types';\nimport { TableColumn } from '../../types/table-column.type';\nimport { columnGroupWidths, columnsByPin, columnsByPinArr } from '../../utils/column';\nimport { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, ENTER } from '../../utils/keys';\nimport { DataTableBodyCellComponent } from './body-cell.component';\n\n@Component({\n selector: 'datatable-body-row',\n imports: [DataTableBodyCellComponent],\n template: `\n @for (colGroup of _columnsByPin(); track colGroup.type) {\n @if (colGroup.columns.length) {\n <div\n class=\"datatable-row-group\"\n [class]=\"'datatable-row-' + colGroup.type\"\n [style.width.px]=\"_columnGroupWidths()[colGroup.type]\"\n [class.row-disabled]=\"disabled()\"\n >\n @for (column of colGroup.columns; track column.$$id; let ii = $index) {\n <datatable-body-cell\n role=\"cell\"\n tabindex=\"-1\"\n [row]=\"row()\"\n [group]=\"group()\"\n [expanded]=\"expanded()\"\n [isSelected]=\"isSelected()\"\n [rowIndex]=\"rowIndex()\"\n [column]=\"column\"\n [rowHeight]=\"rowHeight()\"\n [displayCheck]=\"displayCheck()\"\n [disabled]=\"disabled()\"\n [treeStatus]=\"treeStatus()\"\n [ariaRowCheckboxMessage]=\"ariaRowCheckboxMessage()\"\n [cssClasses]=\"cssClasses()\"\n (activate)=\"onActivate($event, ii)\"\n (treeAction)=\"onTreeAction()\"\n />\n }\n </div>\n }\n }\n `,\n styleUrl: './body-row.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'datatable-body-row',\n 'role': 'row',\n 'tabindex': '-1',\n '[class]': 'cssClass()',\n '[class.active]': 'isSelected()',\n '[class.datatable-row-odd]': 'innerRowIndex() % 2 !== 0',\n '[class.datatable-row-even]': 'innerRowIndex() % 2 === 0',\n '[class.row-disabled]': 'disabled()',\n '[style.height.px]': 'rowHeight()'\n }\n})\nexport class DataTableBodyRowComponent<TRow extends Row = any> implements DoCheck {\n private cd = inject(ChangeDetectorRef);\n\n readonly columns = input.required<TableColumnInternal[]>();\n readonly expanded = input<boolean>();\n readonly rowClass = input<(row: TRow) => string | Record<string, boolean>>();\n readonly row = input.required<TRow>();\n readonly group = input<TRow[]>();\n readonly isSelected = input<boolean>();\n readonly rowIndex = input.required<RowIndex>();\n readonly displayCheck = input<(row: TRow, column: TableColumn, value?: any) => boolean>();\n readonly treeStatus = input<TreeStatus | undefined>('collapsed');\n readonly ariaRowCheckboxMessage = input.required<string>();\n\n readonly disabled = input<boolean>();\n readonly cssClasses = input.required<Partial<Required<NgxDatatableConfig>['cssClasses']>>();\n readonly checkRowPropertyChanges = input(true, { transform: booleanAttribute });\n\n protected readonly cssClass = computed(() => {\n const rowClass = this.rowClass();\n return rowClass ? rowClass(this.row()) : [];\n });\n\n readonly rowHeight = input.required<number>();\n\n @HostBinding('style.width.px')\n get columnsTotalWidths(): number {\n return this._columnGroupWidths().total;\n }\n\n readonly activate = output<ActivateEvent<TRow>>();\n readonly treeAction = output<void>();\n\n _element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n readonly _columnGroupWidths = computed(() => {\n const colsByPin = columnsByPin(this.columns());\n return columnGroupWidths(colsByPin, this.columns());\n });\n readonly _columnsByPin = computed(() => {\n return columnsByPinArr(this.columns());\n });\n\n private _rowDiffer: KeyValueDiffer<keyof RowOrGroup<TRow>, any> = inject(KeyValueDiffers)\n .find({})\n .create();\n\n ngDoCheck(): void {\n if (!this.checkRowPropertyChanges()) {\n return;\n }\n if (this._rowDiffer.diff(this.row())) {\n this.cd.markForCheck();\n }\n }\n\n onActivate(event: CellActiveEvent<TRow>, index: number): void {\n this.activate.emit({ ...event, rowElement: this._element, cellIndex: index });\n }\n\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent): void {\n const key = event.key;\n const isTargetRow = event.target === this._element;\n\n const isAction =\n key === ENTER ||\n key === ARROW_DOWN ||\n key === ARROW_UP ||\n key === ARROW_LEFT ||\n key === ARROW_RIGHT;\n\n const isCtrlA = event.key === 'a' && (event.ctrlKey || event.metaKey);\n\n if ((isAction && isTargetRow) || isCtrlA) {\n event.preventDefault();\n event.stopPropagation();\n\n this.activate.emit({\n type: 'keydown',\n event,\n row: this.row(),\n rowElement: this._element\n });\n }\n }\n\n @HostListener('mouseenter', ['$event'])\n onMouseenter(event: MouseEvent): void {\n this.activate.emit({\n type: 'mouseenter',\n event,\n row: this.row(),\n rowElement: this._element\n });\n }\n\n onTreeAction() {\n this.treeAction.emit();\n }\n\n /** Returns the row index, or if in a group, the index within a group. */\n protected readonly innerRowIndex = computed(() => {\n const rowIndex = this.rowIndex();\n return rowIndex?.indexInGroup ?? rowIndex?.index ?? 0;\n });\n}\n","import { Directive } from '@angular/core';\n\nimport { Row } from '../../types/public.types';\n\n@Directive({\n selector: '[ngx-datatable-body-row]'\n})\nexport class DatatableBodyRowDirective {\n static ngTemplateContextGuard<TRow extends Row = any>(\n directive: DatatableBodyRowDirective,\n context: unknown\n ): context is {\n row: TRow;\n groupedRows: TRow[];\n index: number;\n indexInGroup?: number;\n disabled: boolean;\n } {\n return true;\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n numberAttribute\n} from '@angular/core';\n\nimport { TableColumnInternal } from '../../../types/internal.types';\n\n@Component({\n selector: 'ghost-loader',\n imports: [NgTemplateOutlet],\n templateUrl: './ghost-loader.component.html',\n styleUrl: './ghost-loader.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DataTableGhostLoaderComponent {\n readonly columns = input.required<TableColumnInternal[]>();\n readonly pageSize = input.required<number, unknown>({ transform: numberAttribute });\n readonly rowHeight = input.required<number | 'auto' | ((row?: any) => number)>();\n readonly ghostBodyHeight = input<number, unknown>(undefined, { transform: numberAttribute });\n\n protected readonly ghostRows = computed(() =>\n Array.from({ length: this.pageSize() }, (_, index) => index)\n );\n\n protected readonly rowHeightComputed = () => {\n const rowHeight = this.rowHeight();\n if (typeof rowHeight === 'function') {\n // If rowHeight is a function, we cannot determine a fixed height here.\n return 'auto';\n }\n return rowHeight === 'auto' ? 'auto' : rowHeight + 'px';\n };\n}\n","<div class=\"ghost-loader ghost-cell-container\" [style.height.px]=\"ghostBodyHeight()\">\n @for (item of ghostRows(); track item) {\n <div class=\"ghost-element datatable-body-row\" [style.height]=\"rowHeightComputed()\">\n @for (col of columns(); track col) {\n <div class=\"ghost-cell datatable-body-cell\" [style.width.px]=\"col.width()\">\n @if (!col.ghostCellTemplate) {\n <div class=\"line ghost-cell-strip\"></div>\n } @else {\n <ng-template [ngTemplateOutlet]=\"col.ghostCellTemplate\" />\n }\n </div>\n }\n </div>\n }\n</div>\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n output,\n Renderer2\n} from '@angular/core';\n\nimport { ScrollToRowOptions } from '../../types/public.types';\n\nexport interface ScrollEventInternal {\n direction: string;\n scrollYPos: number;\n scrollXPos: number;\n}\n\n@Component({\n selector: 'datatable-scroller',\n template: ` <ng-content /> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'datatable-scroll',\n '[style.height.px]': 'scrollHeight()',\n '[style.width.px]': 'scrollWidth()'\n }\n})\nexport class ScrollerComponent implements OnInit, OnDestroy {\n private renderer = inject(Renderer2);\n\n readonly scrollbarV = input(false, {\n transform: booleanAttribute\n });\n readonly scrollbarH = input(false, {\n transform: booleanAttribute\n });\n readonly scrollHeight = input<number>();\n readonly scrollWidth = input<number>();\n\n readonly scroll = output<ScrollEventInternal>();\n\n scrollYPos = 0;\n scrollXPos = 0;\n prevScrollYPos = 0;\n prevScrollXPos = 0;\n element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n parentElement?: HTMLElement;\n\n private _scrollEventListener: any = null;\n private _scrollRafId: number | null = null;\n\n ngOnInit(): void {\n // manual bind so we don't always listen\n if (this.scrollbarV() || this.scrollbarH()) {\n const renderer = this.renderer;\n this.parentElement = renderer.parentNode(this.element);\n this._scrollEventListener = this.onScrolled.bind(this);\n this.parentElement?.addEventListener('scroll', this._scrollEventListener);\n }\n }\n\n ngOnDestroy(): void {\n if (this._scrollRafId !== null) {\n cancelAnimationFrame(this._scrollRafId);\n this._scrollRafId = null;\n }\n if (this._scrollEventListener) {\n this.parentElement?.removeEventListener('scroll', this._scrollEventListener);\n this._scrollEventListener = null;\n }\n }\n\n setOffset(offsetY: number): void {\n if (this.parentElement) {\n this.parentElement.scrollTop = offsetY;\n }\n }\n\n scrollTo(top: number, options?: ScrollToRowOptions): void {\n if (this.parentElement) {\n this.parentElement.scrollTo({ top, behavior: options?.behavior });\n }\n }\n\n onScrolled(event: MouseEvent): void {\n if (this._scrollRafId !== null) {\n return;\n }\n const dom: Element = event.currentTarget as Element;\n this._scrollRafId = requestAnimationFrame(() => {\n this._scrollRafId = null;\n this.scrollYPos = dom.scrollTop;\n this.scrollXPos = dom.scrollLeft;\n this.updateOffset();\n });\n }\n\n updateOffset(): void {\n let direction: string;\n if (this.scrollYPos < this.prevScrollYPos) {\n direction = 'down';\n } else {\n direction = 'up';\n }\n\n this.scroll.emit({\n direction,\n scrollYPos: this.scrollYPos,\n scrollXPos: this.scrollXPos\n });\n\n this.prevScrollYPos = this.scrollYPos;\n this.prevScrollXPos = this.scrollXPos;\n }\n}\n","import { Component, computed, input } from '@angular/core';\n\nimport { TableColumnInternal } from '../../../types/internal.types';\nimport { DataTableBodyRowComponent } from '../body-row.component';\n\nconst defaultSumFunc = (cells: any[]): any => {\n const cellsWithValues = cells.filter(cell => !!cell);\n\n if (!cellsWithValues.length) {\n return null;\n }\n if (cellsWithValues.some(cell => typeof cell !== 'number')) {\n return null;\n }\n\n return cellsWithValues.reduce((res, cell) => res + cell);\n};\n\nconst noopSumFunc = (cells: any[]): void => {\n return;\n};\n\n@Component({\n selector: 'datatable-summary-row',\n imports: [DataTableBodyRowComponent],\n template: `\n @let summaryRow = this.summaryRow();\n @let _internalColumns = this._internalColumns();\n @if (summaryRow && _internalColumns.length) {\n <datatable-body-row\n ariaRowCheckboxMessage=\"\"\n [columns]=\"_internalColumns\"\n [rowHeight]=\"rowHeight()\"\n [row]=\"summaryRow\"\n [rowIndex]=\"{ index: -1 }\"\n [cssClasses]=\"{}\"\n />\n }\n `,\n host: {\n class: 'datatable-summary-row'\n }\n})\nexport class DataTableSummaryRowComponent {\n readonly rows = input.required<any[]>();\n readonly columns = input.required<TableColumnInternal[]>();\n\n readonly rowHeight = input.required<number>();\n readonly innerWidth = input.required<number>();\n\n protected readonly _internalColumns = computed(() => {\n return this.columns().map(col => ({\n ...col,\n cellTemplate: col.summaryTemplate\n }));\n });\n protected readonly summaryRow = computed(() => this.computeSummaryRowValues());\n\n private computeSummaryRowValues() {\n if (!this.columns().length || !this.rows().length) {\n return undefined;\n }\n const summaryRow: any = {};\n this.columns()\n .filter(col => !col.summaryTemplate && col.prop)\n .forEach(col => {\n const cellsFromSingleColumn = this.rows().map(row => row[col.prop!]);\n const sumFunc = this.getSummaryFunction(col);\n\n summaryRow[col.prop!] = col.pipe\n ? col.pipe.transform(sumFunc(cellsFromSingleColumn))\n : sumFunc(cellsFromSingleColumn);\n });\n\n return summaryRow;\n }\n\n private getSummaryFunction(column: TableColumnInternal): (a: any[]) => any {\n if (column.summaryFunc === undefined) {\n return defaultSumFunc;\n } else if (column.summaryFunc === null) {\n return noopSumFunc;\n } else {\n return column.summaryFunc;\n }\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n Input,\n model,\n OnChanges,\n OnInit,\n output,\n OutputEmitterRef,\n signal,\n SimpleChanges,\n TemplateRef,\n TrackByFunction,\n untracked,\n ViewChild,\n viewChildren\n} from '@angular/core';\n\nimport { NgxDatatableConfig } from '../../ngx-datatable.config';\nimport { TableColumnInternal } from '../../types/internal.types';\nimport {\n ActivateEvent,\n DetailToggleEvents,\n DragEventData,\n Group,\n GroupToggleEvents,\n Row,\n RowOrGroup,\n ScrollEvent,\n ScrollToRowOptions,\n SelectionType\n} from '../../types/public.types';\nimport { TableColumn } from '../../types/table-column.type';\nimport { columnGroupWidths, columnsByPin } from '../../utils/column';\nimport { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, ENTER } from '../../utils/keys';\nimport { RowHeightCache } from '../../utils/row-height-cache';\nimport { selectRows, selectRowsBetween } from '../../utils/selection';\nimport { DatatableRowDetailDirective } from '../row-detail/row-detail.directive';\nimport { DatatableGroupHeaderDirective } from './body-group-header.directive';\nimport { DataTableGroupWrapperComponent } from './body-group-wrapper.component';\nimport { DatatableRowDefInternalDirective } from './body-row-def.component';\nimport { DataTableRowWrapperComponent } from './body-row-wrapper.component';\nimport { DataTableBodyRowComponent } from './body-row.component';\nimport { DatatableBodyRowDirective } from './body-row.directive';\nimport { DataTableGhostLoaderComponent } from './ghost-loader/ghost-loader.component';\nimport { ScrollerComponent } from './scroller.component';\nimport { DataTableSummaryRowComponent } from './summary/summary-row.component';\n\n@Component({\n selector: 'datatable-body',\n imports: [\n DataTableGhostLoaderComponent,\n ScrollerComponent,\n DataTableSummaryRowComponent,\n DataTableRowWrapperComponent,\n DatatableRowDefInternalDirective,\n DataTableBodyRowComponent,\n NgTemplateOutlet,\n DatatableBodyRowDirective,\n DataTableGroupWrapperComponent\n ],\n template: `\n @if (loadingIndicator()) {\n <div class=\"custom-loading-indicator-wrapper\">\n <div class=\"custom-loading-content\">\n <ng-content select=\"[loading-indicator]\" />\n </div>\n </div>\n }\n @let scrollbarV = this.scrollbarV();\n @let columns = this.columns();\n @let columnGroupWidths = this.columnGroupWidths();\n @let bodyHeight = this._bodyHeight();\n @let rows = this.rows();\n @let rowCount = this.rowCount();\n @if (ghostLoadingIndicator() && (!rowCount || !virtualization() || !scrollbarV)) {\n <ghost-loader\n class=\"ghost-overlay\"\n [columns]=\"columns\"\n [pageSize]=\"pageSize()\"\n [rowHeight]=\"rowHeight()\"\n [ghostBodyHeight]=\"bodyHeight\"\n />\n }\n @if (rows.length) {\n <datatable-scroller\n [scrollbarV]=\"scrollbarV\"\n [scrollbarH]=\"scrollbarH()\"\n [scrollHeight]=\"scrollHeight()\"\n [scrollWidth]=\"columnGroupWidths?.total\"\n [class.horizontal-overflow]=\"innerWidth() < (columnGroupWidths?.total ?? 0)\"\n (scroll)=\"onBodyScroll($event)\"\n >\n @if (summaryRow() && summaryPosition() === 'top') {\n <datatable-summary-row\n [rowHeight]=\"summaryHeight()\"\n [innerWidth]=\"innerWidth()\"\n [rows]=\"rows\"\n [columns]=\"columns\"\n />\n }\n <ng-template\n #bodyRow\n let-row=\"row\"\n let-index=\"index\"\n let-indexInGroup=\"indexInGroup\"\n let-groupedRows=\"groupedRows\"\n let-disabled=\"disabled\"\n ngx-datatable-body-row\n >\n <datatable-row-wrapper\n [attr.hidden]=\"\n ghostLoadingIndicator() && (!rowCount || !virtualization() || !scrollbarV)\n ? true\n : null\n \"\n [innerWidth]=\"innerWidth()\"\n [rowDetail]=\"rowDetail()\"\n [detailRowHeightFn]=\"detailRowHeightFn()\"\n [row]=\"row\"\n [disabled]=\"disabled\"\n [expanded]=\"getRowExpanded(row)\"\n [rowIndex]=\"indexes().first + index\"\n [ariaGroupHeaderCheckboxMessage]=\"ariaGroupHeaderCheckboxMessage()\"\n [checkRowPropertyChanges]=\"checkRowPropertyChanges()\"\n (rowContextmenu)=\"rowContextmenu.emit($event)\"\n >\n <datatable-body-row\n #rowElement\n [disabled]=\"disabled\"\n [isSelected]=\"getRowSelected(row)\"\n [columns]=\"columns\"\n [rowHeight]=\"getRowHeight(row)\"\n [row]=\"row\"\n [group]=\"groupedRows\"\n [rowIndex]=\"{ index: index, indexInGroup: indexInGroup }\"\n [expanded]=\"getRowExpanded(row)\"\n [rowClass]=\"rowClass()\"\n [displayCheck]=\"displayCheck()\"\n [treeStatus]=\"row?.treeStatus\"\n [draggable]=\"rowDraggable()\"\n [ariaRowCheckboxMessage]=\"ariaRowCheckboxMessage()\"\n [cssClasses]=\"cssClasses()\"\n [checkRowPropertyChanges]=\"checkRowPropertyChanges()\"\n (treeAction)=\"onTreeAction(row)\"\n (activate)=\"onActivate($event, index)\"\n (drop)=\"drop($event, row, rowElement)\"\n (dragover)=\"dragOver($event, row)\"\n (dragenter)=\"dragEnter($event, row, rowElement)\"\n (dragleave)=\"dragLeave($event, row, rowElement)\"\n (dragstart)=\"drag($event, row, rowElement)\"\n (dragend)=\"dragEnd($event, row)\"\n />\n </datatable-row-wrapper>\n </ng-template>\n\n <div [style.transform]=\"renderOffset()\">\n @for (group of rowsToRender(); track rowTrackingFn(i, group); let i = $index) {\n @if (!group && ghostLoadingIndicator()) {\n <ghost-loader [columns]=\"columns\" [pageSize]=\"1\" [rowHeight]=\"rowHeight()\" />\n } @else if (group) {\n @let disableRowCheck = this.disableRowCheck();\n @let disabled = isRow(group) && disableRowCheck && disableRowCheck(group);\n @let rowDefTemplate = this.rowDefTemplate();\n @if (rowDefTemplate) {\n <ng-container\n *rowDefInternal=\"\n {\n template: rowDefTemplate,\n rowTemplate: bodyRow,\n row: group,\n index: i\n };\n disabled: disabled\n \"\n />\n } @else {\n @if (isRow(group)) {\n <ng-container\n [ngTemplateOutlet]=\"bodyRow\"\n [ngTemplateOutletContext]=\"{\n row: group,\n index: indexes().first + i,\n disabled\n }\"\n />\n }\n }\n\n @if (isGroup(group)) {\n <datatable-group-wrapper\n [group]=\"group\"\n [attr.hidden]=\"\n ghostLoadingIndicator() && (!rowCount || !virtualization() || !scrollbarV)\n ? true\n : null\n \"\n [innerWidth]=\"innerWidth()\"\n [style.width]=\"groupedRows() ? columnGroupWidths.total : undefined\"\n [groupHeader]=\"groupHeader()\"\n [groupHeaderRowHeight]=\"getGroupHeaderRowHeight(group, i)\"\n [disabled]=\"disabled\"\n [expanded]=\"getGroupExpanded(group)\"\n [rowIndex]=\"indexes().first + i\"\n [selected]=\"selected()\"\n [ariaGroupHeaderCheckboxMessage]=\"ariaGroupHeaderCheckboxMessage()\"\n (groupSelectedChange)=\"groupSelectedChange($event, group)\"\n >\n @for (row of group.value; track rowTrackingFn($index, row)) {\n @let disabled = disableRowCheck && disableRowCheck(row);\n <ng-container\n [ngTemplateOutlet]=\"bodyRow\"\n [ngTemplateOutletContext]=\"{\n row,\n groupedRows: group?.value,\n index: indexes().first + i,\n indexInGroup: $index,\n disabled\n }\"\n />\n }\n </datatable-group-wrapper>\n }\n }\n }\n </div>\n </datatable-scroller>\n @if (summaryRow() && summaryPosition() === 'bottom') {\n <datatable-summary-row\n [rowHeight]=\"summaryHeight()\"\n [innerWidth]=\"innerWidth()\"\n [rows]=\"rows\"\n [columns]=\"columns\"\n />\n }\n }\n @if (!rows?.length && !loadingIndicator() && !ghostLoadingIndicator()) {\n <datatable-scroller\n [scrollbarV]=\"scrollbarV\"\n [scrollbarH]=\"scrollbarH()\"\n [scrollHeight]=\"scrollHeight()\"\n [style.width]=\"scrollbarH() ? columnGroupWidths?.total + 'px' : '100%'\"\n (scroll)=\"onBodyScroll($event)\"\n >\n <ng-content select=\"[empty-content]\" />\n </datatable-scroller>\n }\n `,\n styleUrl: './body.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'datatable-body',\n '[style.height]': '_bodyHeight()',\n '[style.width]': '_bodyWidth()'\n }\n})\nexport class DataTableBodyComponent<TRow extends Row = any> implements OnInit, OnChanges {\n cd = inject(ChangeDetectorRef);\n\n readonly rowDefTemplate = input<TemplateRef<any>>();\n readonly scrollbarV = input(false, { transform: booleanAttribute });\n readonly scrollbarH = input<boolean>();\n readonly loadingIndicator = input<boolean>();\n readonly ghostLoadingIndicator = input<boolean>();\n readonly externalPaging = input<boolean>();\n readonly rowHeight = input.required<number | 'auto' | ((row?: any) => number)>();\n readonly offsetX = model.required<number>();\n readonly selectionType = input<SelectionType>();\n readonly selected = model<TRow[]>([]);\n readonly rowIdentity = input.required<(x: RowOrGroup<TRow>) => unknown>();\n readonly rowDetail = input<DatatableRowDetailDirective>();\n readonly groupHeader = input<DatatableGroupHeaderDirective>();\n readonly selectCheck = input<(value: TRow, index: number, array: TRow[]) => boolean>();\n readonly displayCheck = input<(row: TRow, column: TableColumn, value?: any) => boolean>();\n readonly trackByProp = input<keyof TRow>();\n readonly rowClass = input<(row: TRow) => string | Record<string, boolean>>();\n readonly groupedRows = input<Group<TRow>[]>();\n // TODO: Find a better way to handle default expansion state with signal input\n @Input() groupExpansionDefault?: boolean;\n readonly innerWidth = input.required<number>();\n readonly virtualization = input<boolean>();\n readonly summaryRow = input<boolean>();\n readonly summaryPosition = input.required<string>();\n readonly summaryHeight = input.required<number>();\n readonly rowDraggable = input<boolean>();\n readonly rowDragEvents = input.required<OutputEmitterRef<DragEventData>>();\n readonly disableRowCheck = input<(row: TRow) => boolean | undefined>();\n readonly ariaGroupHeaderCheckboxMessage = input.required<string>();\n readonly checkRowPropertyChanges = input(true, { transform: booleanAttribute });\n\n readonly pageSize = input.required<number>();\n\n readonly rows = input.required<(TRow | undefined)[]>();\n\n readonly columns = input.required<TableColumnInternal[]>();\n\n readonly offset = input<number>(0);\n\n readonly rowCount = input<number>(0);\n\n readonly bodyHeight = input<string | number>();\n readonly verticalScrollVisible = input(false);\n readonly ariaRowCheckboxMessage = input.required<string>();\n readonly cssClasses = input.required<Partial<Required<NgxDatatableConfig>['cssClasses']>>();\n\n readonly scroll = output<ScrollEvent>();\n readonly page = output<number>();\n readonly activate = output<ActivateEvent<TRow>>();\n readonly rowContextmenu = output<{\n event: MouseEvent;\n row: RowOrGroup<TRow>;\n }>();\n readonly treeAction = output<{ row: TRow }>();\n\n @ViewChild(ScrollerComponent) scroller!: ScrollerComponent;\n private readonly rowWrappers = viewChildren(DataTableRowWrapperComponent);\n\n /**\n * Returns if selection is enabled.\n */\n get selectEnabled(): boolean {\n return !!this.selectionType();\n }\n\n /**\n * Property that would calculate the height of scroll bar\n * based on the row heights cache for virtual scroll and virtualization. Other scenarios\n * calculate scroll height automatically (as height will be undefined).\n */\n readonly scrollHeight = computed(() => {\n if (this.rowHeightsCache() && this.scrollbarV() && this.virtualization() && this.rowCount()) {\n return this.rowHeightsCache().query(this.rowCount() - 1);\n }\n // avoid TS7030: Not all code paths return a value.\n return undefined;\n });\n\n readonly detailRowHeightFn = computed(() => {\n const rowDetail = this.rowDetail();\n if (!rowDetail) {\n return () => 0;\n }\n const rowHeight = rowDetail.rowHeight();\n return typeof rowHeight === 'function' ? rowHeight : () => rowHeight;\n });\n\n readonly rowsToRender = computed(() => {\n return this.updateRows();\n });\n readonly rowHeightsCache = computed(() => this.computeRowHeightsCache());\n readonly offsetY = signal(0);\n readonly indexes = computed(() => this.computeIndexes());\n readonly columnGroupWidths = computed(() => {\n const colsByPin = columnsByPin(this.columns());\n return columnGroupWidths(colsByPin, this.columns());\n });\n rowTrackingFn: TrackByFunction<RowOrGroup<TRow> | undefined>;\n destroyRef = inject(DestroyRef);\n readonly rowExpansions = signal<TRow[]>([]);\n readonly groupExpansions = signal<Group<TRow>[]>([]);\n\n _rows!: (TRow | undefined)[];\n readonly _bodyWidth = computed(() => {\n if (this.scrollbarH()) {\n return this.innerWidth() + 'px';\n } else {\n return '100%';\n }\n });\n readonly _bodyHeight = computed(() => {\n if (this.scrollbarV()) {\n return this.bodyHeight() + 'px';\n } else {\n return 'auto';\n }\n });\n _offsetEvent = -1;\n\n private _draggedRow?: RowOrGroup<TRow>;\n private _draggedRowElement?: HTMLElement;\n\n /**\n * Creates an instance of DataTableBodyComponent.\n */\n constructor() {\n // declare fn here so we can get access to the `this` property\n this.rowTrackingFn = (index, row) => {\n if (this.ghostLoadingIndicator()) {\n return index;\n }\n const trackByProp = this.trackByProp();\n if (trackByProp && row && this.isRow(row)) {\n return row[trackByProp];\n } else if (row && this.isGroup(row)) {\n return row.key ?? index;\n } else {\n return row ?? index;\n }\n };\n effect(() => this.defaultGroupExpansionEffect());\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.bodyHeight || changes.rows || changes.rowCount || changes.pageSize) {\n if (changes.pageSize) {\n this._offsetEvent = -1;\n this.updatePage('up');\n this.updatePage('down');\n }\n }\n }\n\n /**\n * Called after the constructor, initializing input properties\n */\n ngOnInit(): void {\n const rowDetail = this.rowDetail();\n if (rowDetail) {\n const listener = rowDetail.toggle.subscribe(event => this.rowToggleStateChange(event));\n this.destroyRef.onDestroy(() => listener.unsubscribe());\n }\n\n const groupHeader = this.groupHeader();\n if (groupHeader) {\n const listener = groupHeader.toggle.subscribe(event => {\n // Remove default expansion state once user starts manual toggle.\n this.groupExpansionDefault = false;\n this.groupToggleStateChange(event);\n });\n this.destroyRef.onDestroy(() => listener.unsubscribe());\n }\n }\n\n private defaultGroupExpansionEffect(): void {\n if (\n this.groupedRows() &&\n untracked(() => this.groupExpansions().length) === 0 &&\n this.groupExpansionDefault\n ) {\n this.groupExpansions.set([...(this.groupedRows() ?? [])]);\n }\n }\n\n private groupToggleStateChange({ type, value }: GroupToggleEvents<TRow>) {\n if (type === 'group') {\n this.toggleGroupExpansion(value);\n }\n if (type === 'all') {\n this.toggleAllGroups(value);\n }\n\n // Refresh rows after toggle\n this.cd.markForCheck();\n }\n\n private rowToggleStateChange({ type, value }: DetailToggleEvents<TRow>) {\n if (type === 'row') {\n this.toggleRowExpansion(value);\n }\n if (type === 'all') {\n this.toggleAllRows(value);\n }\n\n // Refresh rows after toggle\n this.cd.markForCheck();\n }\n\n /**\n * Updates the Y offset given a new offset.\n */\n updateOffsetY(offset?: number): void {\n // scroller is missing on empty table\n if (!this.scroller) {\n return;\n }\n\n const virtualization = this.virtualization();\n if (this.scrollbarV() && virtualization && offset) {\n // First get the row Index that we need to move to.\n const rowIndex = this.pageSize() * offset;\n offset = this.rowHeightsCache().query(rowIndex - 1);\n } else if (this.scrollbarV() && !virtualization) {\n offset = 0;\n }\n\n this.scroller.setOffset(offset ?? 0);\n }\n\n /**\n * Body was scrolled, this is mainly useful for\n * when a user is server-side pagination via virtual scroll.\n */\n onBodyScroll(event: any): void {\n const scrollYPos: number = event.scrollYPos;\n const scrollXPos: number = event.scrollXPos;\n\n // if scroll change, trigger update\n // this is mainly used for header cell positions\n if (this.offsetY() !== scrollYPos || this.offsetX() !== scrollXPos) {\n this.scroll.emit({\n offsetY: scrollYPos,\n offsetX: scrollXPos\n });\n }\n\n this.offsetY.set(scrollYPos);\n this.offsetX.set(scrollXPos);\n\n this.updatePage(event.direction);\n this.cd.detectChanges();\n }\n\n /**\n * Updates the page given a direction.\n */\n updatePage(direction: string): void {\n let offset = this.indexes().first / this.pageSize();\n const scrollInBetween = !Number.isInteger(offset);\n if (direction === 'up') {\n offset = Math.ceil(offset);\n } else if (direction === 'down') {\n offset = Math.floor(offset);\n }\n\n if (direction !== undefined && !isNaN(offset) && offset !== this._offsetEvent) {\n this._offsetEvent = offset;\n // if scroll was done by mouse drag make sure previous row and next row data is also fetched if its not fetched\n if (scrollInBetween && this.scrollbarV() && this.virtualization() && this.externalPaging()) {\n const upRow = this.rows()[this.indexes().first - 1];\n if (!upRow && direction === 'up') {\n this.page.emit(offset - 1);\n }\n\n const downRow = this.rows()[this.indexes().first + this.pageSize()];\n if (!downRow && direction === 'down') {\n this.page.emit(offset + 1);\n }\n }\n this.page.emit(offset);\n }\n }\n\n /**\n * Updates the rows in the view port\n */\n updateRows(): (RowOrGroup<TRow> | undefined)[] {\n const { first, last } = this.indexes();\n // if grouprowsby has been specified treat row paging\n // parameters as group paging parameters ie if limit 10 has been\n // specified treat it as 10 groups rather than 10 rows\n const groupedRows = this.groupedRows();\n const rows = groupedRows\n ? groupedRows.slice(first, Math.min(last, groupedRows.length))\n : this.rows().slice(first, Math.min(last, this.rowCount()));\n\n rows.length = last - first;\n return rows;\n }\n\n scrollToIndex(index: number, options?: ScrollToRowOptions): void {\n if (this.virtualization()) {\n const cache = this.rowHeightsCache();\n const rowTop = cache.query(index - 1);\n const rowBottom = cache.query(index);\n const rowHeight = rowBottom - rowTop;\n const viewportHeight = this.scroller.parentElement?.clientHeight ?? 0;\n const currentScrollTop = this.scroller.parentElement?.scrollTop ?? 0;\n const block = options?.block ?? 'start';\n\n let top: number;\n switch (block) {\n case 'center':\n top = rowTop - Math.max(0, (viewportHeight - rowHeight) / 2);\n break;\n case 'end':\n top = rowBottom - viewportHeight;\n break;\n case 'nearest':\n if (rowTop < currentScrollTop) {\n top = rowTop;\n } else if (rowBottom > currentScrollTop + viewportHeight) {\n top = rowBottom - viewportHeight;\n } else {\n top = currentScrollTop;\n }\n break;\n case 'start':\n default:\n top = rowTop;\n break;\n }\n\n this.scroller.scrollTo(Math.max(0, top), options);\n } else {\n this.rowWrappers()[index]?.scrollIntoView(options);\n }\n }\n\n /**\n * Get the row height\n */\n getRowHeight(row: RowOrGroup<TRow>): number {\n // if its a function return it\n const rowHeight = this.rowHeight();\n if (typeof rowHeight === 'function') {\n return rowHeight(row);\n }\n\n return rowHeight as number;\n }\n\n getGroupHeaderRowHeight = (row?: any, index?: any): number => {\n const groupHeader = this.groupHeader();\n if (!groupHeader) {\n return 0;\n }\n const rowHeightValue = groupHeader?.rowHeight();\n const rowHeight = rowHeightValue === 0 ? this.rowHeight() : rowHeightValue;\n return typeof rowHeight === 'function' ? rowHeight(row, index) : (rowHeight as number);\n };\n\n /**\n * Calculates the offset of the rendered rows.\n * As virtual rows are not shown, we have to move all rendered rows\n * by the total size of previous non-rendered rows.\n * If each row has a size of 10px and the first 10 rows are not rendered due to scroll,\n * then we have a renderOffset of 100px.\n */\n readonly renderOffset = computed(() => {\n if (this.scrollbarV() && this.virtualization()) {\n return `translateY(${this.rowHeightsCache().query(this.indexes().first - 1)}px)`;\n } else {\n return '';\n }\n });\n\n /**\n * Updates the index of the rows in the viewport\n */\n computeIndexes(): { first: number; last: number } {\n let first = 0;\n let last = this.rowCount();\n\n if (this.scrollbarV()) {\n if (this.virtualization()) {\n // Calculation of the first and last indexes will be based on where the\n // scrollY position would be at. The last index would be the one\n // that shows up inside the view port the last.\n const height = parseInt(this._bodyHeight(), 10);\n first = this.rowHeightsCache().getRowIndex(this.offsetY());\n last = this.rowHeightsCache().getRowIndex(height + this.offsetY()) + 1;\n }\n } else {\n // The server is handling paging and will pass an array that begins with the\n // element at a specified offset. first should always be 0 with external paging.\n if (!this.externalPaging()) {\n first = Math.max(this.offset() * this.pageSize(), 0);\n }\n last = Math.min(first + this.pageSize(), this.rowCount());\n }\n\n return { first, last };\n }\n\n /**\n * Refreshes the full Row Height cache. Should be used\n * when the entire row array state has changed.\n */\n computeRowHeightsCache(): RowHeightCache<TRow> {\n const cache = new RowHeightCache<TRow>();\n if (!this.scrollbarV() || (this.scrollbarV() && !this.virtualization())) {\n return cache;\n }\n\n // Initialize the tree only if there are rows inside the tree.\n if (this.rows().length) {\n cache.initCache({\n rows: this.rows() as TRow[], // TODO: RowHeightCache does not support grouping\n rowHeight: this.rowHeight(),\n detailRowHeight: this.detailRowHeightFn(),\n externalVirtual: this.scrollbarV() && this.externalPaging(),\n indexOffset: this.externalPaging() ? this.offset() * this.pageSize() : 0,\n rowCount: this.rowCount(),\n rowExpansions: new Set<TRow>(this.rowDetail() ? this.rowExpansions() : [])\n });\n }\n return cache;\n }\n\n /**\n * Toggle the Expansion of the row i.e. if the row is expanded then it will\n * collapse and vice versa. Note that the expanded status is stored as\n * a part of the row object itself as we have to preserve the expanded row\n * status in case of sorting and filtering of the row set.\n */\n toggleRowExpansion(row: TRow): void {\n const rowExpandedIdx = this.getExpandedIdx(row, this.rowExpansions());\n const expanded = rowExpandedIdx > -1;\n\n // Update the toggled row and update thive nevere heights in the cache.\n if (expanded) {\n this.rowExpansions.update(expansions => {\n expansions.splice(rowExpandedIdx, 1);\n return [...expansions];\n });\n } else {\n this.rowExpansions.update(expansions => [...expansions, row]);\n }\n }\n\n toggleGroupExpansion(row: Group<TRow>): void {\n const groupExpandedIdx = this.getExpandedIdx(row, this.groupExpansions());\n const expanded = groupExpandedIdx > -1;\n\n // Update the toggled row and update thive nevere heights in the cache.\n if (expanded) {\n this.groupExpansions.update(expansions => {\n expansions.splice(groupExpandedIdx, 1);\n return [...expansions];\n });\n } else {\n this.groupExpansions.update(expansions => [...expansions, row]);\n }\n }\n\n /**\n * Expand/Collapse all the rows no matter what their state is.\n */\n toggleAllRows(expanded: boolean): void {\n // TODO requires fixing. This still does not work with groups.\n this.rowExpansions.set(expanded ? [...(this.rows() as any)] : []);\n }\n\n /**\n * Expand/Collapse all the groups no matter what their state is.\n */\n toggleAllGroups(expanded: boolean): void {\n this.groupExpansions.set(expanded ? [...this.groupedRows()!] : []);\n }\n\n /**\n * Returns if the row was expanded and set default row expansion when row expansion is empty\n */\n getRowExpanded(row: TRow): boolean {\n return this.getExpandedIdx(row, this.rowExpansions()) > -1;\n }\n\n getGroupExpanded(group: Group<TRow>): boolean {\n return this.getExpandedIdx(group, this.groupExpansions()) > -1;\n }\n\n getExpandedIdx(row: RowOrGroup<TRow>, expanded: RowOrGroup<TRow>[]): number {\n if (!expanded?.length) {\n return -1;\n }\n\n const rowId = this.rowIdentity()(row);\n return expanded.findIndex(r => {\n const id = this.rowIdentity()(r);\n return id === rowId;\n });\n }\n\n onTreeAction(row: TRow) {\n this.treeAction.emit({ row });\n }\n\n dragOver(event: DragEvent, dropRow: RowOrGroup<TRow>) {\n event.preventDefault();\n this.rowDragEvents().emit({\n event,\n srcElement: this._draggedRowElement!,\n eventType: 'dragover',\n dragRow: this._draggedRow,\n dropRow\n });\n }\n\n drag(event: DragEvent, dragRow: RowOrGroup<TRow>, rowComponent: DataTableBodyRowComponent<TRow>) {\n this._draggedRow = dragRow;\n this._draggedRowElement = rowComponent._element;\n this.rowDragEvents().emit({\n event,\n srcElement: this._draggedRowElement,\n eventType: 'dragstart',\n dragRow\n });\n }\n\n drop(event: DragEvent, dropRow: RowOrGroup<TRow>, rowComponent: DataTableBodyRowComponent<TRow>) {\n event.preventDefault();\n this.rowDragEvents().emit({\n event,\n srcElement: this._draggedRowElement!,\n targetElement: rowComponent._element,\n eventType: 'drop',\n dragRow: this._draggedRow,\n dropRow\n });\n }\n\n dragEnter(\n event: DragEvent,\n dropRow: RowOrGroup<TRow>,\n rowComponent: DataTableBodyRowComponent<TRow>\n ) {\n event.preventDefault();\n this.rowDragEvents().emit({\n event,\n srcElement: this._draggedRowElement!,\n targetElement: rowComponent._element,\n eventType: 'dragenter',\n dragRow: this._draggedRow,\n dropRow\n });\n }\n\n dragLeave(\n event: DragEvent,\n dropRow: RowOrGroup<TRow>,\n rowComponent: DataTableBodyRowComponent<TRow>\n ) {\n event.preventDefault();\n this.rowDragEvents().emit({\n event,\n srcElement: this._draggedRowElement!,\n targetElement: rowComponent._element,\n eventType: 'dragleave',\n dragRow: this._draggedRow,\n dropRow\n });\n }\n\n dragEnd(event: DragEvent, dragRow: RowOrGroup<TRow>) {\n event.preventDefault();\n this.rowDragEvents().emit({\n event,\n srcElement: this._draggedRowElement!,\n eventType: 'dragend',\n dragRow\n });\n this._draggedRow = undefined;\n this._draggedRowElement = undefined;\n }\n\n prevIndex?: number;\n\n selectRow(event: Event, index: number, row: TRow): void {\n if (!this.selectEnabled) {\n return;\n }\n\n const chkbox = this.selectionType() === 'checkbox';\n const multi = this.selectionType() === 'multi';\n const multiClick = this.selectionType() === 'multiClick';\n let selected: TRow[] = [];\n\n // TODO: this code needs cleanup. Casting it to KeyboardEvent is not correct as it could also be other types.\n if (multi || chkbox || multiClick) {\n if ((event as KeyboardEvent).shiftKey) {\n selected = selectRowsBetween([], this.rows(), index, this.prevIndex!);\n } else if (\n (event as KeyboardEvent).key === 'a' &&\n ((event as KeyboardEvent).ctrlKey || (event as KeyboardEvent).metaKey)\n ) {\n // select all rows except dummy rows which are added for ghostloader in case of virtual scroll\n selected = this.rows().filter(rowItem => !!rowItem);\n } else if (\n (event as KeyboardEvent).ctrlKey ||\n (event as KeyboardEvent).metaKey ||\n multiClick ||\n chkbox\n ) {\n selected = selectRows([...this.selected()], row, this.getRowSelectedIdx.bind(this));\n } else {\n selected = selectRows([], row, this.getRowSelectedIdx.bind(this));\n }\n } else {\n selected = selectRows([], row, this.getRowSelectedIdx.bind(this));\n }\n\n const selectCheck = this.selectCheck();\n if (typeof selectCheck === 'function') {\n selected = selected.filter(selectCheck.bind(this));\n }\n\n if (typeof this.disableRowCheck() === 'function') {\n selected = selected.filter(rowData => !this.disableRowCheck()!(rowData));\n }\n\n this.selected.set(selected);\n this.prevIndex = index;\n }\n\n onActivate(modelObject: ActivateEvent<TRow>, index: number): void {\n const { type, event, row } = modelObject;\n const chkbox = this.selectionType() === 'checkbox';\n const select =\n (!chkbox && (type === 'click' || type === 'dblclick')) || (chkbox && type === 'checkbox');\n\n if (select) {\n this.selectRow(event, index, row);\n } else if (type === 'keydown') {\n if ((event as KeyboardEvent).key === ENTER) {\n this.selectRow(event, index, row);\n } else if (\n (event as KeyboardEvent).key === 'a' &&\n ((event as KeyboardEvent).ctrlKey || (event as KeyboardEvent).metaKey)\n ) {\n this.selectRow(event, 0, row); // The row property is ignored in this case. So we can pass anything.\n } else {\n this.onKeyboardFocus(modelObject);\n }\n }\n this.activate.emit(modelObject);\n }\n\n groupSelectedChange(selected: boolean, group: Group<TRow>): void {\n const selectedSet = new Set(this.selected());\n if (selected) {\n group.value.forEach(row => selectedSet.add(row));\n } else {\n group.value.forEach(row => selectedSet.delete(row));\n }\n this.selected.set(Array.from(selectedSet));\n }\n\n onKeyboardFocus(modelObject: ActivateEvent<TRow>): void {\n const { key } = modelObject.event as KeyboardEvent;\n const shouldFocus =\n key === ARROW_UP || key === ARROW_DOWN || key === ARROW_RIGHT || key === ARROW_LEFT;\n\n if (shouldFocus) {\n const isCellSelection = this.selectionType() === 'cell';\n const disableRowCheck = this.disableRowCheck();\n if (typeof disableRowCheck === 'function') {\n const isRowDisabled = disableRowCheck(modelObject.row);\n if (isRowDisabled) {\n return;\n }\n }\n if (!modelObject.cellElement || !isCellSelection) {\n this.focusRow(modelObject.rowElement, key);\n } else if (isCellSelection && modelObject.cellIndex !== undefined) {\n this.focusCell(modelObject.cellElement, modelObject.rowElement, key, modelObject.cellIndex);\n }\n }\n }\n\n focusRow(rowElement: HTMLElement, key: string): void {\n const nextRowElement = this.getPrevNextRow(rowElement, key);\n if (nextRowElement) {\n nextRowElement.focus();\n }\n }\n\n getPrevNextRow(rowElement: HTMLElement, key: string): any {\n const parentElement = rowElement.parentElement;\n\n if (parentElement) {\n let focusElement: Element | null = null;\n if (key === ARROW_UP) {\n focusElement = parentElement.previousElementSibling;\n } else if (key === ARROW_DOWN) {\n focusElement = parentElement.nextElementSibling;\n }\n\n if (focusElement?.children.length) {\n return focusElement.children[0];\n }\n }\n }\n\n focusCell(\n cellElement: HTMLElement,\n rowElement: HTMLElement,\n key: string,\n cellIndex: number\n ): void {\n let nextCellElement: Element | null = null;\n\n if (key === ARROW_LEFT) {\n nextCellElement = cellElement.previousElementSibling;\n } else if (key === ARROW_RIGHT) {\n nextCellElement = cellElement.nextElementSibling;\n } else if (key === ARROW_UP || key === ARROW_DOWN) {\n const nextRowElement = this.getPrevNextRow(rowElement, key);\n if (nextRowElement) {\n const children = nextRowElement.getElementsByClassName('datatable-body-cell');\n if (children.length) {\n nextCellElement = children[cellIndex];\n }\n }\n }\n\n if (\n nextCellElement &&\n 'focus' in nextCellElement &&\n typeof nextCellElement.focus === 'function'\n ) {\n nextCellElement.focus();\n }\n }\n\n getRowSelected(row: TRow): boolean {\n return this.getRowSelectedIdx(row, this.selected()) > -1;\n }\n\n getRowSelectedIdx(row: TRow, selected: any[]): number {\n if (!selected?.length) {\n return -1;\n }\n\n const rowId = this.rowIdentity()(row);\n return selected.findIndex(r => {\n const id = this.rowIdentity()(r);\n return id === rowId;\n });\n }\n protected isGroup(row: RowOrGroup<TRow>[]): row is Group<TRow>[];\n\n protected isGroup(row: RowOrGroup<TRow>): row is Group<TRow>;\n\n protected isGroup(row: RowOrGroup<TRow> | RowOrGroup<TRow>[]): boolean {\n return !!this.groupedRows();\n }\n\n protected isRow(row: RowOrGroup<TRow> | undefined): row is TRow {\n return !this.groupedRows();\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'datatable-progress',\n template: `\n <div class=\"progress-linear\" role=\"progressbar\">\n <div class=\"container\">\n <div class=\"bar\"></div>\n </div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ProgressBarComponent {}\n","import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\n\nimport { Page } from '../../types/internal.types';\nimport { DATATABLE_COMPONENT_TOKEN } from '../../utils/table-token';\nimport { DatatableComponent } from '../datatable.component';\n\n/**\n * Use this component to construct custom table footer with standard pagination.\n *\n * It must be used inside the `ngx-datatable-footer`\n *\n * @example\n * ```html\n *\n * <ngx-datatable>\n * ...\n * <ngx-datatable-footer>\n * <ng-template>\n * <app-custom-content />\n * <ngx-datatable-pager />\n * </ng-template>\n * </ngx-datatable-footer>\n * </ngx-datatable>\n * ```\n */\n@Component({\n selector: 'ngx-datatable-pager',\n template: `\n <ul class=\"pager\">\n <li>\n <button\n type=\"button\"\n class=\"page-button\"\n [disabled]=\"!canPrevious()\"\n [attr.aria-label]=\"messages.ariaFirstPageMessage ?? 'go to first page'\"\n (click)=\"selectPage(1)\"\n >\n <i [class]=\"pagerPreviousIcon() ?? 'datatable-icon-prev'\"></i>\n </button>\n </li>\n <li>\n <button\n type=\"button\"\n class=\"page-button\"\n [disabled]=\"!canPrevious()\"\n [attr.aria-label]=\"messages.ariaPreviousPageMessage ?? 'go to previous page'\"\n (click)=\"prevPage()\"\n >\n <i [class]=\"pagerLeftArrowIcon() ?? 'datatable-icon-left'\"></i>\n </button>\n </li>\n @for (pg of pages(); track pg.number) {\n <li class=\"pages\">\n <button\n type=\"button\"\n class=\"page-button\"\n [class.active]=\"pg.number === page()\"\n [attr.aria-label]=\"(messages.ariaPageNMessage ?? 'page') + ' ' + pg.number\"\n (click)=\"selectPage(pg.number)\"\n >\n {{ pg.text }}\n </button>\n </li>\n }\n <li>\n <button\n type=\"button\"\n class=\"page-button\"\n [disabled]=\"!canNext()\"\n [attr.aria-label]=\"messages.ariaNextPageMessage ?? 'go to next page'\"\n (click)=\"nextPage()\"\n >\n <i [class]=\"pagerRightArrowIcon() ?? 'datatable-icon-right'\"></i>\n </button>\n </li>\n <li>\n <button\n type=\"button\"\n class=\"page-button\"\n [disabled]=\"!canNext()\"\n [attr.aria-label]=\"messages.ariaLastPageMessage ?? 'go to last page'\"\n (click)=\"selectPage(totalPages())\"\n >\n <i [class]=\"pagerNextIcon() ?? 'datatable-icon-skip'\"></i>\n </button>\n </li>\n </ul>\n `,\n styleUrl: './pager.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'datatable-pager'\n }\n})\nexport class DatatablePagerComponent {\n // We cannot inject the footer directly as it is not part of the injector when used in a template.\n // But the table always is.\n // Ideally we can one day fetch those attributes from a global state, but for now this is fine.\n private datatable = inject(DATATABLE_COMPONENT_TOKEN);\n\n protected get messages(): ReturnType<DatatableComponent['messages']> {\n return this.datatable?.messages() ?? {};\n }\n\n protected readonly page = computed(() => this.datatable._footerComponent()!.curPage());\n protected readonly pageSize = computed(() => this.datatable._footerComponent()!.pageSize());\n protected readonly count = computed(\n () =>\n this.datatable._footerComponent()!.groupCount() ??\n this.datatable._footerComponent()!.rowCount()\n );\n protected readonly pagerNextIcon = computed(() =>\n this.datatable._footerComponent()!.pagerNextIcon()\n );\n protected readonly pagerRightArrowIcon = computed(() =>\n this.datatable._footerComponent()!.pagerRightArrowIcon()\n );\n protected readonly pagerLeftArrowIcon = computed(() =>\n this.datatable._footerComponent()!.pagerLeftArrowIcon()\n );\n protected readonly pagerPreviousIcon = computed(() =>\n this.datatable._footerComponent()!.pagerPreviousIcon()\n );\n\n protected readonly totalPages = computed(() => {\n return Math.max((this.pageSize() < 1 ? 1 : Math.ceil(this.count() / this.pageSize())) || 0, 1);\n });\n\n protected readonly pages = computed(() => {\n const pages: Page[] = [];\n let startPage = 1;\n let endPage = this.totalPages();\n const maxSize = 5;\n const isMaxSized = maxSize < this.totalPages();\n\n const page = this.page();\n\n if (isMaxSized) {\n startPage = page - Math.floor(maxSize / 2);\n endPage = page + Math.floor(maxSize / 2);\n\n if (startPage < 1) {\n startPage = 1;\n endPage = Math.min(startPage + maxSize - 1, this.totalPages());\n } else if (endPage > this.totalPages()) {\n startPage = Math.max(this.totalPages() - maxSize + 1, 1);\n endPage = this.totalPages();\n }\n }\n\n for (let num = startPage; num <= endPage; num++) {\n pages.push({\n number: num,\n text: num.toString()\n });\n }\n\n return pages;\n });\n\n protected readonly canPrevious = computed(() => this.page() > 1);\n\n protected readonly canNext = computed(() => this.page() < this.totalPages());\n\n protected prevPage(): void {\n this.selectPage(this.page() - 1);\n }\n\n protected nextPage(): void {\n this.selectPage(this.page() + 1);\n }\n\n protected selectPage(page: number): void {\n if (page > 0 && page <= this.totalPages() && page !== this.page()) {\n this.datatable._footerComponent()!.page.emit({ page });\n }\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, output, Signal } from '@angular/core';\n\nimport { FooterContext, PagerPageEvent } from '../../types/public.types';\nimport { DatatableFooterDirective } from './footer.directive';\nimport { DatatablePagerComponent } from './pager.component';\n\n@Component({\n selector: 'datatable-footer',\n imports: [NgTemplateOutlet, DatatablePagerComponent],\n template: `\n <div\n class=\"datatable-footer-inner\"\n [class.selected-count]=\"selectedMessage()\"\n [style.height.px]=\"footerHeight()\"\n >\n @let footerTemplate = this.footerTemplate()?.template();\n @if (footerTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"footerTemplate\"\n [ngTemplateOutletContext]=\"templateContext()\"\n />\n } @else {\n <div class=\"page-count\">\n @if (selectedMessage()) {\n <span> {{ selectedCount().toLocaleString() }} {{ selectedMessage() }} / </span>\n }\n {{ rowCount().toLocaleString() }} {{ totalMessage() }}\n </div>\n @if (isVisible()) {\n <ngx-datatable-pager />\n }\n }\n </div>\n `,\n styleUrl: './footer.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'datatable-footer'\n }\n})\nexport class DataTableFooterComponent {\n readonly footerHeight = input.required<number>();\n readonly rowCount = input.required<number>();\n readonly groupCount = input.required<number | undefined>();\n readonly pageSize = input.required<number>();\n readonly offset = input.required<number>();\n readonly pagerLeftArrowIcon = input<string | undefined>();\n readonly pagerRightArrowIcon = input<string | undefined>();\n readonly pagerPreviousIcon = input<string | undefined>();\n readonly pagerNextIcon = input<string | undefined>();\n readonly totalMessage = input.required<string>();\n readonly footerTemplate = input<DatatableFooterDirective | undefined>();\n\n readonly selectedCount = input(0);\n readonly selectedMessage = input<string | boolean | undefined>(undefined);\n\n readonly page = output<PagerPageEvent>();\n\n protected readonly isVisible = computed(() => this.rowCount() / this.pageSize() > 1);\n readonly curPage = computed(() => this.offset() + 1);\n protected readonly templateContext: Signal<FooterContext> = computed(() => ({\n rowCount: this.rowCount(),\n pageSize: this.pageSize(),\n selectedCount: this.selectedCount(),\n curPage: this.curPage(),\n offset: this.offset()\n }));\n}\n","import { Directive } from '@angular/core';\n\nimport { FooterContext } from '../../types/public.types';\n\n@Directive({\n selector: '[ngx-datatable-footer-template]'\n})\nexport class DataTableFooterTemplateDirective {\n static ngTemplateContextGuard(\n directive: DataTableFooterTemplateDirective,\n context: unknown\n ): context is FooterContext {\n return true;\n }\n}\n","import { computed, contentChild, Directive, input, TemplateRef } from '@angular/core';\n\nimport { FooterContext } from '../../types/public.types';\nimport { DataTableFooterTemplateDirective } from './footer-template.directive';\n\n@Directive({\n selector: 'ngx-datatable-footer'\n})\nexport class DatatableFooterDirective {\n readonly _templateInput = input<TemplateRef<FooterContext>>(undefined, { alias: 'template' });\n\n private readonly _templateQuery = contentChild(DataTableFooterTemplateDirective, {\n read: TemplateRef\n });\n\n readonly template = computed(() => this._templateInput() ?? this._templateQuery());\n}\n","import {\n booleanAttribute,\n computed,\n Directive,\n DOCUMENT,\n effect,\n ElementRef,\n inject,\n input,\n numberAttribute,\n OnDestroy,\n output,\n signal\n} from '@angular/core';\n\nimport { TableColumnInternal } from '../types/internal.types';\n\nexport interface DragEvent {\n initialX: number;\n initialY: number;\n currentX: number;\n currentY: number;\n}\n\n@Directive({\n selector: '[datatableDraggable]',\n host: {\n '[class.draggable]': 'enabled()',\n '[class.dragging]': 'isDragging()',\n '[class.longpress]': 'isLongPressing()'\n }\n})\nexport class DatatableDraggableDirective implements OnDestroy {\n private document = inject(DOCUMENT);\n readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n readonly dragModel = input<TableColumnInternal>();\n readonly dragStartDelay = input(0, { transform: numberAttribute });\n readonly enabled = input(true, { transform: booleanAttribute, alias: 'datatableDraggable' });\n readonly dragMove = output<DragEvent>();\n readonly dragEnd = output<void>();\n readonly dragStart = output<void>();\n\n private timeoutId?: number;\n private touchId?: number;\n private readonly startX = signal<number | undefined>(undefined);\n private readonly startY = signal<number | undefined>(undefined);\n protected readonly isLongPressing = computed(\n () => this.dragStartDelay() !== 0 && this.isDragging()\n );\n protected readonly isDragging = computed(() => this.startX() !== undefined);\n private removePointerListeners?: () => void;\n\n constructor() {\n effect(() => {\n if (this.enabled()) {\n this.element.addEventListener('mousedown', this.mousedown);\n this.element.addEventListener('touchstart', this.touchstart);\n this.removePointerListeners = () => {\n this.element.removeEventListener('mousedown', this.mousedown);\n this.element.removeEventListener('touchstart', this.touchstart);\n };\n } else {\n this.removePointerListeners?.();\n this.removePointerListeners = undefined;\n }\n });\n }\n\n ngOnDestroy(): void {\n clearTimeout(this.timeoutId);\n this.removePointerListeners?.();\n }\n\n protected readonly mousedown = (event: MouseEvent): void => {\n if (!this.enabled()) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n\n this.document.addEventListener('mouseup', this.ending);\n this.delay(this.dragStartDelay()).then(() => {\n this.document.addEventListener('mousemove', this.mousemove);\n this.starting(event.clientX, event.clientY);\n });\n };\n\n private mousemove = (event: MouseEvent): void => this.moving(event.clientX, event.clientY);\n\n protected readonly touchstart = (event: TouchEvent): void => {\n if (!this.enabled()) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n const touch = event.touches.item(0)!;\n this.touchId = touch.identifier;\n\n this.document.addEventListener('touchend', this.ending);\n this.delay(this.dragStartDelay()).then(() => {\n this.document.addEventListener('touchmove', this.touchmove);\n this.starting(touch.clientX, touch.clientY);\n });\n };\n\n private touchmove = (event: TouchEvent): void => {\n const touchMove = this.findTouch(event)!;\n if (touchMove) {\n this.moving(touchMove.clientX, touchMove.clientY);\n }\n };\n\n private starting(clientX: number, clientY: number): void {\n this.startX.set(clientX);\n this.startY.set(clientY);\n this.dragStart.emit();\n }\n\n private moving(clientX: number, clientY: number): void {\n this.dragMove.emit({\n initialX: this.startX()!,\n initialY: this.startY()!,\n currentX: clientX,\n currentY: clientY\n });\n }\n\n private ending = (): void => {\n const dragged = this.isDragging();\n this.document.removeEventListener('mousemove', this.mousemove);\n this.document.removeEventListener('touchmove', this.touchmove);\n this.document.removeEventListener('mouseup', this.ending);\n this.document.removeEventListener('touchend', this.ending);\n this.touchId = undefined;\n this.startX.set(undefined);\n this.startY.set(undefined);\n clearTimeout(this.timeoutId);\n // This function is also called if the long press was aborted before the delay.\n // In that case, we don't want to emit dragEnd.\n if (dragged) {\n this.dragEnd.emit();\n }\n };\n\n private findTouch(event: TouchEvent): Touch | undefined {\n return Array.from(event.touches).find(touch => touch.identifier === this.touchId);\n }\n\n private delay(ms: number): Promise<void> {\n return new Promise(resolve => (this.timeoutId = window.setTimeout(() => resolve(), ms)));\n }\n}\n","import {\n AfterContentInit,\n ContentChildren,\n Directive,\n DOCUMENT,\n effect,\n inject,\n KeyValueChangeRecord,\n KeyValueDiffer,\n KeyValueDiffers,\n OnDestroy,\n output,\n OutputRefSubscription,\n QueryList,\n signal\n} from '@angular/core';\nimport { startWith } from 'rxjs';\n\nimport {\n ReorderEventInternal,\n TableColumnInternal,\n TargetChangedEvent\n} from '../types/internal.types';\nimport { DatatableDraggableDirective, DragEvent } from './datatable-draggable.directive';\n\ninterface OrderPosition {\n left: number;\n right: number;\n index: number;\n element: HTMLElement;\n}\n\n@Directive({\n selector: '[orderable]'\n})\nexport class OrderableDirective implements AfterContentInit, OnDestroy {\n private document = inject(DOCUMENT);\n\n readonly reorder = output<ReorderEventInternal>();\n readonly targetChanged = output<TargetChangedEvent>();\n\n // This should be contentChildren() query, but there is an open Angular issue with signal queries (https://github.com/angular/angular/issues/59067)\n // This problem causes the orderable directive to fail because the contentChildren query is resolved too early.\n // At that state, the input is not yet set, resulting in a NG0950 error.\n @ContentChildren(DatatableDraggableDirective, { descendants: true })\n draggablesQueryList!: QueryList<DatatableDraggableDirective>;\n\n readonly draggables = signal<DatatableDraggableDirective[]>([]);\n\n readonly subscriptions = new Map<string, OutputRefSubscription[]>();\n\n positions?: Record<string, OrderPosition>;\n readonly differ: KeyValueDiffer<string, DatatableDraggableDirective> = inject(KeyValueDiffers)\n .find({})\n .create();\n lastDraggingIndex?: number;\n\n constructor() {\n effect(() => {\n const diffMap = this.draggables().reduce(\n (acc, curr) => {\n acc[curr.dragModel()!.$$id] = curr;\n return acc;\n },\n {} as Record<string, DatatableDraggableDirective>\n );\n\n this.updateSubscriptions(diffMap);\n });\n }\n\n ngAfterContentInit(): void {\n this.draggablesQueryList.changes.pipe(startWith(this.draggablesQueryList)).subscribe(() => {\n this.draggables.set(this.draggablesQueryList.toArray());\n });\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(subList => subList.forEach(sub => sub.unsubscribe()));\n }\n\n updateSubscriptions(diffMap: Record<string, DatatableDraggableDirective>): void {\n const differResult = this.differ.diff(diffMap);\n if (!differResult) {\n return;\n }\n differResult.forEachAddedItem(record => this.subscribeToDraggable(record));\n differResult.forEachRemovedItem(record => this.unsubscribeFromDraggable(record));\n }\n\n private subscribeToDraggable = (\n record: KeyValueChangeRecord<string, DatatableDraggableDirective>\n ): void => {\n this.unsubscribeFromDraggable(record);\n const { key, currentValue } = record;\n if (!currentValue) {\n return;\n }\n const subs = this.subscriptions.get(key) ?? [];\n let currentEvent: DragEvent;\n subs.push(\n currentValue.dragStart.subscribe(() => this.onDragStart()),\n currentValue.dragMove.subscribe(e => {\n currentEvent = e;\n this.onDragging(e, currentValue.dragModel()!, currentValue.element);\n }),\n currentValue.dragEnd.subscribe(() =>\n this.onDragEnd(currentEvent!, currentValue.dragModel()!, currentValue.element)\n )\n );\n this.subscriptions.set(key, subs);\n };\n\n private unsubscribeFromDraggable = (\n record: KeyValueChangeRecord<string, DatatableDraggableDirective>\n ): void => {\n const { key, previousValue } = record;\n if (!previousValue) {\n return;\n }\n const subs = this.subscriptions.get(key);\n if (!subs) {\n return;\n }\n subs.forEach(sub => sub.unsubscribe());\n this.subscriptions.delete(key);\n };\n\n onDragStart(): void {\n const positions: Record<string, OrderPosition> = {};\n this.draggables().forEach((draggable, idx) => {\n const elm = draggable.element;\n const left = parseInt(elm.offsetLeft.toString(), 10);\n positions[draggable.dragModel()!.$$id] = {\n left,\n right: left + parseInt(elm.offsetWidth.toString(), 10),\n index: idx,\n element: elm\n };\n });\n this.positions = positions;\n }\n\n onDragging(\n { currentX, currentY, initialX }: DragEvent,\n model: TableColumnInternal,\n element: HTMLElement\n ): void {\n if (!this.positions) {\n return;\n }\n const prevPos = this.positions[model.$$id];\n const target = this.isTarget(model, currentX, currentY);\n if (target) {\n if (this.lastDraggingIndex !== target.index) {\n this.targetChanged.emit({\n prevIndex: this.lastDraggingIndex!,\n newIndex: target.index,\n initialIndex: prevPos.index\n });\n this.lastDraggingIndex = target.index;\n }\n } else if (this.lastDraggingIndex !== prevPos.index) {\n this.targetChanged.emit({\n prevIndex: this.lastDraggingIndex!,\n initialIndex: prevPos.index\n });\n this.lastDraggingIndex = prevPos.index;\n }\n\n requestAnimationFrame(() => (element.style.left = `${currentX - initialX}px`));\n }\n\n onDragEnd(\n { currentX, currentY }: DragEvent,\n model: TableColumnInternal,\n element: HTMLElement\n ): void {\n if (!this.positions) {\n return;\n }\n const prevPos = this.positions[model.$$id];\n const target = this.isTarget(model, currentX, currentY);\n if (target) {\n this.reorder.emit({\n prevValue: prevPos.index,\n newValue: target.index,\n column: model\n });\n }\n this.lastDraggingIndex = undefined;\n element.style.left = 'auto';\n }\n\n isTarget(\n model: TableColumnInternal,\n clientX: number,\n clientY: number\n ): { pos: OrderPosition; index: number } | undefined {\n if (!this.positions) {\n return undefined;\n }\n const elementsAtPoint = this.document.elementsFromPoint(clientX, clientY);\n return Object.entries(this.positions).reduce<{ pos: OrderPosition; index: number } | undefined>(\n (acc, [id, pos], idx) => {\n // since we drag the inner span, we need to find it in the elements at the cursor\n if (!acc && model.$$id !== id && elementsAtPoint.some(el => el === pos.element)) {\n return { pos, index: idx };\n }\n return acc;\n },\n undefined\n );\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n HostListener,\n inject,\n input,\n OnDestroy,\n OnInit,\n output,\n TemplateRef\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport {\n DatatableDraggableDirective,\n DragEvent\n} from '../../directives/datatable-draggable.directive';\nimport {\n InnerSortEvent,\n SortableTableColumnInternal,\n TableColumnInternal\n} from '../../types/internal.types';\nimport {\n HeaderCellContext,\n SelectionType,\n SortDirection,\n SortPropDir,\n SortType\n} from '../../types/public.types';\nimport { toPublicColumn } from '../../utils/column-helper';\nimport { nextSortDir } from '../../utils/sort';\n\n@Component({\n selector: 'datatable-header-cell',\n imports: [NgTemplateOutlet, DatatableDraggableDirective],\n template: `\n <div class=\"datatable-header-cell-template-wrap\">\n @if (isTarget()) {\n <ng-template\n [ngTemplateOutlet]=\"targetMarkerTemplate()!\"\n [ngTemplateOutletContext]=\"targetMarkerContext()\"\n />\n }\n @if (isCheckboxable()) {\n <label class=\"datatable-checkbox\">\n <input\n type=\"checkbox\"\n [attr.aria-label]=\"ariaHeaderCheckboxMessage()\"\n [checked]=\"allRowsSelected()\"\n (change)=\"select.emit()\"\n />\n </label>\n }\n @let column = this.column();\n @if (column.headerTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.headerTemplate\"\n [ngTemplateOutletContext]=\"cellContext()\"\n />\n } @else {\n <span class=\"datatable-header-cell-wrapper\">\n <span class=\"datatable-header-cell-label draggable\" (click)=\"onSort()\">\n {{ name() }}\n </span>\n </span>\n }\n <span [class]=\"sortClass()\" (click)=\"onSort()\"> </span>\n </div>\n @if (showResizeHandle()) {\n <span\n class=\"resize-handle\"\n datatableDraggable\n (dragStart)=\"onMousedown()\"\n (dragMove)=\"move($event)\"\n (dragEnd)=\"onMouseup()\"\n ></span>\n }\n `,\n styleUrl: './header-cell.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'datatable-header-cell',\n '[attr.resizeable]': 'showResizeHandle()',\n '[attr.title]': 'name()',\n '[attr.tabindex]': 'column().sortable ? 0 : -1',\n '[class]': 'columnCssClasses()',\n '[class.sortable]': 'column().sortable',\n '[class.resizeable]': 'showResizeHandle()',\n '[class.sort-active]': 'sortDir()',\n '[class.sort-asc]': 'sortDir() === \"asc\"',\n '[class.sort-desc]': 'sortDir() === \"desc\"',\n '[style.minWidth.px]': 'column().minWidth',\n '[style.maxWidth.px]': 'column().maxWidth',\n '[style.width.px]': 'column().width()'\n }\n})\nexport class DataTableHeaderCellComponent implements OnInit, OnDestroy {\n readonly sortType = input.required<SortType>();\n readonly sortAscendingIcon = input<string>();\n readonly sortDescendingIcon = input<string>();\n readonly sortUnsetIcon = input<string>();\n\n readonly isTarget = input<boolean>();\n readonly showResizeHandle = input<boolean | undefined>(true);\n readonly targetMarkerTemplate = input<TemplateRef<any>>();\n readonly targetMarkerContext = input<any>();\n readonly enableClearingSortState = input(false);\n readonly ariaHeaderCheckboxMessage = input.required<string>();\n readonly allRowsSelected = input(false, { transform: booleanAttribute });\n readonly selectionType = input<SelectionType>();\n readonly column = input.required<TableColumnInternal>();\n readonly sorts = input<SortPropDir[]>([]);\n\n readonly sort = output<InnerSortEvent>();\n readonly select = output<void>();\n readonly columnContextmenu = output<{\n event: MouseEvent;\n column: TableColumnInternal;\n }>();\n readonly resize = output<{ width: number; column: TableColumnInternal }>();\n readonly resizing = output<{ width: number; column: TableColumnInternal }>();\n\n protected readonly columnCssClasses = computed(() => {\n const column = this.column();\n if (!column.headerClass) {\n return [];\n }\n if (typeof column.headerClass === 'string') {\n return column.headerClass;\n }\n return column.headerClass({ column: toPublicColumn(column) });\n });\n\n protected readonly name = computed(() => {\n // guaranteed to have a value by setColumnDefaults() in column-helper.ts\n return this.column().headerTemplate === undefined ? this.column().name : undefined;\n });\n\n protected readonly isCheckboxable = computed(() => this.column().headerCheckboxable);\n\n protected readonly sortClass = computed<string[] | undefined>(() => {\n return this.calcSortClass(this.sortDir());\n });\n protected readonly sortDir = computed<SortDirection | undefined>(() => {\n return this.calcSortDir(this.sorts());\n });\n\n protected readonly cellContext = computed<HeaderCellContext>(() => {\n return {\n column: toPublicColumn(this.column()),\n sortDir: this.sortDir(),\n sortFn: () => this.onSort(),\n allRowsSelected: this.allRowsSelected(),\n selectFn: () => this.select.emit()\n };\n });\n\n private initialWidth?: number;\n private element = inject(ElementRef).nativeElement;\n private subscription?: Subscription;\n\n @HostListener('contextmenu', ['$event'])\n onContextmenu($event: MouseEvent): void {\n this.columnContextmenu.emit({ event: $event, column: this.column() });\n if (this.column().draggable) {\n $event.preventDefault();\n }\n }\n\n @HostListener('keydown.enter')\n enter(): void {\n this.onSort();\n }\n\n ngOnInit() {\n // If there is already a default sort then start the counter with 1.\n if (this.sortDir()) {\n this.totalSortStatesApplied = 1;\n }\n }\n\n ngOnDestroy() {\n this.destroySubscription();\n }\n\n calcSortDir(sorts: SortPropDir[]): any {\n if (sorts && this.column()) {\n const sort = sorts.find((s: any) => s.prop === this.column().prop);\n\n if (sort) {\n return sort.dir;\n }\n }\n }\n // Counter to reset sort once user sort asc and desc.\n private totalSortStatesApplied = 0;\n onSort(): void {\n if (!this.column().sortable) {\n return;\n }\n\n this.totalSortStatesApplied++;\n let newValue = nextSortDir(this.sortType(), this.sortDir());\n // User has done both direction sort so we reset the next sort.\n if (this.enableClearingSortState() && this.totalSortStatesApplied === 3) {\n newValue = undefined;\n this.totalSortStatesApplied = 0;\n }\n this.sort.emit({\n column: this.column() as SortableTableColumnInternal<any>,\n prevValue: this.sortDir(),\n newValue\n });\n }\n\n calcSortClass(sortDir: SortDirection | undefined): string[] | undefined {\n if (!this.cellContext().column.sortable) {\n return undefined;\n }\n if (sortDir === 'asc') {\n return ['sort-btn', 'sort-asc', this.sortAscendingIcon() ?? 'datatable-icon-up'];\n } else if (sortDir === 'desc') {\n return ['sort-btn', 'sort-desc', this.sortDescendingIcon() ?? 'datatable-icon-down'];\n } else {\n return ['sort-btn', this.sortUnsetIcon() ?? 'datatable-icon-sort-unset'];\n }\n }\n\n protected onMousedown(): void {\n this.initialWidth = this.element.clientWidth;\n }\n\n protected onMouseup(): void {\n this.resize.emit({ width: this.element.clientWidth, column: this.column() });\n }\n\n protected move({ currentX, initialX }: DragEvent): void {\n this.resizing.emit({\n width: this.initialWidth! + (currentX - initialX),\n column: this.column()\n });\n }\n\n private destroySubscription(): void {\n if (this.subscription) {\n this.subscription.unsubscribe();\n this.subscription = undefined;\n }\n }\n}\n","import { NgStyle } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n output,\n TemplateRef\n} from '@angular/core';\n\nimport { DatatableDraggableDirective } from '../../directives/datatable-draggable.directive';\nimport { OrderableDirective } from '../../directives/orderable.directive';\nimport { ScrollbarHelper } from '../../services/scrollbar-helper.service';\nimport {\n ColumnResizeEventInternal,\n InnerSortEvent,\n ReorderEventInternal,\n SortableTableColumnInternal,\n TableColumnInternal,\n TargetChangedEvent\n} from '../../types/internal.types';\nimport {\n Row,\n SelectionType,\n SortDirection,\n SortEvent,\n SortPropDir,\n SortType\n} from '../../types/public.types';\nimport { columnGroupWidths, columnsByPin, columnsByPinArr } from '../../utils/column';\nimport { toPublicColumn } from '../../utils/column-helper';\nimport { DataTableHeaderCellComponent } from './header-cell.component';\n\n@Component({\n selector: 'datatable-header',\n imports: [OrderableDirective, NgStyle, DataTableHeaderCellComponent, DatatableDraggableDirective],\n template: `\n @let _columnGroupWidths = this._columnGroupWidths();\n <div\n role=\"row\"\n orderable\n class=\"datatable-header-inner\"\n [class.horizontal-overflow]=\"innerWidth() < _columnGroupWidths.total\"\n [style.width.px]=\"_columnGroupWidths.total\"\n (reorder)=\"onColumnReordered($event)\"\n (targetChanged)=\"onTargetChanged($event)\"\n >\n @for (colGroup of _columnsByPin(); track colGroup.type) {\n @if (colGroup.columns.length) {\n <div\n class=\"datatable-row-group\"\n [class]=\"'datatable-row-' + colGroup.type\"\n [ngStyle]=\"_styleByGroup()[colGroup.type]\"\n >\n @for (column of colGroup.columns; track column.$$id) {\n <datatable-header-cell\n role=\"columnheader\"\n dragStartDelay=\"500\"\n [datatableDraggable]=\"reorderable() && column.draggable\"\n [dragModel]=\"column\"\n [isTarget]=\"column.isTarget\"\n [targetMarkerTemplate]=\"targetMarkerTemplate()\"\n [targetMarkerContext]=\"column.targetMarkerContext\"\n [column]=\"column\"\n [showResizeHandle]=\"lastColumnId() !== column.$$id && column.resizeable\"\n [sortType]=\"sortType()\"\n [sorts]=\"sorts()\"\n [selectionType]=\"selectionType()\"\n [sortAscendingIcon]=\"sortAscendingIcon()\"\n [sortDescendingIcon]=\"sortDescendingIcon()\"\n [sortUnsetIcon]=\"sortUnsetIcon()\"\n [allRowsSelected]=\"allRowsSelected()\"\n [enableClearingSortState]=\"enableClearingSortState()\"\n [ariaHeaderCheckboxMessage]=\"ariaHeaderCheckboxMessage()\"\n (resize)=\"onColumnResized($event)\"\n (resizing)=\"onColumnResizing($event)\"\n (sort)=\"onSort($event)\"\n (select)=\"select.emit($event)\"\n (columnContextmenu)=\"columnContextmenu.emit($event)\"\n />\n }\n </div>\n }\n }\n </div>\n `,\n styleUrl: './header.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'datatable-header',\n '[style.height.px]': 'headerHeight()',\n '[style.width]': 'headerWidth()'\n }\n})\nexport class DataTableHeaderComponent {\n private scrollbarHelper = inject(ScrollbarHelper);\n\n readonly lastColumnId = computed(() => this.columns().at(-1)?.$$id);\n\n readonly sortAscendingIcon = input<string>();\n readonly sortDescendingIcon = input<string>();\n readonly sortUnsetIcon = input<string>();\n readonly scrollbarH = input<boolean>();\n readonly dealsWithGroup = input<boolean>();\n readonly targetMarkerTemplate = input<TemplateRef<unknown>>();\n readonly enableClearingSortState = input(false);\n readonly innerWidth = input.required<number>();\n readonly sorts = input.required<SortPropDir[]>();\n readonly sortType = input.required<SortType>();\n readonly allRowsSelected = input<boolean>();\n readonly selectionType = input<SelectionType>();\n readonly reorderable = input<boolean>();\n readonly verticalScrollVisible = input(false);\n readonly ariaHeaderCheckboxMessage = input.required<string>();\n\n readonly headerHeight = input.required<'auto' | number>();\n readonly columns = input.required<TableColumnInternal[]>();\n\n readonly sort = output<SortEvent>();\n readonly reorder = output<ReorderEventInternal>();\n readonly resize = output<ColumnResizeEventInternal>();\n readonly resizing = output<ColumnResizeEventInternal>();\n readonly select = output<void>();\n readonly columnContextmenu = output<{\n event: MouseEvent;\n column: TableColumnInternal;\n }>();\n\n readonly _columnsByPin = computed(() => {\n return columnsByPinArr(this.columns());\n });\n readonly _columnGroupWidths = computed(() => {\n const colsByPin = columnsByPin(this.columns());\n return columnGroupWidths(colsByPin, this.columns());\n });\n readonly _styleByGroup = computed(() => {\n return {\n left: this.calcStylesByGroup('left'),\n center: this.calcStylesByGroup('center'),\n right: this.calcStylesByGroup('right')\n };\n });\n\n readonly headerWidth = computed(() => {\n if (this.scrollbarH()) {\n const width = this.verticalScrollVisible()\n ? this.innerWidth() - this.scrollbarHelper.width\n : this.innerWidth();\n return width + 'px';\n }\n\n return '100%';\n });\n\n onColumnResized({ width, column }: { width: number; column: TableColumnInternal }): void {\n this.resize.emit(this.makeResizeEvent(width, column));\n }\n\n onColumnResizing({ width, column }: { width: number; column: TableColumnInternal }): void {\n this.resizing.emit(this.makeResizeEvent(width, column));\n }\n\n private makeResizeEvent(\n width: number,\n column: TableColumnInternal<Row>\n ): ColumnResizeEventInternal {\n if (column.minWidth && width <= column.minWidth) {\n width = column.minWidth;\n } else if (column.maxWidth && width >= column.maxWidth) {\n width = column.maxWidth;\n }\n return {\n column,\n prevValue: column.width(),\n newValue: width\n };\n }\n\n onColumnReordered(event: ReorderEventInternal): void {\n const column = this.getColumn(event.newValue);\n column.isTarget = false;\n column.targetMarkerContext = undefined;\n this.reorder.emit(event);\n }\n\n onTargetChanged({ prevIndex, newIndex, initialIndex }: TargetChangedEvent): void {\n if (prevIndex || prevIndex === 0) {\n const oldColumn = this.getColumn(prevIndex);\n oldColumn.isTarget = false;\n oldColumn.targetMarkerContext = undefined;\n }\n if (newIndex || newIndex === 0) {\n const newColumn = this.getColumn(newIndex);\n newColumn.isTarget = true;\n\n if (initialIndex !== newIndex) {\n newColumn.targetMarkerContext = {\n class: 'targetMarker '.concat(initialIndex > newIndex ? 'dragFromRight' : 'dragFromLeft')\n };\n }\n }\n }\n\n getColumn(index: number): any {\n const _columnsByPin = this._columnsByPin();\n const leftColumnCount = _columnsByPin[0].columns.length;\n if (index < leftColumnCount) {\n return _columnsByPin[0].columns[index];\n }\n\n const centerColumnCount = _columnsByPin[1].columns.length;\n if (index < leftColumnCount + centerColumnCount) {\n return _columnsByPin[1].columns[index - leftColumnCount];\n }\n\n return _columnsByPin[2].columns[index - leftColumnCount - centerColumnCount];\n }\n\n onSort({ column, prevValue, newValue }: InnerSortEvent): void {\n // if we are dragging don't sort!\n if (column.dragging) {\n return;\n }\n\n const sorts = this.calcNewSorts(column, prevValue, newValue);\n this.sort.emit({\n sorts,\n column: toPublicColumn(column),\n prevValue,\n newValue\n });\n }\n\n calcNewSorts(\n column: SortableTableColumnInternal,\n prevValue: SortDirection | undefined,\n newValue: SortDirection | undefined\n ): SortPropDir[] {\n let idx = 0;\n\n const sorts = this.sorts().map((s, i) => {\n s = { ...s };\n if (s.prop === column.prop) {\n idx = i;\n }\n return s;\n });\n\n if (newValue === undefined) {\n sorts.splice(idx, 1);\n } else if (prevValue) {\n sorts[idx].dir = newValue;\n } else {\n if (this.sortType() === 'single') {\n sorts.splice(0, this.sorts().length);\n }\n\n sorts.push({ dir: newValue, prop: column.prop });\n }\n\n return sorts;\n }\n\n calcStylesByGroup(group: 'center' | 'right' | 'left'): NgStyle['ngStyle'] {\n const widths = this._columnGroupWidths();\n\n return {\n width: `${widths[group]}px`\n };\n }\n}\n","import { Directive } from '@angular/core';\n\nimport { RowDetailContext } from '../../types/public.types';\n\n@Directive({\n selector: '[ngx-datatable-row-detail-template]'\n})\nexport class DatatableRowDetailTemplateDirective {\n static ngTemplateContextGuard(\n directive: DatatableRowDetailTemplateDirective,\n context: unknown\n ): context is RowDetailContext {\n return true;\n }\n}\n","import { computed, contentChild, Directive, input, output, TemplateRef } from '@angular/core';\n\nimport { DetailToggleEvents, Row, RowDetailContext } from '../../types/public.types';\nimport { DatatableRowDetailTemplateDirective } from './row-detail-template.directive';\n\n@Directive({\n selector: 'ngx-datatable-row-detail'\n})\nexport class DatatableRowDetailDirective<TRow extends Row = any> {\n /**\n * The detail row height is required especially\n * when virtual scroll is enabled.\n */\n readonly rowHeight = input<number | ((row?: TRow, index?: number) => number)>(0);\n\n readonly _templateInput = input<TemplateRef<RowDetailContext<TRow>>>(undefined, {\n alias: 'template'\n });\n\n readonly _templateQuery = contentChild(DatatableRowDetailTemplateDirective, {\n read: TemplateRef\n });\n\n readonly template = computed<TemplateRef<RowDetailContext<TRow>> | undefined>(() => {\n return this._templateInput() ?? this._templateQuery();\n });\n\n /**\n * Row detail row visbility was toggled.\n */\n readonly toggle = output<DetailToggleEvents<TRow>>();\n\n /**\n * Toggle the expansion of the row\n */\n toggleExpandRow(row: TRow): void {\n this.toggle.emit({\n type: 'row',\n value: row\n });\n }\n\n /**\n * API method to expand all the rows.\n */\n expandAllRows(): void {\n this.toggle.emit({\n type: 'all',\n value: true\n });\n }\n\n /**\n * API method to collapse all the rows.\n */\n collapseAllRows(): void {\n this.toggle.emit({\n type: 'all',\n value: false\n });\n }\n}\n","import {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ContentChild,\n contentChild,\n contentChildren,\n DoCheck,\n effect,\n ElementRef,\n HostListener,\n inject,\n input,\n IterableDiffer,\n IterableDiffers,\n linkedSignal,\n model,\n numberAttribute,\n OnDestroy,\n output,\n signal,\n TemplateRef,\n untracked,\n viewChild\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { VisibilityDirective } from '../directives/visibility.directive';\nimport { NGX_DATATABLE_CONFIG, NgxDatatableConfig } from '../ngx-datatable.config';\nimport { ScrollbarHelper } from '../services/scrollbar-helper.service';\nimport {\n ColumnResizeEventInternal,\n ReorderEventInternal,\n TableColumnInternal\n} from '../types/internal.types';\nimport {\n ActivateEvent,\n ColumnMode,\n ColumnResizeEvent,\n ContextMenuEvent,\n DragEventData,\n Group,\n PageEvent,\n PagerPageEvent,\n ReorderEvent,\n Row,\n RowOrGroup,\n ScrollEvent,\n ScrollToRowOptions,\n SelectEvent,\n SelectionType,\n SortEvent,\n SortPropDir,\n SortType,\n TreeStatus\n} from '../types/public.types';\nimport { TableColumn } from '../types/table-column.type';\nimport { toInternalColumn, toPublicColumn } from '../utils/column-helper';\nimport { adjustColumnWidths, forceFillColumnWidths } from '../utils/math';\nimport { numberOrUndefinedAttribute } from '../utils/number-or-undefined-attribute';\nimport { sortGroupedRows, sortRows } from '../utils/sort';\nimport { DATATABLE_COMPONENT_TOKEN } from '../utils/table-token';\nimport { throttleable } from '../utils/throttle';\nimport { expandToRow, groupRowsByParents, optionalGetterForProp } from '../utils/tree';\nimport { DatatableGroupHeaderDirective } from './body/body-group-header.directive';\nimport { DatatableRowDefDirective } from './body/body-row-def.component';\nimport { DataTableBodyComponent } from './body/body.component';\nimport { ProgressBarComponent } from './body/progress-bar.component';\nimport { DataTableColumnDirective } from './columns/column.directive';\nimport { DataTableFooterComponent } from './footer/footer.component';\nimport { DatatableFooterDirective } from './footer/footer.directive';\nimport { DataTableHeaderComponent } from './header/header.component';\nimport { DatatableRowDetailDirective } from './row-detail/row-detail.directive';\n\n@Component({\n selector: 'ngx-datatable',\n imports: [\n VisibilityDirective,\n DataTableHeaderComponent,\n DataTableBodyComponent,\n DataTableFooterComponent,\n ProgressBarComponent\n ],\n templateUrl: './datatable.component.html',\n styleUrl: './datatable.component.scss',\n providers: [\n {\n provide: DATATABLE_COMPONENT_TOKEN,\n useExisting: DatatableComponent\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ngx-datatable',\n '[class.fixed-header]': '_isFixedHeader()',\n '[class.fixed-row]': 'rowHeight() !== \"auto\"',\n '[class.scroll-vertical]': 'scrollbarV()',\n '[class.virtualized]': 'virtualization()',\n '[class.scroll-horz]': 'scrollbarH()',\n '[class.selectable]': 'selectionType() !== undefined',\n '[class.checkbox-selection]': 'selectionType() === \"checkbox\"',\n '[class.cell-selection]': 'selectionType() === \"cell\"',\n '[class.single-selection]': 'selectionType() === \"single\"',\n '[class.multi-selection]': 'selectionType() === \"multi\"',\n '[class.multi-click-selection]': 'selectionType() === \"multiClick\"'\n }\n})\nexport class DatatableComponent<TRow extends Row = any>\n implements DoCheck, AfterViewInit, OnDestroy\n{\n private scrollbarHelper = inject(ScrollbarHelper);\n private cd = inject(ChangeDetectorRef);\n private configuration =\n inject(NGX_DATATABLE_CONFIG, { optional: true }) ??\n // This is the old injection token for backward compatibility.\n inject<NgxDatatableConfig>('configuration' as any, { optional: true });\n\n /**\n * Template for the target marker of drag target columns.\n */\n readonly targetMarkerTemplate = input<TemplateRef<unknown>>();\n\n /**\n * Rows that are displayed in the table.\n */\n readonly rows = input<(TRow | undefined)[] | null | undefined>();\n\n /**\n * This attribute allows the user to set the name of the column to group the data with\n */\n readonly groupRowsBy = input<keyof TRow>();\n\n /**\n * This attribute allows the user to set a grouped array in the following format:\n * [\n * {groupid=1} [\n * {id=1 name=\"test1\"},\n * {id=2 name=\"test2\"},\n * {id=3 name=\"test3\"}\n * ]},\n * {groupid=2>[\n * {id=4 name=\"test4\"},\n * {id=5 name=\"test5\"},\n * {id=6 name=\"test6\"}\n * ]}\n * ]\n */\n readonly groupedRows = input<Group<TRow>[]>();\n\n /**\n * Columns to be displayed.\n */\n readonly columns = input<TableColumn[]>();\n\n /**\n * List of row objects that should be\n * represented as selected in the grid.\n * Default value: `[]`\n */\n readonly selected = model<TRow[]>([]);\n\n /**\n * Enable vertical scrollbars\n */\n readonly scrollbarV = input(false, { transform: booleanAttribute });\n\n /**\n * Enable vertical scrollbars dynamically on demand.\n * Property `scrollbarV` needs to be set `true` too.\n * Width that is gained when no scrollbar is needed\n * is added to the inner table width.\n */\n readonly scrollbarVDynamic = input(false, { transform: booleanAttribute });\n\n /**\n * Enable horz scrollbars\n */\n readonly scrollbarH = input(false, { transform: booleanAttribute });\n\n /**\n * The row height; which is necessary\n * to calculate the height for the lazy rendering.\n */\n readonly rowHeight = input<number | 'auto' | ((row: TRow) => number)>(\n this.configuration?.rowHeight ?? 30\n );\n\n /**\n * Type of column width distribution formula.\n * Example: flex, force, standard\n */\n readonly columnMode = input<ColumnMode | keyof typeof ColumnMode>('standard');\n\n /**\n * The minimum header height in pixels.\n * Pass a falsey for no header\n */\n readonly headerHeight = input<number | 'auto'>(this.configuration?.headerHeight ?? 30);\n\n /**\n * The minimum footer height in pixels.\n * Pass falsey for no footer\n */\n readonly footerHeight = input(this.configuration?.footerHeight ?? 0, {\n transform: numberAttribute\n });\n\n /**\n * If the table should use external paging\n * otherwise its assumed that all data is preloaded.\n */\n readonly externalPaging = input(false, { transform: booleanAttribute });\n\n /**\n * If the table should use external sorting or\n * the built-in basic sorting.\n */\n readonly externalSorting = input(false, { transform: booleanAttribute });\n\n /**\n * The page size to be shown.\n * Default value: `undefined`\n */\n readonly limit = input(undefined, {\n transform: numberOrUndefinedAttribute\n });\n\n /**\n * The total count of all rows.\n * Default value: `0`\n */\n readonly count = input(0, { transform: numberAttribute });\n\n /**\n * The current offset ( page - 1 ) shown.\n * Default value: `0`\n */\n readonly offset = model<number>(0);\n\n /**\n * Show the linear loading bar.\n * Default value: `false`\n */\n readonly loadingIndicator = input(false, { transform: booleanAttribute });\n\n /**\n * Show ghost loaders on each cell.\n * Default value: `false`\n */\n readonly ghostLoadingIndicator = input(false, { transform: booleanAttribute });\n\n /**\n * Type of row selection. Options are:\n *\n * - `single`\n * - `multi`\n * - `checkbox`\n * - `multiClick`\n * - `cell`\n *\n * For no selection pass a `falsey`.\n * Default value: `undefined`\n */\n readonly selectionType = input<SelectionType>();\n\n /**\n * Enable/Disable ability to re-order columns\n * by dragging them.\n */\n readonly reorderable = input(true, { transform: booleanAttribute });\n\n /**\n * Swap columns on re-order columns or\n * move them.\n */\n readonly swapColumns = input(true, { transform: booleanAttribute });\n\n /**\n * The type of sorting\n */\n readonly sortType = input<SortType>('single');\n\n /**\n * Array of sorted columns by property and type.\n * Default value: `[]`\n */\n readonly sorts = model<SortPropDir[]>([]);\n\n /**\n * Css class overrides\n */\n readonly cssClasses = input<Partial<Required<NgxDatatableConfig>['cssClasses']>>(\n this.configuration?.cssClasses ?? {}\n );\n\n /**\n * Message overrides for localization\n *\n * @defaultValue\n * ```\n * {\n * emptyMessage: 'No data to display',\n * totalMessage: 'total',\n * selectedMessage: 'selected',\n * ariaFirstPageMessage: 'go to first page',\n * ariaPreviousPageMessage: 'go to previous page',\n * ariaPageNMessage: 'page',\n * ariaNextPageMessage: 'go to next page',\n * ariaLastPageMessage: 'go to last page',\n * ariaRowCheckboxMessage: 'Select row',\n * ariaHeaderCheckboxMessage: 'Select all rows',\n * ariaGroupHeaderCheckboxMessage: 'Select row group'\n * }\n * ```\n */\n readonly messages = input<Partial<Required<NgxDatatableConfig>['messages']>>(\n this.configuration?.messages ?? {}\n );\n\n /**\n * A function which is called with the row and should return either:\n * - a string: `\"class-1 class-2`\n * - a Record<string, boolean>: `{ 'class-1': true, 'class-2': false }`\n */\n readonly rowClass = input<(row: TRow) => string | Record<string, boolean>>();\n\n /**\n * A boolean/function you can use to check whether you want\n * to select a particular row based on a criteria. Example:\n *\n * (selection) => {\n * return selection !== 'Ethel Price';\n * }\n */\n readonly selectCheck = input<(value: TRow, index: number, array: TRow[]) => boolean>();\n\n /**\n * A function you can use to check whether you want\n * to show the checkbox for a particular row based on a criteria. Example:\n *\n * (row, column, value) => {\n * return row.name !== 'Ethel Price';\n * }\n */\n readonly displayCheck = input<(row: TRow, column: TableColumn, value?: any) => boolean>();\n\n /**\n * A boolean you can use to set the detault behaviour of rows and groups\n * whether they will start expanded or not. If ommited the default is NOT expanded.\n *\n */\n readonly groupExpansionDefault = input(false, { transform: booleanAttribute });\n\n /**\n * Property to which you can use for custom tracking of rows.\n * Example: 'name'\n */\n readonly trackByProp = input<keyof TRow>();\n\n /**\n * Property to which you can use for determining select all\n * rows on current page or not.\n */\n readonly selectAllRowsOnPage = input(false, { transform: booleanAttribute });\n\n /**\n * A flag for row virtualization on / off\n */\n readonly virtualization = input(true, { transform: booleanAttribute });\n\n /**\n * Tree from relation\n */\n readonly treeFromRelation = input<string>();\n\n /**\n * Tree to relation\n */\n readonly treeToRelation = input<string>();\n\n /**\n * A flag for switching summary row on / off\n */\n readonly summaryRow = input(false, { transform: booleanAttribute });\n\n /**\n * A height of summary row\n */\n readonly summaryHeight = input(30, { transform: numberAttribute });\n\n /**\n * A property holds a summary row position: top/bottom\n */\n readonly summaryPosition = input('top');\n\n /**\n * A function you can use to check whether you want\n * to disable a row. Example:\n *\n * (row) => {\n * return row.name !== 'Ethel Price';\n * }\n */\n readonly disableRowCheck = input<(row: TRow) => boolean>();\n\n /**\n * A flag to enable drag behavior of native HTML5 drag and drop API on rows.\n * If set to true, {@link rowDragEvents} will emit dragstart and dragend events.\n */\n readonly rowDraggable = input(false, { transform: booleanAttribute });\n\n /**\n * A flag to controll behavior of sort states.\n * By default sort on column toggles between ascending and descending without getting removed.\n * Set true to clear sorting of column after performing ascending and descending sort on that column.\n */\n readonly enableClearingSortState = input(false, { transform: booleanAttribute });\n\n /**\n * Controls whether the datatable runs an {@link IterableDiffer} against the\n * `rows` input on every change detection cycle to detect additions, removals\n * and reorderings that happen in-place on the same array reference.\n *\n * Enabled by default. Set to `false` as a performance optimization when you\n * always pass a new `rows` array reference on updates.\n */\n readonly checkRowListChanges = input(true, { transform: booleanAttribute });\n\n /**\n * Controls whether each rendered row runs a {@link KeyValueDiffer} against\n * its row object on every change detection cycle to detect in-place property\n * mutations (e.g. `row.name = 'new'` without replacing the row reference).\n *\n * Enabled by default. Set to `false` as a performance optimization when row\n * objects are treated as immutable.\n */\n readonly checkRowPropertyChanges = input(true, { transform: booleanAttribute });\n\n /**\n * Body was scrolled typically in a `scrollbarV:true` scenario.\n */\n readonly scroll = output<ScrollEvent>();\n\n /**\n * A cell or row was focused via keyboard or mouse click.\n */\n readonly activate = output<ActivateEvent<TRow>>();\n\n /**\n * A cell or row was selected.\n * @deprecated Use two-way binding on `selected` instead.\n *\n * Before:\n * ```html\n * <ngx-datatable [selected]=\"mySelection\" (select)=\"onSelect($event)\"></ngx-datatable>\n * ```\n *\n * After:\n * ```html\n * <ngx-datatable [selected]=\"mySelection\" (selectedChange)=\"onSelect({selected: $event})\"></ngx-datatable>\n * <!-- or -->\n * <ngx-datatable [(selected)]=\"mySelection\"></ngx-datatable>\n * ```\n */\n readonly select = output<SelectEvent<TRow>>();\n\n /**\n * Column sort was invoked.\n * @deprecated Use two-way binding on `sorts` instead.\n *\n * Before:\n * ```html\n * <ngx-datatable [sorts]=\"mySorts\" (sort)=\"onSort($event)\"></ngx-datatable>\n * ```\n *\n * After:\n * ```html\n * <ngx-datatable [sorts]=\"mySorts\" (sortsChange)=\"onSort({sorts: $event})\"></ngx-datatable>\n * <!-- or -->\n * <ngx-datatable [(sorts)]=\"mySorts\"></ngx-datatable>\n * ```\n */\n readonly sort = output<SortEvent>();\n\n /**\n * The table was paged either triggered by the pager or the body scroll.\n */\n readonly page = output<PageEvent>();\n\n /**\n * Columns were re-ordered.\n */\n readonly reorder = output<ReorderEvent>();\n\n /**\n * Column was resized.\n */\n readonly resize = output<ColumnResizeEvent>();\n\n /**\n * The context menu was invoked on the table.\n * type indicates whether the header or the body was clicked.\n * content contains either the column or the row that was clicked.\n */\n readonly tableContextmenu = output<ContextMenuEvent<TRow>>();\n\n /**\n * A row was expanded ot collapsed for tree\n */\n readonly treeAction = output<{ row: TRow; rowIndex: number }>();\n\n /**\n * Emits HTML5 native drag events.\n * Only emits dragenter, dragover, drop events by default.\n * Set {@link rowDraggable} to true for dragstart and dragend.\n */\n readonly rowDragEvents = output<DragEventData>();\n\n /**\n * Column templates gathered from `ContentChildren`\n * if described in your markup.\n */\n readonly columnTemplates =\n contentChildren<DataTableColumnDirective<TRow>>(DataTableColumnDirective);\n\n /**\n * Row Detail templates gathered from the ContentChild\n */\n @ContentChild(DatatableRowDetailDirective)\n rowDetail?: DatatableRowDetailDirective;\n\n /**\n * Group Header templates gathered from the ContentChild\n */\n @ContentChild(DatatableGroupHeaderDirective)\n groupHeader?: DatatableGroupHeaderDirective;\n\n /**\n * Footer template gathered from the ContentChild\n * @internal\n */\n readonly _footer = contentChild(DatatableFooterDirective);\n\n private readonly _bodyComponent =\n viewChild.required<DataTableBodyComponent<TRow & { treeStatus?: TreeStatus }>>(\n DataTableBodyComponent\n );\n\n private readonly _headerElement = viewChild(DataTableHeaderComponent, {\n read: ElementRef<HTMLElement>\n });\n\n private readonly _bodyElement = viewChild.required(DataTableBodyComponent, {\n read: ElementRef<HTMLElement>\n });\n\n /** @internal */\n readonly _rowDefTemplate = contentChild(DatatableRowDefDirective, {\n read: TemplateRef\n });\n\n /**\n * Returns if all rows are selected.\n */\n readonly allRowsSelected = computed(() => {\n const selected = this.selected();\n let allRowsSelected = selected.length === this.rows()?.length;\n\n if (this.selectAllRowsOnPage()) {\n const { first, last } = this._bodyComponent().indexes();\n const rowsOnPage = last - first;\n allRowsSelected = selected.length === rowsOnPage;\n }\n\n return !!(selected && this.rows()?.length !== 0 && allRowsSelected);\n });\n\n element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n readonly _innerWidth = computed(() => this.dimensions().width);\n readonly pageSize = computed(() => this.calcPageSize());\n readonly _isFixedHeader = computed(() => {\n const headerHeight: number | string = this.headerHeight();\n return typeof headerHeight === 'string' ? (headerHeight as string) !== 'auto' : true;\n });\n readonly bodyHeight = computed(() => {\n if (this.scrollbarV()) {\n let height = this.dimensions().height;\n const headerElement = this._headerElement();\n if (headerElement) {\n height = height - headerElement.nativeElement.getBoundingClientRect().height;\n }\n return height - this.footerHeight();\n }\n return 0;\n });\n readonly rowCount = computed(() => this.calcRowCount());\n rowDiffer: IterableDiffer<TRow | undefined> = inject(IterableDiffers).find([]).create();\n /** This counter is increased, when the rowDiffer detects a change. This will cause an update of _internalRows. */\n private readonly _rowDiffCount = signal(0);\n\n _offsetX = 0;\n readonly _internalRows = computed(() => {\n this._rowDiffCount(); // to trigger recalculation when row differ detects a change\n let rows = this.rows()?.slice() ?? [];\n\n const sorts = this.sorts();\n if (sorts.length && !this.externalSorting()) {\n rows = sortRows(rows, this._internalColumns(), this.sorts());\n }\n\n if (this.treeFromRelation() && this.treeToRelation()) {\n rows = groupRowsByParents(\n rows,\n optionalGetterForProp(this.treeFromRelation()),\n optionalGetterForProp(this.treeToRelation())\n );\n }\n\n if (this.ghostLoadingIndicator() && this.scrollbarV() && !this.externalPaging()) {\n // in case where we don't have predefined total page length\n rows.push(undefined); // undefined row will render ghost cell row at the end of the page\n }\n\n return rows;\n });\n\n readonly _internalGroupedRows = computed(() => {\n let groupedRows = this.groupedRows();\n const groupRowsBy = this.groupRowsBy();\n\n if (!groupedRows && groupRowsBy) {\n this._rowDiffCount(); // to trigger recalculation when row differ detects a change\n groupedRows = this.groupArrayBy(this.rows() ?? [], groupRowsBy);\n }\n\n if (!groupedRows) {\n // return here to prevent subscription to sorts when no grouping\n return undefined;\n }\n\n const sorts = this.sorts();\n if (sorts.length && !this.externalSorting()) {\n if (groupedRows?.length) {\n groupedRows = sortGroupedRows(\n groupedRows,\n this._internalColumns(),\n sorts,\n sorts.find(sortColumns => sortColumns.prop === groupRowsBy)\n );\n }\n }\n\n return groupedRows;\n });\n\n // TODO: consider removing internal modifications of the columns.\n // This requires a different strategy for certain properties like width.\n readonly _internalColumns = linkedSignal(() =>\n toInternalColumn(\n this.columnTemplates().length\n ? this.columnTemplates().map(c => c.column())\n : (this.columns() ?? []),\n this._defaultColumnWidth\n )\n );\n\n /**\n * Computed signal that returns the corrected offset value.\n * It ensures the offset is within valid bounds based on rowCount and pageSize.\n */\n readonly correctedOffset = computed(() => {\n const offset = this.offset();\n const rowCount = this.rowCount();\n const pageSize = this.pageSize();\n return Math.max(Math.min(offset, Math.ceil(rowCount / pageSize) - 1), 0);\n });\n\n _subscriptions: Subscription[] = [];\n _defaultColumnWidth = this.configuration?.defaultColumnWidth ?? 150;\n /**\n * To have this available for all components.\n * The Footer itself is not available in the injection context in templates,\n * so we need to get if from here until we have a state service.\n */\n readonly _footerComponent = viewChild(DataTableFooterComponent);\n protected verticalScrollVisible = false;\n private readonly dimensions = signal<Pick<DOMRect, 'width' | 'height'>>({ height: 0, width: 0 });\n\n constructor() {\n // TODO: This should be a computed signal.\n // Effect to handle recalculate when limit or count changes\n effect(() => {\n // Track limit and count changes\n this.limit();\n this.count();\n // Recalculate without tracking other signals\n untracked(() => this.recalculateDims());\n });\n\n effect(() => this.recalculateColumns());\n }\n\n /*\n * Lifecycle hook that is called when Angular dirty checks a directive.\n */\n ngDoCheck(): void {\n const rowDiffers = this.checkRowListChanges() ? this.rowDiffer.diff(this.rows()) : null;\n if (rowDiffers || this.disableRowCheck()) {\n this._rowDiffCount.update(count => count + 1);\n if (rowDiffers) {\n queueMicrotask(() => {\n this.recalculate();\n this.cd.markForCheck();\n });\n }\n\n this.cd.markForCheck();\n }\n }\n\n /**\n * Lifecycle hook that is called after a component's\n * view has been fully initialized.\n */\n ngAfterViewInit(): void {\n // this has to be done to prevent the change detection\n // tree from freaking out because we are readjusting\n if (typeof requestAnimationFrame === 'undefined') {\n return;\n }\n\n requestAnimationFrame(() => {\n this.recalculate();\n\n // emit page for virtual server-side kickoff\n if (this.externalPaging() && this.scrollbarV()) {\n this.page.emit({\n count: this.count(),\n pageSize: this.pageSize(),\n limit: this.limit(),\n offset: 0,\n sorts: this.sorts()\n });\n }\n });\n }\n\n /**\n * This will be used when displaying or selecting rows.\n * when tracking/comparing them, we'll use the value of this fn,\n *\n * (`fn(x) === fn(y)` instead of `x === y`)\n */\n readonly rowIdentity = input<(x: RowOrGroup<TRow>) => unknown>(x => {\n if (this.groupRowsBy()) {\n // each group in groupedRows are stored as {key, value: [rows]},\n // where key is the groupRowsBy index\n return (x as Group<TRow>).key ?? x;\n } else {\n return x;\n }\n });\n\n /**\n * Creates a map with the data grouped by the user choice of grouping index\n *\n * @param originalArray the original array passed via parameter\n * @param groupBy the key of the column to group the data by\n */\n groupArrayBy(originalArray: (TRow | undefined)[], groupBy: keyof TRow) {\n // create a map to hold groups with their corresponding results\n const map = new Map<TRow[keyof TRow], TRow[]>();\n let i = 0;\n\n originalArray.forEach(item => {\n if (!item) {\n // skip undefined items\n return;\n }\n\n const key = item[groupBy];\n const value = map.get(key);\n if (!value) {\n map.set(key, [item]);\n } else {\n value.push(item);\n }\n i++;\n });\n\n const addGroup = (key: TRow[keyof TRow], value: TRow[]) => ({ key, value });\n\n // convert map back to a simple array of objects\n return Array.from(map, x => addGroup(x[0], x[1]));\n }\n\n /**\n * Recalc's the sizes of the grid.\n *\n * Updated automatically on changes to:\n *\n * - Columns\n * - Rows\n * - Paging related\n *\n * Also can be manually invoked or upon window resize.\n */\n recalculate(): void {\n this.recalculateDims();\n }\n\n /**\n * Window resize handler to update sizes.\n */\n @HostListener('window:resize')\n @throttleable(5)\n onWindowResize(): void {\n this.recalculate();\n }\n\n /**\n * Recalulcates the column widths based on column width\n * distribution mode and scrollbar offsets.\n */\n recalculateColumns(\n forceIdx = -1,\n allowBleed: boolean = this.scrollbarH()\n ): TableColumnInternal[] {\n let width = this._innerWidth();\n const columns = this._internalColumns();\n if (!width) {\n return [];\n }\n const { scrollHeight, clientHeight } = this._bodyElement().nativeElement;\n this.verticalScrollVisible = scrollHeight > clientHeight;\n if (this.scrollbarV() || this.scrollbarVDynamic()) {\n width = width - (this.verticalScrollVisible ? this.scrollbarHelper.width : 0);\n }\n\n // TODO: this is a temporary workaround to avoid signal writes in a computed.\n // Later, a computed adjustedWidth has to be added to the internal column to avoid this.\n untracked(() => {\n if (this.columnMode() === 'force') {\n forceFillColumnWidths(\n columns,\n width,\n forceIdx,\n allowBleed,\n this._defaultColumnWidth,\n this.scrollbarHelper.width\n );\n } else if (this.columnMode() === 'flex') {\n adjustColumnWidths(columns, width);\n }\n });\n\n return columns;\n }\n\n /**\n * Recalculates the dimensions of the table size.\n * Internally calls the page size and row count calcs too.\n *\n */\n recalculateDims(): void {\n const dims = this.element.getBoundingClientRect();\n this.dimensions.set(dims);\n }\n\n /**\n * Body triggered a page event.\n */\n onBodyPage(offset: number): void {\n // Avoid pagination caming from body events like scroll when the table\n // has no virtualization and the external paging is enable.\n // This means, let's the developer handle pagination by my him(her) self\n if (this.externalPaging() && !this.virtualization()) {\n return;\n }\n\n this.offset.set(offset);\n\n if (!isNaN(this.correctedOffset())) {\n this.page.emit({\n count: this.count(),\n pageSize: this.pageSize(),\n limit: this.limit(),\n offset: this.correctedOffset(),\n sorts: this.sorts()\n });\n }\n }\n\n /**\n * The body triggered a scroll event.\n */\n onBodyScroll(event: ScrollEvent): void {\n this._offsetX = event.offsetX;\n this.scroll.emit(event);\n\n // Sync header scroll position directly via DOM to avoid Angular CD lag\n const headerEl = this._headerElement()?.nativeElement;\n if (headerEl) {\n headerEl.scrollLeft = event.offsetX;\n }\n }\n\n /**\n * The footer triggered a page event.\n */\n onFooterPage(event: PagerPageEvent) {\n this.offset.set(event.page - 1);\n this._bodyComponent().updateOffsetY(this.correctedOffset());\n\n this.page.emit({\n count: this.count(),\n pageSize: this.pageSize(),\n limit: this.limit(),\n offset: this.correctedOffset(),\n sorts: this.sorts()\n });\n\n if (this.selectAllRowsOnPage()) {\n this.selected.set([]);\n this.select.emit({\n selected: this.selected()\n });\n }\n }\n\n /**\n * Recalculates the sizes of the page\n */\n calcPageSize(): number {\n // Keep the page size constant even if the row has been expanded.\n // This is because an expanded row is still considered to be a child of\n // the original row. Hence calculation would use rowHeight only.\n if (this.scrollbarV() && this.virtualization()) {\n const size = Math.ceil(this.bodyHeight() / (this.rowHeight() as number));\n return Math.max(size, 0);\n }\n\n // if limit is passed, we are paging\n const limit = this.limit();\n if (limit !== undefined) {\n return limit;\n }\n\n // otherwise use row length\n return this._internalRows().length;\n }\n\n /**\n * Calculates the row count.\n */\n calcRowCount(): number {\n if (!this.externalPaging()) {\n const groupedRows = this._internalGroupedRows();\n if (groupedRows) {\n return groupedRows.length;\n } else {\n return this._internalRows().length;\n }\n }\n\n return this.count();\n }\n\n /**\n * The header triggered a contextmenu event.\n */\n onColumnContextmenu({ event, column }: { event: MouseEvent; column: TableColumnInternal }): void {\n this.tableContextmenu.emit({\n event,\n type: 'header',\n content: toPublicColumn(column)\n });\n }\n\n /**\n * The body triggered a contextmenu event.\n */\n onRowContextmenu({ event, row }: { event: MouseEvent; row: RowOrGroup<TRow> }): void {\n this.tableContextmenu.emit({ event, type: 'body', content: row });\n }\n\n /**\n * The header triggered a column resize event.\n */\n onColumnResize({ column, newValue, prevValue }: ColumnResizeEventInternal): void {\n /* Safari/iOS 10.2 workaround */\n if (column === undefined) {\n return;\n }\n\n const idx = this._internalColumns().indexOf(column);\n const cols = this._internalColumns();\n cols[idx].width.set(newValue);\n // set this so we can force the column\n // width distribution to be to this value\n cols[idx].$$oldWidth = newValue;\n this.recalculateColumns(idx);\n\n this.resize.emit({\n column: toPublicColumn(column),\n newValue,\n prevValue\n });\n }\n\n onColumnResizing({ column, newValue }: ColumnResizeEventInternal): void {\n if (column === undefined) {\n return;\n }\n column.width.set(newValue);\n column.$$oldWidth = newValue;\n const idx = this._internalColumns().indexOf(column);\n this.recalculateColumns(idx);\n }\n\n /**\n * The header triggered a column re-order event.\n */\n onColumnReorder(event: ReorderEventInternal): void {\n const { column, newValue, prevValue } = event;\n const cols = this._internalColumns().map(c => ({ ...c }));\n const prevCol = cols[newValue];\n if (column.frozenLeft !== prevCol.frozenLeft || column.frozenRight !== prevCol.frozenRight) {\n return;\n }\n\n if (this.swapColumns()) {\n cols[newValue] = column;\n cols[prevValue] = prevCol;\n } else {\n if (newValue > prevValue) {\n const movedCol = cols[prevValue];\n for (let i = prevValue; i < newValue; i++) {\n cols[i] = cols[i + 1];\n }\n cols[newValue] = movedCol;\n } else {\n const movedCol = cols[prevValue];\n for (let i = prevValue; i > newValue; i--) {\n cols[i] = cols[i - 1];\n }\n cols[newValue] = movedCol;\n }\n }\n\n this._internalColumns.set(cols);\n\n this.reorder.emit({ ...event, column: toPublicColumn(event.column) });\n }\n\n /**\n * The header triggered a column sort event.\n */\n onColumnSort(event: SortEvent): void {\n // clean selected rows\n if (this.selectAllRowsOnPage()) {\n this.selected.set([]);\n this.select.emit({\n selected: this.selected()\n });\n }\n\n this.sorts.set(event.sorts);\n\n // Always go to first page when sorting to see the newly sorted data\n this.offset.set(0);\n this._bodyComponent().updateOffsetY(this.correctedOffset());\n // Emit the page object with updated offset value\n this.page.emit({\n count: this.count(),\n pageSize: this.pageSize(),\n limit: this.limit(),\n offset: this.correctedOffset(),\n sorts: this.sorts()\n });\n this.sort.emit(event);\n }\n\n /**\n * Toggle all row selection\n */\n onHeaderSelect(): void {\n if (this.selectAllRowsOnPage()) {\n // before we splice, chk if we currently have all selected\n const { first, last } = this._bodyComponent().indexes();\n const allSelected = this.selected().length === last - first;\n\n // do the opposite here\n if (!allSelected) {\n this.selected.set(\n this._internalRows()\n .slice(first, last)\n .filter(row => !!row) as TRow[]\n );\n } else {\n this.selected.set([]);\n }\n } else {\n let relevantRows: TRow[];\n const disableRowCheckFn = this.disableRowCheck();\n if (disableRowCheckFn) {\n relevantRows = (this.rows() ?? []).filter(\n (row => row && !disableRowCheckFn(row)) as (row: TRow | undefined) => row is TRow\n );\n } else {\n relevantRows = (this.rows() ?? []).filter(row => !!row);\n }\n // before we splice, chk if we currently have all selected\n const allSelected = this.selected().length === relevantRows.length;\n // do the opposite here\n if (!allSelected) {\n this.selected.set(relevantRows);\n } else {\n this.selected.set([]);\n }\n }\n\n this.select.emit({\n selected: this.selected()\n });\n }\n\n /**\n * A row was selected from body\n */\n onBodySelect(selected: TRow[]): void {\n this.select.emit({ selected });\n }\n\n /**\n * A row was expanded or collapsed for tree\n */\n onTreeAction(event: { row: TRow }) {\n const row = event.row;\n // TODO: For duplicated items this will not work\n const treeToRel = this.treeToRelation();\n const rowIndex = (this.rows() ?? []).findIndex(\n r => r && r[treeToRel!] === event.row[treeToRel!]\n );\n this._rowDiffCount.update(v => v + 1);\n this.treeAction.emit({ row, rowIndex });\n }\n\n ngOnDestroy() {\n this._subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n\n scrollToRow(row: TRow, options?: ScrollToRowOptions): void {\n if (!this.scrollbarV()) {\n throw new Error('Vertical scrolling is not enabled.');\n }\n\n // TODO: We could / should add support for all those cases below.\n if (this._internalGroupedRows()?.length) {\n throw new Error('Scrolling is not supported with grouped rows.');\n }\n\n if (this.limit()) {\n throw new Error('Scrolling is not supported with limit');\n }\n\n if (this.treeFromRelation() && this.treeToRelation()) {\n this.scrollToRowTree(row, options);\n return;\n }\n\n const index = this._internalRows().indexOf(row);\n if (index === -1) {\n throw new Error(`Row not found: ${row}`);\n }\n\n // Here we have ensured, that we have only one page and the row exists.\n // Now we just need to scroll to that row.\n this._bodyComponent().scrollToIndex(index, options);\n }\n\n private scrollToRowTree(row: TRow, options?: ScrollToRowOptions, afterExpand = false): void {\n const index = this._internalRows().indexOf(row);\n\n if (index !== -1) {\n this._bodyComponent().scrollToIndex(index, options);\n return;\n }\n\n if (afterExpand) {\n throw new Error(`Row not found: ${row}`);\n }\n\n expandToRow(\n row,\n this.rows() ?? [],\n optionalGetterForProp(this.treeFromRelation()),\n optionalGetterForProp(this.treeToRelation())\n );\n this._rowDiffCount.update(v => v + 1);\n // We need a microTask here to let Angular update the DOM\n queueMicrotask(() => this.scrollToRowTree(row, options, true));\n }\n}\n","<div visibilityObserver (visible)=\"recalculate()\">\n <div role=\"table\">\n @if (headerHeight()) {\n <datatable-header\n role=\"rowgroup\"\n [sorts]=\"sorts()\"\n [sortType]=\"sortType()\"\n [scrollbarH]=\"scrollbarH()\"\n [innerWidth]=\"_innerWidth()\"\n [dealsWithGroup]=\"_internalGroupedRows() !== undefined\"\n [columns]=\"_internalColumns()\"\n [headerHeight]=\"headerHeight()\"\n [reorderable]=\"reorderable()\"\n [targetMarkerTemplate]=\"targetMarkerTemplate()\"\n [sortAscendingIcon]=\"cssClasses().sortAscending\"\n [sortDescendingIcon]=\"cssClasses().sortDescending\"\n [sortUnsetIcon]=\"cssClasses().sortUnset\"\n [allRowsSelected]=\"allRowsSelected()\"\n [selectionType]=\"selectionType()\"\n [verticalScrollVisible]=\"verticalScrollVisible\"\n [enableClearingSortState]=\"enableClearingSortState()\"\n [ariaHeaderCheckboxMessage]=\"messages().ariaHeaderCheckboxMessage ?? 'Select all rows'\"\n (sort)=\"onColumnSort($event)\"\n (resize)=\"onColumnResize($event)\"\n (resizing)=\"onColumnResizing($event)\"\n (reorder)=\"onColumnReorder($event)\"\n (select)=\"onHeaderSelect()\"\n (columnContextmenu)=\"onColumnContextmenu($event)\"\n />\n }\n <datatable-body\n tabindex=\"0\"\n role=\"rowgroup\"\n [groupedRows]=\"_internalGroupedRows()\"\n [rows]=\"_internalRows()\"\n [groupExpansionDefault]=\"groupExpansionDefault()\"\n [scrollbarV]=\"scrollbarV()\"\n [scrollbarH]=\"scrollbarH()\"\n [virtualization]=\"virtualization()\"\n [loadingIndicator]=\"loadingIndicator()\"\n [ghostLoadingIndicator]=\"ghostLoadingIndicator()\"\n [externalPaging]=\"externalPaging()\"\n [rowHeight]=\"rowHeight()\"\n [rowCount]=\"rowCount()\"\n [offset]=\"correctedOffset()\"\n [trackByProp]=\"trackByProp()\"\n [columns]=\"_internalColumns()\"\n [pageSize]=\"pageSize()\"\n [offsetX]=\"_offsetX\"\n [rowDetail]=\"rowDetail\"\n [groupHeader]=\"groupHeader\"\n [innerWidth]=\"_innerWidth()\"\n [bodyHeight]=\"bodyHeight()\"\n [selectionType]=\"selectionType()\"\n [rowIdentity]=\"rowIdentity()\"\n [rowClass]=\"rowClass()\"\n [selectCheck]=\"selectCheck()\"\n [displayCheck]=\"displayCheck()\"\n [summaryRow]=\"summaryRow()\"\n [summaryHeight]=\"summaryHeight()\"\n [summaryPosition]=\"summaryPosition()\"\n [verticalScrollVisible]=\"verticalScrollVisible\"\n [ariaRowCheckboxMessage]=\"messages().ariaRowCheckboxMessage ?? 'Select row'\"\n [ariaGroupHeaderCheckboxMessage]=\"\n messages().ariaGroupHeaderCheckboxMessage ?? 'Select row group'\n \"\n [disableRowCheck]=\"disableRowCheck()\"\n [checkRowPropertyChanges]=\"checkRowPropertyChanges()\"\n [rowDraggable]=\"rowDraggable()\"\n [rowDragEvents]=\"rowDragEvents\"\n [rowDefTemplate]=\"_rowDefTemplate()\"\n [cssClasses]=\"cssClasses()\"\n [(selected)]=\"selected\"\n (page)=\"onBodyPage($event)\"\n (activate)=\"activate.emit($event)\"\n (rowContextmenu)=\"onRowContextmenu($event)\"\n (selectedChange)=\"onBodySelect($event)\"\n (scroll)=\"onBodyScroll($event)\"\n (treeAction)=\"onTreeAction($event)\"\n >\n <ng-content select=\"[loading-indicator]\" ngProjectAs=\"[loading-indicator]\">\n <datatable-progress />\n </ng-content>\n <ng-content select=\"[empty-content]\" ngProjectAs=\"[empty-content]\">\n <div role=\"row\">\n <div\n role=\"cell\"\n class=\"empty-row\"\n [innerHTML]=\"messages().emptyMessage ?? 'No data to display'\"\n ></div>\n </div>\n </ng-content>\n </datatable-body>\n </div>\n @if (footerHeight()) {\n <datatable-footer\n [rowCount]=\"_internalGroupedRows() !== undefined ? _internalRows().length : rowCount()\"\n [groupCount]=\"_internalGroupedRows() !== undefined ? rowCount() : undefined\"\n [pageSize]=\"pageSize()\"\n [offset]=\"correctedOffset()\"\n [footerHeight]=\"footerHeight()\"\n [footerTemplate]=\"_footer()\"\n [totalMessage]=\"messages().totalMessage ?? 'total'\"\n [pagerLeftArrowIcon]=\"cssClasses().pagerLeftArrow\"\n [pagerRightArrowIcon]=\"cssClasses().pagerRightArrow\"\n [pagerPreviousIcon]=\"cssClasses().pagerPrevious\"\n [selectedCount]=\"selected().length\"\n [selectedMessage]=\"!!selectionType() && (messages().selectedMessage ?? 'selected')\"\n [pagerNextIcon]=\"cssClasses().pagerNext\"\n (page)=\"onFooterPage($event)\"\n />\n }\n</div>\n","import { booleanAttribute, Directive, effect, ElementRef, inject, input } from '@angular/core';\n\n/**\n * Row Disable Directive\n * Use this to disable/enable all children elements\n * Usage:\n * To disable\n * \t\t<div [disabled]=\"true\" disable-row >\n * \t\t</div>\n * To enable\n * \t<div [disabled]=\"false\" disable-row >\n * \t\t</div>\n */\n@Directive({\n selector: '[disable-row]'\n})\nexport class DisableRowDirective {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly disabled = input(false, {\n transform: booleanAttribute\n });\n\n constructor() {\n effect(() => {\n if (this.disabled()) {\n this.disableAllElements();\n }\n });\n }\n\n private disableAllElements() {\n const hostElement = this.elementRef?.nativeElement;\n if (!hostElement) {\n return;\n }\n Array.from(hostElement.querySelectorAll<HTMLElement>('*')).forEach(child => {\n child.setAttribute('disabled', '');\n });\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { DatatableGroupHeaderTemplateDirective } from './components/body/body-group-header-template.directive';\nimport { DatatableGroupHeaderDirective } from './components/body/body-group-header.directive';\nimport {\n DatatableRowDefComponent,\n DatatableRowDefDirective\n} from './components/body/body-row-def.component';\nimport { DataTableColumnCellDirective } from './components/columns/column-cell.directive';\nimport { DataTableColumnGhostCellDirective } from './components/columns/column-ghost-cell.directive';\nimport { DataTableColumnHeaderDirective } from './components/columns/column-header.directive';\nimport { DataTableColumnDirective } from './components/columns/column.directive';\nimport { DataTableColumnCellTreeToggle } from './components/columns/tree.directive';\nimport { DatatableComponent } from './components/datatable.component';\nimport { DataTableFooterTemplateDirective } from './components/footer/footer-template.directive';\nimport { DatatableFooterDirective } from './components/footer/footer.directive';\nimport { DatatablePagerComponent } from './components/footer/pager.component';\nimport { DatatableRowDetailTemplateDirective } from './components/row-detail/row-detail-template.directive';\nimport { DatatableRowDetailDirective } from './components/row-detail/row-detail.directive';\nimport { DisableRowDirective } from './directives/disable-row.directive';\nimport { AllPartial, NgxDatatableConfig, providedNgxDatatableConfig } from './ngx-datatable.config';\n\n@NgModule({\n imports: [\n DataTableFooterTemplateDirective,\n DatatableComponent,\n DataTableColumnDirective,\n DatatableRowDetailDirective,\n DatatableGroupHeaderDirective,\n DatatableRowDetailTemplateDirective,\n DataTableColumnHeaderDirective,\n DataTableColumnCellDirective,\n DataTableColumnGhostCellDirective,\n DataTableColumnCellTreeToggle,\n DatatableFooterDirective,\n DatatablePagerComponent,\n DatatableGroupHeaderTemplateDirective,\n DisableRowDirective,\n DatatableRowDefComponent,\n DatatableRowDefDirective\n ],\n exports: [\n DatatableComponent,\n DatatableRowDetailDirective,\n DatatableGroupHeaderDirective,\n DatatableRowDetailTemplateDirective,\n DataTableColumnDirective,\n DataTableColumnHeaderDirective,\n DataTableColumnCellDirective,\n DataTableColumnGhostCellDirective,\n DataTableColumnCellTreeToggle,\n DataTableFooterTemplateDirective,\n DatatableFooterDirective,\n DatatablePagerComponent,\n DatatableGroupHeaderTemplateDirective,\n DisableRowDirective,\n DatatableRowDefComponent,\n DatatableRowDefDirective\n ]\n})\nexport class NgxDatatableModule {\n /**\n * Configure global configuration via INgxDatatableConfig\n * @param configuration\n */\n static forRoot(\n configuration: AllPartial<NgxDatatableConfig>\n ): ModuleWithProviders<NgxDatatableModule> {\n return {\n ngModule: NgxDatatableModule,\n providers: [providedNgxDatatableConfig(configuration)]\n };\n }\n}\n","import { TableColumn, TableColumnProp } from './table-column.type';\n\nexport interface SortPropDir {\n dir: SortDirection | 'desc' | 'asc';\n prop: TableColumnProp;\n}\n\n/**\n * @deprecated The constant `SortDirection` should no longer be used. Instead use the value directly:\n * ```\n * // old\n * const sortDir: SortDirection = SortDirection.asc;\n * // new\n * const sortDir: SortDirection = 'asc';\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const SortDirection = {\n asc: 'asc',\n desc: 'desc'\n} as const;\n\nexport type SortDirection = (typeof SortDirection)[keyof typeof SortDirection];\n\n/** @deprecated See {@link DatatableComponent.sort} */\nexport interface SortEvent {\n column: TableColumn;\n prevValue: SortDirection | undefined;\n newValue: SortDirection | undefined;\n sorts: SortPropDir[];\n}\n\n/**\n * @deprecated The constant `SortType` should no longer be used. Instead use the value directly:\n * ```\n * // old\n * const sortType: SortType = SortType.single;\n * // new\n * const sortType: SortType = 'single';\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const SortType = {\n single: 'single',\n multi: 'multi'\n} as const;\n\nexport type SortType = (typeof SortType)[keyof typeof SortType];\n\n/**\n * @deprecated The constant `ColumnMode` should no longer be used. Instead use the value directly:\n * ```\n * // old\n * <ngx-datatable [columnMode]=\"ColumnMode.force\"></ngx-datatable>\n * // new\n * <ngx-datatable [columnMode]=\"'force'\"></ngx-datatable>\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const ColumnMode = {\n standard: 'standard',\n flex: 'flex',\n force: 'force'\n} as const;\n\nexport type ColumnMode = (typeof ColumnMode)[keyof typeof ColumnMode];\n\nexport type TreeStatus = 'collapsed' | 'expanded' | 'loading' | 'disabled';\n\nexport interface ActivateEvent<TRow> {\n type: 'checkbox' | 'click' | 'dblclick' | 'keydown' | 'mouseenter';\n event: Event;\n row: TRow;\n group?: TRow[];\n rowHeight?: number;\n column?: TableColumn;\n value?: any;\n cellElement?: HTMLElement;\n treeStatus?: TreeStatus;\n cellIndex?: number;\n rowElement: HTMLElement;\n}\n\nexport interface HeaderCellContext {\n column: TableColumn;\n sortDir: SortDirection | 'asc' | 'desc' | undefined;\n sortFn: () => void;\n allRowsSelected?: boolean;\n selectFn: () => void;\n}\n\nexport interface GroupContext<TRow extends Row = any> {\n group: Group<TRow>;\n expanded: boolean;\n rowIndex: number;\n}\n\nexport interface CellContext<TRow extends Row = any> {\n onCheckboxChangeFn: (event: Event) => void;\n activateFn: (event: ActivateEvent<TRow>) => void;\n row: TRow;\n group?: TRow[];\n value: any;\n column: TableColumn;\n rowHeight: number;\n isSelected?: boolean;\n rowIndex: number;\n rowInGroupIndex?: number;\n treeStatus?: TreeStatus;\n disabled?: boolean;\n onTreeAction: () => void;\n expanded?: boolean;\n}\n\nexport interface FooterContext {\n rowCount: number;\n pageSize: number;\n selectedCount: number;\n curPage: number;\n offset: number;\n}\n\n/**\n * @deprecated The constant `ContextmenuType` should no longer be used. Instead use the value directly:\n * ```\n * // old\n * const contextmenuType: ContextmenuType = ContextmenuType.header;\n * // new\n * const contextmenuType: ContextmenuType = 'header';\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const ContextmenuType = {\n header: 'header',\n body: 'body'\n} as const;\n\nexport type ContextmenuType = (typeof ContextmenuType)[keyof typeof ContextmenuType];\n\n/** A Group row */\nexport interface Group<TRow> {\n /** The value by which to rows are grouped. */\n key: TRow[keyof TRow];\n /** All rows that are part of the group. */\n value: TRow[];\n}\n\n/** Type for either a row or a group */\nexport type RowOrGroup<TRow> = TRow | Group<TRow>;\n\nexport interface RowDetailContext<TRow extends Row = any> {\n row: TRow;\n expanded: boolean;\n rowIndex: number;\n disabled?: boolean;\n}\n\n/**\n * Consumer provided rows should extend this interface\n * to get access to implicit row properties which are set by the datatable if required.\n */\nexport interface Row {\n [key: TableColumnProp]: any;\n treeStatus?: TreeStatus;\n level?: number;\n}\n\nexport interface ReorderEvent {\n column: TableColumn;\n prevValue: number;\n newValue: number;\n}\n\nexport interface PageEvent {\n count: number;\n pageSize: number;\n /** @deprecated Use {@link pageSize} instead. */\n limit: number | undefined;\n offset: number;\n sorts: SortPropDir[];\n}\n\nexport interface PagerPageEvent {\n page: number;\n}\n\nexport interface ColumnResizeEvent {\n column: TableColumn;\n prevValue: number;\n newValue: number;\n}\n\nexport interface ScrollEvent {\n offsetY: number;\n offsetX: number;\n}\n\nexport interface GroupToggleEvent<TRow> {\n type: 'group';\n value: Group<TRow>;\n}\n\nexport interface AllGroupsToggleEvent {\n type: 'all';\n value: boolean;\n}\n\nexport type GroupToggleEvents<TRow> = GroupToggleEvent<TRow> | AllGroupsToggleEvent;\n\nexport interface DetailToggleEvent<TRow> {\n type: 'row';\n value: TRow;\n}\n\nexport interface AllDetailToggleEvent {\n type: 'all';\n value: boolean;\n}\n\nexport type DetailToggleEvents<TRow> = DetailToggleEvent<TRow> | AllDetailToggleEvent;\n\n/**\n * @deprecated The constant `SelectionType` should no longer be used. Instead use the value directly:\n * ```\n * // old\n * <ngx-datatable [selectionType]=\"SelectionType.multi\"></ngx-datatable>\n * // new\n * <ngx-datatable [selectionType]=\"'multi'\"></ngx-datatable>\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const SelectionType = {\n single: 'single',\n multi: 'multi',\n multiClick: 'multiClick',\n cell: 'cell',\n checkbox: 'checkbox'\n} as const;\n\nexport type SelectionType = (typeof SelectionType)[keyof typeof SelectionType];\n\n/** @deprecated. Use two-way binding instead. See {@link DatatableComponent.select} */\nexport interface SelectEvent<TRow> {\n selected: TRow[];\n}\n\nexport interface ContextMenuEventBody<TRow> {\n event: MouseEvent;\n type: 'body';\n content: RowOrGroup<TRow>;\n}\n\nexport interface ContextMenuEvenHeader {\n event: MouseEvent;\n type: 'header';\n content: TableColumn;\n}\n\nexport type ContextMenuEvent<TRow> = ContextMenuEventBody<TRow> | ContextMenuEvenHeader;\n\nexport interface ScrollToRowOptions {\n behavior?: ScrollBehavior;\n block?: ScrollLogicalPosition;\n}\n\nexport type DragEventType =\n | 'drag'\n | 'dragend'\n | 'dragenter'\n | 'dragleave'\n | 'dragover'\n | 'dragstart'\n | 'drop';\n\nexport interface DragEventData {\n event: DragEvent;\n srcElement: HTMLElement;\n targetElement?: HTMLElement;\n eventType: DragEventType;\n dragRow: any;\n dropRow?: any;\n}\n","/*\n * Public API Surface of ngx-datatable\n */\n\n// components\nexport * from './lib/ngx-datatable.module';\nexport * from './lib/components/datatable.component';\nexport * from './lib/components/body/body-group-header.directive';\nexport * from './lib/components/body/body-group-header-template.directive';\nexport * from './lib/components/footer/footer.directive';\nexport * from './lib/components/footer/footer-template.directive';\nexport * from './lib/components/footer/pager.component';\nexport * from './lib/components/columns/column.directive';\nexport * from './lib/components/columns/column-header.directive';\nexport * from './lib/components/columns/column-cell.directive';\nexport * from './lib/components/columns/column-ghost-cell.directive';\nexport * from './lib/components/columns/tree.directive';\nexport * from './lib/components/row-detail/row-detail.directive';\nexport * from './lib/components/row-detail/row-detail-template.directive';\nexport * from './lib/components/body/body-row-def.component';\n\n// directives\nexport * from './lib/directives/disable-row.directive';\n\n// types\nexport * from './lib/types/public.types';\nexport * from './lib/types/table-column.type';\n\n// utilis\nexport * from './lib/utils/column-helper';\n\nexport {\n providedNgxDatatableConfig,\n NgxDatatableConfig,\n NgxDatatableMessages,\n NgxDatatableCssClasses\n} from './lib/ngx-datatable.config';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAOa,qCAAqC,CAAA;AAChD,IAAA,OAAO,sBAAsB,CAC3B,SAAgD,EAChD,OAAgB,EAAA;AAEhB,QAAA,OAAO,IAAI;;8GALF,qCAAqC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArC,qCAAqC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArC,qCAAqC,EAAA,UAAA,EAAA,CAAA;kBAHjD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;MCEY,6BAA6B,CAAA;AAH1C,IAAA,WAAA,GAAA;AAIE;;AAEG;AACM,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAA6D,CAAC,gFAAC;AAEzF;;AAEG;AACM,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,KAAK,mFAAC;QAE3B,IAAc,CAAA,cAAA,GAAG,KAAK,CAAkC,SAAS,sFACxE,KAAK,EAAE,UAAU,EAAA,CACjB;QAEO,IAAc,CAAA,cAAA,GAAG,YAAY,CAAC,qCAAqC,sFAC1E,IAAI,EAAE,WAAW,EAAA,CACjB;AAEO,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,+EAAC;AAE1F;;AAEG;QACM,IAAM,CAAA,MAAA,GAAG,MAAM,EAA2B;AA+BpD;AA7BC;;AAEG;AACH,IAAA,iBAAiB,CAAC,KAAkB,EAAA;AAClC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,KAAK,EAAE;AACR,SAAA,CAAC;;AAGJ;;AAEG;IACH,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,KAAK,EAAE;AACR,SAAA,CAAC;;AAGJ;;AAEG;IACH,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,KAAK,EAAE;AACR,SAAA,CAAC;;8GArDO,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,4BAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAeD,qCAAqC,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACpE,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAhBR,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAHzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;AAgBwC,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,qCAAqC,CAAE,EAAA,EAAA,GAAA;AAC5E,4BAAA,IAAI,EAAE;AACP,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ACVH;;;;AAIG;MAWU,wBAAwB,CAAA;AAVrC,IAAA,WAAA,GAAA;AAWE,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AAC9B,QAAA,IAAA,CAAA,UAAU,GAAG;AACX,YAAA,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;AAC/B,YAAA,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,sBAAsB;SAC7C;AACF;8GANY,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAPzB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;AAKR,GAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EANQ,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAQf,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAVpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;oBAC7B,OAAO,EAAE,CAAC,gBAAgB,CAAC;AAC3B,oBAAA,QAAQ,EAAE,CAAA;;;;;AAKR,GAAA;AACH,iBAAA;;MAYY,wBAAwB,CAAA;AACnC,IAAA,OAAO,sBAAsB,CAC3B,IAA8B,EAC9B,GAAY,EAAA;AAEZ,QAAA,OAAO,IAAI;;8GALF,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;AAUD;;AAEG;MAIU,gCAAgC,CAAA;AAH7C,IAAA,WAAA,GAAA;AAIE,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEpB,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAC,QAAQ,oFAAiB;QAChD,IAAsB,CAAA,sBAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;AAoBnD;IAlBC,QAAQ,GAAA;QACN,IAAI,CAAC,EAAE,CAAC,kBAAkB,CACxB,IAAI,CAAC,cAAc,EAAE,CAAC,QAAQ,EAC9B;YACE,GAAG,IAAI,CAAC,cAAc;SACvB,EACD;AACE,YAAA,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC;AACxB,gBAAA,SAAS,EAAE;AACT,oBAAA;AACE,wBAAA,OAAO,EAAE,aAAa;AACtB,wBAAA,QAAQ,EAAE;AACX;AACF;aACF;AACF,SAAA,CACF;;8GAtBQ,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhC,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAhC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAH5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;AA0BD,MAAM,aAAa,GAAG,IAAI,cAAc,CAAmC,QAAQ,CAAC;;MC1EvE,4BAA4B,CAAA;AAHzC,IAAA,WAAA,GAAA;AAIE,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAA2B,WAAW,CAAC;AAKzD;AAHC,IAAA,OAAO,sBAAsB,CAAC,GAAiC,EAAE,GAAQ,EAAA;AACvE,QAAA,OAAO,IAAI;;8GAJF,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAHxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;MCDY,iCAAiC,CAAA;AAC5C,IAAA,OAAO,sBAAsB,CAC3B,SAA4C,EAC5C,OAAgB,EAAA;AAEhB,QAAA,OAAO,IAAI;;8GALF,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjC,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAH7C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;MCGY,8BAA8B,CAAA;AACzC,IAAA,OAAO,sBAAsB,CAC3B,SAAyC,EACzC,OAAgB,EAAA;AAEhB,QAAA,OAAO,IAAI;;8GALF,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAH1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;MCDY,6BAA6B,CAAA;AAH1C,IAAA,WAAA,GAAA;AAIE,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAmB,WAAW,CAAC;AACjD;8GAFY,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,6BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAHzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;MCkBY,wBAAwB,CAAA;AAHrC,IAAA,WAAA,GAAA;QAIW,IAAI,CAAA,IAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;QACtB,IAAI,CAAA,IAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAmB;QAC/B,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC,KAAK,wFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAChE,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC,KAAK,kFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAC1D,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC,KAAK,mFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAC3D,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAsC,SAAS,gFACtE,SAAS,EAAE,eAAe,EAAA,CAC1B;QACO,IAAU,CAAA,UAAA,GAAG,KAAK,CAAwC,SAAS,kFAC1E,SAAS,EAAE,gBAAgB,EAAA,CAC3B;QACO,IAAU,CAAA,UAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAExB;QACM,IAAI,CAAA,IAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAA6B;QACzC,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAwC,SAAS,gFACxE,SAAS,EAAE,gBAAgB,EAAA,CAC3B;QACO,IAAS,CAAA,SAAA,GAAG,KAAK,CAAwC,SAAS,iFACzE,SAAS,EAAE,gBAAgB,EAAA,CAC3B;QACO,IAAa,CAAA,aAAA,GAAG,KAAK,CAAwC,SAAS,qFAC7E,SAAS,EAAE,gBAAgB,EAAA,CAC3B;QACO,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAsC,SAAS,gFACtE,SAAS,EAAE,eAAe,EAAA,CAC1B;QACO,IAAK,CAAA,KAAA,GAAG,KAAK,CAAsC,SAAS,6EACnE,SAAS,EAAE,eAAe,EAAA,CAC1B;QACO,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAsC,SAAS,gFACtE,SAAS,EAAE,eAAe,EAAA,CAC1B;QACO,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC,KAAK,oFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAC5D,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC,KAAK,0FAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAClE,IAAW,CAAA,WAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAEzB;QACM,IAAS,CAAA,SAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAUvB;QACM,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC,KAAK,oFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAC5D,IAAe,CAAA,eAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAsB;QAC7C,IAAW,CAAA,WAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAuC;QAC1D,IAAe,CAAA,eAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAgC;QAEvD,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAA6C,SAAS,yFACtF,KAAK,EAAE,cAAc,EAAA,CACrB;QACO,IAAiB,CAAA,iBAAA,GAAG,YAAY,CAAC,4BAA4B,yFAAI,IAAI,EAAE,WAAW,EAAA,CAAG;QAErF,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAA6C,SAAS,2FACxF,KAAK,EAAE,gBAAgB,EAAA,CACvB;QACO,IAAmB,CAAA,mBAAA,GAAG,YAAY,CAAC,8BAA8B,2FACxE,IAAI,EAAE,WAAW,EAAA,CACjB;QAEO,IAAuB,CAAA,uBAAA,GAAG,KAAK,CAA+B,SAAS,+FAC9E,KAAK,EAAE,oBAAoB,EAAA,CAC3B;QACO,IAAuB,CAAA,uBAAA,GAAG,YAAY,CAAC,6BAA6B,+FAC3E,IAAI,EAAE,WAAW,EAAA,CACjB;QAEO,IAAsB,CAAA,sBAAA,GAAG,KAAK,CAAgC,SAAS,8FAC9E,KAAK,EAAE,mBAAmB,EAAA,CAC1B;QACO,IAAsB,CAAA,sBAAA,GAAG,YAAY,CAAC,iCAAiC,8FAC9E,IAAI,EAAE,WAAW,EAAA,CACjB;AAEF;;AAEG;AACM,QAAA,IAAA,CAAA,MAAM,GAA8B,QAAQ,CAAC,OAAO;AAC3D,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE;AACzC,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,YAAA,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE;AACnC,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;AACjC,YAAA,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE;AAC7C,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,YAAA,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;AACjC,YAAA,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE;AACvC,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE;YACvC,YAAY,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAClE,cAAc,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,mBAAmB,EAAE;YACxE,kBAAkB,EAAE,IAAI,CAAC,uBAAuB,EAAE,IAAI,IAAI,CAAC,uBAAuB,EAAE;YACpF,iBAAiB,EAAE,IAAI,CAAC,sBAAsB,EAAE,IAAI,IAAI,CAAC,sBAAsB;AAChF,SAAA,CAAC,6EAAC;AACJ;8GAjHY,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EA0DO,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,4BAA4B,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,mFAK/C,8BAA8B,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAClE,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAM6B,6BAA6B,EACrE,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,EAM4B,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,iCAAiC,2BACxE,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FA9ER,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;i9EA2D2C,4BAA4B,CAAA,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAKjD,8BAA8B,CAAE,EAAA,EAAA,GAAA;AAC1E,4BAAA,IAAI,EAAE;AACP,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAK+C,6BAA6B,CAAE,EAAA,EAAA,GAAA;AAC7E,4BAAA,IAAI,EAAE;AACP,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAK8C,iCAAiC,CAAE,EAAA,EAAA,GAAA;AAChF,4BAAA,IAAI,EAAE;AACP,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AC1FH;;;;;;;;;;AAUG;MAOU,mBAAmB,CAAA;AANhC,IAAA,WAAA,GAAA;AAOU,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;AAC5B,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;AAEpB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,KAAK,gFAAC;QAEzB,IAAO,CAAA,OAAA,GAAG,MAAM,EAAW;AAsCrC;IAlCC,QAAQ,GAAA;QACN,IAAI,CAAC,QAAQ,EAAE;;IAGjB,WAAW,GAAA;AACT,QAAA,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;;IAG5B,kBAAkB,GAAA;;AAEhB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK;AACjB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AACzB,SAAC,CAAC;;IAGJ,QAAQ,GAAA;QACN,MAAM,KAAK,GAAG,MAAW;;YAEvB,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;AAEhE,YAAA,IAAI,YAAY,IAAI,WAAW,EAAE;AAC/B,gBAAA,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;gBAC1B,IAAI,CAAC,kBAAkB,EAAE;;iBACpB;AACL,gBAAA,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;AAC1B,gBAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;AAC/B,oBAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,EAAE,EAAE,EAAE,CAAC;AACrD,iBAAC,CAAC;;AAEN,SAAC;AAED,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,EAAE,CAAC;;8GA1CtC,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,aAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,IAAI,EAAE;AACJ,wBAAA,iBAAiB,EAAE;AACpB;AACF,iBAAA;;;AC+BM,MAAM,oBAAoB,GAAG,IAAI,cAAc,CAAqB,sBAAsB,CAAC;AAgBlG;;;;AAIG;AACU,MAAA,0BAA0B,GAAG,CAAC,SAAyC,KAAc;IAChG,OAAO;AACL,QAAA,OAAO,EAAE,oBAAoB;AAC7B,QAAA,QAAQ,EAAE;KACX;AACH;;AClFA;;;AAGG;MAEU,eAAe,CAAA;AAD5B,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAEnC,QAAA,IAAA,CAAA,KAAK,GAAW,IAAI,CAAC,QAAQ,EAAE;AAoBhC;IAlBC,QAAQ,GAAA;QACN,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAChD,QAAA,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;AACjC,QAAA,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO;QAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAErC,QAAA,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW;AACvC,QAAA,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ;QAE/B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAChD,QAAA,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM;AAC1B,QAAA,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC;AAExB,QAAA,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW;QACzC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAErC,OAAO,aAAa,GAAG,eAAe;;8GArB7B,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cADF,MAAM,EAAA,CAAA,CAAA;;2FACnB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACNlC;;;AAGG;AACI,MAAM,SAAS,GAAG,CAAC,GAAW,KAAY;;IAE/C,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;;IAExC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,mBAAmB,EAAE,KAAK,CAAC;;AAG7C,IAAA,GAAG,GAAG;AACH,SAAA,OAAO,CAAC,0BAA0B,EAAE,EAAE;AACtC,SAAA,IAAI;AACJ,SAAA,WAAW,EAAE;;AAGhB,IAAA,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAI;QACpD,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE;AACnC,KAAC,CAAC;AAEF,IAAA,OAAO,GAAG;AACZ,CAAC;AAED;;;AAGG;AACI,MAAM,WAAW,GAAG,CAAC,GAAW,KAAY;AACjD,IAAA,OAAO,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,IAAI,CAAI,CAAA,EAAA,KAAK,CAAE,CAAA,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;AAClG,CAAC;;ACxBD;;AAEG;AACI,MAAM,iBAAiB,GAAG,MAAa;AAC5C,IAAA,OAAO,EAAE;AACX,CAAC;AAED;;;AAGG;AACI,MAAM,aAAa,GAAG,CAAC,IAAiC,KAAiB;;AAE9E,IAAA,IAAI,IAAI,IAAI,IAAI,EAAE;AAChB,QAAA,OAAO,iBAAiB;;AAG1B,IAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5B,QAAA,OAAO,kBAAiC;;SACnC;;AAEL,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACtB,YAAA,OAAO,eAA8B;;aAChC;AACL,YAAA,OAAO,kBAAiC;;;AAG9C,CAAC;AAED;;;;;AAKG;AACI,MAAM,kBAAkB,GAAG,CAAC,GAAU,EAAE,KAAa,KAAS;AACnE,IAAA,IAAI,GAAG,IAAI,IAAI,EAAE;AACf,QAAA,OAAO,EAAE;;;AAGX,IAAA,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,IAAI,EAAE;AACzB,QAAA,OAAO,GAAG;;AAGZ,IAAA,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;AACxB,IAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,QAAA,OAAO,EAAE;;AAEX,IAAA,OAAO,KAAK;AACd,CAAC;AAED;;;;;AAKG;AACI,MAAM,kBAAkB,GAAG,CAAC,GAAQ,EAAE,SAAiB,KAAS;AACrE,IAAA,IAAI,GAAG,IAAI,IAAI,EAAE;AACf,QAAA,OAAO,EAAE;;AAEX,IAAA,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE;AACtB,QAAA,OAAO,GAAG;;AAGZ,IAAA,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC;AAC5B,IAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,QAAA,OAAO,EAAE;;AAEX,IAAA,OAAO,KAAK;AACd,CAAC;AAED;;AAEG;AACI,MAAM,eAAe,GAAG,CAAC,GAAQ,EAAE,IAAY,KAAS;AAC7D,IAAA,IAAI,GAAG,IAAI,IAAI,EAAE;AACf,QAAA,OAAO,EAAE;;AAEX,IAAA,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE;AACjB,QAAA,OAAO,GAAG;;;;AAKZ,IAAA,IAAI,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC;AACvB,IAAA,IAAI,OAAO,KAAK,SAAS,EAAE;AACzB,QAAA,OAAO,OAAO;;IAGhB,OAAO,GAAG,GAAG;IACb,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAE7B,IAAA,IAAI,KAAK,CAAC,MAAM,EAAE;AAChB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;YAG3B,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE;AAC7C,gBAAA,OAAO,EAAE;;;;AAKf,IAAA,OAAO,OAAO;AAChB,CAAC;;AC/GD;;;AAGG;AACI,MAAM,EAAE,GAAG,MAAK;AACrB,IAAA,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACnF,CAAC;;ACDD;;AAEG;AACI,MAAM,WAAW,GAAG,CACzB,QAAkB,EAClB,OAAmD,KACtB;AAC7B,IAAA,IAAI,QAAQ,KAAK,QAAQ,EAAE;AACzB,QAAA,IAAI,OAAO,KAAK,KAAK,EAAE;AACrB,YAAA,OAAO,MAAM;;aACR;AACL,YAAA,OAAO,KAAK;;;SAET;QACL,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,OAAO,KAAK;;AACP,aAAA,IAAI,OAAO,KAAK,KAAK,EAAE;AAC5B,YAAA,OAAO,MAAM;;AACR,aAAA,IAAI,OAAO,KAAK,MAAM,EAAE;AAC7B,YAAA,OAAO,SAAS;;;AAGlB,QAAA,OAAO,SAAS;;AAEpB,CAAC;AAED;;;AAGG;AACI,MAAM,iBAAiB,GAAG,CAAC,CAAM,EAAE,CAAM,KAAY;IAC1D,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,WAAW,EAAE;QAC1C,CAAC,GAAG,CAAC;;IAEP,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,WAAW,EAAE;QAC1C,CAAC,GAAG,CAAC;;IAEP,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE;AAC1C,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE;YACT,OAAO,CAAC,CAAC;;AAEX,QAAA,IAAI,CAAC,GAAG,CAAC,EAAE;AACT,YAAA,OAAO,CAAC;;;AAEL,SAAA,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;;AAEvF,QAAA,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AACb,QAAA,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;;QAEb,IAAI,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;YACrC,OAAO,CAAC,CAAC;;QAEX,IAAI,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;AACrC,YAAA,OAAO,CAAC;;;SAEL;;QAEL,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE;YACjC,OAAO,CAAC,CAAC;;QAEX,IAAI,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE;AACjC,YAAA,OAAO,CAAC;;;;AAKZ,IAAA,OAAO,CAAC;AACV,CAAC;AAED;;;AAGG;AACI,MAAM,QAAQ,GAAG,CACtB,IAAY,EACZ,OAA8B,EAC9B,IAAmB,EACnB,iBAA+B,KACrB;IACV,IAAI,CAAC,IAAI,EAAE;AACT,QAAA,OAAO,EAAE;;IAEX,IAAI,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE;AAC7B,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC;;AAGlB,IAAA,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;IACtB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CACzB,CAAC,GAAG,EAAE,GAAG,KAAI;AACX,QAAA,IAAI,GAAG,CAAC,QAAQ,EAAE;YAChB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU;;AAEhC,QAAA,OAAO,GAAG;KACX,EACD,EAAoF,CACrF;;;IAID,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAG;;AAEhC,QAAA,MAAM,IAAI,GAAG,iBAAiB,EAAE,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,KAAK,GAAG,GAAG,CAAC,IAAI;;AAEpE,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC;QAC7C,OAAO;YACL,IAAI;YACJ,GAAG,EAAE,GAAG,CAAC,GAAG;AACZ,YAAA,WAAW,EAAE,aAAa,CAAC,IAAI,CAAC;YAChC;SACD;AACH,KAAC,CAAC;IAEF,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,IAAU,EAAE,IAAU,KAAI;AAC1C,QAAA,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;;AAElC,YAAA,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,SAAS;;YAEvC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC;YACrC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC;;;;;;;;AASrC,YAAA,MAAM,UAAU,GACd,SAAS,CAAC,GAAG,KAAK;AAChB,kBAAE,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI;AAC9C,kBAAE,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;;AAGpD,YAAA,IAAI,UAAU,KAAK,CAAC,EAAE;AACpB,gBAAA,OAAO,UAAU;;;AAIrB,QAAA,OAAO,CAAC;AACV,KAAC,CAAC;AACJ,CAAC;AAEM,MAAM,eAAe,GAAG,CAC7B,WAA0B,EAC1B,OAA8B,EAC9B,IAAmB,EACnB,iBAA0C,KACzB;IACjB,IAAI,iBAAiB,EAAE;QACrB,WAAW,GAAG,QAAQ,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,CAAC;;AAEvE,IAAA,OAAO,WAAW,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AAC9F,CAAC;;ACnJY,MAAA,gBAAgB,GAAG,CAC9B,OAAyB,EACzB,kBAAkB,GAAG,GAAG,KACI;IAC5B,IAAI,aAAa,GAAG,KAAK;;AAEzB,IAAA,OAAQ,OAA4B,CAAC,GAAG,CAAC,MAAM,IAAG;QAChD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;;;;QAI9E,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,aAAa;AAC5D,QAAA,aAAa,GAAG,aAAa,IAAI,YAAY;;QAG7C,OAAO;AACL,YAAA,GAAG,MAAM;YACT,IAAI,EAAE,EAAE,EAAE;AACV,YAAA,gBAAgB,EAAE,MAAM;AACxB,YAAA,aAAa,EAAE,aAAa,CAAC,IAAI,CAAC;YAClC,IAAI;YACJ,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;AAC5D,YAAA,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI;AACrC,YAAA,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;AACjC,YAAA,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,iBAAiB;AAClD,YAAA,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI;AACnC,YAAA,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,IAAI;YAC3C,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,kBAAkB,CAAC;YACjD,YAAY;;YAEZ,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,kBAAkB,EAAE,MAAM,CAAC;AACL,SAAA,CAAC;AAC3B,KAAC,CAAC;AACJ;AAEa,MAAA,cAAc,GAAG,CAAC,MAA2B,KAAiB;IACzE,OAAO;QACL,GAAG,MAAM,CAAC,gBAAgB;QAC1B,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;AACzB,QAAA,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE;QACrB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;QAC7C,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;QAC7C,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,eAAe,EAAE,MAAM,CAAC;KACzB;AACH;;ACzEA;;AAEG;AACI,MAAM,YAAY,GAAG,CAAC,IAA2B,KAAI;AAC1D,IAAA,MAAM,GAAG,GAAqB;AAC5B,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,KAAK,EAAE;KACR;IAED,IAAI,IAAI,EAAE;AACR,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;AACtB,YAAA,IAAI,GAAG,CAAC,UAAU,EAAE;AAClB,gBAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;;AACb,iBAAA,IAAI,GAAG,CAAC,WAAW,EAAE;AAC1B,gBAAA,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;;iBACd;AACL,gBAAA,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;;;;AAK1B,IAAA,OAAO,GAAG;AACZ,CAAC;AAED;;AAEG;AACI,MAAM,iBAAiB,GAAG,CAC/B,MAAwB,EACxB,GAA0B,KACN;IACpB,OAAO;AACL,QAAA,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC;AACnC,QAAA,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC;AACvC,QAAA,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC;QACrC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC;KACxC;AACH,CAAC;AAED;;AAEG;AACI,MAAM,gBAAgB,GAAG,CAAC,OAA+B,KAAI;IAClE,OAAO,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;AAC3E,CAAC;AAEM,MAAM,eAAe,GAAG,CAAC,GAA0B,KAAqB;AAC7E,IAAA,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC;IACnC,OAAO;QACL,EAAE,IAAI,EAAE,MAAe,EAAE,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE;QAClD,EAAE,IAAI,EAAE,QAAiB,EAAE,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE;QACtD,EAAE,IAAI,EAAE,OAAgB,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK;KACnD;AACH,CAAC;;ACzDD;;AAEG;AACI,MAAM,gBAAgB,GAAG,CAAC,OAA8B,KAAI;IACjE,IAAI,aAAa,GAAG,CAAC;AAErB,IAAA,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;AACvB,QAAA,aAAa,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC;;AAGlC,IAAA,OAAO,aAAa;AACtB,CAAC;AAED;;;AAGG;AACI,MAAM,kBAAkB,GAAG,CAAC,UAAiC,EAAE,aAAqB,KAAI;AAC7F,IAAA,MAAM,YAAY,GAAG,gBAAgB,CAAC,UAAU,CAAC;AACjD,IAAA,MAAM,aAAa,GAAG,gBAAgB,CAAC,UAAU,CAAC;AAClD,IAAA,MAAM,WAAW,GAAG,YAAY,CAAC,UAAU,CAAC;AAE5C,IAAA,IAAI,YAAY,KAAK,aAAa,EAAE;AAClC,QAAA,YAAY,CAAC,WAAW,EAAE,aAAa,EAAE,aAAa,CAAC;;AAE3D,CAAC;AAED;;AAEG;AACH,MAAM,YAAY,GAAG,CAAC,WAA6B,EAAE,QAAgB,EAAE,aAAqB,KAAI;IAC9F,MAAM,OAAO,GAA0B,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE;IACxE,IAAI,cAAc,GAAG,QAAQ;;AAG7B,IAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC5B,QAAA,IAAI,MAAM,CAAC,UAAU,EAAE;;AAErB,YAAA,MAAM,CAAC,aAAa,GAAG,KAAK;;AAE9B,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;AACzB,YAAA,cAAc,IAAI,MAAM,CAAC,KAAK,EAAE;AAChC,YAAA,aAAa,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC;;aAChC;AACL,YAAA,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;;;IAIvB,MAAM,WAAW,GAAqC,EAAE;;AAGxD,IAAA,GAAG;AACD,QAAA,MAAM,iBAAiB,GAAG,cAAc,GAAG,aAAa;QACxD,cAAc,GAAG,CAAC;AAElB,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;;AAE5B,YAAA,IAAI,MAAM,CAAC,aAAa,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACrD,gBAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,IAAI,iBAAiB;AAC5E,gBAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE;AAC/D,oBAAA,cAAc,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ;oBAC5C,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;AACjC,oBAAA,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI;;qBAC1B;AACL,oBAAA,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;;;;AAIlC,KAAC,QAAQ,cAAc,KAAK,CAAC;;IAG7B,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC7E,IAAA,MAAM,KAAK,GAAG,QAAQ,GAAG,kBAAkB;AAE3C,IAAA,IAAI,KAAK,KAAK,CAAC,EAAE;QACf;;;AAIF,IAAA,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE;QAC5F,IACE,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC;aACnE,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,EACrE;AACA,YAAA,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC;YACxC;;;AAGN,CAAC;AAED;;;;;;;;;;;;;;;;;;AAkBG;AACI,MAAM,qBAAqB,GAAG,CACnC,UAAiC,EACjC,aAAqB,EACrB,QAAgB,EAChB,UAAmB,EACnB,kBAA0B,GAAG,EAC7B,mBAAmB,GAAG,CAAC,KACrB;IACF,MAAM,eAAe,GAAG;SACrB,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,UAAU,CAAC,MAAM;SACrC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,KAAK,KAAK,CAAC;AAEzC,IAAA,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE;AACpC,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AACtB,YAAA,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,KAAK,EAAE;;;IAItC,IAAI,sBAAsB,GAAG,CAAC;IAC9B,IAAI,aAAa,GAAG,KAAK;IACzB,IAAI,YAAY,GAAG,eAAe,CAAC,UAAU,EAAE,eAAe,CAAC;AAC/D,IAAA,IAAI,cAAc,GAAG,aAAa,GAAG,YAAY;IACjD,MAAM,qBAAqB,GAAG,cAAc;IAC5C,MAAM,gBAAgB,GAAU,EAAE;AAClC,IAAA,MAAM,mBAAmB,GAAG,CAAC,CAAC;;AAG9B,IAAA,GAAG;AACD,QAAA,sBAAsB,GAAG,cAAc,GAAG,eAAe,CAAC,MAAM;AAChE,QAAA,aAAa,GAAG,YAAY,IAAI,aAAa;AAE7C,QAAA,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE;;YAEpC,IAAI,aAAa,IAAI,UAAU,IAAI,qBAAqB,KAAK,CAAC,CAAC,GAAG,mBAAmB,EAAE;AACrF,gBAAA,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,IAAI,eAAe,CAAC;;iBACjD;AACL,gBAAA,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,eAAe,IAAI,sBAAsB;gBAE5E,IAAI,MAAM,CAAC,QAAQ,IAAI,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE;oBAChD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;AACjC,oBAAA,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;;qBACxB,IAAI,MAAM,CAAC,QAAQ,IAAI,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE;oBACvD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;AACjC,oBAAA,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;;qBACxB;AACL,oBAAA,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;;;AAI7B,YAAA,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;;AAGlD,QAAA,YAAY,GAAG,eAAe,CAAC,UAAU,EAAE,eAAe,CAAC;AAC3D,QAAA,cAAc,GAAG,aAAa,GAAG,YAAY;AAC7C,QAAA,sBAAsB,CAAC,eAAe,EAAE,gBAAgB,CAAC;KAC1D,QAAQ,cAAc,GAAG,mBAAmB,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;;AAG7E,IAAA,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE;AACpC,QAAA,MAAM,CAAC,UAAU,GAAG,CAAC;;AAEzB,CAAC;AAED;;AAEG;AACH,MAAM,sBAAsB,GAAG,CAC7B,eAAsC,EACtC,gBAAuC,KACrC;AACF,IAAA,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE;QACrC,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC;AAC7C,QAAA,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;;AAEpC,CAAC;AAED;;AAEG;AACH,MAAM,eAAe,GAAG,CAAC,UAAiC,EAAE,eAAe,GAAG,GAAG,KAAY;IAC3F,IAAI,YAAY,GAAG,CAAC;AAEpB,IAAA,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE;AAC/B,QAAA,YAAY,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,eAAe;;AAGnD,IAAA,OAAO,YAAY;AACrB,CAAC;;ACtMD;;;;AAIG;AACH;AACM,SAAU,0BAA0B,CAAC,KAA0B,EAAA;AACnE,IAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,QAAA,OAAO,SAAS;;AAGlB,IAAA,OAAO,eAAe,CAAC,KAAK,CAAC;AAC/B;;ACVA;;;AAGG;AACI,MAAM,yBAAyB,GAAG,IAAI,cAAc,CACzD,yBAAyB,CAC1B;;ACVD;;AAEG;AACI,MAAM,QAAQ,GAAG,CAAC,IAAS,EAAE,IAAY,EAAE,OAAa,KAAI;IACjE,OAAO,KAAK,EAAE;AACd,IAAA,IAAI,IAAS;AACb,IAAA,IAAI,MAAW;IACf,IAAI,OAAO,GAAQ,IAAI;IACvB,IAAI,QAAQ,GAAG,CAAC;IAEhB,MAAM,KAAK,GAAG,MAAK;AACjB,QAAA,QAAQ,GAAG,OAAO,CAAC,OAAO,KAAK,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;QACtD,OAAO,GAAG,IAAI;AACd,QAAA,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;AACxB,KAAC;AAED,IAAA,OAAO,CAAC,GAAG,OAAc,KAAI;AAC3B,QAAA,MAAM,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE;QAEvB,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE;YAC1C,QAAQ,GAAG,GAAG;;QAGhB,MAAM,SAAS,GAAG,IAAI,IAAI,GAAG,GAAG,QAAQ,CAAC;QACzC,IAAI,GAAG,OAAO;AAEd,QAAA,IAAI,SAAS,IAAI,CAAC,EAAE;YAClB,YAAY,CAAC,OAAO,CAAC;YACrB,OAAO,GAAG,IAAI;YACd,QAAQ,GAAG,GAAG;AACd,YAAA,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;;aACjB,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE;AACjD,YAAA,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC;;AAGxC,QAAA,OAAO,MAAM;AACf,KAAC;AACH,CAAC;AAED;;;;;;;AAOG;AACI,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAE,OAAa,KAAI;AAC9D,IAAA,OAAO,CAAC,MAAW,EAAE,GAAgB,EAAE,UAA8B,KAAI;QACvE,OAAO;AACL,YAAA,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,UAAU,CAAC,UAAU;AACjC,YAAA,GAAG,EAAE,YAAA;AACH,gBAAA,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE;AAC/B,oBAAA,YAAY,EAAE,IAAI;oBAClB,UAAU,EAAE,UAAU,CAAC,UAAU;AACjC,oBAAA,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO;AAC/D,iBAAA,CAAC;AAEF,gBAAA,OAAQ,IAAY,CAAC,GAAG,CAAC;;SAE5B;AACH,KAAC;AACH,CAAC;;AC1DM,MAAM,qBAAqB,GAAG,CAAC,IAAiC,KAAyB;IAC9F,OAAO,IAAI,GAAG,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,SAAS;AACjE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCG;AACI,MAAM,kBAAkB,GAAG,CAChC,IAA0B,EAC1B,IAA0B,EAC1B,EAAwB,KACA;AACxB,IAAA,IAAI,IAAI,IAAI,EAAE,EAAE;QACd,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;QACxE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAEnE,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,KAAI;YAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YAChC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;YACrC,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAM,GAAG,CAAC,CAAC;AACvC,gBAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,gBAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;;iBACrB;AACL,gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC;AAClB,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;AAEjB,YAAA,OAAO,IAAI;SACZ,EAAE,EAAsB,CAAC;AAE1B,QAAA,OAAO,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;;SAC7C;AACL,QAAA,OAAO,IAAI;;AAEf,CAAC;AAED,MAAM,QAAQ,CAAA;AAKZ,IAAA,WAAA,CAAY,GAAS,EAAA;AACnB,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG;AACd,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;;IAGpB,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,KAAK,UAAU,EAAE;YACtC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;;aAChE;AACL,YAAA,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;;;AAGtB;AAEM,MAAM,WAAW,GAAG,CACzB,SAAe,EACf,IAA0B,EAC1B,IAA0B,EAC1B,EAAwB,KACtB;AACF,IAAA,IAAI,IAAI,IAAI,EAAE,EAAE;AACd,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAChF,QAAA,MAAM,aAAa,GAAG,IAAI,GAAG,EAAW;QACxC,IAAI,UAAU,GAAqB,SAAS;QAE5C,OAAO,UAAU,EAAE;AACjB,YAAA,MAAM,YAAY,GAAG,EAAE,CAAC,UAAU,CAAC;AACnC,YAAA,IAAI,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;;gBAEnC;;AAEF,YAAA,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC;AAE/B,YAAA,IAAI,UAAU,CAAC,UAAU,KAAK,WAAW,EAAE;AACzC,gBAAA,UAAU,CAAC,UAAU,GAAG,UAAU;;YAEpC,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;;AAGhD,CAAC;;ACtHM,MAAM,QAAQ,GAAG,SAAS;AAC1B,MAAM,UAAU,GAAG,WAAW;AAC9B,MAAM,KAAK,GAAG,OAAO;AACrB,MAAM,MAAM,GAAG,QAAQ;AACvB,MAAM,UAAU,GAAG,WAAW;AAC9B,MAAM,WAAW,GAAG,YAAY;;ACLvC;;;;;;;;AAQG;MACU,cAAc,CAAA;AAA3B,IAAA,WAAA,GAAA;AACE;;;;AAIG;QACK,IAAS,CAAA,SAAA,GAAa,EAAE;;AAEhC;;AAEG;IACH,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;;AAGrB;;AAEG;AACH,IAAA,SAAS,CAAC,OAQT,EAAA;AACC,QAAA,MAAM,EACJ,IAAI,EACJ,SAAS,EACT,eAAe,EACf,eAAe,EACf,WAAW,EACX,QAAQ,EACR,aAAa,EACd,GAAG,OAAO;AACX,QAAA,MAAM,IAAI,GAAG,OAAO,SAAS,KAAK,UAAU;AAC5C,QAAA,MAAM,UAAU,GAAG,OAAO,eAAe,KAAK,UAAU;AAExD,QAAA,IAAI,SAAS,KAAK,MAAM,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE;YACvD,MAAM,IAAI,KAAK,CAAC,CAAA;2CACqB,SAAS,CAAA,+BAAA,CAAiC,CAAC;;;QAIlF,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,eAAe,CAAC,EAAE;YACzC,MAAM,IAAI,KAAK,CAAC,CAAA;2CACqB,eAAe,CAAA,+BAAA,CAAiC,CAAC;;AAGxF,QAAA,MAAM,CAAC,GAAG,eAAe,GAAG,QAAQ,GAAG,IAAI,CAAC,MAAM;QAClD,IAAI,CAAC,SAAS,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC;AAE7B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;;AAGvB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;AAC1B,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;AACnB,YAAA,IAAI,gBAAgB,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS;;;YAIxD,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;AACvC,YAAA,IAAI,GAAG,IAAI,QAAQ,EAAE;AACnB,gBAAA,gBAAgB,IAAI,UAAU,GAAG,eAAe,CAAC,GAAG,EAAE,WAAW,GAAG,CAAC,CAAC,GAAG,eAAe;;AAG1F,YAAA,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,gBAAgB,CAAC;;;AAIpC;;;AAGG;AACH,IAAA,WAAW,CAAC,OAAe,EAAA;AACzB,QAAA,IAAI,OAAO,KAAK,CAAC,EAAE;AACjB,YAAA,OAAO,CAAC;;AAEV,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;;AAGnC;;;AAGG;IACH,MAAM,CAAC,UAAkB,EAAE,WAAmB,EAAA;AAC5C,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AAC1B,YAAA,MAAM,IAAI,KAAK,CAAC,CAAmB,gBAAA,EAAA,UAAU,eAAe,WAAW,CAAA;AACnC,yCAAA,CAAA,CAAC;;AAGvC,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM;QAC/B,UAAU,IAAI,CAAC;AAEf,QAAA,OAAO,UAAU,GAAG,CAAC,EAAE;AACrB,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,WAAW;AACzC,YAAA,UAAU,IAAI,UAAU,GAAG,CAAC;;;AAIhC;;AAEG;AACH,IAAA,KAAK,CAAC,OAAe,EAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AAC1B,YAAA,MAAM,IAAI,KAAK,CAAC,kBAAkB,OAAO,CAAA,4CAAA,CAA8C,CAAC;;QAG1F,IAAI,GAAG,GAAG,CAAC;QACX,OAAO,IAAI,CAAC;AAEZ,QAAA,OAAO,OAAO,IAAI,CAAC,EAAE;AACnB,YAAA,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AAC9B,YAAA,OAAO,GAAG,CAAC,OAAO,IAAI,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC;;AAGzC,QAAA,OAAO,GAAG;;AAGZ;;AAEG;IACH,YAAY,CAAC,QAAgB,EAAE,QAAgB,EAAA;AAC7C,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;;AAGxD;;;AAGG;AACK,IAAA,YAAY,CAAC,GAAW,EAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AAC1B,YAAA,OAAO,CAAC;;AAGV,QAAA,IAAI,GAAG,GAAG,CAAC,CAAC;AACZ,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM;;AAGxC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAEjE,QAAA,KAAK,IAAI,SAAS,GAAG,UAAU,EAAE,SAAS,KAAK,CAAC,EAAE,SAAS,KAAK,CAAC,EAAE;AACjE,YAAA,MAAM,OAAO,GAAG,GAAG,GAAG,SAAS;AAC/B,YAAA,IAAI,OAAO,GAAG,UAAU,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;AAC1D,gBAAA,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;gBAC9B,GAAG,GAAG,OAAO;;;QAIjB,OAAO,GAAG,GAAG,CAAC;;AAEjB;;AClKM,MAAM,UAAU,GAAG,CAAO,QAAgB,EAAE,GAAS,EAAE,SAAc,KAAI;IAC9E,MAAM,aAAa,GAAG,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC;AAE9C,IAAA,IAAI,aAAa,GAAG,CAAC,CAAC,EAAE;AACtB,QAAA,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;;SAC5B;AACL,QAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;;AAGpB,IAAA,OAAO,QAAQ;AACjB,CAAC;AAEM,MAAM,iBAAiB,GAAG,CAC/B,QAAgB,EAChB,IAA0B,EAC1B,KAAa,EACb,SAAiB,KACP;AACV,IAAA,MAAM,OAAO,GAAG,KAAK,GAAG,SAAS;AAEjC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;QACnB,MAAM,OAAO,GAAG,CAAC,IAAI,SAAS,IAAI,CAAC,IAAI,KAAK;QAC5C,MAAM,MAAM,GAAG,CAAC,IAAI,SAAS,IAAI,CAAC,IAAI,KAAK;QAE3C,IAAI,KAAK,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;QAChC,IAAI,OAAO,EAAE;AACX,YAAA,KAAK,GAAG;AACN,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,GAAG,EAAE;aACN;;aACI;AACL,YAAA,KAAK,GAAG;AACN,gBAAA,KAAK,EAAE,SAAS;gBAChB,GAAG,EAAE,KAAK,GAAG;aACd;;AAGH,QAAA,IAAI,CAAC,OAAO,IAAI,MAAM,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,EAAE;;;AAGhD,YAAA,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,GAAG,EAAE;AAC7C,gBAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;;;;AAKxB,IAAA,OAAO,QAAQ;AACjB,CAAC;;MCQY,8BAA8B,CAAA;AA3C3C,IAAA,WAAA,GAAA;AA4CW,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,gFAAU;AACrC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,QAAQ,iFAA6C;AACzE,QAAA,IAAA,CAAA,oBAAoB,GAAG,KAAK,CAAC,QAAQ,0FAAU;AAC/C,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAe;QACrC,IAAW,CAAA,WAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAiB;AACpC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,8EAAU;QACnC,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;AAC3B,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,8EAAU;QACnC,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACxD,QAAA,IAAA,CAAA,8BAA8B,GAAG,KAAK,CAAC,QAAQ,oGAAU;QACzD,IAAmB,CAAA,mBAAA,GAAG,MAAM,EAAW;AAEvC,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAqB,MAAK;YACnD,OAAO;AACL,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB;AACH,SAAC,8EAAC;AACO,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAAK;YAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK;AACrC,YAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChE,SAAC,0FAAC;QACO,IAAO,CAAA,OAAA,GAAG,QAAQ,CACzB,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,MAAM,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACtE;QACQ,IAAa,CAAA,aAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAKlG;AAHC,IAAA,gBAAgB,CAAC,aAAsB,EAAA;AACrC,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC;;8GA9BnC,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,EAxC/B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,8BAAA,EAAA,EAAA,iBAAA,EAAA,gCAAA,EAAA,UAAA,EAAA,gCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,0GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAlCS,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAyCf,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBA3C1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAC1B,OAAA,EAAA,CAAC,gBAAgB,CAAC,EACjB,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCT,EAEgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACJ,wBAAA,KAAK,EAAE;AACR,qBAAA,EAAA,MAAA,EAAA,CAAA,0GAAA,CAAA,EAAA;;;MCjBU,4BAA4B,CAAA;AAlBzC,IAAA,WAAA,GAAA;AAmBW,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,gFAAU;QACrC,IAAS,CAAA,SAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAA+B;AAChD,QAAA,IAAA,CAAA,iBAAiB,GAAG,KAAK,CAAC,QAAQ,uFAA0C;AAC5E,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAC,QAAQ,yEAAQ;QAC5B,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;QAC3B,IAAc,CAAA,cAAA,GAAG,MAAM,EAG5B;AAEK,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,8EAAU;QAEnC,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AACxD,QAAA,IAAA,CAAA,8BAA8B,GAAG,KAAK,CAAC,QAAQ,oGAAU;QACzD,IAAuB,CAAA,uBAAA,GAAG,KAAK,CAAC,IAAI,+FAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAEtE,IAAgB,CAAA,gBAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AACxF,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAyB,MAAK;AACvD,YAAA,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,OAAO;AACL,gBAAA,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;AACf,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB;AACH,SAAC,8EAAC;;AAGO,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,CAAC,qFAAC;AAE3B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,EAA+B;AACzE,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AAuB1E;IArBC,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE;YACnC;;AAEF,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QACtB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC;;;AAIlD,IAAA,cAAc,CAAC,OAA4B,EAAA;AACzC,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC;YAC3C,QAAQ,EAAE,OAAO,EAAE,QAAQ;AAC3B,YAAA,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI;AAC1B,SAAA,CAAC;;AAIJ,IAAA,aAAa,CAAC,MAAkB,EAAA;AAC9B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;;8GArDnD,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAf7B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,8BAAA,EAAA,EAAA,iBAAA,EAAA,gCAAA,EAAA,UAAA,EAAA,gCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;AAQT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,qFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EATS,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAgBf,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAlBxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EACxB,OAAA,EAAA,CAAC,gBAAgB,CAAC,EACjB,QAAA,EAAA;;;;;;;;GAQT,EAEgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACJ,wBAAA,KAAK,EAAE;AACR,qBAAA,EAAA,MAAA,EAAA,CAAA,qFAAA,CAAA,EAAA;;sBAqDA,YAAY;uBAAC,aAAa,EAAE,CAAC,QAAQ,CAAC;;;MCc5B,0BAA0B,CAAA;AAhFvC,IAAA,WAAA,GAAA;QAiFW,IAAY,CAAA,YAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAA2D;QAE/E,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAExD,IAAK,CAAA,KAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AAEvB,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,CAAC,gFAAC;QAE5B,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC,KAAK,kFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAE1D,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAY;AAE5B,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,4EAAuB;AAE9C,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAC,QAAQ,yEAAQ;AAE5B,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAyB,WAAW,iFAAC;AAEvD,QAAA,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAC,QAAQ,4FAAU;AAEjD,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,gFAAuD;QAElF,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC,KAAK,gFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAExD,IAAQ,CAAA,QAAA,GAAG,MAAM,EAAyB;QAE1C,IAAU,CAAA,UAAA,GAAG,MAAM,EAAQ;AAEjB,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,mFAAC;AAE5D,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAClD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,YAAA,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AACrB,gBAAA,OAAO,EAAE;;AAEX,YAAA,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE;gBACxC,OAAO,MAAM,CAAC,SAAS;;YAEzB,OAAO,MAAM,CAAC,SAAS,CAAC;AACtB,gBAAA,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;AACf,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,gBAAA,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE;AAC3B,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,gBAAA,SAAS,EAAE,IAAI,CAAC,SAAS;AAC1B,aAAA,CAAC;AACJ,SAAC,uFAAC;AAEiB,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAK;AACxC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;AAC/B,YAAA,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;AACjB,gBAAA,OAAO,MAAM;;YAEf,OAAO,MAAM,GAAG,IAAI;AACtB,SAAC,6EAAC;AAEiB,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAChD,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;YAC1B,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK;AAC9E,SAAC,qFAAC;QACO,IAAK,CAAA,KAAA,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AACzC,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAoB,MAAK;YAChE,OAAO;gBACL,kBAAkB,EAAE,CAAC,KAAY,KAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;AAClE,gBAAA,UAAU,EAAE,CAAC,KAA0B,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACrE,gBAAA,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;AACf,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,gBAAA,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE;AAC3B,gBAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,gBAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;gBAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,IAAI,CAAC;AACrC,gBAAA,eAAe,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,YAAY;AAC9C,gBAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,WAAW;AAC5C,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,gBAAA,YAAY,EAAE,MAAM,IAAI,CAAC,YAAY;aACtC;AACH,SAAC,kFAAC;AAEiB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,KAAK,gFAAC;AACpC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC,aAAa;AAuH7E;IArHC,SAAS,GAAA;AACP,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACrC,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,EAAE;AAC1B,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;;;IAIjB,gBAAgB,GAAA;QACtB,IAAI,KAAK,GAAG,EAAE;AACd,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QACtB,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,IAAI,SAAS,EAAE;YACpC,KAAK,GAAG,EAAE;;aACL;AACL,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC;AAClD,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI;YAE5B,IAAI,QAAQ,EAAE;AACZ,gBAAA,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC;;AAC1B,iBAAA,IAAI,KAAK,KAAK,SAAS,EAAE;gBAC9B,KAAK,GAAG,GAAG;;;AAGf,QAAA,OAAO,KAAK;;IAGJ,OAAO,GAAA;AACf,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;;IAGhB,MAAM,GAAA;AACd,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;;AAGjB,IAAA,OAAO,CAAC,KAAiB,EAAA;AACjC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjB,YAAA,IAAI,EAAE,OAAO;YACb,KAAK;AACL,YAAA,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;AACf,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,YAAA,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE;AAC3B,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;YACnB,WAAW,EAAE,IAAI,CAAC;AACnB,SAAA,CAAC;;AAGM,IAAA,UAAU,CAAC,KAAiB,EAAA;AACpC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjB,YAAA,IAAI,EAAE,UAAU;YAChB,KAAK;AACL,YAAA,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;AACf,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,YAAA,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE;AAC3B,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;YACnB,WAAW,EAAE,IAAI,CAAC;AACnB,SAAA,CAAC;;AAGM,IAAA,SAAS,CAAC,KAAoB,EAAA;AACtC,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG;QACrB,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ;AAEnD,QAAA,MAAM,QAAQ,GACZ,GAAG,KAAK,KAAK;AACb,YAAA,GAAG,KAAK,UAAU;AAClB,YAAA,GAAG,KAAK,QAAQ;AAChB,YAAA,GAAG,KAAK,UAAU;YAClB,GAAG,KAAK,WAAW;AAErB,QAAA,IAAI,QAAQ,IAAI,YAAY,EAAE;YAC5B,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE;AAEvB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjB,gBAAA,IAAI,EAAE,SAAS;gBACf,KAAK;AACL,gBAAA,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;AACf,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,gBAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,gBAAA,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE;AAC3B,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;gBACnB,WAAW,EAAE,IAAI,CAAC;AACnB,aAAA,CAAC;;;AAIN,IAAA,gBAAgB,CAAC,KAAY,EAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjB,YAAA,IAAI,EAAE,UAAU;YAChB,KAAK;AACL,YAAA,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;AACf,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,YAAA,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE;AAC3B,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;YACnB,WAAW,EAAE,IAAI,CAAC,QAAQ;AAC1B,YAAA,UAAU,EAAE;AACb,SAAA,CAAC;;AAGJ,IAAA,SAAS,CAAC,IAAY,EAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,OAAO,IAAI;;QAEb,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;;IAGlC,YAAY,GAAA;QACpB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;;IAGlC,cAAc,CAAC,MAA2B,EAAE,GAAqB,EAAA;AAC/D,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE;AAChD,QAAA,OAAO,MAAM,CAAC,YAAY,GAAI,GAAY,CAAC,KAAM,GAAG,WAAW,GAAG,CAAC;;8GAtM1D,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EA7E3B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0DT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,sNAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EA3DS,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FA8Ef,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAhFtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EACtB,OAAA,EAAA,CAAC,gBAAgB,CAAC,EACjB,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DT,EAEgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACJ,wBAAA,OAAO,EAAE,qBAAqB;AAC9B,wBAAA,SAAS,EAAE,oBAAoB;AAC/B,wBAAA,gBAAgB,EAAE,4BAA4B;AAC9C,wBAAA,sBAAsB,EAAE,YAAY;AACpC,wBAAA,kBAAkB,EAAE,kBAAkB;AACtC,wBAAA,qBAAqB,EAAE,mBAAmB;AAC1C,wBAAA,qBAAqB,EAAE,mBAAmB;AAC1C,wBAAA,gBAAgB,EAAE,UAAU;AAC5B,wBAAA,SAAS,EAAE,WAAW;AACtB,wBAAA,QAAQ,EAAE,UAAU;AACpB,wBAAA,SAAS,EAAE,iBAAiB;AAC5B,wBAAA,YAAY,EAAE,oBAAoB;AAClC,wBAAA,WAAW,EAAE;AACd,qBAAA,EAAA,MAAA,EAAA,CAAA,sNAAA,CAAA,EAAA;;;MCzBU,yBAAyB,CAAA;AAlDtC,IAAA,WAAA,GAAA;AAmDU,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAE7B,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,6EAAyB;QACjD,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;QAC3B,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAmD;AACnE,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAC,QAAQ,yEAAQ;QAC5B,IAAK,CAAA,KAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;QACvB,IAAU,CAAA,UAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;AAC7B,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,8EAAY;QACrC,IAAY,CAAA,YAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAA4D;AAChF,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAyB,WAAW,iFAAC;AACvD,QAAA,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAC,QAAQ,4FAAU;QAEjD,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;AAC3B,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,gFAAuD;QAClF,IAAuB,CAAA,uBAAA,GAAG,KAAK,CAAC,IAAI,+FAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE5D,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AAC1C,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,YAAA,OAAO,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE;AAC7C,SAAC,+EAAC;AAEO,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,+EAAU;QAOpC,IAAQ,CAAA,QAAA,GAAG,MAAM,EAAuB;QACxC,IAAU,CAAA,UAAA,GAAG,MAAM,EAAQ;AAEpC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC,aAAa;AAC3D,QAAA,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;YAC1C,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC9C,OAAO,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACrD,SAAC,yFAAC;AACO,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACrC,YAAA,OAAO,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACxC,SAAC,oFAAC;AAEM,QAAA,IAAA,CAAA,UAAU,GAAgD,MAAM,CAAC,eAAe;aACrF,IAAI,CAAC,EAAE;AACP,aAAA,MAAM,EAAE;;AAyDQ,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AAC/C,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;YAChC,OAAO,QAAQ,EAAE,YAAY,IAAI,QAAQ,EAAE,KAAK,IAAI,CAAC;AACvD,SAAC,oFAAC;AACH;AAhFC,IAAA,IACI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,KAAK;;IAmBxC,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE;YACnC;;AAEF,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;;IAI1B,UAAU,CAAC,KAA4B,EAAE,KAAa,EAAA;QACpD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;;AAI/E,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC5B,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG;QACrB,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ;AAElD,QAAA,MAAM,QAAQ,GACZ,GAAG,KAAK,KAAK;AACb,YAAA,GAAG,KAAK,UAAU;AAClB,YAAA,GAAG,KAAK,QAAQ;AAChB,YAAA,GAAG,KAAK,UAAU;YAClB,GAAG,KAAK,WAAW;AAErB,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC;QAErE,IAAI,CAAC,QAAQ,IAAI,WAAW,KAAK,OAAO,EAAE;YACxC,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE;AAEvB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjB,gBAAA,IAAI,EAAE,SAAS;gBACf,KAAK;AACL,gBAAA,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;gBACf,UAAU,EAAE,IAAI,CAAC;AAClB,aAAA,CAAC;;;AAKN,IAAA,YAAY,CAAC,KAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjB,YAAA,IAAI,EAAE,YAAY;YAClB,KAAK;AACL,YAAA,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;YACf,UAAU,EAAE,IAAI,CAAC;AAClB,SAAA,CAAC;;IAGJ,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;;8GAjGb,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,EA/C1B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,KAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAjCS,0BAA0B,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,YAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAgDzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAlDrC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EACrB,OAAA,EAAA,CAAC,0BAA0B,CAAC,EAC3B,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCT,EAEgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACJ,wBAAA,OAAO,EAAE,oBAAoB;AAC7B,wBAAA,MAAM,EAAE,KAAK;AACb,wBAAA,UAAU,EAAE,IAAI;AAChB,wBAAA,SAAS,EAAE,YAAY;AACvB,wBAAA,gBAAgB,EAAE,cAAc;AAChC,wBAAA,2BAA2B,EAAE,2BAA2B;AACxD,wBAAA,4BAA4B,EAAE,2BAA2B;AACzD,wBAAA,sBAAsB,EAAE,YAAY;AACpC,wBAAA,mBAAmB,EAAE;AACtB,qBAAA,EAAA,MAAA,EAAA,CAAA,wJAAA,CAAA,EAAA;;sBA2BA,WAAW;uBAAC,gBAAgB;;sBAkC5B,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;sBA2BlC,YAAY;uBAAC,YAAY,EAAE,CAAC,QAAQ,CAAC;;;MC1J3B,yBAAyB,CAAA;AACpC,IAAA,OAAO,sBAAsB,CAC3B,SAAoC,EACpC,OAAgB,EAAA;AAQhB,QAAA,OAAO,IAAI;;8GAXF,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;MCYY,6BAA6B,CAAA;AAP1C,IAAA,WAAA,GAAA;AAQW,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,6EAAyB;QACjD,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC,QAAQ,+EAAoB,SAAS,EAAE,eAAe,EAAA,CAAG;AAC1E,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,+EAA6C;QACvE,IAAe,CAAA,eAAA,GAAG,KAAK,CAAkB,SAAS,uFAAI,SAAS,EAAE,eAAe,EAAA,CAAG;AAEzE,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MACtC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,CAAC,gFAC7D;QAEkB,IAAiB,CAAA,iBAAA,GAAG,MAAK;AAC1C,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE;;AAEnC,gBAAA,OAAO,MAAM;;AAEf,YAAA,OAAO,SAAS,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI;AACzD,SAAC;AACF;8GAlBY,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,cAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClB1C,4mBAeA,EAAA,MAAA,EAAA,CAAA,oZAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDFY,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKf,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAPzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,WACf,CAAC,gBAAgB,CAAC,EAGV,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4mBAAA,EAAA,MAAA,EAAA,CAAA,oZAAA,CAAA,EAAA;;;MEepC,iBAAiB,CAAA;AAV9B,IAAA,WAAA,GAAA;AAWU,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;QAE3B,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC,KAAK,kFAC/B,SAAS,EAAE,gBAAgB,EAAA,CAC3B;QACO,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC,KAAK,kFAC/B,SAAS,EAAE,gBAAgB,EAAA,CAC3B;QACO,IAAY,CAAA,YAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;QAC9B,IAAW,CAAA,WAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;QAE7B,IAAM,CAAA,MAAA,GAAG,MAAM,EAAuB;QAE/C,IAAU,CAAA,UAAA,GAAG,CAAC;QACd,IAAU,CAAA,UAAA,GAAG,CAAC;QACd,IAAc,CAAA,cAAA,GAAG,CAAC;QAClB,IAAc,CAAA,cAAA,GAAG,CAAC;AAClB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC,aAAa;QAG3D,IAAoB,CAAA,oBAAA,GAAQ,IAAI;QAChC,IAAY,CAAA,YAAA,GAAkB,IAAI;AAiE3C;IA/DC,QAAQ,GAAA;;QAEN,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AAC1C,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;YAC9B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;YACtD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YACtD,IAAI,CAAC,aAAa,EAAE,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,oBAAoB,CAAC;;;IAI7E,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;AAC9B,YAAA,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC;AACvC,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;;AAE1B,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,IAAI,CAAC,aAAa,EAAE,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,oBAAoB,CAAC;AAC5E,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;;;AAIpC,IAAA,SAAS,CAAC,OAAe,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,OAAO;;;IAI1C,QAAQ,CAAC,GAAW,EAAE,OAA4B,EAAA;AAChD,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;;;AAIrE,IAAA,UAAU,CAAC,KAAiB,EAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;YAC9B;;AAEF,QAAA,MAAM,GAAG,GAAY,KAAK,CAAC,aAAwB;AACnD,QAAA,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,MAAK;AAC7C,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,YAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,SAAS;AAC/B,YAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU;YAChC,IAAI,CAAC,YAAY,EAAE;AACrB,SAAC,CAAC;;IAGJ,YAAY,GAAA;AACV,QAAA,IAAI,SAAiB;QACrB,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE;YACzC,SAAS,GAAG,MAAM;;aACb;YACL,SAAS,GAAG,IAAI;;AAGlB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACf,SAAS;YACT,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,UAAU,EAAE,IAAI,CAAC;AAClB,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU;AACrC,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU;;8GArF5B,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,oyBARlB,CAAkB,gBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAQjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAV7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,CAAkB,gBAAA,CAAA;oBAC5B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,kBAAkB;AAC3B,wBAAA,mBAAmB,EAAE,gBAAgB;AACrC,wBAAA,kBAAkB,EAAE;AACrB;AACF,iBAAA;;;ACzBD,MAAM,cAAc,GAAG,CAAC,KAAY,KAAS;AAC3C,IAAA,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC;AAEpD,IAAA,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;AAC3B,QAAA,OAAO,IAAI;;AAEb,IAAA,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,EAAE;AAC1D,QAAA,OAAO,IAAI;;AAGb,IAAA,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC;AAC1D,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,KAAY,KAAU;IACzC;AACF,CAAC;MAuBY,4BAA4B,CAAA;AArBzC,IAAA,WAAA,GAAA;AAsBW,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,0EAAS;AAC9B,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,6EAAyB;AAEjD,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,+EAAU;AACpC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,gFAAU;AAE3B,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;YAClD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK;AAChC,gBAAA,GAAG,GAAG;gBACN,YAAY,EAAE,GAAG,CAAC;AACnB,aAAA,CAAC,CAAC;AACL,SAAC,uFAAC;QACiB,IAAU,CAAA,UAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,uBAAuB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AA8B/E;IA5BS,uBAAuB,GAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE;AACjD,YAAA,OAAO,SAAS;;QAElB,MAAM,UAAU,GAAQ,EAAE;QAC1B,IAAI,CAAC,OAAO;AACT,aAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,IAAI;aAC9C,OAAO,CAAC,GAAG,IAAG;YACb,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,IAAK,CAAC,CAAC;YACpE,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC;YAE5C,UAAU,CAAC,GAAG,CAAC,IAAK,CAAC,GAAG,GAAG,CAAC;kBACxB,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,qBAAqB,CAAC;AACnD,kBAAE,OAAO,CAAC,qBAAqB,CAAC;AACpC,SAAC,CAAC;AAEJ,QAAA,OAAO,UAAU;;AAGX,IAAA,kBAAkB,CAAC,MAA2B,EAAA;AACpD,QAAA,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE;AACpC,YAAA,OAAO,cAAc;;AAChB,aAAA,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI,EAAE;AACtC,YAAA,OAAO,WAAW;;aACb;YACL,OAAO,MAAM,CAAC,WAAW;;;8GAxClB,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAlB7B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;AAaT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAdS,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,cAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAmBxB,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBArBxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;oBACjC,OAAO,EAAE,CAAC,yBAAyB,CAAC;AACpC,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;AAaT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE;AACR;AACF,iBAAA;;;MC8NY,sBAAsB,CAAA;AA6DjC;;AAEG;AACH,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE;;AA4D/B;;AAEG;AACH,IAAA,WAAA,GAAA;AA/HA,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAErB,IAAc,CAAA,cAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAoB;QAC1C,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC,KAAK,kFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAC1D,IAAU,CAAA,UAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;QAC7B,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;QACnC,IAAqB,CAAA,qBAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;QACxC,IAAc,CAAA,cAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;AACjC,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,+EAA6C;AACvE,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,6EAAU;QAClC,IAAa,CAAA,aAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAiB;AACtC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAS,EAAE,+EAAC;AAC5B,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,QAAQ,iFAAoC;QAChE,IAAS,CAAA,SAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAA+B;QAChD,IAAW,CAAA,WAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAiC;QACpD,IAAW,CAAA,WAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAA0D;QAC7E,IAAY,CAAA,YAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAA4D;QAChF,IAAW,CAAA,WAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAc;QACjC,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAmD;QACnE,IAAW,CAAA,WAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAiB;AAGpC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,gFAAU;QACrC,IAAc,CAAA,cAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;QACjC,IAAU,CAAA,UAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;AAC7B,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAC,QAAQ,qFAAU;AAC1C,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,QAAQ,mFAAU;QACxC,IAAY,CAAA,YAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;AAC/B,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,QAAQ,mFAAmC;QACjE,IAAe,CAAA,eAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAsC;AAC7D,QAAA,IAAA,CAAA,8BAA8B,GAAG,KAAK,CAAC,QAAQ,oGAAU;QACzD,IAAuB,CAAA,uBAAA,GAAG,KAAK,CAAC,IAAI,+FAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEtE,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,8EAAU;AAEnC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,0EAAwB;AAE7C,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,6EAAyB;AAEjD,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAS,CAAC,6EAAC;AAEzB,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAS,CAAC,+EAAC;QAE3B,IAAU,CAAA,UAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAmB;AACrC,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAC,KAAK,4FAAC;AACpC,QAAA,IAAA,CAAA,sBAAsB,GAAG,KAAK,CAAC,QAAQ,4FAAU;AACjD,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,gFAAuD;QAElF,IAAM,CAAA,MAAA,GAAG,MAAM,EAAe;QAC9B,IAAI,CAAA,IAAA,GAAG,MAAM,EAAU;QACvB,IAAQ,CAAA,QAAA,GAAG,MAAM,EAAuB;QACxC,IAAc,CAAA,cAAA,GAAG,MAAM,EAG5B;QACK,IAAU,CAAA,UAAA,GAAG,MAAM,EAAiB;AAG5B,QAAA,IAAA,CAAA,WAAW,GAAG,YAAY,CAAC,4BAA4B,kFAAC;AASzE;;;;AAIG;AACM,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;YACpC,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AAC3F,gBAAA,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;;;AAG1D,YAAA,OAAO,SAAS;AAClB,SAAC,mFAAC;AAEO,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;AACzC,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;YAClC,IAAI,CAAC,SAAS,EAAE;AACd,gBAAA,OAAO,MAAM,CAAC;;AAEhB,YAAA,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,EAAE;AACvC,YAAA,OAAO,OAAO,SAAS,KAAK,UAAU,GAAG,SAAS,GAAG,MAAM,SAAS;AACtE,SAAC,wFAAC;AAEO,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,YAAA,OAAO,IAAI,CAAC,UAAU,EAAE;AAC1B,SAAC,mFAAC;QACO,IAAe,CAAA,eAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,sBAAsB,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAC/D,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,CAAC,8EAAC;QACnB,IAAO,CAAA,OAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAC/C,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAK;YACzC,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC9C,OAAO,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACrD,SAAC,wFAAC;AAEF,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACtB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAS,EAAE,oFAAC;AAClC,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAgB,EAAE,sFAAC;AAG3C,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAClC,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,gBAAA,OAAO,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI;;iBAC1B;AACL,gBAAA,OAAO,MAAM;;AAEjB,SAAC,iFAAC;AACO,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACnC,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,gBAAA,OAAO,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI;;iBAC1B;AACL,gBAAA,OAAO,MAAM;;AAEjB,SAAC,kFAAC;QACF,IAAY,CAAA,YAAA,GAAG,CAAC,CAAC;AA2OjB,QAAA,IAAA,CAAA,uBAAuB,GAAG,CAAC,GAAS,EAAE,KAAW,KAAY;AAC3D,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;YACtC,IAAI,CAAC,WAAW,EAAE;AAChB,gBAAA,OAAO,CAAC;;AAEV,YAAA,MAAM,cAAc,GAAG,WAAW,EAAE,SAAS,EAAE;AAC/C,YAAA,MAAM,SAAS,GAAG,cAAc,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,cAAc;AAC1E,YAAA,OAAO,OAAO,SAAS,KAAK,UAAU,GAAG,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,GAAI,SAAoB;AACxF,SAAC;AAED;;;;;;AAMG;AACM,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;YACpC,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AAC9C,gBAAA,OAAO,cAAc,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;;iBAC3E;AACL,gBAAA,OAAO,EAAE;;AAEb,SAAC,mFAAC;;QAxPA,IAAI,CAAC,aAAa,GAAG,CAAC,KAAK,EAAE,GAAG,KAAI;AAClC,YAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;AAChC,gBAAA,OAAO,KAAK;;AAEd,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;YACtC,IAAI,WAAW,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AACzC,gBAAA,OAAO,GAAG,CAAC,WAAW,CAAC;;iBAClB,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACnC,gBAAA,OAAO,GAAG,CAAC,GAAG,IAAI,KAAK;;iBAClB;gBACL,OAAO,GAAG,IAAI,KAAK;;AAEvB,SAAC;QACD,MAAM,CAAC,MAAM,IAAI,CAAC,2BAA2B,EAAE,CAAC;;AAGlD,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,EAAE;AAC9E,YAAA,IAAI,OAAO,CAAC,QAAQ,EAAE;AACpB,gBAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AACtB,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AACrB,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;;;;AAK7B;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;QAClC,IAAI,SAAS,EAAE;AACb,YAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACtF,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;;AAGzD,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;QACtC,IAAI,WAAW,EAAE;YACf,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAG;;AAEpD,gBAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK;AAClC,gBAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;AACpC,aAAC,CAAC;AACF,YAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;;;IAInD,2BAA2B,GAAA;QACjC,IACE,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;YACpD,IAAI,CAAC,qBAAqB,EAC1B;AACA,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;;;AAIrD,IAAA,sBAAsB,CAAC,EAAE,IAAI,EAAE,KAAK,EAA2B,EAAA;AACrE,QAAA,IAAI,IAAI,KAAK,OAAO,EAAE;AACpB,YAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;;AAElC,QAAA,IAAI,IAAI,KAAK,KAAK,EAAE;AAClB,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;;;AAI7B,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;AAGhB,IAAA,oBAAoB,CAAC,EAAE,IAAI,EAAE,KAAK,EAA4B,EAAA;AACpE,QAAA,IAAI,IAAI,KAAK,KAAK,EAAE;AAClB,YAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;;AAEhC,QAAA,IAAI,IAAI,KAAK,KAAK,EAAE;AAClB,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;;;AAI3B,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;AAGxB;;AAEG;AACH,IAAA,aAAa,CAAC,MAAe,EAAA;;AAE3B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB;;AAGF,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;QAC5C,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,cAAc,IAAI,MAAM,EAAE;;YAEjD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,MAAM;AACzC,YAAA,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;;aAC9C,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,EAAE;YAC/C,MAAM,GAAG,CAAC;;QAGZ,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC;;AAGtC;;;AAGG;AACH,IAAA,YAAY,CAAC,KAAU,EAAA;AACrB,QAAA,MAAM,UAAU,GAAW,KAAK,CAAC,UAAU;AAC3C,QAAA,MAAM,UAAU,GAAW,KAAK,CAAC,UAAU;;;AAI3C,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,UAAU,EAAE;AAClE,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,OAAO,EAAE;AACV,aAAA,CAAC;;AAGJ,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;AAC5B,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;AAE5B,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC;AAChC,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;;AAGzB;;AAEG;AACH,IAAA,UAAU,CAAC,SAAiB,EAAA;AAC1B,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;QACnD,MAAM,eAAe,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;AACjD,QAAA,IAAI,SAAS,KAAK,IAAI,EAAE;AACtB,YAAA,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;;AACrB,aAAA,IAAI,SAAS,KAAK,MAAM,EAAE;AAC/B,YAAA,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;;AAG7B,QAAA,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,IAAI,CAAC,YAAY,EAAE;AAC7E,YAAA,IAAI,CAAC,YAAY,GAAG,MAAM;;AAE1B,YAAA,IAAI,eAAe,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AAC1F,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;AACnD,gBAAA,IAAI,CAAC,KAAK,IAAI,SAAS,KAAK,IAAI,EAAE;oBAChC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;;AAG5B,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AACnE,gBAAA,IAAI,CAAC,OAAO,IAAI,SAAS,KAAK,MAAM,EAAE;oBACpC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;;;AAG9B,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;;;AAI1B;;AAEG;IACH,UAAU,GAAA;QACR,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;;;;AAItC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;QACtC,MAAM,IAAI,GAAG;AACX,cAAE,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC;cAC3D,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAE7D,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,KAAK;AAC1B,QAAA,OAAO,IAAI;;IAGb,aAAa,CAAC,KAAa,EAAE,OAA4B,EAAA;AACvD,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACzB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE;YACpC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;YACrC,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;AACpC,YAAA,MAAM,SAAS,GAAG,SAAS,GAAG,MAAM;YACpC,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,YAAY,IAAI,CAAC;YACrE,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,IAAI,CAAC;AACpE,YAAA,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,OAAO;AAEvC,YAAA,IAAI,GAAW;YACf,QAAQ,KAAK;AACX,gBAAA,KAAK,QAAQ;AACX,oBAAA,GAAG,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,cAAc,GAAG,SAAS,IAAI,CAAC,CAAC;oBAC5D;AACF,gBAAA,KAAK,KAAK;AACR,oBAAA,GAAG,GAAG,SAAS,GAAG,cAAc;oBAChC;AACF,gBAAA,KAAK,SAAS;AACZ,oBAAA,IAAI,MAAM,GAAG,gBAAgB,EAAE;wBAC7B,GAAG,GAAG,MAAM;;AACP,yBAAA,IAAI,SAAS,GAAG,gBAAgB,GAAG,cAAc,EAAE;AACxD,wBAAA,GAAG,GAAG,SAAS,GAAG,cAAc;;yBAC3B;wBACL,GAAG,GAAG,gBAAgB;;oBAExB;AACF,gBAAA,KAAK,OAAO;AACZ,gBAAA;oBACE,GAAG,GAAG,MAAM;oBACZ;;AAGJ,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC;;aAC5C;YACL,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC;;;AAItD;;AAEG;AACH,IAAA,YAAY,CAAC,GAAqB,EAAA;;AAEhC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE;AACnC,YAAA,OAAO,SAAS,CAAC,GAAG,CAAC;;AAGvB,QAAA,OAAO,SAAmB;;AA4B5B;;AAEG;IACH,cAAc,GAAA;QACZ,IAAI,KAAK,GAAG,CAAC;AACb,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;AAE1B,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;;;;gBAIzB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC;AAC/C,gBAAA,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAC1D,gBAAA,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC;;;aAEnE;;;AAGL,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;AAC1B,gBAAA,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;;AAEtD,YAAA,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;;AAG3D,QAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;;AAGxB;;;AAGG;IACH,sBAAsB,GAAA;AACpB,QAAA,MAAM,KAAK,GAAG,IAAI,cAAc,EAAQ;AACxC,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE;AACvE,YAAA,OAAO,KAAK;;;AAId,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE;YACtB,KAAK,CAAC,SAAS,CAAC;AACd,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAY;AAC3B,gBAAA,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;AAC3B,gBAAA,eAAe,EAAE,IAAI,CAAC,iBAAiB,EAAE;gBACzC,eAAe,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE;gBAC3D,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC;AACxE,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,gBAAA,aAAa,EAAE,IAAI,GAAG,CAAO,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE;AAC1E,aAAA,CAAC;;AAEJ,QAAA,OAAO,KAAK;;AAGd;;;;;AAKG;AACH,IAAA,kBAAkB,CAAC,GAAS,EAAA;AAC1B,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;AACrE,QAAA,MAAM,QAAQ,GAAG,cAAc,GAAG,CAAC,CAAC;;QAGpC,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,IAAG;AACrC,gBAAA,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;AACpC,gBAAA,OAAO,CAAC,GAAG,UAAU,CAAC;AACxB,aAAC,CAAC;;aACG;AACL,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,GAAG,UAAU,EAAE,GAAG,CAAC,CAAC;;;AAIjE,IAAA,oBAAoB,CAAC,GAAgB,EAAA;AACnC,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;AACzE,QAAA,MAAM,QAAQ,GAAG,gBAAgB,GAAG,CAAC,CAAC;;QAGtC,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,IAAG;AACvC,gBAAA,UAAU,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACtC,gBAAA,OAAO,CAAC,GAAG,UAAU,CAAC;AACxB,aAAC,CAAC;;aACG;AACL,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,GAAG,UAAU,EAAE,GAAG,CAAC,CAAC;;;AAInE;;AAEG;AACH,IAAA,aAAa,CAAC,QAAiB,EAAA;;QAE7B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,GAAI,IAAI,CAAC,IAAI,EAAU,CAAC,GAAG,EAAE,CAAC;;AAGnE;;AAEG;AACH,IAAA,eAAe,CAAC,QAAiB,EAAA;QAC/B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,EAAG,CAAC,GAAG,EAAE,CAAC;;AAGpE;;AAEG;AACH,IAAA,cAAc,CAAC,GAAS,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC;;AAG5D,IAAA,gBAAgB,CAAC,KAAkB,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC;;IAGhE,cAAc,CAAC,GAAqB,EAAE,QAA4B,EAAA;AAChE,QAAA,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;YACrB,OAAO,CAAC,CAAC;;QAGX,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC;AACrC,QAAA,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAG;YAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAChC,OAAO,EAAE,KAAK,KAAK;AACrB,SAAC,CAAC;;AAGJ,IAAA,YAAY,CAAC,GAAS,EAAA;QACpB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;;IAG/B,QAAQ,CAAC,KAAgB,EAAE,OAAyB,EAAA;QAClD,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC;YACxB,KAAK;YACL,UAAU,EAAE,IAAI,CAAC,kBAAmB;AACpC,YAAA,SAAS,EAAE,UAAU;YACrB,OAAO,EAAE,IAAI,CAAC,WAAW;YACzB;AACD,SAAA,CAAC;;AAGJ,IAAA,IAAI,CAAC,KAAgB,EAAE,OAAyB,EAAE,YAA6C,EAAA;AAC7F,QAAA,IAAI,CAAC,WAAW,GAAG,OAAO;AAC1B,QAAA,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC,QAAQ;AAC/C,QAAA,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC;YACxB,KAAK;YACL,UAAU,EAAE,IAAI,CAAC,kBAAkB;AACnC,YAAA,SAAS,EAAE,WAAW;YACtB;AACD,SAAA,CAAC;;AAGJ,IAAA,IAAI,CAAC,KAAgB,EAAE,OAAyB,EAAE,YAA6C,EAAA;QAC7F,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC;YACxB,KAAK;YACL,UAAU,EAAE,IAAI,CAAC,kBAAmB;YACpC,aAAa,EAAE,YAAY,CAAC,QAAQ;AACpC,YAAA,SAAS,EAAE,MAAM;YACjB,OAAO,EAAE,IAAI,CAAC,WAAW;YACzB;AACD,SAAA,CAAC;;AAGJ,IAAA,SAAS,CACP,KAAgB,EAChB,OAAyB,EACzB,YAA6C,EAAA;QAE7C,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC;YACxB,KAAK;YACL,UAAU,EAAE,IAAI,CAAC,kBAAmB;YACpC,aAAa,EAAE,YAAY,CAAC,QAAQ;AACpC,YAAA,SAAS,EAAE,WAAW;YACtB,OAAO,EAAE,IAAI,CAAC,WAAW;YACzB;AACD,SAAA,CAAC;;AAGJ,IAAA,SAAS,CACP,KAAgB,EAChB,OAAyB,EACzB,YAA6C,EAAA;QAE7C,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC;YACxB,KAAK;YACL,UAAU,EAAE,IAAI,CAAC,kBAAmB;YACpC,aAAa,EAAE,YAAY,CAAC,QAAQ;AACpC,YAAA,SAAS,EAAE,WAAW;YACtB,OAAO,EAAE,IAAI,CAAC,WAAW;YACzB;AACD,SAAA,CAAC;;IAGJ,OAAO,CAAC,KAAgB,EAAE,OAAyB,EAAA;QACjD,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC;YACxB,KAAK;YACL,UAAU,EAAE,IAAI,CAAC,kBAAmB;AACpC,YAAA,SAAS,EAAE,SAAS;YACpB;AACD,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,WAAW,GAAG,SAAS;AAC5B,QAAA,IAAI,CAAC,kBAAkB,GAAG,SAAS;;AAKrC,IAAA,SAAS,CAAC,KAAY,EAAE,KAAa,EAAE,GAAS,EAAA;AAC9C,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB;;QAGF,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,KAAK,UAAU;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,KAAK,OAAO;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,KAAK,YAAY;QACxD,IAAI,QAAQ,GAAW,EAAE;;AAGzB,QAAA,IAAI,KAAK,IAAI,MAAM,IAAI,UAAU,EAAE;AACjC,YAAA,IAAK,KAAuB,CAAC,QAAQ,EAAE;AACrC,gBAAA,QAAQ,GAAG,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,SAAU,CAAC;;AAChE,iBAAA,IACJ,KAAuB,CAAC,GAAG,KAAK,GAAG;iBAClC,KAAuB,CAAC,OAAO,IAAK,KAAuB,CAAC,OAAO,CAAC,EACtE;;AAEA,gBAAA,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC;;iBAC9C,IACJ,KAAuB,CAAC,OAAO;AAC/B,gBAAA,KAAuB,CAAC,OAAO;gBAChC,UAAU;AACV,gBAAA,MAAM,EACN;gBACA,QAAQ,GAAG,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;iBAC9E;AACL,gBAAA,QAAQ,GAAG,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;;aAE9D;AACL,YAAA,QAAQ,GAAG,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AAGnE,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;AACtC,QAAA,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE;AACrC,YAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;QAGpD,IAAI,OAAO,IAAI,CAAC,eAAe,EAAE,KAAK,UAAU,EAAE;AAChD,YAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAG,CAAC,OAAO,CAAC,CAAC;;AAG1E,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;;IAGxB,UAAU,CAAC,WAAgC,EAAE,KAAa,EAAA;QACxD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,WAAW;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,KAAK,UAAU;QAClD,MAAM,MAAM,GACV,CAAC,CAAC,MAAM,KAAK,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,UAAU,CAAC,MAAM,MAAM,IAAI,IAAI,KAAK,UAAU,CAAC;QAE3F,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;;AAC5B,aAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AAC7B,YAAA,IAAK,KAAuB,CAAC,GAAG,KAAK,KAAK,EAAE;gBAC1C,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC;;AAC5B,iBAAA,IACJ,KAAuB,CAAC,GAAG,KAAK,GAAG;iBAClC,KAAuB,CAAC,OAAO,IAAK,KAAuB,CAAC,OAAO,CAAC,EACtE;gBACA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;;iBACzB;AACL,gBAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;;;AAGrC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;;IAGjC,mBAAmB,CAAC,QAAiB,EAAE,KAAkB,EAAA;QACvD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5C,IAAI,QAAQ,EAAE;AACZ,YAAA,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;aAC3C;AACL,YAAA,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;;AAErD,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;AAG5C,IAAA,eAAe,CAAC,WAAgC,EAAA;AAC9C,QAAA,MAAM,EAAE,GAAG,EAAE,GAAG,WAAW,CAAC,KAAsB;AAClD,QAAA,MAAM,WAAW,GACf,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,UAAU;QAErF,IAAI,WAAW,EAAE;YACf,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,EAAE,KAAK,MAAM;AACvD,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE;AAC9C,YAAA,IAAI,OAAO,eAAe,KAAK,UAAU,EAAE;gBACzC,MAAM,aAAa,GAAG,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC;gBACtD,IAAI,aAAa,EAAE;oBACjB;;;YAGJ,IAAI,CAAC,WAAW,CAAC,WAAW,IAAI,CAAC,eAAe,EAAE;gBAChD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,GAAG,CAAC;;iBACrC,IAAI,eAAe,IAAI,WAAW,CAAC,SAAS,KAAK,SAAS,EAAE;AACjE,gBAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,UAAU,EAAE,GAAG,EAAE,WAAW,CAAC,SAAS,CAAC;;;;IAKjG,QAAQ,CAAC,UAAuB,EAAE,GAAW,EAAA;QAC3C,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,GAAG,CAAC;QAC3D,IAAI,cAAc,EAAE;YAClB,cAAc,CAAC,KAAK,EAAE;;;IAI1B,cAAc,CAAC,UAAuB,EAAE,GAAW,EAAA;AACjD,QAAA,MAAM,aAAa,GAAG,UAAU,CAAC,aAAa;QAE9C,IAAI,aAAa,EAAE;YACjB,IAAI,YAAY,GAAmB,IAAI;AACvC,YAAA,IAAI,GAAG,KAAK,QAAQ,EAAE;AACpB,gBAAA,YAAY,GAAG,aAAa,CAAC,sBAAsB;;AAC9C,iBAAA,IAAI,GAAG,KAAK,UAAU,EAAE;AAC7B,gBAAA,YAAY,GAAG,aAAa,CAAC,kBAAkB;;AAGjD,YAAA,IAAI,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAE;AACjC,gBAAA,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;;;;AAKrC,IAAA,SAAS,CACP,WAAwB,EACxB,UAAuB,EACvB,GAAW,EACX,SAAiB,EAAA;QAEjB,IAAI,eAAe,GAAmB,IAAI;AAE1C,QAAA,IAAI,GAAG,KAAK,UAAU,EAAE;AACtB,YAAA,eAAe,GAAG,WAAW,CAAC,sBAAsB;;AAC/C,aAAA,IAAI,GAAG,KAAK,WAAW,EAAE;AAC9B,YAAA,eAAe,GAAG,WAAW,CAAC,kBAAkB;;aAC3C,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,UAAU,EAAE;YACjD,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,GAAG,CAAC;YAC3D,IAAI,cAAc,EAAE;gBAClB,MAAM,QAAQ,GAAG,cAAc,CAAC,sBAAsB,CAAC,qBAAqB,CAAC;AAC7E,gBAAA,IAAI,QAAQ,CAAC,MAAM,EAAE;AACnB,oBAAA,eAAe,GAAG,QAAQ,CAAC,SAAS,CAAC;;;;AAK3C,QAAA,IACE,eAAe;AACf,YAAA,OAAO,IAAI,eAAe;AAC1B,YAAA,OAAO,eAAe,CAAC,KAAK,KAAK,UAAU,EAC3C;YACA,eAAe,CAAC,KAAK,EAAE;;;AAI3B,IAAA,cAAc,CAAC,GAAS,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;;IAG1D,iBAAiB,CAAC,GAAS,EAAE,QAAe,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;YACrB,OAAO,CAAC,CAAC;;QAGX,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC;AACrC,QAAA,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAG;YAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAChC,OAAO,EAAE,KAAK,KAAK;AACrB,SAAC,CAAC;;AAMM,IAAA,OAAO,CAAC,GAA0C,EAAA;AAC1D,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE;;AAGnB,IAAA,KAAK,CAAC,GAAiC,EAAA;AAC/C,QAAA,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE;;8GApwBjB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EA2DW,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,8BAAA,EAAA,EAAA,iBAAA,EAAA,gCAAA,EAAA,UAAA,EAAA,gCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,aAAA,EAAA,cAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,4BAA4B,EAD7D,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,iBAAiB,EA7PlB,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0LT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,sXAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EApMC,6BAA6B,EAC7B,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,iBAAiB,EACjB,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,4BAA4B,0HAC5B,4BAA4B,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,gCAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC5B,gCAAgC,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChC,yBAAyB,EACzB,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,UAAA,EAAA,KAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,cAAA,EAAA,YAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,EAChB,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,yBAAyB,qEACzB,8BAA8B,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,OAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,gCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAqMrB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAhNlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EACjB,OAAA,EAAA;wBACP,6BAA6B;wBAC7B,iBAAiB;wBACjB,4BAA4B;wBAC5B,4BAA4B;wBAC5B,gCAAgC;wBAChC,yBAAyB;wBACzB,gBAAgB;wBAChB,yBAAyB;wBACzB;qBACD,EACS,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0LT,EAEgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACJ,wBAAA,OAAO,EAAE,gBAAgB;AACzB,wBAAA,gBAAgB,EAAE,eAAe;AACjC,wBAAA,eAAe,EAAE;AAClB,qBAAA,EAAA,MAAA,EAAA,CAAA,sXAAA,CAAA,EAAA;;sBAwBA;;sBAoCA,SAAS;uBAAC,iBAAiB;kFACgB,4BAA4B,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MCtT7D,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EATrB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;AAMT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAXhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE;;;;;;AAMT,EAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC;AAC1C,iBAAA;;;ACND;;;;;;;;;;;;;;;;;;AAkBG;MAsEU,uBAAuB,CAAA;AArEpC,IAAA,WAAA,GAAA;;;;AAyEU,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,yBAAyB,CAAC;AAMlC,QAAA,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAG,CAAC,OAAO,EAAE,2EAAC;AACnE,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAG,CAAC,QAAQ,EAAE,+EAAC;AACxE,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CACjC,MACE,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAG,CAAC,UAAU,EAAE;YAC/C,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAG,CAAC,QAAQ,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAChD;AACkB,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAC1C,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAG,CAAC,aAAa,EAAE,oFACnD;AACkB,QAAA,IAAA,CAAA,mBAAmB,GAAG,QAAQ,CAAC,MAChD,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAG,CAAC,mBAAmB,EAAE,0FACzD;AACkB,QAAA,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,MAC/C,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAG,CAAC,kBAAkB,EAAE,yFACxD;AACkB,QAAA,IAAA,CAAA,iBAAiB,GAAG,QAAQ,CAAC,MAC9C,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAG,CAAC,iBAAiB,EAAE,wFACvD;AAEkB,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAC5C,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAChG,SAAC,iFAAC;AAEiB,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;YACvC,MAAM,KAAK,GAAW,EAAE;YACxB,IAAI,SAAS,GAAG,CAAC;AACjB,YAAA,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;YAC/B,MAAM,OAAO,GAAG,CAAC;YACjB,MAAM,UAAU,GAAG,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AAE9C,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;YAExB,IAAI,UAAU,EAAE;gBACd,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;gBAC1C,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;AAExC,gBAAA,IAAI,SAAS,GAAG,CAAC,EAAE;oBACjB,SAAS,GAAG,CAAC;AACb,oBAAA,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;;AACzD,qBAAA,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE;AACtC,oBAAA,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;AACxD,oBAAA,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;;;AAI/B,YAAA,KAAK,IAAI,GAAG,GAAG,SAAS,EAAE,GAAG,IAAI,OAAO,EAAE,GAAG,EAAE,EAAE;gBAC/C,KAAK,CAAC,IAAI,CAAC;AACT,oBAAA,MAAM,EAAE,GAAG;AACX,oBAAA,IAAI,EAAE,GAAG,CAAC,QAAQ;AACnB,iBAAA,CAAC;;AAGJ,YAAA,OAAO,KAAK;AACd,SAAC,4EAAC;AAEiB,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,kFAAC;AAE7C,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,8EAAC;AAe7E;AA7EC,IAAA,IAAc,QAAQ,GAAA;QACpB,OAAO,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE;;IA+D/B,QAAQ,GAAA;QAChB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;;IAGxB,QAAQ,GAAA;QAChB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;;AAGxB,IAAA,UAAU,CAAC,IAAY,EAAA;AAC/B,QAAA,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,EAAE;AACjE,YAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;;;8GAhF/C,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAnExB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,yRAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAOU,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBArEnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EACrB,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DT,EAEgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACJ,wBAAA,KAAK,EAAE;AACR,qBAAA,EAAA,MAAA,EAAA,CAAA,yRAAA,CAAA,EAAA;;;MCnDU,wBAAwB,CAAA;AAlCrC,IAAA,WAAA,GAAA;AAmCW,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,QAAQ,kFAAU;AACvC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,8EAAU;AACnC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,gFAAsB;AACjD,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,8EAAU;AACnC,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,4EAAU;QACjC,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAsB;QAChD,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAsB;QACjD,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAsB;QAC/C,IAAa,CAAA,aAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAsB;AAC3C,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,QAAQ,kFAAU;QACvC,IAAc,CAAA,cAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAwC;AAE9D,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,CAAC,oFAAC;AACxB,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAA+B,SAAS,sFAAC;QAEhE,IAAI,CAAA,IAAA,GAAG,MAAM,EAAkB;AAErB,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,gFAAC;AAC3E,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,8EAAC;AACjC,QAAA,IAAA,CAAA,eAAe,GAA0B,QAAQ,CAAC,OAAO;AAC1E,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE;AACnC,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,SAAA,CAAC,sFAAC;AACJ;8GA3BY,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EA/BzB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBT,EAzBS,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,sLAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,oJAAE,uBAAuB,EAAA,QAAA,EAAA,qBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAgCxC,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAlCpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,WACnB,CAAC,gBAAgB,EAAE,uBAAuB,CAAC,EAC1C,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBT,EAEgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACJ,wBAAA,KAAK,EAAE;AACR,qBAAA,EAAA,MAAA,EAAA,CAAA,sLAAA,CAAA,EAAA;;;MChCU,gCAAgC,CAAA;AAC3C,IAAA,OAAO,sBAAsB,CAC3B,SAA2C,EAC3C,OAAgB,EAAA;AAEhB,QAAA,OAAO,IAAI;;8GALF,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhC,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAhC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAH5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;MCEY,wBAAwB,CAAA;AAHrC,IAAA,WAAA,GAAA;QAIW,IAAc,CAAA,cAAA,GAAG,KAAK,CAA6B,SAAS,sFAAI,KAAK,EAAE,UAAU,EAAA,CAAG;QAE5E,IAAc,CAAA,cAAA,GAAG,YAAY,CAAC,gCAAgC,sFAC7E,IAAI,EAAE,WAAW,EAAA,CACjB;AAEO,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,+EAAC;AACnF;8GARY,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGY,gCAAgC,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACvE,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAJR,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;AAIgD,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,gCAAgC,CAAE,EAAA,EAAA,GAAA;AAC/E,4BAAA,IAAI,EAAE;AACP,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MCmBU,2BAA2B,CAAA;AAqBtC,IAAA,WAAA,GAAA;AApBQ,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC1B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC,aAAa;QAEnE,IAAS,CAAA,SAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAuB;QACxC,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC,CAAC,sFAAI,SAAS,EAAE,eAAe,EAAA,CAAG;AACzD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,IAAI,EAAI,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,SAAA,EAAA,8BAAA,EAAA,CAAA,EAAA,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,oBAAoB,GAAG;QACnF,IAAQ,CAAA,QAAA,GAAG,MAAM,EAAa;QAC9B,IAAO,CAAA,OAAA,GAAG,MAAM,EAAQ;QACxB,IAAS,CAAA,SAAA,GAAG,MAAM,EAAQ;AAIlB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAqB,SAAS,6EAAC;AAC9C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAqB,SAAS,6EAAC;AAC5C,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAC1C,MAAM,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,qFACvD;AACkB,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,KAAK,SAAS,iFAAC;AAwBxD,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,KAAiB,KAAU;AACzD,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;gBACnB;;YAEF,KAAK,CAAC,eAAe,EAAE;YACvB,KAAK,CAAC,cAAc,EAAE;YAEtB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC;AACtD,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,MAAK;gBAC1C,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC;gBAC3D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;AAC7C,aAAC,CAAC;AACJ,SAAC;AAEO,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,KAAiB,KAAW,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;AAEvE,QAAA,IAAA,CAAA,UAAU,GAAG,CAAC,KAAiB,KAAU;AAC1D,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;gBACnB;;YAEF,KAAK,CAAC,eAAe,EAAE;YACvB,KAAK,CAAC,cAAc,EAAE;YACtB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAE;AACpC,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,UAAU;YAE/B,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;AACvD,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,MAAK;gBAC1C,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC;gBAC3D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;AAC7C,aAAC,CAAC;AACJ,SAAC;AAEO,QAAA,IAAA,CAAA,SAAS,GAAG,CAAC,KAAiB,KAAU;YAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAE;YACxC,IAAI,SAAS,EAAE;gBACb,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;;AAErD,SAAC;QAiBO,IAAM,CAAA,MAAA,GAAG,MAAW;AAC1B,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;YACjC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC;YAC9D,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC;YAC9D,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC;YACzD,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;AAC1D,YAAA,IAAI,CAAC,OAAO,GAAG,SAAS;AACxB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;AAC1B,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;AAC1B,YAAA,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;;;YAG5B,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;;AAEvB,SAAC;QAzFC,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;gBAClB,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC;gBAC1D,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC;AAC5D,gBAAA,IAAI,CAAC,sBAAsB,GAAG,MAAK;oBACjC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC;oBAC7D,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC;AACjE,iBAAC;;iBACI;AACL,gBAAA,IAAI,CAAC,sBAAsB,IAAI;AAC/B,gBAAA,IAAI,CAAC,sBAAsB,GAAG,SAAS;;AAE3C,SAAC,CAAC;;IAGJ,WAAW,GAAA;AACT,QAAA,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;AAC5B,QAAA,IAAI,CAAC,sBAAsB,IAAI;;IA0CzB,QAAQ,CAAC,OAAe,EAAE,OAAe,EAAA;AAC/C,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;AACxB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;;IAGf,MAAM,CAAC,OAAe,EAAE,OAAe,EAAA;AAC7C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjB,YAAA,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAG;AACxB,YAAA,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAG;AACxB,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,QAAQ,EAAE;AACX,SAAA,CAAC;;AAoBI,IAAA,SAAS,CAAC,KAAiB,EAAA;QACjC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC,OAAO,CAAC;;AAG3E,IAAA,KAAK,CAAC,EAAU,EAAA;QACtB,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;;8GAtH/E,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBARvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,IAAI,EAAE;AACJ,wBAAA,mBAAmB,EAAE,WAAW;AAChC,wBAAA,kBAAkB,EAAE,cAAc;AAClC,wBAAA,mBAAmB,EAAE;AACtB;AACF,iBAAA;;;MCIY,kBAAkB,CAAA;AAsB7B,IAAA,WAAA,GAAA;AArBQ,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAE1B,IAAO,CAAA,OAAA,GAAG,MAAM,EAAwB;QACxC,IAAa,CAAA,aAAA,GAAG,MAAM,EAAsB;AAQ5C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAgC,EAAE,iFAAC;AAEtD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,GAAG,EAAmC;AAG1D,QAAA,IAAA,CAAA,MAAM,GAAwD,MAAM,CAAC,eAAe;aAC1F,IAAI,CAAC,EAAE;AACP,aAAA,MAAM,EAAE;AAoCH,QAAA,IAAA,CAAA,oBAAoB,GAAG,CAC7B,MAAiE,KACzD;AACR,YAAA,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC;AACrC,YAAA,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,MAAM;YACpC,IAAI,CAAC,YAAY,EAAE;gBACjB;;AAEF,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE;AAC9C,YAAA,IAAI,YAAuB;YAC3B,IAAI,CAAC,IAAI,CACP,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,EAC1D,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAG;gBAClC,YAAY,GAAG,CAAC;AAChB,gBAAA,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,YAAY,CAAC,SAAS,EAAG,EAAE,YAAY,CAAC,OAAO,CAAC;AACrE,aAAC,CAAC,EACF,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,MAC7B,IAAI,CAAC,SAAS,CAAC,YAAa,EAAE,YAAY,CAAC,SAAS,EAAG,EAAE,YAAY,CAAC,OAAO,CAAC,CAC/E,CACF;YACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;AACnC,SAAC;AAEO,QAAA,IAAA,CAAA,wBAAwB,GAAG,CACjC,MAAiE,KACzD;AACR,YAAA,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,MAAM;YACrC,IAAI,CAAC,aAAa,EAAE;gBAClB;;YAEF,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;YACxC,IAAI,CAAC,IAAI,EAAE;gBACT;;AAEF,YAAA,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;AACtC,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC;AAChC,SAAC;QApEC,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,CACtC,CAAC,GAAG,EAAE,IAAI,KAAI;gBACZ,GAAG,CAAC,IAAI,CAAC,SAAS,EAAG,CAAC,IAAI,CAAC,GAAG,IAAI;AAClC,gBAAA,OAAO,GAAG;aACX,EACD,EAAiD,CAClD;AAED,YAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;AACnC,SAAC,CAAC;;IAGJ,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AACxF,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;AACzD,SAAC,CAAC;;IAGJ,WAAW,GAAA;QACT,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;;AAGlF,IAAA,mBAAmB,CAAC,OAAoD,EAAA;QACtE,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QAC9C,IAAI,CAAC,YAAY,EAAE;YACjB;;AAEF,QAAA,YAAY,CAAC,gBAAgB,CAAC,MAAM,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC1E,QAAA,YAAY,CAAC,kBAAkB,CAAC,MAAM,IAAI,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;;IAyClF,WAAW,GAAA;QACT,MAAM,SAAS,GAAkC,EAAE;QACnD,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,GAAG,KAAI;AAC3C,YAAA,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO;AAC7B,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC;YACpD,SAAS,CAAC,SAAS,CAAC,SAAS,EAAG,CAAC,IAAI,CAAC,GAAG;gBACvC,IAAI;AACJ,gBAAA,KAAK,EAAE,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC;AACtD,gBAAA,KAAK,EAAE,GAAG;AACV,gBAAA,OAAO,EAAE;aACV;AACH,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;;IAG5B,UAAU,CACR,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAa,EAC3C,KAA0B,EAC1B,OAAoB,EAAA;AAEpB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB;;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;AAC1C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC;QACvD,IAAI,MAAM,EAAE;YACV,IAAI,IAAI,CAAC,iBAAiB,KAAK,MAAM,CAAC,KAAK,EAAE;AAC3C,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;oBACtB,SAAS,EAAE,IAAI,CAAC,iBAAkB;oBAClC,QAAQ,EAAE,MAAM,CAAC,KAAK;oBACtB,YAAY,EAAE,OAAO,CAAC;AACvB,iBAAA,CAAC;AACF,gBAAA,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,KAAK;;;aAElC,IAAI,IAAI,CAAC,iBAAiB,KAAK,OAAO,CAAC,KAAK,EAAE;AACnD,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;gBACtB,SAAS,EAAE,IAAI,CAAC,iBAAkB;gBAClC,YAAY,EAAE,OAAO,CAAC;AACvB,aAAA,CAAC;AACF,YAAA,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,KAAK;;AAGxC,QAAA,qBAAqB,CAAC,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,QAAQ,GAAG,QAAQ,CAAI,EAAA,CAAA,CAAC,CAAC;;IAGhF,SAAS,CACP,EAAE,QAAQ,EAAE,QAAQ,EAAa,EACjC,KAA0B,EAC1B,OAAoB,EAAA;AAEpB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB;;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;AAC1C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC;QACvD,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBAChB,SAAS,EAAE,OAAO,CAAC,KAAK;gBACxB,QAAQ,EAAE,MAAM,CAAC,KAAK;AACtB,gBAAA,MAAM,EAAE;AACT,aAAA,CAAC;;AAEJ,QAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS;AAClC,QAAA,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM;;AAG7B,IAAA,QAAQ,CACN,KAA0B,EAC1B,OAAe,EACf,OAAe,EAAA;AAEf,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,OAAO,SAAS;;AAElB,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC;QACzE,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAC1C,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,KAAI;;YAEtB,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,OAAO,CAAC,EAAE;AAC/E,gBAAA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;;AAE5B,YAAA,OAAO,GAAG;SACX,EACD,SAAS,CACV;;8GAjLQ,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,4KASZ,2BAA2B,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FATjC,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;sBAUE,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,2BAA2B,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;;;MCwDxD,4BAA4B,CAAA;AAhEzC,IAAA,WAAA,GAAA;AAiEW,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,8EAAY;QACrC,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;QACnC,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;QACpC,IAAa,CAAA,aAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;QAE/B,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;AAC3B,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAsB,IAAI,uFAAC;QACnD,IAAoB,CAAA,oBAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAoB;QAChD,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAO;AAClC,QAAA,IAAA,CAAA,uBAAuB,GAAG,KAAK,CAAC,KAAK,8FAAC;AACtC,QAAA,IAAA,CAAA,yBAAyB,GAAG,KAAK,CAAC,QAAQ,+FAAU;QACpD,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC,KAAK,uFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;QAC/D,IAAa,CAAA,aAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAiB;AACtC,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,4EAAuB;AAC9C,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAgB,EAAE,4EAAC;QAEhC,IAAI,CAAA,IAAA,GAAG,MAAM,EAAkB;QAC/B,IAAM,CAAA,MAAA,GAAG,MAAM,EAAQ;QACvB,IAAiB,CAAA,iBAAA,GAAG,MAAM,EAG/B;QACK,IAAM,CAAA,MAAA,GAAG,MAAM,EAAkD;QACjE,IAAQ,CAAA,QAAA,GAAG,MAAM,EAAkD;AAEzD,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAClD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,YAAA,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AACvB,gBAAA,OAAO,EAAE;;AAEX,YAAA,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,EAAE;gBAC1C,OAAO,MAAM,CAAC,WAAW;;AAE3B,YAAA,OAAO,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;AAC/D,SAAC,uFAAC;AAEiB,QAAA,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,MAAK;;YAEtC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,cAAc,KAAK,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,GAAG,SAAS;AACpF,SAAC,2EAAC;AAEiB,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,kBAAkB,qFAAC;AAEjE,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAuB,MAAK;YACjE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAC3C,SAAC,gFAAC;AACiB,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAA4B,MAAK;YACpE,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACvC,SAAC,8EAAC;AAEiB,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAoB,MAAK;YAChE,OAAO;AACL,gBAAA,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AACrC,gBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;AACvB,gBAAA,MAAM,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE;AAC3B,gBAAA,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE;gBACvC,QAAQ,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI;aACjC;AACH,SAAC,kFAAC;AAGM,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,aAAa;;QAqC1C,IAAsB,CAAA,sBAAA,GAAG,CAAC;AAsDnC;AAvFC,IAAA,aAAa,CAAC,MAAkB,EAAA;AAC9B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;AACrE,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE;YAC3B,MAAM,CAAC,cAAc,EAAE;;;IAK3B,KAAK,GAAA;QACH,IAAI,CAAC,MAAM,EAAE;;IAGf,QAAQ,GAAA;;AAEN,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AAClB,YAAA,IAAI,CAAC,sBAAsB,GAAG,CAAC;;;IAInC,WAAW,GAAA;QACT,IAAI,CAAC,mBAAmB,EAAE;;AAG5B,IAAA,WAAW,CAAC,KAAoB,EAAA;AAC9B,QAAA,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAM,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;YAElE,IAAI,IAAI,EAAE;gBACR,OAAO,IAAI,CAAC,GAAG;;;;IAMrB,MAAM,GAAA;QACJ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC3B;;QAGF,IAAI,CAAC,sBAAsB,EAAE;AAC7B,QAAA,IAAI,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;;QAE3D,IAAI,IAAI,CAAC,uBAAuB,EAAE,IAAI,IAAI,CAAC,sBAAsB,KAAK,CAAC,EAAE;YACvE,QAAQ,GAAG,SAAS;AACpB,YAAA,IAAI,CAAC,sBAAsB,GAAG,CAAC;;AAEjC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACb,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAsC;AACzD,YAAA,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE;YACzB;AACD,SAAA,CAAC;;AAGJ,IAAA,aAAa,CAAC,OAAkC,EAAA;QAC9C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE;AACvC,YAAA,OAAO,SAAS;;AAElB,QAAA,IAAI,OAAO,KAAK,KAAK,EAAE;AACrB,YAAA,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,mBAAmB,CAAC;;AAC3E,aAAA,IAAI,OAAO,KAAK,MAAM,EAAE;AAC7B,YAAA,OAAO,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,qBAAqB,CAAC;;aAC/E;YACL,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,2BAA2B,CAAC;;;IAIlE,WAAW,GAAA;QACnB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW;;IAGpC,SAAS,GAAA;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;;AAGpE,IAAA,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAa,EAAA;AAC9C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACjB,KAAK,EAAE,IAAI,CAAC,YAAa,IAAI,QAAQ,GAAG,QAAQ,CAAC;AACjD,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,SAAA,CAAC;;IAGI,mBAAmB,GAAA;AACzB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;AAC/B,YAAA,IAAI,CAAC,YAAY,GAAG,SAAS;;;8GAtJtB,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EA7D7B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,4BAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CT,EA3CS,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,2oCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,oJAAE,2BAA2B,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,gBAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FA8D5C,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAhExC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,WACxB,CAAC,gBAAgB,EAAE,2BAA2B,CAAC,EAC9C,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CT,EAEgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACJ,wBAAA,OAAO,EAAE,uBAAuB;AAChC,wBAAA,mBAAmB,EAAE,oBAAoB;AACzC,wBAAA,cAAc,EAAE,QAAQ;AACxB,wBAAA,iBAAiB,EAAE,4BAA4B;AAC/C,wBAAA,SAAS,EAAE,oBAAoB;AAC/B,wBAAA,kBAAkB,EAAE,mBAAmB;AACvC,wBAAA,oBAAoB,EAAE,oBAAoB;AAC1C,wBAAA,qBAAqB,EAAE,WAAW;AAClC,wBAAA,kBAAkB,EAAE,qBAAqB;AACzC,wBAAA,mBAAmB,EAAE,sBAAsB;AAC3C,wBAAA,qBAAqB,EAAE,mBAAmB;AAC1C,wBAAA,qBAAqB,EAAE,mBAAmB;AAC1C,wBAAA,kBAAkB,EAAE;AACrB,qBAAA,EAAA,MAAA,EAAA,CAAA,2oCAAA,CAAA,EAAA;;sBAmEA,YAAY;uBAAC,aAAa,EAAE,CAAC,QAAQ,CAAC;;sBAQtC,YAAY;uBAAC,eAAe;;;MC9ElB,wBAAwB,CAAA;AA7DrC,IAAA,WAAA,GAAA;AA8DU,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AAExC,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,mFAAC;QAE1D,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;QACnC,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;QACpC,IAAa,CAAA,aAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;QAC/B,IAAU,CAAA,UAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;QAC7B,IAAc,CAAA,cAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;QACjC,IAAoB,CAAA,oBAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAwB;AACpD,QAAA,IAAA,CAAA,uBAAuB,GAAG,KAAK,CAAC,KAAK,8FAAC;AACtC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,gFAAU;AACrC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAiB;AACvC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,8EAAY;QACrC,IAAe,CAAA,eAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;QAClC,IAAa,CAAA,aAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAiB;QACtC,IAAW,CAAA,WAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAW;AAC9B,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAC,KAAK,4FAAC;AACpC,QAAA,IAAA,CAAA,yBAAyB,GAAG,KAAK,CAAC,QAAQ,+FAAU;AAEpD,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,QAAQ,kFAAmB;AAChD,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,6EAAyB;QAEjD,IAAI,CAAA,IAAA,GAAG,MAAM,EAAa;QAC1B,IAAO,CAAA,OAAA,GAAG,MAAM,EAAwB;QACxC,IAAM,CAAA,MAAA,GAAG,MAAM,EAA6B;QAC5C,IAAQ,CAAA,QAAA,GAAG,MAAM,EAA6B;QAC9C,IAAM,CAAA,MAAA,GAAG,MAAM,EAAQ;QACvB,IAAiB,CAAA,iBAAA,GAAG,MAAM,EAG/B;AAEK,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACrC,YAAA,OAAO,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACxC,SAAC,oFAAC;AACO,QAAA,IAAA,CAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;YAC1C,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC9C,OAAO,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AACrD,SAAC,yFAAC;AACO,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;YACrC,OAAO;AACL,gBAAA,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;AACpC,gBAAA,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;AACxC,gBAAA,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO;aACtC;AACH,SAAC,oFAAC;AAEO,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AACnC,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB;sBACpC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC;AAC3C,sBAAE,IAAI,CAAC,UAAU,EAAE;gBACrB,OAAO,KAAK,GAAG,IAAI;;AAGrB,YAAA,OAAO,MAAM;AACf,SAAC,kFAAC;AAsHH;AApHC,IAAA,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAkD,EAAA;AAC/E,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;;AAGvD,IAAA,gBAAgB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAkD,EAAA;AAChF,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;;IAGjD,eAAe,CACrB,KAAa,EACb,MAAgC,EAAA;QAEhC,IAAI,MAAM,CAAC,QAAQ,IAAI,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE;AAC/C,YAAA,KAAK,GAAG,MAAM,CAAC,QAAQ;;aAClB,IAAI,MAAM,CAAC,QAAQ,IAAI,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE;AACtD,YAAA,KAAK,GAAG,MAAM,CAAC,QAAQ;;QAEzB,OAAO;YACL,MAAM;AACN,YAAA,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE;AACzB,YAAA,QAAQ,EAAE;SACX;;AAGH,IAAA,iBAAiB,CAAC,KAA2B,EAAA;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC;AAC7C,QAAA,MAAM,CAAC,QAAQ,GAAG,KAAK;AACvB,QAAA,MAAM,CAAC,mBAAmB,GAAG,SAAS;AACtC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG1B,IAAA,eAAe,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAsB,EAAA;AACvE,QAAA,IAAI,SAAS,IAAI,SAAS,KAAK,CAAC,EAAE;YAChC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;AAC3C,YAAA,SAAS,CAAC,QAAQ,GAAG,KAAK;AAC1B,YAAA,SAAS,CAAC,mBAAmB,GAAG,SAAS;;AAE3C,QAAA,IAAI,QAAQ,IAAI,QAAQ,KAAK,CAAC,EAAE;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC1C,YAAA,SAAS,CAAC,QAAQ,GAAG,IAAI;AAEzB,YAAA,IAAI,YAAY,KAAK,QAAQ,EAAE;gBAC7B,SAAS,CAAC,mBAAmB,GAAG;AAC9B,oBAAA,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,YAAY,GAAG,QAAQ,GAAG,eAAe,GAAG,cAAc;iBACzF;;;;AAKP,IAAA,SAAS,CAAC,KAAa,EAAA;AACrB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;QAC1C,MAAM,eAAe,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM;AACvD,QAAA,IAAI,KAAK,GAAG,eAAe,EAAE;YAC3B,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;;QAGxC,MAAM,iBAAiB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM;AACzD,QAAA,IAAI,KAAK,GAAG,eAAe,GAAG,iBAAiB,EAAE;YAC/C,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,eAAe,CAAC;;AAG1D,QAAA,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,eAAe,GAAG,iBAAiB,CAAC;;AAG9E,IAAA,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAkB,EAAA;;AAEpD,QAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;YACnB;;AAGF,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC;AAC5D,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACb,KAAK;AACL,YAAA,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC;YAC9B,SAAS;YACT;AACD,SAAA,CAAC;;AAGJ,IAAA,YAAY,CACV,MAAmC,EACnC,SAAoC,EACpC,QAAmC,EAAA;QAEnC,IAAI,GAAG,GAAG,CAAC;AAEX,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AACtC,YAAA,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;YACZ,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE;gBAC1B,GAAG,GAAG,CAAC;;AAET,YAAA,OAAO,CAAC;AACV,SAAC,CAAC;AAEF,QAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;AAC1B,YAAA,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;;aACf,IAAI,SAAS,EAAE;AACpB,YAAA,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,QAAQ;;aACpB;AACL,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,QAAQ,EAAE;AAChC,gBAAA,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC;;AAGtC,YAAA,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;;AAGlD,QAAA,OAAO,KAAK;;AAGd,IAAA,iBAAiB,CAAC,KAAkC,EAAA;AAClD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,EAAE;QAExC,OAAO;AACL,YAAA,KAAK,EAAE,CAAG,EAAA,MAAM,CAAC,KAAK,CAAC,CAAI,EAAA;SAC5B;;8GA9KQ,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EA1DzB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+TAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAlDS,kBAAkB,EAAE,QAAA,EAAA,aAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,EAAE,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,4BAA4B,0ZAAE,2BAA2B,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,gBAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FA2DrF,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBA7DpC,SAAS;+BACE,kBAAkB,EAAA,OAAA,EACnB,CAAC,kBAAkB,EAAE,OAAO,EAAE,4BAA4B,EAAE,2BAA2B,CAAC,EACvF,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDT,EAEgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACJ,wBAAA,OAAO,EAAE,kBAAkB;AAC3B,wBAAA,mBAAmB,EAAE,gBAAgB;AACrC,wBAAA,eAAe,EAAE;AAClB,qBAAA,EAAA,MAAA,EAAA,CAAA,+TAAA,CAAA,EAAA;;;MCtFU,mCAAmC,CAAA;AAC9C,IAAA,OAAO,sBAAsB,CAC3B,SAA8C,EAC9C,OAAgB,EAAA;AAEhB,QAAA,OAAO,IAAI;;8GALF,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,qCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAnC,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAH/C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;MCEY,2BAA2B,CAAA;AAHxC,IAAA,WAAA,GAAA;AAIE;;;AAGG;AACM,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAoD,CAAC,gFAAC;QAEvE,IAAc,CAAA,cAAA,GAAG,KAAK,CAAsC,SAAS,sFAC5E,KAAK,EAAE,UAAU,EAAA,CACjB;QAEO,IAAc,CAAA,cAAA,GAAG,YAAY,CAAC,mCAAmC,sFACxE,IAAI,EAAE,WAAW,EAAA,CACjB;AAEO,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAkD,MAAK;YACjF,OAAO,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE;AACvD,SAAC,+EAAC;AAEF;;AAEG;QACM,IAAM,CAAA,MAAA,GAAG,MAAM,EAA4B;AA+BrD;AA7BC;;AAEG;AACH,IAAA,eAAe,CAAC,GAAS,EAAA;AACvB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,KAAK,EAAE;AACR,SAAA,CAAC;;AAGJ;;AAEG;IACH,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,KAAK,EAAE;AACR,SAAA,CAAC;;AAGJ;;AAEG;IACH,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,YAAA,IAAI,EAAE,KAAK;AACX,YAAA,KAAK,EAAE;AACR,SAAA,CAAC;;8GAnDO,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAWC,mCAAmC,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAClE,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAZR,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;AAYwC,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,mCAAmC,CAAE,EAAA,EAAA,GAAA;AAC1E,4BAAA,IAAI,EAAE;AACP,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MCyFU,kBAAkB,CAAA;AAqkB7B,IAAA,WAAA,GAAA;AAlkBQ,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,iBAAiB,CAAC;QAC9B,IAAa,CAAA,aAAA,GACnB,MAAM,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;YAEhD,MAAM,CAAqB,eAAsB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAExE;;AAEG;QACM,IAAoB,CAAA,oBAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,sBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAwB;AAE7D;;AAEG;QACM,IAAI,CAAA,IAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAA2C;AAEhE;;AAEG;QACM,IAAW,CAAA,WAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAc;AAE1C;;;;;;;;;;;;;;AAcG;QACM,IAAW,CAAA,WAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAiB;AAE7C;;AAEG;QACM,IAAO,CAAA,OAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAiB;AAEzC;;;;AAIG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAS,EAAE,+EAAC;AAErC;;AAEG;QACM,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC,KAAK,kFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEnE;;;;;AAKG;QACM,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC,KAAK,yFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE1E;;AAEG;QACM,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC,KAAK,kFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEnE;;;AAGG;QACM,IAAS,CAAA,SAAA,GAAG,KAAK,CACxB,IAAI,CAAC,aAAa,EAAE,SAAS,IAAI,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACpC;AAED;;;AAGG;AACM,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAuC,UAAU,iFAAC;AAE7E;;;AAGG;QACM,IAAY,CAAA,YAAA,GAAG,KAAK,CAAkB,IAAI,CAAC,aAAa,EAAE,YAAY,IAAI,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAEtF;;;AAGG;AACM,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,IAAI,CAAC,EACjE,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,cAAA,EAAA,8BAAA,EAAA,CAAA,EAAA,SAAS,EAAE,eAAe,GAC1B;AAEF;;;AAGG;QACM,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC,KAAK,sFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEvE;;;AAGG;QACM,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC,KAAK,uFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAExE;;;AAGG;QACM,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC,SAAS,6EAC9B,SAAS,EAAE,0BAA0B,EAAA,CACrC;AAEF;;;AAGG;QACM,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC,CAAC,6EAAI,SAAS,EAAE,eAAe,EAAA,CAAG;AAEzD;;;AAGG;AACM,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAS,CAAC,6EAAC;AAElC;;;AAGG;QACM,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC,KAAK,wFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEzE;;;AAGG;QACM,IAAqB,CAAA,qBAAA,GAAG,KAAK,CAAC,KAAK,6FAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE9E;;;;;;;;;;;AAWG;QACM,IAAa,CAAA,aAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAiB;AAE/C;;;AAGG;QACM,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC,IAAI,mFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEnE;;;AAGG;QACM,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC,IAAI,mFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEnE;;AAEG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAW,QAAQ,+EAAC;AAE7C;;;AAGG;AACM,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAgB,EAAE,4EAAC;AAEzC;;AAEG;QACM,IAAU,CAAA,UAAA,GAAG,KAAK,CACzB,IAAI,CAAC,aAAa,EAAE,UAAU,IAAI,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACrC;AAED;;;;;;;;;;;;;;;;;;;AAmBG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK,CACvB,IAAI,CAAC,aAAa,EAAE,QAAQ,IAAI,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACnC;AAED;;;;AAIG;QACM,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAmD;AAE5E;;;;;;;AAOG;QACM,IAAW,CAAA,WAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAA0D;AAEtF;;;;;;;AAOG;QACM,IAAY,CAAA,YAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAA4D;AAEzF;;;;AAIG;QACM,IAAqB,CAAA,qBAAA,GAAG,KAAK,CAAC,KAAK,6FAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE9E;;;AAGG;QACM,IAAW,CAAA,WAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAc;AAE1C;;;AAGG;QACM,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC,KAAK,2FAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE5E;;AAEG;QACM,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC,IAAI,sFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEtE;;AAEG;QACM,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AAE3C;;AAEG;QACM,IAAc,CAAA,cAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAU;AAEzC;;AAEG;QACM,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC,KAAK,kFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEnE;;AAEG;QACM,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC,EAAE,qFAAI,SAAS,EAAE,eAAe,EAAA,CAAG;AAElE;;AAEG;AACM,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAC,KAAK,sFAAC;AAEvC;;;;;;;AAOG;QACM,IAAe,CAAA,eAAA,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAA0B;AAE1D;;;AAGG;QACM,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC,KAAK,oFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAErE;;;;AAIG;QACM,IAAuB,CAAA,uBAAA,GAAG,KAAK,CAAC,KAAK,+FAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAEhF;;;;;;;AAOG;QACM,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC,IAAI,2FAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE3E;;;;;;;AAOG;QACM,IAAuB,CAAA,uBAAA,GAAG,KAAK,CAAC,IAAI,+FAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAE/E;;AAEG;QACM,IAAM,CAAA,MAAA,GAAG,MAAM,EAAe;AAEvC;;AAEG;QACM,IAAQ,CAAA,QAAA,GAAG,MAAM,EAAuB;AAEjD;;;;;;;;;;;;;;;AAeG;QACM,IAAM,CAAA,MAAA,GAAG,MAAM,EAAqB;AAE7C;;;;;;;;;;;;;;;AAeG;QACM,IAAI,CAAA,IAAA,GAAG,MAAM,EAAa;AAEnC;;AAEG;QACM,IAAI,CAAA,IAAA,GAAG,MAAM,EAAa;AAEnC;;AAEG;QACM,IAAO,CAAA,OAAA,GAAG,MAAM,EAAgB;AAEzC;;AAEG;QACM,IAAM,CAAA,MAAA,GAAG,MAAM,EAAqB;AAE7C;;;;AAIG;QACM,IAAgB,CAAA,gBAAA,GAAG,MAAM,EAA0B;AAE5D;;AAEG;QACM,IAAU,CAAA,UAAA,GAAG,MAAM,EAAmC;AAE/D;;;;AAIG;QACM,IAAa,CAAA,aAAA,GAAG,MAAM,EAAiB;AAEhD;;;AAGG;AACM,QAAA,IAAA,CAAA,eAAe,GACtB,eAAe,CAAiC,wBAAwB,sFAAC;AAc3E;;;AAGG;AACM,QAAA,IAAA,CAAA,OAAO,GAAG,YAAY,CAAC,wBAAwB,8EAAC;AAExC,QAAA,IAAA,CAAA,cAAc,GAC7B,SAAS,CAAC,QAAQ,CAChB,sBAAsB,CACvB;QAEc,IAAc,CAAA,cAAA,GAAG,SAAS,CAAC,wBAAwB,EAAA,EAAA,IAAA,SAAA,GAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,8BAAA,EAAA,CAAA,EAClE,IAAI,GAAE,UAAuB,CAAA,EAAA,CAC7B;AAEe,QAAA,IAAA,CAAA,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE;YACzE,IAAI,GAAE,UAAuB;AAC9B,SAAA,CAAC;;QAGO,IAAe,CAAA,eAAA,GAAG,YAAY,CAAC,wBAAwB,uFAC9D,IAAI,EAAE,WAAW,EAAA,CACjB;AAEF;;AAEG;AACM,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACvC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,YAAA,IAAI,eAAe,GAAG,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM;AAE7D,YAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;AAC9B,gBAAA,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE;AACvD,gBAAA,MAAM,UAAU,GAAG,IAAI,GAAG,KAAK;AAC/B,gBAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,KAAK,UAAU;;AAGlD,YAAA,OAAO,CAAC,EAAE,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,KAAK,CAAC,IAAI,eAAe,CAAC;AACrE,SAAC,sFAAC;AAEF,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAA0B,UAAU,CAAC,CAAC,aAAa;AAC1D,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,kFAAC;QACrD,IAAQ,CAAA,QAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAC9C,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,YAAA,MAAM,YAAY,GAAoB,IAAI,CAAC,YAAY,EAAE;AACzD,YAAA,OAAO,OAAO,YAAY,KAAK,QAAQ,GAAI,YAAuB,KAAK,MAAM,GAAG,IAAI;AACtF,SAAC,qFAAC;AACO,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAClC,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;gBACrB,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM;AACrC,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE;gBAC3C,IAAI,aAAa,EAAE;oBACjB,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,MAAM;;AAE9E,gBAAA,OAAO,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE;;AAErC,YAAA,OAAO,CAAC;AACV,SAAC,iFAAC;QACO,IAAQ,CAAA,QAAA,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AACvD,QAAA,IAAA,CAAA,SAAS,GAAqC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;;AAEtE,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,CAAC,oFAAC;QAE1C,IAAQ,CAAA,QAAA,GAAG,CAAC;AACH,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;AACrC,YAAA,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;AAErC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;YAC1B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;AAC3C,gBAAA,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;;YAG9D,IAAI,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;gBACpD,IAAI,GAAG,kBAAkB,CACvB,IAAI,EACJ,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAC9C,qBAAqB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAC7C;;AAGH,YAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;;AAE/E,gBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;;AAGvB,YAAA,OAAO,IAAI;AACb,SAAC,oFAAC;AAEO,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAAC,MAAK;AAC5C,YAAA,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;AACpC,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;AAEtC,YAAA,IAAI,CAAC,WAAW,IAAI,WAAW,EAAE;AAC/B,gBAAA,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,gBAAA,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,WAAW,CAAC;;YAGjE,IAAI,CAAC,WAAW,EAAE;;AAEhB,gBAAA,OAAO,SAAS;;AAGlB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;YAC1B,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;AAC3C,gBAAA,IAAI,WAAW,EAAE,MAAM,EAAE;oBACvB,WAAW,GAAG,eAAe,CAC3B,WAAW,EACX,IAAI,CAAC,gBAAgB,EAAE,EACvB,KAAK,EACL,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,KAAK,WAAW,CAAC,CAC5D;;;AAIL,YAAA,OAAO,WAAW;AACpB,SAAC,2FAAC;;;AAIO,QAAA,IAAA,CAAA,gBAAgB,GAAG,YAAY,CAAC,MACvC,gBAAgB,CACd,IAAI,CAAC,eAAe,EAAE,CAAC;AACrB,cAAE,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;AAC5C,eAAG,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,EAC1B,IAAI,CAAC,mBAAmB,CACzB,uFACF;AAED;;;AAGG;AACM,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACvC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AAC5B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;YAChC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1E,SAAC,sFAAC;QAEF,IAAc,CAAA,cAAA,GAAmB,EAAE;QACnC,IAAmB,CAAA,mBAAA,GAAG,IAAI,CAAC,aAAa,EAAE,kBAAkB,IAAI,GAAG;AACnE;;;;AAIG;AACM,QAAA,IAAA,CAAA,gBAAgB,GAAG,SAAS,CAAC,wBAAwB,uFAAC;QACrD,IAAqB,CAAA,qBAAA,GAAG,KAAK;AACtB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAoC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,iFAAC;AA6DhG;;;;;AAKG;AACM,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAmC,CAAC,IAAG;AACjE,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;;;AAGtB,gBAAA,OAAQ,CAAiB,CAAC,GAAG,IAAI,CAAC;;iBAC7B;AACL,gBAAA,OAAO,CAAC;;AAEZ,SAAC,kFAAC;;;QAtEA,MAAM,CAAC,MAAK;;YAEV,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,KAAK,EAAE;;YAEZ,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;AACzC,SAAC,CAAC;QAEF,MAAM,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;;AAGzC;;AAEG;IACH,SAAS,GAAA;QACP,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;AACvF,QAAA,IAAI,UAAU,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AACxC,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC;YAC7C,IAAI,UAAU,EAAE;gBACd,cAAc,CAAC,MAAK;oBAClB,IAAI,CAAC,WAAW,EAAE;AAClB,oBAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;AACxB,iBAAC,CAAC;;AAGJ,YAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;;;AAI1B;;;AAGG;IACH,eAAe,GAAA;;;AAGb,QAAA,IAAI,OAAO,qBAAqB,KAAK,WAAW,EAAE;YAChD;;QAGF,qBAAqB,CAAC,MAAK;YACzB,IAAI,CAAC,WAAW,EAAE;;YAGlB,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AAC9C,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACb,oBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,oBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,oBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,oBAAA,MAAM,EAAE,CAAC;AACT,oBAAA,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,iBAAA,CAAC;;AAEN,SAAC,CAAC;;AAmBJ;;;;;AAKG;IACH,YAAY,CAAC,aAAmC,EAAE,OAAmB,EAAA;;AAEnE,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,EAA4B;QAC/C,IAAI,CAAC,GAAG,CAAC;AAET,QAAA,aAAa,CAAC,OAAO,CAAC,IAAI,IAAG;YAC3B,IAAI,CAAC,IAAI,EAAE;;gBAET;;AAGF,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;YACzB,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;YAC1B,IAAI,CAAC,KAAK,EAAE;gBACV,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;;iBACf;AACL,gBAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;;AAElB,YAAA,CAAC,EAAE;AACL,SAAC,CAAC;AAEF,QAAA,MAAM,QAAQ,GAAG,CAAC,GAAqB,EAAE,KAAa,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;;QAG3E,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;AAGnD;;;;;;;;;;AAUG;IACH,WAAW,GAAA;QACT,IAAI,CAAC,eAAe,EAAE;;AAGxB;;AAEG;IAGH,cAAc,GAAA;QACZ,IAAI,CAAC,WAAW,EAAE;;AAGpB;;;AAGG;IACH,kBAAkB,CAChB,QAAQ,GAAG,CAAC,CAAC,EACb,UAAsB,GAAA,IAAI,CAAC,UAAU,EAAE,EAAA;AAEvC,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAC9B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACvC,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,EAAE;;AAEX,QAAA,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,aAAa;AACxE,QAAA,IAAI,CAAC,qBAAqB,GAAG,YAAY,GAAG,YAAY;QACxD,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;YACjD,KAAK,GAAG,KAAK,IAAI,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC,CAAC;;;;QAK/E,SAAS,CAAC,MAAK;AACb,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,OAAO,EAAE;AACjC,gBAAA,qBAAqB,CACnB,OAAO,EACP,KAAK,EACL,QAAQ,EACR,UAAU,EACV,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,eAAe,CAAC,KAAK,CAC3B;;AACI,iBAAA,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,MAAM,EAAE;AACvC,gBAAA,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC;;AAEtC,SAAC,CAAC;AAEF,QAAA,OAAO,OAAO;;AAGhB;;;;AAIG;IACH,eAAe,GAAA;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE;AACjD,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;;AAG3B;;AAEG;AACH,IAAA,UAAU,CAAC,MAAc,EAAA;;;;QAIvB,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;YACnD;;AAGF,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QAEvB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE;AAClC,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACb,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,gBAAA,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE;AAC9B,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,aAAA,CAAC;;;AAIN;;AAEG;AACH,IAAA,YAAY,CAAC,KAAkB,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO;AAC7B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;;QAGvB,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,aAAa;QACrD,IAAI,QAAQ,EAAE;AACZ,YAAA,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO;;;AAIvC;;AAEG;AACH,IAAA,YAAY,CAAC,KAAqB,EAAA;QAChC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,cAAc,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;AAE3D,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACb,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE;AAC9B,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,SAAA,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;AAC9B,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACxB,aAAA,CAAC;;;AAIN;;AAEG;IACH,YAAY,GAAA;;;;QAIV,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AAC9C,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAI,IAAI,CAAC,SAAS,EAAa,CAAC;YACxE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;;;AAI1B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,YAAA,OAAO,KAAK;;;AAId,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM;;AAGpC;;AAEG;IACH,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE;AAC1B,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,EAAE;YAC/C,IAAI,WAAW,EAAE;gBACf,OAAO,WAAW,CAAC,MAAM;;iBACpB;AACL,gBAAA,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM;;;AAItC,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE;;AAGrB;;AAEG;AACH,IAAA,mBAAmB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAsD,EAAA;AACvF,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;YACzB,KAAK;AACL,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,OAAO,EAAE,cAAc,CAAC,MAAM;AAC/B,SAAA,CAAC;;AAGJ;;AAEG;AACH,IAAA,gBAAgB,CAAC,EAAE,KAAK,EAAE,GAAG,EAAgD,EAAA;AAC3E,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;;AAGnE;;AAEG;AACH,IAAA,cAAc,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAA6B,EAAA;;AAEvE,QAAA,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB;;QAGF,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;AACnD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACpC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;;;AAG7B,QAAA,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,GAAG,QAAQ;AAC/B,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC;AAE5B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,YAAA,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC;YAC9B,QAAQ;YACR;AACD,SAAA,CAAC;;AAGJ,IAAA,gBAAgB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAA6B,EAAA;AAC9D,QAAA,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB;;AAEF,QAAA,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC1B,QAAA,MAAM,CAAC,UAAU,GAAG,QAAQ;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;AACnD,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC;;AAG9B;;AAEG;AACH,IAAA,eAAe,CAAC,KAA2B,EAAA;QACzC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AACzD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC9B,QAAA,IAAI,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW,EAAE;YAC1F;;AAGF,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,MAAM;AACvB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO;;aACpB;AACL,YAAA,IAAI,QAAQ,GAAG,SAAS,EAAE;AACxB,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;AAChC,gBAAA,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;oBACzC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;;AAEvB,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,QAAQ;;iBACpB;AACL,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;AAChC,gBAAA,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;oBACzC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;;AAEvB,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,QAAQ;;;AAI7B,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;AAE/B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;;AAGvE;;AAEG;AACH,IAAA,YAAY,CAAC,KAAgB,EAAA;;AAE3B,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;AAC9B,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACxB,aAAA,CAAC;;QAGJ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;;AAG3B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,cAAc,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;;AAE3D,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACb,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE;AAC9B,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGvB;;AAEG;IACH,cAAc,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;;AAE9B,YAAA,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE;AACvD,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,KAAK,IAAI,GAAG,KAAK;;YAG3D,IAAI,CAAC,WAAW,EAAE;gBAChB,IAAI,CAAC,QAAQ,CAAC,GAAG,CACf,IAAI,CAAC,aAAa;AACf,qBAAA,KAAK,CAAC,KAAK,EAAE,IAAI;qBACjB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAW,CAClC;;iBACI;AACL,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;;;aAElB;AACL,YAAA,IAAI,YAAoB;AACxB,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,EAAE;YAChD,IAAI,iBAAiB,EAAE;gBACrB,YAAY,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,MAAM,EACtC,GAAG,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EACvC;;iBACI;gBACL,YAAY,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC;;;AAGzD,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM;;YAElE,IAAI,CAAC,WAAW,EAAE;AAChB,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC;;iBAC1B;AACL,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;;;AAIzB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACf,YAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACxB,SAAA,CAAC;;AAGJ;;AAEG;AACH,IAAA,YAAY,CAAC,QAAgB,EAAA;QAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;;AAGhC;;AAEG;AACH,IAAA,YAAY,CAAC,KAAoB,EAAA;AAC/B,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG;;AAErB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE;AACvC,QAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,SAAS,CAC5C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAU,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,SAAU,CAAC,CAClD;AACD,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;;IAGzC,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC;;IAGzE,WAAW,CAAC,GAAS,EAAE,OAA4B,EAAA;AACjD,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;AACtB,YAAA,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC;;;AAIvD,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE;AACvC,YAAA,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC;;AAGlE,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;AAChB,YAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;;QAG1D,IAAI,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AACpD,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC;YAClC;;QAGF,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;AAC/C,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AAChB,YAAA,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,CAAA,CAAE,CAAC;;;;QAK1C,IAAI,CAAC,cAAc,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC;;AAG7C,IAAA,eAAe,CAAC,GAAS,EAAE,OAA4B,EAAE,WAAW,GAAG,KAAK,EAAA;QAClF,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;AAE/C,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YAChB,IAAI,CAAC,cAAc,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC;YACnD;;QAGF,IAAI,WAAW,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,CAAA,CAAE,CAAC;;QAG1C,WAAW,CACT,GAAG,EACH,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EACjB,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAC9C,qBAAqB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAC7C;AACD,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;AAErC,QAAA,cAAc,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;;8GAtkCrD,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAtBlB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,cAAA,EAAA,KAAA,EAAA,aAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,uBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,+BAAA,EAAA,0BAAA,EAAA,kCAAA,EAAA,sBAAA,EAAA,8BAAA,EAAA,wBAAA,EAAA,gCAAA,EAAA,uBAAA,EAAA,+BAAA,EAAA,6BAAA,EAAA,oCAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,yBAAyB;AAClC,gBAAA,WAAW,EAAE;AACd;AACF,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,SAAA,EAibiD,wBAAwB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAkB1C,wBAAwB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAgBhB,wBAAwB,EACxD,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,EA9BL,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,2BAA2B,8EAM3B,6BAA6B,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAWvC,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGkB,wBAAwB,EAC5D,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAU,EAGiC,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,sBAAsB,EACjE,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAU,EAmIoB,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,wBAAwB,gEC/qBhE,kpJAiHA,EAAA,MAAA,EAAA,CAAA,yGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjCI,mBAAmB,EAAA,QAAA,EAAA,sBAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,wBAAwB,EACxB,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,OAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,2BAAA,EAAA,cAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,sBAAsB,EACtB,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,uBAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,eAAA,EAAA,UAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gCAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,MAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,wBAAwB,mTACxB,oBAAoB,EAAA,QAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;AA+tBtB,UAAA,CAAA;IADC,YAAY,CAAC,CAAC;AAGd,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA;2FAvsBU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAjC9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAChB,OAAA,EAAA;wBACP,mBAAmB;wBACnB,wBAAwB;wBACxB,sBAAsB;wBACtB,wBAAwB;wBACxB;qBACD,EAGU,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,yBAAyB;AAClC,4BAAA,WAAW,EAAoB;AAChC;qBACF,EACgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACJ,wBAAA,OAAO,EAAE,eAAe;AACxB,wBAAA,sBAAsB,EAAE,kBAAkB;AAC1C,wBAAA,mBAAmB,EAAE,wBAAwB;AAC7C,wBAAA,yBAAyB,EAAE,cAAc;AACzC,wBAAA,qBAAqB,EAAE,kBAAkB;AACzC,wBAAA,qBAAqB,EAAE,cAAc;AACrC,wBAAA,oBAAoB,EAAE,+BAA+B;AACrD,wBAAA,4BAA4B,EAAE,gCAAgC;AAC9D,wBAAA,wBAAwB,EAAE,4BAA4B;AACtD,wBAAA,0BAA0B,EAAE,8BAA8B;AAC1D,wBAAA,yBAAyB,EAAE,6BAA6B;AACxD,wBAAA,+BAA+B,EAAE;AAClC,qBAAA,EAAA,QAAA,EAAA,kpJAAA,EAAA,MAAA,EAAA,CAAA,yGAAA,CAAA,EAAA;6xKAkaiD,wBAAwB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA;sBAKzE,YAAY;uBAAC,2BAA2B;;sBAMxC,YAAY;uBAAC,6BAA6B;AAOX,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,wBAAwB,CAIpD,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,sBAAsB,CAGkB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,wBAAwB,CAAE,EAAA,EAAA,GAAA;4BACpE,IAAI,GAAE,UAAuB;AAC9B,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAEkD,sBAAsB,CAAE,EAAA,EAAA,GAAA;4BACzE,IAAI,GAAE,UAAuB;AAC9B,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAGuC,wBAAwB,CAAE,EAAA,EAAA,GAAA;AAChE,4BAAA,IAAI,EAAE;AACP,yBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MA6HqC,wBAAwB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA;sBAkI7D,YAAY;uBAAC,eAAe;;;AE/yB/B;;;;;;;;;;AAUG;MAIU,mBAAmB,CAAA;AAO9B,IAAA,WAAA,GAAA;AANiB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;QAEhE,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC,KAAK,gFAC7B,SAAS,EAAE,gBAAgB,EAAA,CAC3B;QAGA,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;gBACnB,IAAI,CAAC,kBAAkB,EAAE;;AAE7B,SAAC,CAAC;;IAGI,kBAAkB,GAAA;AACxB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa;QAClD,IAAI,CAAC,WAAW,EAAE;YAChB;;AAEF,QAAA,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAc,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,IAAG;AACzE,YAAA,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC;AACpC,SAAC,CAAC;;8GAtBO,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;MC6CY,kBAAkB,CAAA;AAC7B;;;AAGG;IACH,OAAO,OAAO,CACZ,aAA6C,EAAA;QAE7C,OAAO;AACL,YAAA,QAAQ,EAAE,kBAAkB;AAC5B,YAAA,SAAS,EAAE,CAAC,0BAA0B,CAAC,aAAa,CAAC;SACtD;;8GAXQ,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,YApC3B,gCAAgC;YAChC,kBAAkB;YAClB,wBAAwB;YACxB,2BAA2B;YAC3B,6BAA6B;YAC7B,mCAAmC;YACnC,8BAA8B;YAC9B,4BAA4B;YAC5B,iCAAiC;YACjC,6BAA6B;YAC7B,wBAAwB;YACxB,uBAAuB;YACvB,qCAAqC;YACrC,mBAAmB;YACnB,wBAAwB;AACxB,YAAA,wBAAwB,aAGxB,kBAAkB;YAClB,2BAA2B;YAC3B,6BAA6B;YAC7B,mCAAmC;YACnC,wBAAwB;YACxB,8BAA8B;YAC9B,4BAA4B;YAC5B,iCAAiC;YACjC,6BAA6B;YAC7B,gCAAgC;YAChC,wBAAwB;YACxB,uBAAuB;YACvB,qCAAqC;YACrC,mBAAmB;YACnB,wBAAwB;YACxB,wBAAwB,CAAA,EAAA,CAAA,CAAA;+GAGf,kBAAkB,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAtC9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,gCAAgC;wBAChC,kBAAkB;wBAClB,wBAAwB;wBACxB,2BAA2B;wBAC3B,6BAA6B;wBAC7B,mCAAmC;wBACnC,8BAA8B;wBAC9B,4BAA4B;wBAC5B,iCAAiC;wBACjC,6BAA6B;wBAC7B,wBAAwB;wBACxB,uBAAuB;wBACvB,qCAAqC;wBACrC,mBAAmB;wBACnB,wBAAwB;wBACxB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,kBAAkB;wBAClB,2BAA2B;wBAC3B,6BAA6B;wBAC7B,mCAAmC;wBACnC,wBAAwB;wBACxB,8BAA8B;wBAC9B,4BAA4B;wBAC5B,iCAAiC;wBACjC,6BAA6B;wBAC7B,gCAAgC;wBAChC,wBAAwB;wBACxB,uBAAuB;wBACvB,qCAAqC;wBACrC,mBAAmB;wBACnB,wBAAwB;wBACxB;AACD;AACF,iBAAA;;;ACpDD;;;;;;;;AAQG;AACH;AACa,MAAA,aAAa,GAAG;AAC3B,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,IAAI,EAAE;;AAaR;;;;;;;;AAQG;AACH;AACa,MAAA,QAAQ,GAAG;AACtB,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,KAAK,EAAE;;AAKT;;;;;;;;AAQG;AACH;AACa,MAAA,UAAU,GAAG;AACxB,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,KAAK,EAAE;;AA4DT;;;;;;;;AAQG;AACH;AACa,MAAA,eAAe,GAAG;AAC7B,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,IAAI,EAAE;;AAuFR;;;;;;;;AAQG;AACH;AACa,MAAA,aAAa,GAAG;AAC3B,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,UAAU,EAAE,YAAY;AACxB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,QAAQ,EAAE;;;AC5OZ;;AAEG;AAEH;;ACJA;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"swimlane-ngx-datatable.mjs","sources":["../../../../projects/swimlane/ngx-datatable/src/lib/components/body/body-group-header-template.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/body-group-header.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/body-row-def.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/columns/column-cell.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/columns/column-ghost-cell.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/columns/column-header.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/columns/tree.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/columns/column.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/directives/visibility.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/ngx-datatable.config.ts","../../../../projects/swimlane/ngx-datatable/src/lib/services/scrollbar-helper.service.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/camel-case.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/column-prop-getters.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/id.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/sort.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/column-helper.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/column.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/math.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/number-or-undefined-attribute.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/table-token.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/throttle.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/tree.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/keys.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/row-height-cache.ts","../../../../projects/swimlane/ngx-datatable/src/lib/utils/selection.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/body-group-wrapper.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/body-row-wrapper.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/body-cell.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/body-row.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/body-row.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/ghost-loader/ghost-loader.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/ghost-loader/ghost-loader.component.html","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/scroller.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/summary/summary-row.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/body.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/body/progress-bar.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/footer/pager.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/footer/footer.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/footer/footer-template.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/footer/footer.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/directives/datatable-draggable.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/directives/orderable.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/header/header-cell.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/header/header.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/row-detail/row-detail-template.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/row-detail/row-detail.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/datatable.component.ts","../../../../projects/swimlane/ngx-datatable/src/lib/components/datatable.component.html","../../../../projects/swimlane/ngx-datatable/src/lib/directives/disable-row.directive.ts","../../../../projects/swimlane/ngx-datatable/src/lib/ngx-datatable.module.ts","../../../../projects/swimlane/ngx-datatable/src/lib/types/public.types.ts","../../../../projects/swimlane/ngx-datatable/src/public-api.ts","../../../../projects/swimlane/ngx-datatable/src/swimlane-ngx-datatable.ts"],"sourcesContent":["import { Directive } from '@angular/core';\n\nimport { GroupContext } from '../../types/public.types';\n\n@Directive({\n selector: '[ngx-datatable-group-header-template]'\n})\nexport class DatatableGroupHeaderTemplateDirective {\n static ngTemplateContextGuard(\n directive: DatatableGroupHeaderTemplateDirective,\n context: unknown\n ): context is GroupContext {\n return true;\n }\n}\n","import { computed, contentChild, Directive, input, output, TemplateRef } from '@angular/core';\n\nimport { Group, GroupContext, GroupToggleEvents, Row } from '../../types/public.types';\nimport { DatatableGroupHeaderTemplateDirective } from './body-group-header-template.directive';\n\n@Directive({\n selector: 'ngx-datatable-group-header'\n})\nexport class DatatableGroupHeaderDirective<TRow extends Row = any> {\n /**\n * Row height is required when virtual scroll is enabled.\n */\n readonly rowHeight = input<number | ((group?: Group<TRow>, index?: number) => number)>(0);\n\n /**\n * Show checkbox at group header to select all rows of the group.\n */\n readonly checkboxable = input(false);\n\n readonly _templateInput = input<TemplateRef<GroupContext<TRow>>>(undefined, {\n alias: 'template'\n });\n\n readonly _templateQuery = contentChild(DatatableGroupHeaderTemplateDirective, {\n read: TemplateRef\n });\n\n readonly template = computed(() => this._templateInput() ?? this._templateQuery() ?? null);\n\n /**\n * Track toggling of group visibility\n */\n readonly toggle = output<GroupToggleEvents<TRow>>();\n\n /**\n * Toggle the expansion of a group\n */\n toggleExpandGroup(group: Group<TRow>): void {\n this.toggle.emit({\n type: 'group',\n value: group\n });\n }\n\n /**\n * Expand all groups\n */\n expandAllGroups(): void {\n this.toggle.emit({\n type: 'all',\n value: true\n });\n }\n\n /**\n * Collapse all groups\n */\n collapseAllGroups(): void {\n this.toggle.emit({\n type: 'all',\n value: false\n });\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n Directive,\n inject,\n InjectionToken,\n Injector,\n input,\n OnInit,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\n\nimport { RowOrGroup } from '../../types/public.types';\n\n/**\n * This component is passed as ng-template and rendered by BodyComponent.\n * BodyComponent uses rowDefInternal to first inject actual row template.\n * This component will render that actual row template.\n */\n@Component({\n selector: 'datatable-row-def',\n imports: [NgTemplateOutlet],\n template: `@if (rowDef.rowDefInternal().rowTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"rowDef.rowDefInternal().rowTemplate\"\n [ngTemplateOutletContext]=\"rowContext\"\n />\n }`\n})\nexport class DatatableRowDefComponent {\n rowDef = inject(ROW_DEF_TOKEN);\n rowContext = {\n ...this.rowDef.rowDefInternal(),\n disabled: this.rowDef.rowDefInternalDisabled()\n };\n}\n\n@Directive({\n selector: '[rowDef]'\n})\nexport class DatatableRowDefDirective {\n static ngTemplateContextGuard(\n _dir: DatatableRowDefDirective,\n ctx: unknown\n ): ctx is RowDefContext {\n return true;\n }\n}\n\n/**\n * @internal To be used internally by ngx-datatable.\n */\n@Directive({\n selector: '[rowDefInternal]'\n})\nexport class DatatableRowDefInternalDirective implements OnInit {\n vc = inject(ViewContainerRef);\n\n readonly rowDefInternal = input.required<RowDefContext>();\n readonly rowDefInternalDisabled = input<boolean>();\n\n ngOnInit(): void {\n this.vc.createEmbeddedView(\n this.rowDefInternal().template,\n {\n ...this.rowDefInternal()\n },\n {\n injector: Injector.create({\n providers: [\n {\n provide: ROW_DEF_TOKEN,\n useValue: this\n }\n ]\n })\n }\n );\n }\n}\nconst ROW_DEF_TOKEN = new InjectionToken<DatatableRowDefInternalDirective>('RowDef');\ninterface RowDefContext {\n template: TemplateRef<unknown>;\n rowTemplate: TemplateRef<unknown>;\n row: RowOrGroup<unknown>;\n index: number;\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\nimport { CellContext } from '../../types/public.types';\n\n@Directive({\n selector: '[ngx-datatable-cell-template]'\n})\nexport class DataTableColumnCellDirective {\n template = inject<TemplateRef<CellContext>>(TemplateRef);\n\n static ngTemplateContextGuard(dir: DataTableColumnCellDirective, ctx: any): ctx is CellContext {\n return true;\n }\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[ngx-datatable-ghost-cell-template]'\n})\nexport class DataTableColumnGhostCellDirective {\n static ngTemplateContextGuard(\n directive: DataTableColumnGhostCellDirective,\n context: unknown\n ): context is void {\n return true;\n }\n}\n","import { Directive } from '@angular/core';\n\nimport { HeaderCellContext } from '../../types/public.types';\n\n@Directive({\n selector: '[ngx-datatable-header-template]'\n})\nexport class DataTableColumnHeaderDirective {\n static ngTemplateContextGuard(\n directive: DataTableColumnHeaderDirective,\n context: unknown\n ): context is HeaderCellContext {\n return true;\n }\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[ngx-datatable-tree-toggle]'\n})\nexport class DataTableColumnCellTreeToggle {\n template = inject<TemplateRef<any>>(TemplateRef);\n}\n","import {\n booleanAttribute,\n computed,\n contentChild,\n Directive,\n input,\n numberAttribute,\n PipeTransform,\n Signal,\n TemplateRef\n} from '@angular/core';\n\nimport { CellContext, HeaderCellContext, Row } from '../../types/public.types';\nimport { TableColumn, TableColumnProp } from '../../types/table-column.type';\nimport { DataTableColumnCellDirective } from './column-cell.directive';\nimport { DataTableColumnGhostCellDirective } from './column-ghost-cell.directive';\nimport { DataTableColumnHeaderDirective } from './column-header.directive';\nimport { DataTableColumnCellTreeToggle } from './tree.directive';\n\n@Directive({\n selector: 'ngx-datatable-column'\n})\nexport class DataTableColumnDirective<TRow extends Row> {\n readonly name = input<string>();\n readonly prop = input<TableColumnProp>();\n readonly bindAsUnsafeHtml = input(false, { transform: booleanAttribute });\n readonly frozenLeft = input(false, { transform: booleanAttribute });\n readonly frozenRight = input(false, { transform: booleanAttribute });\n readonly flexGrow = input<number, number | string | undefined>(undefined, {\n transform: numberAttribute\n });\n readonly resizeable = input<boolean, boolean | string | undefined>(undefined, {\n transform: booleanAttribute\n });\n readonly comparator = input<\n ((valueA: any, valueB: any, rowA: TRow, rowB: TRow) => number) | undefined\n >();\n readonly pipe = input<PipeTransform | undefined>();\n readonly sortable = input<boolean, boolean | string | undefined>(undefined, {\n transform: booleanAttribute\n });\n readonly draggable = input<boolean, boolean | string | undefined>(undefined, {\n transform: booleanAttribute\n });\n readonly canAutoResize = input<boolean, boolean | string | undefined>(undefined, {\n transform: booleanAttribute\n });\n readonly minWidth = input<number, number | string | undefined>(undefined, {\n transform: numberAttribute\n });\n readonly width = input<number, number | string | undefined>(undefined, {\n transform: numberAttribute\n });\n readonly maxWidth = input<number, number | string | undefined>(undefined, {\n transform: numberAttribute\n });\n readonly checkboxable = input(false, { transform: booleanAttribute });\n readonly headerCheckboxable = input(false, { transform: booleanAttribute });\n readonly headerClass = input<\n string | ((data: { column: TableColumn }) => string | Record<string, boolean>) | undefined\n >();\n readonly cellClass = input<\n | string\n | ((data: {\n row: TRow;\n group?: TRow[];\n column: TableColumn<TRow>;\n value: any;\n rowHeight: number;\n }) => string | Record<string, boolean>)\n | undefined\n >();\n readonly isTreeColumn = input(false, { transform: booleanAttribute });\n readonly treeLevelIndent = input<number | undefined>();\n readonly summaryFunc = input<((cells: any[]) => any) | undefined>();\n readonly summaryTemplate = input<TemplateRef<any> | undefined>();\n\n readonly cellTemplateInput = input<TemplateRef<CellContext<TRow>> | undefined>(undefined, {\n alias: 'cellTemplate'\n });\n readonly cellTemplateQuery = contentChild(DataTableColumnCellDirective, { read: TemplateRef });\n\n readonly headerTemplateInput = input<TemplateRef<HeaderCellContext> | undefined>(undefined, {\n alias: 'headerTemplate'\n });\n readonly headerTemplateQuery = contentChild(DataTableColumnHeaderDirective, {\n read: TemplateRef\n });\n\n readonly treeToggleTemplateInput = input<TemplateRef<any> | undefined>(undefined, {\n alias: 'treeToggleTemplate'\n });\n readonly treeToggleTemplateQuery = contentChild(DataTableColumnCellTreeToggle, {\n read: TemplateRef\n });\n\n readonly ghostCellTemplateInput = input<TemplateRef<void> | undefined>(undefined, {\n alias: 'ghostCellTemplate'\n });\n readonly ghostCellTemplateQuery = contentChild(DataTableColumnGhostCellDirective, {\n read: TemplateRef\n });\n\n /**\n * Computed property that returns the column configuration as a TableColumn object\n */\n readonly column: Signal<TableColumn<TRow>> = computed(() => ({\n name: this.name(),\n prop: this.prop(),\n bindAsUnsafeHtml: this.bindAsUnsafeHtml(),\n frozenLeft: this.frozenLeft(),\n frozenRight: this.frozenRight(),\n flexGrow: this.flexGrow(),\n resizeable: this.resizeable(),\n comparator: this.comparator(),\n pipe: this.pipe(),\n sortable: this.sortable(),\n draggable: this.draggable(),\n canAutoResize: this.canAutoResize(),\n minWidth: this.minWidth(),\n width: this.width(),\n maxWidth: this.maxWidth(),\n checkboxable: this.checkboxable(),\n headerCheckboxable: this.headerCheckboxable(),\n headerClass: this.headerClass(),\n cellClass: this.cellClass(),\n isTreeColumn: this.isTreeColumn(),\n treeLevelIndent: this.treeLevelIndent(),\n summaryFunc: this.summaryFunc(),\n summaryTemplate: this.summaryTemplate(),\n cellTemplate: this.cellTemplateInput() ?? this.cellTemplateQuery(),\n headerTemplate: this.headerTemplateInput() ?? this.headerTemplateQuery(),\n treeToggleTemplate: this.treeToggleTemplateInput() ?? this.treeToggleTemplateQuery(),\n ghostCellTemplate: this.ghostCellTemplateInput() ?? this.ghostCellTemplateQuery()\n }));\n}\n","import {\n Directive,\n ElementRef,\n inject,\n NgZone,\n OnDestroy,\n OnInit,\n output,\n signal\n} from '@angular/core';\n\n/**\n * Visibility Observer Directive\n *\n * Usage:\n *\n * \t\t<div\n * \t\t\tvisibilityObserver\n * \t\t\t(visible)=\"onVisible($event)\">\n * \t\t</div>\n *\n */\n@Directive({\n selector: '[visibilityObserver]',\n host: {\n '[class.visible]': 'isVisible()'\n }\n})\nexport class VisibilityDirective implements OnInit, OnDestroy {\n private element = inject(ElementRef);\n private zone = inject(NgZone);\n\n readonly isVisible = signal(false);\n\n readonly visible = output<boolean>();\n\n timeout?: number;\n\n ngOnInit(): void {\n this.runCheck();\n }\n\n ngOnDestroy(): void {\n clearTimeout(this.timeout);\n }\n\n onVisibilityChange(): void {\n // trigger zone recalc for columns\n this.zone.run(() => {\n this.isVisible.set(true);\n this.visible.emit(true);\n });\n }\n\n runCheck(): void {\n const check = (): void => {\n // https://davidwalsh.name/offsetheight-visibility\n const { offsetHeight, offsetWidth } = this.element.nativeElement;\n\n if (offsetHeight && offsetWidth) {\n clearTimeout(this.timeout);\n this.onVisibilityChange();\n } else {\n clearTimeout(this.timeout);\n this.zone.runOutsideAngular(() => {\n this.timeout = window.setTimeout(() => check(), 50);\n });\n }\n };\n\n this.timeout = window.setTimeout(() => check());\n }\n}\n","import { InjectionToken, Provider } from '@angular/core';\n\n/** Interface for messages to override default table texts. */\nexport interface NgxDatatableMessages {\n /** Message to show when the array is present but empty */\n emptyMessage: string;\n /** Footer total message */\n totalMessage: string;\n /** Footer selected message */\n selectedMessage: string;\n /** Pager screen reader message for the first page button */\n ariaFirstPageMessage: string;\n /**\n * Pager screen reader message for the n-th page button.\n * It will be rendered as: `{{ariaPageNMessage}} {{n}}`.\n */\n ariaPageNMessage: string;\n /** Pager screen reader message for the previous page button */\n ariaPreviousPageMessage: string;\n /** Pager screen reader message for the next page button */\n ariaNextPageMessage: string;\n /** Pager screen reader message for the last page button */\n ariaLastPageMessage: string;\n /** Row checkbox aria label */\n ariaRowCheckboxMessage: string;\n /** Header checkbox aria label */\n ariaHeaderCheckboxMessage: string;\n /** Group header checkbox aria label */\n ariaGroupHeaderCheckboxMessage: string;\n}\n\n/** CSS classes for icons that override the default table icons. */\nexport interface NgxDatatableCssClasses {\n sortAscending: string;\n sortDescending: string;\n sortUnset: string;\n pagerLeftArrow: string;\n pagerRightArrow: string;\n pagerPrevious: string;\n pagerNext: string;\n treeStatusLoading: string;\n treeStatusExpanded: string;\n treeStatusCollapsed: string;\n}\n\n/**\n * Interface definition for ngx-datatable global configuration\n */\n// TODO those properties should all be required in the interface. Should be changed with signal migration.\nexport interface NgxDatatableConfig {\n messages?: NgxDatatableMessages;\n cssClasses?: NgxDatatableCssClasses;\n headerHeight?: number;\n footerHeight?: number;\n rowHeight?: number;\n defaultColumnWidth?: number;\n}\n\nexport const NGX_DATATABLE_CONFIG = new InjectionToken<NgxDatatableConfig>('ngx-datatable.config');\n\n/**\n * This makes all properties recursively optional.\n *\n * @internal\n */\nexport type AllPartial<T> = { [K in keyof T]?: AllPartial<T[K]> };\n\n/**\n * Interface definition for INgxDatatableConfig global configuration.\n *\n * @deprecated Use {@link NgxDatatableConfig} instead.\n */\nexport type INgxDatatableConfig = NgxDatatableConfig;\n\n/**\n * Provides a global configuration for ngx-datatable.\n *\n * @param overrides The overrides of the table configuration.\n */\nexport const providedNgxDatatableConfig = (overrides: AllPartial<NgxDatatableConfig>): Provider => {\n return {\n provide: NGX_DATATABLE_CONFIG,\n useValue: overrides\n };\n};\n","import { DOCUMENT, inject, Injectable } from '@angular/core';\n\n/**\n * Gets the width of the scrollbar. Nesc for windows\n * http://stackoverflow.com/a/13382873/888165\n */\n@Injectable({ providedIn: 'root' })\nexport class ScrollbarHelper {\n private document = inject(DOCUMENT);\n\n width: number = this.getWidth();\n\n getWidth(): number {\n const outer = this.document.createElement('div');\n outer.style.visibility = 'hidden';\n outer.style.width = '100px';\n this.document.body.appendChild(outer);\n\n const widthNoScroll = outer.offsetWidth;\n outer.style.overflow = 'scroll';\n\n const inner = this.document.createElement('div');\n inner.style.width = '100%';\n outer.appendChild(inner);\n\n const widthWithScroll = inner.offsetWidth;\n this.document.body.removeChild(outer);\n\n return widthNoScroll - widthWithScroll;\n }\n}\n","/**\n * Converts strings from something to camel case\n * http://stackoverflow.com/questions/10425287/convert-dash-separated-string-to-camelcase\n */\nexport const camelCase = (str: string): string => {\n // Replace special characters with a space\n str = str.replace(/[^a-zA-Z0-9 ]/g, ' ');\n // put a space before an uppercase letter\n str = str.replace(/([a-z](?=[A-Z]))/g, '$1 ');\n\n // Lower case first character and some other stuff\n str = str\n .replace(/([^a-zA-Z0-9 ])|^[0-9]+/g, '')\n .trim()\n .toLowerCase();\n\n // uppercase characters preceded by a space or number\n str = str.replace(/([ 0-9]+)([a-zA-Z])/g, (a, b, c) => {\n return b.trim() + c.toUpperCase();\n });\n\n return str;\n};\n\n/**\n * Converts strings from camel case to words\n * http://stackoverflow.com/questions/7225407/convert-camelcasetext-to-camel-case-text\n */\nexport const deCamelCase = (str: string): string => {\n return str.replace(/([A-Z])/g, match => ` ${match}`).replace(/^./, match => match.toUpperCase());\n};\n","import { TableColumnProp } from '../types/table-column.type';\n\n// maybe rename this file to prop-getters.ts\n\nexport type ValueGetter = (obj: any, prop: TableColumnProp) => any;\n\n/**\n * Always returns the empty string ''\n */\nexport const emptyStringGetter = (): string => {\n return '';\n};\n\n/**\n * Returns the appropriate getter function for this kind of prop.\n * If prop == null, returns the emptyStringGetter.\n */\nexport const getterForProp = (prop: TableColumnProp | undefined): ValueGetter => {\n // TODO requires better typing which will also involve adjust TableColum. So postponing it.\n if (prop == null) {\n return emptyStringGetter;\n }\n\n if (typeof prop === 'number') {\n return numericIndexGetter as ValueGetter;\n } else {\n // deep or simple\n if (prop.includes('.')) {\n return deepValueGetter as ValueGetter;\n } else {\n return shallowValueGetter as ValueGetter;\n }\n }\n};\n\n/**\n * Returns the value at this numeric index.\n * @param row array of values\n * @param index numeric index\n * @returns any or '' if invalid index\n */\nexport const numericIndexGetter = (row: any[], index: number): any => {\n if (row == null) {\n return '';\n }\n // mimic behavior of deepValueGetter\n if (!row || index == null) {\n return row;\n }\n\n const value = row[index];\n if (value == null) {\n return '';\n }\n return value;\n};\n\n/**\n * Returns the value of a field.\n * (more efficient than deepValueGetter)\n * @param obj object containing the field\n * @param fieldName field name string\n */\nexport const shallowValueGetter = (obj: any, fieldName: string): any => {\n if (obj == null) {\n return '';\n }\n if (!obj || !fieldName) {\n return obj;\n }\n\n const value = obj[fieldName];\n if (value == null) {\n return '';\n }\n return value;\n};\n\n/**\n * Returns a deep object given a string. zoo['animal.type']\n */\nexport const deepValueGetter = (obj: any, path: string): any => {\n if (obj == null) {\n return '';\n }\n if (!obj || !path) {\n return obj;\n }\n\n // check if path matches a root-level field\n // { \"a.b.c\": 123 }\n let current = obj[path];\n if (current !== undefined) {\n return current;\n }\n\n current = obj;\n const split = path.split('.');\n\n if (split.length) {\n for (let i = 0; i < split.length; i++) {\n current = current[split[i]];\n\n // if found undefined, return empty string\n if (current === undefined || current === null) {\n return '';\n }\n }\n }\n\n return current;\n};\n","/**\n * Creates a unique object id.\n * http://stackoverflow.com/questions/6248666/how-to-generate-short-uid-like-ax4j9z-in-js\n */\nexport const id = () => {\n return ('0000' + ((Math.random() * Math.pow(36, 4)) << 0).toString(36)).slice(-4);\n};\n","import { SortableTableColumnInternal, TableColumnInternal } from '../types/internal.types';\nimport { Group, SortDirection, SortPropDir, SortType } from '../types/public.types';\nimport { TableColumnProp } from '../types/table-column.type';\nimport { getterForProp } from './column-prop-getters';\n\n/**\n * Gets the next sort direction\n */\nexport const nextSortDir = (\n sortType: SortType,\n current: SortDirection | 'desc' | 'asc' | undefined\n): SortDirection | undefined => {\n if (sortType === 'single') {\n if (current === 'asc') {\n return 'desc';\n } else {\n return 'asc';\n }\n } else {\n if (!current) {\n return 'asc';\n } else if (current === 'asc') {\n return 'desc';\n } else if (current === 'desc') {\n return undefined;\n }\n // avoid TS7030: Not all code paths return a value.\n return undefined;\n }\n};\n\n/**\n * Adapted from fueld-ui on 6/216\n * https://github.com/FuelInteractive/fuel-ui/tree/master/src/pipes/OrderBy\n */\nexport const orderByComparator = (a: any, b: any): number => {\n if (a === null || typeof a === 'undefined') {\n a = 0;\n }\n if (b === null || typeof b === 'undefined') {\n b = 0;\n }\n if (a instanceof Date && b instanceof Date) {\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n } else if (isNaN(parseFloat(a)) || !isFinite(a) || isNaN(parseFloat(b)) || !isFinite(b)) {\n // Convert to string in case of a=0 or b=0\n a = String(a);\n b = String(b);\n // Isn't a number so lowercase the string to properly compare\n if (a.toLowerCase() < b.toLowerCase()) {\n return -1;\n }\n if (a.toLowerCase() > b.toLowerCase()) {\n return 1;\n }\n } else {\n // Parse strings as numbers to compare properly\n if (parseFloat(a) < parseFloat(b)) {\n return -1;\n }\n if (parseFloat(a) > parseFloat(b)) {\n return 1;\n }\n }\n\n // equal each other\n return 0;\n};\n\n/**\n * creates a shallow copy of the `rows` input and returns the sorted copy. this function\n * does not sort the `rows` argument in place\n */\nexport const sortRows = <TRow>(\n rows: TRow[],\n columns: TableColumnInternal[],\n dirs: SortPropDir[],\n sortOnGroupHeader?: SortPropDir\n): TRow[] => {\n if (!rows) {\n return [];\n }\n if (!dirs?.length || !columns) {\n return [...rows];\n }\n\n const temp = [...rows];\n const cols = columns.reduce(\n (obj, col) => {\n if (col.sortable) {\n obj[col.prop] = col.comparator;\n }\n return obj;\n },\n {} as Record<TableColumnProp, SortableTableColumnInternal['comparator'] | undefined>\n );\n\n // cache valueGetter and compareFn so that they\n // do not need to be looked-up in the sort function body\n const cachedDirs = dirs.map(dir => {\n // When sorting on group header, override prop to 'key'\n const prop = sortOnGroupHeader?.prop === dir.prop ? 'key' : dir.prop;\n // SortDirs may contain columns that are not sortable, so compareFn would be undefined. In that case just return a comparator that returns 0.\n const compareFn = cols[dir.prop] ?? (() => 0);\n return {\n prop,\n dir: dir.dir,\n valueGetter: getterForProp(prop),\n compareFn\n };\n });\n\n return temp.sort((rowA: TRow, rowB: TRow) => {\n for (const cachedDir of cachedDirs) {\n // Get property and valuegetters for column to be sorted\n const { prop, valueGetter } = cachedDir;\n // Get A and B cell values from rows based on properties of the columns\n const propA = valueGetter(rowA, prop);\n const propB = valueGetter(rowB, prop);\n\n // Compare function gets five parameters:\n // Two cell values to be compared as propA and propB\n // Two rows corresponding to the cells as rowA and rowB\n // Direction of the sort for this column as SortDirection\n // Compare can be a standard JS comparison function (a,b) => -1|0|1\n // as additional parameters are silently ignored. The whole row and sort\n // direction enable more complex sort logic.\n const comparison =\n cachedDir.dir !== 'desc'\n ? cachedDir.compareFn(propA, propB, rowA, rowB)\n : -cachedDir.compareFn(propA, propB, rowA, rowB);\n\n // Don't return 0 yet in case of needing to sort by next property\n if (comparison !== 0) {\n return comparison;\n }\n }\n\n return 0;\n });\n};\n\nexport const sortGroupedRows = <TRow>(\n groupedRows: Group<TRow>[],\n columns: TableColumnInternal[],\n dirs: SortPropDir[],\n sortOnGroupHeader: SortPropDir | undefined\n): Group<TRow>[] => {\n if (sortOnGroupHeader) {\n groupedRows = sortRows(groupedRows, columns, dirs, sortOnGroupHeader);\n }\n return groupedRows.map(group => ({ ...group, value: sortRows(group.value, columns, dirs) }));\n};\n","import { signal } from '@angular/core';\n\nimport { TableColumnInternal } from '../types/internal.types';\nimport { Row } from '../types/public.types';\nimport { TableColumn } from '../types/table-column.type';\nimport { camelCase, deCamelCase } from './camel-case';\nimport { getterForProp } from './column-prop-getters';\nimport { id } from './id';\nimport { orderByComparator } from './sort';\n\nexport const toInternalColumn = <T extends Row>(\n columns: TableColumn<T>[],\n defaultColumnWidth = 150\n): TableColumnInternal<T>[] => {\n let hasTreeColumn = false;\n // TS fails to infer the type here.\n return (columns as TableColumn<T>[]).map(column => {\n const prop = column.prop ?? (column.name ? camelCase(column.name) : undefined);\n // Only one column should hold the tree view,\n // Thus if multiple columns are provided with\n // isTreeColumn as true, we take only the first one\n const isTreeColumn = !!column.isTreeColumn && !hasTreeColumn;\n hasTreeColumn = hasTreeColumn || isTreeColumn;\n // TODO: add check if prop or name is provided if sorting is enabled.\n\n return {\n ...column,\n $$id: id(),\n $$originalColumn: column,\n $$valueGetter: getterForProp(prop),\n prop,\n name: column.name ?? (prop ? deCamelCase(String(prop)) : ''),\n resizeable: column.resizeable ?? true,\n sortable: column.sortable ?? true,\n comparator: column.comparator ?? orderByComparator,\n draggable: column.draggable ?? true,\n canAutoResize: column.canAutoResize ?? true,\n width: signal(column.width ?? defaultColumnWidth),\n isTreeColumn,\n // in case of the directive, those are getters, so call them explicitly.\n headerTemplate: column.headerTemplate,\n cellTemplate: column.cellTemplate,\n summaryTemplate: column.summaryTemplate,\n ghostCellTemplate: column.ghostCellTemplate,\n treeToggleTemplate: column.treeToggleTemplate\n } as TableColumnInternal; // TS cannot cast here\n });\n};\n\nexport const toPublicColumn = (column: TableColumnInternal): TableColumn => {\n return {\n ...column.$$originalColumn,\n checkboxable: column.checkboxable,\n frozenLeft: column.frozenLeft,\n frozenRight: column.frozenRight,\n flexGrow: column.flexGrow,\n minWidth: column.minWidth,\n maxWidth: column.maxWidth,\n width: column.width(),\n resizeable: column.resizeable,\n comparator: column.comparator,\n pipe: column.pipe,\n sortable: column.sortable,\n draggable: column.draggable,\n canAutoResize: column.canAutoResize,\n name: column.name,\n prop: column.prop,\n bindAsUnsafeHtml: column.bindAsUnsafeHtml,\n cellTemplate: column.cellTemplate,\n ghostCellTemplate: column.ghostCellTemplate,\n headerTemplate: column.headerTemplate,\n treeToggleTemplate: column.treeToggleTemplate,\n cellClass: column.cellClass,\n headerClass: column.headerClass,\n headerCheckboxable: column.headerCheckboxable,\n isTreeColumn: column.isTreeColumn,\n treeLevelIndent: column.treeLevelIndent,\n summaryFunc: column.summaryFunc,\n summaryTemplate: column.summaryTemplate\n };\n};\n","import {\n ColumnGroupWidth,\n PinnedColumns,\n TableColumnGroup,\n TableColumnInternal\n} from '../types/internal.types';\n\n/**\n * Returns the columns by pin.\n */\nexport const columnsByPin = (cols: TableColumnInternal[]) => {\n const ret: TableColumnGroup = {\n left: [],\n center: [],\n right: []\n };\n\n if (cols) {\n for (const col of cols) {\n if (col.frozenLeft) {\n ret.left.push(col);\n } else if (col.frozenRight) {\n ret.right.push(col);\n } else {\n ret.center.push(col);\n }\n }\n }\n\n return ret;\n};\n\n/**\n * Returns the widths of all group sets of a column\n */\nexport const columnGroupWidths = (\n groups: TableColumnGroup,\n all: TableColumnInternal[]\n): ColumnGroupWidth => {\n return {\n left: columnTotalWidth(groups.left),\n center: columnTotalWidth(groups.center),\n right: columnTotalWidth(groups.right),\n total: Math.floor(columnTotalWidth(all))\n };\n};\n\n/**\n * Calculates the total width of all columns\n */\nexport const columnTotalWidth = (columns?: TableColumnInternal[]) => {\n return columns?.reduce((total, column) => total + column.width(), 0) ?? 0;\n};\n\nexport const columnsByPinArr = (val: TableColumnInternal[]): PinnedColumns[] => {\n const colsByPin = columnsByPin(val);\n return [\n { type: 'left' as const, columns: colsByPin.left },\n { type: 'center' as const, columns: colsByPin.center },\n { type: 'right' as const, columns: colsByPin.right }\n ];\n};\n","import { TableColumnGroup, TableColumnInternal } from '../types/internal.types';\nimport { TableColumnProp } from '../types/table-column.type';\nimport { columnsByPin, columnTotalWidth } from './column';\n\n/**\n * Calculates the Total Flex Grow\n */\nexport const getTotalFlexGrow = (columns: TableColumnInternal[]) => {\n let totalFlexGrow = 0;\n\n for (const c of columns) {\n totalFlexGrow += c.flexGrow ?? 0;\n }\n\n return totalFlexGrow;\n};\n\n/**\n * Adjusts the column widths.\n * Inspired by: https://github.com/facebook/fixed-data-table/blob/master/src/FixedDataTableWidthHelper.js\n */\nexport const adjustColumnWidths = (allColumns: TableColumnInternal[], expectedWidth: number) => {\n const columnsWidth = columnTotalWidth(allColumns);\n const totalFlexGrow = getTotalFlexGrow(allColumns);\n const colsByGroup = columnsByPin(allColumns);\n\n if (columnsWidth !== expectedWidth) {\n scaleColumns(colsByGroup, expectedWidth, totalFlexGrow);\n }\n};\n\n/**\n * Resizes columns based on the flexGrow property, while respecting manually set widths\n */\nconst scaleColumns = (colsByGroup: TableColumnGroup, maxWidth: number, totalFlexGrow: number) => {\n const columns: TableColumnInternal[] = Object.values(colsByGroup).flat();\n let remainingWidth = maxWidth;\n\n // calculate total width and flexgrow points for columns that can be resized\n for (const column of columns) {\n if (column.$$oldWidth) {\n // when manually resized, switch off auto-resize\n column.canAutoResize = false;\n }\n if (!column.canAutoResize) {\n remainingWidth -= column.width();\n totalFlexGrow -= column.flexGrow ?? 0;\n } else {\n column.width.set(0);\n }\n }\n\n const hasMinWidth: Record<TableColumnProp, boolean> = {};\n\n // resize columns until no width is left to be distributed\n do {\n const widthPerFlexPoint = remainingWidth / totalFlexGrow;\n remainingWidth = 0;\n\n for (const column of columns) {\n // if the column can be resize and it hasn't reached its minimum width yet\n if (column.canAutoResize && !hasMinWidth[column.prop]) {\n const newWidth = column.width() + (column.flexGrow ?? 0) * widthPerFlexPoint;\n if (column.minWidth !== undefined && newWidth < column.minWidth) {\n remainingWidth += newWidth - column.minWidth;\n column.width.set(column.minWidth);\n hasMinWidth[column.prop] = true;\n } else {\n column.width.set(newWidth);\n }\n }\n }\n } while (remainingWidth !== 0);\n\n // Adjust for any remaining offset in computed widths vs maxWidth\n const totalWidthAchieved = columns.reduce((acc, col) => acc + col.width(), 0);\n const delta = maxWidth - totalWidthAchieved;\n\n if (delta === 0) {\n return;\n }\n\n // adjust the first column that can be auto-resized respecting the min/max widths\n for (const col of columns.filter(c => c.canAutoResize).sort((a, b) => a.width() - b.width())) {\n if (\n (delta > 0 && (!col.maxWidth || col.width() + delta <= col.maxWidth)) ||\n (delta < 0 && (!col.minWidth || col.width() + delta >= col.minWidth))\n ) {\n col.width.update(value => value + delta);\n break;\n }\n }\n};\n\n/**\n * Forces the width of the columns to\n * distribute equally but overflowing when necessary\n *\n * Rules:\n *\n * - If combined withs are less than the total width of the grid,\n * proportion the widths given the min / max / normal widths to fill the width.\n *\n * - If the combined widths, exceed the total width of the grid,\n * use the standard widths.\n *\n * - If a column is resized, it should always use that width\n *\n * - The proportional widths should never fall below min size if specified.\n *\n * - If the grid starts off small but then becomes greater than the size ( + / - )\n * the width should use the original width; not the newly proportioned widths.\n */\nexport const forceFillColumnWidths = (\n allColumns: TableColumnInternal[],\n expectedWidth: number,\n startIdx: number,\n allowBleed: boolean,\n defaultColWidth: number = 150,\n verticalScrollWidth = 0\n) => {\n const columnsToResize = allColumns\n .slice(startIdx + 1, allColumns.length)\n .filter(c => c.canAutoResize !== false);\n\n for (const column of columnsToResize) {\n if (!column.$$oldWidth) {\n column.$$oldWidth = column.width();\n }\n }\n\n let additionWidthPerColumn = 0;\n let exceedsWindow = false;\n let contentWidth = getContentWidth(allColumns, defaultColWidth);\n let remainingWidth = expectedWidth - contentWidth;\n const initialRemainingWidth = remainingWidth;\n const columnsProcessed: any[] = [];\n const remainingWidthLimit = 1; // when to stop\n\n // This loop takes care of the\n do {\n additionWidthPerColumn = remainingWidth / columnsToResize.length;\n exceedsWindow = contentWidth >= expectedWidth;\n\n for (const column of columnsToResize) {\n // don't bleed if the initialRemainingWidth is same as verticalScrollWidth\n if (exceedsWindow && allowBleed && initialRemainingWidth !== -1 * verticalScrollWidth) {\n column.width.update(value => value || defaultColWidth);\n } else {\n const newSize = (column.width() || defaultColWidth) + additionWidthPerColumn;\n\n if (column.minWidth && newSize < column.minWidth) {\n column.width.set(column.minWidth);\n columnsProcessed.push(column);\n } else if (column.maxWidth && newSize > column.maxWidth) {\n column.width.set(column.maxWidth);\n columnsProcessed.push(column);\n } else {\n column.width.set(newSize);\n }\n }\n\n column.width.update(value => Math.max(0, value));\n }\n\n contentWidth = getContentWidth(allColumns, defaultColWidth);\n remainingWidth = expectedWidth - contentWidth;\n removeProcessedColumns(columnsToResize, columnsProcessed);\n } while (remainingWidth > remainingWidthLimit && columnsToResize.length !== 0);\n\n // reset so we don't have stale values\n for (const column of columnsToResize) {\n column.$$oldWidth = 0;\n }\n};\n\n/**\n * Remove the processed columns from the current active columns.\n */\nconst removeProcessedColumns = (\n columnsToResize: TableColumnInternal[],\n columnsProcessed: TableColumnInternal[]\n) => {\n for (const column of columnsProcessed) {\n const index = columnsToResize.indexOf(column);\n columnsToResize.splice(index, 1);\n }\n};\n\n/**\n * Gets the width of the columns\n */\nconst getContentWidth = (allColumns: TableColumnInternal[], defaultColWidth = 150): number => {\n let contentWidth = 0;\n\n for (const column of allColumns) {\n contentWidth += column.width() || defaultColWidth;\n }\n\n return contentWidth;\n};\n","import { numberAttribute } from '@angular/core';\n\n/**\n * Same as {@link numberAttribute} but returns `undefined` if the value is `undefined`.\n * {@link numberAttribute} would return `NaN` in that case.\n * @param value\n */\n// Must be a function.\nexport function numberOrUndefinedAttribute(value: unknown | undefined): number | undefined {\n if (value === undefined) {\n return undefined;\n }\n\n return numberAttribute(value);\n}\n","import { InjectionToken } from '@angular/core';\n\nimport type { DatatableComponent } from '../components/datatable.component';\n\n/**\n * This token is created to break cycling import error which occurs when we import\n * DatatableComponent in DataTableRowWrapperComponent.\n */\nexport const DATATABLE_COMPONENT_TOKEN = new InjectionToken<DatatableComponent>(\n 'DatatableComponentToken'\n);\n","/**\n * Throttle a function\n */\nexport const throttle = (func: any, wait: number, options?: any) => {\n options ??= {};\n let args: any;\n let result: any;\n let timeout: any = null;\n let previous = 0;\n\n const later = () => {\n previous = options.leading === false ? 0 : +new Date();\n timeout = null;\n result = func(...args);\n };\n\n return (...argsNew: any[]) => {\n const now = +new Date();\n\n if (!previous && options.leading === false) {\n previous = now;\n }\n\n const remaining = wait - (now - previous);\n args = argsNew;\n\n if (remaining <= 0) {\n clearTimeout(timeout);\n timeout = null;\n previous = now;\n result = func(...args);\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n\n return result;\n };\n};\n\n/**\n * Throttle decorator\n *\n * class MyClass {\n * throttleable(10)\n * myFn() { ... }\n * }\n */\nexport const throttleable = (duration: number, options?: any) => {\n return (target: any, key: PropertyKey, descriptor: PropertyDescriptor) => {\n return {\n configurable: true,\n enumerable: descriptor.enumerable,\n get: function () {\n Object.defineProperty(this, key, {\n configurable: true,\n enumerable: descriptor.enumerable,\n value: throttle(descriptor.value.bind(this), duration, options)\n });\n\n return (this as any)[key];\n }\n };\n };\n};\n","import { Row } from '../types/public.types';\nimport { TableColumnProp } from '../types/table-column.type';\nimport { getterForProp } from './column-prop-getters';\n\nexport type OptionalValueGetter = ((row: any) => any) | undefined;\nexport const optionalGetterForProp = (prop: TableColumnProp | undefined): OptionalValueGetter => {\n return prop ? row => getterForProp(prop)(row, prop) : undefined;\n};\n\n/**\n * This functions rearrange items by their parents\n * Also sets the level value to each of the items\n *\n * Note: Expecting each item has a property called parentId\n * Note: This algorithm will fail if a list has two or more items with same ID\n * NOTE: This algorithm will fail if there is a deadlock of relationship\n *\n * For example,\n *\n * Input\n *\n * id -> parent\n * 1 -> 0\n * 2 -> 0\n * 3 -> 1\n * 4 -> 1\n * 5 -> 2\n * 7 -> 8\n * 6 -> 3\n *\n *\n * Output\n * id -> level\n * 1 -> 0\n * --3 -> 1\n * ----6 -> 2\n * --4 -> 1\n * 2 -> 0\n * --5 -> 1\n * 7 -> 8\n *\n *\n * @param rows\n *\n */\nexport const groupRowsByParents = <TRow extends Row>(\n rows: (TRow | undefined)[],\n from?: OptionalValueGetter,\n to?: OptionalValueGetter\n): (TRow | undefined)[] => {\n if (from && to) {\n const treeRows = rows.filter(row => !!row).map(row => new TreeNode(row));\n const uniqIDs = new Map(treeRows.map(node => [to(node.row), node]));\n\n const rootNodes = treeRows.reduce((root, node) => {\n const fromValue = from(node.row);\n const parent = uniqIDs.get(fromValue);\n if (parent) {\n node.row.level = parent.row.level! + 1; // TODO: should be reflected by type, that level is defined\n node.parent = parent;\n parent.children.push(node);\n } else {\n node.row.level = 0;\n root.push(node);\n }\n return root;\n }, [] as TreeNode<TRow>[]);\n\n return rootNodes.flatMap(child => child.flatten());\n } else {\n return rows;\n }\n};\n\nclass TreeNode<TRow extends Row> {\n public row: TRow;\n public parent?: TreeNode<TRow>;\n public children: TreeNode<TRow>[];\n\n constructor(row: TRow) {\n this.row = row;\n this.children = [];\n }\n\n flatten(): TRow[] {\n if (this.row.treeStatus === 'expanded') {\n return [this.row, ...this.children.flatMap(child => child.flatten())];\n } else {\n return [this.row];\n }\n }\n}\n\nexport const expandToRow = <TRow extends Row>(\n targetRow: TRow,\n rows: (TRow | undefined)[],\n from?: OptionalValueGetter,\n to?: OptionalValueGetter\n) => {\n if (from && to) {\n const uniqIDs = new Map(rows.filter(row => !!row).map(node => [to(node), node]));\n const visitedRowIds = new Set<unknown>();\n let currentRow: TRow | undefined = targetRow;\n\n while (currentRow) {\n const currentRowId = to(currentRow);\n if (visitedRowIds.has(currentRowId)) {\n // cycle detected, abort to avoid an infinite loop\n break;\n }\n visitedRowIds.add(currentRowId);\n\n if (currentRow.treeStatus === 'collapsed') {\n currentRow.treeStatus = 'expanded';\n }\n currentRow = uniqIDs.get(from(currentRow));\n }\n }\n};\n","export const ARROW_UP = 'ArrowUp';\nexport const ARROW_DOWN = 'ArrowDown';\nexport const ENTER = 'Enter';\nexport const ESCAPE = 'Escape';\nexport const ARROW_LEFT = 'ArrowLeft';\nexport const ARROW_RIGHT = 'ArrowRight';\n","/**\n * This object contains the cache of the various row heights that are present inside\n * the data table. Its based on Fenwick tree data structure that helps with\n * querying sums that have time complexity of log n.\n *\n * Fenwick Tree Credits: http://petr-mitrichev.blogspot.com/2013/05/fenwick-tree-range-updates.html\n * https://github.com/mikolalysenko/fenwick-tree\n *\n */\nexport class RowHeightCache<TRow> {\n /**\n * Tree Array stores the cumulative information of the row heights to perform efficient\n * range queries and updates. Currently the tree is initialized to the base row\n * height instead of the detail row height.\n */\n private treeArray: number[] = [];\n\n /**\n * Clear the Tree array.\n */\n clearCache(): void {\n this.treeArray = [];\n }\n\n /**\n * Initialize the Fenwick tree with row Heights.\n */\n initCache(details: {\n rows: TRow[];\n rowHeight: number | 'auto' | ((row: TRow) => number);\n detailRowHeight: number | ((row: TRow, index: number) => number);\n externalVirtual: boolean | undefined;\n indexOffset: number;\n rowCount: number;\n rowExpansions: Set<TRow>;\n }): void {\n const {\n rows,\n rowHeight,\n detailRowHeight,\n externalVirtual,\n indexOffset,\n rowCount,\n rowExpansions\n } = details;\n const isFn = typeof rowHeight === 'function';\n const isDetailFn = typeof detailRowHeight === 'function';\n\n if (rowHeight === 'auto' || (!isFn && isNaN(rowHeight))) {\n throw new Error(`Row Height cache initialization failed. Please ensure that 'rowHeight' is a\n valid number or function value: (${rowHeight}) when 'scrollbarV' is enabled.`);\n }\n\n // Add this additional guard in case detailRowHeight is set to 'auto' as it wont work.\n if (!isDetailFn && isNaN(detailRowHeight)) {\n throw new Error(`Row Height cache initialization failed. Please ensure that 'detailRowHeight' is a\n valid number or function value: (${detailRowHeight}) when 'scrollbarV' is enabled.`);\n }\n\n const n = externalVirtual ? rowCount : rows.length;\n this.treeArray = new Array(n);\n\n for (let i = 0; i < n; ++i) {\n this.treeArray[i] = 0;\n }\n\n for (let i = 0; i < n; ++i) {\n const row = rows[i];\n let currentRowHeight = isFn ? rowHeight(row) : rowHeight;\n\n // Add the detail row height to the already expanded rows.\n // This is useful for the table that goes through a filter or sort.\n const expanded = rowExpansions.has(row);\n if (row && expanded) {\n currentRowHeight += isDetailFn ? detailRowHeight(row, indexOffset + i) : detailRowHeight;\n }\n\n this.update(i, currentRowHeight);\n }\n }\n\n /**\n * Given the ScrollY position i.e. sum, provide the rowIndex\n * that is present in the current view port. Below handles edge cases.\n */\n getRowIndex(scrollY: number): number {\n if (scrollY === 0) {\n return 0;\n }\n return this.calcRowIndex(scrollY);\n }\n\n /**\n * When a row is expanded or rowHeight is changed, update the height. This can\n * be utilized in future when Angular Data table supports dynamic row heights.\n */\n update(atRowIndex: number, byRowHeight: number): void {\n if (!this.treeArray.length) {\n throw new Error(`Update at index ${atRowIndex} with value ${byRowHeight} failed:\n Row Height cache not initialized.`);\n }\n\n const n = this.treeArray.length;\n atRowIndex |= 0;\n\n while (atRowIndex < n) {\n this.treeArray[atRowIndex] += byRowHeight;\n atRowIndex |= atRowIndex + 1;\n }\n }\n\n /**\n * Range Sum query from 1 to the rowIndex\n */\n query(atIndex: number): number {\n if (!this.treeArray.length) {\n throw new Error(`query at index ${atIndex} failed: Fenwick tree array not initialized.`);\n }\n\n let sum = 0;\n atIndex |= 0;\n\n while (atIndex >= 0) {\n sum += this.treeArray[atIndex];\n atIndex = (atIndex & (atIndex + 1)) - 1;\n }\n\n return sum;\n }\n\n /**\n * Find the total height between 2 row indexes\n */\n queryBetween(atIndexA: number, atIndexB: number): number {\n return this.query(atIndexB) - this.query(atIndexA - 1);\n }\n\n /**\n * Given the ScrollY position i.e. sum, provide the rowIndex\n * that is present in the current view port.\n */\n private calcRowIndex(sum: number): number {\n if (!this.treeArray.length) {\n return 0;\n }\n\n let pos = -1;\n const dataLength = this.treeArray.length;\n\n // Get the highest bit for the block size.\n const highestBit = Math.pow(2, dataLength.toString(2).length - 1);\n\n for (let blockSize = highestBit; blockSize !== 0; blockSize >>= 1) {\n const nextPos = pos + blockSize;\n if (nextPos < dataLength && sum >= this.treeArray[nextPos]) {\n sum -= this.treeArray[nextPos];\n pos = nextPos;\n }\n }\n\n return pos + 1;\n }\n}\n","export const selectRows = <TRow>(selected: TRow[], row: TRow, comparefn: any) => {\n const selectedIndex = comparefn(row, selected);\n\n if (selectedIndex > -1) {\n selected.splice(selectedIndex, 1);\n } else {\n selected.push(row);\n }\n\n return selected;\n};\n\nexport const selectRowsBetween = <TRow>(\n selected: TRow[],\n rows: (TRow | undefined)[],\n index: number,\n prevIndex: number\n): TRow[] => {\n const reverse = index < prevIndex;\n\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n const greater = i >= prevIndex && i <= index;\n const lesser = i <= prevIndex && i >= index;\n\n let range = { start: 0, end: 0 };\n if (reverse) {\n range = {\n start: index,\n end: prevIndex\n };\n } else {\n range = {\n start: prevIndex,\n end: index + 1\n };\n }\n\n if ((reverse && lesser) || (!reverse && greater)) {\n // if in the positive range to be added to `selected`, and\n // not already in the selected array, add it\n if (i >= range.start && i <= range.end && row) {\n selected.push(row);\n }\n }\n }\n\n return selected;\n};\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n output\n} from '@angular/core';\n\nimport { Group, GroupContext, Row } from '../../types/public.types';\nimport { DatatableGroupHeaderDirective } from './body-group-header.directive';\n\n@Component({\n selector: 'datatable-group-wrapper',\n imports: [NgTemplateOutlet],\n template: `\n @let groupHeader = this.groupHeader();\n @if (groupHeader && groupHeader.template()) {\n <div\n class=\"datatable-group-header\"\n [style.height.px]=\"groupHeaderRowHeight()\"\n [style.width.px]=\"innerWidth()\"\n >\n <div class=\"datatable-group-cell\">\n @if (groupHeader.checkboxable()) {\n <div>\n <label class=\"datatable-checkbox\">\n <input\n #select\n type=\"checkbox\"\n [attr.aria-label]=\"ariaGroupHeaderCheckboxMessage()\"\n [checked]=\"checked()\"\n [indeterminate]=\"indeterminate()\"\n (change)=\"onCheckboxChange(select.checked)\"\n />\n </label>\n </div>\n }\n <ng-template\n [ngTemplateOutlet]=\"groupHeader.template()\"\n [ngTemplateOutletContext]=\"context()\"\n />\n </div>\n </div>\n }\n @if (expanded()) {\n <ng-content />\n }\n `,\n styleUrl: './body-group-wrapper.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'datatable-group-wrapper'\n }\n})\nexport class DataTableGroupWrapperComponent<TRow extends Row = any> {\n readonly innerWidth = input.required<number>();\n readonly groupHeader = input.required<DatatableGroupHeaderDirective | undefined>();\n readonly groupHeaderRowHeight = input.required<number>();\n readonly group = input.required<Group<TRow>>();\n readonly groupedRows = input<Group<TRow>[]>();\n readonly selected = input.required<TRow[]>();\n readonly disabled = input<boolean>();\n readonly rowIndex = input.required<number>();\n readonly expanded = input(false, { transform: booleanAttribute });\n readonly ariaGroupHeaderCheckboxMessage = input.required<string>();\n readonly groupSelectedChange = output<boolean>();\n\n readonly context = computed<GroupContext<TRow>>(() => {\n return {\n group: this.group(),\n expanded: this.expanded(),\n rowIndex: this.rowIndex()\n };\n });\n readonly selectedRowsOfGroup = computed(() => {\n const groupValue = this.group().value;\n return this.selected().filter(row => groupValue.includes(row));\n });\n readonly checked = computed(\n () => this.selectedRowsOfGroup().length === this.group().value.length\n );\n readonly indeterminate = computed(() => this.selectedRowsOfGroup().length > 0 && !this.checked());\n\n onCheckboxChange(groupSelected: boolean): void {\n this.groupSelectedChange.emit(groupSelected);\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DoCheck,\n ElementRef,\n HostListener,\n inject,\n input,\n KeyValueDiffers,\n output,\n signal\n} from '@angular/core';\n\nimport { Row, RowDetailContext, RowOrGroup, ScrollToRowOptions } from '../../types/public.types';\nimport { DatatableRowDetailDirective } from '../row-detail/row-detail.directive';\n\n@Component({\n selector: 'datatable-row-wrapper',\n imports: [NgTemplateOutlet],\n template: `\n <ng-content />\n @let rowDetailTemplate = rowDetail()?.template();\n @if (rowDetailTemplate && expanded()) {\n <div class=\"datatable-row-detail\" [style.height.px]=\"detailsRowHeight()\">\n <ng-template [ngTemplateOutlet]=\"rowDetailTemplate\" [ngTemplateOutletContext]=\"context()\" />\n </div>\n }\n `,\n styleUrl: './body-row-wrapper.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'datatable-row-wrapper'\n }\n})\nexport class DataTableRowWrapperComponent<TRow extends Row = any> implements DoCheck {\n readonly innerWidth = input.required<number>();\n readonly rowDetail = input<DatatableRowDetailDirective>();\n readonly detailRowHeightFn = input.required<(row?: TRow, index?: number) => number>();\n readonly row = input.required<TRow>();\n readonly disabled = input<boolean>();\n readonly rowContextmenu = output<{\n event: MouseEvent;\n row: RowOrGroup<TRow>;\n }>();\n\n readonly rowIndex = input.required<number>();\n\n readonly expanded = input(false, { transform: booleanAttribute });\n readonly ariaGroupHeaderCheckboxMessage = input.required<string>();\n readonly checkRowPropertyChanges = input(true, { transform: booleanAttribute });\n\n readonly detailsRowHeight = computed(() => this.detailRowHeightFn()(this.row(), this.rowIndex()));\n readonly context = computed<RowDetailContext<TRow>>(() => {\n this.rowDiffedCount(); // This allows us to get re-evaluated when the row was mutated internally.\n return {\n row: this.row(),\n expanded: this.expanded(),\n rowIndex: this.rowIndex(),\n disabled: this.disabled()\n };\n });\n\n // This counter will be incremented every time the row object is mutated.\n readonly rowDiffedCount = signal(0);\n\n private rowDiffer = inject(KeyValueDiffers).find({}).create<keyof RowOrGroup<TRow>, any>();\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n ngDoCheck(): void {\n if (!this.checkRowPropertyChanges()) {\n return;\n }\n const row = this.row();\n if (this.rowDiffer.diff(row)) {\n this.rowDiffedCount.update(count => count + 1);\n }\n }\n\n scrollIntoView(options?: ScrollToRowOptions): void {\n this.elementRef.nativeElement.scrollIntoView({\n behavior: options?.behavior,\n block: options?.block ?? 'start'\n });\n }\n\n @HostListener('contextmenu', ['$event'])\n onContextmenu($event: MouseEvent): void {\n this.rowContextmenu.emit({ event: $event, row: this.row() });\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DoCheck,\n ElementRef,\n inject,\n input,\n linkedSignal,\n output,\n signal\n} from '@angular/core';\n\nimport { NgxDatatableConfig } from '../../ngx-datatable.config';\nimport { CellActiveEvent, RowIndex, TableColumnInternal } from '../../types/internal.types';\nimport { ActivateEvent, CellContext, Row, RowOrGroup, TreeStatus } from '../../types/public.types';\nimport { TableColumn } from '../../types/table-column.type';\nimport { toPublicColumn } from '../../utils/column-helper';\nimport { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, ENTER } from '../../utils/keys';\n\n@Component({\n selector: 'datatable-body-cell',\n imports: [NgTemplateOutlet],\n template: `\n @let column = this.column();\n @let row = this.row();\n <div class=\"datatable-body-cell-label\" [style.margin-left.px]=\"calcLeftMargin(column, row)\">\n @let displayCheck = this.displayCheck();\n @if (column.checkboxable && (!displayCheck || displayCheck(row, publicColumn(), value()))) {\n <label class=\"datatable-checkbox\">\n <input\n type=\"checkbox\"\n [attr.aria-label]=\"ariaRowCheckboxMessage()\"\n [disabled]=\"disabled()\"\n [checked]=\"isSelected()\"\n (click)=\"onCheckboxChange($event)\"\n />\n </label>\n }\n @if (column.isTreeColumn) {\n @if (!column.treeToggleTemplate) {\n @let treeStatus = this.treeStatus() ?? 'collapsed';\n <button\n class=\"datatable-tree-button\"\n type=\"button\"\n [disabled]=\"treeStatus === 'disabled'\"\n [attr.aria-label]=\"treeStatus\"\n (click)=\"onTreeAction()\"\n >\n <span>\n @if (treeStatus === 'loading') {\n <i [class]=\"cssClasses().treeStatusLoading ?? 'icon datatable-icon-collapse'\"></i>\n }\n @if (treeStatus === 'collapsed') {\n <i [class]=\"cssClasses().treeStatusCollapsed ?? 'icon datatable-icon-up'\"></i>\n }\n @if (treeStatus === 'expanded' || treeStatus === 'disabled') {\n <i [class]=\"cssClasses().treeStatusExpanded ?? 'icon datatable-icon-down'\"></i>\n }\n </span>\n </button>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"column.treeToggleTemplate\"\n [ngTemplateOutletContext]=\"{ cellContext: cellContext() }\"\n />\n }\n }\n @if (!column.cellTemplate) {\n @if (column.bindAsUnsafeHtml) {\n <span [title]=\"sanitizedValue()\" [innerHTML]=\"value()\"> </span>\n } @else {\n <span [title]=\"sanitizedValue()\">{{ value() }}</span>\n }\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"column.cellTemplate\"\n [ngTemplateOutletContext]=\"cellContext()\"\n />\n }\n </div>\n `,\n styleUrl: './body-cell.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'datatable-body-cell',\n '[class]': 'columnCssClasses()',\n '[class.active]': 'isFocused() && !disabled()',\n '[class.row-disabled]': 'disabled()',\n '[style.width.px]': 'column().width()',\n '[style.minWidth.px]': 'column().minWidth',\n '[style.maxWidth.px]': 'column().maxWidth',\n '[style.height]': 'height()',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '(click)': 'onClick($event)',\n '(dblclick)': 'onDblClick($event)',\n '(keydown)': 'onKeyDown($event)'\n }\n})\nexport class DataTableBodyCellComponent<TRow extends Row = any> implements DoCheck {\n readonly displayCheck = input<(row: TRow, column: TableColumn, value: any) => boolean>();\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly group = input<TRow[]>();\n\n readonly rowHeight = input<number>(0);\n\n readonly isSelected = input(false, { transform: booleanAttribute });\n\n readonly rowIndex = input<RowIndex>();\n\n readonly column = input.required<TableColumnInternal>();\n\n readonly row = input.required<TRow>();\n\n readonly treeStatus = input<TreeStatus | undefined>('collapsed');\n\n readonly ariaRowCheckboxMessage = input.required<string>();\n\n readonly cssClasses = input.required<Partial<Required<NgxDatatableConfig>['cssClasses']>>();\n\n readonly expanded = input(false, { transform: booleanAttribute });\n\n readonly activate = output<CellActiveEvent<TRow>>();\n\n readonly treeAction = output<TRow>();\n\n protected readonly publicColumn = computed(() => toPublicColumn(this.column()));\n\n protected readonly columnCssClasses = computed(() => {\n const column = this.column();\n if (!column.cellClass) {\n return [];\n }\n if (typeof column.cellClass === 'string') {\n return column.cellClass;\n }\n return column.cellClass({\n row: this.row(),\n group: this.group(),\n column: this.publicColumn(),\n value: this.value(),\n rowHeight: this.rowHeight()\n });\n });\n\n protected readonly height = computed(() => {\n const height = this.rowHeight();\n if (isNaN(height)) {\n return height;\n }\n return height + 'px';\n });\n\n protected readonly sanitizedValue = computed(() => {\n const value = this.value();\n return value !== null && value !== undefined ? this.stripHtml(value) : value;\n });\n readonly value = linkedSignal(() => this.getComputedValue());\n protected readonly cellContext = computed<CellContext<TRow>>(() => {\n return {\n onCheckboxChangeFn: (event: Event) => this.onCheckboxChange(event),\n activateFn: (event: ActivateEvent<TRow>) => this.activate.emit(event),\n row: this.row(),\n group: this.group(),\n value: this.value(),\n column: this.publicColumn(),\n rowHeight: this.rowHeight(),\n isSelected: this.isSelected(),\n rowIndex: this.rowIndex()?.index ?? 0,\n rowInGroupIndex: this.rowIndex()?.indexInGroup,\n treeStatus: this.treeStatus() ?? 'collapsed',\n disabled: this.disabled(),\n expanded: this.expanded(),\n onTreeAction: () => this.onTreeAction()\n };\n });\n\n protected readonly isFocused = signal(false);\n private _element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n ngDoCheck(): void {\n const value = this.getComputedValue();\n if (value !== this.value()) {\n this.value.set(value);\n }\n }\n\n private getComputedValue(): any {\n let value = '';\n const column = this.column();\n const row = this.row();\n if (!row || column.prop == undefined) {\n value = '';\n } else {\n const val = column.$$valueGetter(row, column.prop);\n const userPipe = column.pipe;\n\n if (userPipe) {\n value = userPipe.transform(val);\n } else if (value !== undefined) {\n value = val;\n }\n }\n return value;\n }\n\n protected onFocus(): void {\n this.isFocused.set(true);\n }\n\n protected onBlur(): void {\n this.isFocused.set(false);\n }\n\n protected onClick(event: MouseEvent): void {\n this.activate.emit({\n type: 'click',\n event,\n row: this.row(),\n group: this.group(),\n rowHeight: this.rowHeight(),\n column: this.publicColumn(),\n value: this.value(),\n cellElement: this._element\n });\n }\n\n protected onDblClick(event: MouseEvent): void {\n this.activate.emit({\n type: 'dblclick',\n event,\n row: this.row(),\n group: this.group(),\n rowHeight: this.rowHeight(),\n column: this.publicColumn(),\n value: this.value(),\n cellElement: this._element\n });\n }\n\n protected onKeyDown(event: KeyboardEvent): void {\n const key = event.key;\n const isTargetCell = event.target === this._element;\n\n const isAction =\n key === ENTER ||\n key === ARROW_DOWN ||\n key === ARROW_UP ||\n key === ARROW_LEFT ||\n key === ARROW_RIGHT;\n\n if (isAction && isTargetCell) {\n event.preventDefault();\n event.stopPropagation();\n\n this.activate.emit({\n type: 'keydown',\n event,\n row: this.row(),\n group: this.group(),\n rowHeight: this.rowHeight(),\n column: this.publicColumn(),\n value: this.value(),\n cellElement: this._element\n });\n }\n }\n\n onCheckboxChange(event: Event): void {\n this.activate.emit({\n type: 'checkbox',\n event,\n row: this.row(),\n group: this.group(),\n rowHeight: this.rowHeight(),\n column: this.publicColumn(),\n value: this.value(),\n cellElement: this._element,\n treeStatus: 'collapsed'\n });\n }\n\n stripHtml(html: string): string {\n if (!html.replace) {\n return html;\n }\n return html.replace(/<\\/?[^>]+(>|$)/g, '');\n }\n\n protected onTreeAction() {\n this.treeAction.emit(this.row());\n }\n\n calcLeftMargin(column: TableColumnInternal, row: RowOrGroup<TRow>): number {\n const levelIndent = column.treeLevelIndent ?? 50;\n return column.isTreeColumn ? (row as TRow).level! * levelIndent : 0;\n }\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n DoCheck,\n ElementRef,\n HostBinding,\n HostListener,\n inject,\n input,\n KeyValueDiffer,\n KeyValueDiffers,\n output\n} from '@angular/core';\n\nimport { NgxDatatableConfig } from '../../ngx-datatable.config';\nimport { CellActiveEvent, RowIndex, TableColumnInternal } from '../../types/internal.types';\nimport { ActivateEvent, Row, RowOrGroup, TreeStatus } from '../../types/public.types';\nimport { TableColumn } from '../../types/table-column.type';\nimport { columnGroupWidths, columnsByPin, columnsByPinArr } from '../../utils/column';\nimport { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, ENTER } from '../../utils/keys';\nimport { DataTableBodyCellComponent } from './body-cell.component';\n\n@Component({\n selector: 'datatable-body-row',\n imports: [DataTableBodyCellComponent],\n template: `\n @for (colGroup of _columnsByPin(); track colGroup.type) {\n @if (colGroup.columns.length) {\n <div\n class=\"datatable-row-group\"\n [class]=\"'datatable-row-' + colGroup.type\"\n [style.width.px]=\"_columnGroupWidths()[colGroup.type]\"\n [class.row-disabled]=\"disabled()\"\n >\n @for (column of colGroup.columns; track column.$$id; let ii = $index) {\n <datatable-body-cell\n role=\"cell\"\n tabindex=\"-1\"\n [row]=\"row()\"\n [group]=\"group()\"\n [expanded]=\"expanded()\"\n [isSelected]=\"isSelected()\"\n [rowIndex]=\"rowIndex()\"\n [column]=\"column\"\n [rowHeight]=\"rowHeight()\"\n [displayCheck]=\"displayCheck()\"\n [disabled]=\"disabled()\"\n [treeStatus]=\"treeStatus()\"\n [ariaRowCheckboxMessage]=\"ariaRowCheckboxMessage()\"\n [cssClasses]=\"cssClasses()\"\n (activate)=\"onActivate($event, ii)\"\n (treeAction)=\"onTreeAction()\"\n />\n }\n </div>\n }\n }\n `,\n styleUrl: './body-row.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'datatable-body-row',\n 'role': 'row',\n 'tabindex': '-1',\n '[class]': 'cssClass()',\n '[class.active]': 'isSelected()',\n '[class.datatable-row-odd]': 'innerRowIndex() % 2 !== 0',\n '[class.datatable-row-even]': 'innerRowIndex() % 2 === 0',\n '[class.row-disabled]': 'disabled()',\n '[style.height.px]': 'rowHeight()'\n }\n})\nexport class DataTableBodyRowComponent<TRow extends Row = any> implements DoCheck {\n private cd = inject(ChangeDetectorRef);\n\n readonly columns = input.required<TableColumnInternal[]>();\n readonly expanded = input<boolean>();\n readonly rowClass = input<(row: TRow) => string | Record<string, boolean>>();\n readonly row = input.required<TRow>();\n readonly group = input<TRow[]>();\n readonly isSelected = input<boolean>();\n readonly rowIndex = input.required<RowIndex>();\n readonly displayCheck = input<(row: TRow, column: TableColumn, value?: any) => boolean>();\n readonly treeStatus = input<TreeStatus | undefined>('collapsed');\n readonly ariaRowCheckboxMessage = input.required<string>();\n\n readonly disabled = input<boolean>();\n readonly cssClasses = input.required<Partial<Required<NgxDatatableConfig>['cssClasses']>>();\n readonly checkRowPropertyChanges = input(true, { transform: booleanAttribute });\n\n protected readonly cssClass = computed(() => {\n const rowClass = this.rowClass();\n return rowClass ? rowClass(this.row()) : [];\n });\n\n readonly rowHeight = input.required<number>();\n\n @HostBinding('style.width.px')\n get columnsTotalWidths(): number {\n return this._columnGroupWidths().total;\n }\n\n readonly activate = output<ActivateEvent<TRow>>();\n readonly treeAction = output<void>();\n\n _element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n readonly _columnGroupWidths = computed(() => {\n const colsByPin = columnsByPin(this.columns());\n return columnGroupWidths(colsByPin, this.columns());\n });\n readonly _columnsByPin = computed(() => {\n return columnsByPinArr(this.columns());\n });\n\n private _rowDiffer: KeyValueDiffer<keyof RowOrGroup<TRow>, any> = inject(KeyValueDiffers)\n .find({})\n .create();\n\n ngDoCheck(): void {\n if (!this.checkRowPropertyChanges()) {\n return;\n }\n if (this._rowDiffer.diff(this.row())) {\n this.cd.markForCheck();\n }\n }\n\n onActivate(event: CellActiveEvent<TRow>, index: number): void {\n this.activate.emit({ ...event, rowElement: this._element, cellIndex: index });\n }\n\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent): void {\n const key = event.key;\n const isTargetRow = event.target === this._element;\n\n const isAction =\n key === ENTER ||\n key === ARROW_DOWN ||\n key === ARROW_UP ||\n key === ARROW_LEFT ||\n key === ARROW_RIGHT;\n\n const isCtrlA = event.key === 'a' && (event.ctrlKey || event.metaKey);\n\n if ((isAction && isTargetRow) || isCtrlA) {\n event.preventDefault();\n event.stopPropagation();\n\n this.activate.emit({\n type: 'keydown',\n event,\n row: this.row(),\n rowElement: this._element\n });\n }\n }\n\n @HostListener('mouseenter', ['$event'])\n onMouseenter(event: MouseEvent): void {\n this.activate.emit({\n type: 'mouseenter',\n event,\n row: this.row(),\n rowElement: this._element\n });\n }\n\n onTreeAction() {\n this.treeAction.emit();\n }\n\n /** Returns the row index, or if in a group, the index within a group. */\n protected readonly innerRowIndex = computed(() => {\n const rowIndex = this.rowIndex();\n return rowIndex?.indexInGroup ?? rowIndex?.index ?? 0;\n });\n}\n","import { Directive } from '@angular/core';\n\nimport { Row } from '../../types/public.types';\n\n@Directive({\n selector: '[ngx-datatable-body-row]'\n})\nexport class DatatableBodyRowDirective {\n static ngTemplateContextGuard<TRow extends Row = any>(\n directive: DatatableBodyRowDirective,\n context: unknown\n ): context is {\n row: TRow;\n groupedRows: TRow[];\n index: number;\n indexInGroup?: number;\n disabled: boolean;\n } {\n return true;\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n numberAttribute\n} from '@angular/core';\n\nimport { TableColumnInternal } from '../../../types/internal.types';\n\n@Component({\n selector: 'ghost-loader',\n imports: [NgTemplateOutlet],\n templateUrl: './ghost-loader.component.html',\n styleUrl: './ghost-loader.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DataTableGhostLoaderComponent {\n readonly columns = input.required<TableColumnInternal[]>();\n readonly pageSize = input.required<number, unknown>({ transform: numberAttribute });\n readonly rowHeight = input.required<number | 'auto' | ((row?: any) => number)>();\n readonly ghostBodyHeight = input<number, unknown>(undefined, { transform: numberAttribute });\n\n protected readonly ghostRows = computed(() =>\n Array.from({ length: this.pageSize() }, (_, index) => index)\n );\n\n protected readonly rowHeightComputed = () => {\n const rowHeight = this.rowHeight();\n if (typeof rowHeight === 'function') {\n // If rowHeight is a function, we cannot determine a fixed height here.\n return 'auto';\n }\n return rowHeight === 'auto' ? 'auto' : rowHeight + 'px';\n };\n}\n","<div class=\"ghost-loader ghost-cell-container\" [style.height.px]=\"ghostBodyHeight()\">\n @for (item of ghostRows(); track item) {\n <div class=\"ghost-element datatable-body-row\" [style.height]=\"rowHeightComputed()\">\n @for (col of columns(); track col) {\n <div class=\"ghost-cell datatable-body-cell\" [style.width.px]=\"col.width()\">\n @if (!col.ghostCellTemplate) {\n <div class=\"line ghost-cell-strip\"></div>\n } @else {\n <ng-template [ngTemplateOutlet]=\"col.ghostCellTemplate\" />\n }\n </div>\n }\n </div>\n }\n</div>\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n inject,\n input,\n OnDestroy,\n OnInit,\n output,\n Renderer2\n} from '@angular/core';\n\nimport { ScrollToRowOptions } from '../../types/public.types';\n\nexport interface ScrollEventInternal {\n direction: string;\n scrollYPos: number;\n scrollXPos: number;\n}\n\n@Component({\n selector: 'datatable-scroller',\n template: ` <ng-content /> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'datatable-scroll',\n '[style.height.px]': 'scrollHeight()',\n '[style.minWidth.px]': 'scrollWidth()'\n }\n})\nexport class ScrollerComponent implements OnInit, OnDestroy {\n private renderer = inject(Renderer2);\n\n readonly scrollbarV = input(false, {\n transform: booleanAttribute\n });\n readonly scrollbarH = input(false, {\n transform: booleanAttribute\n });\n readonly scrollHeight = input<number>();\n readonly scrollWidth = input<number>();\n\n readonly scroll = output<ScrollEventInternal>();\n\n scrollYPos = 0;\n scrollXPos = 0;\n prevScrollYPos = 0;\n prevScrollXPos = 0;\n element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n parentElement?: HTMLElement;\n\n private _scrollEventListener: any = null;\n private _scrollRafId: number | null = null;\n\n ngOnInit(): void {\n // manual bind so we don't always listen\n if (this.scrollbarV() || this.scrollbarH()) {\n const renderer = this.renderer;\n this.parentElement = renderer.parentNode(this.element);\n this._scrollEventListener = this.onScrolled.bind(this);\n this.parentElement?.addEventListener('scroll', this._scrollEventListener);\n }\n }\n\n ngOnDestroy(): void {\n if (this._scrollRafId !== null) {\n cancelAnimationFrame(this._scrollRafId);\n this._scrollRafId = null;\n }\n if (this._scrollEventListener) {\n this.parentElement?.removeEventListener('scroll', this._scrollEventListener);\n this._scrollEventListener = null;\n }\n }\n\n setOffset(offsetY: number): void {\n if (this.parentElement) {\n this.parentElement.scrollTop = offsetY;\n }\n }\n\n scrollTo(top: number, options?: ScrollToRowOptions): void {\n if (this.parentElement) {\n this.parentElement.scrollTo({ top, behavior: options?.behavior });\n }\n }\n\n onScrolled(event: MouseEvent): void {\n if (this._scrollRafId !== null) {\n return;\n }\n const dom: Element = event.currentTarget as Element;\n this._scrollRafId = requestAnimationFrame(() => {\n this._scrollRafId = null;\n this.scrollYPos = dom.scrollTop;\n this.scrollXPos = dom.scrollLeft;\n this.updateOffset();\n });\n }\n\n updateOffset(): void {\n let direction: string;\n if (this.scrollYPos < this.prevScrollYPos) {\n direction = 'down';\n } else {\n direction = 'up';\n }\n\n this.scroll.emit({\n direction,\n scrollYPos: this.scrollYPos,\n scrollXPos: this.scrollXPos\n });\n\n this.prevScrollYPos = this.scrollYPos;\n this.prevScrollXPos = this.scrollXPos;\n }\n}\n","import { Component, computed, input } from '@angular/core';\n\nimport { TableColumnInternal } from '../../../types/internal.types';\nimport { DataTableBodyRowComponent } from '../body-row.component';\n\nconst defaultSumFunc = (cells: any[]): any => {\n const cellsWithValues = cells.filter(cell => !!cell);\n\n if (!cellsWithValues.length) {\n return null;\n }\n if (cellsWithValues.some(cell => typeof cell !== 'number')) {\n return null;\n }\n\n return cellsWithValues.reduce((res, cell) => res + cell);\n};\n\nconst noopSumFunc = (cells: any[]): void => {\n return;\n};\n\n@Component({\n selector: 'datatable-summary-row',\n imports: [DataTableBodyRowComponent],\n template: `\n @let summaryRow = this.summaryRow();\n @let _internalColumns = this._internalColumns();\n @if (summaryRow && _internalColumns.length) {\n <datatable-body-row\n ariaRowCheckboxMessage=\"\"\n [columns]=\"_internalColumns\"\n [rowHeight]=\"rowHeight()\"\n [row]=\"summaryRow\"\n [rowIndex]=\"{ index: -1 }\"\n [cssClasses]=\"{}\"\n />\n }\n `,\n host: {\n class: 'datatable-summary-row'\n }\n})\nexport class DataTableSummaryRowComponent {\n readonly rows = input.required<any[]>();\n readonly columns = input.required<TableColumnInternal[]>();\n\n readonly rowHeight = input.required<number>();\n readonly innerWidth = input.required<number>();\n\n protected readonly _internalColumns = computed(() => {\n return this.columns().map(col => ({\n ...col,\n cellTemplate: col.summaryTemplate\n }));\n });\n protected readonly summaryRow = computed(() => this.computeSummaryRowValues());\n\n private computeSummaryRowValues() {\n if (!this.columns().length || !this.rows().length) {\n return undefined;\n }\n const summaryRow: any = {};\n this.columns()\n .filter(col => !col.summaryTemplate && col.prop)\n .forEach(col => {\n const cellsFromSingleColumn = this.rows().map(row => row[col.prop!]);\n const sumFunc = this.getSummaryFunction(col);\n\n summaryRow[col.prop!] = col.pipe\n ? col.pipe.transform(sumFunc(cellsFromSingleColumn))\n : sumFunc(cellsFromSingleColumn);\n });\n\n return summaryRow;\n }\n\n private getSummaryFunction(column: TableColumnInternal): (a: any[]) => any {\n if (column.summaryFunc === undefined) {\n return defaultSumFunc;\n } else if (column.summaryFunc === null) {\n return noopSumFunc;\n } else {\n return column.summaryFunc;\n }\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n input,\n Input,\n model,\n OnChanges,\n OnInit,\n output,\n OutputEmitterRef,\n signal,\n SimpleChanges,\n TemplateRef,\n TrackByFunction,\n untracked,\n ViewChild,\n viewChildren\n} from '@angular/core';\n\nimport { NgxDatatableConfig } from '../../ngx-datatable.config';\nimport { TableColumnInternal } from '../../types/internal.types';\nimport {\n ActivateEvent,\n DetailToggleEvents,\n DragEventData,\n Group,\n GroupToggleEvents,\n Row,\n RowOrGroup,\n ScrollEvent,\n ScrollToRowOptions,\n SelectionType\n} from '../../types/public.types';\nimport { TableColumn } from '../../types/table-column.type';\nimport { columnGroupWidths, columnsByPin } from '../../utils/column';\nimport { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, ENTER } from '../../utils/keys';\nimport { RowHeightCache } from '../../utils/row-height-cache';\nimport { selectRows, selectRowsBetween } from '../../utils/selection';\nimport { DatatableRowDetailDirective } from '../row-detail/row-detail.directive';\nimport { DatatableGroupHeaderDirective } from './body-group-header.directive';\nimport { DataTableGroupWrapperComponent } from './body-group-wrapper.component';\nimport { DatatableRowDefInternalDirective } from './body-row-def.component';\nimport { DataTableRowWrapperComponent } from './body-row-wrapper.component';\nimport { DataTableBodyRowComponent } from './body-row.component';\nimport { DatatableBodyRowDirective } from './body-row.directive';\nimport { DataTableGhostLoaderComponent } from './ghost-loader/ghost-loader.component';\nimport { ScrollerComponent } from './scroller.component';\nimport { DataTableSummaryRowComponent } from './summary/summary-row.component';\n\n@Component({\n selector: 'datatable-body',\n imports: [\n DataTableGhostLoaderComponent,\n ScrollerComponent,\n DataTableSummaryRowComponent,\n DataTableRowWrapperComponent,\n DatatableRowDefInternalDirective,\n DataTableBodyRowComponent,\n NgTemplateOutlet,\n DatatableBodyRowDirective,\n DataTableGroupWrapperComponent\n ],\n template: `\n @if (loadingIndicator()) {\n <div class=\"custom-loading-indicator-wrapper\">\n <div class=\"custom-loading-content\">\n <ng-content select=\"[loading-indicator]\" />\n </div>\n </div>\n }\n @let scrollbarV = this.scrollbarV();\n @let columns = this.columns();\n @let columnGroupWidths = this.columnGroupWidths();\n @let bodyHeight = this._bodyHeight();\n @let rows = this.rows();\n @let rowCount = this.rowCount();\n @if (ghostLoadingIndicator() && (!rowCount || !virtualization() || !scrollbarV)) {\n <ghost-loader\n class=\"ghost-overlay\"\n [columns]=\"columns\"\n [pageSize]=\"pageSize()\"\n [rowHeight]=\"rowHeight()\"\n [ghostBodyHeight]=\"bodyHeight\"\n />\n }\n @if (rows.length) {\n <datatable-scroller\n [scrollbarV]=\"scrollbarV\"\n [scrollbarH]=\"scrollbarH()\"\n [scrollHeight]=\"scrollHeight()\"\n [scrollWidth]=\"columnGroupWidths?.total\"\n [class.horizontal-overflow]=\"innerWidth() < (columnGroupWidths?.total ?? 0)\"\n (scroll)=\"onBodyScroll($event)\"\n >\n @if (summaryRow() && summaryPosition() === 'top') {\n <datatable-summary-row\n [rowHeight]=\"summaryHeight()\"\n [innerWidth]=\"innerWidth()\"\n [rows]=\"rows\"\n [columns]=\"columns\"\n />\n }\n <ng-template\n #bodyRow\n let-row=\"row\"\n let-index=\"index\"\n let-indexInGroup=\"indexInGroup\"\n let-groupedRows=\"groupedRows\"\n let-disabled=\"disabled\"\n ngx-datatable-body-row\n >\n <datatable-row-wrapper\n [attr.hidden]=\"\n ghostLoadingIndicator() && (!rowCount || !virtualization() || !scrollbarV)\n ? true\n : null\n \"\n [innerWidth]=\"innerWidth()\"\n [rowDetail]=\"rowDetail()\"\n [detailRowHeightFn]=\"detailRowHeightFn()\"\n [row]=\"row\"\n [disabled]=\"disabled\"\n [expanded]=\"getRowExpanded(row)\"\n [rowIndex]=\"indexes().first + index\"\n [ariaGroupHeaderCheckboxMessage]=\"ariaGroupHeaderCheckboxMessage()\"\n [checkRowPropertyChanges]=\"checkRowPropertyChanges()\"\n (rowContextmenu)=\"rowContextmenu.emit($event)\"\n >\n <datatable-body-row\n #rowElement\n [disabled]=\"disabled\"\n [isSelected]=\"getRowSelected(row)\"\n [columns]=\"columns\"\n [rowHeight]=\"getRowHeight(row)\"\n [row]=\"row\"\n [group]=\"groupedRows\"\n [rowIndex]=\"{ index: index, indexInGroup: indexInGroup }\"\n [expanded]=\"getRowExpanded(row)\"\n [rowClass]=\"rowClass()\"\n [displayCheck]=\"displayCheck()\"\n [treeStatus]=\"row?.treeStatus\"\n [draggable]=\"rowDraggable()\"\n [ariaRowCheckboxMessage]=\"ariaRowCheckboxMessage()\"\n [cssClasses]=\"cssClasses()\"\n [checkRowPropertyChanges]=\"checkRowPropertyChanges()\"\n (treeAction)=\"onTreeAction(row)\"\n (activate)=\"onActivate($event, index)\"\n (drop)=\"drop($event, row, rowElement)\"\n (dragover)=\"dragOver($event, row)\"\n (dragenter)=\"dragEnter($event, row, rowElement)\"\n (dragleave)=\"dragLeave($event, row, rowElement)\"\n (dragstart)=\"drag($event, row, rowElement)\"\n (dragend)=\"dragEnd($event, row)\"\n />\n </datatable-row-wrapper>\n </ng-template>\n\n <div [style.transform]=\"renderOffset()\">\n @for (group of rowsToRender(); track rowTrackingFn(i, group); let i = $index) {\n @if (!group && ghostLoadingIndicator()) {\n <ghost-loader [columns]=\"columns\" [pageSize]=\"1\" [rowHeight]=\"rowHeight()\" />\n } @else if (group) {\n @let disableRowCheck = this.disableRowCheck();\n @let disabled = isRow(group) && disableRowCheck && disableRowCheck(group);\n @let rowDefTemplate = this.rowDefTemplate();\n @if (rowDefTemplate) {\n <ng-container\n *rowDefInternal=\"\n {\n template: rowDefTemplate,\n rowTemplate: bodyRow,\n row: group,\n index: i\n };\n disabled: disabled\n \"\n />\n } @else {\n @if (isRow(group)) {\n <ng-container\n [ngTemplateOutlet]=\"bodyRow\"\n [ngTemplateOutletContext]=\"{\n row: group,\n index: indexes().first + i,\n disabled\n }\"\n />\n }\n }\n\n @if (isGroup(group)) {\n <datatable-group-wrapper\n [group]=\"group\"\n [attr.hidden]=\"\n ghostLoadingIndicator() && (!rowCount || !virtualization() || !scrollbarV)\n ? true\n : null\n \"\n [innerWidth]=\"innerWidth()\"\n [style.width]=\"groupedRows() ? columnGroupWidths.total : undefined\"\n [groupHeader]=\"groupHeader()\"\n [groupHeaderRowHeight]=\"getGroupHeaderRowHeight(group, i)\"\n [disabled]=\"disabled\"\n [expanded]=\"getGroupExpanded(group)\"\n [rowIndex]=\"indexes().first + i\"\n [selected]=\"selected()\"\n [ariaGroupHeaderCheckboxMessage]=\"ariaGroupHeaderCheckboxMessage()\"\n (groupSelectedChange)=\"groupSelectedChange($event, group)\"\n >\n @for (row of group.value; track rowTrackingFn($index, row)) {\n @let disabled = disableRowCheck && disableRowCheck(row);\n <ng-container\n [ngTemplateOutlet]=\"bodyRow\"\n [ngTemplateOutletContext]=\"{\n row,\n groupedRows: group?.value,\n index: indexes().first + i,\n indexInGroup: $index,\n disabled\n }\"\n />\n }\n </datatable-group-wrapper>\n }\n }\n }\n </div>\n </datatable-scroller>\n @if (summaryRow() && summaryPosition() === 'bottom') {\n <datatable-summary-row\n [rowHeight]=\"summaryHeight()\"\n [innerWidth]=\"innerWidth()\"\n [rows]=\"rows\"\n [columns]=\"columns\"\n />\n }\n }\n @if (!rows?.length && !loadingIndicator() && !ghostLoadingIndicator()) {\n <datatable-scroller\n [scrollbarV]=\"scrollbarV\"\n [scrollbarH]=\"scrollbarH()\"\n [scrollHeight]=\"scrollHeight()\"\n [style.width]=\"scrollbarH() ? columnGroupWidths?.total + 'px' : '100%'\"\n (scroll)=\"onBodyScroll($event)\"\n >\n <ng-content select=\"[empty-content]\" />\n </datatable-scroller>\n }\n `,\n styleUrl: './body.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'datatable-body',\n '[style.height]': '_bodyHeight()',\n '[style.width]': '_bodyWidth()'\n }\n})\nexport class DataTableBodyComponent<TRow extends Row = any> implements OnInit, OnChanges {\n cd = inject(ChangeDetectorRef);\n\n readonly rowDefTemplate = input<TemplateRef<any>>();\n readonly scrollbarV = input(false, { transform: booleanAttribute });\n readonly scrollbarH = input<boolean>();\n readonly loadingIndicator = input<boolean>();\n readonly ghostLoadingIndicator = input<boolean>();\n readonly externalPaging = input<boolean>();\n readonly rowHeight = input.required<number | 'auto' | ((row?: any) => number)>();\n readonly offsetX = model.required<number>();\n readonly selectionType = input<SelectionType>();\n readonly selected = model<TRow[]>([]);\n readonly rowIdentity = input.required<(x: RowOrGroup<TRow>) => unknown>();\n readonly rowDetail = input<DatatableRowDetailDirective>();\n readonly groupHeader = input<DatatableGroupHeaderDirective>();\n readonly selectCheck = input<(value: TRow, index: number, array: TRow[]) => boolean>();\n readonly displayCheck = input<(row: TRow, column: TableColumn, value?: any) => boolean>();\n readonly trackByProp = input<keyof TRow>();\n readonly rowClass = input<(row: TRow) => string | Record<string, boolean>>();\n readonly groupedRows = input<Group<TRow>[]>();\n // TODO: Find a better way to handle default expansion state with signal input\n @Input() groupExpansionDefault?: boolean;\n readonly innerWidth = input.required<number>();\n readonly virtualization = input<boolean>();\n readonly summaryRow = input<boolean>();\n readonly summaryPosition = input.required<string>();\n readonly summaryHeight = input.required<number>();\n readonly rowDraggable = input<boolean>();\n readonly rowDragEvents = input.required<OutputEmitterRef<DragEventData>>();\n readonly disableRowCheck = input<(row: TRow) => boolean | undefined>();\n readonly ariaGroupHeaderCheckboxMessage = input.required<string>();\n readonly checkRowPropertyChanges = input(true, { transform: booleanAttribute });\n\n readonly pageSize = input.required<number>();\n\n readonly rows = input.required<(TRow | undefined)[]>();\n\n readonly columns = input.required<TableColumnInternal[]>();\n\n readonly offset = input<number>(0);\n\n readonly rowCount = input<number>(0);\n\n readonly bodyHeight = input<string | number>();\n readonly verticalScrollVisible = input(false);\n readonly ariaRowCheckboxMessage = input.required<string>();\n readonly cssClasses = input.required<Partial<Required<NgxDatatableConfig>['cssClasses']>>();\n\n readonly scroll = output<ScrollEvent>();\n readonly page = output<number>();\n readonly activate = output<ActivateEvent<TRow>>();\n readonly rowContextmenu = output<{\n event: MouseEvent;\n row: RowOrGroup<TRow>;\n }>();\n readonly treeAction = output<{ row: TRow }>();\n\n @ViewChild(ScrollerComponent) scroller!: ScrollerComponent;\n private readonly rowWrappers = viewChildren(DataTableRowWrapperComponent);\n\n /**\n * Returns if selection is enabled.\n */\n get selectEnabled(): boolean {\n return !!this.selectionType();\n }\n\n /**\n * Property that would calculate the height of scroll bar\n * based on the row heights cache for virtual scroll and virtualization. Other scenarios\n * calculate scroll height automatically (as height will be undefined).\n */\n readonly scrollHeight = computed(() => {\n if (this.rowHeightsCache() && this.scrollbarV() && this.virtualization() && this.rowCount()) {\n return this.rowHeightsCache().query(this.rowCount() - 1);\n }\n // avoid TS7030: Not all code paths return a value.\n return undefined;\n });\n\n readonly detailRowHeightFn = computed(() => {\n const rowDetail = this.rowDetail();\n if (!rowDetail) {\n return () => 0;\n }\n const rowHeight = rowDetail.rowHeight();\n return typeof rowHeight === 'function' ? rowHeight : () => rowHeight;\n });\n\n readonly rowsToRender = computed(() => {\n return this.updateRows();\n });\n readonly rowHeightsCache = computed(() => this.computeRowHeightsCache());\n readonly offsetY = signal(0);\n readonly indexes = computed(() => this.computeIndexes());\n readonly columnGroupWidths = computed(() => {\n const colsByPin = columnsByPin(this.columns());\n return columnGroupWidths(colsByPin, this.columns());\n });\n rowTrackingFn: TrackByFunction<RowOrGroup<TRow> | undefined>;\n destroyRef = inject(DestroyRef);\n readonly rowExpansions = signal<TRow[]>([]);\n readonly groupExpansions = signal<Group<TRow>[]>([]);\n\n _rows!: (TRow | undefined)[];\n readonly _bodyWidth = computed(() => {\n if (this.scrollbarH()) {\n return this.innerWidth() + 'px';\n } else {\n return '100%';\n }\n });\n readonly _bodyHeight = computed(() => {\n if (this.scrollbarV()) {\n return this.bodyHeight() + 'px';\n } else {\n return 'auto';\n }\n });\n _offsetEvent = -1;\n\n private _draggedRow?: RowOrGroup<TRow>;\n private _draggedRowElement?: HTMLElement;\n\n /**\n * Creates an instance of DataTableBodyComponent.\n */\n constructor() {\n // declare fn here so we can get access to the `this` property\n this.rowTrackingFn = (index, row) => {\n if (this.ghostLoadingIndicator()) {\n return index;\n }\n const trackByProp = this.trackByProp();\n if (trackByProp && row && this.isRow(row)) {\n return row[trackByProp];\n } else if (row && this.isGroup(row)) {\n return row.key ?? index;\n } else {\n return row ?? index;\n }\n };\n effect(() => this.defaultGroupExpansionEffect());\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.bodyHeight || changes.rows || changes.rowCount || changes.pageSize) {\n if (changes.pageSize) {\n this._offsetEvent = -1;\n this.updatePage('up');\n this.updatePage('down');\n }\n }\n }\n\n /**\n * Called after the constructor, initializing input properties\n */\n ngOnInit(): void {\n const rowDetail = this.rowDetail();\n if (rowDetail) {\n const listener = rowDetail.toggle.subscribe(event => this.rowToggleStateChange(event));\n this.destroyRef.onDestroy(() => listener.unsubscribe());\n }\n\n const groupHeader = this.groupHeader();\n if (groupHeader) {\n const listener = groupHeader.toggle.subscribe(event => {\n // Remove default expansion state once user starts manual toggle.\n this.groupExpansionDefault = false;\n this.groupToggleStateChange(event);\n });\n this.destroyRef.onDestroy(() => listener.unsubscribe());\n }\n }\n\n private defaultGroupExpansionEffect(): void {\n if (\n this.groupedRows() &&\n untracked(() => this.groupExpansions().length) === 0 &&\n this.groupExpansionDefault\n ) {\n this.groupExpansions.set([...(this.groupedRows() ?? [])]);\n }\n }\n\n private groupToggleStateChange({ type, value }: GroupToggleEvents<TRow>) {\n if (type === 'group') {\n this.toggleGroupExpansion(value);\n }\n if (type === 'all') {\n this.toggleAllGroups(value);\n }\n\n // Refresh rows after toggle\n this.cd.markForCheck();\n }\n\n private rowToggleStateChange({ type, value }: DetailToggleEvents<TRow>) {\n if (type === 'row') {\n this.toggleRowExpansion(value);\n }\n if (type === 'all') {\n this.toggleAllRows(value);\n }\n\n // Refresh rows after toggle\n this.cd.markForCheck();\n }\n\n /**\n * Updates the Y offset given a new offset.\n */\n updateOffsetY(offset?: number): void {\n // scroller is missing on empty table\n if (!this.scroller) {\n return;\n }\n\n const virtualization = this.virtualization();\n if (this.scrollbarV() && virtualization && offset) {\n // First get the row Index that we need to move to.\n const rowIndex = this.pageSize() * offset;\n offset = this.rowHeightsCache().query(rowIndex - 1);\n } else if (this.scrollbarV() && !virtualization) {\n offset = 0;\n }\n\n this.scroller.setOffset(offset ?? 0);\n }\n\n /**\n * Body was scrolled, this is mainly useful for\n * when a user is server-side pagination via virtual scroll.\n */\n onBodyScroll(event: any): void {\n const scrollYPos: number = event.scrollYPos;\n const scrollXPos: number = event.scrollXPos;\n\n // if scroll change, trigger update\n // this is mainly used for header cell positions\n if (this.offsetY() !== scrollYPos || this.offsetX() !== scrollXPos) {\n this.scroll.emit({\n offsetY: scrollYPos,\n offsetX: scrollXPos\n });\n }\n\n this.offsetY.set(scrollYPos);\n this.offsetX.set(scrollXPos);\n\n this.updatePage(event.direction);\n this.cd.detectChanges();\n }\n\n /**\n * Updates the page given a direction.\n */\n updatePage(direction: string): void {\n let offset = this.indexes().first / this.pageSize();\n const scrollInBetween = !Number.isInteger(offset);\n if (direction === 'up') {\n offset = Math.ceil(offset);\n } else if (direction === 'down') {\n offset = Math.floor(offset);\n }\n\n if (direction !== undefined && !isNaN(offset) && offset !== this._offsetEvent) {\n this._offsetEvent = offset;\n // if scroll was done by mouse drag make sure previous row and next row data is also fetched if its not fetched\n if (scrollInBetween && this.scrollbarV() && this.virtualization() && this.externalPaging()) {\n const upRow = this.rows()[this.indexes().first - 1];\n if (!upRow && direction === 'up') {\n this.page.emit(offset - 1);\n }\n\n const downRow = this.rows()[this.indexes().first + this.pageSize()];\n if (!downRow && direction === 'down') {\n this.page.emit(offset + 1);\n }\n }\n this.page.emit(offset);\n }\n }\n\n /**\n * Updates the rows in the view port\n */\n updateRows(): (RowOrGroup<TRow> | undefined)[] {\n const { first, last } = this.indexes();\n // if grouprowsby has been specified treat row paging\n // parameters as group paging parameters ie if limit 10 has been\n // specified treat it as 10 groups rather than 10 rows\n const groupedRows = this.groupedRows();\n const rows = groupedRows\n ? groupedRows.slice(first, Math.min(last, groupedRows.length))\n : this.rows().slice(first, Math.min(last, this.rowCount()));\n\n rows.length = last - first;\n return rows;\n }\n\n scrollToIndex(index: number, options?: ScrollToRowOptions): void {\n if (this.virtualization()) {\n const cache = this.rowHeightsCache();\n const rowTop = cache.query(index - 1);\n const rowBottom = cache.query(index);\n const rowHeight = rowBottom - rowTop;\n const viewportHeight = this.scroller.parentElement?.clientHeight ?? 0;\n const currentScrollTop = this.scroller.parentElement?.scrollTop ?? 0;\n const block = options?.block ?? 'start';\n\n let top: number;\n switch (block) {\n case 'center':\n top = rowTop - Math.max(0, (viewportHeight - rowHeight) / 2);\n break;\n case 'end':\n top = rowBottom - viewportHeight;\n break;\n case 'nearest':\n if (rowTop < currentScrollTop) {\n top = rowTop;\n } else if (rowBottom > currentScrollTop + viewportHeight) {\n top = rowBottom - viewportHeight;\n } else {\n top = currentScrollTop;\n }\n break;\n case 'start':\n default:\n top = rowTop;\n break;\n }\n\n this.scroller.scrollTo(Math.max(0, top), options);\n } else {\n this.rowWrappers()[index]?.scrollIntoView(options);\n }\n }\n\n /**\n * Get the row height\n */\n getRowHeight(row: RowOrGroup<TRow>): number {\n // if its a function return it\n const rowHeight = this.rowHeight();\n if (typeof rowHeight === 'function') {\n return rowHeight(row);\n }\n\n return rowHeight as number;\n }\n\n getGroupHeaderRowHeight = (row?: any, index?: any): number => {\n const groupHeader = this.groupHeader();\n if (!groupHeader) {\n return 0;\n }\n const rowHeightValue = groupHeader?.rowHeight();\n const rowHeight = rowHeightValue === 0 ? this.rowHeight() : rowHeightValue;\n return typeof rowHeight === 'function' ? rowHeight(row, index) : (rowHeight as number);\n };\n\n /**\n * Calculates the offset of the rendered rows.\n * As virtual rows are not shown, we have to move all rendered rows\n * by the total size of previous non-rendered rows.\n * If each row has a size of 10px and the first 10 rows are not rendered due to scroll,\n * then we have a renderOffset of 100px.\n */\n readonly renderOffset = computed(() => {\n if (this.scrollbarV() && this.virtualization()) {\n return `translateY(${this.rowHeightsCache().query(this.indexes().first - 1)}px)`;\n } else {\n return '';\n }\n });\n\n /**\n * Updates the index of the rows in the viewport\n */\n computeIndexes(): { first: number; last: number } {\n let first = 0;\n let last = this.rowCount();\n\n if (this.scrollbarV()) {\n if (this.virtualization()) {\n // Calculation of the first and last indexes will be based on where the\n // scrollY position would be at. The last index would be the one\n // that shows up inside the view port the last.\n const height = parseInt(this._bodyHeight(), 10);\n first = this.rowHeightsCache().getRowIndex(this.offsetY());\n last = this.rowHeightsCache().getRowIndex(height + this.offsetY()) + 1;\n }\n } else {\n // The server is handling paging and will pass an array that begins with the\n // element at a specified offset. first should always be 0 with external paging.\n if (!this.externalPaging()) {\n first = Math.max(this.offset() * this.pageSize(), 0);\n }\n last = Math.min(first + this.pageSize(), this.rowCount());\n }\n\n return { first, last };\n }\n\n /**\n * Refreshes the full Row Height cache. Should be used\n * when the entire row array state has changed.\n */\n computeRowHeightsCache(): RowHeightCache<TRow> {\n const cache = new RowHeightCache<TRow>();\n if (!this.scrollbarV() || (this.scrollbarV() && !this.virtualization())) {\n return cache;\n }\n\n // Initialize the tree only if there are rows inside the tree.\n if (this.rows().length) {\n cache.initCache({\n rows: this.rows() as TRow[], // TODO: RowHeightCache does not support grouping\n rowHeight: this.rowHeight(),\n detailRowHeight: this.detailRowHeightFn(),\n externalVirtual: this.scrollbarV() && this.externalPaging(),\n indexOffset: this.externalPaging() ? this.offset() * this.pageSize() : 0,\n rowCount: this.rowCount(),\n rowExpansions: new Set<TRow>(this.rowDetail() ? this.rowExpansions() : [])\n });\n }\n return cache;\n }\n\n /**\n * Toggle the Expansion of the row i.e. if the row is expanded then it will\n * collapse and vice versa. Note that the expanded status is stored as\n * a part of the row object itself as we have to preserve the expanded row\n * status in case of sorting and filtering of the row set.\n */\n toggleRowExpansion(row: TRow): void {\n const rowExpandedIdx = this.getExpandedIdx(row, this.rowExpansions());\n const expanded = rowExpandedIdx > -1;\n\n // Update the toggled row and update thive nevere heights in the cache.\n if (expanded) {\n this.rowExpansions.update(expansions => {\n expansions.splice(rowExpandedIdx, 1);\n return [...expansions];\n });\n } else {\n this.rowExpansions.update(expansions => [...expansions, row]);\n }\n }\n\n toggleGroupExpansion(row: Group<TRow>): void {\n const groupExpandedIdx = this.getExpandedIdx(row, this.groupExpansions());\n const expanded = groupExpandedIdx > -1;\n\n // Update the toggled row and update thive nevere heights in the cache.\n if (expanded) {\n this.groupExpansions.update(expansions => {\n expansions.splice(groupExpandedIdx, 1);\n return [...expansions];\n });\n } else {\n this.groupExpansions.update(expansions => [...expansions, row]);\n }\n }\n\n /**\n * Expand/Collapse all the rows no matter what their state is.\n */\n toggleAllRows(expanded: boolean): void {\n // TODO requires fixing. This still does not work with groups.\n this.rowExpansions.set(expanded ? [...(this.rows() as any)] : []);\n }\n\n /**\n * Expand/Collapse all the groups no matter what their state is.\n */\n toggleAllGroups(expanded: boolean): void {\n this.groupExpansions.set(expanded ? [...this.groupedRows()!] : []);\n }\n\n /**\n * Returns if the row was expanded and set default row expansion when row expansion is empty\n */\n getRowExpanded(row: TRow): boolean {\n return this.getExpandedIdx(row, this.rowExpansions()) > -1;\n }\n\n getGroupExpanded(group: Group<TRow>): boolean {\n return this.getExpandedIdx(group, this.groupExpansions()) > -1;\n }\n\n getExpandedIdx(row: RowOrGroup<TRow>, expanded: RowOrGroup<TRow>[]): number {\n if (!expanded?.length) {\n return -1;\n }\n\n const rowId = this.rowIdentity()(row);\n return expanded.findIndex(r => {\n const id = this.rowIdentity()(r);\n return id === rowId;\n });\n }\n\n onTreeAction(row: TRow) {\n this.treeAction.emit({ row });\n }\n\n dragOver(event: DragEvent, dropRow: RowOrGroup<TRow>) {\n event.preventDefault();\n this.rowDragEvents().emit({\n event,\n srcElement: this._draggedRowElement!,\n eventType: 'dragover',\n dragRow: this._draggedRow,\n dropRow\n });\n }\n\n drag(event: DragEvent, dragRow: RowOrGroup<TRow>, rowComponent: DataTableBodyRowComponent<TRow>) {\n this._draggedRow = dragRow;\n this._draggedRowElement = rowComponent._element;\n this.rowDragEvents().emit({\n event,\n srcElement: this._draggedRowElement,\n eventType: 'dragstart',\n dragRow\n });\n }\n\n drop(event: DragEvent, dropRow: RowOrGroup<TRow>, rowComponent: DataTableBodyRowComponent<TRow>) {\n event.preventDefault();\n this.rowDragEvents().emit({\n event,\n srcElement: this._draggedRowElement!,\n targetElement: rowComponent._element,\n eventType: 'drop',\n dragRow: this._draggedRow,\n dropRow\n });\n }\n\n dragEnter(\n event: DragEvent,\n dropRow: RowOrGroup<TRow>,\n rowComponent: DataTableBodyRowComponent<TRow>\n ) {\n event.preventDefault();\n this.rowDragEvents().emit({\n event,\n srcElement: this._draggedRowElement!,\n targetElement: rowComponent._element,\n eventType: 'dragenter',\n dragRow: this._draggedRow,\n dropRow\n });\n }\n\n dragLeave(\n event: DragEvent,\n dropRow: RowOrGroup<TRow>,\n rowComponent: DataTableBodyRowComponent<TRow>\n ) {\n event.preventDefault();\n this.rowDragEvents().emit({\n event,\n srcElement: this._draggedRowElement!,\n targetElement: rowComponent._element,\n eventType: 'dragleave',\n dragRow: this._draggedRow,\n dropRow\n });\n }\n\n dragEnd(event: DragEvent, dragRow: RowOrGroup<TRow>) {\n event.preventDefault();\n this.rowDragEvents().emit({\n event,\n srcElement: this._draggedRowElement!,\n eventType: 'dragend',\n dragRow\n });\n this._draggedRow = undefined;\n this._draggedRowElement = undefined;\n }\n\n prevIndex?: number;\n\n selectRow(event: Event, index: number, row: TRow): void {\n if (!this.selectEnabled) {\n return;\n }\n\n const chkbox = this.selectionType() === 'checkbox';\n const multi = this.selectionType() === 'multi';\n const multiClick = this.selectionType() === 'multiClick';\n let selected: TRow[] = [];\n\n // TODO: this code needs cleanup. Casting it to KeyboardEvent is not correct as it could also be other types.\n if (multi || chkbox || multiClick) {\n if ((event as KeyboardEvent).shiftKey) {\n selected = selectRowsBetween([], this.rows(), index, this.prevIndex!);\n } else if (\n (event as KeyboardEvent).key === 'a' &&\n ((event as KeyboardEvent).ctrlKey || (event as KeyboardEvent).metaKey)\n ) {\n // select all rows except dummy rows which are added for ghostloader in case of virtual scroll\n selected = this.rows().filter(rowItem => !!rowItem);\n } else if (\n (event as KeyboardEvent).ctrlKey ||\n (event as KeyboardEvent).metaKey ||\n multiClick ||\n chkbox\n ) {\n selected = selectRows([...this.selected()], row, this.getRowSelectedIdx.bind(this));\n } else {\n selected = selectRows([], row, this.getRowSelectedIdx.bind(this));\n }\n } else {\n selected = selectRows([], row, this.getRowSelectedIdx.bind(this));\n }\n\n const selectCheck = this.selectCheck();\n if (typeof selectCheck === 'function') {\n selected = selected.filter(selectCheck.bind(this));\n }\n\n if (typeof this.disableRowCheck() === 'function') {\n selected = selected.filter(rowData => !this.disableRowCheck()!(rowData));\n }\n\n this.selected.set(selected);\n this.prevIndex = index;\n }\n\n onActivate(modelObject: ActivateEvent<TRow>, index: number): void {\n const { type, event, row } = modelObject;\n const chkbox = this.selectionType() === 'checkbox';\n const select =\n (!chkbox && (type === 'click' || type === 'dblclick')) || (chkbox && type === 'checkbox');\n\n if (select) {\n this.selectRow(event, index, row);\n } else if (type === 'keydown') {\n if ((event as KeyboardEvent).key === ENTER) {\n this.selectRow(event, index, row);\n } else if (\n (event as KeyboardEvent).key === 'a' &&\n ((event as KeyboardEvent).ctrlKey || (event as KeyboardEvent).metaKey)\n ) {\n this.selectRow(event, 0, row); // The row property is ignored in this case. So we can pass anything.\n } else {\n this.onKeyboardFocus(modelObject);\n }\n }\n this.activate.emit(modelObject);\n }\n\n groupSelectedChange(selected: boolean, group: Group<TRow>): void {\n const selectedSet = new Set(this.selected());\n if (selected) {\n group.value.forEach(row => selectedSet.add(row));\n } else {\n group.value.forEach(row => selectedSet.delete(row));\n }\n this.selected.set(Array.from(selectedSet));\n }\n\n onKeyboardFocus(modelObject: ActivateEvent<TRow>): void {\n const { key } = modelObject.event as KeyboardEvent;\n const shouldFocus =\n key === ARROW_UP || key === ARROW_DOWN || key === ARROW_RIGHT || key === ARROW_LEFT;\n\n if (shouldFocus) {\n const isCellSelection = this.selectionType() === 'cell';\n const disableRowCheck = this.disableRowCheck();\n if (typeof disableRowCheck === 'function') {\n const isRowDisabled = disableRowCheck(modelObject.row);\n if (isRowDisabled) {\n return;\n }\n }\n if (!modelObject.cellElement || !isCellSelection) {\n this.focusRow(modelObject.rowElement, key);\n } else if (isCellSelection && modelObject.cellIndex !== undefined) {\n this.focusCell(modelObject.cellElement, modelObject.rowElement, key, modelObject.cellIndex);\n }\n }\n }\n\n focusRow(rowElement: HTMLElement, key: string): void {\n const nextRowElement = this.getPrevNextRow(rowElement, key);\n if (nextRowElement) {\n nextRowElement.focus();\n }\n }\n\n getPrevNextRow(rowElement: HTMLElement, key: string): any {\n const parentElement = rowElement.parentElement;\n\n if (parentElement) {\n let focusElement: Element | null = null;\n if (key === ARROW_UP) {\n focusElement = parentElement.previousElementSibling;\n } else if (key === ARROW_DOWN) {\n focusElement = parentElement.nextElementSibling;\n }\n\n if (focusElement?.children.length) {\n return focusElement.children[0];\n }\n }\n }\n\n focusCell(\n cellElement: HTMLElement,\n rowElement: HTMLElement,\n key: string,\n cellIndex: number\n ): void {\n let nextCellElement: Element | null = null;\n\n if (key === ARROW_LEFT) {\n nextCellElement = cellElement.previousElementSibling;\n } else if (key === ARROW_RIGHT) {\n nextCellElement = cellElement.nextElementSibling;\n } else if (key === ARROW_UP || key === ARROW_DOWN) {\n const nextRowElement = this.getPrevNextRow(rowElement, key);\n if (nextRowElement) {\n const children = nextRowElement.getElementsByClassName('datatable-body-cell');\n if (children.length) {\n nextCellElement = children[cellIndex];\n }\n }\n }\n\n if (\n nextCellElement &&\n 'focus' in nextCellElement &&\n typeof nextCellElement.focus === 'function'\n ) {\n nextCellElement.focus();\n }\n }\n\n getRowSelected(row: TRow): boolean {\n return this.getRowSelectedIdx(row, this.selected()) > -1;\n }\n\n getRowSelectedIdx(row: TRow, selected: any[]): number {\n if (!selected?.length) {\n return -1;\n }\n\n const rowId = this.rowIdentity()(row);\n return selected.findIndex(r => {\n const id = this.rowIdentity()(r);\n return id === rowId;\n });\n }\n protected isGroup(row: RowOrGroup<TRow>[]): row is Group<TRow>[];\n\n protected isGroup(row: RowOrGroup<TRow>): row is Group<TRow>;\n\n protected isGroup(row: RowOrGroup<TRow> | RowOrGroup<TRow>[]): boolean {\n return !!this.groupedRows();\n }\n\n protected isRow(row: RowOrGroup<TRow> | undefined): row is TRow {\n return !this.groupedRows();\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'datatable-progress',\n template: `\n <div class=\"progress-linear\" role=\"progressbar\">\n <div class=\"container\">\n <div class=\"bar\"></div>\n </div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ProgressBarComponent {}\n","import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\n\nimport { Page } from '../../types/internal.types';\nimport { DATATABLE_COMPONENT_TOKEN } from '../../utils/table-token';\nimport { DatatableComponent } from '../datatable.component';\n\n/**\n * Use this component to construct custom table footer with standard pagination.\n *\n * It must be used inside the `ngx-datatable-footer`\n *\n * @example\n * ```html\n *\n * <ngx-datatable>\n * ...\n * <ngx-datatable-footer>\n * <ng-template>\n * <app-custom-content />\n * <ngx-datatable-pager />\n * </ng-template>\n * </ngx-datatable-footer>\n * </ngx-datatable>\n * ```\n */\n@Component({\n selector: 'ngx-datatable-pager',\n template: `\n <ul class=\"pager\">\n <li>\n <button\n type=\"button\"\n class=\"page-button\"\n [disabled]=\"!canPrevious()\"\n [attr.aria-label]=\"messages.ariaFirstPageMessage ?? 'go to first page'\"\n (click)=\"selectPage(1)\"\n >\n <i [class]=\"pagerPreviousIcon() ?? 'datatable-icon-prev'\"></i>\n </button>\n </li>\n <li>\n <button\n type=\"button\"\n class=\"page-button\"\n [disabled]=\"!canPrevious()\"\n [attr.aria-label]=\"messages.ariaPreviousPageMessage ?? 'go to previous page'\"\n (click)=\"prevPage()\"\n >\n <i [class]=\"pagerLeftArrowIcon() ?? 'datatable-icon-left'\"></i>\n </button>\n </li>\n @for (pg of pages(); track pg.number) {\n <li class=\"pages\">\n <button\n type=\"button\"\n class=\"page-button\"\n [class.active]=\"pg.number === page()\"\n [attr.aria-label]=\"(messages.ariaPageNMessage ?? 'page') + ' ' + pg.number\"\n (click)=\"selectPage(pg.number)\"\n >\n {{ pg.text }}\n </button>\n </li>\n }\n <li>\n <button\n type=\"button\"\n class=\"page-button\"\n [disabled]=\"!canNext()\"\n [attr.aria-label]=\"messages.ariaNextPageMessage ?? 'go to next page'\"\n (click)=\"nextPage()\"\n >\n <i [class]=\"pagerRightArrowIcon() ?? 'datatable-icon-right'\"></i>\n </button>\n </li>\n <li>\n <button\n type=\"button\"\n class=\"page-button\"\n [disabled]=\"!canNext()\"\n [attr.aria-label]=\"messages.ariaLastPageMessage ?? 'go to last page'\"\n (click)=\"selectPage(totalPages())\"\n >\n <i [class]=\"pagerNextIcon() ?? 'datatable-icon-skip'\"></i>\n </button>\n </li>\n </ul>\n `,\n styleUrl: './pager.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'datatable-pager'\n }\n})\nexport class DatatablePagerComponent {\n // We cannot inject the footer directly as it is not part of the injector when used in a template.\n // But the table always is.\n // Ideally we can one day fetch those attributes from a global state, but for now this is fine.\n private datatable = inject(DATATABLE_COMPONENT_TOKEN);\n\n protected get messages(): ReturnType<DatatableComponent['messages']> {\n return this.datatable?.messages() ?? {};\n }\n\n protected readonly page = computed(() => this.datatable._footerComponent()!.curPage());\n protected readonly pageSize = computed(() => this.datatable._footerComponent()!.pageSize());\n protected readonly count = computed(\n () =>\n this.datatable._footerComponent()!.groupCount() ??\n this.datatable._footerComponent()!.rowCount()\n );\n protected readonly pagerNextIcon = computed(() =>\n this.datatable._footerComponent()!.pagerNextIcon()\n );\n protected readonly pagerRightArrowIcon = computed(() =>\n this.datatable._footerComponent()!.pagerRightArrowIcon()\n );\n protected readonly pagerLeftArrowIcon = computed(() =>\n this.datatable._footerComponent()!.pagerLeftArrowIcon()\n );\n protected readonly pagerPreviousIcon = computed(() =>\n this.datatable._footerComponent()!.pagerPreviousIcon()\n );\n\n protected readonly totalPages = computed(() => {\n return Math.max((this.pageSize() < 1 ? 1 : Math.ceil(this.count() / this.pageSize())) || 0, 1);\n });\n\n protected readonly pages = computed(() => {\n const pages: Page[] = [];\n let startPage = 1;\n let endPage = this.totalPages();\n const maxSize = 5;\n const isMaxSized = maxSize < this.totalPages();\n\n const page = this.page();\n\n if (isMaxSized) {\n startPage = page - Math.floor(maxSize / 2);\n endPage = page + Math.floor(maxSize / 2);\n\n if (startPage < 1) {\n startPage = 1;\n endPage = Math.min(startPage + maxSize - 1, this.totalPages());\n } else if (endPage > this.totalPages()) {\n startPage = Math.max(this.totalPages() - maxSize + 1, 1);\n endPage = this.totalPages();\n }\n }\n\n for (let num = startPage; num <= endPage; num++) {\n pages.push({\n number: num,\n text: num.toString()\n });\n }\n\n return pages;\n });\n\n protected readonly canPrevious = computed(() => this.page() > 1);\n\n protected readonly canNext = computed(() => this.page() < this.totalPages());\n\n protected prevPage(): void {\n this.selectPage(this.page() - 1);\n }\n\n protected nextPage(): void {\n this.selectPage(this.page() + 1);\n }\n\n protected selectPage(page: number): void {\n if (page > 0 && page <= this.totalPages() && page !== this.page()) {\n this.datatable._footerComponent()!.page.emit({ page });\n }\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, output, Signal } from '@angular/core';\n\nimport { FooterContext, PagerPageEvent } from '../../types/public.types';\nimport { DatatableFooterDirective } from './footer.directive';\nimport { DatatablePagerComponent } from './pager.component';\n\n@Component({\n selector: 'datatable-footer',\n imports: [NgTemplateOutlet, DatatablePagerComponent],\n template: `\n <div\n class=\"datatable-footer-inner\"\n [class.selected-count]=\"selectedMessage()\"\n [style.height.px]=\"footerHeight()\"\n >\n @let footerTemplate = this.footerTemplate()?.template();\n @if (footerTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"footerTemplate\"\n [ngTemplateOutletContext]=\"templateContext()\"\n />\n } @else {\n <div class=\"page-count\">\n @if (selectedMessage()) {\n <span> {{ selectedCount().toLocaleString() }} {{ selectedMessage() }} / </span>\n }\n {{ rowCount().toLocaleString() }} {{ totalMessage() }}\n </div>\n @if (isVisible()) {\n <ngx-datatable-pager />\n }\n }\n </div>\n `,\n styleUrl: './footer.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'datatable-footer'\n }\n})\nexport class DataTableFooterComponent {\n readonly footerHeight = input.required<number>();\n readonly rowCount = input.required<number>();\n readonly groupCount = input.required<number | undefined>();\n readonly pageSize = input.required<number>();\n readonly offset = input.required<number>();\n readonly pagerLeftArrowIcon = input<string | undefined>();\n readonly pagerRightArrowIcon = input<string | undefined>();\n readonly pagerPreviousIcon = input<string | undefined>();\n readonly pagerNextIcon = input<string | undefined>();\n readonly totalMessage = input.required<string>();\n readonly footerTemplate = input<DatatableFooterDirective | undefined>();\n\n readonly selectedCount = input(0);\n readonly selectedMessage = input<string | boolean | undefined>(undefined);\n\n readonly page = output<PagerPageEvent>();\n\n protected readonly isVisible = computed(() => this.rowCount() / this.pageSize() > 1);\n readonly curPage = computed(() => this.offset() + 1);\n protected readonly templateContext: Signal<FooterContext> = computed(() => ({\n rowCount: this.rowCount(),\n pageSize: this.pageSize(),\n selectedCount: this.selectedCount(),\n curPage: this.curPage(),\n offset: this.offset()\n }));\n}\n","import { Directive } from '@angular/core';\n\nimport { FooterContext } from '../../types/public.types';\n\n@Directive({\n selector: '[ngx-datatable-footer-template]'\n})\nexport class DataTableFooterTemplateDirective {\n static ngTemplateContextGuard(\n directive: DataTableFooterTemplateDirective,\n context: unknown\n ): context is FooterContext {\n return true;\n }\n}\n","import { computed, contentChild, Directive, input, TemplateRef } from '@angular/core';\n\nimport { FooterContext } from '../../types/public.types';\nimport { DataTableFooterTemplateDirective } from './footer-template.directive';\n\n@Directive({\n selector: 'ngx-datatable-footer'\n})\nexport class DatatableFooterDirective {\n readonly _templateInput = input<TemplateRef<FooterContext>>(undefined, { alias: 'template' });\n\n private readonly _templateQuery = contentChild(DataTableFooterTemplateDirective, {\n read: TemplateRef\n });\n\n readonly template = computed(() => this._templateInput() ?? this._templateQuery());\n}\n","import {\n booleanAttribute,\n computed,\n Directive,\n DOCUMENT,\n effect,\n ElementRef,\n inject,\n input,\n numberAttribute,\n OnDestroy,\n output,\n signal\n} from '@angular/core';\n\nimport { TableColumnInternal } from '../types/internal.types';\n\nexport interface DragEvent {\n initialX: number;\n initialY: number;\n currentX: number;\n currentY: number;\n}\n\n@Directive({\n selector: '[datatableDraggable]',\n host: {\n '[class.draggable]': 'enabled()',\n '[class.dragging]': 'isDragging()',\n '[class.longpress]': 'isLongPressing()'\n }\n})\nexport class DatatableDraggableDirective implements OnDestroy {\n private document = inject(DOCUMENT);\n readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n readonly dragModel = input<TableColumnInternal>();\n readonly dragStartDelay = input(0, { transform: numberAttribute });\n readonly enabled = input(true, { transform: booleanAttribute, alias: 'datatableDraggable' });\n readonly dragMove = output<DragEvent>();\n readonly dragEnd = output<void>();\n readonly dragStart = output<void>();\n\n private timeoutId?: number;\n private touchId?: number;\n private readonly startX = signal<number | undefined>(undefined);\n private readonly startY = signal<number | undefined>(undefined);\n protected readonly isLongPressing = computed(\n () => this.dragStartDelay() !== 0 && this.isDragging()\n );\n protected readonly isDragging = computed(() => this.startX() !== undefined);\n private removePointerListeners?: () => void;\n\n constructor() {\n effect(() => {\n if (this.enabled()) {\n this.element.addEventListener('mousedown', this.mousedown);\n this.element.addEventListener('touchstart', this.touchstart);\n this.removePointerListeners = () => {\n this.element.removeEventListener('mousedown', this.mousedown);\n this.element.removeEventListener('touchstart', this.touchstart);\n };\n } else {\n this.removePointerListeners?.();\n this.removePointerListeners = undefined;\n }\n });\n }\n\n ngOnDestroy(): void {\n clearTimeout(this.timeoutId);\n this.removePointerListeners?.();\n }\n\n protected readonly mousedown = (event: MouseEvent): void => {\n if (!this.enabled()) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n\n this.document.addEventListener('mouseup', this.ending);\n this.delay(this.dragStartDelay()).then(() => {\n this.document.addEventListener('mousemove', this.mousemove);\n this.starting(event.clientX, event.clientY);\n });\n };\n\n private mousemove = (event: MouseEvent): void => this.moving(event.clientX, event.clientY);\n\n protected readonly touchstart = (event: TouchEvent): void => {\n if (!this.enabled()) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n const touch = event.touches.item(0)!;\n this.touchId = touch.identifier;\n\n this.document.addEventListener('touchend', this.ending);\n this.delay(this.dragStartDelay()).then(() => {\n this.document.addEventListener('touchmove', this.touchmove);\n this.starting(touch.clientX, touch.clientY);\n });\n };\n\n private touchmove = (event: TouchEvent): void => {\n const touchMove = this.findTouch(event)!;\n if (touchMove) {\n this.moving(touchMove.clientX, touchMove.clientY);\n }\n };\n\n private starting(clientX: number, clientY: number): void {\n this.startX.set(clientX);\n this.startY.set(clientY);\n this.dragStart.emit();\n }\n\n private moving(clientX: number, clientY: number): void {\n this.dragMove.emit({\n initialX: this.startX()!,\n initialY: this.startY()!,\n currentX: clientX,\n currentY: clientY\n });\n }\n\n private ending = (): void => {\n const dragged = this.isDragging();\n this.document.removeEventListener('mousemove', this.mousemove);\n this.document.removeEventListener('touchmove', this.touchmove);\n this.document.removeEventListener('mouseup', this.ending);\n this.document.removeEventListener('touchend', this.ending);\n this.touchId = undefined;\n this.startX.set(undefined);\n this.startY.set(undefined);\n clearTimeout(this.timeoutId);\n // This function is also called if the long press was aborted before the delay.\n // In that case, we don't want to emit dragEnd.\n if (dragged) {\n this.dragEnd.emit();\n }\n };\n\n private findTouch(event: TouchEvent): Touch | undefined {\n return Array.from(event.touches).find(touch => touch.identifier === this.touchId);\n }\n\n private delay(ms: number): Promise<void> {\n return new Promise(resolve => (this.timeoutId = window.setTimeout(() => resolve(), ms)));\n }\n}\n","import {\n AfterContentInit,\n ContentChildren,\n Directive,\n DOCUMENT,\n effect,\n inject,\n KeyValueChangeRecord,\n KeyValueDiffer,\n KeyValueDiffers,\n OnDestroy,\n output,\n OutputRefSubscription,\n QueryList,\n signal\n} from '@angular/core';\nimport { startWith } from 'rxjs';\n\nimport {\n ReorderEventInternal,\n TableColumnInternal,\n TargetChangedEvent\n} from '../types/internal.types';\nimport { DatatableDraggableDirective, DragEvent } from './datatable-draggable.directive';\n\ninterface OrderPosition {\n left: number;\n right: number;\n index: number;\n element: HTMLElement;\n}\n\n@Directive({\n selector: '[orderable]'\n})\nexport class OrderableDirective implements AfterContentInit, OnDestroy {\n private document = inject(DOCUMENT);\n\n readonly reorder = output<ReorderEventInternal>();\n readonly targetChanged = output<TargetChangedEvent>();\n\n // This should be contentChildren() query, but there is an open Angular issue with signal queries (https://github.com/angular/angular/issues/59067)\n // This problem causes the orderable directive to fail because the contentChildren query is resolved too early.\n // At that state, the input is not yet set, resulting in a NG0950 error.\n @ContentChildren(DatatableDraggableDirective, { descendants: true })\n draggablesQueryList!: QueryList<DatatableDraggableDirective>;\n\n readonly draggables = signal<DatatableDraggableDirective[]>([]);\n\n readonly subscriptions = new Map<string, OutputRefSubscription[]>();\n\n positions?: Record<string, OrderPosition>;\n readonly differ: KeyValueDiffer<string, DatatableDraggableDirective> = inject(KeyValueDiffers)\n .find({})\n .create();\n lastDraggingIndex?: number;\n\n constructor() {\n effect(() => {\n const diffMap = this.draggables().reduce(\n (acc, curr) => {\n acc[curr.dragModel()!.$$id] = curr;\n return acc;\n },\n {} as Record<string, DatatableDraggableDirective>\n );\n\n this.updateSubscriptions(diffMap);\n });\n }\n\n ngAfterContentInit(): void {\n this.draggablesQueryList.changes.pipe(startWith(this.draggablesQueryList)).subscribe(() => {\n this.draggables.set(this.draggablesQueryList.toArray());\n });\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(subList => subList.forEach(sub => sub.unsubscribe()));\n }\n\n updateSubscriptions(diffMap: Record<string, DatatableDraggableDirective>): void {\n const differResult = this.differ.diff(diffMap);\n if (!differResult) {\n return;\n }\n differResult.forEachAddedItem(record => this.subscribeToDraggable(record));\n differResult.forEachRemovedItem(record => this.unsubscribeFromDraggable(record));\n }\n\n private subscribeToDraggable = (\n record: KeyValueChangeRecord<string, DatatableDraggableDirective>\n ): void => {\n this.unsubscribeFromDraggable(record);\n const { key, currentValue } = record;\n if (!currentValue) {\n return;\n }\n const subs = this.subscriptions.get(key) ?? [];\n let currentEvent: DragEvent;\n subs.push(\n currentValue.dragStart.subscribe(() => this.onDragStart()),\n currentValue.dragMove.subscribe(e => {\n currentEvent = e;\n this.onDragging(e, currentValue.dragModel()!, currentValue.element);\n }),\n currentValue.dragEnd.subscribe(() =>\n this.onDragEnd(currentEvent!, currentValue.dragModel()!, currentValue.element)\n )\n );\n this.subscriptions.set(key, subs);\n };\n\n private unsubscribeFromDraggable = (\n record: KeyValueChangeRecord<string, DatatableDraggableDirective>\n ): void => {\n const { key, previousValue } = record;\n if (!previousValue) {\n return;\n }\n const subs = this.subscriptions.get(key);\n if (!subs) {\n return;\n }\n subs.forEach(sub => sub.unsubscribe());\n this.subscriptions.delete(key);\n };\n\n onDragStart(): void {\n const positions: Record<string, OrderPosition> = {};\n this.draggables().forEach((draggable, idx) => {\n const elm = draggable.element;\n const left = parseInt(elm.offsetLeft.toString(), 10);\n positions[draggable.dragModel()!.$$id] = {\n left,\n right: left + parseInt(elm.offsetWidth.toString(), 10),\n index: idx,\n element: elm\n };\n });\n this.positions = positions;\n }\n\n onDragging(\n { currentX, currentY, initialX }: DragEvent,\n model: TableColumnInternal,\n element: HTMLElement\n ): void {\n if (!this.positions) {\n return;\n }\n const prevPos = this.positions[model.$$id];\n const target = this.isTarget(model, currentX, currentY);\n if (target) {\n if (this.lastDraggingIndex !== target.index) {\n this.targetChanged.emit({\n prevIndex: this.lastDraggingIndex!,\n newIndex: target.index,\n initialIndex: prevPos.index\n });\n this.lastDraggingIndex = target.index;\n }\n } else if (this.lastDraggingIndex !== prevPos.index) {\n this.targetChanged.emit({\n prevIndex: this.lastDraggingIndex!,\n initialIndex: prevPos.index\n });\n this.lastDraggingIndex = prevPos.index;\n }\n\n requestAnimationFrame(() => (element.style.left = `${currentX - initialX}px`));\n }\n\n onDragEnd(\n { currentX, currentY }: DragEvent,\n model: TableColumnInternal,\n element: HTMLElement\n ): void {\n if (!this.positions) {\n return;\n }\n const prevPos = this.positions[model.$$id];\n const target = this.isTarget(model, currentX, currentY);\n if (target) {\n this.reorder.emit({\n prevValue: prevPos.index,\n newValue: target.index,\n column: model\n });\n }\n this.lastDraggingIndex = undefined;\n element.style.left = 'auto';\n }\n\n isTarget(\n model: TableColumnInternal,\n clientX: number,\n clientY: number\n ): { pos: OrderPosition; index: number } | undefined {\n if (!this.positions) {\n return undefined;\n }\n const elementsAtPoint = this.document.elementsFromPoint(clientX, clientY);\n return Object.entries(this.positions).reduce<{ pos: OrderPosition; index: number } | undefined>(\n (acc, [id, pos], idx) => {\n // since we drag the inner span, we need to find it in the elements at the cursor\n if (!acc && model.$$id !== id && elementsAtPoint.some(el => el === pos.element)) {\n return { pos, index: idx };\n }\n return acc;\n },\n undefined\n );\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n HostListener,\n inject,\n input,\n OnDestroy,\n OnInit,\n output,\n TemplateRef\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport {\n DatatableDraggableDirective,\n DragEvent\n} from '../../directives/datatable-draggable.directive';\nimport {\n InnerSortEvent,\n SortableTableColumnInternal,\n TableColumnInternal\n} from '../../types/internal.types';\nimport {\n HeaderCellContext,\n SelectionType,\n SortDirection,\n SortPropDir,\n SortType\n} from '../../types/public.types';\nimport { toPublicColumn } from '../../utils/column-helper';\nimport { nextSortDir } from '../../utils/sort';\n\n@Component({\n selector: 'datatable-header-cell',\n imports: [NgTemplateOutlet, DatatableDraggableDirective],\n template: `\n <div class=\"datatable-header-cell-template-wrap\">\n @if (isTarget()) {\n <ng-template\n [ngTemplateOutlet]=\"targetMarkerTemplate()!\"\n [ngTemplateOutletContext]=\"targetMarkerContext()\"\n />\n }\n @if (isCheckboxable()) {\n <label class=\"datatable-checkbox\">\n <input\n type=\"checkbox\"\n [attr.aria-label]=\"ariaHeaderCheckboxMessage()\"\n [checked]=\"allRowsSelected()\"\n (change)=\"select.emit()\"\n />\n </label>\n }\n @let column = this.column();\n @if (column.headerTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.headerTemplate\"\n [ngTemplateOutletContext]=\"cellContext()\"\n />\n } @else {\n <span class=\"datatable-header-cell-wrapper\">\n <span class=\"datatable-header-cell-label draggable\" (click)=\"onSort()\">\n {{ name() }}\n </span>\n </span>\n }\n <span [class]=\"sortClass()\" (click)=\"onSort()\"> </span>\n </div>\n @if (showResizeHandle()) {\n <span\n class=\"resize-handle\"\n datatableDraggable\n (dragStart)=\"onMousedown()\"\n (dragMove)=\"move($event)\"\n (dragEnd)=\"onMouseup()\"\n ></span>\n }\n `,\n styleUrl: './header-cell.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'datatable-header-cell',\n '[attr.resizeable]': 'showResizeHandle()',\n '[attr.title]': 'name()',\n '[attr.tabindex]': 'column().sortable ? 0 : -1',\n '[class]': 'columnCssClasses()',\n '[class.sortable]': 'column().sortable',\n '[class.resizeable]': 'showResizeHandle()',\n '[class.sort-active]': 'sortDir()',\n '[class.sort-asc]': 'sortDir() === \"asc\"',\n '[class.sort-desc]': 'sortDir() === \"desc\"',\n '[style.minWidth.px]': 'column().minWidth',\n '[style.maxWidth.px]': 'column().maxWidth',\n '[style.width.px]': 'column().width()'\n }\n})\nexport class DataTableHeaderCellComponent implements OnInit, OnDestroy {\n readonly sortType = input.required<SortType>();\n readonly sortAscendingIcon = input<string>();\n readonly sortDescendingIcon = input<string>();\n readonly sortUnsetIcon = input<string>();\n\n readonly isTarget = input<boolean>();\n readonly showResizeHandle = input<boolean | undefined>(true);\n readonly targetMarkerTemplate = input<TemplateRef<any>>();\n readonly targetMarkerContext = input<any>();\n readonly enableClearingSortState = input(false);\n readonly ariaHeaderCheckboxMessage = input.required<string>();\n readonly allRowsSelected = input(false, { transform: booleanAttribute });\n readonly selectionType = input<SelectionType>();\n readonly column = input.required<TableColumnInternal>();\n readonly sorts = input<SortPropDir[]>([]);\n\n readonly sort = output<InnerSortEvent>();\n readonly select = output<void>();\n readonly columnContextmenu = output<{\n event: MouseEvent;\n column: TableColumnInternal;\n }>();\n readonly resize = output<{ width: number; column: TableColumnInternal }>();\n readonly resizing = output<{ width: number; column: TableColumnInternal }>();\n\n protected readonly columnCssClasses = computed(() => {\n const column = this.column();\n if (!column.headerClass) {\n return [];\n }\n if (typeof column.headerClass === 'string') {\n return column.headerClass;\n }\n return column.headerClass({ column: toPublicColumn(column) });\n });\n\n protected readonly name = computed(() => {\n // guaranteed to have a value by setColumnDefaults() in column-helper.ts\n return this.column().headerTemplate === undefined ? this.column().name : undefined;\n });\n\n protected readonly isCheckboxable = computed(() => this.column().headerCheckboxable);\n\n protected readonly sortClass = computed<string[] | undefined>(() => {\n return this.calcSortClass(this.sortDir());\n });\n protected readonly sortDir = computed<SortDirection | undefined>(() => {\n return this.calcSortDir(this.sorts());\n });\n\n protected readonly cellContext = computed<HeaderCellContext>(() => {\n return {\n column: toPublicColumn(this.column()),\n sortDir: this.sortDir(),\n sortFn: () => this.onSort(),\n allRowsSelected: this.allRowsSelected(),\n selectFn: () => this.select.emit()\n };\n });\n\n private initialWidth?: number;\n private element = inject(ElementRef).nativeElement;\n private subscription?: Subscription;\n\n @HostListener('contextmenu', ['$event'])\n onContextmenu($event: MouseEvent): void {\n this.columnContextmenu.emit({ event: $event, column: this.column() });\n if (this.column().draggable) {\n $event.preventDefault();\n }\n }\n\n @HostListener('keydown.enter')\n enter(): void {\n this.onSort();\n }\n\n ngOnInit() {\n // If there is already a default sort then start the counter with 1.\n if (this.sortDir()) {\n this.totalSortStatesApplied = 1;\n }\n }\n\n ngOnDestroy() {\n this.destroySubscription();\n }\n\n calcSortDir(sorts: SortPropDir[]): any {\n if (sorts && this.column()) {\n const sort = sorts.find((s: any) => s.prop === this.column().prop);\n\n if (sort) {\n return sort.dir;\n }\n }\n }\n // Counter to reset sort once user sort asc and desc.\n private totalSortStatesApplied = 0;\n onSort(): void {\n if (!this.column().sortable) {\n return;\n }\n\n this.totalSortStatesApplied++;\n let newValue = nextSortDir(this.sortType(), this.sortDir());\n // User has done both direction sort so we reset the next sort.\n if (this.enableClearingSortState() && this.totalSortStatesApplied === 3) {\n newValue = undefined;\n this.totalSortStatesApplied = 0;\n }\n this.sort.emit({\n column: this.column() as SortableTableColumnInternal<any>,\n prevValue: this.sortDir(),\n newValue\n });\n }\n\n calcSortClass(sortDir: SortDirection | undefined): string[] | undefined {\n if (!this.cellContext().column.sortable) {\n return undefined;\n }\n if (sortDir === 'asc') {\n return ['sort-btn', 'sort-asc', this.sortAscendingIcon() ?? 'datatable-icon-up'];\n } else if (sortDir === 'desc') {\n return ['sort-btn', 'sort-desc', this.sortDescendingIcon() ?? 'datatable-icon-down'];\n } else {\n return ['sort-btn', this.sortUnsetIcon() ?? 'datatable-icon-sort-unset'];\n }\n }\n\n protected onMousedown(): void {\n this.initialWidth = this.element.clientWidth;\n }\n\n protected onMouseup(): void {\n this.resize.emit({ width: this.element.clientWidth, column: this.column() });\n }\n\n protected move({ currentX, initialX }: DragEvent): void {\n this.resizing.emit({\n width: this.initialWidth! + (currentX - initialX),\n column: this.column()\n });\n }\n\n private destroySubscription(): void {\n if (this.subscription) {\n this.subscription.unsubscribe();\n this.subscription = undefined;\n }\n }\n}\n","import { NgStyle } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n output,\n TemplateRef\n} from '@angular/core';\n\nimport { DatatableDraggableDirective } from '../../directives/datatable-draggable.directive';\nimport { OrderableDirective } from '../../directives/orderable.directive';\nimport { ScrollbarHelper } from '../../services/scrollbar-helper.service';\nimport {\n ColumnResizeEventInternal,\n InnerSortEvent,\n ReorderEventInternal,\n SortableTableColumnInternal,\n TableColumnInternal,\n TargetChangedEvent\n} from '../../types/internal.types';\nimport {\n Row,\n SelectionType,\n SortDirection,\n SortEvent,\n SortPropDir,\n SortType\n} from '../../types/public.types';\nimport { columnGroupWidths, columnsByPin, columnsByPinArr } from '../../utils/column';\nimport { toPublicColumn } from '../../utils/column-helper';\nimport { DataTableHeaderCellComponent } from './header-cell.component';\n\n@Component({\n selector: 'datatable-header',\n imports: [OrderableDirective, NgStyle, DataTableHeaderCellComponent, DatatableDraggableDirective],\n template: `\n @let _columnGroupWidths = this._columnGroupWidths();\n <div\n role=\"row\"\n orderable\n class=\"datatable-header-inner\"\n [class.horizontal-overflow]=\"innerWidth() < _columnGroupWidths.total\"\n [style.width.px]=\"_columnGroupWidths.total\"\n (reorder)=\"onColumnReordered($event)\"\n (targetChanged)=\"onTargetChanged($event)\"\n >\n @for (colGroup of _columnsByPin(); track colGroup.type) {\n @if (colGroup.columns.length) {\n <div\n class=\"datatable-row-group\"\n [class]=\"'datatable-row-' + colGroup.type\"\n [ngStyle]=\"_styleByGroup()[colGroup.type]\"\n >\n @for (column of colGroup.columns; track column.$$id) {\n <datatable-header-cell\n role=\"columnheader\"\n dragStartDelay=\"500\"\n [datatableDraggable]=\"reorderable() && column.draggable\"\n [dragModel]=\"column\"\n [isTarget]=\"column.isTarget\"\n [targetMarkerTemplate]=\"targetMarkerTemplate()\"\n [targetMarkerContext]=\"column.targetMarkerContext\"\n [column]=\"column\"\n [showResizeHandle]=\"lastColumnId() !== column.$$id && column.resizeable\"\n [sortType]=\"sortType()\"\n [sorts]=\"sorts()\"\n [selectionType]=\"selectionType()\"\n [sortAscendingIcon]=\"sortAscendingIcon()\"\n [sortDescendingIcon]=\"sortDescendingIcon()\"\n [sortUnsetIcon]=\"sortUnsetIcon()\"\n [allRowsSelected]=\"allRowsSelected()\"\n [enableClearingSortState]=\"enableClearingSortState()\"\n [ariaHeaderCheckboxMessage]=\"ariaHeaderCheckboxMessage()\"\n (resize)=\"onColumnResized($event)\"\n (resizing)=\"onColumnResizing($event)\"\n (sort)=\"onSort($event)\"\n (select)=\"select.emit($event)\"\n (columnContextmenu)=\"columnContextmenu.emit($event)\"\n />\n }\n </div>\n }\n }\n </div>\n `,\n styleUrl: './header.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'datatable-header',\n '[style.height.px]': 'headerHeight()',\n '[style.width]': 'headerWidth()'\n }\n})\nexport class DataTableHeaderComponent {\n private scrollbarHelper = inject(ScrollbarHelper);\n\n readonly lastColumnId = computed(() => this.columns().at(-1)?.$$id);\n\n readonly sortAscendingIcon = input<string>();\n readonly sortDescendingIcon = input<string>();\n readonly sortUnsetIcon = input<string>();\n readonly scrollbarH = input<boolean>();\n readonly dealsWithGroup = input<boolean>();\n readonly targetMarkerTemplate = input<TemplateRef<unknown>>();\n readonly enableClearingSortState = input(false);\n readonly innerWidth = input.required<number>();\n readonly sorts = input.required<SortPropDir[]>();\n readonly sortType = input.required<SortType>();\n readonly allRowsSelected = input<boolean>();\n readonly selectionType = input<SelectionType>();\n readonly reorderable = input<boolean>();\n readonly verticalScrollVisible = input(false);\n readonly ariaHeaderCheckboxMessage = input.required<string>();\n\n readonly headerHeight = input.required<'auto' | number>();\n readonly columns = input.required<TableColumnInternal[]>();\n\n readonly sort = output<SortEvent>();\n readonly reorder = output<ReorderEventInternal>();\n readonly resize = output<ColumnResizeEventInternal>();\n readonly resizing = output<ColumnResizeEventInternal>();\n readonly select = output<void>();\n readonly columnContextmenu = output<{\n event: MouseEvent;\n column: TableColumnInternal;\n }>();\n\n readonly _columnsByPin = computed(() => {\n return columnsByPinArr(this.columns());\n });\n readonly _columnGroupWidths = computed(() => {\n const colsByPin = columnsByPin(this.columns());\n return columnGroupWidths(colsByPin, this.columns());\n });\n readonly _styleByGroup = computed(() => {\n return {\n left: this.calcStylesByGroup('left'),\n center: this.calcStylesByGroup('center'),\n right: this.calcStylesByGroup('right')\n };\n });\n\n readonly headerWidth = computed(() => {\n if (this.scrollbarH()) {\n const width = this.verticalScrollVisible()\n ? this.innerWidth() - this.scrollbarHelper.width\n : this.innerWidth();\n return width + 'px';\n }\n\n return '100%';\n });\n\n onColumnResized({ width, column }: { width: number; column: TableColumnInternal }): void {\n this.resize.emit(this.makeResizeEvent(width, column));\n }\n\n onColumnResizing({ width, column }: { width: number; column: TableColumnInternal }): void {\n this.resizing.emit(this.makeResizeEvent(width, column));\n }\n\n private makeResizeEvent(\n width: number,\n column: TableColumnInternal<Row>\n ): ColumnResizeEventInternal {\n if (column.minWidth && width <= column.minWidth) {\n width = column.minWidth;\n } else if (column.maxWidth && width >= column.maxWidth) {\n width = column.maxWidth;\n }\n return {\n column,\n prevValue: column.width(),\n newValue: width\n };\n }\n\n onColumnReordered(event: ReorderEventInternal): void {\n const column = this.getColumn(event.newValue);\n column.isTarget = false;\n column.targetMarkerContext = undefined;\n this.reorder.emit(event);\n }\n\n onTargetChanged({ prevIndex, newIndex, initialIndex }: TargetChangedEvent): void {\n if (prevIndex || prevIndex === 0) {\n const oldColumn = this.getColumn(prevIndex);\n oldColumn.isTarget = false;\n oldColumn.targetMarkerContext = undefined;\n }\n if (newIndex || newIndex === 0) {\n const newColumn = this.getColumn(newIndex);\n newColumn.isTarget = true;\n\n if (initialIndex !== newIndex) {\n newColumn.targetMarkerContext = {\n class: 'targetMarker '.concat(initialIndex > newIndex ? 'dragFromRight' : 'dragFromLeft')\n };\n }\n }\n }\n\n getColumn(index: number): any {\n const _columnsByPin = this._columnsByPin();\n const leftColumnCount = _columnsByPin[0].columns.length;\n if (index < leftColumnCount) {\n return _columnsByPin[0].columns[index];\n }\n\n const centerColumnCount = _columnsByPin[1].columns.length;\n if (index < leftColumnCount + centerColumnCount) {\n return _columnsByPin[1].columns[index - leftColumnCount];\n }\n\n return _columnsByPin[2].columns[index - leftColumnCount - centerColumnCount];\n }\n\n onSort({ column, prevValue, newValue }: InnerSortEvent): void {\n // if we are dragging don't sort!\n if (column.dragging) {\n return;\n }\n\n const sorts = this.calcNewSorts(column, prevValue, newValue);\n this.sort.emit({\n sorts,\n column: toPublicColumn(column),\n prevValue,\n newValue\n });\n }\n\n calcNewSorts(\n column: SortableTableColumnInternal,\n prevValue: SortDirection | undefined,\n newValue: SortDirection | undefined\n ): SortPropDir[] {\n let idx = 0;\n\n const sorts = this.sorts().map((s, i) => {\n s = { ...s };\n if (s.prop === column.prop) {\n idx = i;\n }\n return s;\n });\n\n if (newValue === undefined) {\n sorts.splice(idx, 1);\n } else if (prevValue) {\n sorts[idx].dir = newValue;\n } else {\n if (this.sortType() === 'single') {\n sorts.splice(0, this.sorts().length);\n }\n\n sorts.push({ dir: newValue, prop: column.prop });\n }\n\n return sorts;\n }\n\n calcStylesByGroup(group: 'center' | 'right' | 'left'): NgStyle['ngStyle'] {\n const widths = this._columnGroupWidths();\n\n return {\n width: `${widths[group]}px`\n };\n }\n}\n","import { Directive } from '@angular/core';\n\nimport { RowDetailContext } from '../../types/public.types';\n\n@Directive({\n selector: '[ngx-datatable-row-detail-template]'\n})\nexport class DatatableRowDetailTemplateDirective {\n static ngTemplateContextGuard(\n directive: DatatableRowDetailTemplateDirective,\n context: unknown\n ): context is RowDetailContext {\n return true;\n }\n}\n","import { computed, contentChild, Directive, input, output, TemplateRef } from '@angular/core';\n\nimport { DetailToggleEvents, Row, RowDetailContext } from '../../types/public.types';\nimport { DatatableRowDetailTemplateDirective } from './row-detail-template.directive';\n\n@Directive({\n selector: 'ngx-datatable-row-detail'\n})\nexport class DatatableRowDetailDirective<TRow extends Row = any> {\n /**\n * The detail row height is required especially\n * when virtual scroll is enabled.\n */\n readonly rowHeight = input<number | ((row?: TRow, index?: number) => number)>(0);\n\n readonly _templateInput = input<TemplateRef<RowDetailContext<TRow>>>(undefined, {\n alias: 'template'\n });\n\n readonly _templateQuery = contentChild(DatatableRowDetailTemplateDirective, {\n read: TemplateRef\n });\n\n readonly template = computed<TemplateRef<RowDetailContext<TRow>> | undefined>(() => {\n return this._templateInput() ?? this._templateQuery();\n });\n\n /**\n * Row detail row visbility was toggled.\n */\n readonly toggle = output<DetailToggleEvents<TRow>>();\n\n /**\n * Toggle the expansion of the row\n */\n toggleExpandRow(row: TRow): void {\n this.toggle.emit({\n type: 'row',\n value: row\n });\n }\n\n /**\n * API method to expand all the rows.\n */\n expandAllRows(): void {\n this.toggle.emit({\n type: 'all',\n value: true\n });\n }\n\n /**\n * API method to collapse all the rows.\n */\n collapseAllRows(): void {\n this.toggle.emit({\n type: 'all',\n value: false\n });\n }\n}\n","import {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ContentChild,\n contentChild,\n contentChildren,\n DoCheck,\n effect,\n ElementRef,\n HostListener,\n inject,\n input,\n IterableDiffer,\n IterableDiffers,\n linkedSignal,\n model,\n numberAttribute,\n OnDestroy,\n output,\n signal,\n TemplateRef,\n untracked,\n viewChild\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { VisibilityDirective } from '../directives/visibility.directive';\nimport { NGX_DATATABLE_CONFIG, NgxDatatableConfig } from '../ngx-datatable.config';\nimport { ScrollbarHelper } from '../services/scrollbar-helper.service';\nimport {\n ColumnResizeEventInternal,\n ReorderEventInternal,\n TableColumnInternal\n} from '../types/internal.types';\nimport {\n ActivateEvent,\n ColumnMode,\n ColumnResizeEvent,\n ContextMenuEvent,\n DragEventData,\n Group,\n PageEvent,\n PagerPageEvent,\n ReorderEvent,\n Row,\n RowOrGroup,\n ScrollEvent,\n ScrollToRowOptions,\n SelectEvent,\n SelectionType,\n SortEvent,\n SortPropDir,\n SortType,\n TreeStatus\n} from '../types/public.types';\nimport { TableColumn } from '../types/table-column.type';\nimport { toInternalColumn, toPublicColumn } from '../utils/column-helper';\nimport { adjustColumnWidths, forceFillColumnWidths } from '../utils/math';\nimport { numberOrUndefinedAttribute } from '../utils/number-or-undefined-attribute';\nimport { sortGroupedRows, sortRows } from '../utils/sort';\nimport { DATATABLE_COMPONENT_TOKEN } from '../utils/table-token';\nimport { throttleable } from '../utils/throttle';\nimport { expandToRow, groupRowsByParents, optionalGetterForProp } from '../utils/tree';\nimport { DatatableGroupHeaderDirective } from './body/body-group-header.directive';\nimport { DatatableRowDefDirective } from './body/body-row-def.component';\nimport { DataTableBodyComponent } from './body/body.component';\nimport { ProgressBarComponent } from './body/progress-bar.component';\nimport { DataTableColumnDirective } from './columns/column.directive';\nimport { DataTableFooterComponent } from './footer/footer.component';\nimport { DatatableFooterDirective } from './footer/footer.directive';\nimport { DataTableHeaderComponent } from './header/header.component';\nimport { DatatableRowDetailDirective } from './row-detail/row-detail.directive';\n\n@Component({\n selector: 'ngx-datatable',\n imports: [\n VisibilityDirective,\n DataTableHeaderComponent,\n DataTableBodyComponent,\n DataTableFooterComponent,\n ProgressBarComponent\n ],\n templateUrl: './datatable.component.html',\n styleUrl: './datatable.component.scss',\n providers: [\n {\n provide: DATATABLE_COMPONENT_TOKEN,\n useExisting: DatatableComponent\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ngx-datatable',\n '[class.fixed-header]': '_isFixedHeader()',\n '[class.fixed-row]': 'rowHeight() !== \"auto\"',\n '[class.scroll-vertical]': 'scrollbarV()',\n '[class.virtualized]': 'virtualization()',\n '[class.scroll-horz]': 'scrollbarH()',\n '[class.selectable]': 'selectionType() !== undefined',\n '[class.checkbox-selection]': 'selectionType() === \"checkbox\"',\n '[class.cell-selection]': 'selectionType() === \"cell\"',\n '[class.single-selection]': 'selectionType() === \"single\"',\n '[class.multi-selection]': 'selectionType() === \"multi\"',\n '[class.multi-click-selection]': 'selectionType() === \"multiClick\"'\n }\n})\nexport class DatatableComponent<TRow extends Row = any>\n implements DoCheck, AfterViewInit, OnDestroy\n{\n private scrollbarHelper = inject(ScrollbarHelper);\n private cd = inject(ChangeDetectorRef);\n private configuration =\n inject(NGX_DATATABLE_CONFIG, { optional: true }) ??\n // This is the old injection token for backward compatibility.\n inject<NgxDatatableConfig>('configuration' as any, { optional: true });\n\n /**\n * Template for the target marker of drag target columns.\n */\n readonly targetMarkerTemplate = input<TemplateRef<unknown>>();\n\n /**\n * Rows that are displayed in the table.\n */\n readonly rows = input<(TRow | undefined)[] | null | undefined>();\n\n /**\n * This attribute allows the user to set the name of the column to group the data with\n */\n readonly groupRowsBy = input<keyof TRow>();\n\n /**\n * This attribute allows the user to set a grouped array in the following format:\n * [\n * {groupid=1} [\n * {id=1 name=\"test1\"},\n * {id=2 name=\"test2\"},\n * {id=3 name=\"test3\"}\n * ]},\n * {groupid=2>[\n * {id=4 name=\"test4\"},\n * {id=5 name=\"test5\"},\n * {id=6 name=\"test6\"}\n * ]}\n * ]\n */\n readonly groupedRows = input<Group<TRow>[]>();\n\n /**\n * Columns to be displayed.\n */\n readonly columns = input<TableColumn[]>();\n\n /**\n * List of row objects that should be\n * represented as selected in the grid.\n * Default value: `[]`\n */\n readonly selected = model<TRow[]>([]);\n\n /**\n * Enable vertical scrollbars\n */\n readonly scrollbarV = input(false, { transform: booleanAttribute });\n\n /**\n * Enable vertical scrollbars dynamically on demand.\n * Property `scrollbarV` needs to be set `true` too.\n * Width that is gained when no scrollbar is needed\n * is added to the inner table width.\n */\n readonly scrollbarVDynamic = input(false, { transform: booleanAttribute });\n\n /**\n * Enable horz scrollbars\n */\n readonly scrollbarH = input(false, { transform: booleanAttribute });\n\n /**\n * The row height; which is necessary\n * to calculate the height for the lazy rendering.\n */\n readonly rowHeight = input<number | 'auto' | ((row: TRow) => number)>(\n this.configuration?.rowHeight ?? 30\n );\n\n /**\n * Type of column width distribution formula.\n * Example: flex, force, standard\n */\n readonly columnMode = input<ColumnMode | keyof typeof ColumnMode>('standard');\n\n /**\n * The minimum header height in pixels.\n * Pass a falsey for no header\n */\n readonly headerHeight = input<number | 'auto'>(this.configuration?.headerHeight ?? 30);\n\n /**\n * The minimum footer height in pixels.\n * Pass falsey for no footer\n */\n readonly footerHeight = input(this.configuration?.footerHeight ?? 0, {\n transform: numberAttribute\n });\n\n /**\n * If the table should use external paging\n * otherwise its assumed that all data is preloaded.\n */\n readonly externalPaging = input(false, { transform: booleanAttribute });\n\n /**\n * If the table should use external sorting or\n * the built-in basic sorting.\n */\n readonly externalSorting = input(false, { transform: booleanAttribute });\n\n /**\n * The page size to be shown.\n * Default value: `undefined`\n */\n readonly limit = input(undefined, {\n transform: numberOrUndefinedAttribute\n });\n\n /**\n * The total count of all rows.\n * Default value: `0`\n */\n readonly count = input(0, { transform: numberAttribute });\n\n /**\n * The current offset ( page - 1 ) shown.\n * Default value: `0`\n */\n readonly offset = model<number>(0);\n\n /**\n * Show the linear loading bar.\n * Default value: `false`\n */\n readonly loadingIndicator = input(false, { transform: booleanAttribute });\n\n /**\n * Show ghost loaders on each cell.\n * Default value: `false`\n */\n readonly ghostLoadingIndicator = input(false, { transform: booleanAttribute });\n\n /**\n * Type of row selection. Options are:\n *\n * - `single`\n * - `multi`\n * - `checkbox`\n * - `multiClick`\n * - `cell`\n *\n * For no selection pass a `falsey`.\n * Default value: `undefined`\n */\n readonly selectionType = input<SelectionType>();\n\n /**\n * Enable/Disable ability to re-order columns\n * by dragging them.\n */\n readonly reorderable = input(true, { transform: booleanAttribute });\n\n /**\n * Swap columns on re-order columns or\n * move them.\n */\n readonly swapColumns = input(true, { transform: booleanAttribute });\n\n /**\n * The type of sorting\n */\n readonly sortType = input<SortType>('single');\n\n /**\n * Array of sorted columns by property and type.\n * Default value: `[]`\n */\n readonly sorts = model<SortPropDir[]>([]);\n\n /**\n * Css class overrides\n */\n readonly cssClasses = input<Partial<Required<NgxDatatableConfig>['cssClasses']>>(\n this.configuration?.cssClasses ?? {}\n );\n\n /**\n * Message overrides for localization\n *\n * @defaultValue\n * ```\n * {\n * emptyMessage: 'No data to display',\n * totalMessage: 'total',\n * selectedMessage: 'selected',\n * ariaFirstPageMessage: 'go to first page',\n * ariaPreviousPageMessage: 'go to previous page',\n * ariaPageNMessage: 'page',\n * ariaNextPageMessage: 'go to next page',\n * ariaLastPageMessage: 'go to last page',\n * ariaRowCheckboxMessage: 'Select row',\n * ariaHeaderCheckboxMessage: 'Select all rows',\n * ariaGroupHeaderCheckboxMessage: 'Select row group'\n * }\n * ```\n */\n readonly messages = input<Partial<Required<NgxDatatableConfig>['messages']>>(\n this.configuration?.messages ?? {}\n );\n\n /**\n * A function which is called with the row and should return either:\n * - a string: `\"class-1 class-2`\n * - a Record<string, boolean>: `{ 'class-1': true, 'class-2': false }`\n */\n readonly rowClass = input<(row: TRow) => string | Record<string, boolean>>();\n\n /**\n * A boolean/function you can use to check whether you want\n * to select a particular row based on a criteria. Example:\n *\n * (selection) => {\n * return selection !== 'Ethel Price';\n * }\n */\n readonly selectCheck = input<(value: TRow, index: number, array: TRow[]) => boolean>();\n\n /**\n * A function you can use to check whether you want\n * to show the checkbox for a particular row based on a criteria. Example:\n *\n * (row, column, value) => {\n * return row.name !== 'Ethel Price';\n * }\n */\n readonly displayCheck = input<(row: TRow, column: TableColumn, value?: any) => boolean>();\n\n /**\n * A boolean you can use to set the detault behaviour of rows and groups\n * whether they will start expanded or not. If ommited the default is NOT expanded.\n *\n */\n readonly groupExpansionDefault = input(false, { transform: booleanAttribute });\n\n /**\n * Property to which you can use for custom tracking of rows.\n * Example: 'name'\n */\n readonly trackByProp = input<keyof TRow>();\n\n /**\n * Property to which you can use for determining select all\n * rows on current page or not.\n */\n readonly selectAllRowsOnPage = input(false, { transform: booleanAttribute });\n\n /**\n * A flag for row virtualization on / off\n */\n readonly virtualization = input(true, { transform: booleanAttribute });\n\n /**\n * Tree from relation\n */\n readonly treeFromRelation = input<string>();\n\n /**\n * Tree to relation\n */\n readonly treeToRelation = input<string>();\n\n /**\n * A flag for switching summary row on / off\n */\n readonly summaryRow = input(false, { transform: booleanAttribute });\n\n /**\n * A height of summary row\n */\n readonly summaryHeight = input(30, { transform: numberAttribute });\n\n /**\n * A property holds a summary row position: top/bottom\n */\n readonly summaryPosition = input('top');\n\n /**\n * A function you can use to check whether you want\n * to disable a row. Example:\n *\n * (row) => {\n * return row.name !== 'Ethel Price';\n * }\n */\n readonly disableRowCheck = input<(row: TRow) => boolean>();\n\n /**\n * A flag to enable drag behavior of native HTML5 drag and drop API on rows.\n * If set to true, {@link rowDragEvents} will emit dragstart and dragend events.\n */\n readonly rowDraggable = input(false, { transform: booleanAttribute });\n\n /**\n * A flag to controll behavior of sort states.\n * By default sort on column toggles between ascending and descending without getting removed.\n * Set true to clear sorting of column after performing ascending and descending sort on that column.\n */\n readonly enableClearingSortState = input(false, { transform: booleanAttribute });\n\n /**\n * Controls whether the datatable runs an {@link IterableDiffer} against the\n * `rows` input on every change detection cycle to detect additions, removals\n * and reorderings that happen in-place on the same array reference.\n *\n * Enabled by default. Set to `false` as a performance optimization when you\n * always pass a new `rows` array reference on updates.\n */\n readonly checkRowListChanges = input(true, { transform: booleanAttribute });\n\n /**\n * Controls whether each rendered row runs a {@link KeyValueDiffer} against\n * its row object on every change detection cycle to detect in-place property\n * mutations (e.g. `row.name = 'new'` without replacing the row reference).\n *\n * Enabled by default. Set to `false` as a performance optimization when row\n * objects are treated as immutable.\n */\n readonly checkRowPropertyChanges = input(true, { transform: booleanAttribute });\n\n /**\n * Body was scrolled typically in a `scrollbarV:true` scenario.\n */\n readonly scroll = output<ScrollEvent>();\n\n /**\n * A cell or row was focused via keyboard or mouse click.\n */\n readonly activate = output<ActivateEvent<TRow>>();\n\n /**\n * A cell or row was selected.\n * @deprecated Use two-way binding on `selected` instead.\n *\n * Before:\n * ```html\n * <ngx-datatable [selected]=\"mySelection\" (select)=\"onSelect($event)\"></ngx-datatable>\n * ```\n *\n * After:\n * ```html\n * <ngx-datatable [selected]=\"mySelection\" (selectedChange)=\"onSelect({selected: $event})\"></ngx-datatable>\n * <!-- or -->\n * <ngx-datatable [(selected)]=\"mySelection\"></ngx-datatable>\n * ```\n */\n readonly select = output<SelectEvent<TRow>>();\n\n /**\n * Column sort was invoked.\n * @deprecated Use two-way binding on `sorts` instead.\n *\n * Before:\n * ```html\n * <ngx-datatable [sorts]=\"mySorts\" (sort)=\"onSort($event)\"></ngx-datatable>\n * ```\n *\n * After:\n * ```html\n * <ngx-datatable [sorts]=\"mySorts\" (sortsChange)=\"onSort({sorts: $event})\"></ngx-datatable>\n * <!-- or -->\n * <ngx-datatable [(sorts)]=\"mySorts\"></ngx-datatable>\n * ```\n */\n readonly sort = output<SortEvent>();\n\n /**\n * The table was paged either triggered by the pager or the body scroll.\n */\n readonly page = output<PageEvent>();\n\n /**\n * Columns were re-ordered.\n */\n readonly reorder = output<ReorderEvent>();\n\n /**\n * Column was resized.\n */\n readonly resize = output<ColumnResizeEvent>();\n\n /**\n * The context menu was invoked on the table.\n * type indicates whether the header or the body was clicked.\n * content contains either the column or the row that was clicked.\n */\n readonly tableContextmenu = output<ContextMenuEvent<TRow>>();\n\n /**\n * A row was expanded ot collapsed for tree\n */\n readonly treeAction = output<{ row: TRow; rowIndex: number }>();\n\n /**\n * Emits HTML5 native drag events.\n * Only emits dragenter, dragover, drop events by default.\n * Set {@link rowDraggable} to true for dragstart and dragend.\n */\n readonly rowDragEvents = output<DragEventData>();\n\n /**\n * Column templates gathered from `ContentChildren`\n * if described in your markup.\n */\n readonly columnTemplates =\n contentChildren<DataTableColumnDirective<TRow>>(DataTableColumnDirective);\n\n /**\n * Row Detail templates gathered from the ContentChild\n */\n @ContentChild(DatatableRowDetailDirective)\n rowDetail?: DatatableRowDetailDirective;\n\n /**\n * Group Header templates gathered from the ContentChild\n */\n @ContentChild(DatatableGroupHeaderDirective)\n groupHeader?: DatatableGroupHeaderDirective;\n\n /**\n * Footer template gathered from the ContentChild\n * @internal\n */\n readonly _footer = contentChild(DatatableFooterDirective);\n\n private readonly _bodyComponent =\n viewChild.required<DataTableBodyComponent<TRow & { treeStatus?: TreeStatus }>>(\n DataTableBodyComponent\n );\n\n private readonly _headerElement = viewChild(DataTableHeaderComponent, {\n read: ElementRef<HTMLElement>\n });\n\n private readonly _bodyElement = viewChild.required(DataTableBodyComponent, {\n read: ElementRef<HTMLElement>\n });\n\n /** @internal */\n readonly _rowDefTemplate = contentChild(DatatableRowDefDirective, {\n read: TemplateRef\n });\n\n /**\n * Returns if all rows are selected.\n */\n readonly allRowsSelected = computed(() => {\n const selected = this.selected();\n let allRowsSelected = selected.length === this.rows()?.length;\n\n if (this.selectAllRowsOnPage()) {\n const { first, last } = this._bodyComponent().indexes();\n const rowsOnPage = last - first;\n allRowsSelected = selected.length === rowsOnPage;\n }\n\n return !!(selected && this.rows()?.length !== 0 && allRowsSelected);\n });\n\n element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n readonly _innerWidth = computed(() => this.dimensions().width);\n readonly pageSize = computed(() => this.calcPageSize());\n readonly _isFixedHeader = computed(() => {\n const headerHeight: number | string = this.headerHeight();\n return typeof headerHeight === 'string' ? (headerHeight as string) !== 'auto' : true;\n });\n readonly bodyHeight = computed(() => {\n if (this.scrollbarV()) {\n let height = this.dimensions().height;\n const headerElement = this._headerElement();\n if (headerElement) {\n height = height - headerElement.nativeElement.getBoundingClientRect().height;\n }\n return height - this.footerHeight();\n }\n return 0;\n });\n readonly rowCount = computed(() => this.calcRowCount());\n rowDiffer: IterableDiffer<TRow | undefined> = inject(IterableDiffers).find([]).create();\n /** This counter is increased, when the rowDiffer detects a change. This will cause an update of _internalRows. */\n private readonly _rowDiffCount = signal(0);\n\n _offsetX = 0;\n readonly _internalRows = computed(() => {\n this._rowDiffCount(); // to trigger recalculation when row differ detects a change\n let rows = this.rows()?.slice() ?? [];\n\n const sorts = this.sorts();\n if (sorts.length && !this.externalSorting()) {\n rows = sortRows(rows, this._internalColumns(), this.sorts());\n }\n\n if (this.treeFromRelation() && this.treeToRelation()) {\n rows = groupRowsByParents(\n rows,\n optionalGetterForProp(this.treeFromRelation()),\n optionalGetterForProp(this.treeToRelation())\n );\n }\n\n if (this.ghostLoadingIndicator() && this.scrollbarV() && !this.externalPaging()) {\n // in case where we don't have predefined total page length\n rows.push(undefined); // undefined row will render ghost cell row at the end of the page\n }\n\n return rows;\n });\n\n readonly _internalGroupedRows = computed(() => {\n let groupedRows = this.groupedRows();\n const groupRowsBy = this.groupRowsBy();\n\n if (!groupedRows && groupRowsBy) {\n this._rowDiffCount(); // to trigger recalculation when row differ detects a change\n groupedRows = this.groupArrayBy(this.rows() ?? [], groupRowsBy);\n }\n\n if (!groupedRows) {\n // return here to prevent subscription to sorts when no grouping\n return undefined;\n }\n\n const sorts = this.sorts();\n if (sorts.length && !this.externalSorting()) {\n if (groupedRows?.length) {\n groupedRows = sortGroupedRows(\n groupedRows,\n this._internalColumns(),\n sorts,\n sorts.find(sortColumns => sortColumns.prop === groupRowsBy)\n );\n }\n }\n\n return groupedRows;\n });\n\n // TODO: consider removing internal modifications of the columns.\n // This requires a different strategy for certain properties like width.\n readonly _internalColumns = linkedSignal(() =>\n toInternalColumn(\n this.columnTemplates().length\n ? this.columnTemplates().map(c => c.column())\n : (this.columns() ?? []),\n this._defaultColumnWidth\n )\n );\n\n /**\n * Computed signal that returns the corrected offset value.\n * It ensures the offset is within valid bounds based on rowCount and pageSize.\n */\n readonly correctedOffset = computed(() => {\n const offset = this.offset();\n const rowCount = this.rowCount();\n const pageSize = this.pageSize();\n return Math.max(Math.min(offset, Math.ceil(rowCount / pageSize) - 1), 0);\n });\n\n _subscriptions: Subscription[] = [];\n _defaultColumnWidth = this.configuration?.defaultColumnWidth ?? 150;\n /**\n * To have this available for all components.\n * The Footer itself is not available in the injection context in templates,\n * so we need to get if from here until we have a state service.\n */\n readonly _footerComponent = viewChild(DataTableFooterComponent);\n protected verticalScrollVisible = false;\n private readonly dimensions = signal<Pick<DOMRect, 'width' | 'height'>>({ height: 0, width: 0 });\n\n constructor() {\n // TODO: This should be a computed signal.\n // Effect to handle recalculate when limit or count changes\n effect(() => {\n // Track limit and count changes\n this.limit();\n this.count();\n // Recalculate without tracking other signals\n untracked(() => this.recalculateDims());\n });\n\n effect(() => this.recalculateColumns());\n }\n\n /*\n * Lifecycle hook that is called when Angular dirty checks a directive.\n */\n ngDoCheck(): void {\n const rowDiffers = this.checkRowListChanges() ? this.rowDiffer.diff(this.rows()) : null;\n if (rowDiffers || this.disableRowCheck()) {\n this._rowDiffCount.update(count => count + 1);\n if (rowDiffers) {\n queueMicrotask(() => {\n this.recalculate();\n this.cd.markForCheck();\n });\n }\n\n this.cd.markForCheck();\n }\n }\n\n /**\n * Lifecycle hook that is called after a component's\n * view has been fully initialized.\n */\n ngAfterViewInit(): void {\n // this has to be done to prevent the change detection\n // tree from freaking out because we are readjusting\n if (typeof requestAnimationFrame === 'undefined') {\n return;\n }\n\n requestAnimationFrame(() => {\n this.recalculate();\n\n // emit page for virtual server-side kickoff\n if (this.externalPaging() && this.scrollbarV()) {\n this.page.emit({\n count: this.count(),\n pageSize: this.pageSize(),\n limit: this.limit(),\n offset: 0,\n sorts: this.sorts()\n });\n }\n });\n }\n\n /**\n * This will be used when displaying or selecting rows.\n * when tracking/comparing them, we'll use the value of this fn,\n *\n * (`fn(x) === fn(y)` instead of `x === y`)\n */\n readonly rowIdentity = input<(x: RowOrGroup<TRow>) => unknown>(x => {\n if (this.groupRowsBy()) {\n // each group in groupedRows are stored as {key, value: [rows]},\n // where key is the groupRowsBy index\n return (x as Group<TRow>).key ?? x;\n } else {\n return x;\n }\n });\n\n /**\n * Creates a map with the data grouped by the user choice of grouping index\n *\n * @param originalArray the original array passed via parameter\n * @param groupBy the key of the column to group the data by\n */\n groupArrayBy(originalArray: (TRow | undefined)[], groupBy: keyof TRow) {\n // create a map to hold groups with their corresponding results\n const map = new Map<TRow[keyof TRow], TRow[]>();\n let i = 0;\n\n originalArray.forEach(item => {\n if (!item) {\n // skip undefined items\n return;\n }\n\n const key = item[groupBy];\n const value = map.get(key);\n if (!value) {\n map.set(key, [item]);\n } else {\n value.push(item);\n }\n i++;\n });\n\n const addGroup = (key: TRow[keyof TRow], value: TRow[]) => ({ key, value });\n\n // convert map back to a simple array of objects\n return Array.from(map, x => addGroup(x[0], x[1]));\n }\n\n /**\n * Recalc's the sizes of the grid.\n *\n * Updated automatically on changes to:\n *\n * - Columns\n * - Rows\n * - Paging related\n *\n * Also can be manually invoked or upon window resize.\n */\n recalculate(): void {\n this.recalculateDims();\n }\n\n /**\n * Window resize handler to update sizes.\n */\n @HostListener('window:resize')\n @throttleable(5)\n onWindowResize(): void {\n this.recalculate();\n }\n\n /**\n * Recalulcates the column widths based on column width\n * distribution mode and scrollbar offsets.\n */\n recalculateColumns(\n forceIdx = -1,\n allowBleed: boolean = this.scrollbarH()\n ): TableColumnInternal[] {\n let width = this._innerWidth();\n const columns = this._internalColumns();\n if (!width) {\n return [];\n }\n const { scrollHeight, clientHeight } = this._bodyElement().nativeElement;\n this.verticalScrollVisible = scrollHeight > clientHeight;\n if (this.scrollbarV() || this.scrollbarVDynamic()) {\n width = width - (this.verticalScrollVisible ? this.scrollbarHelper.width : 0);\n }\n\n // TODO: this is a temporary workaround to avoid signal writes in a computed.\n // Later, a computed adjustedWidth has to be added to the internal column to avoid this.\n untracked(() => {\n if (this.columnMode() === 'force') {\n forceFillColumnWidths(\n columns,\n width,\n forceIdx,\n allowBleed,\n this._defaultColumnWidth,\n this.scrollbarHelper.width\n );\n } else if (this.columnMode() === 'flex') {\n adjustColumnWidths(columns, width);\n }\n });\n\n return columns;\n }\n\n /**\n * Recalculates the dimensions of the table size.\n * Internally calls the page size and row count calcs too.\n *\n */\n recalculateDims(): void {\n const dims = this.element.getBoundingClientRect();\n this.dimensions.set(dims);\n }\n\n /**\n * Body triggered a page event.\n */\n onBodyPage(offset: number): void {\n // Avoid pagination caming from body events like scroll when the table\n // has no virtualization and the external paging is enable.\n // This means, let's the developer handle pagination by my him(her) self\n if (this.externalPaging() && !this.virtualization()) {\n return;\n }\n\n this.offset.set(offset);\n\n if (!isNaN(this.correctedOffset())) {\n this.page.emit({\n count: this.count(),\n pageSize: this.pageSize(),\n limit: this.limit(),\n offset: this.correctedOffset(),\n sorts: this.sorts()\n });\n }\n }\n\n /**\n * The body triggered a scroll event.\n */\n onBodyScroll(event: ScrollEvent): void {\n this._offsetX = event.offsetX;\n this.scroll.emit(event);\n\n // Sync header scroll position directly via DOM to avoid Angular CD lag\n const headerEl = this._headerElement()?.nativeElement;\n if (headerEl) {\n headerEl.scrollLeft = event.offsetX;\n }\n }\n\n /**\n * The footer triggered a page event.\n */\n onFooterPage(event: PagerPageEvent) {\n this.offset.set(event.page - 1);\n this._bodyComponent().updateOffsetY(this.correctedOffset());\n\n this.page.emit({\n count: this.count(),\n pageSize: this.pageSize(),\n limit: this.limit(),\n offset: this.correctedOffset(),\n sorts: this.sorts()\n });\n\n if (this.selectAllRowsOnPage()) {\n this.selected.set([]);\n this.select.emit({\n selected: this.selected()\n });\n }\n }\n\n /**\n * Recalculates the sizes of the page\n */\n calcPageSize(): number {\n // Keep the page size constant even if the row has been expanded.\n // This is because an expanded row is still considered to be a child of\n // the original row. Hence calculation would use rowHeight only.\n if (this.scrollbarV() && this.virtualization()) {\n const size = Math.ceil(this.bodyHeight() / (this.rowHeight() as number));\n return Math.max(size, 0);\n }\n\n // if limit is passed, we are paging\n const limit = this.limit();\n if (limit !== undefined) {\n return limit;\n }\n\n // otherwise use row length\n return this._internalRows().length;\n }\n\n /**\n * Calculates the row count.\n */\n calcRowCount(): number {\n if (!this.externalPaging()) {\n const groupedRows = this._internalGroupedRows();\n if (groupedRows) {\n return groupedRows.length;\n } else {\n return this._internalRows().length;\n }\n }\n\n return this.count();\n }\n\n /**\n * The header triggered a contextmenu event.\n */\n onColumnContextmenu({ event, column }: { event: MouseEvent; column: TableColumnInternal }): void {\n this.tableContextmenu.emit({\n event,\n type: 'header',\n content: toPublicColumn(column)\n });\n }\n\n /**\n * The body triggered a contextmenu event.\n */\n onRowContextmenu({ event, row }: { event: MouseEvent; row: RowOrGroup<TRow> }): void {\n this.tableContextmenu.emit({ event, type: 'body', content: row });\n }\n\n /**\n * The header triggered a column resize event.\n */\n onColumnResize({ column, newValue, prevValue }: ColumnResizeEventInternal): void {\n /* Safari/iOS 10.2 workaround */\n if (column === undefined) {\n return;\n }\n\n const idx = this._internalColumns().indexOf(column);\n const cols = this._internalColumns();\n cols[idx].width.set(newValue);\n // set this so we can force the column\n // width distribution to be to this value\n cols[idx].$$oldWidth = newValue;\n this.recalculateColumns(idx);\n\n this.resize.emit({\n column: toPublicColumn(column),\n newValue,\n prevValue\n });\n }\n\n onColumnResizing({ column, newValue }: ColumnResizeEventInternal): void {\n if (column === undefined) {\n return;\n }\n column.width.set(newValue);\n column.$$oldWidth = newValue;\n const idx = this._internalColumns().indexOf(column);\n this.recalculateColumns(idx);\n }\n\n /**\n * The header triggered a column re-order event.\n */\n onColumnReorder(event: ReorderEventInternal): void {\n const { column, newValue, prevValue } = event;\n const cols = this._internalColumns().map(c => ({ ...c }));\n const prevCol = cols[newValue];\n if (column.frozenLeft !== prevCol.frozenLeft || column.frozenRight !== prevCol.frozenRight) {\n return;\n }\n\n if (this.swapColumns()) {\n cols[newValue] = column;\n cols[prevValue] = prevCol;\n } else {\n if (newValue > prevValue) {\n const movedCol = cols[prevValue];\n for (let i = prevValue; i < newValue; i++) {\n cols[i] = cols[i + 1];\n }\n cols[newValue] = movedCol;\n } else {\n const movedCol = cols[prevValue];\n for (let i = prevValue; i > newValue; i--) {\n cols[i] = cols[i - 1];\n }\n cols[newValue] = movedCol;\n }\n }\n\n this._internalColumns.set(cols);\n\n this.reorder.emit({ ...event, column: toPublicColumn(event.column) });\n }\n\n /**\n * The header triggered a column sort event.\n */\n onColumnSort(event: SortEvent): void {\n // clean selected rows\n if (this.selectAllRowsOnPage()) {\n this.selected.set([]);\n this.select.emit({\n selected: this.selected()\n });\n }\n\n this.sorts.set(event.sorts);\n\n // Always go to first page when sorting to see the newly sorted data\n this.offset.set(0);\n this._bodyComponent().updateOffsetY(this.correctedOffset());\n // Emit the page object with updated offset value\n this.page.emit({\n count: this.count(),\n pageSize: this.pageSize(),\n limit: this.limit(),\n offset: this.correctedOffset(),\n sorts: this.sorts()\n });\n this.sort.emit(event);\n }\n\n /**\n * Toggle all row selection\n */\n onHeaderSelect(): void {\n if (this.selectAllRowsOnPage()) {\n // before we splice, chk if we currently have all selected\n const { first, last } = this._bodyComponent().indexes();\n const allSelected = this.selected().length === last - first;\n\n // do the opposite here\n if (!allSelected) {\n this.selected.set(\n this._internalRows()\n .slice(first, last)\n .filter(row => !!row) as TRow[]\n );\n } else {\n this.selected.set([]);\n }\n } else {\n let relevantRows: TRow[];\n const disableRowCheckFn = this.disableRowCheck();\n if (disableRowCheckFn) {\n relevantRows = (this.rows() ?? []).filter(\n (row => row && !disableRowCheckFn(row)) as (row: TRow | undefined) => row is TRow\n );\n } else {\n relevantRows = (this.rows() ?? []).filter(row => !!row);\n }\n // before we splice, chk if we currently have all selected\n const allSelected = this.selected().length === relevantRows.length;\n // do the opposite here\n if (!allSelected) {\n this.selected.set(relevantRows);\n } else {\n this.selected.set([]);\n }\n }\n\n this.select.emit({\n selected: this.selected()\n });\n }\n\n /**\n * A row was selected from body\n */\n onBodySelect(selected: TRow[]): void {\n this.select.emit({ selected });\n }\n\n /**\n * A row was expanded or collapsed for tree\n */\n onTreeAction(event: { row: TRow }) {\n const row = event.row;\n // TODO: For duplicated items this will not work\n const treeToRel = this.treeToRelation();\n const rowIndex = (this.rows() ?? []).findIndex(\n r => r && r[treeToRel!] === event.row[treeToRel!]\n );\n this._rowDiffCount.update(v => v + 1);\n this.treeAction.emit({ row, rowIndex });\n }\n\n ngOnDestroy() {\n this._subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n\n scrollToRow(row: TRow, options?: ScrollToRowOptions): void {\n if (!this.scrollbarV()) {\n throw new Error('Vertical scrolling is not enabled.');\n }\n\n // TODO: We could / should add support for all those cases below.\n if (this._internalGroupedRows()?.length) {\n throw new Error('Scrolling is not supported with grouped rows.');\n }\n\n if (this.limit()) {\n throw new Error('Scrolling is not supported with limit');\n }\n\n if (this.treeFromRelation() && this.treeToRelation()) {\n this.scrollToRowTree(row, options);\n return;\n }\n\n const index = this._internalRows().indexOf(row);\n if (index === -1) {\n throw new Error(`Row not found: ${row}`);\n }\n\n // Here we have ensured, that we have only one page and the row exists.\n // Now we just need to scroll to that row.\n this._bodyComponent().scrollToIndex(index, options);\n }\n\n private scrollToRowTree(row: TRow, options?: ScrollToRowOptions, afterExpand = false): void {\n const index = this._internalRows().indexOf(row);\n\n if (index !== -1) {\n this._bodyComponent().scrollToIndex(index, options);\n return;\n }\n\n if (afterExpand) {\n throw new Error(`Row not found: ${row}`);\n }\n\n expandToRow(\n row,\n this.rows() ?? [],\n optionalGetterForProp(this.treeFromRelation()),\n optionalGetterForProp(this.treeToRelation())\n );\n this._rowDiffCount.update(v => v + 1);\n // We need a microTask here to let Angular update the DOM\n queueMicrotask(() => this.scrollToRowTree(row, options, true));\n }\n}\n","<div visibilityObserver (visible)=\"recalculate()\">\n <div role=\"table\">\n @if (headerHeight()) {\n <datatable-header\n role=\"rowgroup\"\n [sorts]=\"sorts()\"\n [sortType]=\"sortType()\"\n [scrollbarH]=\"scrollbarH()\"\n [innerWidth]=\"_innerWidth()\"\n [dealsWithGroup]=\"_internalGroupedRows() !== undefined\"\n [columns]=\"_internalColumns()\"\n [headerHeight]=\"headerHeight()\"\n [reorderable]=\"reorderable()\"\n [targetMarkerTemplate]=\"targetMarkerTemplate()\"\n [sortAscendingIcon]=\"cssClasses().sortAscending\"\n [sortDescendingIcon]=\"cssClasses().sortDescending\"\n [sortUnsetIcon]=\"cssClasses().sortUnset\"\n [allRowsSelected]=\"allRowsSelected()\"\n [selectionType]=\"selectionType()\"\n [verticalScrollVisible]=\"verticalScrollVisible\"\n [enableClearingSortState]=\"enableClearingSortState()\"\n [ariaHeaderCheckboxMessage]=\"messages().ariaHeaderCheckboxMessage ?? 'Select all rows'\"\n (sort)=\"onColumnSort($event)\"\n (resize)=\"onColumnResize($event)\"\n (resizing)=\"onColumnResizing($event)\"\n (reorder)=\"onColumnReorder($event)\"\n (select)=\"onHeaderSelect()\"\n (columnContextmenu)=\"onColumnContextmenu($event)\"\n />\n }\n <datatable-body\n tabindex=\"0\"\n role=\"rowgroup\"\n [groupedRows]=\"_internalGroupedRows()\"\n [rows]=\"_internalRows()\"\n [groupExpansionDefault]=\"groupExpansionDefault()\"\n [scrollbarV]=\"scrollbarV()\"\n [scrollbarH]=\"scrollbarH()\"\n [virtualization]=\"virtualization()\"\n [loadingIndicator]=\"loadingIndicator()\"\n [ghostLoadingIndicator]=\"ghostLoadingIndicator()\"\n [externalPaging]=\"externalPaging()\"\n [rowHeight]=\"rowHeight()\"\n [rowCount]=\"rowCount()\"\n [offset]=\"correctedOffset()\"\n [trackByProp]=\"trackByProp()\"\n [columns]=\"_internalColumns()\"\n [pageSize]=\"pageSize()\"\n [offsetX]=\"_offsetX\"\n [rowDetail]=\"rowDetail\"\n [groupHeader]=\"groupHeader\"\n [innerWidth]=\"_innerWidth()\"\n [bodyHeight]=\"bodyHeight()\"\n [selectionType]=\"selectionType()\"\n [rowIdentity]=\"rowIdentity()\"\n [rowClass]=\"rowClass()\"\n [selectCheck]=\"selectCheck()\"\n [displayCheck]=\"displayCheck()\"\n [summaryRow]=\"summaryRow()\"\n [summaryHeight]=\"summaryHeight()\"\n [summaryPosition]=\"summaryPosition()\"\n [verticalScrollVisible]=\"verticalScrollVisible\"\n [ariaRowCheckboxMessage]=\"messages().ariaRowCheckboxMessage ?? 'Select row'\"\n [ariaGroupHeaderCheckboxMessage]=\"\n messages().ariaGroupHeaderCheckboxMessage ?? 'Select row group'\n \"\n [disableRowCheck]=\"disableRowCheck()\"\n [checkRowPropertyChanges]=\"checkRowPropertyChanges()\"\n [rowDraggable]=\"rowDraggable()\"\n [rowDragEvents]=\"rowDragEvents\"\n [rowDefTemplate]=\"_rowDefTemplate()\"\n [cssClasses]=\"cssClasses()\"\n [(selected)]=\"selected\"\n (page)=\"onBodyPage($event)\"\n (activate)=\"activate.emit($event)\"\n (rowContextmenu)=\"onRowContextmenu($event)\"\n (selectedChange)=\"onBodySelect($event)\"\n (scroll)=\"onBodyScroll($event)\"\n (treeAction)=\"onTreeAction($event)\"\n >\n <ng-content select=\"[loading-indicator]\" ngProjectAs=\"[loading-indicator]\">\n <datatable-progress />\n </ng-content>\n <ng-content select=\"[empty-content]\" ngProjectAs=\"[empty-content]\">\n <div role=\"row\">\n <div\n role=\"cell\"\n class=\"empty-row\"\n [innerHTML]=\"messages().emptyMessage ?? 'No data to display'\"\n ></div>\n </div>\n </ng-content>\n </datatable-body>\n </div>\n @if (footerHeight()) {\n <datatable-footer\n [rowCount]=\"_internalGroupedRows() !== undefined ? _internalRows().length : rowCount()\"\n [groupCount]=\"_internalGroupedRows() !== undefined ? rowCount() : undefined\"\n [pageSize]=\"pageSize()\"\n [offset]=\"correctedOffset()\"\n [footerHeight]=\"footerHeight()\"\n [footerTemplate]=\"_footer()\"\n [totalMessage]=\"messages().totalMessage ?? 'total'\"\n [pagerLeftArrowIcon]=\"cssClasses().pagerLeftArrow\"\n [pagerRightArrowIcon]=\"cssClasses().pagerRightArrow\"\n [pagerPreviousIcon]=\"cssClasses().pagerPrevious\"\n [selectedCount]=\"selected().length\"\n [selectedMessage]=\"!!selectionType() && (messages().selectedMessage ?? 'selected')\"\n [pagerNextIcon]=\"cssClasses().pagerNext\"\n (page)=\"onFooterPage($event)\"\n />\n }\n</div>\n","import { booleanAttribute, Directive, effect, ElementRef, inject, input } from '@angular/core';\n\n/**\n * Row Disable Directive\n * Use this to disable/enable all children elements\n * Usage:\n * To disable\n * \t\t<div [disabled]=\"true\" disable-row >\n * \t\t</div>\n * To enable\n * \t<div [disabled]=\"false\" disable-row >\n * \t\t</div>\n */\n@Directive({\n selector: '[disable-row]'\n})\nexport class DisableRowDirective {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly disabled = input(false, {\n transform: booleanAttribute\n });\n\n constructor() {\n effect(() => {\n if (this.disabled()) {\n this.disableAllElements();\n }\n });\n }\n\n private disableAllElements() {\n const hostElement = this.elementRef?.nativeElement;\n if (!hostElement) {\n return;\n }\n Array.from(hostElement.querySelectorAll<HTMLElement>('*')).forEach(child => {\n child.setAttribute('disabled', '');\n });\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { DatatableGroupHeaderTemplateDirective } from './components/body/body-group-header-template.directive';\nimport { DatatableGroupHeaderDirective } from './components/body/body-group-header.directive';\nimport {\n DatatableRowDefComponent,\n DatatableRowDefDirective\n} from './components/body/body-row-def.component';\nimport { DataTableColumnCellDirective } from './components/columns/column-cell.directive';\nimport { DataTableColumnGhostCellDirective } from './components/columns/column-ghost-cell.directive';\nimport { DataTableColumnHeaderDirective } from './components/columns/column-header.directive';\nimport { DataTableColumnDirective } from './components/columns/column.directive';\nimport { DataTableColumnCellTreeToggle } from './components/columns/tree.directive';\nimport { DatatableComponent } from './components/datatable.component';\nimport { DataTableFooterTemplateDirective } from './components/footer/footer-template.directive';\nimport { DatatableFooterDirective } from './components/footer/footer.directive';\nimport { DatatablePagerComponent } from './components/footer/pager.component';\nimport { DatatableRowDetailTemplateDirective } from './components/row-detail/row-detail-template.directive';\nimport { DatatableRowDetailDirective } from './components/row-detail/row-detail.directive';\nimport { DisableRowDirective } from './directives/disable-row.directive';\nimport { AllPartial, NgxDatatableConfig, providedNgxDatatableConfig } from './ngx-datatable.config';\n\n@NgModule({\n imports: [\n DataTableFooterTemplateDirective,\n DatatableComponent,\n DataTableColumnDirective,\n DatatableRowDetailDirective,\n DatatableGroupHeaderDirective,\n DatatableRowDetailTemplateDirective,\n DataTableColumnHeaderDirective,\n DataTableColumnCellDirective,\n DataTableColumnGhostCellDirective,\n DataTableColumnCellTreeToggle,\n DatatableFooterDirective,\n DatatablePagerComponent,\n DatatableGroupHeaderTemplateDirective,\n DisableRowDirective,\n DatatableRowDefComponent,\n DatatableRowDefDirective\n ],\n exports: [\n DatatableComponent,\n DatatableRowDetailDirective,\n DatatableGroupHeaderDirective,\n DatatableRowDetailTemplateDirective,\n DataTableColumnDirective,\n DataTableColumnHeaderDirective,\n DataTableColumnCellDirective,\n DataTableColumnGhostCellDirective,\n DataTableColumnCellTreeToggle,\n DataTableFooterTemplateDirective,\n DatatableFooterDirective,\n DatatablePagerComponent,\n DatatableGroupHeaderTemplateDirective,\n DisableRowDirective,\n DatatableRowDefComponent,\n DatatableRowDefDirective\n ]\n})\nexport class NgxDatatableModule {\n /**\n * Configure global configuration via INgxDatatableConfig\n * @param configuration\n */\n static forRoot(\n configuration: AllPartial<NgxDatatableConfig>\n ): ModuleWithProviders<NgxDatatableModule> {\n return {\n ngModule: NgxDatatableModule,\n providers: [providedNgxDatatableConfig(configuration)]\n };\n }\n}\n","import { TableColumn, TableColumnProp } from './table-column.type';\n\nexport interface SortPropDir {\n dir: SortDirection | 'desc' | 'asc';\n prop: TableColumnProp;\n}\n\n/**\n * @deprecated The constant `SortDirection` should no longer be used. Instead use the value directly:\n * ```\n * // old\n * const sortDir: SortDirection = SortDirection.asc;\n * // new\n * const sortDir: SortDirection = 'asc';\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const SortDirection = {\n asc: 'asc',\n desc: 'desc'\n} as const;\n\nexport type SortDirection = (typeof SortDirection)[keyof typeof SortDirection];\n\n/** @deprecated See {@link DatatableComponent.sort} */\nexport interface SortEvent {\n column: TableColumn;\n prevValue: SortDirection | undefined;\n newValue: SortDirection | undefined;\n sorts: SortPropDir[];\n}\n\n/**\n * @deprecated The constant `SortType` should no longer be used. Instead use the value directly:\n * ```\n * // old\n * const sortType: SortType = SortType.single;\n * // new\n * const sortType: SortType = 'single';\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const SortType = {\n single: 'single',\n multi: 'multi'\n} as const;\n\nexport type SortType = (typeof SortType)[keyof typeof SortType];\n\n/**\n * @deprecated The constant `ColumnMode` should no longer be used. Instead use the value directly:\n * ```\n * // old\n * <ngx-datatable [columnMode]=\"ColumnMode.force\"></ngx-datatable>\n * // new\n * <ngx-datatable [columnMode]=\"'force'\"></ngx-datatable>\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const ColumnMode = {\n standard: 'standard',\n flex: 'flex',\n force: 'force'\n} as const;\n\nexport type ColumnMode = (typeof ColumnMode)[keyof typeof ColumnMode];\n\nexport type TreeStatus = 'collapsed' | 'expanded' | 'loading' | 'disabled';\n\nexport interface ActivateEvent<TRow> {\n type: 'checkbox' | 'click' | 'dblclick' | 'keydown' | 'mouseenter';\n event: Event;\n row: TRow;\n group?: TRow[];\n rowHeight?: number;\n column?: TableColumn;\n value?: any;\n cellElement?: HTMLElement;\n treeStatus?: TreeStatus;\n cellIndex?: number;\n rowElement: HTMLElement;\n}\n\nexport interface HeaderCellContext {\n column: TableColumn;\n sortDir: SortDirection | 'asc' | 'desc' | undefined;\n sortFn: () => void;\n allRowsSelected?: boolean;\n selectFn: () => void;\n}\n\nexport interface GroupContext<TRow extends Row = any> {\n group: Group<TRow>;\n expanded: boolean;\n rowIndex: number;\n}\n\nexport interface CellContext<TRow extends Row = any> {\n onCheckboxChangeFn: (event: Event) => void;\n activateFn: (event: ActivateEvent<TRow>) => void;\n row: TRow;\n group?: TRow[];\n value: any;\n column: TableColumn;\n rowHeight: number;\n isSelected?: boolean;\n rowIndex: number;\n rowInGroupIndex?: number;\n treeStatus?: TreeStatus;\n disabled?: boolean;\n onTreeAction: () => void;\n expanded?: boolean;\n}\n\nexport interface FooterContext {\n rowCount: number;\n pageSize: number;\n selectedCount: number;\n curPage: number;\n offset: number;\n}\n\n/**\n * @deprecated The constant `ContextmenuType` should no longer be used. Instead use the value directly:\n * ```\n * // old\n * const contextmenuType: ContextmenuType = ContextmenuType.header;\n * // new\n * const contextmenuType: ContextmenuType = 'header';\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const ContextmenuType = {\n header: 'header',\n body: 'body'\n} as const;\n\nexport type ContextmenuType = (typeof ContextmenuType)[keyof typeof ContextmenuType];\n\n/** A Group row */\nexport interface Group<TRow> {\n /** The value by which to rows are grouped. */\n key: TRow[keyof TRow];\n /** All rows that are part of the group. */\n value: TRow[];\n}\n\n/** Type for either a row or a group */\nexport type RowOrGroup<TRow> = TRow | Group<TRow>;\n\nexport interface RowDetailContext<TRow extends Row = any> {\n row: TRow;\n expanded: boolean;\n rowIndex: number;\n disabled?: boolean;\n}\n\n/**\n * Consumer provided rows should extend this interface\n * to get access to implicit row properties which are set by the datatable if required.\n */\nexport interface Row {\n [key: TableColumnProp]: any;\n treeStatus?: TreeStatus;\n level?: number;\n}\n\nexport interface ReorderEvent {\n column: TableColumn;\n prevValue: number;\n newValue: number;\n}\n\nexport interface PageEvent {\n count: number;\n pageSize: number;\n /** @deprecated Use {@link pageSize} instead. */\n limit: number | undefined;\n offset: number;\n sorts: SortPropDir[];\n}\n\nexport interface PagerPageEvent {\n page: number;\n}\n\nexport interface ColumnResizeEvent {\n column: TableColumn;\n prevValue: number;\n newValue: number;\n}\n\nexport interface ScrollEvent {\n offsetY: number;\n offsetX: number;\n}\n\nexport interface GroupToggleEvent<TRow> {\n type: 'group';\n value: Group<TRow>;\n}\n\nexport interface AllGroupsToggleEvent {\n type: 'all';\n value: boolean;\n}\n\nexport type GroupToggleEvents<TRow> = GroupToggleEvent<TRow> | AllGroupsToggleEvent;\n\nexport interface DetailToggleEvent<TRow> {\n type: 'row';\n value: TRow;\n}\n\nexport interface AllDetailToggleEvent {\n type: 'all';\n value: boolean;\n}\n\nexport type DetailToggleEvents<TRow> = DetailToggleEvent<TRow> | AllDetailToggleEvent;\n\n/**\n * @deprecated The constant `SelectionType` should no longer be used. Instead use the value directly:\n * ```\n * // old\n * <ngx-datatable [selectionType]=\"SelectionType.multi\"></ngx-datatable>\n * // new\n * <ngx-datatable [selectionType]=\"'multi'\"></ngx-datatable>\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const SelectionType = {\n single: 'single',\n multi: 'multi',\n multiClick: 'multiClick',\n cell: 'cell',\n checkbox: 'checkbox'\n} as const;\n\nexport type SelectionType = (typeof SelectionType)[keyof typeof SelectionType];\n\n/** @deprecated. Use two-way binding instead. See {@link DatatableComponent.select} */\nexport interface SelectEvent<TRow> {\n selected: TRow[];\n}\n\nexport interface ContextMenuEventBody<TRow> {\n event: MouseEvent;\n type: 'body';\n content: RowOrGroup<TRow>;\n}\n\nexport interface ContextMenuEvenHeader {\n event: MouseEvent;\n type: 'header';\n content: TableColumn;\n}\n\nexport type ContextMenuEvent<TRow> = ContextMenuEventBody<TRow> | ContextMenuEvenHeader;\n\nexport interface ScrollToRowOptions {\n behavior?: ScrollBehavior;\n block?: ScrollLogicalPosition;\n}\n\nexport type DragEventType =\n | 'drag'\n | 'dragend'\n | 'dragenter'\n | 'dragleave'\n | 'dragover'\n | 'dragstart'\n | 'drop';\n\nexport interface DragEventData {\n event: DragEvent;\n srcElement: HTMLElement;\n targetElement?: HTMLElement;\n eventType: DragEventType;\n dragRow: any;\n dropRow?: any;\n}\n","/*\n * Public API Surface of ngx-datatable\n */\n\n// components\nexport * from './lib/ngx-datatable.module';\nexport * from './lib/components/datatable.component';\nexport * from './lib/components/body/body-group-header.directive';\nexport * from './lib/components/body/body-group-header-template.directive';\nexport * from './lib/components/footer/footer.directive';\nexport * from './lib/components/footer/footer-template.directive';\nexport * from './lib/components/footer/pager.component';\nexport * from './lib/components/columns/column.directive';\nexport * from './lib/components/columns/column-header.directive';\nexport * from './lib/components/columns/column-cell.directive';\nexport * from './lib/components/columns/column-ghost-cell.directive';\nexport * from './lib/components/columns/tree.directive';\nexport * from './lib/components/row-detail/row-detail.directive';\nexport * from './lib/components/row-detail/row-detail-template.directive';\nexport * from './lib/components/body/body-row-def.component';\n\n// directives\nexport * from './lib/directives/disable-row.directive';\n\n// types\nexport * from './lib/types/public.types';\nexport * from './lib/types/table-column.type';\n\n// utilis\nexport * from './lib/utils/column-helper';\n\nexport {\n providedNgxDatatableConfig,\n NgxDatatableConfig,\n NgxDatatableMessages,\n NgxDatatableCssClasses\n} from './lib/ngx-datatable.config';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|