@firestitch/list 18.0.78 → 18.0.80
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.
- package/app/components/body/body.component.d.ts +7 -0
- package/app/components/head/head.component.d.ts +1 -1
- package/esm2022/app/components/body/body.component.mjs +13 -3
- package/esm2022/app/components/head/head.component.mjs +2 -5
- package/esm2022/app/components/loader/loader.component.mjs +3 -3
- package/fesm2022/firestitch-list.mjs +15 -8
- package/fesm2022/firestitch-list.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firestitch-list.mjs","sources":["../../src/app/classes/reorder-controller.ts","../../src/app/enums/row-type.enum.ts","../../src/app/models/row/_base-row.ts","../../src/app/models/row/child-row.ts","../../src/app/models/row/group-footer-row.ts","../../src/app/models/row/group-row.ts","../../src/app/models/row/simple-row.ts","../../src/app/models/row.ts","../../src/app/classes/selection-controller.ts","../../src/app/directives/draggable-list/draggable-list.directive.ts","../../src/app/directives/draggable-row/draggable-row.directive.ts","../../src/app/enums/action-type.enum.ts","../../src/app/models/row-action.model.ts","../../src/app/pipes/action-label.ts","../../src/app/components/body/row/inline-action/button-content/button-content.component.ts","../../src/app/components/body/row/inline-action/button-content/button-content.component.html","../../src/app/components/body/row/inline-action/icon-button/icon-button.component.ts","../../src/app/components/body/row/inline-action/icon-button/icon-button.component.html","../../src/app/components/body/row/inline-action/icon-link/icon-link.component.ts","../../src/app/components/body/row/inline-action/icon-link/icon-link.component.html","../../src/app/components/body/row/inline-action/inline-action.component.ts","../../src/app/components/body/row/inline-action/inline-action.component.html","../../src/app/components/body/row/menu-action/menu-action.component.ts","../../src/app/components/body/row/menu-action/menu-action.component.html","../../src/app/components/body/row/actions/actions.component.ts","../../src/app/components/body/row/actions/actions.component.html","../../src/app/models/column-async-attribute.ts","../../src/app/models/column-attributes.ts","../../src/app/models/styleConfig.model.ts","../../src/app/models/column.model.ts","../../src/app/models/columns-column.model.ts","../../src/app/components/body/row/cell/cell.component.ts","../../src/app/components/body/row/cell/cell.component.html","../../src/app/components/body/row/row.component.ts","../../src/app/components/body/row/row.component.html","../../src/app/components/body/body.component.ts","../../src/app/components/body/body.component.html","../../src/app/classes/persistance-controller.ts","../../src/app/components/customize-cols/customize-cols.component.ts","../../src/app/components/customize-cols/customize-cols.component.html","../../src/app/components/footer/footer-row/footer-cell/footer-cell.component.ts","../../src/app/components/footer/footer-row/footer-cell/footer-cell.component.html","../../src/app/components/footer/footer-row/footer-row.component.ts","../../src/app/components/footer/footer-row/footer-row.component.html","../../src/app/components/footer/footer.component.ts","../../src/app/components/footer/footer.component.html","../../src/app/components/head/head-cell/head-cell.component.ts","../../src/app/components/head/head-cell/head-cell.component.html","../../src/app/classes/sorting-controller.ts","../../src/app/components/head/head.component.ts","../../src/app/components/head/head.component.html","../../src/app/enums/page-change-type.enum.ts","../../src/app/enums/state.enum.ts","../../src/app/classes/columns-controller.ts","../../src/app/classes/data-controller.ts","../../src/app/classes/external-params-controller.ts","../../src/app/classes/actions-controller.ts","../../src/app/enums/pagination-strategy.enum.ts","../../src/app/classes/pagination-controller.ts","../../src/app/classes/list-controller.ts","../../src/app/directives/heading/heading.directive.ts","../../src/app/directives/cell/cell.directive.ts","../../src/app/directives/footer/footer.directive.ts","../../src/app/services/group-expand-notifier.service.ts","../../src/app/directives/group-expand-trigger/group-expand-trigger.directive.ts","../../src/app/directives/group-footer/group-footer.directive.ts","../../src/app/directives/group-header/group-header.directive.ts","../../src/app/directives/header/header.directive.ts","../../src/app/directives/column/column.directive.ts","../../src/app/directives/content-init/content-init.directive.ts","../../src/app/directives/empty-state/empty-state.directive.ts","../../src/app/fs-list.providers.ts","../../src/app/components/loader/loader.component.ts","../../src/app/components/loader/loader.component.html","../../src/app/components/pagination/pagination.component.ts","../../src/app/components/pagination/pagination.component.html","../../src/app/components/status/status.component.ts","../../src/app/components/status/status.component.html","../../src/app/components/list/list.component.ts","../../src/app/components/list/list.component.html","../../src/app/directives/cell/cell-row-type-scope.directive.ts","../../src/app/directives/content/content.directive.ts","../../src/app/fs-list.module.ts","../../src/app/directives/cell/typed-cell.directive.ts","../../src/firestitch-list.ts"],"sourcesContent":["import { Injectable, OnDestroy } from '@angular/core';\n\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n FsListReorderConfig,\n FsListReorderDoneCallback,\n FsListReorderMovedCallback,\n FsListReorderMoveInGroupCallback,\n} from '../interfaces';\n\nimport { ActionsController } from './actions-controller';\nimport { DataController } from './data-controller';\nimport { SelectionController } from './selection-controller';\n\nexport enum ReorderPosition {\n Left = 'left',\n Right = 'right',\n}\n\nexport enum ReorderStrategy {\n Always = 'always',\n Manual = 'manual',\n Custom = 'custom',\n}\n\n@Injectable()\nexport class ReorderController implements OnDestroy {\n\n public startCallback: () => void | Observable<void>;\n public movedCallback: FsListReorderMovedCallback;\n public doneCallback: FsListReorderDoneCallback;\n public moveDropCallback: FsListReorderMoveInGroupCallback;\n\n public status: boolean;\n public label: string;\n public menu: boolean;\n public multiple: boolean;\n\n private _dataController: DataController;\n private _actionsController: ActionsController;\n private _selectionController: SelectionController;\n\n private _enabled$ = new BehaviorSubject<boolean>(false);\n private _manualReorderActivated$ = new BehaviorSubject(false);\n private _reorderDisabled$ = new BehaviorSubject(false);\n private _position = new BehaviorSubject<ReorderPosition | null>(null);\n private _strategy = new BehaviorSubject<ReorderStrategy | null>(null);\n\n private _destroy$ = new Subject();\n\n public get enabled() {\n return this._enabled$.getValue();\n }\n\n public set enabled(value) {\n this._enabled$.next(value);\n\n this._manualReorderActivated$.next(this.enabled && this.strategy === ReorderStrategy.Manual);\n }\n\n public get strategy(): ReorderStrategy | null {\n return this._strategy.getValue();\n }\n\n public get position(): ReorderPosition | null {\n return this._position.getValue();\n }\n\n public get dataController() {\n return this._dataController;\n }\n\n public get selectionController(): SelectionController {\n return this._selectionController;\n }\n\n public get enabled$(): Observable<boolean> {\n return this._enabled$.asObservable();\n }\n\n public get position$(): Observable<ReorderPosition> {\n return this._position.asObservable();\n }\n\n public get strategy$(): Observable<ReorderStrategy> {\n return this._strategy.asObservable();\n }\n\n public get manualReorderActivated(): boolean {\n return this._manualReorderActivated$.getValue();\n }\n\n public get reorderDisabled$(): Observable<boolean> {\n return this._reorderDisabled$.asObservable();\n }\n\n public get reorderDisabled(): boolean {\n return this._reorderDisabled$.getValue();\n }\n\n public initWithConfig(\n data: FsListReorderConfig,\n dataController: DataController,\n actionsController: ActionsController,\n selectionController: SelectionController,\n ) {\n if (!data) {\n return; \n }\n\n this.menu = data.menu ?? false;\n this._setPosition(data.position ?? ReorderPosition.Left);\n\n if (!data.disabled) {\n this._setStrategy(ReorderStrategy.Always);\n }\n\n if (data.toggle) {\n this._setStrategy(ReorderStrategy.Manual);\n }\n // this.strategy = data.strategy ?? ReorderStrategy.Manual;\n this.label = data.label;\n this.multiple = data.multiple;\n this.status = data.status ?? true;\n\n this.startCallback = data.start;\n this.movedCallback = data.moved;\n this.doneCallback = data.done;\n this.moveDropCallback = data.moveDrop;\n\n this._dataController = dataController;\n this._actionsController = actionsController;\n this._selectionController = selectionController;\n\n if (this.strategy === ReorderStrategy.Always) {\n this.enableReorder();\n } else if (this.strategy === ReorderStrategy.Manual) {\n actionsController.addReorderAction(\n {\n label: this.label || 'Reorder',\n menu: this.menu,\n primary: false,\n click: () => {\n this.enableReorder();\n },\n disabled: () => {\n return this.reorderDisabled;\n },\n },\n );\n\n actionsController.addReorderDoneAction({\n label: 'Done',\n primary: false,\n click: () => {\n this.disableReorder();\n },\n disabled: () => {\n return this.reorderDisabled;\n },\n },\n );\n }\n }\n\n public enableReorder() {\n if ((this.strategy === ReorderStrategy.Manual || this.strategy === ReorderStrategy.Custom) && this.startCallback) {\n const returnedValue = this.startCallback();\n\n if (returnedValue && returnedValue instanceof Observable) {\n this.disableReorderAction();\n\n returnedValue\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.enabled = true;\n this.enableReorderAction();\n });\n\n return;\n }\n }\n\n this.enabled = true;\n }\n\n public disableReorder() {\n if (this.strategy === ReorderStrategy.Manual || this.strategy === ReorderStrategy.Custom) {\n const returnedValue = this.reorderFinished();\n\n if (returnedValue && returnedValue instanceof Observable) {\n this.disableReorderAction();\n\n returnedValue\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.enabled = false;\n this.enableReorderAction();\n });\n\n return;\n }\n }\n\n this.enabled = false;\n }\n\n /**\n * Exec end callback\n */\n public reorderFinished() {\n if (this.doneCallback) {\n return this.doneCallback(this._dataController.reorderData);\n }\n }\n\n public ngOnDestroy() {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n /**\n * Enable reorder action and update filter actions state\n */\n public enableReorderAction() {\n this._reorderDisabled$.next(false);\n this._actionsController.updateDisabledState();\n }\n\n /**\n * Disable reorder action and update filter actions state\n */\n public disableReorderAction() {\n this._reorderDisabled$.next(true);\n this._actionsController.updateDisabledState();\n }\n\n private _setPosition(value: ReorderPosition): void {\n this._position.next(value);\n }\n\n private _setStrategy(value: ReorderStrategy): void {\n this._strategy.next(value);\n }\n\n}\n","export enum RowType {\n Simple = 'simple',\n Group = 'group',\n GroupFooter = 'groupFooter',\n GroupChild = 'groupChild',\n}\n","import { BehaviorSubject, Observable, Subject } from 'rxjs';\n\nimport { RowType } from '../../enums/row-type.enum';\nimport { FsListReorderData } from '../../interfaces';\n\nexport interface IBaseRow {\n data: object;\n index: number;\n data$: Observable<object>;\n readyToSwap: boolean;\n actionsUpdated$: Observable<void>;\n updateActions(): void;\n reorderData(): FsListReorderData;\n destroy(): void;\n}\n\nexport abstract class BaseRow<T = RowType> implements IBaseRow{\n\n protected readonly _rowType: T;\n\n private _index: number;\n private _readyToSwap = true;\n private _actionsUpdated$ = new Subject<void>();\n private _data$ = new BehaviorSubject<object>({});\n \n constructor(\n data: object = {},\n ) {\n this._data$.next(data);\n }\n\n public get data(): object {\n return this._data$.getValue();\n }\n \n public set data(value: object) {\n this._data$.next(value);\n }\n\n public get data$(): Observable<object> {\n return this._data$.asObservable();\n }\n\n public get type(): T {\n return this._rowType;\n }\n\n public get index(): number {\n return this._index;\n }\n\n public set index(value: number) {\n this._index = value;\n }\n\n public get readyToSwap(): boolean {\n return this._readyToSwap;\n }\n\n public set readyToSwap(value: boolean) {\n this._readyToSwap = value;\n }\n\n public get actionsUpdated$(): Observable<void> {\n return this._actionsUpdated$.asObservable();\n }\n\n public updateActions(): void {\n return this._actionsUpdated$.next();\n }\n\n public reorderData(): FsListReorderData {\n return {\n type: this._rowType as RowType,\n data: this.data,\n parent: null,\n };\n }\n\n public abstract destroy();\n}\n","import { RowType } from '../../enums/row-type.enum';\nimport { FsListReorderData } from '../../interfaces';\n\nimport { BaseRow, IBaseRow } from './_base-row';\nimport { IGroupRow } from './group-row';\n\n\nexport interface IBaseChildRow extends IBaseRow {\n type: RowType.GroupChild | RowType.GroupFooter;\n\n parent: IGroupRow;\n visible: boolean;\n}\n\nexport interface IChildRow extends IBaseChildRow {\n type: RowType.GroupChild;\n}\n\nexport class ChildRow extends BaseRow<RowType.GroupChild> implements IChildRow {\n\n protected readonly _rowType: RowType.GroupChild = RowType.GroupChild;\n\n private _visible = true;\n private readonly _parent: IGroupRow;\n\n constructor(\n data: object = {},\n parent: IGroupRow = null,\n ) {\n super(data);\n\n this._parent = parent;\n\n if (this.parent) {\n this._visible = this._parent.expanded;\n this.index = this.parent.children.length;\n }\n }\n\n\n public get visible(): boolean {\n return this._visible;\n }\n\n public set visible(value: boolean) {\n this._visible = value;\n }\n\n public get parent(): IGroupRow {\n return this._parent;\n }\n\n public reorderData(): FsListReorderData {\n return {\n type: this._rowType,\n data: this.data,\n parent: this.parent.reorderData(),\n };\n }\n\n public destroy() {}\n}\n","import { BaseRow } from './_base-row';\nimport { RowType } from '../../enums/row-type.enum';\nimport { IGroupRow } from './group-row';\nimport { IBaseChildRow } from './child-row';\n\nexport interface IGroupFooterRow extends IBaseChildRow {\n type: RowType.GroupFooter;\n}\n\nexport class GroupFooterRow extends BaseRow<RowType.GroupFooter> implements IGroupFooterRow{\n\n protected readonly _rowType: RowType.GroupFooter = RowType.GroupFooter;\n\n private _visible = true;\n private readonly _parent: IGroupRow;\n\n constructor(\n data: object = {},\n parent: IGroupRow = null,\n ) {\n super(data);\n\n this._parent = parent;\n\n if (this.parent) {\n this.visible = this._parent.expanded;\n this.index = this.parent.children.length;\n }\n }\n\n\n public get visible(): boolean {\n return this._visible;\n }\n\n public set visible(value: boolean) {\n this._visible = value;\n }\n\n public get parent(): IGroupRow {\n return this._parent;\n }\n\n public destroy() {}\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\n\nimport { RowType } from '../../enums/row-type.enum';\n\nimport { BaseRow, IBaseRow } from './_base-row';\nimport { IChildRow } from './child-row';\nimport { IGroupFooterRow } from './group-footer-row';\n\n\nexport interface IGroupRow extends IBaseRow {\n type: RowType.Group;\n\n childrenData: unknown[];\n expanded: boolean;\n expanded$: Observable<boolean>;\n toggleRowExpandStatus(): void;\n children: (IChildRow | IGroupFooterRow)[];\n}\n\nexport class GroupRow extends BaseRow<RowType.Group> implements IGroupRow {\n\n protected readonly _rowType: RowType.Group = RowType.Group;\n\n private _children: (IChildRow | IGroupFooterRow)[] = [];\n\n private readonly _expanded = new BehaviorSubject<boolean>(false);\n\n constructor(\n data: object = {},\n initialExpand = false,\n ) {\n super(data);\n\n if (initialExpand) {\n this._expanded.next(initialExpand);\n }\n }\n\n public get children(): (IChildRow | IGroupFooterRow)[] {\n return this._children;\n }\n\n public get childrenData() {\n return this._children\n .map((child) => child.data);\n }\n\n\n public get expanded(): boolean {\n return this._expanded.getValue();\n }\n\n public get expanded$(): Observable<boolean> {\n return this._expanded.asObservable();\n }\n\n public toggleRowExpandStatus(): void {\n this._expanded.next(!this.expanded);\n\n this._updateChildrenVisibility();\n }\n\n public destroy() {\n this._children.forEach((child) => child.destroy());\n\n this._expanded.complete();\n }\n\n private _updateChildrenVisibility(): void {\n this._children.forEach((row) => {\n row.visible = this.expanded;\n });\n }\n\n}\n","\nimport { RowType } from '../../enums/row-type.enum';\n\nimport { BaseRow, IBaseRow } from './_base-row';\n\nexport interface ISimpleRow extends IBaseRow {\n type: RowType.Simple;\n}\n\nexport class SimpleRow extends BaseRow<RowType.Simple> implements ISimpleRow {\n\n protected _rowType: RowType.Simple = RowType.Simple;\n \n constructor(data: object = {}) {\n super(data);\n }\n\n public destroy(): void {}\n\n}\n","import { RowType } from '../enums/row-type.enum';\n\nimport { ChildRow, IChildRow } from './row/child-row';\nimport { GroupFooterRow, IGroupFooterRow } from './row/group-footer-row';\nimport { GroupRow, IGroupRow } from './row/group-row';\nimport { ISimpleRow, SimpleRow } from './row/simple-row';\n\n\nexport type Row = ISimpleRow | IGroupRow | IGroupFooterRow | IChildRow;\n\nexport function isGroupRow(row: Row): row is IGroupRow {\n return row.type === RowType.Group;\n}\n\nexport function isChildRow(row: Row): row is IChildRow {\n return row.type === RowType.GroupChild;\n}\n\nexport function isGroupFooterRow(row: Row): row is IGroupFooterRow {\n return row.type === RowType.GroupFooter;\n}\n\nexport function isChildTypeRow(row: Row): row is IChildRow | IGroupFooterRow {\n return row.type === RowType.GroupChild || row.type === RowType.GroupFooter;\n}\n\nexport function makeRowFactory(\n data: object,\n rowType: RowType,\n opts: { parent?: Row, initialExpand?: boolean } = {},\n): Row {\n switch (rowType) {\n case RowType.Simple: {\n return new SimpleRow(data);\n }\n\n case RowType.Group: {\n return new GroupRow(data, opts.initialExpand);\n }\n\n case RowType.GroupChild: {\n return new ChildRow(data, opts.parent as IGroupRow);\n }\n\n case RowType.GroupFooter: {\n return new GroupFooterRow(data, opts.parent as IGroupRow);\n }\n }\n}\n\n","import { SelectionDialog, SelectionRef } from '@firestitch/selection';\n\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { map, take, takeUntil } from 'rxjs/operators';\n\nimport { get as _get } from 'lodash-es';\n\nimport { FsListSelectionConfig } from '../interfaces';\nimport { isChildRow, isGroupRow, Row } from '../models/row';\n\nexport enum SelectionChangeType {\n AllVisibleSelectionChange = 'AllVisibleSelectionChange',\n RowSelectionChange = 'RowSelectionChange',\n SelectedAll = 'SelectedAll',\n}\n\n\nexport class SelectionController {\n\n // Options from passed config\n public actions = [];\n public selectAll = true;\n public selectionChangedFn;\n public actionSelectedFn;\n public allSelectedFn;\n public selectableFn;\n public cancelledFn;\n\n // Store for selected visible rows\n public selectedRows = new Map();\n public selectedGroups = new Map();\n\n // Reference to selection dialog\n private _selectionDialogRef: SelectionRef = null;\n\n private _getRows: () => any[];\n private _selectionChange = new Subject<{ type: SelectionChangeType; payload: any }>();\n\n // Selected only visible rows (ex.: selected only limited 15 rows when we have pagination)\n private _selectedAllVisible = false;\n\n // Selected all rows when was clicked \"Select All\" in selection dialog\n // or count of visible records is equal to total and all visible rows was selected\n private _selectedAll = false;\n\n private _selectedRecords = 0;\n private _visibleRecordsCount = 0;\n private _totalRecordsCount = 0;\n\n private _destroy$ = new Subject();\n private _disabled$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n config: FsListSelectionConfig = {},\n private _trackBy: string,\n private _selectionDialog: SelectionDialog,\n ) {\n this.selectableFn = config.selectable;\n this.actions = config.actions ? [...config.actions] : [];\n this.actionSelectedFn = config.actionSelected;\n this.allSelectedFn = config.allSelected;\n this.cancelledFn = config.cancelled;\n this.selectionChangedFn = config.selectionChanged;\n this.selectAll = config.selectAll;\n this._disabled$.next(!!config.disabled);\n }\n\n public get disabled(): boolean {\n return this._disabled$.getValue();\n }\n\n public get disabled$(): Observable<boolean> {\n return this._disabled$.asObservable();\n }\n\n public selectable(row: Row, index: number): boolean {\n if (this.selectableFn) {\n return this.selectableFn(row.data, index);\n }\n\n return true;\n }\n\n public get enabled$(): Observable<boolean> {\n return this._disabled$.asObservable()\n .pipe(\n map((disabled) => !disabled),\n );\n }\n\n public get selectedAll() {\n return this._selectedAll;\n }\n\n public get selectionChange$() {\n return this._selectionChange.pipe(takeUntil(this._destroy$));\n }\n\n public setRowsCallback(data: () => any[]) {\n this._getRows = data;\n }\n\n /**\n * Trigger when row was selected\n *\n * @param row\n * @param checked\n */\n public rowSelectionChange(row: Row, checked: boolean) {\n if (row) {\n if (checked) {\n this._selectRow(row);\n this.openDialog();\n } else {\n if (this._selectedAll) {\n this._selectedAll = false;\n }\n\n this._deselectRow(row);\n }\n }\n\n this._updateSelectionRefSelected();\n this._updateSelectedVisibleStatus();\n }\n\n /**\n * Do check or uncheck of visible rows\n *\n * @param checked\n */\n public selectAllVisibleRows(checked) {\n this.openDialog();\n\n this._selectedAllVisible = checked;\n this._selectedRecords = 0;\n\n const rows = this._getRows();\n\n if (checked) {\n rows.forEach((row) => {\n const identifier = this._rowIdentifier(row.data);\n\n if (isGroupRow(row)) {\n this._setNumberOfSelectedChildrenInGroup(identifier, row.children.length);\n } else {\n this.selectedRows.set(identifier, row.data);\n this._selectedRecords++;\n }\n });\n } else {\n rows.forEach((row) => {\n const identifier = this._rowIdentifier(row.data);\n\n if (isGroupRow(row)) {\n this._setNumberOfSelectedChildrenInGroup(identifier, 0);\n } else {\n this.selectedRows.delete(identifier);\n }\n });\n\n this._selectedAll = false;\n this._selectedRecords = 0;\n }\n\n // Fire an event that all visible selection was changed\n this._visibleRowsSelectionChanged();\n this._updateSelectionRefSelected();\n }\n\n public isRowSelected(rowData) {\n return this.selectedRows.has(this._rowIdentifier(rowData))\n || this.selectedGroups.has(this._rowIdentifier(rowData))\n || this.selectedAll;\n }\n\n public isGroupSelected(row): boolean | 'indeterminate' {\n const identifier = this._rowIdentifier(row.data);\n\n if (\n this.selectedGroups.has(identifier)\n && row.children?.length > this.selectedGroups.get(identifier)\n ) {\n return 'indeterminate';\n }\n\n return this.selectedGroups.has(identifier) || this.selectedAll;\n\n }\n\n /**\n * Open selection dialog and create reference\n */\n public openDialog() {\n if (!this._selectionDialogRef) {\n this._selectionDialogRef = this._selectionDialog.open({\n selectAll: this.selectAll,\n allCount: this._totalRecordsCount,\n actions: [...this.actions],\n // selectAll: this.sele\n });\n\n this._subscribeToSelection();\n }\n }\n\n /**\n * Update count of visible elements\n *\n * @param count\n */\n public updateVisibleRecordsCount(count: number) {\n this._visibleRecordsCount = count;\n }\n\n /**\n * Update count of total available elemenets\n *\n * @param count\n */\n public updateTotalRecordsCount(count: number) {\n this._totalRecordsCount = count;\n\n if (this._selectionDialogRef) {\n this._selectionDialogRef.updateAllCount(this._totalRecordsCount);\n }\n }\n\n public pageChanged() {\n if (this._selectedAll) {\n this._resetSelection();\n } else {\n this._selectedRecords = 0;\n this._getRows()\n .map((row) => row.data)\n .forEach((rowData) => {\n const identified = this._rowIdentifier(rowData);\n\n if (this.selectedRows.has(identified)) {\n this._selectedRecords++;\n }\n });\n\n this._updateSelectionRefSelected();\n this._updateSelectedVisibleStatus();\n }\n }\n\n public enableSelection() {\n this._disabled$.next(false);\n }\n\n public disableSelection() {\n this._disabled$.next(true);\n }\n\n /**\n * Method will be called from List for remove row if it was selected\n *\n * BUT methods for update visible and etc. will be called a bit later\n *\n * @param row\n */\n public removeRow(row) {\n this.selectedRows.delete(this._rowIdentifier(row));\n\n this._updateSelectionRefSelected();\n this._updateSelectionRefSelectedAll();\n }\n\n /**\n * Intersection of selected and passed rows to remove rows that we dont need more\n *\n * @param rows\n */\n public selectedRowsIntersection(rows) {\n const rowsIndentifiers = rows.map((row) => this._rowIdentifier(row));\n\n this.selectedRows.forEach((selectedRow, identifier) => {\n if (rowsIndentifiers.indexOf(identifier) === -1) {\n this.removeRow(selectedRow);\n }\n });\n }\n\n public updateConfig({\n actions, actionSelected, allSelected, cancelled, selectionChanged, selectAll,\n }: FsListSelectionConfig) {\n this.actions = actions ? [...actions] : this.actions;\n this.actionSelectedFn = actionSelected ?? this.actionSelectedFn;\n this.allSelectedFn = allSelected ?? this.allSelectedFn;\n this.cancelledFn = cancelled ?? this.cancelledFn;\n this.selectionChangedFn = selectionChanged ?? this.selectionChangedFn;\n this.selectAll = selectAll ?? this.selectAll;\n }\n\n // Reset actions to default set\n public resetActions() {\n this._selectionDialogRef?.resetActions();\n }\n\n public closeSelectionDialog() {\n this._selectionDialogRef?.close();\n }\n\n public destroy() {\n this._resetSelection();\n\n this.actions = null;\n this.actionSelectedFn = null;\n this.allSelectedFn = null;\n this.cancelledFn = null;\n\n this.closeSelectionDialog();\n this._selectionDialogRef = null;\n\n this._destroy$.next(null);\n this._destroy$.complete();\n\n this._selectionChange.complete();\n }\n\n /**\n * Subscribe to selectionRef events\n */\n private _subscribeToSelection() {\n this._selectionDialogRef.actionSelected$()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((data) => {\n this._onActionActions(data);\n });\n\n this._selectionDialogRef.destroy$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => this._onCancelActions());\n\n this._selectionDialogRef.allSelected$()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((data) => {\n this._onSelectAllActions(data);\n });\n }\n\n /**\n * If some action was clicked on selection ref dialog\n *\n * @param data\n */\n private _onActionActions(data) {\n if (!this.actionSelectedFn) {\n return;\n }\n\n // Execute callback\n const result = this.actionSelectedFn({\n selected: Array.from(this.selectedRows.values()).map((row) => {\n return { ...row };\n }),\n ...data,\n });\n\n // If result is observable\n if (result instanceof Observable) {\n\n // Subscribe and whait why it resolved\n result.pipe(\n take(1),\n takeUntil(this._destroy$),\n ).subscribe({\n next: () => {\n\n // Close dialog\n this.closeSelectionDialog();\n\n // Uncheck all visible rows\n this.selectAllVisibleRows(false);\n },\n error: () => { },\n });\n }\n }\n\n /**\n * If cancel was clicked on selection ref dialog\n */\n private _onCancelActions() {\n this.selectAllVisibleRows(false);\n\n if (this.cancelledFn) {\n this.cancelledFn();\n }\n\n this._selectionDialogRef = null;\n }\n\n /**\n * If \"Select All\" action was clicked on selection ref dialog\n *\n * @param flag\n */\n private _onSelectAllActions(flag) {\n this._selectedAll = flag;\n\n this.selectAllVisibleRows(flag);\n\n this._selectionDialogRef.updateSelected(this._totalRecordsCount);\n\n this._selectionChangeEvent(SelectionChangeType.SelectedAll, this._selectedAll);\n this._updateSelectionRefSelectedAll();\n\n if (!this.allSelectedFn) {\n return;\n }\n\n this.allSelectedFn(flag);\n }\n\n private _selectionChangedActions() {\n // Remove actions if no rows selected\n // otherwise it will \"blink\" when user select any action\n if (this.selectedRows.size === 0) {\n this._selectionDialogRef.updateActions([]);\n\n return;\n }\n\n if (this.selectionChangedFn) {\n const result = this.selectionChangedFn(\n Array.from(this.selectedRows.values()),\n this.selectedAll,\n this._selectionDialogRef,\n );\n\n if (result) {\n if (result instanceof Observable) {\n result.pipe(\n take(1),\n takeUntil(this._destroy$),\n ).subscribe({\n next: (actions) => {\n this._selectionDialogRef.updateActions(actions);\n },\n });\n } else if (Array.isArray(result)) {\n this._selectionDialogRef.updateActions(result);\n }\n }\n }\n }\n\n /**\n * Update in Dialog Ref how much rows was selected\n */\n private _updateSelectionRefSelected() {\n if (this._selectionDialogRef) {\n this._selectionDialogRef.updateSelected(this.selectedRows.size);\n\n // S-T1268\n if (this.selectedRows.size === 0) {\n this._selectionDialogRef.close();\n }\n\n this._selectionChangedActions();\n }\n }\n\n /**\n * Update in Dialog Ref selected all status\n *\n * Ex.: Was clicked \"Select All\" in Dialog and after that some checkbox was unchecked\n * Dialog Ref must know about it\n *\n */\n private _updateSelectionRefSelectedAll() {\n if (this._selectionDialogRef) {\n this._selectionDialogRef.updateSelectedAllStatus(this._selectedAll);\n }\n }\n\n /**\n * Check if all visible rows was checked and send event to main header checkbox\n */\n private _updateSelectedVisibleStatus() {\n this._selectedAllVisible = this._selectedRecords !== 0 && this._selectedRecords === this._visibleRecordsCount;\n\n this._selectionChangeEvent(\n SelectionChangeType.RowSelectionChange,\n this._selectedAllVisible,\n );\n }\n\n /**\n * If select all checkbox in header was changed\n */\n private _visibleRowsSelectionChanged() {\n this._selectionChangeEvent(\n SelectionChangeType.AllVisibleSelectionChange,\n this._selectedAllVisible,\n );\n }\n\n /**\n * Method constructor for events\n *\n * @param type\n * @param payload\n */\n private _selectionChangeEvent(type: SelectionChangeType, payload) {\n this._selectionChange.next({\n type,\n payload,\n });\n }\n\n /**\n * Get row identified by trackBy path\n *\n * @param row\n */\n private _rowIdentifier(row) {\n const identifier = _get(row, this._trackBy, undefined);\n\n if (identifier === undefined) {\n console.warn('Selection can not recognize track by field for row. ' +\n 'Please check if you had configured trackBy function.');\n }\n\n return identifier;\n }\n\n private _selectRow(row) {\n const identifier = this._rowIdentifier(row.data);\n\n if (isGroupRow(row)) {\n row.children.forEach((childRow) => {\n this._selectRow(childRow);\n });\n } else {\n if (isChildRow(row)) {\n this._selectChildRow(row);\n }\n\n this.selectedRows.set(identifier, row.data);\n this._selectedRecords++;\n }\n }\n\n private _deselectRow(row) {\n const identifier = this._rowIdentifier(row.data);\n\n if (isGroupRow(row)) {\n this.selectedGroups.delete(identifier);\n\n row.children.forEach((childRow) => {\n this._deselectRow(childRow);\n });\n } else {\n if (isChildRow(row) && this.selectedRows.has(identifier)) {\n this._deselectChildRow(row);\n }\n\n this.selectedRows.delete(identifier);\n this._selectedRecords--;\n }\n }\n\n private _selectChildRow(row) {\n const parentIdentifier = this._rowIdentifier(row.parent.data);\n const selectedChildrenNumber = this.selectedGroups.get(parentIdentifier) || 0;\n\n this._setNumberOfSelectedChildrenInGroup(parentIdentifier, selectedChildrenNumber + 1);\n }\n\n private _deselectChildRow(row) {\n const parentIdentifier = this._rowIdentifier(row.parent.data);\n const selectedChildrenNumber = this.selectedGroups.get(parentIdentifier) || 0;\n\n if (selectedChildrenNumber > 1) {\n this._setNumberOfSelectedChildrenInGroup(parentIdentifier, selectedChildrenNumber - 1);\n } else {\n this._setNumberOfSelectedChildrenInGroup(parentIdentifier, 0);\n }\n }\n\n private _setNumberOfSelectedChildrenInGroup(identifier: string, n: number) {\n if (n === 0) {\n this.selectedGroups.delete(identifier);\n\n return;\n }\n\n this.selectedGroups.set(identifier, n);\n }\n\n /**\n * Reset selection\n */\n private _resetSelection() {\n this._selectedAll = false;\n this._selectedAllVisible = false;\n this._visibleRecordsCount = 0;\n this._selectedRecords = 0;\n this.selectedRows.clear();\n\n this._updateSelectionRefSelected();\n this._updateSelectionRefSelectedAll();\n this._visibleRowsSelectionChanged();\n }\n}\n","import { ChangeDetectorRef, Directive, ElementRef, Input, NgZone, Renderer2, inject } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ReorderController, ReorderStrategy } from '../../classes/reorder-controller';\nimport { FsListDragChildRowElement } from '../../interfaces/draggable-list.interface';\nimport { Row, isChildRow, isGroupRow } from '../../models/row';\nimport { FsListDraggableRowDirective } from '../draggable-row/draggable-row.directive';\n\n\n@Directive({\n selector: '[fsListDraggableList]',\n standalone: true,\n})\nexport class FsListDraggableListDirective {\n \n private _cdRef = inject(ChangeDetectorRef);\n private _zone = inject(NgZone);\n private _containerElement = inject(ElementRef);\n private _reorderController = inject(ReorderController);\n private _renderer = inject(Renderer2);\n\n // Draggable Element\n private _draggableElement: HTMLElement;\n private _draggableElementPreview: HTMLElement;\n private _multipleDraggableElementPreview: HTMLElement;\n private _draggableElementHeight: number;\n private _draggableElementIndex: number;\n private _draggableElementStartIndex: number;\n\n // Handlers\n private _dragToHandler = this.dragTo.bind(this);\n private _dragEndHandler = this.dragEnd.bind(this);\n\n private _dragInProgress = false;\n\n private _childRowElements: FsListDragChildRowElement[];\n private _dragStart$ = new Subject<void>();\n private _dragEnd$ = new Subject<void>();\n\n @Input('rows')\n private _rows: Row[];\n private _draggableChildrenDirectives: FsListDraggableRowDirective[] = [];\n private _selectedRowsDirectives: FsListDraggableRowDirective[] = [];\n private _destroy$ = new Subject();\n\n private _windowTouchMoveHandler = () => {\n //\n };\n\n public get dragStart$(): Observable<void> {\n return this._dragStart$.pipe(takeUntil(this._destroy$));\n }\n\n public get dragEnd$(): Observable<void> {\n return this._dragEnd$.pipe(takeUntil(this._destroy$));\n }\n\n public get draggableItem(): Row {\n return this._rows[this._draggableElementIndex];\n }\n public addDraggableDirective(dir: FsListDraggableRowDirective): void {\n this._draggableChildrenDirectives.push(dir);\n }\n\n public removeDraggableDirective(dir: FsListDraggableRowDirective): void {\n const idx = this._draggableChildrenDirectives.indexOf(dir);\n\n if (idx !== -1) {\n this._draggableChildrenDirectives.splice(idx, 1);\n }\n }\n\n /**\n * Prepare draggable elements and add events\n *\n * @param draggableElement\n */\n public dragStart(draggableElement: HTMLElement) {\n if (this._dragInProgress) {\n return;\n }\n\n if (\n this._reorderController.startCallback\n && this._reorderController.strategy === ReorderStrategy.Always\n ) {\n this._reorderController.startCallback();\n }\n\n this._dragInProgress = true;\n\n window.document.body.classList.add('reorder-in-progress');\n\n this._draggableElement = draggableElement;\n\n this._detectSelectedRows();\n this.prepareElements();\n this.initDraggableElement();\n\n this._draggableElementStartIndex = this._draggableElementIndex;\n this._draggableElement.classList.add('draggable-elem');\n\n this._zone.runOutsideAngular(() => {\n window.addEventListener('touchmove', this._windowTouchMoveHandler, { passive: true });\n window.document.addEventListener('mousemove', this._dragToHandler, { passive: true });\n window.document.addEventListener('touchmove', this._dragToHandler, { passive: false });\n });\n\n window.document.addEventListener('mouseup', this._dragEndHandler);\n window.document.addEventListener('touchend', this._dragEndHandler);\n window.document.addEventListener('touchcancel', this._dragEndHandler);\n\n this._dragStart$.next(null);\n }\n\n\n /**\n * Move draggable elements and swap items\n *\n * @param event\n */\n public dragTo(event) {\n this.touchFix(event);\n const elemIndex = this.lookupElementUnder(event);\n const targetRow = this._rows[elemIndex];\n\n if (this._multipleDraggableElementPreview) {\n this._multipleDraggableElementPreview.style.left = `${event.clientX}px`;\n this._multipleDraggableElementPreview.style.top = `${event.clientY}px`;\n }\n\n // Can not drag before first group and after last group\n const swapWithBoundaryGroupElement =\n (elemIndex === 0 || elemIndex === this._rows.length - 1)\n && isGroupRow(targetRow)\n // TODO fix isChild & all\n && (isChildRow(this.draggableItem));\n\n\n if (!swapWithBoundaryGroupElement) {\n if (elemIndex !== null) {\n if (targetRow.readyToSwap) {\n this.swapWithIndex(elemIndex);\n if (this._draggableElementPreview) {\n this._draggableElementPreview.classList.remove('fs-list-no-drop');\n }\n } else {\n if (this._draggableElementPreview) {\n this._draggableElementPreview.classList.add('fs-list-no-drop');\n }\n }\n }\n\n // FIXME\n if (this._draggableElementPreview) {\n const topOffset = (event.y || event.clientY) - (this._draggableElementHeight / 2);\n this._draggableElementPreview.style.top = `${topOffset}px`;\n }\n }\n }\n\n /**\n * Remove events and classes after drag finish\n */\n public dragEnd() {\n this._dragInProgress = false;\n this._reorderController.dataController.finishReorder();\n\n if (this._reorderController.movedCallback\n && this._draggableElementStartIndex !== this._draggableElementIndex) {\n\n this._reorderController.movedCallback(\n this._reorderController.dataController.reorderData,\n );\n }\n\n if (this._reorderController.strategy === ReorderStrategy.Always) {\n this._zone.run(() => {\n if (this._reorderController.doneCallback) {\n const result = this._reorderController.doneCallback(\n this._reorderController.dataController.reorderData,\n );\n\n this._waitUntilIsNotDone(result);\n }\n });\n }\n\n // this._reorderController.dataController.updateOrderByRows(this._rows);\n ///\n this._containerElement.nativeElement.classList.remove('drag-hidden');\n this._draggableElement.classList.remove('draggable-elem');\n window.document.body.classList.remove('reorder-in-progress');\n this._draggableElement = null;\n\n if (this._draggableElementPreview) {\n this._draggableElementPreview.remove();\n\n this._draggableElementPreview = null;\n } else {\n this._renderer.removeChild(document.body, this._multipleDraggableElementPreview);\n this._multipleDraggableElementPreview = null;\n }\n\n this._draggableElementHeight = null;\n this._draggableElementIndex = null;\n this._draggableElementStartIndex = null;\n this._selectedRowsDirectives = [];\n\n window.removeEventListener('touchmove', this._windowTouchMoveHandler);\n window.document.removeEventListener('mousemove', this._dragToHandler);\n window.document.removeEventListener('touchmove', this._dragToHandler);\n window.document.removeEventListener('mouseup', this._dragEndHandler);\n window.document.removeEventListener('touchend', this._dragEndHandler);\n window.document.removeEventListener('touchcancel', this._dragEndHandler);\n\n this._dragEnd$.next(null);\n }\n\n private get _isMultipleDrag(): boolean {\n return this._reorderController.multiple && this._selectedRowsDirectives.length > 1;\n }\n\n\n /**\n * looking row elements and save their dims\n */\n private prepareElements() {\n this.lookupChildElements();\n this.calcElementsDimensions();\n }\n\n /**\n * Store child rows\n */\n private lookupChildElements() {\n this._childRowElements = Array.from(this._containerElement.nativeElement.querySelectorAll('tr:not(.drag-hidden)'))\n .reduce((acc: any[], rowElement, index) => {\n const element: any = { target: rowElement };\n\n if (rowElement === this._draggableElement) {\n this._draggableElementIndex = index;\n element.active = true;\n }\n\n acc.push(element);\n\n return acc;\n }, []) as FsListDragChildRowElement[];\n }\n\n /**\n * Calc child rows sizes/offsets\n */\n private calcElementsDimensions() {\n this._childRowElements.forEach((el: any, index) => {\n const dims = el.target.getBoundingClientRect();\n el.top = dims.top;\n el.height = dims.height;\n el.center = dims.top + (dims.height / 2);\n el.index = index;\n });\n }\n\n /**\n * Init draggable element\n */\n private initDraggableElement() {\n const el = this._draggableElement.cloneNode(true) as HTMLElement;\n const data = this._draggableElement.getBoundingClientRect();\n\n if (!(this._isMultipleDrag)) {\n el.style.width = `${data.width}px`;\n el.style.left = `${data.left}px`;\n el.style.top = `${data.top}px`;\n el.classList.add('draggable');\n\n this._containerElement.nativeElement.append(el);\n\n this._draggableElementPreview = el;\n this._draggableElementHeight = data.height;\n\n this.updateDraggableDims();\n } else {\n // Create preview DIV\n this._containerElement.nativeElement.classList.add('drag-hidden');\n\n const selectedCount = this._selectedRowsDirectives?.length;\n const previewBlock = this._renderer.createElement('div');\n previewBlock.style.left = `${data.left}px`;\n previewBlock.style.top = `${data.top}px`;\n\n const text = this._renderer.createText(`${selectedCount} selected items`);\n\n this._renderer.appendChild(previewBlock, text);\n this._renderer.addClass(previewBlock, 'fs-list-preview-block');\n this._renderer.appendChild(document.body, previewBlock);\n this._multipleDraggableElementPreview = previewBlock;\n }\n\n }\n\n /**\n * Looking by stored row elements for overlapped row\n *\n * @param event\n */\n private lookupElementUnder(event) {\n const top = event.y || event.clientY;\n const bottom = event.y || event.clientY;\n let elemIndex = null;\n\n for (let i = 0; i < this._childRowElements.length; i++) {\n const el = this._childRowElements[i];\n\n if (!el.active) {\n if (top < el.center + (el.height / 2) && el.index < this._draggableElementIndex\n || bottom > el.center - (el.height / 2) && el.index > this._draggableElementIndex) {\n elemIndex = i;\n }\n }\n }\n\n return elemIndex;\n }\n\n /**\n * Swap rows\n *\n * @param index\n */\n private swapWithIndex(index) {\n const activeIndex = this._draggableElementIndex;\n const selectedRows = this._selectedRowsDirectives\n .map((d) => d.row)\n .filter((d) => d.readyToSwap);\n\n // Swap rows in global rows stack\n this._reorderController\n .dataController\n .swapRows(\n this._rows[activeIndex],\n this._rows[index],\n selectedRows,\n this._isMultipleDrag,\n );\n\n // Swap visible rows\n if (!this._isMultipleDrag) {\n const activeRow = this._rows[activeIndex];\n this._rows[activeIndex] = this._rows[index];\n this._rows[index] = activeRow;\n\n const activeElement = this._childRowElements[activeIndex].target;\n this._childRowElements[activeIndex].active = false;\n\n this._childRowElements[activeIndex].target = this._childRowElements[index].target;\n this._childRowElements[index].target = activeElement;\n this._childRowElements[index].active = true;\n }\n\n this._draggableElementIndex = index;\n this._cdRef.detectChanges();\n }\n\n /**\n * Update cell width for draggable elem\n */\n private updateDraggableDims() {\n const draggableCells: any = Array.from(this._draggableElementPreview.querySelectorAll('td'));\n\n Array.from(\n this._draggableElementPreview.querySelectorAll('td'),\n ).forEach((elem: any, index) => {\n const dims = elem.getBoundingClientRect();\n draggableCells[index].style.width = `${dims.width}px`;\n });\n }\n\n private _waitUntilIsNotDone(doneResult: unknown): void {\n if (doneResult instanceof Observable) {\n this._reorderController.disableReorderAction();\n\n doneResult\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n this._reorderController.enableReorderAction();\n });\n }\n }\n\n private _detectSelectedRows(): void {\n this._draggableChildrenDirectives\n .forEach((dir: FsListDraggableRowDirective) => {\n const isRowSelected = this._reorderController.selectionController?.isRowSelected(dir.row.data);\n\n if (isRowSelected && !isGroupRow(dir.row)) {\n this._selectedRowsDirectives.push(dir);\n }\n });\n }\n\n /**\n * Fix background when mobile\n *\n * @param e\n */\n private touchFix(e) {\n if (!('clientX' in e) && !('clientY' in e)) {\n const touches = e.touches || e.originalEvent.touches;\n if (touches && touches.length) {\n e.clientX = touches[0].clientX;\n e.clientY = touches[0].clientY;\n }\n\n e.preventDefault();\n }\n }\n}\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2, inject } from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ReorderController } from '../../classes/reorder-controller';\nimport { Row, isChildTypeRow } from '../../models/row';\nimport { FsListDraggableListDirective } from '../draggable-list/draggable-list.directive';\n\n\n@Directive({\n selector: '[fsListDraggableRow]',\n standalone: true,\n})\nexport class FsListDraggableRowDirective implements OnInit, OnDestroy {\n\n @Input()\n public row: Row;\n\n private _destroy$ = new Subject<void>();\n private _el = inject(ElementRef);\n private _renderer = inject(Renderer2);\n private _reorderController = inject(ReorderController);\n private _draggableList = inject(FsListDraggableListDirective);\n\n public get elRef(): ElementRef {\n return this._el;\n }\n\n public ngOnInit(): void {\n if (this._reorderController.moveDropCallback) {\n this._listenDragEvents();\n }\n this._draggableList.addDraggableDirective(this);\n }\n\n public ngOnDestroy(): void {\n this._draggableList.removeDraggableDirective(this);\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public dragHide(): void {\n this._el.nativeElement.classList.add('drag-hidden');\n }\n\n private _listenDragEvents() {\n this._draggableList\n .dragStart$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._markReadyToSwapRows();\n });\n\n this._draggableList\n .dragEnd$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._unmarkRows();\n });\n }\n\n private _markReadyToSwapRows() {\n const currentEl = this.row;\n const targetEl = this._draggableList.draggableItem;\n\n this.row.readyToSwap = this._reorderController.moveDropCallback(\n {\n row1: currentEl?.data,\n row2: targetEl?.data,\n group1: isChildTypeRow(currentEl) ? currentEl.parent?.data : null,\n group2: isChildTypeRow(targetEl) ? targetEl.parent?.data : null,\n },\n );\n\n if (!this.row.readyToSwap) {\n this._renderer.addClass(this._el.nativeElement, 'fs-list-swap-restricted');\n }\n }\n\n private _unmarkRows() {\n if (!this.row.readyToSwap) {\n this._renderer.removeClass(this._el.nativeElement, 'fs-list-swap-restricted');\n }\n }\n}\n","export enum ActionType {\n Basic = 'basic',\n Raised = 'raised',\n Icon = 'icon',\n Fab = 'fab',\n MiniFab = 'mini-fab'\n}\n","import { BehaviorSubject, Observable, map } from 'rxjs';\n\nimport { ActionType } from '../enums/action-type.enum';\nimport {\n FsListRowActionFile,\n FsListRowActionLink,\n FsListRowActionLinkFn,\n FsListRowActionRemove,\n} from '../interfaces';\n\n\nexport class RowAction {\n\n public icon: string | ((row: any) => string);\n public menu: boolean;\n public remove: FsListRowActionRemove | boolean;\n public className: string;\n public type: ActionType;\n public show: (row: any, index: number) => boolean;\n public restore: boolean;\n public rowActions: RowAction[];\n public label = '';\n public routerLink: FsListRowActionLink;\n public classArray: string[] = [];\n public click: (row: any, event: any, index: number, rowActionsRef?: RowAction) => void;\n\n public fileConfig: FsListRowActionFile;\n\n private _linkFn: FsListRowActionLinkFn;\n private readonly _isGroup: boolean = false;\n private _visible = new BehaviorSubject<boolean>(true);\n\n constructor(config: any = {}) {\n this._init(config);\n\n if (Array.isArray(this.rowActions)) {\n this._isGroup = true;\n }\n }\n\n public get isGroup() {\n return this._isGroup;\n }\n\n public getRowIcon(row: any) {\n return typeof this.icon === 'function' ? this.icon(row) : this.icon;\n }\n\n public get visible$(): Observable<boolean> {\n return this._visible.asObservable();\n }\n\n public get hidden$(): Observable<boolean> {\n return this._visible\n .pipe(map((visible) => !visible));\n }\n\n public get visible(): boolean {\n return this._visible.getValue();\n }\n\n public _init(value: any) {\n this.icon = value.icon;\n this.menu = value.menu ?? true;\n this.remove = value.remove;\n this.className = value.className;\n this.type = this.menu && this.icon && !this.label && !value.type ? ActionType.Icon : value.type ?? ActionType.Basic;\n this.show = value.show;\n this.restore = value.restore;\n this.rowActions = value.rowActions\n ?.map((action) => new RowAction(action));\n\n\n // Re-assign click function\n const clickFn = value.click;\n this.click = (row, event, index, rowActionsRef = null) => {\n return this._clickEvent(row, event, index, rowActionsRef, clickFn);\n };\n\n this._linkFn = value.link;\n\n if (value.file) {\n this.fileConfig = { ...value.file };\n\n if (this.fileConfig.select) {\n const selectFn = this.fileConfig.select;\n this.fileConfig.select = (selection, row, index) => {\n selectFn(selection, row, index);\n };\n }\n }\n\n this.label = value.label;\n\n if (this.className) {\n this.classArray = this.className.split(' ').reduce((acc, elem) => {\n acc.push(elem);\n\n return acc;\n }, []);\n }\n }\n\n public checkShowStatus(row, index) {\n if (this.isGroup) {\n this.rowActions.forEach((action) => {\n action.checkShowStatus(row, index);\n });\n\n const groupVisible = !this.show || this.show(row, index);\n\n this._visible.next(groupVisible && this.rowActions.some((action) => action.visible));\n } else if (this.show) {\n this._visible.next(this.show(row, index));\n }\n }\n\n public updateLink(row) {\n if (!this.visible) {\n return;\n }\n\n if (this.isGroup) {\n this.rowActions.forEach((action) => {\n action.updateLink(row);\n });\n } else if (this._linkFn) {\n this.routerLink = this._linkFn(row);\n\n if (this.routerLink && !this.routerLink.target) {\n this.routerLink.target = null;\n }\n }\n }\n\n private _clickEvent(row, event, index, rowActionsRef, clickFn) {\n // Stop event propagation for parent\n event.stopPropagation();\n\n // Close menu\n if (rowActionsRef) {\n rowActionsRef.closeMenu();\n }\n\n if (clickFn) {\n // Fire passed callback\n return clickFn(row, event, index);\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Row } from '../models/row';\n\n\n@Pipe({\n name: 'actionLabel',\n standalone: true,\n})\nexport class ActionLabelPipe implements PipeTransform {\n public transform(label, row: Row) {\n if (typeof label === 'function') {\n return label(row.data);\n }\n\n return label;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n} from '@angular/core';\n\nimport { MatIcon } from '@angular/material/icon';\n\nimport { FsFile, FsFileModule } from '@firestitch/file';\n\nimport { Row } from '../../../../../models/row';\nimport { RowAction } from '../../../../../models/row-action.model';\n\n\n@Component({\n selector: 'fs-list-row-inline-button-content',\n templateUrl: './button-content.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatIcon,\n FsFileModule,\n ],\n})\nexport class FsRowInlineButtonContentComponent implements OnChanges {\n\n @Input()\n public rowAction: RowAction;\n\n @Input()\n public row: Row;\n\n @Output()\n public fileSelect = new EventEmitter<FsFile | FsFile[]>();\n\n public icon: string;\n\n public ngOnChanges(changes: SimpleChanges): void {\n if((changes.row || changes.rowAction) && this.rowAction && this.row) {\n this.icon = this.rowAction.getRowIcon(this.row.data);\n }\n }\n\n public fileSelected(event: FsFile | FsFile[]): void {\n this.fileSelect.emit(event);\n }\n}\n\n","@if (!rowAction?.fileConfig) {\n @if (icon) {\n <mat-icon>\n {{ icon }}\n </mat-icon>\n }\n {{ rowAction?.label }}\n} @else {\n <fs-file\n class=\"action-button\"\n [accept]=\"rowAction.fileConfig.accept || '*'\"\n [multiple]=\"rowAction.fileConfig.multiple\"\n [minWidth]=\"rowAction.fileConfig.minWidth\"\n [minHeight]=\"rowAction.fileConfig.minHeight\"\n [imageWidth]=\"rowAction.fileConfig.maxWidth\"\n [imageHeight]=\"rowAction.fileConfig.maxHeight\"\n (select)=\"fileSelected($event)\"\n (error)=\"rowAction.fileConfig.error && rowAction.fileConfig.error($event)\">\n @if (icon) {\n <mat-icon>\n {{ icon }}\n </mat-icon>\n }\n {{ rowAction.label }}\n </fs-file>\n}\n\n","import { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { MatIconButton } from '@angular/material/button';\n\nimport { FsFile } from '@firestitch/file';\n\nimport { Row } from '../../../../../models/row';\nimport { RowAction } from '../../../../../models/row-action.model';\nimport { FsRowInlineButtonContentComponent } from '../button-content/button-content.component';\n\n\n@Component({\n selector: 'fs-list-row-inline-icon-button',\n templateUrl: './icon-button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgClass,\n MatIconButton,\n FsRowInlineButtonContentComponent,\n ],\n})\nexport class FsRowInlineIconButtonComponent {\n\n @Input()\n public rowAction: RowAction;\n\n @Input()\n public row: Row;\n\n @Output()\n public clicked = new EventEmitter();\n\n @Output()\n public fileSelect = new EventEmitter<FsFile | FsFile[]>();\n\n public actionClick(event: Event): void {\n this.clicked.emit(event);\n }\n\n public fileSelected(event: FsFile | FsFile[]): void {\n this.fileSelect.emit(event);\n }\n}\n\n","<button\n type=\"button\"\n mat-icon-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <fs-list-row-inline-button-content\n [rowAction]=\"rowAction\"\n [row]=\"row\"\n (fileSelect)=\"fileSelected($event)\">\n </fs-list-row-inline-button-content>\n</button>","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\n\nimport { MatIconAnchor } from '@angular/material/button';\n\n\nimport { Row } from '../../../../../models/row';\nimport { RowAction } from '../../../../../models/row-action.model';\nimport { FsRowInlineButtonContentComponent } from '../button-content/button-content.component';\n\n\n@Component({\n selector: 'fs-list-row-inline-icon-link',\n templateUrl: './icon-link.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n RouterLink,\n MatIconAnchor,\n FsRowInlineButtonContentComponent,\n ],\n})\nexport class FsRowInlineIconLinkComponent {\n\n @Input()\n public rowAction: RowAction;\n\n @Input()\n public row: Row;\n\n}\n\n","@if (rowAction?.routerLink) {\n <a\n mat-icon-button\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <fs-list-row-inline-button-content\n [rowAction]=\"rowAction\"\n [row]=\"row\">\n </fs-list-row-inline-button-content>\n </a>\n}","import { AsyncPipe, NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\n\nimport {\n MatAnchor,\n MatButton,\n MatFabAnchor,\n MatFabButton,\n MatMiniFabAnchor,\n MatMiniFabButton,\n} from '@angular/material/button';\n\nimport { FsFile } from '@firestitch/file';\n\nimport { ActionType } from '../../../../enums/action-type.enum';\nimport { Row } from '../../../../models/row';\nimport { RowAction } from '../../../../models/row-action.model';\n\nimport { FsRowInlineButtonContentComponent } from './button-content/button-content.component';\nimport { FsRowInlineIconButtonComponent } from './icon-button/icon-button.component';\nimport { FsRowInlineIconLinkComponent } from './icon-link/icon-link.component';\n\n\n@Component({\n selector: 'fs-list-row-inline-action',\n styleUrls: ['./inline-action.component.scss'],\n templateUrl: './inline-action.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgClass,\n MatAnchor,\n RouterLink,\n MatButton,\n MatFabButton,\n MatFabAnchor,\n MatMiniFabButton,\n MatMiniFabAnchor,\n AsyncPipe,\n FsRowInlineButtonContentComponent,\n FsRowInlineIconButtonComponent,\n FsRowInlineIconLinkComponent,\n ],\n})\nexport class FsRowInlineActionComponent implements OnInit {\n\n @Input()\n public rowAction: RowAction;\n\n @Input()\n public row: Row;\n\n @Output()\n public clicked = new EventEmitter();\n\n @Output()\n public fileSelect = new EventEmitter<FsFile | FsFile[]>();\n\n public actionClick(event: Event): void {\n this.clicked.emit(event);\n }\n\n public ngOnInit(): void {\n if(!this.rowAction.label && this.rowAction.icon) {\n this.rowAction.type = ActionType.Icon;\n }\n }\n\n public fileSelected(event: FsFile | FsFile[]): void {\n this.fileSelect.emit(event);\n }\n}\n","@if (rowAction?.visible$ | async) {\n @switch (rowAction.type) {\n <!-- Basic button -->\n @case ('basic') {\n @if (!rowAction.routerLink) {\n <button\n type=\"button\"\n mat-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <fs-list-row-inline-button-content\n [rowAction]=\"rowAction\"\n [row]=\"row\"\n (fileSelect)=\"fileSelected($event)\">\n </fs-list-row-inline-button-content>\n </button>\n } @else {\n <a\n mat-button\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <fs-list-row-inline-button-content\n [rowAction]=\"rowAction\"\n [row]=\"row\"\n (fileSelect)=\"fileSelected($event)\">\n </fs-list-row-inline-button-content>\n </a>\n }\n }\n <!-- Raised button -->\n @case ('raised') {\n @if (!rowAction.routerLink) {\n <button\n type=\"button\"\n mat-raised-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <fs-list-row-inline-button-content\n [rowAction]=\"rowAction\"\n [row]=\"row\"\n (fileSelect)=\"fileSelected($event)\">\n </fs-list-row-inline-button-content>\n </button>\n } @else {\n <a\n mat-raised-button\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <fs-list-row-inline-button-content\n [rowAction]=\"rowAction\"\n [row]=\"row\"\n (fileSelect)=\"fileSelected($event)\">\n </fs-list-row-inline-button-content>\n </a>\n }\n }\n <!-- Icon button -->\n @case ('icon') {\n @if (!rowAction.routerLink) {\n <fs-list-row-inline-icon-button\n [rowAction]=\"rowAction\"\n [row]=\"row\"\n (clicked)=\"actionClick($event)\"\n (fileSelect)=\"fileSelected($event)\">\n </fs-list-row-inline-icon-button>\n } @else {\n <fs-list-row-inline-icon-link\n [rowAction]=\"rowAction\"\n [row]=\"row\">\n </fs-list-row-inline-icon-link>\n }\n }\n <!-- Fab button -->\n @case ('fab') {\n @if (!rowAction.routerLink) {\n <button\n type=\"button\"\n mat-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <fs-list-row-inline-button-content\n [rowAction]=\"rowAction\"\n [row]=\"row\"\n (fileSelect)=\"fileSelected($event)\">\n </fs-list-row-inline-button-content>\n </button>\n } @else {\n <a\n mat-fab\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <fs-list-row-inline-button-content\n [rowAction]=\"rowAction\"\n [row]=\"row\"\n (fileSelect)=\"fileSelected($event)\">\n </fs-list-row-inline-button-content>\n </a>\n }\n }\n <!-- Mini Fab button -->\n @case ('mini-fab') {\n @if (!rowAction.routerLink) {\n <button\n type=\"button\"\n mat-mini-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <fs-list-row-inline-button-content\n [rowAction]=\"rowAction\"\n [row]=\"row\"\n (fileSelect)=\"fileSelected($event)\">\n </fs-list-row-inline-button-content>\n </button>\n } @else {\n <a\n mat-mini-fab\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <fs-list-row-inline-button-content\n [rowAction]=\"rowAction\"\n [row]=\"row\"\n (fileSelect)=\"fileSelected($event)\">\n </fs-list-row-inline-button-content>\n </a>\n }\n }\n }\n}","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, inject } from '@angular/core';\n\nimport { MatIcon } from '@angular/material/icon';\n\nimport { FsFileModule } from '@firestitch/file';\nimport { FsMenuComponent } from '@firestitch/menu';\n\nimport { FsListRowActionFile } from '../../../../interfaces/listconfig.interface';\nimport { Row } from '../../../../models/row';\nimport { RowAction } from '../../../../models/row-action.model';\nimport { ActionLabelPipe } from '../../../../pipes/action-label';\n\n\n@Component({\n selector: 'fs-list-row-menu-action',\n templateUrl: './menu-action.component.html',\n styleUrl: './menu-action.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatIcon,\n FsFileModule,\n ActionLabelPipe,\n ],\n})\nexport class FsRowMenuActionComponent implements OnInit, OnChanges {\n\n @Input()\n public row: Row;\n\n @Input()\n public rowAction: RowAction;\n\n @Input()\n public file: FsListRowActionFile;\n\n @Output()\n public fileSelect = new EventEmitter();\n\n @Output()\n public fileError = new EventEmitter();\n\n public icon: string;\n public label: string;\n\n private _menu = inject(FsMenuComponent);\n \n public ngOnChanges(changes: SimpleChanges): void {\n if(changes.row) {\n this.icon = this.rowAction.getRowIcon(this.row.data);\n }\n }\n\n public selectFile(event): void {\n this.fileSelect.emit(event);\n this.closeMenu();\n }\n\n public errorFile(event): void {\n this.fileError.emit(event);\n this.closeMenu();\n }\n\n public closeMenu(): void {\n this._menu.closeMenu();\n }\n\n public ngOnInit(): void {\n this.label = this.rowAction.label;\n }\n}\n","@if (!file) {\n @if (icon) {\n <mat-icon>\n {{ icon }}\n </mat-icon>\n }\n {{ label| actionLabel:row }}\n} @else {\n <fs-file\n class=\"action-button\"\n [accept]=\"file.accept || '*'\"\n [multiple]=\"file.multiple\"\n [minWidth]=\"file.minWidth\"\n [minHeight]=\"file.minHeight\"\n [imageWidth]=\"file.maxWidth\"\n [imageHeight]=\"file.maxHeight\"\n (click)=\"$event.stopPropagation();\"\n (select)=\"selectFile($event)\"\n (error)=\"errorFile($event)\"\n (cancel)=\"closeMenu()\">\n @if (icon) {\n <mat-icon>\n {{ icon }}\n </mat-icon>\n }\n {{ label| actionLabel:row }}\n </fs-file>\n}","import { AsyncPipe, NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, inject } from '@angular/core';\n\nimport { MatIcon } from '@angular/material/icon';\n\nimport { FsMenuModule } from '@firestitch/menu';\nimport { FsPrompt } from '@firestitch/prompt';\n\nimport { Observable, Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { Row } from '../../../../models/row';\nimport { RowAction } from '../../../../models/row-action.model';\nimport { ActionLabelPipe } from '../../../../pipes/action-label';\nimport { FsRowInlineActionComponent } from '../inline-action/inline-action.component';\nimport { FsRowMenuActionComponent } from '../menu-action/menu-action.component';\n\n\n@Component({\n selector: 'fs-list-row-actions',\n templateUrl: './actions.component.html',\n styleUrls: ['./actions.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FsRowInlineActionComponent,\n NgClass,\n FsMenuModule,\n FsRowMenuActionComponent,\n MatIcon,\n ActionLabelPipe,\n AsyncPipe,\n ],\n})\nexport class FsRowActionsComponent {\n\n @Input()\n public row: Row;\n\n @Input()\n public index: number;\n\n @Input()\n public restoreMode = false;\n\n @Input()\n public rowActions: RowAction[] = [];\n\n @Input()\n public rowRemoved: EventEmitter<any>;\n\n @Input()\n public menuRowActions: RowAction[] = [];\n\n @Input()\n public inlineRowActions: RowAction[] = [];\n\n @Input()\n public restoreAction: RowAction;\n\n private _destroy$ = new Subject();\n private _prompt = inject(FsPrompt);\n\n\n public actionClick(action: RowAction, row: any, event: any, menuRef?) {\n if (action.remove) {\n if (\n action.remove instanceof Object\n ) {\n this._prompt.confirm({\n title: action.remove.title,\n template: action.remove.template,\n autofocus: true,\n })\n .pipe(\n take(1),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._removeAction(action, row.data, event, this.index);\n });\n } else {\n this._removeAction(action, row.data, event, this.index);\n\n }\n } else {\n action.click(row.data, event, this.index, menuRef);\n }\n }\n\n /**\n * Track By for improve change detection\n *\n * @param index\n */\n public trackByFn(index) {\n return index;\n }\n\n /**\n * Emit that some row must be removed\n *\n * @param action\n * @param row\n * @param event\n * @param index\n */\n private _removeAction(action, row, event, index) {\n const removeObservable = action.click(row, event, index);\n\n if (removeObservable && removeObservable instanceof Observable) {\n removeObservable\n .pipe(\n take(1),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.rowRemoved.emit(row);\n });\n } else {\n this.rowRemoved.emit(row);\n }\n }\n}\n","@if (!restoreMode || (restoreMode && !restoreAction)) {\n @for (action of inlineRowActions; track trackByFn($index)) {\n <fs-list-row-inline-action\n class=\"row-inline-action row-inline-action-{{action.type}}\"\n [rowAction]=\"action\"\n [row]=\"row\"\n [ngClass]=\"{ 'mobile-hide': action.menu === undefined }\"\n (clicked)=\"actionClick(action, row, $event)\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\">\n </fs-list-row-inline-action>\n }\n}\n<!-- Menu -->\n@if (menuRowActions.length || (restoreMode && restoreAction)) {\n <fs-menu\n class=\"row-menu-action\"\n #menuRef>\n <!-- Case when we have usual menu actions -->\n @if (!restoreMode || (restoreMode && !restoreAction)) {\n @for (action of inlineRowActions; track trackByFn($index)) {\n <ng-template\n class=\"hidden-mobile-menu-action\"\n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"action.menu !== undefined && (action.hidden$ | async)\">\n <fs-list-row-menu-action\n [rowAction]=\"action\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n }\n @for (action of menuRowActions; track trackByFn($index)) {\n @if (action.isGroup) {\n <fs-menu-group [label]=\"action.label | actionLabel:row\">\n @for (subAction of action.rowActions; track subAction) {\n <ng-template\n fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [target]=\"subAction.routerLink?.target\"\n [hidden]=\"subAction.hidden$ | async\"\n [class]=\"subAction.className\"\n (click)=\"actionClick(subAction, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [rowAction]=\"subAction\"\n [row]=\"row\"\n [file]=\"subAction.fileConfig\"\n (fileSelect)=\"subAction.fileConfig.select($event, row, index)\"\n (fileError)=\"subAction.fileConfig.error && subAction.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n }\n </fs-menu-group>\n } @else {\n <ng-template\n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"action.hidden$ | async\"\n [class]=\"action.className\"\n (click)=\"actionClick(action, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [rowAction]=\"action\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n }\n }\n }\n <!-- Case when we have restore mode enabled and must hide menu actions -->\n @if (restoreMode && restoreAction) {\n <ng-template\n fs-menu-item\n (click)=\"actionClick(restoreAction, row, $event, menuRef)\">\n @if (restoreAction.icon) {\n <mat-icon>\n {{ restoreAction.icon }}\n </mat-icon>\n }\n {{ restoreAction.label | actionLabel:row }}\n </ng-template>\n }\n </fs-menu>\n}","import { BehaviorSubject } from 'rxjs';\n\nexport class ColumnAsyncAttribute<T> extends BehaviorSubject<T> {\n\n constructor(value: T) {\n super(Object.freeze(value));\n }\n\n public next(value: T): void {\n const newValue = value;\n const oldValue = this.getValue();\n\n if (newValue !== oldValue) {\n super.next(Object.freeze(value));\n }\n }\n}\n","import { Observable } from 'rxjs';\n\nimport { ColumnAsyncAttribute } from './column-async-attribute';\n\nexport class ColumnAttributes {\n\n private _title: string;\n private _name: string;\n private _customizable = true;\n private _sortable: boolean;\n private _sortableDefault: boolean;\n private _direction$ = new ColumnAsyncAttribute(null);\n private _align: string;\n private _width: string;\n private _className: string | string[];\n private _visible$ = new ColumnAsyncAttribute(true);\n\n constructor(attrs: { [key: string]: any } = {}) {\n this._init(attrs);\n }\n\n // title\n public set title(value: string) {\n this._title = value;\n }\n\n public get title(): string {\n return this._title;\n }\n\n // name\n public set name(value: string) {\n this._name = value;\n }\n\n public get name(): string {\n return this._name;\n }\n\n // customize\n public set customizable(value: boolean) {\n this._customizable = value;\n }\n\n public get customizable(): boolean {\n return this._customizable;\n }\n\n // sortable\n public set sortable(value: boolean) {\n this._sortable = value;\n }\n\n public get sortable(): boolean {\n return this._sortable;\n }\n\n // sortableDefault\n public set sortableDefault(value: boolean) {\n this._sortableDefault = value;\n\n if (this.sortableDefault) {\n this.sortable = true;\n }\n }\n\n public get sortableDefault(): boolean {\n return this._sortableDefault;\n }\n\n // direction\n public set direction(value: 'asc' | 'desc') {\n this.sortable = true;\n \n this._direction$.next(value);\n }\n\n public get direction(): 'asc' | 'desc' {\n return this._direction$.value;\n }\n\n public get direction$(): Observable<'asc' | 'desc'> {\n return this._direction$.asObservable();\n }\n\n // align\n public set align(value: string) {\n this._align = value;\n }\n\n public get align(): string {\n return this._align;\n }\n\n // width\n public set width(value: string) {\n this._width = value;\n }\n\n public get width(): string {\n return this._width;\n }\n\n // className\n public set className(value: string | string[]) {\n this._className = value;\n }\n\n public get className(): string | string[] {\n return this._className;\n }\n\n // visibility\n public set visible(value: boolean) {\n this._visible$.next(value);\n }\n\n public get visible(): boolean {\n return this._visible$.getValue();\n }\n\n public get visible$(): Observable<boolean> {\n return this._visible$.asObservable();\n }\n\n private _init(attrs: { [key: string]: any }) {\n Object.keys(attrs)\n .forEach((key) => {\n switch (key) {\n case 'title': { this.title = attrs[key]; } break;\n case 'name': { this.name = attrs[key]; } break;\n case 'align': { this.align = attrs[key]; } break;\n case 'direction': { this.direction = attrs[key]; } break;\n case 'sortable': { this.sortable = attrs[key]; } break;\n case 'show': { this.visible = attrs[key]; } break;\n case 'visible': { this.visible = attrs[key]; } break;\n }\n });\n }\n}\n","import { isString } from 'lodash-es';\n\nexport class StyleConfig {\n public colspan;\n public align: string; // Can't be used in tempaltes!\n public className: string | string[] = []; // Can't be used in tempaltes!\n\n public classesArray = []; // Can be used in tempaltes\n public classesString = '';\n\n constructor(config = {}) {\n this._init(config);\n }\n\n /**\n * Create static array of styles for using in templates\n */\n public updateClasesArray() {\n this.classesArray = [].concat(this.className, this.align);\n this.classesString = [].concat(this.className, this.align).join(' ');\n }\n\n /**\n * Prioritized merge for align options\n * @param prior1\n * @param prior2\n */\n public mergeAlignByPriority(prior1: StyleConfig, prior2: StyleConfig) {\n let targetValue = this.align;\n\n if (targetValue === void 0) {\n if (prior1 && prior1.align !== void 0) {\n targetValue = prior1.align;\n } else if (prior2 && prior2.align !== void 0) {\n targetValue = prior2.align;\n } else {\n targetValue = 'left';\n }\n }\n\n this.align = targetValue;\n }\n\n /**\n * Prioritized merge for class options\n * @param prior1\n * @param prior2\n */\n public mergeClassByPriority(prior1: StyleConfig, prior2: StyleConfig) {\n let targetValue = [];\n\n if (Array.isArray(this.className)) {\n targetValue = targetValue.concat(this.className);\n } else if (isString(this.className)) {\n targetValue.push(this.className);\n }\n\n if (prior1 && prior1.className !== void 0) {\n this.mergeAnythingIntoArray(targetValue, prior1.className);\n } else if (prior2 && prior2.className !== void 0) {\n this.mergeAnythingIntoArray(targetValue, prior2.className);\n }\n\n this.className = targetValue;\n }\n\n private _init(config) {\n this.colspan = config.colspan;\n this.align = config.align;\n this.className = config.className;\n }\n\n /**\n * Merge params into array\n * @param to\n * @param from\n */\n private mergeAnythingIntoArray(to: string[], from: string | string[]) {\n if (isString(from)) {\n to.push(from as string);\n } else if (Array.isArray(from)) {\n to.push(...from)\n }\n }\n}\n","import { QueryList, TemplateRef } from '@angular/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { isBoolean, isObject } from 'lodash-es';\n\nimport { FsListGroupExpandTriggerDirective } from '../directives/group-expand-trigger/group-expand-trigger.directive';\nimport { ListColumnConfig } from '../interfaces/column-config.interface';\n\nimport { ColumnAttributes } from './column-attributes';\nimport { StyleConfig } from './styleConfig.model';\n\nexport enum SortingDirection {\n asc = 'asc',\n desc = 'desc'\n}\n\nconst allowedDefaults = [\n 'title',\n 'sortable',\n 'align',\n 'class',\n];\n\nexport class Column {\n\n public headerTemplate: TemplateRef<any>;\n public groupHeaderTemplate: TemplateRef<any>;\n public groupFooterTemplate: TemplateRef<any>;\n public cellTemplate: TemplateRef<any>;\n public footerTemplate: TemplateRef<any>;\n public expandTrigger: QueryList<FsListGroupExpandTriggerDirective>;\n public headerConfigs: StyleConfig = new StyleConfig();\n public groupHeaderConfigs: StyleConfig = new StyleConfig();\n public groupFooterConfigs: StyleConfig = new StyleConfig();\n public cellConfigs: StyleConfig = new StyleConfig();\n public footerConfigs: StyleConfig = new StyleConfig();\n public colStyles: StyleConfig;\n public headerColspanned = false;\n public groupHeaderColspanned = false;\n public groupFooterColspanned = false;\n public cellColspanned = false;\n public footerColspanned = false;\n\n private _attributes: ColumnAttributes;\n private _defaultDirection: 'asc' | 'desc';\n private _ordered$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n colConfig: ListColumnConfig, \n colDefaults: any = false,\n ) {\n this._parseConfig(colConfig);\n\n this.colStyles = new StyleConfig({\n className: this._attributes.className,\n align: this._attributes.align,\n });\n\n this.mergeWithColumnDefaults(colDefaults);\n }\n\n public set title(value: string) {\n this._attributes.title = value;\n }\n\n public get title(): string {\n return this._attributes.title;\n }\n\n public get name(): string {\n return this._attributes.name;\n }\n\n public get customizable(): boolean {\n return this._attributes.customizable;\n }\n\n public get width(): string {\n return this._attributes.width;\n }\n\n public set sortable(value: boolean) {\n this._attributes.sortable = value;\n }\n\n public get sortable(): boolean {\n return this._attributes.sortable;\n }\n\n public get sortableDefault(): boolean {\n return this._attributes.sortableDefault;\n }\n\n public set sortingDirection(value: 'asc' | 'desc') {\n this._attributes.direction = value;\n }\n\n public get sortingDirection(): 'asc' | 'desc' {\n return this._attributes.direction;\n }\n\n public get sortingDirection$(): Observable<'asc' | 'desc'> {\n return this._attributes.direction$;\n }\n\n public get visible(): boolean {\n return this._attributes.visible;\n }\n\n public get visible$(): Observable<boolean> {\n return this._attributes.visible$;\n }\n\n public get direction() {\n return (this.sortingDirection === SortingDirection.asc) ? 'asc' : 'desc';\n }\n\n public get fullNameDirection() {\n return (this.sortingDirection === SortingDirection.asc) ? 'Ascending' : 'Descending';\n }\n\n public get ordered$(): Observable<boolean> {\n return this._ordered$.asObservable();\n }\n\n public get ordered() {\n return this._ordered$.getValue();\n }\n\n public set ordered(value) {\n if (value && this._ordered$.getValue() !== value) {\n this.sortingDirection = this._defaultDirection ?? SortingDirection.asc;\n }\n\n this._ordered$.next(value);\n }\n\n /**\n * Merge with defaults with existing config\n *\n * @param defaults\n */\n public mergeWithColumnDefaults(defaults) {\n if (!isObject(defaults)) {\n defaults = {};\n }\n\n allowedDefaults\n .forEach((key) => {\n switch (key) {\n case 'title': {\n this.title = this.title || defaults.title;\n } break;\n\n case 'sortable': {\n if (isBoolean(defaults.sortable)) {\n if (this.sortable === undefined) {\n this.sortable = defaults.sortable;\n }\n }\n } break;\n\n case 'class': {\n this.headerConfigs.mergeClassByPriority(this.colStyles, defaults.header);\n this.groupHeaderConfigs.mergeClassByPriority(this.colStyles, defaults.cell);\n this.groupFooterConfigs.mergeClassByPriority(this.colStyles, defaults.cell);\n this.cellConfigs.mergeClassByPriority(this.colStyles, defaults.cell);\n this.footerConfigs.mergeClassByPriority(this.colStyles, defaults.footer);\n } break;\n\n case 'align': {\n this.headerConfigs.mergeAlignByPriority(this.colStyles, defaults.header);\n this.groupHeaderConfigs.mergeAlignByPriority(this.colStyles, defaults.cell);\n this.groupFooterConfigs.mergeAlignByPriority(this.colStyles, defaults.cell);\n this.cellConfigs.mergeAlignByPriority(this.colStyles, defaults.cell);\n this.footerConfigs.mergeAlignByPriority(this.colStyles, defaults.footer);\n } break;\n }\n });\n\n this.headerConfigs.updateClasesArray();\n this.groupHeaderConfigs.updateClasesArray();\n this.groupFooterConfigs.updateClasesArray();\n this.cellConfigs.updateClasesArray();\n this.footerConfigs.updateClasesArray();\n }\n\n /**\n * Change sorting direction\n */\n public changeDirection() {\n this.sortingDirection = this.sortingDirection === SortingDirection.asc ? SortingDirection.desc : SortingDirection.asc;\n }\n\n public updateVisibility(value: boolean) {\n this._attributes.visible = value;\n }\n\n public updateCustomizable(value: boolean) {\n this._attributes.customizable = value;\n }\n\n private _parseConfig(config: ListColumnConfig) {\n this._attributes = config.attributes;\n\n this.headerTemplate = config.headerTemplate;\n this.groupHeaderTemplate = config.groupHeaderTemplate;\n this.groupFooterTemplate = config.groupFooterTemplate;\n this.cellTemplate = config.cellTemplate;\n this.footerTemplate = config.footerTemplate;\n this.headerConfigs = new StyleConfig(config.headerConfigs);\n this.groupHeaderConfigs = new StyleConfig(config.groupHeaderConfigs);\n this.groupFooterConfigs = new StyleConfig(config.groupFooterConfigs);\n this.cellConfigs = new StyleConfig(config.cellConfigs);\n this.footerConfigs = new StyleConfig(config.footerConfigs);\n this.expandTrigger = config.expandTrigger;\n this._defaultDirection = config.attributes.direction;\n }\n}\n","import { TemplateRef } from '@angular/core';\n\n\nexport class ColumnsColumn {\n\n public template?: TemplateRef<any>;\n public name?: string;\n public show?: boolean;\n public title?: string;\n public disabled?: boolean;\n\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n effect,\n HostBinding,\n input,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n TemplateRef,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { skip, takeUntil } from 'rxjs/operators';\n\nimport { isChildTypeRow, isGroupFooterRow, isGroupRow, Row } from '../../../../models';\nimport { Column } from '../../../../models/column.model';\nimport { BaseRow } from '../../../../models/row/_base-row';\n\n\n@Component({\n selector: '[fs-cell]',\n templateUrl: './cell.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgTemplateOutlet],\n})\nexport class FsCellComponent implements OnInit, OnChanges, OnDestroy {\n\n @HostBinding('class.fs-list-col') public isColl = true;\n\n @HostBinding('attr.role') public role = 'gridcell';\n\n @Input() public column: Column;\n @Input() public rowIndex: number;\n public row = input<Row>();\n\n public cellContext: any = {};\n public cellTemplate: TemplateRef<any>;\n\n private _destroy$ = new Subject<void>();\n\n constructor() {\n effect(() => {\n const currentRow = this.row();\n\n if (currentRow) {\n this.cellContext.groupIndex = currentRow.index;\n }\n });\n }\n\n public ngOnInit() {\n this._listenRowDataChange();\n this._listenGroupOpen();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes.rowIndex?.currentValue !== changes.rowIndex?.previousValue) {\n this.cellContext.index = this.rowIndex;\n this.cellContext.groupIndex = this.row().index;\n }\n\n if (changes.column?.currentValue !== changes.column?.previousValue) {\n this._initCellContext();\n this._initCellTemplate();\n }\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n private _initCellContext() {\n const currentRow = this.row();\n\n this.cellContext.index = this.rowIndex;\n\n if (currentRow) {\n if (isGroupRow(currentRow)) {\n this.cellContext.groupIndex = currentRow.index;\n } else if (isChildTypeRow(currentRow)) {\n this.cellContext.groupIndex = currentRow.index;\n this.cellContext.groupRow = currentRow.parent.data;\n this.cellContext.group = currentRow.parent.data;\n }\n\n if (isGroupRow(currentRow)) {\n this.cellContext.group = currentRow.data;\n this.cellContext.groupChildren = currentRow.children\n .map((child) => child.data);\n } else if (isGroupFooterRow(currentRow)) {\n this.cellContext.group = currentRow.parent.data;\n this.cellContext.groupIndex = currentRow.index;\n this.cellContext.groupChildren = currentRow.parent.children\n .map((child) => child.data);\n }\n }\n\n this.cellContext.column = this.column;\n if (currentRow) {\n this.cellContext.$implicit = currentRow.data;\n this.cellContext.row = currentRow.data;\n this.cellContext.value = currentRow.data[this.column.name];\n\n if (isGroupRow(currentRow)) {\n this.cellContext.expanded = currentRow.expanded;\n }\n }\n }\n\n private _listenRowDataChange() {\n const currentRow = this.row();\n if(currentRow instanceof BaseRow) {\n currentRow.data$\n .pipe(\n skip(1),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._initCellContext();\n });\n }\n }\n\n private _initCellTemplate() {\n const currentRow = this.row();\n\n if (currentRow && isGroupRow(currentRow)) {\n this.cellTemplate = this.column.groupHeaderTemplate || this.column.cellTemplate;\n } else if (currentRow && isGroupFooterRow(currentRow)) {\n this.cellTemplate = this.column.groupFooterTemplate || this.column.cellTemplate;\n } else {\n this.cellTemplate = this.column.cellTemplate;\n }\n }\n\n private _listenGroupOpen() {\n const currentRow = this.row();\n\n if (currentRow && isGroupRow(currentRow)) {\n currentRow.expanded$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((status) => {\n this.cellContext.expanded = status;\n });\n }\n }\n}\n","<ng-template [ngTemplateOutlet]=\"cellTemplate || defaultCellTemplate\" [ngTemplateOutletContext]=\"cellContext\"></ng-template>\r\n\r\n<ng-template #defaultCellTemplate let-value=\"value\">\r\n {{value}}\r\n</ng-template>\r\n","import { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component,\n ElementRef, EventEmitter, HostBinding, Input,\n OnDestroy, OnInit, Renderer2,\n computed, inject, input,\n} from '@angular/core';\n\nimport { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';\nimport { MatIcon } from '@angular/material/icon';\n\nimport { Subject, merge } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n ReorderPosition,\n ReorderStrategy,\n} from '../../../classes/reorder-controller';\nimport { SelectionController } from '../../../classes/selection-controller';\nimport { FsListDraggableListDirective } from '../../../directives/draggable-list/draggable-list.directive';\nimport { FsListRowClassOptions } from '../../../interfaces';\nimport { Column } from '../../../models/column.model';\nimport { Row, isChildRow, isChildTypeRow, isGroupFooterRow, isGroupRow } from '../../../models/row';\nimport { RowAction } from '../../../models/row-action.model';\n\nimport { FsRowActionsComponent } from './actions/actions.component';\nimport { FsCellComponent } from './cell/cell.component';\n\n\n@Component({\n selector: '[fs-list-row]',\n templateUrl: './row.component.html',\n styleUrls: ['./row.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'this.rowCustomClass()',\n },\n standalone: true,\n imports: [\n NgTemplateOutlet,\n MatCheckbox,\n FsCellComponent,\n NgClass,\n FsRowActionsComponent,\n MatIcon,\n AsyncPipe,\n ],\n})\nexport class FsRowComponent \nimplements OnInit, AfterViewInit, OnDestroy {\n\n @HostBinding('attr.role')\n public role = 'row';\n\n public row = input<Row>();\n\n @Input() public rowActionsRaw: any[] = [];\n @Input() public groupActionsRaw: any[] = [];\n @Input() public hasRowActions = false;\n @Input() public rowEvents: any = {};\n @Input() public rowClass;\n @Input() public restoreMode = false;\n @Input() public rowIndex: number;\n @Input() public columns: Column[];\n @Input() public selection: SelectionController;\n @Input() public rowRemoved: EventEmitter<any>;\n @Input() public activeFiltersCount: number;\n\n @Input()\n @HostBinding('class.drag-row')\n public reorderEnabled: boolean;\n\n @Input() public reorderPosition: ReorderPosition | null;\n @Input() public reorderStrategy: ReorderStrategy | null;\n @Input() public reorderMultiple: boolean;\n\n public readonly ReorderPosition = ReorderPosition;\n public readonly ReorderStrategy = ReorderStrategy;\n public rowActions: RowAction[] = [];\n public menuRowActions: RowAction[] = [];\n public inlineRowActions: RowAction[] = [];\n public restoreAction: RowAction;\n public selected = false;\n public indeterminateSelected: boolean | 'indeterminate' = false;\n\n public isGroupRow = computed(() => {\n return isGroupRow(this.row());\n });\n\n public isGroupFooterRow = computed(() => {\n return isGroupFooterRow(this.row());\n });\n\n public dragCellVisible = computed(() => {\n return !isGroupRow(this.row());\n });\n\n public rowCustomClass = computed(() => {\n if (!this.row()) {\n return;\n }\n\n let classes = ['fs-list-row'];\n\n if (this.rowIndex % 2 !== 0) {\n classes.push('fs-list-row-odd');\n }\n if (this.rowIndex % 2 === 0) {\n classes.push('fs-list-row-even');\n }\n\n if (isGroupRow(this.row())) {\n classes.push('fs-list-row-group');\n } else if (isChildRow(this.row())) {\n classes.push('fs-list-row-group-child');\n } else if (isGroupFooterRow(this.row())) {\n classes.push('fs-list-row-group-footer');\n } else {\n classes.push('fs-list-row-body');\n }\n\n if(this.rowEvents?.click) {\n classes.push('fs-list-row-clickable');\n }\n\n if (this.rowClass) {\n classes = [\n ...classes,\n ...this._getRowClasses(this.rowClass),\n ];\n }\n\n return classes.join(' ');\n });\n\n private _eventListeners = [];\n private _destroy$ = new Subject();\n private _el = inject(ElementRef);\n private _cdRef = inject(ChangeDetectorRef);\n private _renderer = inject(Renderer2);\n private _draggableList = inject(FsListDraggableListDirective, { optional: true });\n\n public get isDragDisabled(): boolean {\n return !this.selected && this.reorderMultiple && !!this.selection.selectedRows.size;\n }\n\n @HostBinding('class.multiple-selection')\n public get isMultipleSelection() {\n const multiple = this.reorderMultiple;\n\n return multiple && this.selected;\n }\n\n public get leftDragDropEnabled(): boolean {\n return this.reorderEnabled\n && this.reorderPosition === ReorderPosition.Left\n && this.activeFiltersCount === 0;\n }\n\n public get rightDragDropEnabled(): boolean {\n return this.reorderEnabled\n && this.reorderPosition === ReorderPosition.Right\n && this.activeFiltersCount === 0;\n }\n\n public ngOnInit() {\n if (this.row()) {\n this._initRowActions();\n this._initRowEvents();\n }\n }\n\n public ngAfterViewInit(): void {\n this._initSelection();\n }\n\n public updateRowActions() {\n this.rowActions\n .forEach((action) => {\n action.checkShowStatus(this.row().data, this.rowIndex);\n action.updateLink(this.row().data);\n });\n \n this._filterActionsByCategories();\n }\n\n public ngOnDestroy() {\n this._eventListeners.forEach((listener) => {\n listener();\n });\n\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n /**\n * Select row by checkbox\n *\n * @param event\n */\n public selectRow(event: MatCheckboxChange) {\n this.selection.rowSelectionChange(this.row(), event.checked);\n this._cdRef.markForCheck();\n }\n\n /**\n * Track By for improve change detection\n *\n * @param index\n */\n public trackByFn(index) {\n return index;\n }\n\n public dragStart(event) {\n if (this.reorderEnabled && !this.isDragDisabled) {\n event.preventDefault();\n event.stopPropagation();\n\n this._draggableList.dragStart(this._el.nativeElement);\n }\n }\n\n private _initRowEvents() {\n Object.keys(this.rowEvents || {})\n .forEach((event) => {\n const listener = this._renderer\n .listen(this._el.nativeElement, event, (evt) => {\n this.rowEvents[event]({\n event: evt,\n row: this.row().data,\n rowIndex: this.rowIndex,\n });\n });\n\n this._eventListeners.push(listener);\n });\n }\n\n private _initRowActions() {\n if(isGroupRow(this.row())) {\n if (this.row() && this.groupActionsRaw) {\n this.rowActions = this.groupActionsRaw.map((action) => new RowAction(action));\n\n this._filterActionsByCategories();\n }\n } else if (this.rowActionsRaw) {\n this.rowActions = this.rowActionsRaw.map((action) => new RowAction(action));\n\n this._filterActionsByCategories();\n }\n\n merge(\n this.row().data$, \n this.row().actionsUpdated$,\n )\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.updateRowActions();\n this._cdRef.markForCheck();\n });\n }\n\n private _getRowClasses(rowClass): string[] {\n const classes = [];\n const currentRow = this.row();\n const options: FsListRowClassOptions = {\n index: this.rowIndex,\n type: currentRow.type,\n };\n\n if (isGroupRow(currentRow)) {\n options.groupIndex = currentRow.index;\n } else if (isChildTypeRow(currentRow)) {\n options.groupIndex = currentRow.parent.index;\n }\n\n const resultClass = rowClass(this.row().data, options);\n if(resultClass) {\n if (typeof resultClass === 'string') {\n classes.push(resultClass);\n } else if (typeof resultClass === 'object') {\n const keys = Object.keys(resultClass);\n for (const k of keys) {\n if (resultClass[k] === true) {\n classes.push(k);\n }\n }\n }\n }\n\n return classes;\n }\n\n /**\n * Subscribe to selection change events\n */\n private _initSelection() {\n if (this.selection && this.row()) {\n this.selected = this.selection.isRowSelected(this.row().data);\n\n this.selection.selectionChange$\n .pipe(\n // // Would like to respond only when checkbox on top is changed\n // // or was clicked \"Select All\" in selection dialog\n // filter(({type}) => {\n // return type === SelectionChangeType.AllVisibleSelectionChange\n // || type === SelectionChangeType.SelectedAll;\n // }),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n const currentRow = this.row();\n\n this.selected = currentRow && this.selection.isRowSelected(currentRow.data);\n\n if (isGroupRow(currentRow)) {\n const groupSelection = this.selection.isGroupSelected(currentRow);\n\n if (groupSelection === 'indeterminate') {\n this.selected = true;\n this.indeterminateSelected = true;\n } else {\n this.selected = groupSelection;\n this.indeterminateSelected = false;\n }\n }\n\n this._cdRef.markForCheck();\n });\n }\n }\n\n private _filterActionsByCategories() {\n this.menuRowActions = [];\n this.inlineRowActions = [];\n this.restoreAction = null;\n\n this.rowActions.forEach((action) => {\n\n if (!action.visible) {\n return;\n }\n\n if (action.menu && !action.restore) {\n this.menuRowActions.push(action);\n } else if (!action.menu && !action.restore) {\n this.inlineRowActions.push(action);\n } else if (action.restore) {\n this.restoreAction = action;\n }\n });\n }\n}\n","<!-- Drag -->\n@if (leftDragDropEnabled) {\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\n}\n<!-- Selection -->\n@if (selection && (selection.enabled$ | async)) {\n <td class=\"fs-list-col fs-list-col-selection\">\n @if (!isGroupFooterRow()) {\n <mat-checkbox\n (change)=\"selectRow($event)\"\n [disabled]=\"!selection.selectable(row(), rowIndex)\"\n [checked]=\"selected\"\n [indeterminate]=\"indeterminateSelected\">\n </mat-checkbox>\n }\n </td>\n}\n<!-- Content -->\n@for (column of columns; track trackByFn($index); let isFirst = $first) {\n @if ((isGroupRow() && !column.groupHeaderColspanned) || (isGroupFooterRow() && !column.groupFooterColspanned) || (!isGroupRow() && !isGroupFooterRow() && !column.cellColspanned)) {\n <td\n fs-cell\n [column]=\"column\"\n [row]=\"row()\"\n [rowIndex]=\"rowIndex\"\n [class]=\"(isGroupRow() && column.groupHeaderConfigs.classesString)\n || (isGroupFooterRow() && column.groupFooterConfigs.classesString)\n || (!isGroupFooterRow() && column.cellConfigs.classesString)\"\n [ngClass]=\"{ 'primary-col': isFirst }\"\n [attr.colspan]=\"(isGroupRow() && column.groupHeaderConfigs.colspan)\n || (isGroupFooterRow() && column.groupFooterConfigs.colspan)\n || column.cellConfigs.colspan\"\n [attr.width]=\"column.width\">\n </td>\n }\n}\n<!-- Drag -->\n@if (rightDragDropEnabled) {\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\n}\n<!-- Row Actions -->\n@if (hasRowActions && !(reorderEnabled && reorderStrategy === ReorderStrategy.Manual)) {\n <td class=\"fs-list-col actions-col\">\n @if (!isGroupFooterRow()) {\n <fs-list-row-actions\n [row]=\"row()\"\n [index]=\"rowIndex\"\n [rowActions]=\"rowActions\"\n [menuRowActions]=\"menuRowActions\"\n [inlineRowActions]=\"inlineRowActions\"\n [restoreAction]=\"restoreAction\"\n [restoreMode]=\"restoreMode\"\n [rowRemoved]=\"rowRemoved\">\n </fs-list-row-actions>\n }\n </td>\n}\n<ng-template #dragCell>\n @if (dragCellVisible() && !isGroupFooterRow()) {\n <td\n class=\"fs-list-col drag-col\"\n [class.drag-disabled]=\"isDragDisabled\"\n (mousedown)=\"dragStart($event)\"\n (touchstart)=\"dragStart($event)\">\n <mat-icon>\n drag_handle\n </mat-icon>\n </td>\n } @else {\n <td class=\"fs-list-col drag-col\"></td>\n }\n</ng-template>","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ReorderPosition, ReorderStrategy } from '../../classes/reorder-controller';\nimport { SelectionController } from '../../classes/selection-controller';\nimport { FsListDraggableRowDirective } from '../../directives/draggable-row/draggable-row.directive';\nimport { Column } from '../../models/column.model';\nimport { Row } from '../../models/row';\n\nimport { FsRowComponent } from './row/row.component';\n\n\n@Component({\n selector: '[fs-list-body]',\n templateUrl: './body.component.html',\n styleUrls: ['./body.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FsRowComponent,\n FsListDraggableRowDirective,\n ],\n})\nexport class FsBodyComponent {\n\n @Input() public rows: Row[];\n @Input() public columns: Column[] = [];\n @Input() public hasFooter = false;\n @Input() public rowActionsRaw: any[] = [];\n @Input() public groupActionsRaw: any[] = [];\n @Input() public rowEvents = {};\n @Input() public rowClass;\n @Input() public hasRowActions = false;\n @Input() public selection: SelectionController;\n @Input() public restoreMode = false;\n @Input() public rowRemoved: EventEmitter<any>;\n @Input() public activeFiltersCount: number;\n @Input() public reorderEnabled: boolean;\n @Input() public reorderPosition: ReorderPosition | null;\n @Input() public reorderStrategy: ReorderStrategy | null;\n @Input() public reorderMultiple: boolean;\n\n @ViewChild('rowsContainer', { read: ViewContainerRef, static: true })\n public rowsContainer;\n\n @ContentChild(FsRowComponent, { read: TemplateRef, static: true })\n public headerTemplate: TemplateRef<any>;\n\n}\n","@for (row of rows; track row; let i = $index) {\n <tr\n fs-list-row\n fsListDraggableRow\n [row]=\"row\"\n [rowIndex]=\"i\"\n [columns]=\"columns\"\n [rowActionsRaw]=\"rowActionsRaw\"\n [groupActionsRaw]=\"groupActionsRaw\"\n [hasRowActions]=\"hasRowActions\"\n [rowEvents]=\"rowEvents\"\n [rowClass]=\"rowClass\"\n [selection]=\"selection\"\n [restoreMode]=\"restoreMode\"\n [rowRemoved]=\"rowRemoved\"\n [activeFiltersCount]=\"activeFiltersCount\"\n [reorderEnabled]=\"reorderEnabled\"\n [reorderPosition]=\"reorderPosition\"\n [reorderStrategy]=\"reorderStrategy\"\n [reorderMultiple]=\"reorderMultiple\">\n </tr>\n}","import { Location } from '@angular/common';\nimport { inject, Injectable } from '@angular/core';\n\n\nimport { getNormalizedPath } from '@firestitch/common';\nimport { FsStore } from '@firestitch/store';\n\nimport { FsListPersistanceConfig, FsListPersitance } from '../interfaces';\n\n\n@Injectable()\nexport class PersistanceController {\n\n public filtersEnabled = false;\n public columnsEnabled = false;\n public pagingEnabled = false;\n public sortingEnabled = false;\n public queryEnabled = false;\n public name: string;\n\n private _store = inject(FsStore); \n private _data: any = {};\n private readonly _storeKey = 'fs-list-persist';\n\n private _location = inject(Location);\n\n\n public init(listConfig: FsListPersitance, inDialog: boolean) {\n const config = this._initConfig(listConfig, inDialog);\n\n if(config) {\n this.filtersEnabled = config.persistFilter;\n this.columnsEnabled = config.persistColumn;\n this.pagingEnabled = config.persistPaging;\n this.sortingEnabled = config.persistSorting;\n this.queryEnabled = config.persistQuery;\n this.name = config.name;\n this._data = this._get() || {};\n }\n }\n\n public setSorting(value: any) {\n this._set('sorting', value);\n }\n\n public setPaging(value: any) {\n this._set('paging', value);\n }\n\n public setColumns(value: any) {\n this._set('columns', value);\n }\n\n public getColumns() {\n return this._data.columns || [];\n }\n\n public getSorting() {\n return this._data.sorting || {};\n }\n\n public getPaging() {\n return this._data.paging || {};\n }\n\n private _set(key: string, value: any) {\n this._data[key] = value;\n const storeData = this._store.get(this._storeKey) || {};\n storeData[this.name] = this._data;\n\n this._store.set(this._storeKey, storeData);\n }\n\n private _get() {\n const storeData = this._store.get(this._storeKey);\n\n if (storeData) {\n return storeData[this.name];\n }\n \n return {};\n }\n\n private _initConfig(config: FsListPersitance, inDialog: boolean): FsListPersistanceConfig {\n let persistanceConfig = this._getConfig(config);\n\n if(persistanceConfig) {\n const persist = !inDialog || !!persistanceConfig.name;\n\n persistanceConfig = {\n name: persistanceConfig.name || getNormalizedPath(this._location),\n persistFilter: persist,\n persistPaging: persist,\n persistSorting: persist,\n persistColumn: persist,\n persistQuery: persist,\n ...persistanceConfig,\n };\n }\n \n return persistanceConfig;\n }\n\n private _getConfig(config: FsListPersitance): FsListPersistanceConfig {\n if(config) {\n return {\n ...(config === true ? {} : config),\n };\n }\n\n return null;\n }\n\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, OnDestroy } from '@angular/core';\n\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { MatButton } from '@angular/material/button';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\n\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { PersistanceController } from '../../classes/persistance-controller';\nimport { ColumnsColumn } from '../../models';\n\n\n@Component({\n templateUrl: './customize-cols.component.html',\n styleUrls: ['./customize-cols.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatDialogTitle,\n CdkScrollable,\n MatDialogContent,\n MatCheckbox,\n NgTemplateOutlet,\n MatDialogActions,\n MatButton,\n ],\n})\nexport class CustomizeColsDialogComponent implements OnDestroy {\n\n public columns: ColumnsColumn[] = [];\n public saveDisabled = false;\n public columnsEnabled = false;\n\n private _changeFn;\n private _destroy$ = new Subject();\n private _persistance = inject(PersistanceController);\n private _dialog = inject(MatDialogRef);\n private _data = inject(MAT_DIALOG_DATA);\n\n constructor() {\n this.columns = this._data.columns;\n this._changeFn = this._data.changeFn;\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public visibilityChange(event, column) {\n column.show = event.checked;\n }\n\n public save() {\n const data = this.columns\n .filter((column) => !!column.name)\n .map((column) => {\n return {\n name: column.name,\n show: column.show,\n };\n });\n\n if(this._persistance.columnsEnabled) {\n this._persistance.setColumns(data);\n }\n\n this.saveDisabled = true;\n const changed = this._changeFn ? this._changeFn(data) : null;\n\n if (changed instanceof Observable) {\n changed\n .pipe(takeUntil(this._destroy$))\n .subscribe({\n next: () => {\n this._dialog.close(this.columns);\n },\n error: () => {\n this.saveDisabled = false;\n },\n });\n } else {\n this._dialog.close(this.columns);\n }\n }\n\n public cancel() {\n this._dialog.close();\n }\n}\n","<h1 matDialogTitle>\n Customize columns\n</h1>\n<mat-dialog-content>\n <div class=\"columns\">\n @for (column of columns; track column) {\n <div>\n <mat-checkbox\n [checked]=\"column.show\"\n (change)=\"visibilityChange($event, column)\"\n [disabled]=\"column.disabled\">\n @if (column.title) {\n {{ column.title }}\n } @else {\n <ng-template [ngTemplateOutlet]=\"column.template\"></ng-template>\n }\n </mat-checkbox>\n </div>\n }\n @if (!columns.length) {\n <div class=\"no-results\">\n No results found\n </div>\n }\n </div>\n</mat-dialog-content>\n<mat-dialog-actions>\n @if (columns.length) {\n <button\n type=\"button\"\n mat-button\n color=\"primary\"\n (click)=\"save()\"\n [disabled]=\"saveDisabled\">\n Save\n </button>\n }\n <button\n type=\"button\"\n mat-button\n [color]=\"columns.length ? null : 'primary'\"\n (click)=\"cancel()\">\n {{ columns.length ? 'Cancel' : 'Done' }}\n </button>\n</mat-dialog-actions>","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\nimport { FsCellComponent } from '../../../body/row/cell/cell.component';\nimport { NgTemplateOutlet } from '@angular/common';\r\n\r\n\r\n@Component({\n selector: '[fs-list-footer-cell]',\n templateUrl: './footer-cell.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgTemplateOutlet],\n})\r\nexport class FsFooterCellComponent extends FsCellComponent {\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","<ng-template [ngTemplateOutlet]=\"column.footerTemplate || cell\" [ngTemplateOutletContext]=\"cellContext\"></ng-template>\r\n\r\n<ng-template #cell let-value=\"value\">\r\n {{value}}\r\n</ng-template>\r\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\nimport { FsRowComponent } from '../../body/row/row.component';\n\nimport { FsFooterCellComponent } from './footer-cell/footer-cell.component';\n\n\n@Component({\n selector: '[fs-list-footer-row]',\n templateUrl: './footer-row.component.html',\n styleUrls: ['./footer-row.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FsFooterCellComponent,\n NgClass,\n ],\n})\nexport class FsFooterRowComponent extends FsRowComponent {\n\n}\n","@if (leftDragDropEnabled) {\n <td class=\"fs-list-col drag-col\"></td>\n}\n@if (selection) {\n <td class=\"fs-list-col fs-list-col-selection\"></td>\n}\n@for (column of columns; track trackByFn($index)) {\n @if (!column.footerColspanned) {\n <td\n fs-list-footer-cell\n [column]=\"column\"\n [row]=\"row()\"\n [rowIndex]=\"rowIndex\"\n [ngClass]=\"column.footerConfigs.classesArray\"\n [attr.colspan]=\"column.footerConfigs.colspan\"\n [attr.width]=\"column.width\">\n </td>\n }\n}\n<!-- Drag -->\n@if (rightDragDropEnabled) {\n <td class=\"fs-list-col actions-col\"></td>\n}\n<!-- Row Actions -->","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n} from '@angular/core';\n\nimport { ReorderPosition, ReorderStrategy } from '../../classes/reorder-controller';\nimport { SelectionController } from '../../classes/selection-controller';\nimport { Column } from '../../models/column.model';\nimport { FsFooterRowComponent } from './footer-row/footer-row.component';\n\n@Component({\n selector: '[fs-list-footer]',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [FsFooterRowComponent],\n})\nexport class FsFooterComponent {\n\n @Input() public hasRowActions: boolean;\n @Input() public columns: Column[] = [];\n @Input() public selection: SelectionController;\n @Input() public activeFiltersCount: number;\n @Input() public reorderEnabled: boolean;\n @Input() public reorderPosition: ReorderPosition | null;\n @Input() public reorderStrategy: ReorderStrategy | null;\n}\n","<tr \n fs-list-footer-row\n [columns]=\"columns\"\n [hasRowActions]=\"hasRowActions\"\n [selection]=\"selection\"\n [activeFiltersCount]=\"activeFiltersCount\"\n [reorderEnabled]=\"reorderEnabled\"\n [reorderPosition]=\"reorderPosition\"\n [reorderStrategy]=\"reorderStrategy\">\n</tr>\n","import { AsyncPipe, NgTemplateOutlet } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\nimport { MatIcon } from '@angular/material/icon';\r\n\r\nimport { FsCellComponent } from '../../body/row/cell/cell.component';\r\n\r\n\r\n@Component({\r\n selector: '[fs-head-cell]',\r\n templateUrl: './head-cell.component.html',\r\n styleUrls: ['./head-cell.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n NgTemplateOutlet,\r\n MatIcon,\r\n AsyncPipe,\r\n ],\r\n})\r\nexport class FsHeadCellComponent extends FsCellComponent {\r\n\r\n public cellContext: any = {};\r\n\r\n public initCellContext() {\r\n this.cellContext.value = this.column.title;\r\n }\r\n}\r\n","<div class=\"wrap\">\n <span class=\"title\">\n @if (!column.headerTemplate) {\n {{ column.title }}\n }\n @if (column.headerTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.headerTemplate\"\n [ngTemplateOutletContext]=\"cellContext\">\n </ng-template>\n }\n </span>\n @if (column.ordered$ | async) {\n @switch (column.sortingDirection$ | async) {\n @case ('asc') {\n <mat-icon>\n arrow_downward\n </mat-icon>\n }\n @case ('desc') {\n <mat-icon>\n arrow_upward\n </mat-icon>\n }\n }\n } @else if (column.sortable) {\n <mat-icon>\n unfold_more\n </mat-icon>\n }\n</div>","import { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { FsListSortConfig, SortingChangeEvent } from '../interfaces';\nimport { ColumnAttributes } from '../models/column-attributes';\nimport { Column, SortingDirection } from '../models/column.model';\n\nimport { List } from './list-controller';\n\n\nexport class SortingController {\n\n public config: List;\n public sortingColumns: Column[] = [];\n public fakeSortingColumns: Column[] = [];\n public sortingColumn: Column;\n\n private _initialized = new BehaviorSubject<boolean>(false);\n private _sortingChanged$ = new Subject<SortingChangeEvent>();\n private _onDestroy = new Subject();\n\n constructor() {}\n\n public get sortingChanged$(): Observable<SortingChangeEvent> {\n return this._sortingChanged$.pipe(takeUntil(this._onDestroy));\n }\n\n public get initialized$(): Observable<boolean> {\n return this._initialized.pipe(takeUntil(this._onDestroy));\n }\n\n public get value(): FsListSortConfig | undefined {\n if (this.sortingColumn) {\n return {\n value: this.sortingColumn.name,\n direction: this.sortingColumn.direction,\n };\n }\n\n return undefined;\n }\n\n public get initialization(): boolean {\n return !this._initialized.getValue();\n }\n\n public get isDefined(): boolean {\n return !!this.sortingColumn;\n }\n\n private set _initialization(value: boolean) {\n this._initialized.next(!value);\n }\n\n public addSortableColumn(column: Column) {\n this.sortingColumns.push(column);\n }\n\n public clearSortableColumns(): void {\n this.sortingColumns = [];\n }\n\n /**\n * Set Sortable Direction\n *\n * @param direction\n */\n public sortDirection(direction) {\n if (this.sortingColumn && this.sortingColumn.sortingDirection !== direction) {\n this._setSortingDirection(direction);\n\n this._notifySortChanged();\n }\n }\n\n /**\n * Sort By\n *\n * @param column\n */\n public sortBy(column: Column) {\n if (column.sortable) {\n this._setSortingColumn(column);\n\n this._notifySortChanged();\n }\n }\n\n /**\n * Same as sortBy, but need only column name as parameter for sort\n *\n * @param name\n */\n public sortByColumnWithName(name: string) {\n const column = this.getColumn(name);\n\n if (!column) {\n return;\n }\n\n this._setSortingColumn(column);\n\n this._notifySortChanged();\n }\n\n /**\n * Init fake columns for sorting\n *\n * @param columns\n */\n public initFakeColumns(columns) {\n columns.forEach((column) => {\n const attributes = new ColumnAttributes({\n title: column.name,\n name: column.value,\n sortable: true,\n direction: column.direction,\n });\n\n const fakeColumn = new Column({\n attributes,\n });\n\n this.fakeSortingColumns.push(fakeColumn);\n });\n }\n\n /**\n * Set initial sorting\n *\n * @param sort\n */\n public initialSortBy(sort: FsListSortConfig) {\n this._initialization = true;\n\n if (!sort) {\n this._trySortByDefaultSortableColumn();\n\n if (!this.sortingColumn) {\n this.sortByFirstSortbale();\n }\n\n this._initialization = false;\n\n return;\n }\n\n if (!this.getColumn(sort.value)) {\n this.sortByFirstSortbale();\n\n console.warn(`\n Not possible to do initial sort by \"${sort.value}\" column.\n Column with name \"${sort.value}\" does not exists.\n Check your lister configuration.\n `);\n } else {\n this.sortByColumnWithName(sort.value);\n\n const direction = (sort.direction === undefined || sort.direction === 'asc')\n ? SortingDirection.asc\n : SortingDirection.desc;\n this._setSortingDirection(direction);\n }\n\n this._initialization = false;\n }\n\n /**\n * Sort by first of available sorting columns\n */\n public sortByFirstSortbale() {\n const column =\n this.sortingColumns.find((col) => col.sortable);\n\n if (!column) {\n return;\n }\n\n this.sortBy(column);\n this.sortDirection(column.direction || SortingDirection.asc);\n }\n\n /**\n * Merge sorting and fake sorting cols\n * Fake sorting cols it's cols which don't represented in table cols, like abstract cols\n */\n public makeSortingList() {\n return [\n ...this.sortingColumns,\n ...this.fakeSortingColumns,\n ].reduce((acc, column) => {\n\n const sortingItem = {\n name: column.title,\n value: column.name,\n default: this.sortingColumn && this.sortingColumn.name === column.name,\n };\n\n acc.push(sortingItem);\n\n return acc;\n }, []);\n }\n\n public getColumn(name: string): Column {\n return [...this.sortingColumns, ...this.fakeSortingColumns]\n .find((col) => col.name === name && col.sortable);\n }\n\n /**\n * Destroy\n */\n public destroy() {\n this._onDestroy.next(null);\n this._onDestroy.complete();\n }\n\n private _setSortingColumn(column: Column) {\n // Can't do sort by non sortable column\n if (!column.sortable) {\n return false;\n }\n\n // Column was ordered before\n if (column.ordered) {\n column.changeDirection();\n } else {\n [...this.fakeSortingColumns, ...this.sortingColumns]\n .filter((col) => col.ordered)\n .forEach((col) => col.ordered = false);\n\n column.ordered = true;\n }\n\n this.sortingColumn = column;\n }\n\n private _setSortingDirection(direction) {\n this.sortingColumn.sortingDirection = direction;\n }\n\n private _notifySortChanged() {\n if (this.initialization) {\n return;\n }\n\n this._sortingChanged$.next({\n sortBy: this.sortingColumn.name,\n sortDirection: this.sortingColumn.direction,\n });\n }\n\n private _trySortByDefaultSortableColumn(): void {\n const sortableDefault = this.sortingColumns\n .find((column) => column.sortableDefault);\n\n if (sortableDefault) {\n this.sortByColumnWithName(sortableDefault.name);\n }\n }\n}\n","import { AsyncPipe, NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, ViewChild, ViewContainerRef, inject } from '@angular/core';\n\nimport { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';\n\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport {\n ReorderPosition,\n ReorderStrategy,\n} from '../../classes/reorder-controller';\nimport { SelectionChangeType, SelectionController } from '../../classes/selection-controller';\nimport { SortingController } from '../../classes/sorting-controller';\nimport { Column } from '../../models/column.model';\n\nimport { FsHeadCellComponent } from './head-cell/head-cell.component';\n\n\n@Component({\n selector: '[fs-list-head]',\n templateUrl: './head.component.html',\n styleUrls: ['./head.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatCheckbox,\n FsHeadCellComponent,\n NgClass,\n AsyncPipe,\n ],\n})\nexport class FsHeadComponent implements OnInit, OnDestroy {\n\n @Input() public sorting: SortingController;\n @Input() public columns: Column[];\n @Input() public hasRowActions: boolean;\n @Input() public selection: SelectionController;\n @Input() public activeFiltersCount: number;\n @Input() public reorderEnabled: boolean;\n @Input() public reorderPosition: ReorderPosition | null;\n @Input() public reorderStrategy: ReorderStrategy | null;\n\n @ViewChild('rowsContainer', { read: ViewContainerRef, static: true })\n public rowsContainer;\n\n public selectedAll = false;\n public readonly ReorderStrategyEnum = ReorderStrategy;\n\n private _destroy$ = new Subject();\n private _cdRef = inject(ChangeDetectorRef);\n\n public get leftDragDropEnabled(): boolean {\n return this.reorderEnabled\n && this.reorderPosition === ReorderPosition.Left\n && this.activeFiltersCount === 0;\n }\n\n public get rightDragDropEnabled(): boolean {\n return this.reorderEnabled\n && this.reorderPosition === ReorderPosition.Right\n && this.activeFiltersCount === 0;\n }\n\n public ngOnInit() {\n this._initSorting();\n this._initSelection();\n }\n\n public ngOnDestroy() {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n /**\n * Select All Visible Rows\n *\n * @param event\n */\n public selectAll(event: MatCheckboxChange) {\n this.selection.selectAllVisibleRows(event.checked);\n }\n\n /**\n * Track By for improve change detection\n *\n * @param index\n * @param column\n */\n public trackByFn(index: number, column: Column) {\n // Combine the label with the index so columns without a name/title\n // (whose name||title resolves to an empty string) never collide and\n // produce duplicate \"\" keys -> NG0955.\n return `${column.name || column.title || ''}_${index}`;\n }\n\n /**\n * Subscribe to sorting change\n */\n private _initSorting() {\n this.sorting.sortingChanged$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._cdRef.detectChanges();\n });\n }\n\n /**\n * Subscribe to selection change\n */\n private _initSelection() {\n if (this.selection) {\n this.selection.selectionChange$\n .pipe(\n filter(\n ({ type }) => (\n type === SelectionChangeType.AllVisibleSelectionChange\n || type === SelectionChangeType.SelectedAll\n || type === SelectionChangeType.RowSelectionChange\n ),\n ),\n takeUntil(this._destroy$),\n )\n .subscribe(({ type, payload: status }) => {\n this.selectedAll = status;\n\n this._cdRef.markForCheck();\n });\n }\n }\n}\n","<tr class=\"fs-list-row\">\n <!-- Drag -->\n @if (leftDragDropEnabled) {\n <th class=\"fs-list-col drag-col\"></th>\n }\n <!-- Selection -->\n @if (selection && !(selection.disabled$ | async)) {\n <th class=\"fs-list-col fs-list-col-selection\">\n <mat-checkbox\n (change)=\"selectAll($event)\"\n [checked]=\"selectedAll\">\n </mat-checkbox>\n </th>\n }\n <!-- Content -->\n @for (column of columns; track trackByFn($index, column)) {\n <th\n fs-head-cell\n (click)=\"$event.stopPropagation(); sorting.sortBy(column)\"\n [column]=\"column\"\n [class.sorting]=\"column.sortable\"\n [ngClass]=\"column.headerConfigs.classesArray\"\n [attr.colspan]=\"column.headerConfigs.colspan\"\n [attr.width]=\"column.width\">\n </th>\n }\n <!-- Drag -->\n @if (rightDragDropEnabled) {\n <th class=\"fs-list-col drag-col\"></th>\n }\n <!-- Row Actions -->\n @if (hasRowActions && !(reorderEnabled && reorderStrategy === ReorderStrategyEnum.Manual)) {\n <th class=\"fs-list-col actions-col\"></th>\n }\n</tr>","export enum PageChangeType {\r\n Default = 0,\r\n LimitChanged = 1\r\n}\r\n","export enum FsListState {\r\n Idle,\r\n Load,\r\n Reload,\r\n Filter,\r\n Sort,\r\n PageChange,\r\n LoadMore,\r\n}\r\n","import { BehaviorSubject, merge, Observable, of, Subject } from 'rxjs';\nimport { skip, takeUntil, tap } from 'rxjs/operators';\n\nimport { isNumber } from 'lodash-es';\n\nimport {\n FsListColumn,\n FsListColumnChangeFn,\n FsListColumnConfig,\n FsListColumnLoadFn,\n} from '../interfaces';\nimport { ColumnsColumn } from '../models';\nimport { Column } from '../models/column.model';\n\nimport { PersistanceController } from './persistance-controller';\n\n\nexport class ColumnsController {\n\n private _visibleColumns$ = new BehaviorSubject<Column[]>([]);\n private _visibleColumnsShared$ = this._visibleColumns$.pipe();\n private _theadClass = '';\n private _loadFn: FsListColumnLoadFn;\n private _changeFn: FsListColumnChangeFn;\n private _initFn: FsListColumnChangeFn;\n private _isConfigured = false;\n private _columnsFetched = false;\n private _hasHeader = false;\n private _hasFooter = false;\n private _columns: Column[] = [];\n private _defaultConfigs;\n private _columnsUpdated$ = new Subject<void>();\n private _destroy$ = new Subject<void>();\n\n constructor(\n private _persistance: PersistanceController,\n ) {}\n\n public get columns() {\n return this._columns.slice();\n }\n\n public get visibleColumns(): Column[] {\n return this._visibleColumns$.getValue();\n }\n\n public get visibleColumns$(): Observable<Column[]> {\n return this._visibleColumnsShared$;\n }\n\n public get columnsForDialog(): ColumnsColumn[] {\n return this._columns\n .filter((column) => column.customizable && !!column.name)\n .map((column) => {\n return {\n template: column.headerTemplate,\n name: column.name,\n show: column.visible,\n title: column.title,\n };\n });\n }\n\n public get columnsFetched() {\n return this._columnsFetched;\n }\n\n public get hasHeader() {\n return this._hasHeader;\n }\n\n public get hasFooter() {\n return this._hasFooter;\n }\n\n public get theadClass() {\n return this._theadClass;\n }\n\n public get configured() {\n return this._isConfigured;\n }\n\n public get changeFn() {\n return this._changeFn;\n }\n\n public get visibleColumnsNames() {\n return this.visibleColumns\n .map((column) => column.name)\n .filter((name) => !!name);\n }\n\n public setDefaults(defaults) {\n this._defaultConfigs = defaults;\n }\n\n /**\n * Set data from list config\n * @param config\n */\n public initConfig(config: FsListColumnConfig) {\n this._loadFn = config?.load ? config.load : () => {\n return of(this._persistance.columnsEnabled ? this._persistance.getColumns() : []);\n };\n \n this._changeFn = config?.change ? config.change : () => {\n //\n };\n\n this._initFn = config?.init ? config.init : () => {\n //\n };\n\n this._isConfigured = !!config;\n }\n\n /**\n * Base initialization for columns\n * @param templates\n */\n public initializeColumns(templates) {\n this._columns = [];\n\n templates.forEach((column) => {\n const col = new Column(column, this._defaultConfigs);\n\n if (col.headerTemplate || col.title) {\n this._hasHeader = true;\n }\n if (col.footerTemplate) {\n this._hasFooter = true;\n }\n\n this._columns.push(col);\n });\n\n this._theadClass = this.hasHeader ? 'has-header' : '';\n\n this._updateColspans('headerConfigs', 'headerColspanned');\n this._updateColspans('groupHeaderConfigs', 'groupHeaderColspanned');\n this._updateColspans('groupFooterConfigs', 'groupFooterColspanned');\n this._updateColspans('cellConfigs', 'cellColspanned');\n this._updateColspans('footerConfigs', 'footerColspanned');\n\n this.updateVisibleColumns();\n this._listenColumnVisibilityUpdates();\n }\n\n /**\n * Load visiblity config for columns from remote\n */\n public loadRemoteColumnConfigs() {\n return this._loadFn()\n .pipe(\n tap((columns: FsListColumn[]) => {\n this._columnsFetched = true;\n this.updateVisibilityForCols(columns);\n this.updateCustomizableForCols(columns);\n this._initFn(\n this._columns\n .filter((column) => column.customizable && !!column.name)\n .map<FsListColumn>((column) => {\n return {\n name: column.name,\n show: column.visible,\n };\n }));\n }),\n takeUntil(this._destroy$),\n );\n }\n\n /**\n * Set visible columns based on current columns show status\n */\n public updateVisibleColumns() {\n this._visibleColumns$.next(\n this._columns.filter((column) => column.visible) || [],\n );\n }\n\n /**\n * Update visibility based on passed config\n * @param columnsConfig\n */\n public updateVisibilityForCols(columnsConfig: FsListColumn[]) {\n columnsConfig.forEach((columnConfig) => {\n const col = this._columns\n .find((column) => column.name === columnConfig.name);\n\n if (col) {\n col.updateVisibility(columnConfig.show ?? true);\n }\n });\n\n this.updateVisibleColumns();\n }\n\n public updateCustomizableForCols(columnsConfig: FsListColumn[]) {\n columnsConfig.forEach((columnConfig) => {\n const col = this._columns\n .find((column) => column.name === columnConfig.name);\n\n if (col) {\n col.updateCustomizable(columnConfig.customizable ?? true);\n }\n });\n }\n\n public destroy() {\n this._destroy$.next(null);\n this._destroy$.complete();\n this._columnsUpdated$.complete();\n\n this._columns = undefined;\n this._visibleColumns$ = undefined;\n this._defaultConfigs = undefined;\n\n this._loadFn = undefined;\n this._changeFn = undefined;\n this._initFn = undefined;\n }\n\n private _listenColumnVisibilityUpdates() {\n this._columnsUpdated$.next(null);\n\n const columnsVisibility = this._columns.map((column) => {\n return column.visible$.pipe(skip(1));\n });\n\n merge(...columnsVisibility)\n .pipe(\n takeUntil(this._columnsUpdated$),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.updateVisibleColumns();\n });\n }\n\n private _updateColspans(config, updateFlag) {\n this._columns.forEach((col, index) => {\n\n if (col[config].colspan !== undefined) {\n const spanTo = index + +col[config].colspan;\n\n if (!isNumber(spanTo)) {\n return;\n }\n this._columns[index][updateFlag] = false;\n\n for (let i = index + 1; i < spanTo; i++) {\n if (this._columns[i]) {\n this._columns[i][updateFlag] = true;\n }\n }\n }\n });\n }\n\n}\n","import { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { isFunction, isObject } from 'lodash-es';\n\nimport { RowType } from '../enums/row-type.enum';\nimport { FsListState } from '../enums/state.enum';\nimport { FsListAbstractRow, FsListGroupConfig, FsListTrackByTargetRowFn } from '../interfaces/listconfig.interface';\nimport { Row, isChildTypeRow, isGroupRow, makeRowFactory } from '../models/row';\nimport { IChildRow } from '../models/row/child-row';\nimport { IGroupFooterRow } from '../models/row/group-footer-row';\nimport { IGroupRow } from '../models/row/group-row';\n\n\nexport class DataController {\n\n private readonly _visibleRows$ = new BehaviorSubject<Row[]>([]);\n private readonly _rowsRemoved$ = new Subject<Row[]>();\n private readonly _remoteRowsChange$ = new Subject<void>();\n\n private _store = new Map();\n private _rowsStack: Row[] = [];\n private _operation: FsListState;\n\n private _groupByFn: (row) => any[];\n private _footerRowFn: (\n row: { [key: string]: any },\n group: {\n [key: string]: any,\n children: {\n [key: string]: any\n }[],\n }\n ) => boolean;\n private _compareByFn: (group) => any;\n private _initialExpand = true;\n private _groupEnabled = false;\n\n private _loadMoreEnabled: boolean;\n\n private _hasData = false;\n\n private readonly _destroy$ = new Subject<void>();\n\n public get visibleRowsData() {\n return this.visibleRows.map((row) => row.data);\n }\n\n public get rowsStack() {\n return this._rowsStack.slice();\n }\n\n public get groupEnabled() {\n return this._groupEnabled;\n }\n\n public set groupEnabled(value: boolean) {\n this._groupEnabled = value;\n }\n\n public get remoteRowsChange$() {\n return this._remoteRowsChange$.pipe(\n takeUntil(this._destroy$),\n );\n }\n\n public get rowsRemoved$() {\n return this._rowsRemoved$.pipe(\n takeUntil(this._destroy$),\n );\n }\n\n public get hasData() {\n return this._hasData;\n }\n\n public get operation() {\n return this._operation;\n }\n\n public get visibleRows$(): Observable<Row[]> {\n return this._visibleRows$.asObservable();\n }\n\n public set visibleRows(value: any[]) {\n this._visibleRows$.next(value);\n this._hasData = this.visibleRows.length > 0;\n }\n\n public get visibleRows() {\n return this._visibleRows$.getValue();\n }\n\n public get visibleRowsCount() {\n return this.visibleRows.length;\n }\n\n public get hasGroups() {\n return this._compareByFn && this._groupByFn;\n }\n\n public get reorderData() {\n return this._rowsStack\n .map((row) => row.reorderData());\n }\n\n public setGroupConfig(group: FsListGroupConfig) {\n if (group) {\n this._groupByFn = group.groupBy;\n this._compareByFn = group.compareBy;\n this._footerRowFn = group.footer || (() => false);\n this._initialExpand = group.initialExpand ?? true;\n\n // group mode enabled by default\n this._groupEnabled = (group.enabled !== undefined)\n ? group.enabled\n : true;\n }\n }\n\n public setAdditionalConfigs(configs: { loadMoreEnabled: boolean }) {\n this._loadMoreEnabled = configs.loadMoreEnabled;\n }\n\n /**\n * Rows what was received from fetch function\n * @param rows\n */\n public setRowsFromResponse(rows: any[]) {\n if (\n this._operation === FsListState.LoadMore ||\n (this._operation === FsListState.PageChange && this._loadMoreEnabled)\n ) {\n this._extendRowsStack(rows);\n } else {\n this._updateRowsStack(rows);\n }\n\n this._operation = FsListState.Idle;\n\n this._updateVisibleRows();\n }\n\n /**\n * Set current operation for list data flow\n * @param value\n */\n public setOperation(value: FsListState) {\n this._operation = value;\n }\n\n /**\n * Remove rows from visible\n */\n public clearRows() {\n this.visibleRows = [];\n }\n\n /**\n * Update data for specified row\n * @param rows\n * @param trackBy\n */\n public updateData(\n rows: FsListAbstractRow | FsListAbstractRow[],\n trackBy?: FsListTrackByTargetRowFn,\n ): boolean {\n if (Array.isArray(rows)) {\n let updateSuccess = false;\n\n rows.forEach((item) => {\n if (this._updateRow(item, trackBy)) {\n updateSuccess = true;\n }\n });\n\n return updateSuccess;\n }\n \n return this._updateRow(rows, trackBy);\n }\n\n /**\n * Remove data for specified row\n * @param data\n */\n public removeData(\n data: FsListAbstractRow | FsListAbstractRow[] | FsListTrackByTargetRowFn,\n ): boolean {\n const removedRows = [];\n\n const defaultTrackBy = (row, target) => {\n return row === target;\n };\n\n if (Array.isArray(data)) {\n //\n data.forEach((item) => {\n removedRows.push(...this._removeRow(item, defaultTrackBy));\n });\n } else if (isFunction(data)) {\n removedRows.push(...this._removeRow(null, (data as FsListTrackByTargetRowFn)));\n } else if (isObject(data)) {\n removedRows.push(...this._removeRow(data, defaultTrackBy));\n }\n\n if (removedRows.length > 0) {\n this._updateVisibleRows();\n\n this._rowsRemoved$.next(removedRows);\n }\n\n return !!removedRows.length;\n }\n\n public swapRows(row1, row2, selectedRows?: Row[], isMultipleDrag = false) {\n const rowsStack = this._rowsStack;\n const row1GlobalIndex = rowsStack.indexOf(row1);\n const row2GlobalIndex = rowsStack.indexOf(row2);\n\n const tmpEl = rowsStack[row1GlobalIndex];\n rowsStack[row1GlobalIndex] = rowsStack[row2GlobalIndex];\n rowsStack[row2GlobalIndex] = tmpEl;\n\n if (isMultipleDrag && Array.isArray(selectedRows)) {\n if (!selectedRows.includes(row1)) {\n selectedRows = [row1, ...selectedRows];\n }\n\n selectedRows\n .filter((selectedRow) => {\n return selectedRow !== row1;\n })\n .forEach((selectedRow) => {\n const idx = rowsStack.indexOf(selectedRow);\n rowsStack.splice(idx, 1);\n });\n\n const indexToInsertAfter = rowsStack.indexOf(tmpEl);\n\n rowsStack.splice(indexToInsertAfter, 1);\n\n selectedRows.forEach((selectedRow, offset) => {\n rowsStack.splice(indexToInsertAfter + offset, 0, selectedRow);\n });\n }\n\n this._rowsStack = [...rowsStack];\n }\n\n public destroy() {\n this._destroyRowsStack();\n this._store.clear();\n\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public toggleRowGroup(rowData) {\n const row: IGroupRow = this.visibleRows.find((visibleRow) => visibleRow.data === rowData );\n row?.toggleRowExpandStatus();\n\n this._updateVisibleRows();\n }\n\n public finishReorder(): void {\n // TODO fixme remove or improve\n if (this.groupEnabled) {\n let group: IGroupRow;\n\n this._rowsStack\n .forEach((row, index) => {\n if (isGroupRow(row) && row !== group) {\n group = row;\n } else {\n row.index = index - this._rowsStack.indexOf(group) - 1;\n }\n });\n }\n\n this._updateVisibleRows();\n }\n\n private _updateRowsStack(rows) {\n this._destroyRowsStack();\n\n if (this.groupEnabled) {\n this._store.clear();\n this._rowsStack = [...this._groupRowsBy(rows)];\n } else {\n rows = rows.map((row) => {\n return makeRowFactory(row, RowType.Simple);\n });\n this._rowsStack = [...rows];\n }\n }\n\n private _extendRowsStack(rows) {\n if (this.groupEnabled) {\n this._rowsStack = [...this._groupRowsBy(rows)];\n } else {\n rows = rows.map((row) => {\n return makeRowFactory(row, RowType.Simple);\n });\n this._rowsStack = [...this._rowsStack, ...rows];\n }\n }\n\n private _destroyRowsStack() {\n this._rowsStack.forEach((row) => row.destroy());\n }\n\n private _updateVisibleRows() {\n this.visibleRows = this._rowsStack\n .filter((row: Row) => {\n return !isChildTypeRow(row) || row.visible;\n });\n }\n\n private _updateRow(\n updatedRow: FsListAbstractRow,\n trackBy?: (listRow: FsListAbstractRow, targetRow?: FsListAbstractRow) => boolean) {\n\n if (trackBy === undefined) {\n trackBy = (row, target) => {\n return row === target;\n };\n }\n\n const targetIndex = this._rowsStack\n .findIndex((listRow) => trackBy(listRow.data, updatedRow));\n\n if (targetIndex !== -1) {\n const targetRow = this._rowsStack[targetIndex];\n const updatedData = { ...targetRow.data, ...updatedRow };\n \n targetRow.data = updatedData;\n\n return true;\n }\n\n return false;\n }\n\n /**\n * Remove row from\n * @param targetRow\n * @param trackBy\n */\n private _removeRow(\n targetRow: FsListAbstractRow | null,\n trackBy?: FsListTrackByTargetRowFn,\n ) {\n\n const rows = this._rowsStack;\n const removedRows = [];\n\n rows.forEach((listRow, index) => {\n if (trackBy(listRow.data, targetRow)) {\n const removedRow = rows.splice(index, 1);\n\n removedRows.push(removedRow);\n }\n });\n\n return removedRows;\n }\n\n /**\n * Split existing rows by groups and store them for future use\n */\n private _groupRowsBy(rows) {\n if (!this._groupByFn || !this._compareByFn) {\n return rows;\n }\n\n const groupRows: IGroupRow[] = [];\n\n rows.forEach((row) => {\n const groupData = this._groupByFn(row);\n const groupKey = this._compareByFn(groupData);\n\n let group: IGroupRow = this._store.get(groupKey);\n\n if (!group) {\n group = makeRowFactory(\n groupData,\n RowType.Group,\n { initialExpand: this._initialExpand },\n ) as IGroupRow;\n\n group.index = groupRows.length;\n groupRows.push(group);\n\n this._store.set(groupKey, group);\n }\n\n const childRow = makeRowFactory(row, RowType.GroupChild, { parent: group }) as IChildRow;\n group.children.push(childRow);\n });\n\n groupRows.forEach((groupRow) => {\n const footerIndex = groupRow.children\n .findIndex((row) => {\n return this._footerRowFn(row.data, {\n ...groupRow.data,\n children: groupRow.childrenData,\n });\n });\n\n if (footerIndex !== -1) {\n const footerRow = groupRow.children.splice(footerIndex, footerIndex + 1)[0];\n const newRow = makeRowFactory(footerRow.data, RowType.GroupFooter, { parent: groupRow });\n groupRow.children.push(newRow as IGroupFooterRow);\n }\n });\n\n return Array.from(this._store.values())\n .reduce((acc, item) => {\n if (isGroupRow(item)) {\n acc.push(item, ...item.children);\n } else {\n acc.push(item);\n }\n\n return acc;\n }, []);\n }\n}\n","import { ActivatedRoute } from '@angular/router';\n\nimport { merge, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { PaginationController } from '../classes/pagination-controller';\nimport { SortingController } from '../classes/sorting-controller';\nimport { FsListSortConfig } from '../interfaces';\nimport {\n ExternalParams,\n ExternalQueryPagination,\n ExternalQuerySorting,\n} from '../interfaces/external-params.interface';\n\nimport { PersistanceController } from './persistance-controller';\n\n\nexport class ExternalParamsController {\n\n private _externalParams: ExternalParams = {\n page: null,\n limit: null,\n sortName: null,\n sortDirection: null,\n };\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n private _route: ActivatedRoute,\n private _persistance: PersistanceController,\n private _paginator: PaginationController,\n private _sorting: SortingController,\n private _queryParamsEnabled: boolean,\n ) {\n this.initialize();\n }\n\n public get externalSorting(): FsListSortConfig {\n if (!this._enabled || !this._sortName || !this._sortDirection) {\n return null;\n }\n\n return {\n value: this._sortName,\n direction: this._sortDirection,\n };\n }\n\n private get _enabled(): boolean {\n return this._queryParamsEnabled || this._persistance.filtersEnabled;\n }\n\n private get _page(): number {\n return this._externalParams.page;\n }\n\n private get _limit(): number {\n return this._externalParams.limit;\n }\n\n private get _sortName(): string {\n return this._externalParams.sortName;\n }\n\n private get _sortDirection(): 'asc' | 'desc' {\n return this._externalParams.sortDirection;\n }\n\n public initialize() {\n\n // Restore from localStorage parameters if persistance enabled\n if (this._persistance.pagingEnabled) {\n this._restorePaginationParams(this._persistance.getPaging());\n }\n\n if (this._persistance.sortingEnabled) {\n this._restoreSortingParams(this._persistance.getSorting());\n }\n\n // Restore from queryParams and override if persistance already had values for those params\n if (this._queryParamsEnabled) {\n this._restorePaginationParams(this._route.snapshot.queryParams as ExternalQueryPagination);\n this._restoreSortingParams(this._route.snapshot.queryParams as ExternalQuerySorting);\n }\n\n // Set initial pagination params\n // The same initial, but for sorting placed in list-controller \"tranformTemplatesToColumns\" method\n if (this._paginator.enabled) {\n if (this._limit) {\n this._paginator.setLimit(this._limit);\n }\n\n if (this._page) {\n this._paginator.goToPage(this._page);\n }\n }\n\n // Update pagination in stores\n this._updatePaginationParams(this._paginator.queryPageStrategy);\n\n this._listenPaginatorChanges();\n this._listenSortingChanges();\n }\n\n public clearSortingParams() {\n this._updateSortingParams(null, null);\n }\n\n public destroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n private _restorePaginationParams(values: ExternalQueryPagination) {\n if (values?.page) {\n this._externalParams.page = +values.page;\n }\n\n if (values?.limit) {\n this._externalParams.limit = +values.limit;\n }\n }\n\n private _restoreSortingParams(values: ExternalQuerySorting) {\n if (values?.sortName) {\n this._externalParams.sortName = values.sortName;\n }\n\n if (values?.sortDirection) {\n this._externalParams.sortDirection = values.sortDirection;\n }\n }\n\n private _listenPaginatorChanges() {\n merge(\n this._paginator.pageChanged$,\n this._paginator.pages$,\n this._paginator.pageReset$,\n )\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._updatePaginationParams(this._paginator.queryPageStrategy);\n });\n }\n\n private _listenSortingChanges() {\n merge(\n this._sorting.initialized$,\n this._sorting.sortingChanged$,\n )\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n const sorting = this._sorting.value;\n\n if (sorting) {\n this._updateSortingParams(sorting.value, sorting.direction);\n } else {\n this.clearSortingParams();\n }\n });\n }\n\n private _updateSortingParams(name: string, direction: string) {\n if (this._queryParamsEnabled) {\n this._replaceState({\n sortName: name,\n sortDirection: direction,\n });\n }\n\n if (this._persistance.filtersEnabled) {\n if (name && direction) {\n this._persistance.setSorting({ sortName: name, sortDirection: direction });\n } else {\n this._persistance.setSorting(null);\n }\n }\n }\n\n private _updatePaginationParams(params) {\n if (this._queryParamsEnabled) {\n this._replaceState(params);\n }\n\n if (this._persistance.filtersEnabled) {\n this._persistance.setPaging(params);\n }\n }\n\n private _replaceState(data) {\n const url = new URL(window.location.href);\n\n Object.keys(data)\n .filter((name) => data[name] !== undefined && data[name] !== null)\n .forEach((name) => {\n url.searchParams.set(name,data[name]);\n });\n\n history.replaceState({}, null, url.pathname + url.search);\n }\n}\n","import { FilterComponent } from '@firestitch/filter';\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { FsListAction } from '../interfaces/listconfig.interface';\n\n\nexport class ActionsController {\n\n private _filterRef: FilterComponent;\n\n private _actions: FsListAction[] = [];\n private _reorderAction: FsListAction;\n private _doneAction: FsListAction;\n\n private _destroy$ = new Subject<void>();\n\n constructor() {}\n\n public get destroy$(): Observable<void> {\n return this._destroy$.asObservable();\n }\n\n public get actions(): FsListAction[] {\n return this._actions;\n }\n\n public get hasActions(): boolean {\n return this._actions.length > 0;\n }\n\n public setFilterRef(ref: FilterComponent) {\n this._filterRef = ref;\n }\n\n public setActions(actions: FsListAction[]) {\n this.clearActions();\n this._actions = actions;\n\n if (this._reorderAction) {\n this._actions.unshift(this._reorderAction);\n }\n }\n\n public addReorderAction(action: FsListAction) {\n const actionClickFn = action.click;\n this._actions.unshift(action);\n\n action.click = () => {\n this._filterRef.updateActions([this._doneAction]);\n this._filterRef.disableFilters();\n actionClickFn(null);\n };\n\n this._reorderAction = action;\n }\n\n public addReorderDoneAction(action: FsListAction) {\n this._doneAction = action;\n const actionClickFn = action.click;\n\n this._doneAction.click = () => {\n this._filterRef.updateActions(this._actions);\n this._filterRef.enableFilters();\n actionClickFn(null);\n };\n }\n\n public clearActions() {\n this._actions = [];\n this._destroy$.next(null);\n }\n\n public updateDisabledState(): void {\n this._filterRef.updateDisabledState();\n }\n}\n","export enum PaginationStrategy {\r\n Page = 'page',\r\n Offset = 'offset',\r\n Many = 'many',\r\n None = 'none',\r\n}\r\n","\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\n\nimport { PageChangeType } from '../enums/page-change-type.enum';\nimport { PaginationStrategy } from '../enums/pagination-strategy.enum';\nimport {\n FsListLoadMoreConfig,\n FsPaging,\n IPaginationState,\n PageChange,\n QueryManyStrategy,\n QueryOffsetStrategy,\n QueryPageStrategy,\n} from '../interfaces';\n\nexport class PaginationController {\n\n private _limit = 25;\n private _records: number;\n private _page = 1; // Active page\n private _pageRecords = 0;\n private _offset = 0;\n private _pages$ = new BehaviorSubject<number>(0); // Total pages\n private _strategy: PaginationStrategy = PaginationStrategy.None;\n private _removedRows = 0;\n private _pageChanged$ = new Subject<PageChange>();\n private _pageReset$ = new Subject<void>();\n private _onDestroy$ = new Subject();\n private _loadMoreConfig: FsListLoadMoreConfig;\n private _limits = [10, 25, 50, 100, 200];\n\n public set pages(value: number) {\n this._pages$.next(value);\n }\n\n public get pages(): number {\n return this._pages$.getValue();\n }\n\n public get page(): number {\n return this._page;\n }\n\n public set page(value: number) {\n this._page = value;\n }\n\n public get pageRecords(): number {\n return this._pageRecords;\n }\n\n public get offset(): number {\n return this._offset;\n }\n\n public get limit(): number {\n return this._limit;\n }\n\n public get records(): number {\n return this._records;\n }\n\n public set records(value: number) {\n this._records = value;\n }\n\n public get pages$(): Observable<number> {\n return this._pages$\n .pipe(\n distinctUntilChanged(),\n );\n }\n\n /**\n * Fire if page was changed\n */\n public get pageChanged$(): Observable<PageChange> {\n return this._pageChanged$.pipe(takeUntil(this._onDestroy$));\n }\n\n public get pageReset$(): Observable<void> {\n return this._pageReset$.asObservable();\n }\n\n /**\n * Get enabled\n */\n public get enabled(): boolean {\n return !this.hasNoneStrategy;\n }\n\n /**\n * Get Limits\n */\n public get limits(): number[] {\n return this._limits;\n }\n\n /**\n * Set limits, update pages array and set new limit per page\n *\n * @param value\n */\n public set limits(value) {\n this._limits = value;\n\n if (this._limits.length > 0 && this._limits.indexOf(this._limit) === -1) {\n this._limit = this._limits[0];\n } else if (this._limits.length === 0) {\n this._limit = this._records;\n }\n }\n\n /**\n * Get query for request\n */\n public get query() {\n switch (this.strategy) {\n case PaginationStrategy.Page:\n return this.queryPageStrategy;\n case PaginationStrategy.Offset:\n return this.queryOffsetStrategy;\n case PaginationStrategy.Many:\n return this.queryManyStrategy;\n }\n\n return {};\n }\n\n public get loadMoreQuery() {\n switch (this.strategy) {\n case PaginationStrategy.Page: {\n return this.query;\n }\n\n case PaginationStrategy.Offset: {\n const query = this.queryOffsetStrategy;\n\n query.limit = query.offset + query.limit;\n query.offset = 0;\n\n return query;\n }\n }\n\n return {};\n }\n\n /**\n * Query for Page Strategy\n */\n public get queryPageStrategy(): QueryPageStrategy {\n return this.hasNoneStrategy\n ? {}\n : {\n page: this._page || 1,\n limit: this._limit || 10,\n recordCount: true,\n };\n }\n\n /**\n * Query for Offset Strategy\n */\n public get queryOffsetStrategy(): QueryOffsetStrategy {\n const page = this._page - 1 || 0;\n const limit = this._limit || 5;\n\n return {\n offset: page * limit,\n limit,\n recordCount: true,\n };\n }\n\n public get queryManyStrategy(): QueryManyStrategy {\n return {\n ...this.queryOffsetStrategy,\n recordCount: false,\n };\n }\n\n /**\n * Get query for load only count of deleted rows\n */\n public get loadDeletedOffsetQuery() {\n const paginationOffset = this._limit * this._page;\n const actualOffset = Math.min(this._records, paginationOffset);\n const offset = Math.max(0, actualOffset - this._removedRows);\n\n return {\n offset,\n limit: this._removedRows,\n };\n }\n\n public get initialized() {\n return !!this.pages;\n }\n\n public get strategy() {\n return this._strategy;\n }\n\n public set strategy(strategy: PaginationStrategy) {\n this._strategy = (strategy === undefined) ? PaginationStrategy.Page : strategy;\n }\n\n /**\n * Check if pagination in Page Strategy Mode\n */\n public get hasPageStrategy() {\n return this.strategy === PaginationStrategy.Page;\n }\n\n /**\n * Check if pagination in Offset Strategy Mode\n */\n public get hasOffsetStrategy() {\n return this.strategy === PaginationStrategy.Offset;\n }\n\n /**\n * Check if pagination in None Strategy Mode\n */\n public get hasNoneStrategy(): boolean {\n return this.strategy === PaginationStrategy.None;\n }\n\n /**\n * Check if pagination in None Strategy Mode\n */\n public get hasManyStrategy(): boolean {\n return this.strategy === PaginationStrategy.Many;\n }\n\n /**\n * If prev page can be activated\n *\n */\n public get hasPrevPage(): boolean {\n switch (this.strategy) {\n case PaginationStrategy.Page:\n return this._hasPrevPagePageStrategy;\n case PaginationStrategy.Offset:\n return this._hasPrevPageOffsetStrategy;\n case PaginationStrategy.Many:\n return this._hasPrevPageManyStrategy;\n }\n\n return false;\n }\n\n /**\n * If next page can be activated\n */\n public get hasNextPage(): boolean { // Need to check if pages === page && page === 1\n switch (this.strategy) {\n case PaginationStrategy.Page:\n return this._hasNextPagePageStrategy;\n case PaginationStrategy.Offset:\n return this._hasNextPageOffsetStrategy;\n case PaginationStrategy.Many:\n return !!this._pageRecords && this._limit === this._pageRecords;\n }\n\n return false;\n }\n\n public get loadMoreEnabled(): boolean {\n return this._loadMoreConfig.enabled;\n }\n\n public get loadMoreLabel(): string {\n return this._loadMoreConfig.label;\n }\n\n public get loadMoreButtonColor(): string {\n return this._loadMoreConfig.buttonColor;\n }\n\n public get loadMoreButtonClass(): string {\n if( this._loadMoreConfig.buttonType === 'basic' ) {\n return ''; \n }\n\n return `mat-${this._loadMoreConfig.buttonType}-button`;\n }\n\n public get loadMoreButtonType(): string {\n return this._loadMoreConfig.buttonType;\n }\n\n /**\n * SP-T1974\n * Showing 26-50 of 333 results sorted by Name, Ascending\n * Showing 0 results sorted by Name, Ascending\n */\n public get statusLabel(): string {\n const status = this.hasManyStrategy ?\n this.manyStatus : \n this.defaultStatus;\n\n return Object.values(status)\n .filter((value) => !!value)\n .join('-');\n }\n\n public get manyStatus(): { from: number, to: number } {\n const current = (this._page - 1) * this._limit;\n const from = current + 1;\n \n if(this._pageRecords === 0) {\n return { from: current, to: 0 };\n }\n\n return this._pageRecords < this._limit ?\n { from, to: current + this._pageRecords } :\n { from, to: current + this._limit };\n }\n\n public get defaultStatus(): { from: number, to: number } {\n const current = (this._page - 1) * this._limit;\n const from = current + 1;\n const to = Math.min(this._records, current + this._limit);\n\n return { from, to };\n }\n\n public get state(): IPaginationState {\n return {\n enabled: this.enabled,\n strategy: this.strategy,\n page: this._page,\n offset: this._offset,\n limit: this._limit,\n records: this._records,\n pageRecords: this._pageRecords,\n };\n }\n\n public initWithConfig(\n config: FsPaging | false,\n loadMore: FsListLoadMoreConfig | boolean,\n ) {\n\n if (config) {\n if (config.limits) {\n this._limits = config.limits;\n }\n\n if (config.limit) {\n this._limit = config.limit;\n }\n\n this.strategy = config.strategy;\n }\n \n this.setLoadMore(loadMore);\n }\n\n /**\n * If pagination has prev page when Page Strategy\n */\n private get _hasPrevPagePageStrategy(): boolean {\n return this._page > 1 && this.pages > 1;\n }\n\n /**\n * If pagination has prev page when Offset Strategy\n */\n private get _hasPrevPageOffsetStrategy(): boolean {\n return this._offset >= this._limit && this._records > 1;\n }\n\n /**\n * If pagination has prev page when Offset Strategy\n */\n private get _hasPrevPageManyStrategy(): boolean {\n return this._offset > 0;\n }\n\n /**\n * If pagination has next page when Page Strategy\n */\n private get _hasNextPagePageStrategy(): boolean {\n return this._page < this.pages && this.pages > 1;\n }\n\n /**\n * If pagination has next page when Offset Strategy\n */\n private get _hasNextPageOffsetStrategy(): boolean {\n return (this._offset + this._limit) < this._records && this._records > 1;\n }\n\n /**\n * Update paging config and all related fields\n */\n public updatePaging(config, pageRecords: number = 0, loadMoreOperation = false) {\n if (!loadMoreOperation) {\n this._fromParams(config);\n this._pageRecords = pageRecords;\n } else {\n this._records = config.records;\n\n if (this._records < this._pageRecords) {\n this._pageRecords = this._records;\n }\n\n this._removedRows = 0;\n }\n\n this._updateTotalPages();\n }\n\n // /**\n // * Update paging when data source not remove\n // * @param {any[]} rows\n // */\n /*public updatePagingManual(rows: any[]) {\n if (Array.isArray(rows) && rows.length > 0) {\n this._records = rows.length;\n this.pages = Math.ceil(rows.length / this._limit);\n }\n\n this.updatePagesArray();\n this.updateDisplayed();\n }*/\n\n /**\n * Update pages array with new pages count\n */\n // public updatePagesArray() {\n // const MIDDLE = 2;\n // const pagesArr = [];\n\n // let from = 0;\n // let to = 0;\n // if (this._page < MIDDLE) {\n // from = MIDDLE - 1;\n // to = MIDDLE + 1;\n // } else if (this._page >= MIDDLE && this._page <= this.pages - MIDDLE + 1) {\n // from = this._page - 1;\n // to = this._page + 1;\n // } else if (this._page > this.pages - MIDDLE + 1) {\n // from = this.pages - MIDDLE - 1;\n // to = this.pages;\n // }\n\n // if (!this.pages || this.pages < 5) {\n // from = 1;\n // to = this.pages || 0;\n // }\n\n // for (let i = from; i <= to; i++) {\n // pagesArr.push(i);\n // }\n\n // this.pagesArray = Object.assign([], pagesArr);\n // }\n\n public setLoadMore(config: FsListLoadMoreConfig | boolean) {\n const loadMoreConfig = typeof config === 'boolean' ? \n {\n enabled: !!config,\n } : \n (\n config === undefined ? {} : {\n ...config,\n enabled: true,\n }\n );\n\n this._loadMoreConfig = {\n enabled: false,\n label: 'Load More',\n buttonType: 'basic',\n ...loadMoreConfig,\n };\n }\n\n public getPageRecords() {\n return this._pageRecords;\n }\n\n /**\n * Set new limit\n *\n * @param limit\n */\n public setLimit(limit) {\n this._limit = limit;\n this.resetPaging();\n\n this._pageChanged$\n .next({\n type: PageChangeType.LimitChanged,\n payload: limit,\n });\n }\n\n /**\n * If page is activate page\n *\n * @param page\n */\n public isActive(page): boolean {\n return page === this._page;\n }\n\n /**\n * Go to page\n *\n * @param page\n */\n public goToPage(page) {\n if (page >= 1 && this._page !== page) {\n this._page = page;\n\n this._updateOffset();\n\n this._pageChanged$.next({\n type: PageChangeType.Default,\n payload: page,\n });\n }\n }\n\n /**\n * Reset paging like it was just initialized\n */\n public resetPaging() {\n this._page = 1;\n this._offset = 0;\n }\n\n /**\n * Go to next page\n */\n public goNext() {\n if (this.hasNextPage) {\n this._page++;\n this._updateOffset();\n\n this._pageChanged$.next({\n type: PageChangeType.Default,\n payload: this._page,\n });\n }\n }\n\n /**\n * Go to first page\n */\n public goFirst() {\n if (this._page > 1) {\n this._page = 1;\n this._updateOffset();\n\n this._pageChanged$.next({\n type: PageChangeType.Default,\n payload: this._page,\n });\n }\n }\n\n /**\n * Go to prev page\n */\n public goPrev() {\n if (this._page > 1) {\n this._page--;\n\n this._updateOffset();\n\n this._pageChanged$.next({\n type: PageChangeType.Default,\n payload: this._page,\n });\n }\n }\n\n /**\n * Go to last page\n */\n public goLast() {\n if (this._page !== this.pages) {\n this._page = this.pages;\n\n this._updateOffset();\n\n this._pageChanged$.next({\n type: PageChangeType.Default,\n payload: this._page,\n });\n }\n }\n\n /**\n * Update count of deleted rows. This count will be applied for offset calc\n *\n * @param count\n */\n public removeRows(count: number) {\n this._removedRows += count;\n }\n\n public updatePagination() {\n this._updateTotalPages();\n }\n\n /**\n * Destroy\n */\n public destroy() {\n this._onDestroy$.next(null);\n this._onDestroy$.complete();\n }\n\n /**\n * Update paging state\n *\n * @param params\n */\n private _fromParams(params): void {\n if (!this.loadMoreEnabled) {\n this._limit = params.limit ?? 25;\n }\n\n this._records = params.records;\n this.pages = params.pages || 0;\n }\n\n /**\n * Calc and update offset\n */\n private _updateOffset() {\n this._offset = this._limit * (this._page - 1);\n }\n\n /**\n * Calc and update total count of pages\n */\n private _updateTotalPages() {\n this.pages = Math.ceil(this._records / this._limit);\n }\n}\n","import { ElementRef, TemplateRef } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport {\n ChangeFn, FilterConfig, FsFilterAutoReload, IFilterSavedFiltersConfig, ItemType,\n} from '@firestitch/filter';\nimport { SelectionDialog } from '@firestitch/selection';\n\nimport {\n BehaviorSubject, combineLatest, EMPTY, from, Observable, of, Subject,\n} from 'rxjs';\nimport {\n catchError, debounceTime,\n delay,\n map, mapTo, shareReplay, switchMap, take, takeUntil, tap,\n} from 'rxjs/operators';\n\nimport { cloneDeep } from 'lodash-es';\n\nimport { PageChangeType } from '../enums/page-change-type.enum';\nimport { FsListState } from '../enums/state.enum';\nimport {\n FsListAfterContentInitFn,\n FsListAfterFetchFn,\n FsListAfterInitFn,\n FsListBeforeFetchFn,\n FsListConfig,\n FsListEmptyStateConfig,\n FsListFetchFn,\n FsListFetchOptions,\n FsListFetchSubscription,\n FsListGroupConfig,\n FsListLoadMoreConfig,\n FsListNoResultsConfig,\n FsListPersitance,\n FsListRestoreConfig,\n FsListRowAction,\n FsListRowActionGroup,\n FsListSelectionConfig,\n FsListTrackByFn,\n FsPaging,\n PageChange,\n} from '../interfaces';\nimport { SortingDirection } from '../models/column.model';\nimport { StyleConfig } from '../models/styleConfig.model';\n\nimport { ColumnsController } from './columns-controller';\nimport { DataController } from './data-controller';\nimport { ExternalParamsController } from './external-params-controller';\nimport { ActionsController } from './index';\nimport { PaginationController } from './pagination-controller';\nimport { PersistanceController } from './persistance-controller';\nimport { SelectionController } from './selection-controller';\nimport { SortingController } from './sorting-controller';\n\nconst showDeletedFilterKey = 'showDeleted';\n\n\nexport class List {\n\n public heading: string;\n public trackBy: string;\n public subheading: string;\n public autoFocus: boolean;\n public rowHoverHighlight: boolean;\n public rowActionsRaw: (FsListRowActionGroup | FsListRowAction)[];\n public groupActionsRaw: any[];\n public rowClass;\n public rowEvents: any;\n public restore: FsListRestoreConfig;\n public persist: FsListPersitance;\n public filters = [];\n public filterInitCb: ChangeFn;\n public filterChangeCb: ChangeFn;\n public savedFilters: IFilterSavedFiltersConfig;\n public noResults: FsListNoResultsConfig;\n public emptyState: FsListEmptyStateConfig;\n public fetchFn: FsListFetchFn;\n public beforeFetchFn: FsListBeforeFetchFn;\n public afterFetchFn: FsListAfterFetchFn;\n public afterContentInit: FsListAfterContentInitFn;\n public afterInit: FsListAfterInitFn;\n public style;\n public hasRowActions;\n public rowActionsHover = false;\n public paging: PaginationController;\n public columns: ColumnsController;\n public actions: ActionsController;\n public dataController: DataController;\n public sorting: SortingController;\n public externalParams: ExternalParamsController;\n public selection: SelectionController;\n public filterConfig: FilterConfig = null;\n public filterBaseConfig: Partial<FilterConfig> = null;\n public status = true;\n public chips = false;\n public queryParam = false;\n public restoreMode = false;\n public autoReload: FsFilterAutoReload;\n public initialFetch = true;\n public emptyStateEnabled = false;\n public emptyStateTemplate: TemplateRef<any>;\n\n private _loading$ = new BehaviorSubject(false);\n private _fetchComplete$ = new Subject<{ scrollIntoView?: boolean }>();\n private _filtersReady$ = new Subject<void>();\n private _destroy$ = new Subject();\n private _initialized$ = new BehaviorSubject(false);\n private _fetch$ = new Subject<FsListFetchSubscription | void>();\n private readonly _filtersQuery = new BehaviorSubject<Record<string, any>>(null);\n private readonly _headerConfig: StyleConfig;\n private readonly _groupCellConfig: StyleConfig;\n private readonly _cellConfig: StyleConfig;\n private readonly _footerConfig: StyleConfig;\n\n constructor(\n private _el: ElementRef,\n private _config: FsListConfig = {},\n private _selectionDialog: SelectionDialog,\n private _route: ActivatedRoute,\n private _persistance: PersistanceController,\n private _inDialog: boolean,\n ) {\n this.columns = new ColumnsController(this._persistance);\n this.actions = new ActionsController();\n this.paging = new PaginationController();\n this.dataController = new DataController();\n this.sorting = new SortingController();\n\n this._initialize(_config);\n this._headerConfig = new StyleConfig(_config.header);\n this._groupCellConfig = new StyleConfig(_config.cell);\n this._cellConfig = new StyleConfig(_config.cell);\n this._footerConfig = new StyleConfig(_config.footer);\n this._initialized$.next(true);\n this.subscribe();\n\n if (this.initialFetch) {\n this.dataController.setOperation(FsListState.Load);\n this._fetch$.next(null);\n }\n }\n\n public get loading$(): Observable<boolean> {\n return this._loading$.asObservable();\n }\n\n public filtersReady() {\n this._filtersReady$.next(null);\n }\n\n public get filtersReady$(): Observable<void> {\n return this._filtersReady$.asObservable();\n }\n\n public get fetch$(): Observable<FsListFetchSubscription | void> {\n return this._fetch$.asObservable();\n }\n\n public get fetchComplete$(): Observable<{ scrollIntoView?: boolean }> {\n return this._fetchComplete$.asObservable();\n }\n\n public get hasSavedFilters(): boolean {\n return !!this.filterConfig.savedFilters;\n }\n\n public get filtersQuery(): Record<string, any> {\n return this._filtersQuery.getValue();\n }\n\n public get filtersQuery$(): Observable<Record<string, any>> {\n return this._filtersQuery.asObservable()\n .pipe(\n map((v) => v || {}),\n );\n }\n\n public get activeFiltersCount$(): Observable<number> {\n return this.filtersQuery$\n .pipe(\n map((v) => {\n return Object.keys(v)\n .filter((key) => key !== 'order');\n }),\n map((v) => v.length),\n shareReplay(),\n );\n }\n\n public get destroy$(): Observable<any> {\n return this._destroy$;\n }\n\n public get initialized$(): Observable<boolean> {\n return this._initialized$;\n }\n\n public fetchRemote(query): Observable<any> {\n const options: FsListFetchOptions = {\n state: this.dataController.operation,\n };\n\n const result: any = this.fetchFn(query, options);\n\n return result instanceof Promise ? from(result) : result;\n }\n\n // public loadLocal() {\n // this.paging.updatePagingManual(this._rows);\n // const from = (this.paging.page - 1) * this.paging.limit;\n // const to = (this.paging.page === 1) ? this.paging.limit : this.paging.limit * this.paging.page;\n // const sliceOfRows = this._rows.slice(from, to);\n // this.data$.next(sliceOfRows);\n // }\n\n /**\n * Transform templates for using\n *\n * @param templates\n */\n public tranformTemplatesToColumns(templates) {\n const defaultConfigs = {\n header: this._headerConfig,\n groupCell: this._groupCellConfig,\n cell: this._cellConfig,\n footer: this._footerConfig,\n };\n\n this.columns.setDefaults(defaultConfigs);\n this.columns.initializeColumns(templates);\n\n // Set sortBy default column\n this._updateSortingColumns();\n\n // Default sort by\n const externalSorting = this.externalParams.externalSorting;\n const initialSortConfig = externalSorting || this._config.sort;\n this.sorting.initialSortBy(initialSortConfig);\n\n if (externalSorting && !this.sorting.isDefined) {\n this.externalParams.clearSortingParams();\n\n console.warn('Not able to restore persisted sorting params.', externalSorting);\n }\n\n this._initFilters();\n }\n\n public reload(): Observable<any> {\n this._loading$.next(true);\n this.dataController.setOperation(FsListState.Reload);\n this._fetch$.next(null);\n\n return this._fetchComplete$\n .asObservable()\n .pipe(\n take(1),\n delay(0),\n );\n }\n\n /**\n * Watch page changes\n */\n public subscribe() {\n this.paging.pageChanged$\n .pipe(\n tap((event: PageChange) => {\n this.dataController.setOperation(FsListState.PageChange);\n\n // Remove all rows if limits was changed\n if (event.type === PageChangeType.LimitChanged && this.paging.hasPageStrategy) {\n this.dataController.clearRows();\n }\n\n if (this.paging.hasOffsetStrategy) {\n this.paging.updatePagination();\n\n if (this.selection) {\n this.selection.updateVisibleRecordsCount(this.paging.getPageRecords());\n this.selection.updateTotalRecordsCount(this.paging.records);\n this.selection.pageChanged();\n }\n }\n }),\n switchMap((event: any) => {\n this._fetch$.next(null);\n if (!this.paging.loadMoreEnabled) {\n const contains = [].slice.call(document.querySelectorAll('.cdk-overlay-container'))\n .some((overlay) => {\n return this._el.nativeElement.contains(overlay);\n });\n\n let el = this._el.nativeElement;\n\n if (!contains) {\n const rect = this._el.nativeElement.getBoundingClientRect();\n if ((Number(rect.top || 0) + window.pageYOffset) < window.innerHeight) {\n el = document.body;\n }\n }\n\n return this._fetchComplete$\n .asObservable()\n .pipe(\n take(1),\n tap(() => {\n if(event?.scrollIntoView ?? true) {\n el.scrollIntoView({ behavior: 'smooth' });\n }\n }),\n );\n }\n\n return of(null);\n }),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n this.sorting.sortingChanged$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.dataController.setOperation(FsListState.Sort);\n this.paging.page = 1;\n this._fetch$.next(null);\n });\n\n this._listenVisibleColumnChanges();\n this._listenRowsRemove();\n this._listenFetch();\n }\n\n public getData(trackBy?: FsListTrackByFn) {\n let rowsData = this.dataController\n .visibleRowsData;\n\n if (trackBy) {\n rowsData = rowsData\n .filter(trackBy);\n }\n\n return rowsData\n .map((data) => {\n return cloneDeep(data);\n });\n }\n\n public hasData(trackBy: FsListTrackByFn) {\n return this.dataController.visibleRowsData.some(trackBy);\n }\n\n /**\n * Toggle group mode status\n *\n * @param value\n */\n public groupEnabled(value: boolean) {\n if (this.dataController.groupEnabled !== value) {\n this.dataController.groupEnabled = value;\n\n // Commented out because Ray wants to change group status in fetch map pipe\n // and it triggers extra requests\n // this.reload();\n }\n }\n\n public destroy() {\n if (this.paging) {\n this.paging.destroy();\n }\n\n if (this.sorting) {\n this.sorting.destroy();\n }\n\n if (this.selection) {\n this.selection.destroy();\n }\n\n if (this.filterConfig) {\n this.filterConfig = null;\n }\n\n if (this.externalParams) {\n this.externalParams.destroy();\n }\n\n this.columns.destroy();\n\n this._destroy$.next(null);\n this._destroy$.complete();\n\n this.dataController.destroy();\n }\n\n /**\n * Do initialization of table\n *\n * @param config\n */\n private _initialize(config: FsListConfig) {\n this._initVariables(config);\n this._initDefaultOptions(config);\n this._initRestore();\n this._initActions(config);\n this._initPaging(config.paging, config.loadMore);\n this._initSelection(config.selection, this._selectionDialog);\n this._initGroups(config.group);\n this._initExternalParamsController();\n this._initializeData();\n }\n\n // eslint-disable-next-line max-statements\n private _initVariables(config: FsListConfig) {\n this.autoFocus = config.autoFocus;\n this.rowHoverHighlight = config.rowHoverHighlight ?? true;\n this.heading = config.heading;\n this.trackBy = config.trackBy;\n this.subheading = config.subheading;\n this.rowActionsRaw = config.rowActions;\n this.rowClass = config.rowClass;\n this.rowEvents = config.rowEvents;\n this.restore = config.restore;\n this.persist = config.persist;\n this.filters = config.filters ?? [];\n this.filterBaseConfig = config.filterConfig ?? null;\n this.filterInitCb = config.filterInit;\n this.filterChangeCb = config.filterChange;\n this.savedFilters = config.savedFilters;\n this.noResults = config.noResults;\n this.emptyState = config.emptyState;\n this.fetchFn = config.fetch;\n this.afterFetchFn = config.afterFetch;\n this.beforeFetchFn = config.beforeFetch;\n this.afterInit = config.afterInit;\n this.style = config.style;\n this.autoReload = config.autoReload;\n this.columns.initConfig(config.column);\n }\n\n /**\n * Just init options by default it it wasn't specified\n *\n * @param config\n */\n private _initDefaultOptions(config) {\n // We should prevent initial fetch in cases when it will be fetched in any case\n // As ex. scrollable or filter will do fetch in any cases\n if (config.initialFetch === false || config.scrollable) { // TODO fixme after tsmodel version update\n this.initialFetch = false;\n }\n if (config.status === false) {\n this.status = false;\n }\n if (config.chips) {\n this.chips = config.chips;\n }\n\n if (this._inDialog) {\n this.queryParam = false;\n } else {\n this.queryParam = (config.queryParam === undefined)\n ? true\n : config.queryParam;\n }\n\n if (config.sorts) {\n this.sorting.initFakeColumns(config.sorts);\n }\n if (!config.trackBy) {\n this.trackBy = 'id';\n }\n\n if (config.afterContentInit) {\n this.afterContentInit = () => {\n config.afterContentInit(this.paging.query, this.dataController.visibleRows);\n };\n }\n }\n\n /**\n * Init restore row action and append Show Deleted option into filters\n */\n private _initRestore() {\n if (this.restore) {\n const restoreAction = {\n label: this.restore.menuLabel || 'Restore',\n menu: true,\n click: (row) => {\n this._restoreClick(this.restore.click, row);\n }, // TODO fix me, move to special file\n restore: true,\n };\n\n if (!this.rowActionsRaw) {\n this.rowActionsRaw = [];\n }\n\n this.rowActionsRaw.push(restoreAction);\n this.filters = this.filters || [];\n\n if (this.restore.filter !== false) {\n this.filters.push({\n name: showDeletedFilterKey,\n type: ItemType.Checkbox,\n label: this.restore.filterLabel || 'Show Deleted',\n default: null,\n });\n }\n }\n\n }\n\n /**\n * Init paging\n *\n * @param pagingConfig\n * @param loadMore\n */\n private _initPaging(pagingConfig: FsPaging | false, loadMore: FsListLoadMoreConfig | boolean) {\n this.paging.initWithConfig(pagingConfig, loadMore);\n }\n\n /**\n * Split actions by categories\n */\n private _initActions(config) {\n if (config.actions) {\n this.actions.setActions(config.actions);\n }\n\n this.rowActionsHover = config.rowActionsHover ?? false;\n\n this.hasRowActions =\n (this.rowActionsRaw && this.rowActionsRaw.length > 0)\n || (this.groupActionsRaw && this.groupActionsRaw.length > 0);\n }\n\n private _initSelection(\n selectionConfig: FsListSelectionConfig,\n selectionDialog: SelectionDialog,\n ) {\n if (selectionConfig) {\n this.selection = new SelectionController(selectionConfig, this.trackBy, selectionDialog);\n this.selection.setRowsCallback(() => this.dataController.visibleRows);\n }\n }\n\n private _initializeData() {\n this.dataController.setAdditionalConfigs({\n loadMoreEnabled: this.paging.loadMoreEnabled,\n });\n }\n\n private _initGroups(groupConfig: FsListGroupConfig) {\n if (groupConfig) {\n this.dataController.setGroupConfig(groupConfig);\n this.groupActionsRaw = groupConfig.actions;\n }\n }\n\n private _initExternalParamsController() {\n this.externalParams = new ExternalParamsController(\n this._route,\n this._persistance,\n this.paging,\n this.sorting,\n this.queryParam,\n );\n }\n\n /**\n * Subscribe to fetch$ event with debounce\n */\n private _listenFetch() {\n let fetch$ = this.fetch$;\n\n // Should wait until saved filters not loaded\n if (this.filters) {\n fetch$ = combineLatest([fetch$, this._filtersReady$])\n .pipe(\n map(([params]) => params),\n );\n }\n\n fetch$\n .pipe(\n debounceTime(50),\n tap(() => {\n this._loading$.next(true);\n }),\n tap(() => {\n this.selection?.closeSelectionDialog();\n }),\n map((params: FsListFetchSubscription) => {\n let query = { ...this.filtersQuery };\n\n if (this.paging.hasOffsetStrategy && params?.loadOffset) {\n query = Object.assign(query, this.paging.loadDeletedOffsetQuery);\n } else {\n const allRecordsRangeNeeded = (this.initialFetch\n || this.dataController.operation === FsListState.Reload\n ) && this.paging.loadMoreEnabled;\n\n query = allRecordsRangeNeeded ?\n Object.assign(query, this.paging.loadMoreQuery) :\n Object.assign(query, this.paging.query);\n }\n\n if (this.sorting.sortingColumn) {\n Object.assign(\n query,\n {\n order: `${this.sorting.sortingColumn.name},${this.sorting.sortingColumn.direction}`,\n },\n );\n }\n\n if (this.columns.configured) {\n query = {\n ...query,\n columns: this.columns.visibleColumnsNames,\n };\n }\n\n return { params, query };\n }),\n switchMap(({ params, query }) => {\n if (!this.columns.columnsFetched) {\n return this.columns.loadRemoteColumnConfigs()\n .pipe(\n mapTo({ params, query }),\n );\n }\n\n return of({ params, query });\n }),\n switchMap(({ params, query }) => {\n if (this.beforeFetchFn) {\n return this.beforeFetchFn(query)\n .pipe(\n map((beforeFetchQuery) => ({ params, query: beforeFetchQuery })),\n catchError((error) => {\n console.error(error);\n\n return EMPTY;\n }),\n );\n }\n\n return of({ params, query });\n }),\n switchMap(({ params, query }) => {\n const remoteFetch = this.fetchRemote(query)\n .pipe(\n catchError((error) => {\n console.error(error);\n this._loading$.next(false);\n\n return EMPTY;\n }),\n );\n\n return combineLatest<any>([of({ params, query }), remoteFetch]);\n }),\n catchError((error) => {\n console.error(error);\n this._loading$.next(false);\n\n return EMPTY;\n }),\n takeUntil(this._destroy$),\n )\n .subscribe(([paramsQuery, response]) => {\n this.initialFetch = false;\n this._completeFetch(paramsQuery.params, paramsQuery.query, response);\n });\n }\n\n private _listenRowsRemove() {\n this.dataController.rowsRemoved$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((rows: any[]) => {\n if (this.paging.enabled) {\n\n const removedCount = rows.length;\n\n if (this.paging.hasPageStrategy) {\n this._noDataPaginationUpdate(removedCount);\n } else {\n // Fetch more if has something for fetch\n if (this.dataController.hasData || this.paging.hasNextPage) {\n this.dataController.setOperation(FsListState.LoadMore);\n\n this.paging.removeRows(removedCount);\n this._fetch$.next({ loadOffset: true });\n } else {\n this._noDataPaginationUpdate(removedCount);\n }\n }\n }\n\n // Remove from selection\n if (this.selection) {\n rows.forEach((row) => {\n this.selection.removeRow(row.data);\n });\n }\n });\n }\n\n /**\n * Lister may have originally hidden columns, but visibility of those columns\n * can be changed programmaticaly in any time\n */\n private _listenVisibleColumnChanges(): void {\n this.columns.visibleColumns$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._updateSortingColumns();\n });\n }\n\n /**\n * Update and watch filter changes\n */\n private _initFilters() {\n if (this.filterConfig) {\n return;\n }\n\n const sortConfig = this.sorting.sortingColumn\n ? { value: this.sorting.sortingColumn.name, direction: this.sorting.sortingColumn.direction }\n : null;\n\n // Config\n // Baseline filter config is spread first so the list's own dedicated options\n // (below) take precedence where they overlap, while any extra filter options\n // (e.g. minSecondaryItems) flow through unchanged.\n this.filterConfig = {\n ...this.filterBaseConfig,\n items: this.filters || [],\n savedFilters: this.savedFilters,\n actions: this.actions.actions,\n queryParam: this.queryParam,\n autofocus: this.autoFocus,\n sort: sortConfig,\n chips: this.chips,\n autoReload: this.autoReload,\n init: this._filterInit.bind(this),\n change: this._filterChange.bind(this),\n reload: (this._config.reload ?? true)\n ? this._filterReload.bind(this)\n : undefined,\n sortChange: this._filterSort.bind(this),\n heading: this.heading,\n subheading: this.subheading,\n };\n\n if(this._persistance.queryEnabled) {\n this.filterConfig.persist = {\n name: this._persistance.name,\n };\n }\n }\n\n /**\n * Callback when Filter has been initialized\n *\n * @param filters\n */\n private _filterInit(query) {\n if (this.filterInitCb) {\n this.filterInitCb(query);\n }\n\n query = this._processRestoreQuery(query);\n\n this._filtersQuery.next(query);\n\n this.filtersReady();\n }\n\n /**\n * Callback when Filter has been changed\n *\n * @param query\n * @param sort\n */\n private _filterChange(query, sort) {\n if (this.filterChangeCb) {\n this.filterChangeCb(query, sort);\n }\n\n query = this._processRestoreQuery(query);\n\n this._filtersQuery.next(query);\n\n if (this.restore && this.restore.reload) {\n this.reload();\n }\n\n this.dataController.setOperation(FsListState.Filter);\n\n // Reset paging for request with correct offset\n this.paging.resetPaging();\n this._fetch$.next(null);\n }\n\n /**\n * Callback when the filter reload button is clicked.\n *\n * Unlike a filter change, a reload must preserve the current page/offset,\n * so we route to reload() which keeps paging intact instead of resetting it.\n *\n * @param query\n * @param sort\n */\n private _filterReload(query, sort) {\n if (this.filterChangeCb) {\n this.filterChangeCb(query, sort);\n }\n\n query = this._processRestoreQuery(query);\n\n this._filtersQuery.next(query);\n\n this.reload();\n }\n\n private _processRestoreQuery(query) {\n this.restoreMode = false;\n // Restore option\n if (this.restore && query[showDeletedFilterKey]) {\n query = Object.keys(query)\n .filter((key) => key !== showDeletedFilterKey)\n .reduce((acc, key) => {\n return {\n ...acc,\n [key]: query[key],\n };\n }, {});\n\n query = {\n ...query,\n ...this.restore.query,\n };\n\n this.restoreMode = true;\n }\n\n return query;\n }\n\n // Callback when Filter sort has been changed\n private _filterSort(filterQuery, filterSort) {\n if (filterSort) {\n this.sorting.sortByColumnWithName(filterSort.value);\n\n const sortDirection = filterSort.direction === 'asc' ? SortingDirection.asc : SortingDirection.desc;\n this.sorting.sortDirection(sortDirection);\n } else {\n // FIXME need to be refactored...\n this.sorting.sortingColumn = undefined;\n this.reload();\n }\n }\n\n private _completeFetch(params, query, response) {\n if (!this.paging.page) {\n this.paging.page = 1;\n }\n\n if (response.paging) {\n const pageRecords = (Array.isArray(response.data) && response.data.length) || 0;\n this.paging.updatePaging(\n response.paging,\n pageRecords,\n this.dataController.operation === FsListState.LoadMore,\n );\n } else if (this.paging.enabled) {\n console.log(\n '%c FsList Warning ',\n 'color: white; background-color: #ffcc0b',\n 'Pagination does not configured properly. ' +\n 'Pagination is enabled, but http response does not contain \"paging\" field. ' +\n 'You have to set \"paging: false\" in config or add \"paging\" field to response.',\n );\n }\n\n /// must be before selection, because seletion use records\n this.dataController.setRowsFromResponse(response.data);\n ///\n\n this._completeFetchUpdateSelecton(response);\n\n if (this.emptyState?.validate && this.emptyStateTemplate) {\n this.emptyStateEnabled = this.emptyState.validate(query, cloneDeep(this.dataController.visibleRowsData));\n }\n\n if (this.afterFetchFn) {\n this.afterFetchFn(query, this.dataController.visibleRowsData);\n }\n\n // case when have removed all results from last page\n if (this.dataController.visibleRows.length === 0\n && this.paging.page > 1\n && this.paging.page > this.paging.pages\n ) {\n this.paging.goLast();\n }\n\n this._fetchComplete$.next({ scrollIntoView: params?.scrollIntoView });\n this._loading$.next(false);\n }\n\n private _completeFetchUpdateSelecton(response) {\n // Update selection params\n if (this.selection) {\n if (this.paging.enabled) {\n this.selection.pageChanged();\n this.selection.updateVisibleRecordsCount(this.paging.getPageRecords());\n this.selection.updateTotalRecordsCount(this.paging.records);\n } else {\n const count = response.paging && response.paging.records\n || Array.isArray(response.data) && response.data.length;\n\n this.selection.updateVisibleRecordsCount(count);\n this.selection.updateTotalRecordsCount(count);\n }\n\n this.selection.selectedRowsIntersection(this.dataController.visibleRowsData);\n }\n }\n\n /**\n * Will do some actions if you removed item and item was last on his own page\n *\n * Ex: if list has 3 pages and on third page you have only one item. And you just deleted this item.\n * You must go to second page, but if it was last page and you can't go back -> just reload\n *\n * @param deletedCount\n */\n private _noDataPaginationUpdate(deletedCount) {\n if (!this.dataController.hasData) {\n if (this.paging.page > 1) {\n this.paging.goToPage(this.paging.page - 1 || 1);\n } else {\n this.reload();\n }\n }\n\n this.paging.records -= deletedCount;\n this.paging.updatePagination();\n\n if (this.dataController.hasData && this.selection) {\n this.selection.updateVisibleRecordsCount(this.dataController.visibleRowsCount);\n this.selection.updateTotalRecordsCount(this.paging.records);\n }\n }\n\n /**\n * Temporary solution, will do auto subscribe if was returned Observable.\n *\n * TODO: MOVE THIS PEACE OF CODE TO SPECIAL PLACE\n *\n * @param restoreClickCallback\n * @param row\n */\n private _restoreClick(restoreClickCallback, row) {\n const restoreClickResult = restoreClickCallback(row);\n\n if (restoreClickResult instanceof Observable) {\n restoreClickResult\n .pipe(\n take(1),\n takeUntil(this._destroy$),\n )\n .subscribe({\n next: () => this.reload(),\n });\n }\n }\n\n private _updateSortingColumns(): void {\n this.sorting.clearSortableColumns();\n this.columns.columns\n .filter((column) => column.sortable && column.visible)\n .forEach((column) => {\n this.sorting.addSortableColumn(column);\n });\n }\n}\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[fs-list-heading],[fsListHeading]',\r\n standalone: true,\r\n})\r\nexport class FsListHeadingDirective {\r\n}\r\n","import { Directive, Input } from '@angular/core';\n\nimport type { FsListConfig } from '../../interfaces/listconfig.interface';\n\n\n@Directive({\n selector: '[fs-list-cell],[fsListCell]',\n standalone: true,\n})\nexport class FsListCellDirective<T = any> {\n\n @Input() public colspan;\n @Input() public align: string;\n @Input('class') public className: string | string[];\n /**\n * Typing anchor (e.g. `readonly anchor = {} as MyRow` then `[rowType]=\"anchor\"`).\n * The value is only used for template type inference; it can be an empty object cast.\n */\n @Input('fsListCell') public rowType?: T;\n\n\n /**\n * Same as `rowType`, for `*fsListCell=\"anchor\"` microsyntax (`*fsListCell` expands to `[fsListCell]=\"...\"`).\n * Pass a **component property** typed as `T` — not a type name (interfaces are not runtime values).\n */\n // @Input('fsListCell')\n // public set fsListCellAnchor(value: T | undefined) {\n // this.rowType = value;\n // }\n\n /**\n * Filled by `fs-list` from merged `[config]` when you omit `[rowType]` / `[fsListCell]` and `cellRowType` is unset.\n * Optional: bind `[configTyping]=\"config\"` for strictTemplates / IDE narrowing.\n */\n @Input() public configTyping?: FsListConfig<T>;\n\n public static ngTemplateContextGuard<T>(\n directive: FsListCellDirective<T>,\n context: unknown,\n ): context is {\n $implicit: T,\n row: T,\n index: number,\n group: any,\n groupRow: any,\n groupIndex: number,\n groupChildren: T[],\n expanded: boolean,\n } {\n return true;\n }\n}\n","import { Directive, Input } from '@angular/core';\r\n\r\n@Directive({\n selector: '[fs-list-footer]',\n standalone: true\n})\r\nexport class FsListFooterDirective {\r\n @Input() public colspan;\r\n @Input() public align: string;\r\n @Input('class') public className: string | string[];\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n\n@Injectable()\nexport class GroupExpandNotifierService implements OnDestroy {\n\n private _expandStatusChanged$ = new Subject();\n private _destroy$ = new Subject();\n\n get expandStatusChange$() {\n return this._expandStatusChanged$.pipe(\n takeUntil(this._destroy$)\n )\n }\n public toggleExpandStatus(rowData: any) {\n this._expandStatusChanged$.next(rowData);\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n}\n","import { Directive, HostListener, Input, inject } from '@angular/core';\r\nimport { GroupExpandNotifierService } from '../../services/group-expand-notifier.service';\r\n\r\n\r\n@Directive({\n selector: '[fsListGroupExpandTrigger]',\n standalone: true\n})\r\nexport class FsListGroupExpandTriggerDirective {\n private _expandNotifier = inject(GroupExpandNotifierService);\n\r\n\r\n @HostListener('click', ['$event'])\r\n public click(event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this._expandNotifier.toggleExpandStatus(this.row);\r\n }\r\n\r\n @Input()\r\n public row;\r\n}\r\n","import { Directive } from '@angular/core';\n\nimport { FsListCellDirective } from '../cell/cell.directive';\n\n\n@Directive({\n selector: '[fs-list-group-footer]',\n standalone: true\n})\nexport class FsListGroupFooterDirective extends FsListCellDirective {}\n","import { Directive } from '@angular/core';\n\nimport { FsListCellDirective } from '../cell/cell.directive';\n\n\n@Directive({\n selector: '[fs-list-group-cell],[fs-list-group-header]',\n standalone: true,\n})\nexport class FsListGroupHeaderDirective extends FsListCellDirective {}\n","import { Directive, Input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[fs-list-header]',\r\n standalone: true,\r\n})\r\nexport class FsListHeaderDirective {\r\n @Input() public colspan;\r\n @Input() public align: string;\r\n @Input('class') public className: string | string[];\r\n}\r\n","import {\n ContentChild,\n ContentChildren,\n Directive,\n Input,\n QueryList,\n TemplateRef,\n} from '@angular/core';\n\n// Directives\nimport { CellConfig } from '../../interfaces';\nimport { ColumnAttributes } from '../../models/column-attributes';\nimport { FsListCellDirective } from '../cell/cell.directive';\nimport { FsListFooterDirective } from '../footer/footer.directive';\nimport { FsListGroupExpandTriggerDirective } from '../group-expand-trigger/group-expand-trigger.directive';\nimport { FsListGroupFooterDirective } from '../group-footer/group-footer.directive';\nimport { FsListGroupHeaderDirective } from '../group-header/group-header.directive';\nimport { FsListHeaderDirective } from '../header/header.directive';\n\n\n@Directive({\n selector: 'fs-list-column',\n standalone: true,\n})\nexport class FsListColumnDirective {\n\n // Header\n @ContentChild(FsListHeaderDirective, { read: TemplateRef, static: true })\n public headerTemplate: TemplateRef<any>;\n\n @ContentChild(FsListHeaderDirective, { static: true })\n public headerConfigs: CellConfig;\n\n // Group\n @ContentChild(FsListGroupHeaderDirective, { read: TemplateRef, static: true })\n public groupHeaderTemplate: TemplateRef<any>;\n\n @ContentChild(FsListGroupHeaderDirective, { static: true })\n public groupHeaderConfigs: CellConfig;\n\n // Group Footer\n @ContentChild(FsListGroupFooterDirective, { read: TemplateRef, static: true })\n public groupFooterTemplate: TemplateRef<any>;\n\n @ContentChild(FsListGroupFooterDirective, { static: true })\n public groupFooterConfigs: CellConfig;\n\n // Trigger\n @ContentChildren(FsListGroupExpandTriggerDirective, { descendants: true })\n public expandTrigger: QueryList<FsListGroupExpandTriggerDirective>;\n\n // Cell\n @ContentChild(FsListCellDirective, { read: TemplateRef, static: true })\n public cellTemplate: TemplateRef<any>;\n\n @ContentChild(FsListCellDirective, { static: true })\n public cellConfigs: CellConfig;\n\n // Footer\n @ContentChild(FsListFooterDirective, { read: TemplateRef, static: true })\n public footerTemplate: TemplateRef<any>;\n\n @ContentChild(FsListFooterDirective, { static: true })\n public footerConfigs: CellConfig;\n\n private readonly _columnAttributes = new ColumnAttributes();\n\n constructor() {}\n\n public get attributes(): ColumnAttributes {\n return this._columnAttributes;\n }\n\n @Input('show')\n public set visible(value: boolean) {\n this._columnAttributes.visible = value;\n }\n\n @Input()\n public set title(value: string) {\n this._columnAttributes.title = value;\n }\n\n @Input()\n public set name(value: string) {\n this._columnAttributes.name = value;\n }\n\n @Input()\n public set customizable(value: boolean) {\n this._columnAttributes.customizable = value;\n }\n\n @Input()\n public set sortable(value: boolean) {\n this._columnAttributes.sortable = value;\n }\n\n @Input()\n public set sortableDefault(value: boolean) {\n this._columnAttributes.sortableDefault = value;\n }\n\n @Input()\n public set sortableDirection(value: 'asc' | 'desc') {\n this.sortable = true;\n this._columnAttributes.direction = value;\n }\n\n /**\n * @deprecated\n */\n @Input()\n public set direction(value: 'asc' | 'desc') {\n this._columnAttributes.direction = value;\n }\n\n @Input()\n public set align(value: string) {\n this._columnAttributes.align = value;\n }\n\n @Input()\n public set width(value: string) {\n this._columnAttributes.width = value;\n }\n\n @Input('class')\n public set className(value: string | string[]) {\n this._columnAttributes.className = value;\n }\n\n}\n","import { AfterViewInit, Directive, Input } from '@angular/core';\n\n\n@Directive({\n selector: '[fsListContentInit]',\n standalone: true\n})\nexport class FsListContentInitDirective implements AfterViewInit {\n\n @Input('fsListContentInit')\n public contentInitCallback: Function;\n\n constructor() {}\n\n public ngAfterViewInit() {\n if (this.contentInitCallback) {\n this.contentInitCallback();\n }\n }\n}\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\n selector: '[fs-list-empty-state]',\n standalone: true,\n})\r\nexport class FsListEmptyStateDirective {}\r\n","import { InjectionToken } from '@angular/core';\n\n\nexport const FS_LIST_CONFIG = new InjectionToken<any[]>('fs-list.config');\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n SimpleChanges,\r\n} from '@angular/core';\r\n\r\nimport { random } from 'lodash-es';\n\r\n\r\n\r\n@Component({\n selector: 'fs-list-loader',\n templateUrl: './loader.component.html',\n styleUrls: ['./loader.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [],\n})\r\nexport class FsListLoaderComponent implements OnInit, OnChanges {\r\n\r\n public placeholderWidths = [[], [], []];\r\n public widths = [];\r\n\r\n @Input() public columns;\r\n\r\n @Input()\r\n public loaderLines: number;\r\n\r\n public cols = [];\r\n public rows = [];\r\n\r\n public ngOnInit() {\r\n\r\n this.cols = this.columns > 5 ? this.columns.splice(0, 5) : this.columns;\r\n const length = this.cols.length;\r\n for (let w = length; w >= 0; w--) {\r\n this.widths[w] = w ? random(15, 100 / length, false) : 0;\r\n }\r\n\r\n for (let r = 0; r < 3; r++) {\r\n for (let c = 0; c < length; c++) {\r\n this.placeholderWidths[r].push(random(50, 90));\r\n }\r\n }\r\n }\r\n\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.loaderLines) {\r\n this.rows = new Array(this.loaderLines);\r\n }\r\n }\r\n}\r\n","<table>\n <thead>\n <tr>\n @for (col of cols; track col; let column = $index) {\n <th [width]=\"widths[column] + '%'\">\n <div class=\"fs-skeleton-placeholder\" [style.width]=\"(placeholderWidths[0][column]/2) + '%'\"></div>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of rows; track row; let index = $index) {\n <tr>\n @for (col of cols; track col; let column = $index) {\n <td>\n <div class=\"fs-skeleton-placeholder\" [style.width]=\"placeholderWidths[index][column] + '%'\"></div>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n} from '@angular/core';\n\n\nimport { PaginationController } from '../../classes/pagination-controller';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { MatButton } from '@angular/material/button';\nimport { MatRipple } from '@angular/material/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { FsCommonModule } from '@firestitch/common';\n\n@Component({\n selector: 'fs-list-pagination',\n templateUrl: './pagination.component.html',\n styleUrls: ['./pagination.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgTemplateOutlet,\n MatButton,\n MatRipple,\n MatIcon,\n FsCommonModule\n],\n})\nexport class FsPaginationComponent {\n\n @Input() public pagination: PaginationController;\n @Input() public rows;\n\n public first() {\n this.pagination.goFirst();\n }\n\n public prev() {\n this.pagination.goPrev();\n }\n\n public next() {\n this.pagination.goNext();\n }\n\n public last() {\n this.pagination.goLast();\n }\n}\n","<div class=\"pagination-container\">\n @if (pagination.hasManyStrategy) {\n <ng-container *ngTemplateOutlet=\"strategyMany\"></ng-container>\n } @else if (pagination.loadMoreEnabled) {\n <ng-container *ngTemplateOutlet=\"strategyLoadMore\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"strategyOffsetPage\"></ng-container>\n }\n</div>\n<ng-template #strategyLoadMore>\n @if (pagination.hasNextPage) {\n <div class=\"fs-list-load-more\">\n <button\n mat-button\n type=\"button\"\n [class]=\"pagination.loadMoreButtonClass\"\n [color]=\"pagination.loadMoreButtonColor\"\n (click)=\"next()\">\n {{ pagination.loadMoreLabel }}\n </button>\n </div>\n }\n</ng-template>\n<ng-template #strategyOffsetPage>\n @if (pagination.records > pagination.limit) {\n @if (pagination?.pages) {\n }\n <ng-container\n [ngTemplateOutlet]=\"firstPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: !pagination.hasPrevPage }\">\n </ng-container>\n <ng-container\n [ngTemplateOutlet]=\"prevPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: !pagination.hasPrevPage }\">\n </ng-container>\n <div class=\"number\">\n {{ pagination.page | fsFormatNumber }} of {{ pagination.pages | fsFormatNumber }}\n </div>\n <ng-container\n [ngTemplateOutlet]=\"nextPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: !pagination.hasNextPage }\">\n </ng-container>\n <ng-container\n [ngTemplateOutlet]=\"lastPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: !pagination.hasNextPage }\">\n </ng-container>\n }\n</ng-template>\n<ng-template #strategyMany>\n @if (!(pagination.pageRecords ===0 && pagination.page === 1)) {\n <ng-container\n [ngTemplateOutlet]=\"firstPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: !pagination.hasPrevPage }\">\n </ng-container>\n <ng-container\n [ngTemplateOutlet]=\"prevPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: !pagination.hasPrevPage }\">\n </ng-container>\n <div class=\"number\">\n {{ pagination.page }}\n </div>\n <ng-container\n [ngTemplateOutlet]=\"nextPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: !pagination.hasNextPage }\">\n </ng-container>\n <ng-container\n [ngTemplateOutlet]=\"lastPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: true }\">\n </ng-container>\n }\n</ng-template>\n<ng-template\n #firstPageButton\n let-disabled=\"disabled\">\n <a\n matRipple\n [matRippleRadius]=\"15\"\n [matRippleCentered]=\"true\"\n class=\"first\"\n [class.disabled]=\"disabled\"\n (click)=\"first()\">\n <mat-icon>\n first_page\n </mat-icon>\n </a>\n</ng-template>\n<ng-template\n #prevPageButton\n let-disabled=\"disabled\">\n <a\n matRipple\n [matRippleRadius]=\"15\"\n [matRippleCentered]=\"true\"\n class=\"previous\"\n [class.disabled]=\"disabled\"\n (click)=\"prev()\">\n <mat-icon>\n keyboard_arrow_left\n </mat-icon>\n </a>\n</ng-template>\n<ng-template\n #nextPageButton\n let-disabled=\"disabled\">\n <a\n matRipple\n [matRippleRadius]=\"15\"\n [matRippleCentered]=\"true\"\n class=\"next\"\n [class.disabled]=\"disabled\"\n (click)=\"next()\">\n <mat-icon>\n keyboard_arrow_right\n </mat-icon>\n </a>\n</ng-template>\n<ng-template\n #lastPageButton\n let-disabled=\"disabled\">\n <a\n matRipple\n [matRippleRadius]=\"15\"\n [matRippleCentered]=\"true\"\n class=\"last\"\n [class.disabled]=\"disabled\"\n (click)=\"last()\">\n <mat-icon>\n last_page\n </mat-icon>\n </a>\n</ng-template>","import { DecimalPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n inject,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nimport { FsMenuModule } from '@firestitch/menu';\n\nimport { of, Subject } from 'rxjs';\nimport { catchError, takeUntil, tap } from 'rxjs/operators';\n\nimport { List } from '../../classes/list-controller';\nimport { PaginationController } from '../../classes/pagination-controller';\nimport { SortingController } from '../../classes/sorting-controller';\nimport { PaginationStrategy } from '../../enums';\nimport { Row } from '../../models';\nimport { SortingDirection } from '../../models/column.model';\n\n\n@Component({\n selector: 'fs-list-status',\n templateUrl: './status.component.html',\n styleUrls: ['./status.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: true,\n standalone: true,\n imports: [\n NgTemplateOutlet,\n MatTooltip,\n MatProgressSpinner,\n FsMenuModule,\n DecimalPipe\n],\n})\nexport class FsStatusComponent implements OnInit, OnDestroy {\n\n @Input() public list: List;\n @Input() public rows: Row[];\n\n @Input()\n @HostBinding('class.first-load')\n @HostBinding('class.fs-skeleton-placeholder')\n public firstLoad: boolean;\n \n public PaginationStrategy = PaginationStrategy;\n public paging: PaginationController;\n public sorting: SortingController;\n public many: {\n status: 'many' | 'loading' | 'loaded';\n count: number;\n } = { \n status: 'many',\n count: 0,\n };\n\n private _destroy$ = new Subject<void>();\n private _cdRef = inject(ChangeDetectorRef);\n\n public ngOnInit() {\n this.paging = this.list.paging;\n this.sorting = this.list.sorting;\n this.sorting.sortingChanged$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._cdRef.markForCheck();\n });\n\n this.list.filtersQuery$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.many.status = 'many';\n this._cdRef.markForCheck();\n });\n }\n\n public manyClick() {\n this.many.status = 'loading';\n this.list.fetchRemote({\n ...this.list.filtersQuery,\n offset: 0,\n limit: 0,\n recordCount: true,\n })\n .pipe(\n tap((response) => {\n this.many.count = response.paging?.records || 0;\n this.many.status = 'loaded';\n }),\n catchError(() => {\n this.many.status = 'many';\n this.many.count = null;\n\n return of(null);\n }),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._cdRef.markForCheck();\n });\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public toggleDirection() {\n if (this.sorting.sortingColumn.direction === 'asc') {\n this.sorting.sortDirection(SortingDirection.desc);\n } else {\n this.sorting.sortDirection(SortingDirection.asc);\n }\n }\n\n public setSortableColumn(column) {\n if (this.sorting.sortingColumn !== column) {\n this.sorting.sortBy(column);\n }\n }\n\n public setLimit(limit) {\n this.paging.setLimit(limit);\n }\n}\n","<div class=\"status\">\n <small>\n @if (paging.enabled) {\n Showing\n @if (paging.hasManyStrategy) {\n <ng-container [ngTemplateOutlet]=\"limitMenu\"></ng-container>\n of\n @if (many.status === 'many') {\n <a\n (click)=\"manyClick()\"\n [matTooltip]=\"'Calculate number of results'\">\n many\n </a>\n } @else {\n @if (many.status === 'loading') {\n <mat-spinner\n [diameter]=\"15\"\n [strokeWidth]=\"2\">\n </mat-spinner>\n } @else {\n <a\n (click)=\"manyClick()\"\n [matTooltip]=\"'Recalculate number of results'\">\n {{ many.count | number:'1.0':'en-US' }}\n </a>\n }\n }\n } @else {\n @if (paging.records) {\n <ng-container [ngTemplateOutlet]=\"limitMenu\"></ng-container>\n of\n {{ paging.records | number:'1.0':'en-US' }}\n } @else {\n 0\n }\n }\n results\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container>\n }\n @if ((!paging.enabled) && paging.pageRecords > 0) {\n Showing\n @if (paging.pageRecords === 1) {\n <span>\n {{ paging.pageRecords }} result\n </span>\n }\n @if (paging.pageRecords > 1) {\n <span>\n {{ paging.pageRecords | number:'1.0':'en-US' }} results\n </span>\n }\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container>\n }\n <fs-menu\n [hidden]=\"!sorting.sortingColumn || paging.pageRecords === 0\"\n #orderColumnsMenu>\n <!-- Real sorting columns -->\n @for (column of sorting.sortingColumns; track column) {\n <ng-template\n fs-menu-item\n (click)=\"setSortableColumn(column)\">\n @if (column.title) {\n {{ column.title }}\n } @else {\n <ng-template [ngTemplateOutlet]=\"column.headerTemplate\"></ng-template>\n }\n </ng-template>\n }\n <!-- Fake sorting columns -->\n @for (column of sorting.fakeSortingColumns; track column) {\n <ng-template\n fs-menu-item\n (click)=\"setSortableColumn(column)\">\n {{ column.title }}\n </ng-template>\n }\n </fs-menu>\n <ng-template #sortedBy>\n @if (sorting.sortingColumn) {\n sorted by\n @if (sorting.sortingColumn.title) {\n <a\n class=\"sort-toggle\"\n [fsMenuTriggerFor]=\"orderColumnsMenu\">\n {{ sorting.sortingColumn.title }}\n </a>\n } @else {\n <a\n class=\"sort-toggle\"\n [fsMenuTriggerFor]=\"orderColumnsMenu\">\n <ng-template [ngTemplateOutlet]=\"sorting.sortingColumn.headerTemplate\"></ng-template>\n </a>\n }\n <a (click)=\"toggleDirection()\">\n {{ sorting.sortingColumn.fullNameDirection }}\n </a>\n }\n </ng-template>\n </small>\n</div>\n<ng-template #limitMenu>\n <a [fsMenuTriggerFor]=\"limitsMenuTrigger\">\n {{ paging.statusLabel }}\n </a>\n <fs-menu #limitsMenuTrigger>\n @for (limit of paging.limits; track limit) {\n <ng-template\n fs-menu-item\n (click)=\"setLimit(limit)\">\n {{ limit }}\n </ng-template>\n }\n </fs-menu>\n</ng-template>","import { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, ElementRef, EventEmitter, HostBinding, Injector, Input, OnDestroy, OnInit, Output, QueryList, TemplateRef, ViewChild, inject } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\n\nimport { DrawerRef } from '@firestitch/drawer';\nimport { FilterComponent, FilterHeadingDirective, FilterStatusBarDirective } from '@firestitch/filter';\nimport { SelectionDialog } from '@firestitch/selection';\n\nimport { Observable, Subject } from 'rxjs';\nimport { delay, filter, skip, take, takeUntil } from 'rxjs/operators';\n\nimport { cloneDeep, mergeWith } from 'lodash-es';\n\nimport { List } from '../../classes/list-controller';\nimport { PersistanceController } from '../../classes/persistance-controller';\nimport { ReorderController } from '../../classes/reorder-controller';\nimport {\n FsListHeadingDirective,\n} from '../../directives';\nimport { FsListCellDirective } from '../../directives/cell/cell.directive';\nimport { FsListColumnDirective } from '../../directives/column/column.directive';\nimport { FsListContentInitDirective } from '../../directives/content-init/content-init.directive';\nimport { FsListDraggableListDirective } from '../../directives/draggable-list/draggable-list.directive';\nimport { FsListEmptyStateDirective } from '../../directives/empty-state/empty-state.directive';\nimport { FsListFooterDirective } from '../../directives/footer/footer.directive';\nimport { PaginationStrategy } from '../../enums/pagination-strategy.enum';\nimport { FS_LIST_CONFIG } from '../../fs-list.providers';\nimport {\n FsListAbstractRow,\n FsListAction,\n FsListConfig, FsListPersitance, FsListSelectionConfig,\n FsListTrackByFn,\n FsListTrackByTargetRowFn,\n} from '../../interfaces';\nimport { IPaginationState } from '../../interfaces/pagination-state.interface';\nimport { Column, Row } from '../../models';\nimport { GroupExpandNotifierService } from '../../services/group-expand-notifier.service';\nimport { FsBodyComponent } from '../body/body.component';\nimport { CustomizeColsDialogComponent } from '../customize-cols';\nimport { FsFooterComponent } from '../footer/footer.component';\nimport { FsHeadComponent } from '../head/head.component';\nimport { FsListLoaderComponent } from '../loader/loader.component';\nimport { FsPaginationComponent } from '../pagination/pagination.component';\nimport { FsStatusComponent } from '../status/status.component';\n\n\n@Component({\n selector: 'fs-list',\n templateUrl: './list.component.html',\n styleUrls: ['./list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n GroupExpandNotifierService,\n PersistanceController,\n ReorderController,\n ],\n standalone: true,\n imports: [\n NgClass,\n NgTemplateOutlet,\n FilterComponent,\n FilterStatusBarDirective,\n FilterHeadingDirective,\n FsStatusComponent,\n FsListContentInitDirective,\n FsHeadComponent,\n FsBodyComponent,\n FsListDraggableListDirective,\n FsFooterComponent,\n FsListFooterDirective,\n FsListLoaderComponent,\n FsPaginationComponent,\n AsyncPipe,\n ],\n})\nexport class FsListComponent<TRow = any> implements OnInit, OnDestroy, AfterContentInit {\n \n public reorderController = inject(ReorderController);\n\n @HostBinding('class.fs-list') public classFsList = true;\n\n @HostBinding('class.fs-list-row-highlight')\n public rowHoverHighlight: boolean;\n\n @Input('config')\n public set config(config: FsListConfig<TRow>) {\n this._initWithConfig(config);\n }\n\n @Input()\n public loaderLines = 3;\n\n private _cellRowTypeInput?: unknown;\n private _cellRowTypeFromConfig?: unknown;\n\n /**\n * Row typing anchor for cell templates. Overrides {@link FsListConfig.cellRowType}.\n * Copied onto each `fs-list-cell` (and group cell templates) unless `[rowType]` is set on that cell.\n */\n @Input()\n public set cellRowType(value: unknown) {\n this._cellRowTypeInput = value;\n this._propagateCellRowTypeAnchors();\n }\n\n public get cellRowType(): unknown {\n return this._cellRowTypeInput !== undefined ? this._cellRowTypeInput : this._cellRowTypeFromConfig;\n }\n\n /** Merged config after defaults; used to type cells without per-template `[configTyping]`. */\n public get mergedListConfig(): FsListConfig<TRow> | undefined {\n return this._mergedListConfig as FsListConfig<TRow> | undefined;\n }\n\n @Output()\n public filtersReady = new EventEmitter<void>();\n\n @ContentChild(FsListHeadingDirective, { read: TemplateRef })\n public headingTemplate: TemplateRef<any>;\n\n @ViewChild(FsBodyComponent)\n public body: FsBodyComponent;\n\n public list: List;\n\n // Event will fired if action remove: true will clicked\n public rowRemoved = new EventEmitter();\n public firstLoad = true;\n\n private _listColumnDirectives: QueryList<FsListColumnDirective>;\n /** Merged list config (after defaults); used to populate cell `configTyping` when cells omit it. */\n private _mergedListConfig?: FsListConfig<TRow>;\n private _filterRef: FilterComponent;\n private _filterParamsReady = false;\n private _destroy = new Subject();\n private _injector = inject(Injector);\n private _config = inject<FsListConfig>(FS_LIST_CONFIG, { optional: true });\n private _el = inject(ElementRef);\n private _selectionDialog = inject(SelectionDialog);\n private _dialog = inject(MatDialog);\n private _cdRef = inject(ChangeDetectorRef);\n private _groupExpandNotifier = inject(GroupExpandNotifierService);\n private _route = inject(ActivatedRoute);\n private _persistance = inject(PersistanceController);\n\n @ViewChild(FilterComponent)\n public set filterReference(component) {\n this._filterRef = component;\n this.list.actions.setFilterRef(component);\n this._emitFiltersReadyEvent();\n }\n\n /**\n * Set columns to config\n * Create Column Model instances\n */\n @ContentChildren(FsListColumnDirective)\n public set columnTemplates(listColumnDirectives: QueryList<FsListColumnDirective>) {\n this._listColumnDirectives = listColumnDirectives;\n if (this.list) {\n this.list.tranformTemplatesToColumns(listColumnDirectives);\n }\n this._propagateCellRowTypeAnchors();\n }\n\n @ContentChild(FsListEmptyStateDirective, { read: TemplateRef })\n private set _emptyStateTemplate(template: TemplateRef<any>) {\n if (this.list) {\n this.list.emptyStateTemplate = template;\n }\n }\n\n private _dialogRef = inject(MatDialogRef, { optional: true });\n private _drawerRef = inject(DrawerRef, { optional: true });\n\n /**\n * Return reference for filter\n */\n public get filterRef(): FilterComponent {\n return this._filterRef;\n }\n\n public set groupEnabled(value: boolean) {\n this.list.groupEnabled(value);\n }\n\n public get groupEnabled() {\n return this.list.dataController.groupEnabled;\n }\n\n public get hasStatus() {\n return this.list.status &&\n (this.list.sorting.isDefined || this.list.paging.enabled) &&\n (\n !this.reorderController.enabled ||\n (this.reorderController.enabled && this.reorderController.status)\n );\n }\n\n public get paginatorVisible(): boolean {\n return this.list.paging.enabled\n && !this.firstLoad\n && !this.list.emptyStateEnabled\n && this.list.dataController.visibleRowsCount > 0\n && this.list.paging.pages > 1;\n }\n\n public get filtersQuery(): Record<string, unknown> {\n return this.list.filtersQuery;\n }\n\n public get pagingState(): IPaginationState {\n return this.list.paging.state;\n }\n\n public ngAfterContentInit(): void {\n if (this.list.afterInit) {\n this.list.afterInit(this);\n }\n }\n\n public ngOnInit() {\n this._subscribeToRemoveRow();\n this._subscribeToGroupExpandStatusChange();\n }\n\n public ngOnDestroy() {\n if (this.list) {\n this.list.destroy();\n }\n\n this._destroy.next(null);\n this._destroy.complete();\n }\n\n public nextPage() {\n this.list.paging.goNext();\n }\n\n public prevPage() {\n this.list.paging.goPrev();\n }\n\n public firstPage() {\n this.list.paging.goFirst();\n }\n\n public lastPage() {\n this.list.paging.goLast();\n }\n\n public reload(): Observable<{ scrollIntoView?: boolean }> {\n this.filterRef.reload();\n\n return this.list.fetchComplete$\n .pipe( \n take(1), \n delay(0),\n );\n }\n\n public getData(trackBy?: FsListTrackByFn) {\n return this.list.getData(trackBy);\n }\n\n public hasData(trackBy: FsListTrackByFn) {\n return this.list.hasData(trackBy);\n }\n\n public updateData(\n rows: FsListAbstractRow | FsListAbstractRow[],\n trackBy?: FsListTrackByTargetRowFn,\n ): boolean {\n return this.list.dataController.updateData(rows, trackBy);\n }\n\n public updateSelectionConfig(config: FsListSelectionConfig) {\n this.list.selection.updateConfig(config);\n }\n\n public resetSelectionActions() {\n this.list.selection.resetActions();\n }\n\n public enableSelection() {\n this.list.selection.enableSelection();\n }\n\n public disableSelection() {\n this.list.selection.disableSelection();\n }\n\n public removeData(data: FsListAbstractRow | FsListAbstractRow[] | FsListTrackByTargetRowFn): boolean {\n return this.list.dataController.removeData(data);\n }\n\n public setHeading(heading: string) {\n this.list.heading = heading;\n }\n\n public setSubheading(subheading: string) {\n this.list.subheading = subheading;\n }\n\n public reorderStart() {\n this.reorderController.enableReorder();\n }\n\n public reorderFinish() {\n this.reorderController.disableReorder();\n }\n\n public setActions(actions: FsListAction[]) {\n if (actions) {\n this.list.actions.clearActions();\n this.list.actions.setActions(actions);\n }\n }\n\n public filterReady() {\n this.list.filtersReady();\n this._filterParamsReady = true;\n this._emitFiltersReadyEvent();\n }\n\n /**\n * Update visibility for specific column\n */\n public columnVisibility(name: string, show: boolean) {\n this.columnsVisibility([{ name, show }]);\n }\n\n /**\n * Update visibility for list of specific columns\n */\n public columnsVisibility(columns: { name: string; show: boolean }[]) {\n this.list.columns.updateVisibilityForCols(columns);\n }\n\n public get visibleColumns$(): Observable<Column[]> {\n return this.list.columns.visibleColumns$;\n }\n\n private _emitFiltersReadyEvent(): void {\n if (!!this.filterRef && this._filterParamsReady) {\n this.filtersReady.emit();\n this._cdRef.markForCheck();\n }\n }\n\n public get inDialog() {\n return !!this._dialogRef || !!this._drawerRef;\n }\n\n /**\n * Initialize config for list\n *\n * @param config\n */\n private _initWithConfig(config: FsListConfig<TRow>) {\n if (this.list) {\n this.list.destroy();\n }\n\n const defaultConfig: FsListConfig<TRow> = {\n queryParam: true,\n chips: true,\n paging: {\n strategy: PaginationStrategy.Offset,\n limit: 25,\n },\n noResults: {\n message: 'No Results Found',\n },\n };\n\n const globalConfig = cloneDeep(this._config || {});\n const listConfig = mergeWith(defaultConfig, globalConfig, config, this._configMergeCustomizer);\n\n this._mergedListConfig = listConfig;\n this._cellRowTypeFromConfig = listConfig.cellRowType;\n\n if (listConfig.persist !== false) {\n this._restorePersistance(listConfig.persist);\n }\n\n this._updateCustomizeAction(listConfig.actions);\n\n this.list = new List(\n this._el,\n listConfig,\n this._selectionDialog,\n this._route,\n this._persistance,\n this.inDialog,\n );\n\n this.rowHoverHighlight = this.list.rowHoverHighlight;\n\n this._waitFirstLoad();\n\n this.reorderController.initWithConfig(\n config.reorder,\n this.list.dataController,\n this.list.actions,\n this.list.selection,\n );\n\n if (this._listColumnDirectives) {\n this.list.tranformTemplatesToColumns(this._listColumnDirectives);\n }\n this._listenSortingChange();\n this._propagateCellRowTypeAnchors();\n }\n\n /**\n * Find action with customize flag and re-declare click function for CustomizeColsDialog\n *\n * @param actions\n */\n private _updateCustomizeAction(actions: FsListAction[]) {\n const customizeAction = actions?.find((action) => action.customize);\n\n if (customizeAction) {\n const actionClickFn = customizeAction.click;\n\n customizeAction.click = () => {\n if (actionClickFn) {\n actionClickFn(null);\n }\n\n this._dialog\n .open(CustomizeColsDialogComponent, {\n autoFocus: false,\n injector: this._injector,\n data: {\n columns: this.list.columns.columnsForDialog,\n changeFn: this.list.columns.changeFn,\n },\n })\n .afterClosed()\n .pipe(\n takeUntil(this.list.destroy$),\n takeUntil(this._destroy),\n )\n .subscribe((data) => {\n if (data) {\n this.list.columns.updateVisibilityForCols(data);\n this._cdRef.markForCheck();\n }\n });\n };\n }\n }\n\n /**\n * Update sorting in filter\n */\n private _listenSortingChange() {\n this.list.sorting\n .sortingChanged$\n .pipe(\n takeUntil(this.list.destroy$),\n takeUntil(this._destroy),\n )\n .subscribe((sort) => {\n this._filterRef.updateSort(sort, false);\n });\n }\n\n private _subscribeToRemoveRow() {\n this.rowRemoved\n .pipe(takeUntil(this._destroy))\n .subscribe((row) => {\n this.list.dataController.removeData(row);\n this.list.dataController.visibleRows\n .forEach((item: Row) => item.updateActions());\n });\n }\n\n private _subscribeToGroupExpandStatusChange() {\n if (this.list.dataController.hasGroups) {\n this._groupExpandNotifier.expandStatusChange$\n .pipe(\n takeUntil(this._destroy),\n )\n .subscribe((row) => {\n this.list.dataController.toggleRowGroup(row);\n });\n }\n }\n\n private _waitFirstLoad() {\n this.list.loading$\n .pipe(\n skip(1),\n filter((value) => !value),\n take(1),\n takeUntil(this.list.destroy$),\n takeUntil(this._destroy),\n )\n .subscribe(() => {\n this.firstLoad = false;\n this._cdRef.markForCheck();\n });\n }\n\n private _configMergeCustomizer(objValue: any) {\n if (Array.isArray(objValue)) {\n return objValue;\n }\n }\n\n private _restorePersistance(persistConfig: FsListPersitance) {\n this._persistance.init(persistConfig, this.inDialog);\n }\n\n private _propagateCellRowTypeAnchors() {\n if (!this._listColumnDirectives || !this._mergedListConfig) {\n return;\n }\n\n const anchor = this.cellRowType;\n\n this._listColumnDirectives.forEach((col) => {\n this._maybeApplyCellTyping(col.cellConfigs, anchor, this._mergedListConfig);\n this._maybeApplyCellTyping(col.groupHeaderConfigs, anchor, this._mergedListConfig);\n this._maybeApplyCellTyping(col.groupFooterConfigs, anchor, this._mergedListConfig);\n });\n }\n\n private _maybeApplyCellTyping(dir: unknown, anchor: unknown, listConfig: FsListConfig<TRow>) {\n if (!(dir instanceof FsListCellDirective)) {\n return;\n }\n if (dir.rowType !== undefined || dir.configTyping !== undefined) {\n return;\n }\n if (anchor != null) {\n dir.rowType = anchor;\n } else {\n dir.configTyping = listConfig;\n }\n }\n}\n","<div\n class=\"fs-list-container\"\n [ngClass]=\"{\n 'has-filters': list.filterConfig?.items.length,\n 'has-status': hasStatus,\n 'has-chips': list.chips,\n 'has-actions': list.actions.hasActions,\n 'has-row-actions-hover': list.rowActionsHover,\n 'first-load': firstLoad,\n 'loading': list.loading$ | async\n }\">\n <ng-template [ngTemplateOutlet]=\"listContainerContent\"></ng-template>\n</div>\n<ng-template #listContainerContent>\n @if (list.dataController.visibleRows$ | async; as listData) {\n <div class=\"fs-list-header-container\">\n <div\n class=\"fs-list-header\"\n [ngClass]=\"{ 'no-wrap': reorderController.manualReorderActivated || !list.filterConfig?.items.length }\">\n @if (list.filterConfig) {\n <fs-filter\n class=\"fs-list-filter\"\n [config]=\"list.filterConfig\">\n @if (hasStatus) {\n <ng-template fsFilterStatusBar>\n <fs-list-status\n class=\"fs-list-status\"\n [ngClass]=\"{ 'hidden-mobile': !list.status }\"\n [rows]=\"listData\"\n [list]=\"list\"\n [firstLoad]=\"firstLoad\">\n </fs-list-status>\n </ng-template>\n }\n @if (headingTemplate) {\n <ng-template fsFilterHeading>\n <ng-template [ngTemplateOutlet]=\"headingTemplate\"></ng-template>\n </ng-template>\n }\n </fs-filter>\n }\n </div>\n </div>\n <ng-content select=\"[fs-list-content]\"></ng-content>\n <!-- Table implementation -->\n <div class=\"fs-list-table-container\">\n @if (!firstLoad && listData.length > 0 && !list.emptyStateEnabled) {\n <table\n class=\"fs-list-table\"\n role=\"grid\"\n [fsListContentInit]=\"list.afterContentInit\"\n [ngClass]=\"{\n 'style-card': list.style === 'card',\n 'style-basic': list.style === 'basic',\n 'style-line': (list.style || 'line') === 'line'\n }\">\n @if (list.columns.hasHeader) {\n <thead\n fs-list-head\n class=\"fs-list-head\"\n role=\"rowgroup\"\n [ngClass]=\"list.columns.theadClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [sorting]=\"list.sorting\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </thead>\n }\n <tbody\n fs-list-body\n fsListDraggableList\n class=\"fs-list-body\"\n role=\"rowgroup\"\n [class.disabled]=\"!!(reorderController.reorderDisabled$ | async)\"\n [rows]=\"listData\"\n [rowActionsRaw]=\"list.rowActionsRaw\"\n [groupActionsRaw]=\"list.groupActionsRaw\"\n [hasRowActions]=\"list.hasRowActions\"\n [rowEvents]=\"list.rowEvents\"\n [rowClass]=\"list.rowClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [restoreMode]=\"list.restoreMode\"\n [selection]=\"list.selection\"\n [rowRemoved]=\"rowRemoved\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\"\n [reorderMultiple]=\"reorderController.multiple\">\n </tbody>\n @if (list.columns.hasFooter) {\n <tfoot\n fs-list-footer\n class=\"fs-list-footer\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </tfoot>\n }\n </table>\n }\n @if (firstLoad) {\n <fs-list-loader\n [columns]=\"list.columns.columns\"\n [loaderLines]=\"loaderLines\">\n </fs-list-loader>\n }\n </div>\n <fs-list-pagination\n class=\"fs-list-pagination\"\n [rows]=\"listData\"\n [pagination]=\"list.paging\">\n </fs-list-pagination>\n @if (!firstLoad) {\n @if (listData.length === 0) {\n <div\n class=\"fs-list-no-results-container\">\n @if (list.noResults?.message && !list.emptyStateEnabled) {\n <div\n class=\"fs-list-no-results\">\n {{ list.noResults?.message }}\n </div>\n }\n @if (list.emptyStateEnabled) {\n <ng-template [ngTemplateOutlet]=\"list.emptyStateTemplate\"></ng-template>\n }\n </div>\n }\n }\n }\n</ng-template>","import { Directive, Input } from '@angular/core';\n\n/**\n * Wrap list columns in `<ng-container fsListCellRowType [rowType]=\"anchor\" #cr=\"fsListCellRowType\">`.\n * On each `fs-list-cell`, bind `[rowType]=\"cr.rowType\"` so `ngTemplateContextGuard` reuses the same\n * type without repeating `{} as YourRow` on every cell.\n */\n@Directive({\n selector: '[fsListCellRowType]',\n standalone: true,\n exportAs: 'fsListCellRowType',\n})\nexport class FsListCellRowTypeScopeDirective<T = unknown> {\n\n @Input() public rowType?: T;\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[fs-list-content]',\n standalone: true,\n})\nexport class FsListContentDirective { }\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\n\nimport { FsBodyComponent } from './components/body/body.component';\nimport { FsRowActionsComponent } from './components/body/row/actions/actions.component';\nimport { FsCellComponent } from './components/body/row/cell/cell.component';\nimport { FsRowInlineActionComponent } from './components/body/row/inline-action/inline-action.component';\nimport { FsRowMenuActionComponent } from './components/body/row/menu-action/menu-action.component';\nimport { FsRowComponent } from './components/body/row/row.component';\nimport { CustomizeColsDialogComponent } from './components/customize-cols/customize-cols.component';\nimport { FsFooterCellComponent } from './components/footer/footer-row/footer-cell/footer-cell.component';\nimport { FsFooterRowComponent } from './components/footer/footer-row/footer-row.component';\nimport { FsFooterComponent } from './components/footer/footer.component';\nimport { FsHeadCellComponent } from './components/head/head-cell/head-cell.component';\nimport { FsHeadComponent } from './components/head/head.component';\nimport { FsListComponent } from './components/list/list.component';\nimport { FsListLoaderComponent } from './components/loader/loader.component';\nimport { FsPaginationComponent } from './components/pagination/pagination.component';\nimport { FsStatusComponent } from './components/status/status.component';\nimport { FsListHeadingDirective } from './directives';\nimport { FsListCellDirective } from './directives/cell/cell.directive';\nimport { FsListCellRowTypeScopeDirective } from './directives/cell/cell-row-type-scope.directive';\nimport { FsListColumnDirective } from './directives/column/column.directive';\nimport { FsListContentInitDirective } from './directives/content-init/content-init.directive';\nimport { FsListContentDirective } from './directives/content/content.directive';\nimport { FsListDraggableListDirective } from './directives/draggable-list/draggable-list.directive';\nimport { FsListDraggableRowDirective } from './directives/draggable-row/draggable-row.directive';\nimport { FsListEmptyStateDirective } from './directives/empty-state/empty-state.directive';\nimport { FsListFooterDirective } from './directives/footer/footer.directive';\nimport { FsListGroupExpandTriggerDirective } from './directives/group-expand-trigger/group-expand-trigger.directive';\nimport { FsListGroupFooterDirective } from './directives/group-footer/group-footer.directive';\nimport { FsListGroupHeaderDirective } from './directives/group-header/group-header.directive';\nimport { FsListHeaderDirective } from './directives/header/header.directive';\nimport { FS_LIST_CONFIG } from './fs-list.providers';\nimport { FsListConfig } from './interfaces';\nimport { ActionLabelPipe } from './pipes';\n\n\n@NgModule({\n imports: [\n FsListComponent,\n FsRowComponent,\n FsRowActionsComponent,\n FsRowInlineActionComponent,\n FsRowMenuActionComponent,\n FsCellComponent,\n FsFooterRowComponent,\n FsFooterCellComponent,\n FsStatusComponent,\n FsListLoaderComponent,\n FsHeadComponent,\n FsHeadCellComponent,\n FsBodyComponent,\n FsFooterComponent,\n FsPaginationComponent,\n FsListColumnDirective,\n FsListCellDirective,\n FsListCellRowTypeScopeDirective,\n FsListHeaderDirective,\n FsListFooterDirective,\n FsListGroupHeaderDirective,\n FsListGroupFooterDirective,\n FsListGroupExpandTriggerDirective,\n FsListDraggableListDirective,\n FsListDraggableRowDirective,\n FsListEmptyStateDirective,\n FsListContentDirective,\n FsListContentInitDirective,\n FsListHeadingDirective,\n CustomizeColsDialogComponent,\n ActionLabelPipe,\n ],\n exports: [\n FsListComponent,\n FsRowComponent,\n FsCellComponent,\n FsListLoaderComponent,\n FsListColumnDirective,\n FsListCellDirective,\n FsListCellRowTypeScopeDirective,\n FsListHeaderDirective,\n FsListFooterDirective,\n FsListGroupHeaderDirective,\n FsListGroupFooterDirective,\n FsListGroupExpandTriggerDirective,\n FsListEmptyStateDirective,\n FsListContentDirective,\n FsListHeadingDirective,\n FsListDraggableListDirective,\n ],\n})\nexport class FsListModule {\n public static forRoot(config: FsListConfig = {}): ModuleWithProviders<FsListModule> {\n return {\n ngModule: FsListModule,\n providers: [\n { provide: FS_LIST_CONFIG, useValue: config },\n ],\n };\n }\n}\n","import { Directive } from '@angular/core';\n\nimport { FsListCellDirective } from './cell.directive';\n\n/**\n * Extend with your own `selector` and row type `T` for strict template typing of `let-row=\"row\"`\n * without repeating `[rowType]` on every `[fs-list-cell]` (subclasses still match column cell queries).\n *\n * For IDE / strictTemplates narrowing, **redeclare** `ngTemplateContextGuard` on the concrete class\n * with `directive: YourConcreteDirective` (inherited static guards are often not applied by the\n * language service). TypeScript may report an invalid override vs `FsListCellDirective`; use\n * `@ts-expect-error` on the class line above `export class` when required.\n */\n@Directive()\nexport abstract class FsTypedListCellDirective<T = any> extends FsListCellDirective<T> {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["_get","map","i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"firestitch-list.mjs","sources":["../../src/app/classes/reorder-controller.ts","../../src/app/enums/row-type.enum.ts","../../src/app/models/row/_base-row.ts","../../src/app/models/row/child-row.ts","../../src/app/models/row/group-footer-row.ts","../../src/app/models/row/group-row.ts","../../src/app/models/row/simple-row.ts","../../src/app/models/row.ts","../../src/app/classes/selection-controller.ts","../../src/app/directives/draggable-list/draggable-list.directive.ts","../../src/app/directives/draggable-row/draggable-row.directive.ts","../../src/app/enums/action-type.enum.ts","../../src/app/models/row-action.model.ts","../../src/app/pipes/action-label.ts","../../src/app/components/body/row/inline-action/button-content/button-content.component.ts","../../src/app/components/body/row/inline-action/button-content/button-content.component.html","../../src/app/components/body/row/inline-action/icon-button/icon-button.component.ts","../../src/app/components/body/row/inline-action/icon-button/icon-button.component.html","../../src/app/components/body/row/inline-action/icon-link/icon-link.component.ts","../../src/app/components/body/row/inline-action/icon-link/icon-link.component.html","../../src/app/components/body/row/inline-action/inline-action.component.ts","../../src/app/components/body/row/inline-action/inline-action.component.html","../../src/app/components/body/row/menu-action/menu-action.component.ts","../../src/app/components/body/row/menu-action/menu-action.component.html","../../src/app/components/body/row/actions/actions.component.ts","../../src/app/components/body/row/actions/actions.component.html","../../src/app/models/column-async-attribute.ts","../../src/app/models/column-attributes.ts","../../src/app/models/styleConfig.model.ts","../../src/app/models/column.model.ts","../../src/app/models/columns-column.model.ts","../../src/app/components/body/row/cell/cell.component.ts","../../src/app/components/body/row/cell/cell.component.html","../../src/app/components/body/row/row.component.ts","../../src/app/components/body/row/row.component.html","../../src/app/components/body/body.component.ts","../../src/app/components/body/body.component.html","../../src/app/classes/persistance-controller.ts","../../src/app/components/customize-cols/customize-cols.component.ts","../../src/app/components/customize-cols/customize-cols.component.html","../../src/app/components/footer/footer-row/footer-cell/footer-cell.component.ts","../../src/app/components/footer/footer-row/footer-cell/footer-cell.component.html","../../src/app/components/footer/footer-row/footer-row.component.ts","../../src/app/components/footer/footer-row/footer-row.component.html","../../src/app/components/footer/footer.component.ts","../../src/app/components/footer/footer.component.html","../../src/app/components/head/head-cell/head-cell.component.ts","../../src/app/components/head/head-cell/head-cell.component.html","../../src/app/classes/sorting-controller.ts","../../src/app/components/head/head.component.ts","../../src/app/components/head/head.component.html","../../src/app/enums/page-change-type.enum.ts","../../src/app/enums/state.enum.ts","../../src/app/classes/columns-controller.ts","../../src/app/classes/data-controller.ts","../../src/app/classes/external-params-controller.ts","../../src/app/classes/actions-controller.ts","../../src/app/enums/pagination-strategy.enum.ts","../../src/app/classes/pagination-controller.ts","../../src/app/classes/list-controller.ts","../../src/app/directives/heading/heading.directive.ts","../../src/app/directives/cell/cell.directive.ts","../../src/app/directives/footer/footer.directive.ts","../../src/app/services/group-expand-notifier.service.ts","../../src/app/directives/group-expand-trigger/group-expand-trigger.directive.ts","../../src/app/directives/group-footer/group-footer.directive.ts","../../src/app/directives/group-header/group-header.directive.ts","../../src/app/directives/header/header.directive.ts","../../src/app/directives/column/column.directive.ts","../../src/app/directives/content-init/content-init.directive.ts","../../src/app/directives/empty-state/empty-state.directive.ts","../../src/app/fs-list.providers.ts","../../src/app/components/loader/loader.component.ts","../../src/app/components/loader/loader.component.html","../../src/app/components/pagination/pagination.component.ts","../../src/app/components/pagination/pagination.component.html","../../src/app/components/status/status.component.ts","../../src/app/components/status/status.component.html","../../src/app/components/list/list.component.ts","../../src/app/components/list/list.component.html","../../src/app/directives/cell/cell-row-type-scope.directive.ts","../../src/app/directives/content/content.directive.ts","../../src/app/fs-list.module.ts","../../src/app/directives/cell/typed-cell.directive.ts","../../src/firestitch-list.ts"],"sourcesContent":["import { Injectable, OnDestroy } from '@angular/core';\n\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n FsListReorderConfig,\n FsListReorderDoneCallback,\n FsListReorderMovedCallback,\n FsListReorderMoveInGroupCallback,\n} from '../interfaces';\n\nimport { ActionsController } from './actions-controller';\nimport { DataController } from './data-controller';\nimport { SelectionController } from './selection-controller';\n\nexport enum ReorderPosition {\n Left = 'left',\n Right = 'right',\n}\n\nexport enum ReorderStrategy {\n Always = 'always',\n Manual = 'manual',\n Custom = 'custom',\n}\n\n@Injectable()\nexport class ReorderController implements OnDestroy {\n\n public startCallback: () => void | Observable<void>;\n public movedCallback: FsListReorderMovedCallback;\n public doneCallback: FsListReorderDoneCallback;\n public moveDropCallback: FsListReorderMoveInGroupCallback;\n\n public status: boolean;\n public label: string;\n public menu: boolean;\n public multiple: boolean;\n\n private _dataController: DataController;\n private _actionsController: ActionsController;\n private _selectionController: SelectionController;\n\n private _enabled$ = new BehaviorSubject<boolean>(false);\n private _manualReorderActivated$ = new BehaviorSubject(false);\n private _reorderDisabled$ = new BehaviorSubject(false);\n private _position = new BehaviorSubject<ReorderPosition | null>(null);\n private _strategy = new BehaviorSubject<ReorderStrategy | null>(null);\n\n private _destroy$ = new Subject();\n\n public get enabled() {\n return this._enabled$.getValue();\n }\n\n public set enabled(value) {\n this._enabled$.next(value);\n\n this._manualReorderActivated$.next(this.enabled && this.strategy === ReorderStrategy.Manual);\n }\n\n public get strategy(): ReorderStrategy | null {\n return this._strategy.getValue();\n }\n\n public get position(): ReorderPosition | null {\n return this._position.getValue();\n }\n\n public get dataController() {\n return this._dataController;\n }\n\n public get selectionController(): SelectionController {\n return this._selectionController;\n }\n\n public get enabled$(): Observable<boolean> {\n return this._enabled$.asObservable();\n }\n\n public get position$(): Observable<ReorderPosition> {\n return this._position.asObservable();\n }\n\n public get strategy$(): Observable<ReorderStrategy> {\n return this._strategy.asObservable();\n }\n\n public get manualReorderActivated(): boolean {\n return this._manualReorderActivated$.getValue();\n }\n\n public get reorderDisabled$(): Observable<boolean> {\n return this._reorderDisabled$.asObservable();\n }\n\n public get reorderDisabled(): boolean {\n return this._reorderDisabled$.getValue();\n }\n\n public initWithConfig(\n data: FsListReorderConfig,\n dataController: DataController,\n actionsController: ActionsController,\n selectionController: SelectionController,\n ) {\n if (!data) {\n return; \n }\n\n this.menu = data.menu ?? false;\n this._setPosition(data.position ?? ReorderPosition.Left);\n\n if (!data.disabled) {\n this._setStrategy(ReorderStrategy.Always);\n }\n\n if (data.toggle) {\n this._setStrategy(ReorderStrategy.Manual);\n }\n // this.strategy = data.strategy ?? ReorderStrategy.Manual;\n this.label = data.label;\n this.multiple = data.multiple;\n this.status = data.status ?? true;\n\n this.startCallback = data.start;\n this.movedCallback = data.moved;\n this.doneCallback = data.done;\n this.moveDropCallback = data.moveDrop;\n\n this._dataController = dataController;\n this._actionsController = actionsController;\n this._selectionController = selectionController;\n\n if (this.strategy === ReorderStrategy.Always) {\n this.enableReorder();\n } else if (this.strategy === ReorderStrategy.Manual) {\n actionsController.addReorderAction(\n {\n label: this.label || 'Reorder',\n menu: this.menu,\n primary: false,\n click: () => {\n this.enableReorder();\n },\n disabled: () => {\n return this.reorderDisabled;\n },\n },\n );\n\n actionsController.addReorderDoneAction({\n label: 'Done',\n primary: false,\n click: () => {\n this.disableReorder();\n },\n disabled: () => {\n return this.reorderDisabled;\n },\n },\n );\n }\n }\n\n public enableReorder() {\n if ((this.strategy === ReorderStrategy.Manual || this.strategy === ReorderStrategy.Custom) && this.startCallback) {\n const returnedValue = this.startCallback();\n\n if (returnedValue && returnedValue instanceof Observable) {\n this.disableReorderAction();\n\n returnedValue\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.enabled = true;\n this.enableReorderAction();\n });\n\n return;\n }\n }\n\n this.enabled = true;\n }\n\n public disableReorder() {\n if (this.strategy === ReorderStrategy.Manual || this.strategy === ReorderStrategy.Custom) {\n const returnedValue = this.reorderFinished();\n\n if (returnedValue && returnedValue instanceof Observable) {\n this.disableReorderAction();\n\n returnedValue\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.enabled = false;\n this.enableReorderAction();\n });\n\n return;\n }\n }\n\n this.enabled = false;\n }\n\n /**\n * Exec end callback\n */\n public reorderFinished() {\n if (this.doneCallback) {\n return this.doneCallback(this._dataController.reorderData);\n }\n }\n\n public ngOnDestroy() {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n /**\n * Enable reorder action and update filter actions state\n */\n public enableReorderAction() {\n this._reorderDisabled$.next(false);\n this._actionsController.updateDisabledState();\n }\n\n /**\n * Disable reorder action and update filter actions state\n */\n public disableReorderAction() {\n this._reorderDisabled$.next(true);\n this._actionsController.updateDisabledState();\n }\n\n private _setPosition(value: ReorderPosition): void {\n this._position.next(value);\n }\n\n private _setStrategy(value: ReorderStrategy): void {\n this._strategy.next(value);\n }\n\n}\n","export enum RowType {\n Simple = 'simple',\n Group = 'group',\n GroupFooter = 'groupFooter',\n GroupChild = 'groupChild',\n}\n","import { BehaviorSubject, Observable, Subject } from 'rxjs';\n\nimport { RowType } from '../../enums/row-type.enum';\nimport { FsListReorderData } from '../../interfaces';\n\nexport interface IBaseRow {\n data: object;\n index: number;\n data$: Observable<object>;\n readyToSwap: boolean;\n actionsUpdated$: Observable<void>;\n updateActions(): void;\n reorderData(): FsListReorderData;\n destroy(): void;\n}\n\nexport abstract class BaseRow<T = RowType> implements IBaseRow{\n\n protected readonly _rowType: T;\n\n private _index: number;\n private _readyToSwap = true;\n private _actionsUpdated$ = new Subject<void>();\n private _data$ = new BehaviorSubject<object>({});\n \n constructor(\n data: object = {},\n ) {\n this._data$.next(data);\n }\n\n public get data(): object {\n return this._data$.getValue();\n }\n \n public set data(value: object) {\n this._data$.next(value);\n }\n\n public get data$(): Observable<object> {\n return this._data$.asObservable();\n }\n\n public get type(): T {\n return this._rowType;\n }\n\n public get index(): number {\n return this._index;\n }\n\n public set index(value: number) {\n this._index = value;\n }\n\n public get readyToSwap(): boolean {\n return this._readyToSwap;\n }\n\n public set readyToSwap(value: boolean) {\n this._readyToSwap = value;\n }\n\n public get actionsUpdated$(): Observable<void> {\n return this._actionsUpdated$.asObservable();\n }\n\n public updateActions(): void {\n return this._actionsUpdated$.next();\n }\n\n public reorderData(): FsListReorderData {\n return {\n type: this._rowType as RowType,\n data: this.data,\n parent: null,\n };\n }\n\n public abstract destroy();\n}\n","import { RowType } from '../../enums/row-type.enum';\nimport { FsListReorderData } from '../../interfaces';\n\nimport { BaseRow, IBaseRow } from './_base-row';\nimport { IGroupRow } from './group-row';\n\n\nexport interface IBaseChildRow extends IBaseRow {\n type: RowType.GroupChild | RowType.GroupFooter;\n\n parent: IGroupRow;\n visible: boolean;\n}\n\nexport interface IChildRow extends IBaseChildRow {\n type: RowType.GroupChild;\n}\n\nexport class ChildRow extends BaseRow<RowType.GroupChild> implements IChildRow {\n\n protected readonly _rowType: RowType.GroupChild = RowType.GroupChild;\n\n private _visible = true;\n private readonly _parent: IGroupRow;\n\n constructor(\n data: object = {},\n parent: IGroupRow = null,\n ) {\n super(data);\n\n this._parent = parent;\n\n if (this.parent) {\n this._visible = this._parent.expanded;\n this.index = this.parent.children.length;\n }\n }\n\n\n public get visible(): boolean {\n return this._visible;\n }\n\n public set visible(value: boolean) {\n this._visible = value;\n }\n\n public get parent(): IGroupRow {\n return this._parent;\n }\n\n public reorderData(): FsListReorderData {\n return {\n type: this._rowType,\n data: this.data,\n parent: this.parent.reorderData(),\n };\n }\n\n public destroy() {}\n}\n","import { BaseRow } from './_base-row';\nimport { RowType } from '../../enums/row-type.enum';\nimport { IGroupRow } from './group-row';\nimport { IBaseChildRow } from './child-row';\n\nexport interface IGroupFooterRow extends IBaseChildRow {\n type: RowType.GroupFooter;\n}\n\nexport class GroupFooterRow extends BaseRow<RowType.GroupFooter> implements IGroupFooterRow{\n\n protected readonly _rowType: RowType.GroupFooter = RowType.GroupFooter;\n\n private _visible = true;\n private readonly _parent: IGroupRow;\n\n constructor(\n data: object = {},\n parent: IGroupRow = null,\n ) {\n super(data);\n\n this._parent = parent;\n\n if (this.parent) {\n this.visible = this._parent.expanded;\n this.index = this.parent.children.length;\n }\n }\n\n\n public get visible(): boolean {\n return this._visible;\n }\n\n public set visible(value: boolean) {\n this._visible = value;\n }\n\n public get parent(): IGroupRow {\n return this._parent;\n }\n\n public destroy() {}\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\n\nimport { RowType } from '../../enums/row-type.enum';\n\nimport { BaseRow, IBaseRow } from './_base-row';\nimport { IChildRow } from './child-row';\nimport { IGroupFooterRow } from './group-footer-row';\n\n\nexport interface IGroupRow extends IBaseRow {\n type: RowType.Group;\n\n childrenData: unknown[];\n expanded: boolean;\n expanded$: Observable<boolean>;\n toggleRowExpandStatus(): void;\n children: (IChildRow | IGroupFooterRow)[];\n}\n\nexport class GroupRow extends BaseRow<RowType.Group> implements IGroupRow {\n\n protected readonly _rowType: RowType.Group = RowType.Group;\n\n private _children: (IChildRow | IGroupFooterRow)[] = [];\n\n private readonly _expanded = new BehaviorSubject<boolean>(false);\n\n constructor(\n data: object = {},\n initialExpand = false,\n ) {\n super(data);\n\n if (initialExpand) {\n this._expanded.next(initialExpand);\n }\n }\n\n public get children(): (IChildRow | IGroupFooterRow)[] {\n return this._children;\n }\n\n public get childrenData() {\n return this._children\n .map((child) => child.data);\n }\n\n\n public get expanded(): boolean {\n return this._expanded.getValue();\n }\n\n public get expanded$(): Observable<boolean> {\n return this._expanded.asObservable();\n }\n\n public toggleRowExpandStatus(): void {\n this._expanded.next(!this.expanded);\n\n this._updateChildrenVisibility();\n }\n\n public destroy() {\n this._children.forEach((child) => child.destroy());\n\n this._expanded.complete();\n }\n\n private _updateChildrenVisibility(): void {\n this._children.forEach((row) => {\n row.visible = this.expanded;\n });\n }\n\n}\n","\nimport { RowType } from '../../enums/row-type.enum';\n\nimport { BaseRow, IBaseRow } from './_base-row';\n\nexport interface ISimpleRow extends IBaseRow {\n type: RowType.Simple;\n}\n\nexport class SimpleRow extends BaseRow<RowType.Simple> implements ISimpleRow {\n\n protected _rowType: RowType.Simple = RowType.Simple;\n \n constructor(data: object = {}) {\n super(data);\n }\n\n public destroy(): void {}\n\n}\n","import { RowType } from '../enums/row-type.enum';\n\nimport { ChildRow, IChildRow } from './row/child-row';\nimport { GroupFooterRow, IGroupFooterRow } from './row/group-footer-row';\nimport { GroupRow, IGroupRow } from './row/group-row';\nimport { ISimpleRow, SimpleRow } from './row/simple-row';\n\n\nexport type Row = ISimpleRow | IGroupRow | IGroupFooterRow | IChildRow;\n\nexport function isGroupRow(row: Row): row is IGroupRow {\n return row.type === RowType.Group;\n}\n\nexport function isChildRow(row: Row): row is IChildRow {\n return row.type === RowType.GroupChild;\n}\n\nexport function isGroupFooterRow(row: Row): row is IGroupFooterRow {\n return row.type === RowType.GroupFooter;\n}\n\nexport function isChildTypeRow(row: Row): row is IChildRow | IGroupFooterRow {\n return row.type === RowType.GroupChild || row.type === RowType.GroupFooter;\n}\n\nexport function makeRowFactory(\n data: object,\n rowType: RowType,\n opts: { parent?: Row, initialExpand?: boolean } = {},\n): Row {\n switch (rowType) {\n case RowType.Simple: {\n return new SimpleRow(data);\n }\n\n case RowType.Group: {\n return new GroupRow(data, opts.initialExpand);\n }\n\n case RowType.GroupChild: {\n return new ChildRow(data, opts.parent as IGroupRow);\n }\n\n case RowType.GroupFooter: {\n return new GroupFooterRow(data, opts.parent as IGroupRow);\n }\n }\n}\n\n","import { SelectionDialog, SelectionRef } from '@firestitch/selection';\n\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { map, take, takeUntil } from 'rxjs/operators';\n\nimport { get as _get } from 'lodash-es';\n\nimport { FsListSelectionConfig } from '../interfaces';\nimport { isChildRow, isGroupRow, Row } from '../models/row';\n\nexport enum SelectionChangeType {\n AllVisibleSelectionChange = 'AllVisibleSelectionChange',\n RowSelectionChange = 'RowSelectionChange',\n SelectedAll = 'SelectedAll',\n}\n\n\nexport class SelectionController {\n\n // Options from passed config\n public actions = [];\n public selectAll = true;\n public selectionChangedFn;\n public actionSelectedFn;\n public allSelectedFn;\n public selectableFn;\n public cancelledFn;\n\n // Store for selected visible rows\n public selectedRows = new Map();\n public selectedGroups = new Map();\n\n // Reference to selection dialog\n private _selectionDialogRef: SelectionRef = null;\n\n private _getRows: () => any[];\n private _selectionChange = new Subject<{ type: SelectionChangeType; payload: any }>();\n\n // Selected only visible rows (ex.: selected only limited 15 rows when we have pagination)\n private _selectedAllVisible = false;\n\n // Selected all rows when was clicked \"Select All\" in selection dialog\n // or count of visible records is equal to total and all visible rows was selected\n private _selectedAll = false;\n\n private _selectedRecords = 0;\n private _visibleRecordsCount = 0;\n private _totalRecordsCount = 0;\n\n private _destroy$ = new Subject();\n private _disabled$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n config: FsListSelectionConfig = {},\n private _trackBy: string,\n private _selectionDialog: SelectionDialog,\n ) {\n this.selectableFn = config.selectable;\n this.actions = config.actions ? [...config.actions] : [];\n this.actionSelectedFn = config.actionSelected;\n this.allSelectedFn = config.allSelected;\n this.cancelledFn = config.cancelled;\n this.selectionChangedFn = config.selectionChanged;\n this.selectAll = config.selectAll;\n this._disabled$.next(!!config.disabled);\n }\n\n public get disabled(): boolean {\n return this._disabled$.getValue();\n }\n\n public get disabled$(): Observable<boolean> {\n return this._disabled$.asObservable();\n }\n\n public selectable(row: Row, index: number): boolean {\n if (this.selectableFn) {\n return this.selectableFn(row.data, index);\n }\n\n return true;\n }\n\n public get enabled$(): Observable<boolean> {\n return this._disabled$.asObservable()\n .pipe(\n map((disabled) => !disabled),\n );\n }\n\n public get selectedAll() {\n return this._selectedAll;\n }\n\n public get selectionChange$() {\n return this._selectionChange.pipe(takeUntil(this._destroy$));\n }\n\n public setRowsCallback(data: () => any[]) {\n this._getRows = data;\n }\n\n /**\n * Trigger when row was selected\n *\n * @param row\n * @param checked\n */\n public rowSelectionChange(row: Row, checked: boolean) {\n if (row) {\n if (checked) {\n this._selectRow(row);\n this.openDialog();\n } else {\n if (this._selectedAll) {\n this._selectedAll = false;\n }\n\n this._deselectRow(row);\n }\n }\n\n this._updateSelectionRefSelected();\n this._updateSelectedVisibleStatus();\n }\n\n /**\n * Do check or uncheck of visible rows\n *\n * @param checked\n */\n public selectAllVisibleRows(checked) {\n this.openDialog();\n\n this._selectedAllVisible = checked;\n this._selectedRecords = 0;\n\n const rows = this._getRows();\n\n if (checked) {\n rows.forEach((row) => {\n const identifier = this._rowIdentifier(row.data);\n\n if (isGroupRow(row)) {\n this._setNumberOfSelectedChildrenInGroup(identifier, row.children.length);\n } else {\n this.selectedRows.set(identifier, row.data);\n this._selectedRecords++;\n }\n });\n } else {\n rows.forEach((row) => {\n const identifier = this._rowIdentifier(row.data);\n\n if (isGroupRow(row)) {\n this._setNumberOfSelectedChildrenInGroup(identifier, 0);\n } else {\n this.selectedRows.delete(identifier);\n }\n });\n\n this._selectedAll = false;\n this._selectedRecords = 0;\n }\n\n // Fire an event that all visible selection was changed\n this._visibleRowsSelectionChanged();\n this._updateSelectionRefSelected();\n }\n\n public isRowSelected(rowData) {\n return this.selectedRows.has(this._rowIdentifier(rowData))\n || this.selectedGroups.has(this._rowIdentifier(rowData))\n || this.selectedAll;\n }\n\n public isGroupSelected(row): boolean | 'indeterminate' {\n const identifier = this._rowIdentifier(row.data);\n\n if (\n this.selectedGroups.has(identifier)\n && row.children?.length > this.selectedGroups.get(identifier)\n ) {\n return 'indeterminate';\n }\n\n return this.selectedGroups.has(identifier) || this.selectedAll;\n\n }\n\n /**\n * Open selection dialog and create reference\n */\n public openDialog() {\n if (!this._selectionDialogRef) {\n this._selectionDialogRef = this._selectionDialog.open({\n selectAll: this.selectAll,\n allCount: this._totalRecordsCount,\n actions: [...this.actions],\n // selectAll: this.sele\n });\n\n this._subscribeToSelection();\n }\n }\n\n /**\n * Update count of visible elements\n *\n * @param count\n */\n public updateVisibleRecordsCount(count: number) {\n this._visibleRecordsCount = count;\n }\n\n /**\n * Update count of total available elemenets\n *\n * @param count\n */\n public updateTotalRecordsCount(count: number) {\n this._totalRecordsCount = count;\n\n if (this._selectionDialogRef) {\n this._selectionDialogRef.updateAllCount(this._totalRecordsCount);\n }\n }\n\n public pageChanged() {\n if (this._selectedAll) {\n this._resetSelection();\n } else {\n this._selectedRecords = 0;\n this._getRows()\n .map((row) => row.data)\n .forEach((rowData) => {\n const identified = this._rowIdentifier(rowData);\n\n if (this.selectedRows.has(identified)) {\n this._selectedRecords++;\n }\n });\n\n this._updateSelectionRefSelected();\n this._updateSelectedVisibleStatus();\n }\n }\n\n public enableSelection() {\n this._disabled$.next(false);\n }\n\n public disableSelection() {\n this._disabled$.next(true);\n }\n\n /**\n * Method will be called from List for remove row if it was selected\n *\n * BUT methods for update visible and etc. will be called a bit later\n *\n * @param row\n */\n public removeRow(row) {\n this.selectedRows.delete(this._rowIdentifier(row));\n\n this._updateSelectionRefSelected();\n this._updateSelectionRefSelectedAll();\n }\n\n /**\n * Intersection of selected and passed rows to remove rows that we dont need more\n *\n * @param rows\n */\n public selectedRowsIntersection(rows) {\n const rowsIndentifiers = rows.map((row) => this._rowIdentifier(row));\n\n this.selectedRows.forEach((selectedRow, identifier) => {\n if (rowsIndentifiers.indexOf(identifier) === -1) {\n this.removeRow(selectedRow);\n }\n });\n }\n\n public updateConfig({\n actions, actionSelected, allSelected, cancelled, selectionChanged, selectAll,\n }: FsListSelectionConfig) {\n this.actions = actions ? [...actions] : this.actions;\n this.actionSelectedFn = actionSelected ?? this.actionSelectedFn;\n this.allSelectedFn = allSelected ?? this.allSelectedFn;\n this.cancelledFn = cancelled ?? this.cancelledFn;\n this.selectionChangedFn = selectionChanged ?? this.selectionChangedFn;\n this.selectAll = selectAll ?? this.selectAll;\n }\n\n // Reset actions to default set\n public resetActions() {\n this._selectionDialogRef?.resetActions();\n }\n\n public closeSelectionDialog() {\n this._selectionDialogRef?.close();\n }\n\n public destroy() {\n this._resetSelection();\n\n this.actions = null;\n this.actionSelectedFn = null;\n this.allSelectedFn = null;\n this.cancelledFn = null;\n\n this.closeSelectionDialog();\n this._selectionDialogRef = null;\n\n this._destroy$.next(null);\n this._destroy$.complete();\n\n this._selectionChange.complete();\n }\n\n /**\n * Subscribe to selectionRef events\n */\n private _subscribeToSelection() {\n this._selectionDialogRef.actionSelected$()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((data) => {\n this._onActionActions(data);\n });\n\n this._selectionDialogRef.destroy$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => this._onCancelActions());\n\n this._selectionDialogRef.allSelected$()\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((data) => {\n this._onSelectAllActions(data);\n });\n }\n\n /**\n * If some action was clicked on selection ref dialog\n *\n * @param data\n */\n private _onActionActions(data) {\n if (!this.actionSelectedFn) {\n return;\n }\n\n // Execute callback\n const result = this.actionSelectedFn({\n selected: Array.from(this.selectedRows.values()).map((row) => {\n return { ...row };\n }),\n ...data,\n });\n\n // If result is observable\n if (result instanceof Observable) {\n\n // Subscribe and whait why it resolved\n result.pipe(\n take(1),\n takeUntil(this._destroy$),\n ).subscribe({\n next: () => {\n\n // Close dialog\n this.closeSelectionDialog();\n\n // Uncheck all visible rows\n this.selectAllVisibleRows(false);\n },\n error: () => { },\n });\n }\n }\n\n /**\n * If cancel was clicked on selection ref dialog\n */\n private _onCancelActions() {\n this.selectAllVisibleRows(false);\n\n if (this.cancelledFn) {\n this.cancelledFn();\n }\n\n this._selectionDialogRef = null;\n }\n\n /**\n * If \"Select All\" action was clicked on selection ref dialog\n *\n * @param flag\n */\n private _onSelectAllActions(flag) {\n this._selectedAll = flag;\n\n this.selectAllVisibleRows(flag);\n\n this._selectionDialogRef.updateSelected(this._totalRecordsCount);\n\n this._selectionChangeEvent(SelectionChangeType.SelectedAll, this._selectedAll);\n this._updateSelectionRefSelectedAll();\n\n if (!this.allSelectedFn) {\n return;\n }\n\n this.allSelectedFn(flag);\n }\n\n private _selectionChangedActions() {\n // Remove actions if no rows selected\n // otherwise it will \"blink\" when user select any action\n if (this.selectedRows.size === 0) {\n this._selectionDialogRef.updateActions([]);\n\n return;\n }\n\n if (this.selectionChangedFn) {\n const result = this.selectionChangedFn(\n Array.from(this.selectedRows.values()),\n this.selectedAll,\n this._selectionDialogRef,\n );\n\n if (result) {\n if (result instanceof Observable) {\n result.pipe(\n take(1),\n takeUntil(this._destroy$),\n ).subscribe({\n next: (actions) => {\n this._selectionDialogRef.updateActions(actions);\n },\n });\n } else if (Array.isArray(result)) {\n this._selectionDialogRef.updateActions(result);\n }\n }\n }\n }\n\n /**\n * Update in Dialog Ref how much rows was selected\n */\n private _updateSelectionRefSelected() {\n if (this._selectionDialogRef) {\n this._selectionDialogRef.updateSelected(this.selectedRows.size);\n\n // S-T1268\n if (this.selectedRows.size === 0) {\n this._selectionDialogRef.close();\n }\n\n this._selectionChangedActions();\n }\n }\n\n /**\n * Update in Dialog Ref selected all status\n *\n * Ex.: Was clicked \"Select All\" in Dialog and after that some checkbox was unchecked\n * Dialog Ref must know about it\n *\n */\n private _updateSelectionRefSelectedAll() {\n if (this._selectionDialogRef) {\n this._selectionDialogRef.updateSelectedAllStatus(this._selectedAll);\n }\n }\n\n /**\n * Check if all visible rows was checked and send event to main header checkbox\n */\n private _updateSelectedVisibleStatus() {\n this._selectedAllVisible = this._selectedRecords !== 0 && this._selectedRecords === this._visibleRecordsCount;\n\n this._selectionChangeEvent(\n SelectionChangeType.RowSelectionChange,\n this._selectedAllVisible,\n );\n }\n\n /**\n * If select all checkbox in header was changed\n */\n private _visibleRowsSelectionChanged() {\n this._selectionChangeEvent(\n SelectionChangeType.AllVisibleSelectionChange,\n this._selectedAllVisible,\n );\n }\n\n /**\n * Method constructor for events\n *\n * @param type\n * @param payload\n */\n private _selectionChangeEvent(type: SelectionChangeType, payload) {\n this._selectionChange.next({\n type,\n payload,\n });\n }\n\n /**\n * Get row identified by trackBy path\n *\n * @param row\n */\n private _rowIdentifier(row) {\n const identifier = _get(row, this._trackBy, undefined);\n\n if (identifier === undefined) {\n console.warn('Selection can not recognize track by field for row. ' +\n 'Please check if you had configured trackBy function.');\n }\n\n return identifier;\n }\n\n private _selectRow(row) {\n const identifier = this._rowIdentifier(row.data);\n\n if (isGroupRow(row)) {\n row.children.forEach((childRow) => {\n this._selectRow(childRow);\n });\n } else {\n if (isChildRow(row)) {\n this._selectChildRow(row);\n }\n\n this.selectedRows.set(identifier, row.data);\n this._selectedRecords++;\n }\n }\n\n private _deselectRow(row) {\n const identifier = this._rowIdentifier(row.data);\n\n if (isGroupRow(row)) {\n this.selectedGroups.delete(identifier);\n\n row.children.forEach((childRow) => {\n this._deselectRow(childRow);\n });\n } else {\n if (isChildRow(row) && this.selectedRows.has(identifier)) {\n this._deselectChildRow(row);\n }\n\n this.selectedRows.delete(identifier);\n this._selectedRecords--;\n }\n }\n\n private _selectChildRow(row) {\n const parentIdentifier = this._rowIdentifier(row.parent.data);\n const selectedChildrenNumber = this.selectedGroups.get(parentIdentifier) || 0;\n\n this._setNumberOfSelectedChildrenInGroup(parentIdentifier, selectedChildrenNumber + 1);\n }\n\n private _deselectChildRow(row) {\n const parentIdentifier = this._rowIdentifier(row.parent.data);\n const selectedChildrenNumber = this.selectedGroups.get(parentIdentifier) || 0;\n\n if (selectedChildrenNumber > 1) {\n this._setNumberOfSelectedChildrenInGroup(parentIdentifier, selectedChildrenNumber - 1);\n } else {\n this._setNumberOfSelectedChildrenInGroup(parentIdentifier, 0);\n }\n }\n\n private _setNumberOfSelectedChildrenInGroup(identifier: string, n: number) {\n if (n === 0) {\n this.selectedGroups.delete(identifier);\n\n return;\n }\n\n this.selectedGroups.set(identifier, n);\n }\n\n /**\n * Reset selection\n */\n private _resetSelection() {\n this._selectedAll = false;\n this._selectedAllVisible = false;\n this._visibleRecordsCount = 0;\n this._selectedRecords = 0;\n this.selectedRows.clear();\n\n this._updateSelectionRefSelected();\n this._updateSelectionRefSelectedAll();\n this._visibleRowsSelectionChanged();\n }\n}\n","import { ChangeDetectorRef, Directive, ElementRef, Input, NgZone, Renderer2, inject } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ReorderController, ReorderStrategy } from '../../classes/reorder-controller';\nimport { FsListDragChildRowElement } from '../../interfaces/draggable-list.interface';\nimport { Row, isChildRow, isGroupRow } from '../../models/row';\nimport { FsListDraggableRowDirective } from '../draggable-row/draggable-row.directive';\n\n\n@Directive({\n selector: '[fsListDraggableList]',\n standalone: true,\n})\nexport class FsListDraggableListDirective {\n \n private _cdRef = inject(ChangeDetectorRef);\n private _zone = inject(NgZone);\n private _containerElement = inject(ElementRef);\n private _reorderController = inject(ReorderController);\n private _renderer = inject(Renderer2);\n\n // Draggable Element\n private _draggableElement: HTMLElement;\n private _draggableElementPreview: HTMLElement;\n private _multipleDraggableElementPreview: HTMLElement;\n private _draggableElementHeight: number;\n private _draggableElementIndex: number;\n private _draggableElementStartIndex: number;\n\n // Handlers\n private _dragToHandler = this.dragTo.bind(this);\n private _dragEndHandler = this.dragEnd.bind(this);\n\n private _dragInProgress = false;\n\n private _childRowElements: FsListDragChildRowElement[];\n private _dragStart$ = new Subject<void>();\n private _dragEnd$ = new Subject<void>();\n\n @Input('rows')\n private _rows: Row[];\n private _draggableChildrenDirectives: FsListDraggableRowDirective[] = [];\n private _selectedRowsDirectives: FsListDraggableRowDirective[] = [];\n private _destroy$ = new Subject();\n\n private _windowTouchMoveHandler = () => {\n //\n };\n\n public get dragStart$(): Observable<void> {\n return this._dragStart$.pipe(takeUntil(this._destroy$));\n }\n\n public get dragEnd$(): Observable<void> {\n return this._dragEnd$.pipe(takeUntil(this._destroy$));\n }\n\n public get draggableItem(): Row {\n return this._rows[this._draggableElementIndex];\n }\n public addDraggableDirective(dir: FsListDraggableRowDirective): void {\n this._draggableChildrenDirectives.push(dir);\n }\n\n public removeDraggableDirective(dir: FsListDraggableRowDirective): void {\n const idx = this._draggableChildrenDirectives.indexOf(dir);\n\n if (idx !== -1) {\n this._draggableChildrenDirectives.splice(idx, 1);\n }\n }\n\n /**\n * Prepare draggable elements and add events\n *\n * @param draggableElement\n */\n public dragStart(draggableElement: HTMLElement) {\n if (this._dragInProgress) {\n return;\n }\n\n if (\n this._reorderController.startCallback\n && this._reorderController.strategy === ReorderStrategy.Always\n ) {\n this._reorderController.startCallback();\n }\n\n this._dragInProgress = true;\n\n window.document.body.classList.add('reorder-in-progress');\n\n this._draggableElement = draggableElement;\n\n this._detectSelectedRows();\n this.prepareElements();\n this.initDraggableElement();\n\n this._draggableElementStartIndex = this._draggableElementIndex;\n this._draggableElement.classList.add('draggable-elem');\n\n this._zone.runOutsideAngular(() => {\n window.addEventListener('touchmove', this._windowTouchMoveHandler, { passive: true });\n window.document.addEventListener('mousemove', this._dragToHandler, { passive: true });\n window.document.addEventListener('touchmove', this._dragToHandler, { passive: false });\n });\n\n window.document.addEventListener('mouseup', this._dragEndHandler);\n window.document.addEventListener('touchend', this._dragEndHandler);\n window.document.addEventListener('touchcancel', this._dragEndHandler);\n\n this._dragStart$.next(null);\n }\n\n\n /**\n * Move draggable elements and swap items\n *\n * @param event\n */\n public dragTo(event) {\n this.touchFix(event);\n const elemIndex = this.lookupElementUnder(event);\n const targetRow = this._rows[elemIndex];\n\n if (this._multipleDraggableElementPreview) {\n this._multipleDraggableElementPreview.style.left = `${event.clientX}px`;\n this._multipleDraggableElementPreview.style.top = `${event.clientY}px`;\n }\n\n // Can not drag before first group and after last group\n const swapWithBoundaryGroupElement =\n (elemIndex === 0 || elemIndex === this._rows.length - 1)\n && isGroupRow(targetRow)\n // TODO fix isChild & all\n && (isChildRow(this.draggableItem));\n\n\n if (!swapWithBoundaryGroupElement) {\n if (elemIndex !== null) {\n if (targetRow.readyToSwap) {\n this.swapWithIndex(elemIndex);\n if (this._draggableElementPreview) {\n this._draggableElementPreview.classList.remove('fs-list-no-drop');\n }\n } else {\n if (this._draggableElementPreview) {\n this._draggableElementPreview.classList.add('fs-list-no-drop');\n }\n }\n }\n\n // FIXME\n if (this._draggableElementPreview) {\n const topOffset = (event.y || event.clientY) - (this._draggableElementHeight / 2);\n this._draggableElementPreview.style.top = `${topOffset}px`;\n }\n }\n }\n\n /**\n * Remove events and classes after drag finish\n */\n public dragEnd() {\n this._dragInProgress = false;\n this._reorderController.dataController.finishReorder();\n\n if (this._reorderController.movedCallback\n && this._draggableElementStartIndex !== this._draggableElementIndex) {\n\n this._reorderController.movedCallback(\n this._reorderController.dataController.reorderData,\n );\n }\n\n if (this._reorderController.strategy === ReorderStrategy.Always) {\n this._zone.run(() => {\n if (this._reorderController.doneCallback) {\n const result = this._reorderController.doneCallback(\n this._reorderController.dataController.reorderData,\n );\n\n this._waitUntilIsNotDone(result);\n }\n });\n }\n\n // this._reorderController.dataController.updateOrderByRows(this._rows);\n ///\n this._containerElement.nativeElement.classList.remove('drag-hidden');\n this._draggableElement.classList.remove('draggable-elem');\n window.document.body.classList.remove('reorder-in-progress');\n this._draggableElement = null;\n\n if (this._draggableElementPreview) {\n this._draggableElementPreview.remove();\n\n this._draggableElementPreview = null;\n } else {\n this._renderer.removeChild(document.body, this._multipleDraggableElementPreview);\n this._multipleDraggableElementPreview = null;\n }\n\n this._draggableElementHeight = null;\n this._draggableElementIndex = null;\n this._draggableElementStartIndex = null;\n this._selectedRowsDirectives = [];\n\n window.removeEventListener('touchmove', this._windowTouchMoveHandler);\n window.document.removeEventListener('mousemove', this._dragToHandler);\n window.document.removeEventListener('touchmove', this._dragToHandler);\n window.document.removeEventListener('mouseup', this._dragEndHandler);\n window.document.removeEventListener('touchend', this._dragEndHandler);\n window.document.removeEventListener('touchcancel', this._dragEndHandler);\n\n this._dragEnd$.next(null);\n }\n\n private get _isMultipleDrag(): boolean {\n return this._reorderController.multiple && this._selectedRowsDirectives.length > 1;\n }\n\n\n /**\n * looking row elements and save their dims\n */\n private prepareElements() {\n this.lookupChildElements();\n this.calcElementsDimensions();\n }\n\n /**\n * Store child rows\n */\n private lookupChildElements() {\n this._childRowElements = Array.from(this._containerElement.nativeElement.querySelectorAll('tr:not(.drag-hidden)'))\n .reduce((acc: any[], rowElement, index) => {\n const element: any = { target: rowElement };\n\n if (rowElement === this._draggableElement) {\n this._draggableElementIndex = index;\n element.active = true;\n }\n\n acc.push(element);\n\n return acc;\n }, []) as FsListDragChildRowElement[];\n }\n\n /**\n * Calc child rows sizes/offsets\n */\n private calcElementsDimensions() {\n this._childRowElements.forEach((el: any, index) => {\n const dims = el.target.getBoundingClientRect();\n el.top = dims.top;\n el.height = dims.height;\n el.center = dims.top + (dims.height / 2);\n el.index = index;\n });\n }\n\n /**\n * Init draggable element\n */\n private initDraggableElement() {\n const el = this._draggableElement.cloneNode(true) as HTMLElement;\n const data = this._draggableElement.getBoundingClientRect();\n\n if (!(this._isMultipleDrag)) {\n el.style.width = `${data.width}px`;\n el.style.left = `${data.left}px`;\n el.style.top = `${data.top}px`;\n el.classList.add('draggable');\n\n this._containerElement.nativeElement.append(el);\n\n this._draggableElementPreview = el;\n this._draggableElementHeight = data.height;\n\n this.updateDraggableDims();\n } else {\n // Create preview DIV\n this._containerElement.nativeElement.classList.add('drag-hidden');\n\n const selectedCount = this._selectedRowsDirectives?.length;\n const previewBlock = this._renderer.createElement('div');\n previewBlock.style.left = `${data.left}px`;\n previewBlock.style.top = `${data.top}px`;\n\n const text = this._renderer.createText(`${selectedCount} selected items`);\n\n this._renderer.appendChild(previewBlock, text);\n this._renderer.addClass(previewBlock, 'fs-list-preview-block');\n this._renderer.appendChild(document.body, previewBlock);\n this._multipleDraggableElementPreview = previewBlock;\n }\n\n }\n\n /**\n * Looking by stored row elements for overlapped row\n *\n * @param event\n */\n private lookupElementUnder(event) {\n const top = event.y || event.clientY;\n const bottom = event.y || event.clientY;\n let elemIndex = null;\n\n for (let i = 0; i < this._childRowElements.length; i++) {\n const el = this._childRowElements[i];\n\n if (!el.active) {\n if (top < el.center + (el.height / 2) && el.index < this._draggableElementIndex\n || bottom > el.center - (el.height / 2) && el.index > this._draggableElementIndex) {\n elemIndex = i;\n }\n }\n }\n\n return elemIndex;\n }\n\n /**\n * Swap rows\n *\n * @param index\n */\n private swapWithIndex(index) {\n const activeIndex = this._draggableElementIndex;\n const selectedRows = this._selectedRowsDirectives\n .map((d) => d.row)\n .filter((d) => d.readyToSwap);\n\n // Swap rows in global rows stack\n this._reorderController\n .dataController\n .swapRows(\n this._rows[activeIndex],\n this._rows[index],\n selectedRows,\n this._isMultipleDrag,\n );\n\n // Swap visible rows\n if (!this._isMultipleDrag) {\n const activeRow = this._rows[activeIndex];\n this._rows[activeIndex] = this._rows[index];\n this._rows[index] = activeRow;\n\n const activeElement = this._childRowElements[activeIndex].target;\n this._childRowElements[activeIndex].active = false;\n\n this._childRowElements[activeIndex].target = this._childRowElements[index].target;\n this._childRowElements[index].target = activeElement;\n this._childRowElements[index].active = true;\n }\n\n this._draggableElementIndex = index;\n this._cdRef.detectChanges();\n }\n\n /**\n * Update cell width for draggable elem\n */\n private updateDraggableDims() {\n const draggableCells: any = Array.from(this._draggableElementPreview.querySelectorAll('td'));\n\n Array.from(\n this._draggableElementPreview.querySelectorAll('td'),\n ).forEach((elem: any, index) => {\n const dims = elem.getBoundingClientRect();\n draggableCells[index].style.width = `${dims.width}px`;\n });\n }\n\n private _waitUntilIsNotDone(doneResult: unknown): void {\n if (doneResult instanceof Observable) {\n this._reorderController.disableReorderAction();\n\n doneResult\n .pipe(takeUntil(this._destroy$))\n .subscribe(() => {\n this._reorderController.enableReorderAction();\n });\n }\n }\n\n private _detectSelectedRows(): void {\n this._draggableChildrenDirectives\n .forEach((dir: FsListDraggableRowDirective) => {\n const isRowSelected = this._reorderController.selectionController?.isRowSelected(dir.row.data);\n\n if (isRowSelected && !isGroupRow(dir.row)) {\n this._selectedRowsDirectives.push(dir);\n }\n });\n }\n\n /**\n * Fix background when mobile\n *\n * @param e\n */\n private touchFix(e) {\n if (!('clientX' in e) && !('clientY' in e)) {\n const touches = e.touches || e.originalEvent.touches;\n if (touches && touches.length) {\n e.clientX = touches[0].clientX;\n e.clientY = touches[0].clientY;\n }\n\n e.preventDefault();\n }\n }\n}\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2, inject } from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ReorderController } from '../../classes/reorder-controller';\nimport { Row, isChildTypeRow } from '../../models/row';\nimport { FsListDraggableListDirective } from '../draggable-list/draggable-list.directive';\n\n\n@Directive({\n selector: '[fsListDraggableRow]',\n standalone: true,\n})\nexport class FsListDraggableRowDirective implements OnInit, OnDestroy {\n\n @Input()\n public row: Row;\n\n private _destroy$ = new Subject<void>();\n private _el = inject(ElementRef);\n private _renderer = inject(Renderer2);\n private _reorderController = inject(ReorderController);\n private _draggableList = inject(FsListDraggableListDirective);\n\n public get elRef(): ElementRef {\n return this._el;\n }\n\n public ngOnInit(): void {\n if (this._reorderController.moveDropCallback) {\n this._listenDragEvents();\n }\n this._draggableList.addDraggableDirective(this);\n }\n\n public ngOnDestroy(): void {\n this._draggableList.removeDraggableDirective(this);\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public dragHide(): void {\n this._el.nativeElement.classList.add('drag-hidden');\n }\n\n private _listenDragEvents() {\n this._draggableList\n .dragStart$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._markReadyToSwapRows();\n });\n\n this._draggableList\n .dragEnd$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._unmarkRows();\n });\n }\n\n private _markReadyToSwapRows() {\n const currentEl = this.row;\n const targetEl = this._draggableList.draggableItem;\n\n this.row.readyToSwap = this._reorderController.moveDropCallback(\n {\n row1: currentEl?.data,\n row2: targetEl?.data,\n group1: isChildTypeRow(currentEl) ? currentEl.parent?.data : null,\n group2: isChildTypeRow(targetEl) ? targetEl.parent?.data : null,\n },\n );\n\n if (!this.row.readyToSwap) {\n this._renderer.addClass(this._el.nativeElement, 'fs-list-swap-restricted');\n }\n }\n\n private _unmarkRows() {\n if (!this.row.readyToSwap) {\n this._renderer.removeClass(this._el.nativeElement, 'fs-list-swap-restricted');\n }\n }\n}\n","export enum ActionType {\n Basic = 'basic',\n Raised = 'raised',\n Icon = 'icon',\n Fab = 'fab',\n MiniFab = 'mini-fab'\n}\n","import { BehaviorSubject, Observable, map } from 'rxjs';\n\nimport { ActionType } from '../enums/action-type.enum';\nimport {\n FsListRowActionFile,\n FsListRowActionLink,\n FsListRowActionLinkFn,\n FsListRowActionRemove,\n} from '../interfaces';\n\n\nexport class RowAction {\n\n public icon: string | ((row: any) => string);\n public menu: boolean;\n public remove: FsListRowActionRemove | boolean;\n public className: string;\n public type: ActionType;\n public show: (row: any, index: number) => boolean;\n public restore: boolean;\n public rowActions: RowAction[];\n public label = '';\n public routerLink: FsListRowActionLink;\n public classArray: string[] = [];\n public click: (row: any, event: any, index: number, rowActionsRef?: RowAction) => void;\n\n public fileConfig: FsListRowActionFile;\n\n private _linkFn: FsListRowActionLinkFn;\n private readonly _isGroup: boolean = false;\n private _visible = new BehaviorSubject<boolean>(true);\n\n constructor(config: any = {}) {\n this._init(config);\n\n if (Array.isArray(this.rowActions)) {\n this._isGroup = true;\n }\n }\n\n public get isGroup() {\n return this._isGroup;\n }\n\n public getRowIcon(row: any) {\n return typeof this.icon === 'function' ? this.icon(row) : this.icon;\n }\n\n public get visible$(): Observable<boolean> {\n return this._visible.asObservable();\n }\n\n public get hidden$(): Observable<boolean> {\n return this._visible\n .pipe(map((visible) => !visible));\n }\n\n public get visible(): boolean {\n return this._visible.getValue();\n }\n\n public _init(value: any) {\n this.icon = value.icon;\n this.menu = value.menu ?? true;\n this.remove = value.remove;\n this.className = value.className;\n this.type = this.menu && this.icon && !this.label && !value.type ? ActionType.Icon : value.type ?? ActionType.Basic;\n this.show = value.show;\n this.restore = value.restore;\n this.rowActions = value.rowActions\n ?.map((action) => new RowAction(action));\n\n\n // Re-assign click function\n const clickFn = value.click;\n this.click = (row, event, index, rowActionsRef = null) => {\n return this._clickEvent(row, event, index, rowActionsRef, clickFn);\n };\n\n this._linkFn = value.link;\n\n if (value.file) {\n this.fileConfig = { ...value.file };\n\n if (this.fileConfig.select) {\n const selectFn = this.fileConfig.select;\n this.fileConfig.select = (selection, row, index) => {\n selectFn(selection, row, index);\n };\n }\n }\n\n this.label = value.label;\n\n if (this.className) {\n this.classArray = this.className.split(' ').reduce((acc, elem) => {\n acc.push(elem);\n\n return acc;\n }, []);\n }\n }\n\n public checkShowStatus(row, index) {\n if (this.isGroup) {\n this.rowActions.forEach((action) => {\n action.checkShowStatus(row, index);\n });\n\n const groupVisible = !this.show || this.show(row, index);\n\n this._visible.next(groupVisible && this.rowActions.some((action) => action.visible));\n } else if (this.show) {\n this._visible.next(this.show(row, index));\n }\n }\n\n public updateLink(row) {\n if (!this.visible) {\n return;\n }\n\n if (this.isGroup) {\n this.rowActions.forEach((action) => {\n action.updateLink(row);\n });\n } else if (this._linkFn) {\n this.routerLink = this._linkFn(row);\n\n if (this.routerLink && !this.routerLink.target) {\n this.routerLink.target = null;\n }\n }\n }\n\n private _clickEvent(row, event, index, rowActionsRef, clickFn) {\n // Stop event propagation for parent\n event.stopPropagation();\n\n // Close menu\n if (rowActionsRef) {\n rowActionsRef.closeMenu();\n }\n\n if (clickFn) {\n // Fire passed callback\n return clickFn(row, event, index);\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Row } from '../models/row';\n\n\n@Pipe({\n name: 'actionLabel',\n standalone: true,\n})\nexport class ActionLabelPipe implements PipeTransform {\n public transform(label, row: Row) {\n if (typeof label === 'function') {\n return label(row.data);\n }\n\n return label;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n} from '@angular/core';\n\nimport { MatIcon } from '@angular/material/icon';\n\nimport { FsFile, FsFileModule } from '@firestitch/file';\n\nimport { Row } from '../../../../../models/row';\nimport { RowAction } from '../../../../../models/row-action.model';\n\n\n@Component({\n selector: 'fs-list-row-inline-button-content',\n templateUrl: './button-content.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatIcon,\n FsFileModule,\n ],\n})\nexport class FsRowInlineButtonContentComponent implements OnChanges {\n\n @Input()\n public rowAction: RowAction;\n\n @Input()\n public row: Row;\n\n @Output()\n public fileSelect = new EventEmitter<FsFile | FsFile[]>();\n\n public icon: string;\n\n public ngOnChanges(changes: SimpleChanges): void {\n if((changes.row || changes.rowAction) && this.rowAction && this.row) {\n this.icon = this.rowAction.getRowIcon(this.row.data);\n }\n }\n\n public fileSelected(event: FsFile | FsFile[]): void {\n this.fileSelect.emit(event);\n }\n}\n\n","@if (!rowAction?.fileConfig) {\n @if (icon) {\n <mat-icon>\n {{ icon }}\n </mat-icon>\n }\n {{ rowAction?.label }}\n} @else {\n <fs-file\n class=\"action-button\"\n [accept]=\"rowAction.fileConfig.accept || '*'\"\n [multiple]=\"rowAction.fileConfig.multiple\"\n [minWidth]=\"rowAction.fileConfig.minWidth\"\n [minHeight]=\"rowAction.fileConfig.minHeight\"\n [imageWidth]=\"rowAction.fileConfig.maxWidth\"\n [imageHeight]=\"rowAction.fileConfig.maxHeight\"\n (select)=\"fileSelected($event)\"\n (error)=\"rowAction.fileConfig.error && rowAction.fileConfig.error($event)\">\n @if (icon) {\n <mat-icon>\n {{ icon }}\n </mat-icon>\n }\n {{ rowAction.label }}\n </fs-file>\n}\n\n","import { NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { MatIconButton } from '@angular/material/button';\n\nimport { FsFile } from '@firestitch/file';\n\nimport { Row } from '../../../../../models/row';\nimport { RowAction } from '../../../../../models/row-action.model';\nimport { FsRowInlineButtonContentComponent } from '../button-content/button-content.component';\n\n\n@Component({\n selector: 'fs-list-row-inline-icon-button',\n templateUrl: './icon-button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgClass,\n MatIconButton,\n FsRowInlineButtonContentComponent,\n ],\n})\nexport class FsRowInlineIconButtonComponent {\n\n @Input()\n public rowAction: RowAction;\n\n @Input()\n public row: Row;\n\n @Output()\n public clicked = new EventEmitter();\n\n @Output()\n public fileSelect = new EventEmitter<FsFile | FsFile[]>();\n\n public actionClick(event: Event): void {\n this.clicked.emit(event);\n }\n\n public fileSelected(event: FsFile | FsFile[]): void {\n this.fileSelect.emit(event);\n }\n}\n\n","<button\n type=\"button\"\n mat-icon-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <fs-list-row-inline-button-content\n [rowAction]=\"rowAction\"\n [row]=\"row\"\n (fileSelect)=\"fileSelected($event)\">\n </fs-list-row-inline-button-content>\n</button>","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\n\nimport { MatIconAnchor } from '@angular/material/button';\n\n\nimport { Row } from '../../../../../models/row';\nimport { RowAction } from '../../../../../models/row-action.model';\nimport { FsRowInlineButtonContentComponent } from '../button-content/button-content.component';\n\n\n@Component({\n selector: 'fs-list-row-inline-icon-link',\n templateUrl: './icon-link.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n RouterLink,\n MatIconAnchor,\n FsRowInlineButtonContentComponent,\n ],\n})\nexport class FsRowInlineIconLinkComponent {\n\n @Input()\n public rowAction: RowAction;\n\n @Input()\n public row: Row;\n\n}\n\n","@if (rowAction?.routerLink) {\n <a\n mat-icon-button\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <fs-list-row-inline-button-content\n [rowAction]=\"rowAction\"\n [row]=\"row\">\n </fs-list-row-inline-button-content>\n </a>\n}","import { AsyncPipe, NgClass } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\n\nimport {\n MatAnchor,\n MatButton,\n MatFabAnchor,\n MatFabButton,\n MatMiniFabAnchor,\n MatMiniFabButton,\n} from '@angular/material/button';\n\nimport { FsFile } from '@firestitch/file';\n\nimport { ActionType } from '../../../../enums/action-type.enum';\nimport { Row } from '../../../../models/row';\nimport { RowAction } from '../../../../models/row-action.model';\n\nimport { FsRowInlineButtonContentComponent } from './button-content/button-content.component';\nimport { FsRowInlineIconButtonComponent } from './icon-button/icon-button.component';\nimport { FsRowInlineIconLinkComponent } from './icon-link/icon-link.component';\n\n\n@Component({\n selector: 'fs-list-row-inline-action',\n styleUrls: ['./inline-action.component.scss'],\n templateUrl: './inline-action.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgClass,\n MatAnchor,\n RouterLink,\n MatButton,\n MatFabButton,\n MatFabAnchor,\n MatMiniFabButton,\n MatMiniFabAnchor,\n AsyncPipe,\n FsRowInlineButtonContentComponent,\n FsRowInlineIconButtonComponent,\n FsRowInlineIconLinkComponent,\n ],\n})\nexport class FsRowInlineActionComponent implements OnInit {\n\n @Input()\n public rowAction: RowAction;\n\n @Input()\n public row: Row;\n\n @Output()\n public clicked = new EventEmitter();\n\n @Output()\n public fileSelect = new EventEmitter<FsFile | FsFile[]>();\n\n public actionClick(event: Event): void {\n this.clicked.emit(event);\n }\n\n public ngOnInit(): void {\n if(!this.rowAction.label && this.rowAction.icon) {\n this.rowAction.type = ActionType.Icon;\n }\n }\n\n public fileSelected(event: FsFile | FsFile[]): void {\n this.fileSelect.emit(event);\n }\n}\n","@if (rowAction?.visible$ | async) {\n @switch (rowAction.type) {\n <!-- Basic button -->\n @case ('basic') {\n @if (!rowAction.routerLink) {\n <button\n type=\"button\"\n mat-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <fs-list-row-inline-button-content\n [rowAction]=\"rowAction\"\n [row]=\"row\"\n (fileSelect)=\"fileSelected($event)\">\n </fs-list-row-inline-button-content>\n </button>\n } @else {\n <a\n mat-button\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <fs-list-row-inline-button-content\n [rowAction]=\"rowAction\"\n [row]=\"row\"\n (fileSelect)=\"fileSelected($event)\">\n </fs-list-row-inline-button-content>\n </a>\n }\n }\n <!-- Raised button -->\n @case ('raised') {\n @if (!rowAction.routerLink) {\n <button\n type=\"button\"\n mat-raised-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <fs-list-row-inline-button-content\n [rowAction]=\"rowAction\"\n [row]=\"row\"\n (fileSelect)=\"fileSelected($event)\">\n </fs-list-row-inline-button-content>\n </button>\n } @else {\n <a\n mat-raised-button\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <fs-list-row-inline-button-content\n [rowAction]=\"rowAction\"\n [row]=\"row\"\n (fileSelect)=\"fileSelected($event)\">\n </fs-list-row-inline-button-content>\n </a>\n }\n }\n <!-- Icon button -->\n @case ('icon') {\n @if (!rowAction.routerLink) {\n <fs-list-row-inline-icon-button\n [rowAction]=\"rowAction\"\n [row]=\"row\"\n (clicked)=\"actionClick($event)\"\n (fileSelect)=\"fileSelected($event)\">\n </fs-list-row-inline-icon-button>\n } @else {\n <fs-list-row-inline-icon-link\n [rowAction]=\"rowAction\"\n [row]=\"row\">\n </fs-list-row-inline-icon-link>\n }\n }\n <!-- Fab button -->\n @case ('fab') {\n @if (!rowAction.routerLink) {\n <button\n type=\"button\"\n mat-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <fs-list-row-inline-button-content\n [rowAction]=\"rowAction\"\n [row]=\"row\"\n (fileSelect)=\"fileSelected($event)\">\n </fs-list-row-inline-button-content>\n </button>\n } @else {\n <a\n mat-fab\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <fs-list-row-inline-button-content\n [rowAction]=\"rowAction\"\n [row]=\"row\"\n (fileSelect)=\"fileSelected($event)\">\n </fs-list-row-inline-button-content>\n </a>\n }\n }\n <!-- Mini Fab button -->\n @case ('mini-fab') {\n @if (!rowAction.routerLink) {\n <button\n type=\"button\"\n mat-mini-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <fs-list-row-inline-button-content\n [rowAction]=\"rowAction\"\n [row]=\"row\"\n (fileSelect)=\"fileSelected($event)\">\n </fs-list-row-inline-button-content>\n </button>\n } @else {\n <a\n mat-mini-fab\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <fs-list-row-inline-button-content\n [rowAction]=\"rowAction\"\n [row]=\"row\"\n (fileSelect)=\"fileSelected($event)\">\n </fs-list-row-inline-button-content>\n </a>\n }\n }\n }\n}","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, inject } from '@angular/core';\n\nimport { MatIcon } from '@angular/material/icon';\n\nimport { FsFileModule } from '@firestitch/file';\nimport { FsMenuComponent } from '@firestitch/menu';\n\nimport { FsListRowActionFile } from '../../../../interfaces/listconfig.interface';\nimport { Row } from '../../../../models/row';\nimport { RowAction } from '../../../../models/row-action.model';\nimport { ActionLabelPipe } from '../../../../pipes/action-label';\n\n\n@Component({\n selector: 'fs-list-row-menu-action',\n templateUrl: './menu-action.component.html',\n styleUrl: './menu-action.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatIcon,\n FsFileModule,\n ActionLabelPipe,\n ],\n})\nexport class FsRowMenuActionComponent implements OnInit, OnChanges {\n\n @Input()\n public row: Row;\n\n @Input()\n public rowAction: RowAction;\n\n @Input()\n public file: FsListRowActionFile;\n\n @Output()\n public fileSelect = new EventEmitter();\n\n @Output()\n public fileError = new EventEmitter();\n\n public icon: string;\n public label: string;\n\n private _menu = inject(FsMenuComponent);\n \n public ngOnChanges(changes: SimpleChanges): void {\n if(changes.row) {\n this.icon = this.rowAction.getRowIcon(this.row.data);\n }\n }\n\n public selectFile(event): void {\n this.fileSelect.emit(event);\n this.closeMenu();\n }\n\n public errorFile(event): void {\n this.fileError.emit(event);\n this.closeMenu();\n }\n\n public closeMenu(): void {\n this._menu.closeMenu();\n }\n\n public ngOnInit(): void {\n this.label = this.rowAction.label;\n }\n}\n","@if (!file) {\n @if (icon) {\n <mat-icon>\n {{ icon }}\n </mat-icon>\n }\n {{ label| actionLabel:row }}\n} @else {\n <fs-file\n class=\"action-button\"\n [accept]=\"file.accept || '*'\"\n [multiple]=\"file.multiple\"\n [minWidth]=\"file.minWidth\"\n [minHeight]=\"file.minHeight\"\n [imageWidth]=\"file.maxWidth\"\n [imageHeight]=\"file.maxHeight\"\n (click)=\"$event.stopPropagation();\"\n (select)=\"selectFile($event)\"\n (error)=\"errorFile($event)\"\n (cancel)=\"closeMenu()\">\n @if (icon) {\n <mat-icon>\n {{ icon }}\n </mat-icon>\n }\n {{ label| actionLabel:row }}\n </fs-file>\n}","import { AsyncPipe, NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, inject } from '@angular/core';\n\nimport { MatIcon } from '@angular/material/icon';\n\nimport { FsMenuModule } from '@firestitch/menu';\nimport { FsPrompt } from '@firestitch/prompt';\n\nimport { Observable, Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\n\nimport { Row } from '../../../../models/row';\nimport { RowAction } from '../../../../models/row-action.model';\nimport { ActionLabelPipe } from '../../../../pipes/action-label';\nimport { FsRowInlineActionComponent } from '../inline-action/inline-action.component';\nimport { FsRowMenuActionComponent } from '../menu-action/menu-action.component';\n\n\n@Component({\n selector: 'fs-list-row-actions',\n templateUrl: './actions.component.html',\n styleUrls: ['./actions.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FsRowInlineActionComponent,\n NgClass,\n FsMenuModule,\n FsRowMenuActionComponent,\n MatIcon,\n ActionLabelPipe,\n AsyncPipe,\n ],\n})\nexport class FsRowActionsComponent {\n\n @Input()\n public row: Row;\n\n @Input()\n public index: number;\n\n @Input()\n public restoreMode = false;\n\n @Input()\n public rowActions: RowAction[] = [];\n\n @Input()\n public rowRemoved: EventEmitter<any>;\n\n @Input()\n public menuRowActions: RowAction[] = [];\n\n @Input()\n public inlineRowActions: RowAction[] = [];\n\n @Input()\n public restoreAction: RowAction;\n\n private _destroy$ = new Subject();\n private _prompt = inject(FsPrompt);\n\n\n public actionClick(action: RowAction, row: any, event: any, menuRef?) {\n if (action.remove) {\n if (\n action.remove instanceof Object\n ) {\n this._prompt.confirm({\n title: action.remove.title,\n template: action.remove.template,\n autofocus: true,\n })\n .pipe(\n take(1),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._removeAction(action, row.data, event, this.index);\n });\n } else {\n this._removeAction(action, row.data, event, this.index);\n\n }\n } else {\n action.click(row.data, event, this.index, menuRef);\n }\n }\n\n /**\n * Track By for improve change detection\n *\n * @param index\n */\n public trackByFn(index) {\n return index;\n }\n\n /**\n * Emit that some row must be removed\n *\n * @param action\n * @param row\n * @param event\n * @param index\n */\n private _removeAction(action, row, event, index) {\n const removeObservable = action.click(row, event, index);\n\n if (removeObservable && removeObservable instanceof Observable) {\n removeObservable\n .pipe(\n take(1),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.rowRemoved.emit(row);\n });\n } else {\n this.rowRemoved.emit(row);\n }\n }\n}\n","@if (!restoreMode || (restoreMode && !restoreAction)) {\n @for (action of inlineRowActions; track trackByFn($index)) {\n <fs-list-row-inline-action\n class=\"row-inline-action row-inline-action-{{action.type}}\"\n [rowAction]=\"action\"\n [row]=\"row\"\n [ngClass]=\"{ 'mobile-hide': action.menu === undefined }\"\n (clicked)=\"actionClick(action, row, $event)\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\">\n </fs-list-row-inline-action>\n }\n}\n<!-- Menu -->\n@if (menuRowActions.length || (restoreMode && restoreAction)) {\n <fs-menu\n class=\"row-menu-action\"\n #menuRef>\n <!-- Case when we have usual menu actions -->\n @if (!restoreMode || (restoreMode && !restoreAction)) {\n @for (action of inlineRowActions; track trackByFn($index)) {\n <ng-template\n class=\"hidden-mobile-menu-action\"\n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"action.menu !== undefined && (action.hidden$ | async)\">\n <fs-list-row-menu-action\n [rowAction]=\"action\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n }\n @for (action of menuRowActions; track trackByFn($index)) {\n @if (action.isGroup) {\n <fs-menu-group [label]=\"action.label | actionLabel:row\">\n @for (subAction of action.rowActions; track subAction) {\n <ng-template\n fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [target]=\"subAction.routerLink?.target\"\n [hidden]=\"subAction.hidden$ | async\"\n [class]=\"subAction.className\"\n (click)=\"actionClick(subAction, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [rowAction]=\"subAction\"\n [row]=\"row\"\n [file]=\"subAction.fileConfig\"\n (fileSelect)=\"subAction.fileConfig.select($event, row, index)\"\n (fileError)=\"subAction.fileConfig.error && subAction.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n }\n </fs-menu-group>\n } @else {\n <ng-template\n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"action.hidden$ | async\"\n [class]=\"action.className\"\n (click)=\"actionClick(action, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [rowAction]=\"action\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n }\n }\n }\n <!-- Case when we have restore mode enabled and must hide menu actions -->\n @if (restoreMode && restoreAction) {\n <ng-template\n fs-menu-item\n (click)=\"actionClick(restoreAction, row, $event, menuRef)\">\n @if (restoreAction.icon) {\n <mat-icon>\n {{ restoreAction.icon }}\n </mat-icon>\n }\n {{ restoreAction.label | actionLabel:row }}\n </ng-template>\n }\n </fs-menu>\n}","import { BehaviorSubject } from 'rxjs';\n\nexport class ColumnAsyncAttribute<T> extends BehaviorSubject<T> {\n\n constructor(value: T) {\n super(Object.freeze(value));\n }\n\n public next(value: T): void {\n const newValue = value;\n const oldValue = this.getValue();\n\n if (newValue !== oldValue) {\n super.next(Object.freeze(value));\n }\n }\n}\n","import { Observable } from 'rxjs';\n\nimport { ColumnAsyncAttribute } from './column-async-attribute';\n\nexport class ColumnAttributes {\n\n private _title: string;\n private _name: string;\n private _customizable = true;\n private _sortable: boolean;\n private _sortableDefault: boolean;\n private _direction$ = new ColumnAsyncAttribute(null);\n private _align: string;\n private _width: string;\n private _className: string | string[];\n private _visible$ = new ColumnAsyncAttribute(true);\n\n constructor(attrs: { [key: string]: any } = {}) {\n this._init(attrs);\n }\n\n // title\n public set title(value: string) {\n this._title = value;\n }\n\n public get title(): string {\n return this._title;\n }\n\n // name\n public set name(value: string) {\n this._name = value;\n }\n\n public get name(): string {\n return this._name;\n }\n\n // customize\n public set customizable(value: boolean) {\n this._customizable = value;\n }\n\n public get customizable(): boolean {\n return this._customizable;\n }\n\n // sortable\n public set sortable(value: boolean) {\n this._sortable = value;\n }\n\n public get sortable(): boolean {\n return this._sortable;\n }\n\n // sortableDefault\n public set sortableDefault(value: boolean) {\n this._sortableDefault = value;\n\n if (this.sortableDefault) {\n this.sortable = true;\n }\n }\n\n public get sortableDefault(): boolean {\n return this._sortableDefault;\n }\n\n // direction\n public set direction(value: 'asc' | 'desc') {\n this.sortable = true;\n \n this._direction$.next(value);\n }\n\n public get direction(): 'asc' | 'desc' {\n return this._direction$.value;\n }\n\n public get direction$(): Observable<'asc' | 'desc'> {\n return this._direction$.asObservable();\n }\n\n // align\n public set align(value: string) {\n this._align = value;\n }\n\n public get align(): string {\n return this._align;\n }\n\n // width\n public set width(value: string) {\n this._width = value;\n }\n\n public get width(): string {\n return this._width;\n }\n\n // className\n public set className(value: string | string[]) {\n this._className = value;\n }\n\n public get className(): string | string[] {\n return this._className;\n }\n\n // visibility\n public set visible(value: boolean) {\n this._visible$.next(value);\n }\n\n public get visible(): boolean {\n return this._visible$.getValue();\n }\n\n public get visible$(): Observable<boolean> {\n return this._visible$.asObservable();\n }\n\n private _init(attrs: { [key: string]: any }) {\n Object.keys(attrs)\n .forEach((key) => {\n switch (key) {\n case 'title': { this.title = attrs[key]; } break;\n case 'name': { this.name = attrs[key]; } break;\n case 'align': { this.align = attrs[key]; } break;\n case 'direction': { this.direction = attrs[key]; } break;\n case 'sortable': { this.sortable = attrs[key]; } break;\n case 'show': { this.visible = attrs[key]; } break;\n case 'visible': { this.visible = attrs[key]; } break;\n }\n });\n }\n}\n","import { isString } from 'lodash-es';\n\nexport class StyleConfig {\n public colspan;\n public align: string; // Can't be used in tempaltes!\n public className: string | string[] = []; // Can't be used in tempaltes!\n\n public classesArray = []; // Can be used in tempaltes\n public classesString = '';\n\n constructor(config = {}) {\n this._init(config);\n }\n\n /**\n * Create static array of styles for using in templates\n */\n public updateClasesArray() {\n this.classesArray = [].concat(this.className, this.align);\n this.classesString = [].concat(this.className, this.align).join(' ');\n }\n\n /**\n * Prioritized merge for align options\n * @param prior1\n * @param prior2\n */\n public mergeAlignByPriority(prior1: StyleConfig, prior2: StyleConfig) {\n let targetValue = this.align;\n\n if (targetValue === void 0) {\n if (prior1 && prior1.align !== void 0) {\n targetValue = prior1.align;\n } else if (prior2 && prior2.align !== void 0) {\n targetValue = prior2.align;\n } else {\n targetValue = 'left';\n }\n }\n\n this.align = targetValue;\n }\n\n /**\n * Prioritized merge for class options\n * @param prior1\n * @param prior2\n */\n public mergeClassByPriority(prior1: StyleConfig, prior2: StyleConfig) {\n let targetValue = [];\n\n if (Array.isArray(this.className)) {\n targetValue = targetValue.concat(this.className);\n } else if (isString(this.className)) {\n targetValue.push(this.className);\n }\n\n if (prior1 && prior1.className !== void 0) {\n this.mergeAnythingIntoArray(targetValue, prior1.className);\n } else if (prior2 && prior2.className !== void 0) {\n this.mergeAnythingIntoArray(targetValue, prior2.className);\n }\n\n this.className = targetValue;\n }\n\n private _init(config) {\n this.colspan = config.colspan;\n this.align = config.align;\n this.className = config.className;\n }\n\n /**\n * Merge params into array\n * @param to\n * @param from\n */\n private mergeAnythingIntoArray(to: string[], from: string | string[]) {\n if (isString(from)) {\n to.push(from as string);\n } else if (Array.isArray(from)) {\n to.push(...from)\n }\n }\n}\n","import { QueryList, TemplateRef } from '@angular/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { isBoolean, isObject } from 'lodash-es';\n\nimport { FsListGroupExpandTriggerDirective } from '../directives/group-expand-trigger/group-expand-trigger.directive';\nimport { ListColumnConfig } from '../interfaces/column-config.interface';\n\nimport { ColumnAttributes } from './column-attributes';\nimport { StyleConfig } from './styleConfig.model';\n\nexport enum SortingDirection {\n asc = 'asc',\n desc = 'desc'\n}\n\nconst allowedDefaults = [\n 'title',\n 'sortable',\n 'align',\n 'class',\n];\n\nexport class Column {\n\n public headerTemplate: TemplateRef<any>;\n public groupHeaderTemplate: TemplateRef<any>;\n public groupFooterTemplate: TemplateRef<any>;\n public cellTemplate: TemplateRef<any>;\n public footerTemplate: TemplateRef<any>;\n public expandTrigger: QueryList<FsListGroupExpandTriggerDirective>;\n public headerConfigs: StyleConfig = new StyleConfig();\n public groupHeaderConfigs: StyleConfig = new StyleConfig();\n public groupFooterConfigs: StyleConfig = new StyleConfig();\n public cellConfigs: StyleConfig = new StyleConfig();\n public footerConfigs: StyleConfig = new StyleConfig();\n public colStyles: StyleConfig;\n public headerColspanned = false;\n public groupHeaderColspanned = false;\n public groupFooterColspanned = false;\n public cellColspanned = false;\n public footerColspanned = false;\n\n private _attributes: ColumnAttributes;\n private _defaultDirection: 'asc' | 'desc';\n private _ordered$ = new BehaviorSubject<boolean>(false);\n\n constructor(\n colConfig: ListColumnConfig, \n colDefaults: any = false,\n ) {\n this._parseConfig(colConfig);\n\n this.colStyles = new StyleConfig({\n className: this._attributes.className,\n align: this._attributes.align,\n });\n\n this.mergeWithColumnDefaults(colDefaults);\n }\n\n public set title(value: string) {\n this._attributes.title = value;\n }\n\n public get title(): string {\n return this._attributes.title;\n }\n\n public get name(): string {\n return this._attributes.name;\n }\n\n public get customizable(): boolean {\n return this._attributes.customizable;\n }\n\n public get width(): string {\n return this._attributes.width;\n }\n\n public set sortable(value: boolean) {\n this._attributes.sortable = value;\n }\n\n public get sortable(): boolean {\n return this._attributes.sortable;\n }\n\n public get sortableDefault(): boolean {\n return this._attributes.sortableDefault;\n }\n\n public set sortingDirection(value: 'asc' | 'desc') {\n this._attributes.direction = value;\n }\n\n public get sortingDirection(): 'asc' | 'desc' {\n return this._attributes.direction;\n }\n\n public get sortingDirection$(): Observable<'asc' | 'desc'> {\n return this._attributes.direction$;\n }\n\n public get visible(): boolean {\n return this._attributes.visible;\n }\n\n public get visible$(): Observable<boolean> {\n return this._attributes.visible$;\n }\n\n public get direction() {\n return (this.sortingDirection === SortingDirection.asc) ? 'asc' : 'desc';\n }\n\n public get fullNameDirection() {\n return (this.sortingDirection === SortingDirection.asc) ? 'Ascending' : 'Descending';\n }\n\n public get ordered$(): Observable<boolean> {\n return this._ordered$.asObservable();\n }\n\n public get ordered() {\n return this._ordered$.getValue();\n }\n\n public set ordered(value) {\n if (value && this._ordered$.getValue() !== value) {\n this.sortingDirection = this._defaultDirection ?? SortingDirection.asc;\n }\n\n this._ordered$.next(value);\n }\n\n /**\n * Merge with defaults with existing config\n *\n * @param defaults\n */\n public mergeWithColumnDefaults(defaults) {\n if (!isObject(defaults)) {\n defaults = {};\n }\n\n allowedDefaults\n .forEach((key) => {\n switch (key) {\n case 'title': {\n this.title = this.title || defaults.title;\n } break;\n\n case 'sortable': {\n if (isBoolean(defaults.sortable)) {\n if (this.sortable === undefined) {\n this.sortable = defaults.sortable;\n }\n }\n } break;\n\n case 'class': {\n this.headerConfigs.mergeClassByPriority(this.colStyles, defaults.header);\n this.groupHeaderConfigs.mergeClassByPriority(this.colStyles, defaults.cell);\n this.groupFooterConfigs.mergeClassByPriority(this.colStyles, defaults.cell);\n this.cellConfigs.mergeClassByPriority(this.colStyles, defaults.cell);\n this.footerConfigs.mergeClassByPriority(this.colStyles, defaults.footer);\n } break;\n\n case 'align': {\n this.headerConfigs.mergeAlignByPriority(this.colStyles, defaults.header);\n this.groupHeaderConfigs.mergeAlignByPriority(this.colStyles, defaults.cell);\n this.groupFooterConfigs.mergeAlignByPriority(this.colStyles, defaults.cell);\n this.cellConfigs.mergeAlignByPriority(this.colStyles, defaults.cell);\n this.footerConfigs.mergeAlignByPriority(this.colStyles, defaults.footer);\n } break;\n }\n });\n\n this.headerConfigs.updateClasesArray();\n this.groupHeaderConfigs.updateClasesArray();\n this.groupFooterConfigs.updateClasesArray();\n this.cellConfigs.updateClasesArray();\n this.footerConfigs.updateClasesArray();\n }\n\n /**\n * Change sorting direction\n */\n public changeDirection() {\n this.sortingDirection = this.sortingDirection === SortingDirection.asc ? SortingDirection.desc : SortingDirection.asc;\n }\n\n public updateVisibility(value: boolean) {\n this._attributes.visible = value;\n }\n\n public updateCustomizable(value: boolean) {\n this._attributes.customizable = value;\n }\n\n private _parseConfig(config: ListColumnConfig) {\n this._attributes = config.attributes;\n\n this.headerTemplate = config.headerTemplate;\n this.groupHeaderTemplate = config.groupHeaderTemplate;\n this.groupFooterTemplate = config.groupFooterTemplate;\n this.cellTemplate = config.cellTemplate;\n this.footerTemplate = config.footerTemplate;\n this.headerConfigs = new StyleConfig(config.headerConfigs);\n this.groupHeaderConfigs = new StyleConfig(config.groupHeaderConfigs);\n this.groupFooterConfigs = new StyleConfig(config.groupFooterConfigs);\n this.cellConfigs = new StyleConfig(config.cellConfigs);\n this.footerConfigs = new StyleConfig(config.footerConfigs);\n this.expandTrigger = config.expandTrigger;\n this._defaultDirection = config.attributes.direction;\n }\n}\n","import { TemplateRef } from '@angular/core';\n\n\nexport class ColumnsColumn {\n\n public template?: TemplateRef<any>;\n public name?: string;\n public show?: boolean;\n public title?: string;\n public disabled?: boolean;\n\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n effect,\n HostBinding,\n input,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n TemplateRef,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { skip, takeUntil } from 'rxjs/operators';\n\nimport { isChildTypeRow, isGroupFooterRow, isGroupRow, Row } from '../../../../models';\nimport { Column } from '../../../../models/column.model';\nimport { BaseRow } from '../../../../models/row/_base-row';\n\n\n@Component({\n selector: '[fs-cell]',\n templateUrl: './cell.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgTemplateOutlet],\n})\nexport class FsCellComponent implements OnInit, OnChanges, OnDestroy {\n\n @HostBinding('class.fs-list-col') public isColl = true;\n\n @HostBinding('attr.role') public role = 'gridcell';\n\n @Input() public column: Column;\n @Input() public rowIndex: number;\n public row = input<Row>();\n\n public cellContext: any = {};\n public cellTemplate: TemplateRef<any>;\n\n private _destroy$ = new Subject<void>();\n\n constructor() {\n effect(() => {\n const currentRow = this.row();\n\n if (currentRow) {\n this.cellContext.groupIndex = currentRow.index;\n }\n });\n }\n\n public ngOnInit() {\n this._listenRowDataChange();\n this._listenGroupOpen();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes.rowIndex?.currentValue !== changes.rowIndex?.previousValue) {\n this.cellContext.index = this.rowIndex;\n this.cellContext.groupIndex = this.row().index;\n }\n\n if (changes.column?.currentValue !== changes.column?.previousValue) {\n this._initCellContext();\n this._initCellTemplate();\n }\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n private _initCellContext() {\n const currentRow = this.row();\n\n this.cellContext.index = this.rowIndex;\n\n if (currentRow) {\n if (isGroupRow(currentRow)) {\n this.cellContext.groupIndex = currentRow.index;\n } else if (isChildTypeRow(currentRow)) {\n this.cellContext.groupIndex = currentRow.index;\n this.cellContext.groupRow = currentRow.parent.data;\n this.cellContext.group = currentRow.parent.data;\n }\n\n if (isGroupRow(currentRow)) {\n this.cellContext.group = currentRow.data;\n this.cellContext.groupChildren = currentRow.children\n .map((child) => child.data);\n } else if (isGroupFooterRow(currentRow)) {\n this.cellContext.group = currentRow.parent.data;\n this.cellContext.groupIndex = currentRow.index;\n this.cellContext.groupChildren = currentRow.parent.children\n .map((child) => child.data);\n }\n }\n\n this.cellContext.column = this.column;\n if (currentRow) {\n this.cellContext.$implicit = currentRow.data;\n this.cellContext.row = currentRow.data;\n this.cellContext.value = currentRow.data[this.column.name];\n\n if (isGroupRow(currentRow)) {\n this.cellContext.expanded = currentRow.expanded;\n }\n }\n }\n\n private _listenRowDataChange() {\n const currentRow = this.row();\n if(currentRow instanceof BaseRow) {\n currentRow.data$\n .pipe(\n skip(1),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._initCellContext();\n });\n }\n }\n\n private _initCellTemplate() {\n const currentRow = this.row();\n\n if (currentRow && isGroupRow(currentRow)) {\n this.cellTemplate = this.column.groupHeaderTemplate || this.column.cellTemplate;\n } else if (currentRow && isGroupFooterRow(currentRow)) {\n this.cellTemplate = this.column.groupFooterTemplate || this.column.cellTemplate;\n } else {\n this.cellTemplate = this.column.cellTemplate;\n }\n }\n\n private _listenGroupOpen() {\n const currentRow = this.row();\n\n if (currentRow && isGroupRow(currentRow)) {\n currentRow.expanded$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((status) => {\n this.cellContext.expanded = status;\n });\n }\n }\n}\n","<ng-template [ngTemplateOutlet]=\"cellTemplate || defaultCellTemplate\" [ngTemplateOutletContext]=\"cellContext\"></ng-template>\r\n\r\n<ng-template #defaultCellTemplate let-value=\"value\">\r\n {{value}}\r\n</ng-template>\r\n","import { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component,\n ElementRef, EventEmitter, HostBinding, Input,\n OnDestroy, OnInit, Renderer2,\n computed, inject, input,\n} from '@angular/core';\n\nimport { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';\nimport { MatIcon } from '@angular/material/icon';\n\nimport { Subject, merge } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n ReorderPosition,\n ReorderStrategy,\n} from '../../../classes/reorder-controller';\nimport { SelectionController } from '../../../classes/selection-controller';\nimport { FsListDraggableListDirective } from '../../../directives/draggable-list/draggable-list.directive';\nimport { FsListRowClassOptions } from '../../../interfaces';\nimport { Column } from '../../../models/column.model';\nimport { Row, isChildRow, isChildTypeRow, isGroupFooterRow, isGroupRow } from '../../../models/row';\nimport { RowAction } from '../../../models/row-action.model';\n\nimport { FsRowActionsComponent } from './actions/actions.component';\nimport { FsCellComponent } from './cell/cell.component';\n\n\n@Component({\n selector: '[fs-list-row]',\n templateUrl: './row.component.html',\n styleUrls: ['./row.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'this.rowCustomClass()',\n },\n standalone: true,\n imports: [\n NgTemplateOutlet,\n MatCheckbox,\n FsCellComponent,\n NgClass,\n FsRowActionsComponent,\n MatIcon,\n AsyncPipe,\n ],\n})\nexport class FsRowComponent \nimplements OnInit, AfterViewInit, OnDestroy {\n\n @HostBinding('attr.role')\n public role = 'row';\n\n public row = input<Row>();\n\n @Input() public rowActionsRaw: any[] = [];\n @Input() public groupActionsRaw: any[] = [];\n @Input() public hasRowActions = false;\n @Input() public rowEvents: any = {};\n @Input() public rowClass;\n @Input() public restoreMode = false;\n @Input() public rowIndex: number;\n @Input() public columns: Column[];\n @Input() public selection: SelectionController;\n @Input() public rowRemoved: EventEmitter<any>;\n @Input() public activeFiltersCount: number;\n\n @Input()\n @HostBinding('class.drag-row')\n public reorderEnabled: boolean;\n\n @Input() public reorderPosition: ReorderPosition | null;\n @Input() public reorderStrategy: ReorderStrategy | null;\n @Input() public reorderMultiple: boolean;\n\n public readonly ReorderPosition = ReorderPosition;\n public readonly ReorderStrategy = ReorderStrategy;\n public rowActions: RowAction[] = [];\n public menuRowActions: RowAction[] = [];\n public inlineRowActions: RowAction[] = [];\n public restoreAction: RowAction;\n public selected = false;\n public indeterminateSelected: boolean | 'indeterminate' = false;\n\n public isGroupRow = computed(() => {\n return isGroupRow(this.row());\n });\n\n public isGroupFooterRow = computed(() => {\n return isGroupFooterRow(this.row());\n });\n\n public dragCellVisible = computed(() => {\n return !isGroupRow(this.row());\n });\n\n public rowCustomClass = computed(() => {\n if (!this.row()) {\n return;\n }\n\n let classes = ['fs-list-row'];\n\n if (this.rowIndex % 2 !== 0) {\n classes.push('fs-list-row-odd');\n }\n if (this.rowIndex % 2 === 0) {\n classes.push('fs-list-row-even');\n }\n\n if (isGroupRow(this.row())) {\n classes.push('fs-list-row-group');\n } else if (isChildRow(this.row())) {\n classes.push('fs-list-row-group-child');\n } else if (isGroupFooterRow(this.row())) {\n classes.push('fs-list-row-group-footer');\n } else {\n classes.push('fs-list-row-body');\n }\n\n if(this.rowEvents?.click) {\n classes.push('fs-list-row-clickable');\n }\n\n if (this.rowClass) {\n classes = [\n ...classes,\n ...this._getRowClasses(this.rowClass),\n ];\n }\n\n return classes.join(' ');\n });\n\n private _eventListeners = [];\n private _destroy$ = new Subject();\n private _el = inject(ElementRef);\n private _cdRef = inject(ChangeDetectorRef);\n private _renderer = inject(Renderer2);\n private _draggableList = inject(FsListDraggableListDirective, { optional: true });\n\n public get isDragDisabled(): boolean {\n return !this.selected && this.reorderMultiple && !!this.selection.selectedRows.size;\n }\n\n @HostBinding('class.multiple-selection')\n public get isMultipleSelection() {\n const multiple = this.reorderMultiple;\n\n return multiple && this.selected;\n }\n\n public get leftDragDropEnabled(): boolean {\n return this.reorderEnabled\n && this.reorderPosition === ReorderPosition.Left\n && this.activeFiltersCount === 0;\n }\n\n public get rightDragDropEnabled(): boolean {\n return this.reorderEnabled\n && this.reorderPosition === ReorderPosition.Right\n && this.activeFiltersCount === 0;\n }\n\n public ngOnInit() {\n if (this.row()) {\n this._initRowActions();\n this._initRowEvents();\n }\n }\n\n public ngAfterViewInit(): void {\n this._initSelection();\n }\n\n public updateRowActions() {\n this.rowActions\n .forEach((action) => {\n action.checkShowStatus(this.row().data, this.rowIndex);\n action.updateLink(this.row().data);\n });\n \n this._filterActionsByCategories();\n }\n\n public ngOnDestroy() {\n this._eventListeners.forEach((listener) => {\n listener();\n });\n\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n /**\n * Select row by checkbox\n *\n * @param event\n */\n public selectRow(event: MatCheckboxChange) {\n this.selection.rowSelectionChange(this.row(), event.checked);\n this._cdRef.markForCheck();\n }\n\n /**\n * Track By for improve change detection\n *\n * @param index\n */\n public trackByFn(index) {\n return index;\n }\n\n public dragStart(event) {\n if (this.reorderEnabled && !this.isDragDisabled) {\n event.preventDefault();\n event.stopPropagation();\n\n this._draggableList.dragStart(this._el.nativeElement);\n }\n }\n\n private _initRowEvents() {\n Object.keys(this.rowEvents || {})\n .forEach((event) => {\n const listener = this._renderer\n .listen(this._el.nativeElement, event, (evt) => {\n this.rowEvents[event]({\n event: evt,\n row: this.row().data,\n rowIndex: this.rowIndex,\n });\n });\n\n this._eventListeners.push(listener);\n });\n }\n\n private _initRowActions() {\n if(isGroupRow(this.row())) {\n if (this.row() && this.groupActionsRaw) {\n this.rowActions = this.groupActionsRaw.map((action) => new RowAction(action));\n\n this._filterActionsByCategories();\n }\n } else if (this.rowActionsRaw) {\n this.rowActions = this.rowActionsRaw.map((action) => new RowAction(action));\n\n this._filterActionsByCategories();\n }\n\n merge(\n this.row().data$, \n this.row().actionsUpdated$,\n )\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.updateRowActions();\n this._cdRef.markForCheck();\n });\n }\n\n private _getRowClasses(rowClass): string[] {\n const classes = [];\n const currentRow = this.row();\n const options: FsListRowClassOptions = {\n index: this.rowIndex,\n type: currentRow.type,\n };\n\n if (isGroupRow(currentRow)) {\n options.groupIndex = currentRow.index;\n } else if (isChildTypeRow(currentRow)) {\n options.groupIndex = currentRow.parent.index;\n }\n\n const resultClass = rowClass(this.row().data, options);\n if(resultClass) {\n if (typeof resultClass === 'string') {\n classes.push(resultClass);\n } else if (typeof resultClass === 'object') {\n const keys = Object.keys(resultClass);\n for (const k of keys) {\n if (resultClass[k] === true) {\n classes.push(k);\n }\n }\n }\n }\n\n return classes;\n }\n\n /**\n * Subscribe to selection change events\n */\n private _initSelection() {\n if (this.selection && this.row()) {\n this.selected = this.selection.isRowSelected(this.row().data);\n\n this.selection.selectionChange$\n .pipe(\n // // Would like to respond only when checkbox on top is changed\n // // or was clicked \"Select All\" in selection dialog\n // filter(({type}) => {\n // return type === SelectionChangeType.AllVisibleSelectionChange\n // || type === SelectionChangeType.SelectedAll;\n // }),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n const currentRow = this.row();\n\n this.selected = currentRow && this.selection.isRowSelected(currentRow.data);\n\n if (isGroupRow(currentRow)) {\n const groupSelection = this.selection.isGroupSelected(currentRow);\n\n if (groupSelection === 'indeterminate') {\n this.selected = true;\n this.indeterminateSelected = true;\n } else {\n this.selected = groupSelection;\n this.indeterminateSelected = false;\n }\n }\n\n this._cdRef.markForCheck();\n });\n }\n }\n\n private _filterActionsByCategories() {\n this.menuRowActions = [];\n this.inlineRowActions = [];\n this.restoreAction = null;\n\n this.rowActions.forEach((action) => {\n\n if (!action.visible) {\n return;\n }\n\n if (action.menu && !action.restore) {\n this.menuRowActions.push(action);\n } else if (!action.menu && !action.restore) {\n this.inlineRowActions.push(action);\n } else if (action.restore) {\n this.restoreAction = action;\n }\n });\n }\n}\n","<!-- Drag -->\n@if (leftDragDropEnabled) {\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\n}\n<!-- Selection -->\n@if (selection && (selection.enabled$ | async)) {\n <td class=\"fs-list-col fs-list-col-selection\">\n @if (!isGroupFooterRow()) {\n <mat-checkbox\n (change)=\"selectRow($event)\"\n [disabled]=\"!selection.selectable(row(), rowIndex)\"\n [checked]=\"selected\"\n [indeterminate]=\"indeterminateSelected\">\n </mat-checkbox>\n }\n </td>\n}\n<!-- Content -->\n@for (column of columns; track trackByFn($index); let isFirst = $first) {\n @if ((isGroupRow() && !column.groupHeaderColspanned) || (isGroupFooterRow() && !column.groupFooterColspanned) || (!isGroupRow() && !isGroupFooterRow() && !column.cellColspanned)) {\n <td\n fs-cell\n [column]=\"column\"\n [row]=\"row()\"\n [rowIndex]=\"rowIndex\"\n [class]=\"(isGroupRow() && column.groupHeaderConfigs.classesString)\n || (isGroupFooterRow() && column.groupFooterConfigs.classesString)\n || (!isGroupFooterRow() && column.cellConfigs.classesString)\"\n [ngClass]=\"{ 'primary-col': isFirst }\"\n [attr.colspan]=\"(isGroupRow() && column.groupHeaderConfigs.colspan)\n || (isGroupFooterRow() && column.groupFooterConfigs.colspan)\n || column.cellConfigs.colspan\"\n [attr.width]=\"column.width\">\n </td>\n }\n}\n<!-- Drag -->\n@if (rightDragDropEnabled) {\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\n}\n<!-- Row Actions -->\n@if (hasRowActions && !(reorderEnabled && reorderStrategy === ReorderStrategy.Manual)) {\n <td class=\"fs-list-col actions-col\">\n @if (!isGroupFooterRow()) {\n <fs-list-row-actions\n [row]=\"row()\"\n [index]=\"rowIndex\"\n [rowActions]=\"rowActions\"\n [menuRowActions]=\"menuRowActions\"\n [inlineRowActions]=\"inlineRowActions\"\n [restoreAction]=\"restoreAction\"\n [restoreMode]=\"restoreMode\"\n [rowRemoved]=\"rowRemoved\">\n </fs-list-row-actions>\n }\n </td>\n}\n<ng-template #dragCell>\n @if (dragCellVisible() && !isGroupFooterRow()) {\n <td\n class=\"fs-list-col drag-col\"\n [class.drag-disabled]=\"isDragDisabled\"\n (mousedown)=\"dragStart($event)\"\n (touchstart)=\"dragStart($event)\">\n <mat-icon>\n drag_handle\n </mat-icon>\n </td>\n } @else {\n <td class=\"fs-list-col drag-col\"></td>\n }\n</ng-template>","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ReorderPosition, ReorderStrategy } from '../../classes/reorder-controller';\nimport { SelectionController } from '../../classes/selection-controller';\nimport { FsListDraggableRowDirective } from '../../directives/draggable-row/draggable-row.directive';\nimport { Column } from '../../models/column.model';\nimport { Row } from '../../models/row';\n\nimport { FsRowComponent } from './row/row.component';\n\n\n@Component({\n selector: '[fs-list-body]',\n templateUrl: './body.component.html',\n styleUrls: ['./body.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FsRowComponent,\n FsListDraggableRowDirective,\n ],\n})\nexport class FsBodyComponent {\n\n @Input() public rows: Row[];\n @Input() public columns: Column[] = [];\n @Input() public hasFooter = false;\n @Input() public rowActionsRaw: any[] = [];\n @Input() public groupActionsRaw: any[] = [];\n @Input() public rowEvents = {};\n @Input() public rowClass;\n @Input() public hasRowActions = false;\n @Input() public selection: SelectionController;\n @Input() public restoreMode = false;\n @Input() public rowRemoved: EventEmitter<any>;\n @Input() public activeFiltersCount: number;\n @Input() public reorderEnabled: boolean;\n @Input() public reorderPosition: ReorderPosition | null;\n @Input() public reorderStrategy: ReorderStrategy | null;\n @Input() public reorderMultiple: boolean;\n\n @ViewChild('rowsContainer', { read: ViewContainerRef, static: true })\n public rowsContainer;\n\n @ContentChild(FsRowComponent, { read: TemplateRef, static: true })\n public headerTemplate: TemplateRef<any>;\n\n /**\n * Track rows by their underlying record id so that a reload (which creates\n * fresh Row wrapper objects) reuses the existing DOM instead of destroying\n * and recreating every row. Falls back to the row index when the data has\n * no id (e.g. group/footer rows or id-less records) -> avoids NG0956.\n */\n public trackByFn(index: number, row: Row): unknown {\n const id = (row?.data as { id?: unknown })?.id;\n\n return id ?? index;\n }\n\n}\n","@for (row of rows; track trackByFn(i, row); let i = $index) {\n <tr\n fs-list-row\n fsListDraggableRow\n [row]=\"row\"\n [rowIndex]=\"i\"\n [columns]=\"columns\"\n [rowActionsRaw]=\"rowActionsRaw\"\n [groupActionsRaw]=\"groupActionsRaw\"\n [hasRowActions]=\"hasRowActions\"\n [rowEvents]=\"rowEvents\"\n [rowClass]=\"rowClass\"\n [selection]=\"selection\"\n [restoreMode]=\"restoreMode\"\n [rowRemoved]=\"rowRemoved\"\n [activeFiltersCount]=\"activeFiltersCount\"\n [reorderEnabled]=\"reorderEnabled\"\n [reorderPosition]=\"reorderPosition\"\n [reorderStrategy]=\"reorderStrategy\"\n [reorderMultiple]=\"reorderMultiple\">\n </tr>\n}","import { Location } from '@angular/common';\nimport { inject, Injectable } from '@angular/core';\n\n\nimport { getNormalizedPath } from '@firestitch/common';\nimport { FsStore } from '@firestitch/store';\n\nimport { FsListPersistanceConfig, FsListPersitance } from '../interfaces';\n\n\n@Injectable()\nexport class PersistanceController {\n\n public filtersEnabled = false;\n public columnsEnabled = false;\n public pagingEnabled = false;\n public sortingEnabled = false;\n public queryEnabled = false;\n public name: string;\n\n private _store = inject(FsStore); \n private _data: any = {};\n private readonly _storeKey = 'fs-list-persist';\n\n private _location = inject(Location);\n\n\n public init(listConfig: FsListPersitance, inDialog: boolean) {\n const config = this._initConfig(listConfig, inDialog);\n\n if(config) {\n this.filtersEnabled = config.persistFilter;\n this.columnsEnabled = config.persistColumn;\n this.pagingEnabled = config.persistPaging;\n this.sortingEnabled = config.persistSorting;\n this.queryEnabled = config.persistQuery;\n this.name = config.name;\n this._data = this._get() || {};\n }\n }\n\n public setSorting(value: any) {\n this._set('sorting', value);\n }\n\n public setPaging(value: any) {\n this._set('paging', value);\n }\n\n public setColumns(value: any) {\n this._set('columns', value);\n }\n\n public getColumns() {\n return this._data.columns || [];\n }\n\n public getSorting() {\n return this._data.sorting || {};\n }\n\n public getPaging() {\n return this._data.paging || {};\n }\n\n private _set(key: string, value: any) {\n this._data[key] = value;\n const storeData = this._store.get(this._storeKey) || {};\n storeData[this.name] = this._data;\n\n this._store.set(this._storeKey, storeData);\n }\n\n private _get() {\n const storeData = this._store.get(this._storeKey);\n\n if (storeData) {\n return storeData[this.name];\n }\n \n return {};\n }\n\n private _initConfig(config: FsListPersitance, inDialog: boolean): FsListPersistanceConfig {\n let persistanceConfig = this._getConfig(config);\n\n if(persistanceConfig) {\n const persist = !inDialog || !!persistanceConfig.name;\n\n persistanceConfig = {\n name: persistanceConfig.name || getNormalizedPath(this._location),\n persistFilter: persist,\n persistPaging: persist,\n persistSorting: persist,\n persistColumn: persist,\n persistQuery: persist,\n ...persistanceConfig,\n };\n }\n \n return persistanceConfig;\n }\n\n private _getConfig(config: FsListPersitance): FsListPersistanceConfig {\n if(config) {\n return {\n ...(config === true ? {} : config),\n };\n }\n\n return null;\n }\n\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, OnDestroy } from '@angular/core';\n\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { MatButton } from '@angular/material/button';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\n\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { PersistanceController } from '../../classes/persistance-controller';\nimport { ColumnsColumn } from '../../models';\n\n\n@Component({\n templateUrl: './customize-cols.component.html',\n styleUrls: ['./customize-cols.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatDialogTitle,\n CdkScrollable,\n MatDialogContent,\n MatCheckbox,\n NgTemplateOutlet,\n MatDialogActions,\n MatButton,\n ],\n})\nexport class CustomizeColsDialogComponent implements OnDestroy {\n\n public columns: ColumnsColumn[] = [];\n public saveDisabled = false;\n public columnsEnabled = false;\n\n private _changeFn;\n private _destroy$ = new Subject();\n private _persistance = inject(PersistanceController);\n private _dialog = inject(MatDialogRef);\n private _data = inject(MAT_DIALOG_DATA);\n\n constructor() {\n this.columns = this._data.columns;\n this._changeFn = this._data.changeFn;\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public visibilityChange(event, column) {\n column.show = event.checked;\n }\n\n public save() {\n const data = this.columns\n .filter((column) => !!column.name)\n .map((column) => {\n return {\n name: column.name,\n show: column.show,\n };\n });\n\n if(this._persistance.columnsEnabled) {\n this._persistance.setColumns(data);\n }\n\n this.saveDisabled = true;\n const changed = this._changeFn ? this._changeFn(data) : null;\n\n if (changed instanceof Observable) {\n changed\n .pipe(takeUntil(this._destroy$))\n .subscribe({\n next: () => {\n this._dialog.close(this.columns);\n },\n error: () => {\n this.saveDisabled = false;\n },\n });\n } else {\n this._dialog.close(this.columns);\n }\n }\n\n public cancel() {\n this._dialog.close();\n }\n}\n","<h1 matDialogTitle>\n Customize columns\n</h1>\n<mat-dialog-content>\n <div class=\"columns\">\n @for (column of columns; track column) {\n <div>\n <mat-checkbox\n [checked]=\"column.show\"\n (change)=\"visibilityChange($event, column)\"\n [disabled]=\"column.disabled\">\n @if (column.title) {\n {{ column.title }}\n } @else {\n <ng-template [ngTemplateOutlet]=\"column.template\"></ng-template>\n }\n </mat-checkbox>\n </div>\n }\n @if (!columns.length) {\n <div class=\"no-results\">\n No results found\n </div>\n }\n </div>\n</mat-dialog-content>\n<mat-dialog-actions>\n @if (columns.length) {\n <button\n type=\"button\"\n mat-button\n color=\"primary\"\n (click)=\"save()\"\n [disabled]=\"saveDisabled\">\n Save\n </button>\n }\n <button\n type=\"button\"\n mat-button\n [color]=\"columns.length ? null : 'primary'\"\n (click)=\"cancel()\">\n {{ columns.length ? 'Cancel' : 'Done' }}\n </button>\n</mat-dialog-actions>","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\nimport { FsCellComponent } from '../../../body/row/cell/cell.component';\nimport { NgTemplateOutlet } from '@angular/common';\r\n\r\n\r\n@Component({\n selector: '[fs-list-footer-cell]',\n templateUrl: './footer-cell.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgTemplateOutlet],\n})\r\nexport class FsFooterCellComponent extends FsCellComponent {\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","<ng-template [ngTemplateOutlet]=\"column.footerTemplate || cell\" [ngTemplateOutletContext]=\"cellContext\"></ng-template>\r\n\r\n<ng-template #cell let-value=\"value\">\r\n {{value}}\r\n</ng-template>\r\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\nimport { FsRowComponent } from '../../body/row/row.component';\n\nimport { FsFooterCellComponent } from './footer-cell/footer-cell.component';\n\n\n@Component({\n selector: '[fs-list-footer-row]',\n templateUrl: './footer-row.component.html',\n styleUrls: ['./footer-row.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n FsFooterCellComponent,\n NgClass,\n ],\n})\nexport class FsFooterRowComponent extends FsRowComponent {\n\n}\n","@if (leftDragDropEnabled) {\n <td class=\"fs-list-col drag-col\"></td>\n}\n@if (selection) {\n <td class=\"fs-list-col fs-list-col-selection\"></td>\n}\n@for (column of columns; track trackByFn($index)) {\n @if (!column.footerColspanned) {\n <td\n fs-list-footer-cell\n [column]=\"column\"\n [row]=\"row()\"\n [rowIndex]=\"rowIndex\"\n [ngClass]=\"column.footerConfigs.classesArray\"\n [attr.colspan]=\"column.footerConfigs.colspan\"\n [attr.width]=\"column.width\">\n </td>\n }\n}\n<!-- Drag -->\n@if (rightDragDropEnabled) {\n <td class=\"fs-list-col actions-col\"></td>\n}\n<!-- Row Actions -->","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n} from '@angular/core';\n\nimport { ReorderPosition, ReorderStrategy } from '../../classes/reorder-controller';\nimport { SelectionController } from '../../classes/selection-controller';\nimport { Column } from '../../models/column.model';\nimport { FsFooterRowComponent } from './footer-row/footer-row.component';\n\n@Component({\n selector: '[fs-list-footer]',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [FsFooterRowComponent],\n})\nexport class FsFooterComponent {\n\n @Input() public hasRowActions: boolean;\n @Input() public columns: Column[] = [];\n @Input() public selection: SelectionController;\n @Input() public activeFiltersCount: number;\n @Input() public reorderEnabled: boolean;\n @Input() public reorderPosition: ReorderPosition | null;\n @Input() public reorderStrategy: ReorderStrategy | null;\n}\n","<tr \n fs-list-footer-row\n [columns]=\"columns\"\n [hasRowActions]=\"hasRowActions\"\n [selection]=\"selection\"\n [activeFiltersCount]=\"activeFiltersCount\"\n [reorderEnabled]=\"reorderEnabled\"\n [reorderPosition]=\"reorderPosition\"\n [reorderStrategy]=\"reorderStrategy\">\n</tr>\n","import { AsyncPipe, NgTemplateOutlet } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\nimport { MatIcon } from '@angular/material/icon';\r\n\r\nimport { FsCellComponent } from '../../body/row/cell/cell.component';\r\n\r\n\r\n@Component({\r\n selector: '[fs-head-cell]',\r\n templateUrl: './head-cell.component.html',\r\n styleUrls: ['./head-cell.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n NgTemplateOutlet,\r\n MatIcon,\r\n AsyncPipe,\r\n ],\r\n})\r\nexport class FsHeadCellComponent extends FsCellComponent {\r\n\r\n public cellContext: any = {};\r\n\r\n public initCellContext() {\r\n this.cellContext.value = this.column.title;\r\n }\r\n}\r\n","<div class=\"wrap\">\n <span class=\"title\">\n @if (!column.headerTemplate) {\n {{ column.title }}\n }\n @if (column.headerTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.headerTemplate\"\n [ngTemplateOutletContext]=\"cellContext\">\n </ng-template>\n }\n </span>\n @if (column.ordered$ | async) {\n @switch (column.sortingDirection$ | async) {\n @case ('asc') {\n <mat-icon>\n arrow_downward\n </mat-icon>\n }\n @case ('desc') {\n <mat-icon>\n arrow_upward\n </mat-icon>\n }\n }\n } @else if (column.sortable) {\n <mat-icon>\n unfold_more\n </mat-icon>\n }\n</div>","import { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { FsListSortConfig, SortingChangeEvent } from '../interfaces';\nimport { ColumnAttributes } from '../models/column-attributes';\nimport { Column, SortingDirection } from '../models/column.model';\n\nimport { List } from './list-controller';\n\n\nexport class SortingController {\n\n public config: List;\n public sortingColumns: Column[] = [];\n public fakeSortingColumns: Column[] = [];\n public sortingColumn: Column;\n\n private _initialized = new BehaviorSubject<boolean>(false);\n private _sortingChanged$ = new Subject<SortingChangeEvent>();\n private _onDestroy = new Subject();\n\n constructor() {}\n\n public get sortingChanged$(): Observable<SortingChangeEvent> {\n return this._sortingChanged$.pipe(takeUntil(this._onDestroy));\n }\n\n public get initialized$(): Observable<boolean> {\n return this._initialized.pipe(takeUntil(this._onDestroy));\n }\n\n public get value(): FsListSortConfig | undefined {\n if (this.sortingColumn) {\n return {\n value: this.sortingColumn.name,\n direction: this.sortingColumn.direction,\n };\n }\n\n return undefined;\n }\n\n public get initialization(): boolean {\n return !this._initialized.getValue();\n }\n\n public get isDefined(): boolean {\n return !!this.sortingColumn;\n }\n\n private set _initialization(value: boolean) {\n this._initialized.next(!value);\n }\n\n public addSortableColumn(column: Column) {\n this.sortingColumns.push(column);\n }\n\n public clearSortableColumns(): void {\n this.sortingColumns = [];\n }\n\n /**\n * Set Sortable Direction\n *\n * @param direction\n */\n public sortDirection(direction) {\n if (this.sortingColumn && this.sortingColumn.sortingDirection !== direction) {\n this._setSortingDirection(direction);\n\n this._notifySortChanged();\n }\n }\n\n /**\n * Sort By\n *\n * @param column\n */\n public sortBy(column: Column) {\n if (column.sortable) {\n this._setSortingColumn(column);\n\n this._notifySortChanged();\n }\n }\n\n /**\n * Same as sortBy, but need only column name as parameter for sort\n *\n * @param name\n */\n public sortByColumnWithName(name: string) {\n const column = this.getColumn(name);\n\n if (!column) {\n return;\n }\n\n this._setSortingColumn(column);\n\n this._notifySortChanged();\n }\n\n /**\n * Init fake columns for sorting\n *\n * @param columns\n */\n public initFakeColumns(columns) {\n columns.forEach((column) => {\n const attributes = new ColumnAttributes({\n title: column.name,\n name: column.value,\n sortable: true,\n direction: column.direction,\n });\n\n const fakeColumn = new Column({\n attributes,\n });\n\n this.fakeSortingColumns.push(fakeColumn);\n });\n }\n\n /**\n * Set initial sorting\n *\n * @param sort\n */\n public initialSortBy(sort: FsListSortConfig) {\n this._initialization = true;\n\n if (!sort) {\n this._trySortByDefaultSortableColumn();\n\n if (!this.sortingColumn) {\n this.sortByFirstSortbale();\n }\n\n this._initialization = false;\n\n return;\n }\n\n if (!this.getColumn(sort.value)) {\n this.sortByFirstSortbale();\n\n console.warn(`\n Not possible to do initial sort by \"${sort.value}\" column.\n Column with name \"${sort.value}\" does not exists.\n Check your lister configuration.\n `);\n } else {\n this.sortByColumnWithName(sort.value);\n\n const direction = (sort.direction === undefined || sort.direction === 'asc')\n ? SortingDirection.asc\n : SortingDirection.desc;\n this._setSortingDirection(direction);\n }\n\n this._initialization = false;\n }\n\n /**\n * Sort by first of available sorting columns\n */\n public sortByFirstSortbale() {\n const column =\n this.sortingColumns.find((col) => col.sortable);\n\n if (!column) {\n return;\n }\n\n this.sortBy(column);\n this.sortDirection(column.direction || SortingDirection.asc);\n }\n\n /**\n * Merge sorting and fake sorting cols\n * Fake sorting cols it's cols which don't represented in table cols, like abstract cols\n */\n public makeSortingList() {\n return [\n ...this.sortingColumns,\n ...this.fakeSortingColumns,\n ].reduce((acc, column) => {\n\n const sortingItem = {\n name: column.title,\n value: column.name,\n default: this.sortingColumn && this.sortingColumn.name === column.name,\n };\n\n acc.push(sortingItem);\n\n return acc;\n }, []);\n }\n\n public getColumn(name: string): Column {\n return [...this.sortingColumns, ...this.fakeSortingColumns]\n .find((col) => col.name === name && col.sortable);\n }\n\n /**\n * Destroy\n */\n public destroy() {\n this._onDestroy.next(null);\n this._onDestroy.complete();\n }\n\n private _setSortingColumn(column: Column) {\n // Can't do sort by non sortable column\n if (!column.sortable) {\n return false;\n }\n\n // Column was ordered before\n if (column.ordered) {\n column.changeDirection();\n } else {\n [...this.fakeSortingColumns, ...this.sortingColumns]\n .filter((col) => col.ordered)\n .forEach((col) => col.ordered = false);\n\n column.ordered = true;\n }\n\n this.sortingColumn = column;\n }\n\n private _setSortingDirection(direction) {\n this.sortingColumn.sortingDirection = direction;\n }\n\n private _notifySortChanged() {\n if (this.initialization) {\n return;\n }\n\n this._sortingChanged$.next({\n sortBy: this.sortingColumn.name,\n sortDirection: this.sortingColumn.direction,\n });\n }\n\n private _trySortByDefaultSortableColumn(): void {\n const sortableDefault = this.sortingColumns\n .find((column) => column.sortableDefault);\n\n if (sortableDefault) {\n this.sortByColumnWithName(sortableDefault.name);\n }\n }\n}\n","import { AsyncPipe, NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, ViewChild, ViewContainerRef, inject } from '@angular/core';\n\nimport { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';\n\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport {\n ReorderPosition,\n ReorderStrategy,\n} from '../../classes/reorder-controller';\nimport { SelectionChangeType, SelectionController } from '../../classes/selection-controller';\nimport { SortingController } from '../../classes/sorting-controller';\nimport { Column } from '../../models/column.model';\n\nimport { FsHeadCellComponent } from './head-cell/head-cell.component';\n\n\n@Component({\n selector: '[fs-list-head]',\n templateUrl: './head.component.html',\n styleUrls: ['./head.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n MatCheckbox,\n FsHeadCellComponent,\n NgClass,\n AsyncPipe,\n ],\n})\nexport class FsHeadComponent implements OnInit, OnDestroy {\n\n @Input() public sorting: SortingController;\n @Input() public columns: Column[];\n @Input() public hasRowActions: boolean;\n @Input() public selection: SelectionController;\n @Input() public activeFiltersCount: number;\n @Input() public reorderEnabled: boolean;\n @Input() public reorderPosition: ReorderPosition | null;\n @Input() public reorderStrategy: ReorderStrategy | null;\n\n @ViewChild('rowsContainer', { read: ViewContainerRef, static: true })\n public rowsContainer;\n\n public selectedAll = false;\n public readonly ReorderStrategyEnum = ReorderStrategy;\n\n private _destroy$ = new Subject();\n private _cdRef = inject(ChangeDetectorRef);\n\n public get leftDragDropEnabled(): boolean {\n return this.reorderEnabled\n && this.reorderPosition === ReorderPosition.Left\n && this.activeFiltersCount === 0;\n }\n\n public get rightDragDropEnabled(): boolean {\n return this.reorderEnabled\n && this.reorderPosition === ReorderPosition.Right\n && this.activeFiltersCount === 0;\n }\n\n public ngOnInit() {\n this._initSorting();\n this._initSelection();\n }\n\n public ngOnDestroy() {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n /**\n * Select All Visible Rows\n *\n * @param event\n */\n public selectAll(event: MatCheckboxChange) {\n this.selection.selectAllVisibleRows(event.checked);\n }\n\n /**\n * Track By for improve change detection\n *\n * @param index\n * @param column\n */\n public trackByFn(index: number, column: Column) {\n return column.name || column.title || index;\n }\n\n /**\n * Subscribe to sorting change\n */\n private _initSorting() {\n this.sorting.sortingChanged$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._cdRef.detectChanges();\n });\n }\n\n /**\n * Subscribe to selection change\n */\n private _initSelection() {\n if (this.selection) {\n this.selection.selectionChange$\n .pipe(\n filter(\n ({ type }) => (\n type === SelectionChangeType.AllVisibleSelectionChange\n || type === SelectionChangeType.SelectedAll\n || type === SelectionChangeType.RowSelectionChange\n ),\n ),\n takeUntil(this._destroy$),\n )\n .subscribe(({ type, payload: status }) => {\n this.selectedAll = status;\n\n this._cdRef.markForCheck();\n });\n }\n }\n}\n","<tr class=\"fs-list-row\">\n <!-- Drag -->\n @if (leftDragDropEnabled) {\n <th class=\"fs-list-col drag-col\"></th>\n }\n <!-- Selection -->\n @if (selection && !(selection.disabled$ | async)) {\n <th class=\"fs-list-col fs-list-col-selection\">\n <mat-checkbox\n (change)=\"selectAll($event)\"\n [checked]=\"selectedAll\">\n </mat-checkbox>\n </th>\n }\n <!-- Content -->\n @for (column of columns; track trackByFn($index, column)) {\n <th\n fs-head-cell\n (click)=\"$event.stopPropagation(); sorting.sortBy(column)\"\n [column]=\"column\"\n [class.sorting]=\"column.sortable\"\n [ngClass]=\"column.headerConfigs.classesArray\"\n [attr.colspan]=\"column.headerConfigs.colspan\"\n [attr.width]=\"column.width\">\n </th>\n }\n <!-- Drag -->\n @if (rightDragDropEnabled) {\n <th class=\"fs-list-col drag-col\"></th>\n }\n <!-- Row Actions -->\n @if (hasRowActions && !(reorderEnabled && reorderStrategy === ReorderStrategyEnum.Manual)) {\n <th class=\"fs-list-col actions-col\"></th>\n }\n</tr>","export enum PageChangeType {\r\n Default = 0,\r\n LimitChanged = 1\r\n}\r\n","export enum FsListState {\r\n Idle,\r\n Load,\r\n Reload,\r\n Filter,\r\n Sort,\r\n PageChange,\r\n LoadMore,\r\n}\r\n","import { BehaviorSubject, merge, Observable, of, Subject } from 'rxjs';\nimport { skip, takeUntil, tap } from 'rxjs/operators';\n\nimport { isNumber } from 'lodash-es';\n\nimport {\n FsListColumn,\n FsListColumnChangeFn,\n FsListColumnConfig,\n FsListColumnLoadFn,\n} from '../interfaces';\nimport { ColumnsColumn } from '../models';\nimport { Column } from '../models/column.model';\n\nimport { PersistanceController } from './persistance-controller';\n\n\nexport class ColumnsController {\n\n private _visibleColumns$ = new BehaviorSubject<Column[]>([]);\n private _visibleColumnsShared$ = this._visibleColumns$.pipe();\n private _theadClass = '';\n private _loadFn: FsListColumnLoadFn;\n private _changeFn: FsListColumnChangeFn;\n private _initFn: FsListColumnChangeFn;\n private _isConfigured = false;\n private _columnsFetched = false;\n private _hasHeader = false;\n private _hasFooter = false;\n private _columns: Column[] = [];\n private _defaultConfigs;\n private _columnsUpdated$ = new Subject<void>();\n private _destroy$ = new Subject<void>();\n\n constructor(\n private _persistance: PersistanceController,\n ) {}\n\n public get columns() {\n return this._columns.slice();\n }\n\n public get visibleColumns(): Column[] {\n return this._visibleColumns$.getValue();\n }\n\n public get visibleColumns$(): Observable<Column[]> {\n return this._visibleColumnsShared$;\n }\n\n public get columnsForDialog(): ColumnsColumn[] {\n return this._columns\n .filter((column) => column.customizable && !!column.name)\n .map((column) => {\n return {\n template: column.headerTemplate,\n name: column.name,\n show: column.visible,\n title: column.title,\n };\n });\n }\n\n public get columnsFetched() {\n return this._columnsFetched;\n }\n\n public get hasHeader() {\n return this._hasHeader;\n }\n\n public get hasFooter() {\n return this._hasFooter;\n }\n\n public get theadClass() {\n return this._theadClass;\n }\n\n public get configured() {\n return this._isConfigured;\n }\n\n public get changeFn() {\n return this._changeFn;\n }\n\n public get visibleColumnsNames() {\n return this.visibleColumns\n .map((column) => column.name)\n .filter((name) => !!name);\n }\n\n public setDefaults(defaults) {\n this._defaultConfigs = defaults;\n }\n\n /**\n * Set data from list config\n * @param config\n */\n public initConfig(config: FsListColumnConfig) {\n this._loadFn = config?.load ? config.load : () => {\n return of(this._persistance.columnsEnabled ? this._persistance.getColumns() : []);\n };\n \n this._changeFn = config?.change ? config.change : () => {\n //\n };\n\n this._initFn = config?.init ? config.init : () => {\n //\n };\n\n this._isConfigured = !!config;\n }\n\n /**\n * Base initialization for columns\n * @param templates\n */\n public initializeColumns(templates) {\n this._columns = [];\n\n templates.forEach((column) => {\n const col = new Column(column, this._defaultConfigs);\n\n if (col.headerTemplate || col.title) {\n this._hasHeader = true;\n }\n if (col.footerTemplate) {\n this._hasFooter = true;\n }\n\n this._columns.push(col);\n });\n\n this._theadClass = this.hasHeader ? 'has-header' : '';\n\n this._updateColspans('headerConfigs', 'headerColspanned');\n this._updateColspans('groupHeaderConfigs', 'groupHeaderColspanned');\n this._updateColspans('groupFooterConfigs', 'groupFooterColspanned');\n this._updateColspans('cellConfigs', 'cellColspanned');\n this._updateColspans('footerConfigs', 'footerColspanned');\n\n this.updateVisibleColumns();\n this._listenColumnVisibilityUpdates();\n }\n\n /**\n * Load visiblity config for columns from remote\n */\n public loadRemoteColumnConfigs() {\n return this._loadFn()\n .pipe(\n tap((columns: FsListColumn[]) => {\n this._columnsFetched = true;\n this.updateVisibilityForCols(columns);\n this.updateCustomizableForCols(columns);\n this._initFn(\n this._columns\n .filter((column) => column.customizable && !!column.name)\n .map<FsListColumn>((column) => {\n return {\n name: column.name,\n show: column.visible,\n };\n }));\n }),\n takeUntil(this._destroy$),\n );\n }\n\n /**\n * Set visible columns based on current columns show status\n */\n public updateVisibleColumns() {\n this._visibleColumns$.next(\n this._columns.filter((column) => column.visible) || [],\n );\n }\n\n /**\n * Update visibility based on passed config\n * @param columnsConfig\n */\n public updateVisibilityForCols(columnsConfig: FsListColumn[]) {\n columnsConfig.forEach((columnConfig) => {\n const col = this._columns\n .find((column) => column.name === columnConfig.name);\n\n if (col) {\n col.updateVisibility(columnConfig.show ?? true);\n }\n });\n\n this.updateVisibleColumns();\n }\n\n public updateCustomizableForCols(columnsConfig: FsListColumn[]) {\n columnsConfig.forEach((columnConfig) => {\n const col = this._columns\n .find((column) => column.name === columnConfig.name);\n\n if (col) {\n col.updateCustomizable(columnConfig.customizable ?? true);\n }\n });\n }\n\n public destroy() {\n this._destroy$.next(null);\n this._destroy$.complete();\n this._columnsUpdated$.complete();\n\n this._columns = undefined;\n this._visibleColumns$ = undefined;\n this._defaultConfigs = undefined;\n\n this._loadFn = undefined;\n this._changeFn = undefined;\n this._initFn = undefined;\n }\n\n private _listenColumnVisibilityUpdates() {\n this._columnsUpdated$.next(null);\n\n const columnsVisibility = this._columns.map((column) => {\n return column.visible$.pipe(skip(1));\n });\n\n merge(...columnsVisibility)\n .pipe(\n takeUntil(this._columnsUpdated$),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.updateVisibleColumns();\n });\n }\n\n private _updateColspans(config, updateFlag) {\n this._columns.forEach((col, index) => {\n\n if (col[config].colspan !== undefined) {\n const spanTo = index + +col[config].colspan;\n\n if (!isNumber(spanTo)) {\n return;\n }\n this._columns[index][updateFlag] = false;\n\n for (let i = index + 1; i < spanTo; i++) {\n if (this._columns[i]) {\n this._columns[i][updateFlag] = true;\n }\n }\n }\n });\n }\n\n}\n","import { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { isFunction, isObject } from 'lodash-es';\n\nimport { RowType } from '../enums/row-type.enum';\nimport { FsListState } from '../enums/state.enum';\nimport { FsListAbstractRow, FsListGroupConfig, FsListTrackByTargetRowFn } from '../interfaces/listconfig.interface';\nimport { Row, isChildTypeRow, isGroupRow, makeRowFactory } from '../models/row';\nimport { IChildRow } from '../models/row/child-row';\nimport { IGroupFooterRow } from '../models/row/group-footer-row';\nimport { IGroupRow } from '../models/row/group-row';\n\n\nexport class DataController {\n\n private readonly _visibleRows$ = new BehaviorSubject<Row[]>([]);\n private readonly _rowsRemoved$ = new Subject<Row[]>();\n private readonly _remoteRowsChange$ = new Subject<void>();\n\n private _store = new Map();\n private _rowsStack: Row[] = [];\n private _operation: FsListState;\n\n private _groupByFn: (row) => any[];\n private _footerRowFn: (\n row: { [key: string]: any },\n group: {\n [key: string]: any,\n children: {\n [key: string]: any\n }[],\n }\n ) => boolean;\n private _compareByFn: (group) => any;\n private _initialExpand = true;\n private _groupEnabled = false;\n\n private _loadMoreEnabled: boolean;\n\n private _hasData = false;\n\n private readonly _destroy$ = new Subject<void>();\n\n public get visibleRowsData() {\n return this.visibleRows.map((row) => row.data);\n }\n\n public get rowsStack() {\n return this._rowsStack.slice();\n }\n\n public get groupEnabled() {\n return this._groupEnabled;\n }\n\n public set groupEnabled(value: boolean) {\n this._groupEnabled = value;\n }\n\n public get remoteRowsChange$() {\n return this._remoteRowsChange$.pipe(\n takeUntil(this._destroy$),\n );\n }\n\n public get rowsRemoved$() {\n return this._rowsRemoved$.pipe(\n takeUntil(this._destroy$),\n );\n }\n\n public get hasData() {\n return this._hasData;\n }\n\n public get operation() {\n return this._operation;\n }\n\n public get visibleRows$(): Observable<Row[]> {\n return this._visibleRows$.asObservable();\n }\n\n public set visibleRows(value: any[]) {\n this._visibleRows$.next(value);\n this._hasData = this.visibleRows.length > 0;\n }\n\n public get visibleRows() {\n return this._visibleRows$.getValue();\n }\n\n public get visibleRowsCount() {\n return this.visibleRows.length;\n }\n\n public get hasGroups() {\n return this._compareByFn && this._groupByFn;\n }\n\n public get reorderData() {\n return this._rowsStack\n .map((row) => row.reorderData());\n }\n\n public setGroupConfig(group: FsListGroupConfig) {\n if (group) {\n this._groupByFn = group.groupBy;\n this._compareByFn = group.compareBy;\n this._footerRowFn = group.footer || (() => false);\n this._initialExpand = group.initialExpand ?? true;\n\n // group mode enabled by default\n this._groupEnabled = (group.enabled !== undefined)\n ? group.enabled\n : true;\n }\n }\n\n public setAdditionalConfigs(configs: { loadMoreEnabled: boolean }) {\n this._loadMoreEnabled = configs.loadMoreEnabled;\n }\n\n /**\n * Rows what was received from fetch function\n * @param rows\n */\n public setRowsFromResponse(rows: any[]) {\n if (\n this._operation === FsListState.LoadMore ||\n (this._operation === FsListState.PageChange && this._loadMoreEnabled)\n ) {\n this._extendRowsStack(rows);\n } else {\n this._updateRowsStack(rows);\n }\n\n this._operation = FsListState.Idle;\n\n this._updateVisibleRows();\n }\n\n /**\n * Set current operation for list data flow\n * @param value\n */\n public setOperation(value: FsListState) {\n this._operation = value;\n }\n\n /**\n * Remove rows from visible\n */\n public clearRows() {\n this.visibleRows = [];\n }\n\n /**\n * Update data for specified row\n * @param rows\n * @param trackBy\n */\n public updateData(\n rows: FsListAbstractRow | FsListAbstractRow[],\n trackBy?: FsListTrackByTargetRowFn,\n ): boolean {\n if (Array.isArray(rows)) {\n let updateSuccess = false;\n\n rows.forEach((item) => {\n if (this._updateRow(item, trackBy)) {\n updateSuccess = true;\n }\n });\n\n return updateSuccess;\n }\n \n return this._updateRow(rows, trackBy);\n }\n\n /**\n * Remove data for specified row\n * @param data\n */\n public removeData(\n data: FsListAbstractRow | FsListAbstractRow[] | FsListTrackByTargetRowFn,\n ): boolean {\n const removedRows = [];\n\n const defaultTrackBy = (row, target) => {\n return row === target;\n };\n\n if (Array.isArray(data)) {\n //\n data.forEach((item) => {\n removedRows.push(...this._removeRow(item, defaultTrackBy));\n });\n } else if (isFunction(data)) {\n removedRows.push(...this._removeRow(null, (data as FsListTrackByTargetRowFn)));\n } else if (isObject(data)) {\n removedRows.push(...this._removeRow(data, defaultTrackBy));\n }\n\n if (removedRows.length > 0) {\n this._updateVisibleRows();\n\n this._rowsRemoved$.next(removedRows);\n }\n\n return !!removedRows.length;\n }\n\n public swapRows(row1, row2, selectedRows?: Row[], isMultipleDrag = false) {\n const rowsStack = this._rowsStack;\n const row1GlobalIndex = rowsStack.indexOf(row1);\n const row2GlobalIndex = rowsStack.indexOf(row2);\n\n const tmpEl = rowsStack[row1GlobalIndex];\n rowsStack[row1GlobalIndex] = rowsStack[row2GlobalIndex];\n rowsStack[row2GlobalIndex] = tmpEl;\n\n if (isMultipleDrag && Array.isArray(selectedRows)) {\n if (!selectedRows.includes(row1)) {\n selectedRows = [row1, ...selectedRows];\n }\n\n selectedRows\n .filter((selectedRow) => {\n return selectedRow !== row1;\n })\n .forEach((selectedRow) => {\n const idx = rowsStack.indexOf(selectedRow);\n rowsStack.splice(idx, 1);\n });\n\n const indexToInsertAfter = rowsStack.indexOf(tmpEl);\n\n rowsStack.splice(indexToInsertAfter, 1);\n\n selectedRows.forEach((selectedRow, offset) => {\n rowsStack.splice(indexToInsertAfter + offset, 0, selectedRow);\n });\n }\n\n this._rowsStack = [...rowsStack];\n }\n\n public destroy() {\n this._destroyRowsStack();\n this._store.clear();\n\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public toggleRowGroup(rowData) {\n const row: IGroupRow = this.visibleRows.find((visibleRow) => visibleRow.data === rowData );\n row?.toggleRowExpandStatus();\n\n this._updateVisibleRows();\n }\n\n public finishReorder(): void {\n // TODO fixme remove or improve\n if (this.groupEnabled) {\n let group: IGroupRow;\n\n this._rowsStack\n .forEach((row, index) => {\n if (isGroupRow(row) && row !== group) {\n group = row;\n } else {\n row.index = index - this._rowsStack.indexOf(group) - 1;\n }\n });\n }\n\n this._updateVisibleRows();\n }\n\n private _updateRowsStack(rows) {\n this._destroyRowsStack();\n\n if (this.groupEnabled) {\n this._store.clear();\n this._rowsStack = [...this._groupRowsBy(rows)];\n } else {\n rows = rows.map((row) => {\n return makeRowFactory(row, RowType.Simple);\n });\n this._rowsStack = [...rows];\n }\n }\n\n private _extendRowsStack(rows) {\n if (this.groupEnabled) {\n this._rowsStack = [...this._groupRowsBy(rows)];\n } else {\n rows = rows.map((row) => {\n return makeRowFactory(row, RowType.Simple);\n });\n this._rowsStack = [...this._rowsStack, ...rows];\n }\n }\n\n private _destroyRowsStack() {\n this._rowsStack.forEach((row) => row.destroy());\n }\n\n private _updateVisibleRows() {\n this.visibleRows = this._rowsStack\n .filter((row: Row) => {\n return !isChildTypeRow(row) || row.visible;\n });\n }\n\n private _updateRow(\n updatedRow: FsListAbstractRow,\n trackBy?: (listRow: FsListAbstractRow, targetRow?: FsListAbstractRow) => boolean) {\n\n if (trackBy === undefined) {\n trackBy = (row, target) => {\n return row === target;\n };\n }\n\n const targetIndex = this._rowsStack\n .findIndex((listRow) => trackBy(listRow.data, updatedRow));\n\n if (targetIndex !== -1) {\n const targetRow = this._rowsStack[targetIndex];\n const updatedData = { ...targetRow.data, ...updatedRow };\n \n targetRow.data = updatedData;\n\n return true;\n }\n\n return false;\n }\n\n /**\n * Remove row from\n * @param targetRow\n * @param trackBy\n */\n private _removeRow(\n targetRow: FsListAbstractRow | null,\n trackBy?: FsListTrackByTargetRowFn,\n ) {\n\n const rows = this._rowsStack;\n const removedRows = [];\n\n rows.forEach((listRow, index) => {\n if (trackBy(listRow.data, targetRow)) {\n const removedRow = rows.splice(index, 1);\n\n removedRows.push(removedRow);\n }\n });\n\n return removedRows;\n }\n\n /**\n * Split existing rows by groups and store them for future use\n */\n private _groupRowsBy(rows) {\n if (!this._groupByFn || !this._compareByFn) {\n return rows;\n }\n\n const groupRows: IGroupRow[] = [];\n\n rows.forEach((row) => {\n const groupData = this._groupByFn(row);\n const groupKey = this._compareByFn(groupData);\n\n let group: IGroupRow = this._store.get(groupKey);\n\n if (!group) {\n group = makeRowFactory(\n groupData,\n RowType.Group,\n { initialExpand: this._initialExpand },\n ) as IGroupRow;\n\n group.index = groupRows.length;\n groupRows.push(group);\n\n this._store.set(groupKey, group);\n }\n\n const childRow = makeRowFactory(row, RowType.GroupChild, { parent: group }) as IChildRow;\n group.children.push(childRow);\n });\n\n groupRows.forEach((groupRow) => {\n const footerIndex = groupRow.children\n .findIndex((row) => {\n return this._footerRowFn(row.data, {\n ...groupRow.data,\n children: groupRow.childrenData,\n });\n });\n\n if (footerIndex !== -1) {\n const footerRow = groupRow.children.splice(footerIndex, footerIndex + 1)[0];\n const newRow = makeRowFactory(footerRow.data, RowType.GroupFooter, { parent: groupRow });\n groupRow.children.push(newRow as IGroupFooterRow);\n }\n });\n\n return Array.from(this._store.values())\n .reduce((acc, item) => {\n if (isGroupRow(item)) {\n acc.push(item, ...item.children);\n } else {\n acc.push(item);\n }\n\n return acc;\n }, []);\n }\n}\n","import { ActivatedRoute } from '@angular/router';\n\nimport { merge, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { PaginationController } from '../classes/pagination-controller';\nimport { SortingController } from '../classes/sorting-controller';\nimport { FsListSortConfig } from '../interfaces';\nimport {\n ExternalParams,\n ExternalQueryPagination,\n ExternalQuerySorting,\n} from '../interfaces/external-params.interface';\n\nimport { PersistanceController } from './persistance-controller';\n\n\nexport class ExternalParamsController {\n\n private _externalParams: ExternalParams = {\n page: null,\n limit: null,\n sortName: null,\n sortDirection: null,\n };\n\n private _destroy$ = new Subject<void>();\n\n constructor(\n private _route: ActivatedRoute,\n private _persistance: PersistanceController,\n private _paginator: PaginationController,\n private _sorting: SortingController,\n private _queryParamsEnabled: boolean,\n ) {\n this.initialize();\n }\n\n public get externalSorting(): FsListSortConfig {\n if (!this._enabled || !this._sortName || !this._sortDirection) {\n return null;\n }\n\n return {\n value: this._sortName,\n direction: this._sortDirection,\n };\n }\n\n private get _enabled(): boolean {\n return this._queryParamsEnabled || this._persistance.filtersEnabled;\n }\n\n private get _page(): number {\n return this._externalParams.page;\n }\n\n private get _limit(): number {\n return this._externalParams.limit;\n }\n\n private get _sortName(): string {\n return this._externalParams.sortName;\n }\n\n private get _sortDirection(): 'asc' | 'desc' {\n return this._externalParams.sortDirection;\n }\n\n public initialize() {\n\n // Restore from localStorage parameters if persistance enabled\n if (this._persistance.pagingEnabled) {\n this._restorePaginationParams(this._persistance.getPaging());\n }\n\n if (this._persistance.sortingEnabled) {\n this._restoreSortingParams(this._persistance.getSorting());\n }\n\n // Restore from queryParams and override if persistance already had values for those params\n if (this._queryParamsEnabled) {\n this._restorePaginationParams(this._route.snapshot.queryParams as ExternalQueryPagination);\n this._restoreSortingParams(this._route.snapshot.queryParams as ExternalQuerySorting);\n }\n\n // Set initial pagination params\n // The same initial, but for sorting placed in list-controller \"tranformTemplatesToColumns\" method\n if (this._paginator.enabled) {\n if (this._limit) {\n this._paginator.setLimit(this._limit);\n }\n\n if (this._page) {\n this._paginator.goToPage(this._page);\n }\n }\n\n // Update pagination in stores\n this._updatePaginationParams(this._paginator.queryPageStrategy);\n\n this._listenPaginatorChanges();\n this._listenSortingChanges();\n }\n\n public clearSortingParams() {\n this._updateSortingParams(null, null);\n }\n\n public destroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n private _restorePaginationParams(values: ExternalQueryPagination) {\n if (values?.page) {\n this._externalParams.page = +values.page;\n }\n\n if (values?.limit) {\n this._externalParams.limit = +values.limit;\n }\n }\n\n private _restoreSortingParams(values: ExternalQuerySorting) {\n if (values?.sortName) {\n this._externalParams.sortName = values.sortName;\n }\n\n if (values?.sortDirection) {\n this._externalParams.sortDirection = values.sortDirection;\n }\n }\n\n private _listenPaginatorChanges() {\n merge(\n this._paginator.pageChanged$,\n this._paginator.pages$,\n this._paginator.pageReset$,\n )\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._updatePaginationParams(this._paginator.queryPageStrategy);\n });\n }\n\n private _listenSortingChanges() {\n merge(\n this._sorting.initialized$,\n this._sorting.sortingChanged$,\n )\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n const sorting = this._sorting.value;\n\n if (sorting) {\n this._updateSortingParams(sorting.value, sorting.direction);\n } else {\n this.clearSortingParams();\n }\n });\n }\n\n private _updateSortingParams(name: string, direction: string) {\n if (this._queryParamsEnabled) {\n this._replaceState({\n sortName: name,\n sortDirection: direction,\n });\n }\n\n if (this._persistance.filtersEnabled) {\n if (name && direction) {\n this._persistance.setSorting({ sortName: name, sortDirection: direction });\n } else {\n this._persistance.setSorting(null);\n }\n }\n }\n\n private _updatePaginationParams(params) {\n if (this._queryParamsEnabled) {\n this._replaceState(params);\n }\n\n if (this._persistance.filtersEnabled) {\n this._persistance.setPaging(params);\n }\n }\n\n private _replaceState(data) {\n const url = new URL(window.location.href);\n\n Object.keys(data)\n .filter((name) => data[name] !== undefined && data[name] !== null)\n .forEach((name) => {\n url.searchParams.set(name,data[name]);\n });\n\n history.replaceState({}, null, url.pathname + url.search);\n }\n}\n","import { FilterComponent } from '@firestitch/filter';\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { FsListAction } from '../interfaces/listconfig.interface';\n\n\nexport class ActionsController {\n\n private _filterRef: FilterComponent;\n\n private _actions: FsListAction[] = [];\n private _reorderAction: FsListAction;\n private _doneAction: FsListAction;\n\n private _destroy$ = new Subject<void>();\n\n constructor() {}\n\n public get destroy$(): Observable<void> {\n return this._destroy$.asObservable();\n }\n\n public get actions(): FsListAction[] {\n return this._actions;\n }\n\n public get hasActions(): boolean {\n return this._actions.length > 0;\n }\n\n public setFilterRef(ref: FilterComponent) {\n this._filterRef = ref;\n }\n\n public setActions(actions: FsListAction[]) {\n this.clearActions();\n this._actions = actions;\n\n if (this._reorderAction) {\n this._actions.unshift(this._reorderAction);\n }\n }\n\n public addReorderAction(action: FsListAction) {\n const actionClickFn = action.click;\n this._actions.unshift(action);\n\n action.click = () => {\n this._filterRef.updateActions([this._doneAction]);\n this._filterRef.disableFilters();\n actionClickFn(null);\n };\n\n this._reorderAction = action;\n }\n\n public addReorderDoneAction(action: FsListAction) {\n this._doneAction = action;\n const actionClickFn = action.click;\n\n this._doneAction.click = () => {\n this._filterRef.updateActions(this._actions);\n this._filterRef.enableFilters();\n actionClickFn(null);\n };\n }\n\n public clearActions() {\n this._actions = [];\n this._destroy$.next(null);\n }\n\n public updateDisabledState(): void {\n this._filterRef.updateDisabledState();\n }\n}\n","export enum PaginationStrategy {\r\n Page = 'page',\r\n Offset = 'offset',\r\n Many = 'many',\r\n None = 'none',\r\n}\r\n","\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\n\nimport { PageChangeType } from '../enums/page-change-type.enum';\nimport { PaginationStrategy } from '../enums/pagination-strategy.enum';\nimport {\n FsListLoadMoreConfig,\n FsPaging,\n IPaginationState,\n PageChange,\n QueryManyStrategy,\n QueryOffsetStrategy,\n QueryPageStrategy,\n} from '../interfaces';\n\nexport class PaginationController {\n\n private _limit = 25;\n private _records: number;\n private _page = 1; // Active page\n private _pageRecords = 0;\n private _offset = 0;\n private _pages$ = new BehaviorSubject<number>(0); // Total pages\n private _strategy: PaginationStrategy = PaginationStrategy.None;\n private _removedRows = 0;\n private _pageChanged$ = new Subject<PageChange>();\n private _pageReset$ = new Subject<void>();\n private _onDestroy$ = new Subject();\n private _loadMoreConfig: FsListLoadMoreConfig;\n private _limits = [10, 25, 50, 100, 200];\n\n public set pages(value: number) {\n this._pages$.next(value);\n }\n\n public get pages(): number {\n return this._pages$.getValue();\n }\n\n public get page(): number {\n return this._page;\n }\n\n public set page(value: number) {\n this._page = value;\n }\n\n public get pageRecords(): number {\n return this._pageRecords;\n }\n\n public get offset(): number {\n return this._offset;\n }\n\n public get limit(): number {\n return this._limit;\n }\n\n public get records(): number {\n return this._records;\n }\n\n public set records(value: number) {\n this._records = value;\n }\n\n public get pages$(): Observable<number> {\n return this._pages$\n .pipe(\n distinctUntilChanged(),\n );\n }\n\n /**\n * Fire if page was changed\n */\n public get pageChanged$(): Observable<PageChange> {\n return this._pageChanged$.pipe(takeUntil(this._onDestroy$));\n }\n\n public get pageReset$(): Observable<void> {\n return this._pageReset$.asObservable();\n }\n\n /**\n * Get enabled\n */\n public get enabled(): boolean {\n return !this.hasNoneStrategy;\n }\n\n /**\n * Get Limits\n */\n public get limits(): number[] {\n return this._limits;\n }\n\n /**\n * Set limits, update pages array and set new limit per page\n *\n * @param value\n */\n public set limits(value) {\n this._limits = value;\n\n if (this._limits.length > 0 && this._limits.indexOf(this._limit) === -1) {\n this._limit = this._limits[0];\n } else if (this._limits.length === 0) {\n this._limit = this._records;\n }\n }\n\n /**\n * Get query for request\n */\n public get query() {\n switch (this.strategy) {\n case PaginationStrategy.Page:\n return this.queryPageStrategy;\n case PaginationStrategy.Offset:\n return this.queryOffsetStrategy;\n case PaginationStrategy.Many:\n return this.queryManyStrategy;\n }\n\n return {};\n }\n\n public get loadMoreQuery() {\n switch (this.strategy) {\n case PaginationStrategy.Page: {\n return this.query;\n }\n\n case PaginationStrategy.Offset: {\n const query = this.queryOffsetStrategy;\n\n query.limit = query.offset + query.limit;\n query.offset = 0;\n\n return query;\n }\n }\n\n return {};\n }\n\n /**\n * Query for Page Strategy\n */\n public get queryPageStrategy(): QueryPageStrategy {\n return this.hasNoneStrategy\n ? {}\n : {\n page: this._page || 1,\n limit: this._limit || 10,\n recordCount: true,\n };\n }\n\n /**\n * Query for Offset Strategy\n */\n public get queryOffsetStrategy(): QueryOffsetStrategy {\n const page = this._page - 1 || 0;\n const limit = this._limit || 5;\n\n return {\n offset: page * limit,\n limit,\n recordCount: true,\n };\n }\n\n public get queryManyStrategy(): QueryManyStrategy {\n return {\n ...this.queryOffsetStrategy,\n recordCount: false,\n };\n }\n\n /**\n * Get query for load only count of deleted rows\n */\n public get loadDeletedOffsetQuery() {\n const paginationOffset = this._limit * this._page;\n const actualOffset = Math.min(this._records, paginationOffset);\n const offset = Math.max(0, actualOffset - this._removedRows);\n\n return {\n offset,\n limit: this._removedRows,\n };\n }\n\n public get initialized() {\n return !!this.pages;\n }\n\n public get strategy() {\n return this._strategy;\n }\n\n public set strategy(strategy: PaginationStrategy) {\n this._strategy = (strategy === undefined) ? PaginationStrategy.Page : strategy;\n }\n\n /**\n * Check if pagination in Page Strategy Mode\n */\n public get hasPageStrategy() {\n return this.strategy === PaginationStrategy.Page;\n }\n\n /**\n * Check if pagination in Offset Strategy Mode\n */\n public get hasOffsetStrategy() {\n return this.strategy === PaginationStrategy.Offset;\n }\n\n /**\n * Check if pagination in None Strategy Mode\n */\n public get hasNoneStrategy(): boolean {\n return this.strategy === PaginationStrategy.None;\n }\n\n /**\n * Check if pagination in None Strategy Mode\n */\n public get hasManyStrategy(): boolean {\n return this.strategy === PaginationStrategy.Many;\n }\n\n /**\n * If prev page can be activated\n *\n */\n public get hasPrevPage(): boolean {\n switch (this.strategy) {\n case PaginationStrategy.Page:\n return this._hasPrevPagePageStrategy;\n case PaginationStrategy.Offset:\n return this._hasPrevPageOffsetStrategy;\n case PaginationStrategy.Many:\n return this._hasPrevPageManyStrategy;\n }\n\n return false;\n }\n\n /**\n * If next page can be activated\n */\n public get hasNextPage(): boolean { // Need to check if pages === page && page === 1\n switch (this.strategy) {\n case PaginationStrategy.Page:\n return this._hasNextPagePageStrategy;\n case PaginationStrategy.Offset:\n return this._hasNextPageOffsetStrategy;\n case PaginationStrategy.Many:\n return !!this._pageRecords && this._limit === this._pageRecords;\n }\n\n return false;\n }\n\n public get loadMoreEnabled(): boolean {\n return this._loadMoreConfig.enabled;\n }\n\n public get loadMoreLabel(): string {\n return this._loadMoreConfig.label;\n }\n\n public get loadMoreButtonColor(): string {\n return this._loadMoreConfig.buttonColor;\n }\n\n public get loadMoreButtonClass(): string {\n if( this._loadMoreConfig.buttonType === 'basic' ) {\n return ''; \n }\n\n return `mat-${this._loadMoreConfig.buttonType}-button`;\n }\n\n public get loadMoreButtonType(): string {\n return this._loadMoreConfig.buttonType;\n }\n\n /**\n * SP-T1974\n * Showing 26-50 of 333 results sorted by Name, Ascending\n * Showing 0 results sorted by Name, Ascending\n */\n public get statusLabel(): string {\n const status = this.hasManyStrategy ?\n this.manyStatus : \n this.defaultStatus;\n\n return Object.values(status)\n .filter((value) => !!value)\n .join('-');\n }\n\n public get manyStatus(): { from: number, to: number } {\n const current = (this._page - 1) * this._limit;\n const from = current + 1;\n \n if(this._pageRecords === 0) {\n return { from: current, to: 0 };\n }\n\n return this._pageRecords < this._limit ?\n { from, to: current + this._pageRecords } :\n { from, to: current + this._limit };\n }\n\n public get defaultStatus(): { from: number, to: number } {\n const current = (this._page - 1) * this._limit;\n const from = current + 1;\n const to = Math.min(this._records, current + this._limit);\n\n return { from, to };\n }\n\n public get state(): IPaginationState {\n return {\n enabled: this.enabled,\n strategy: this.strategy,\n page: this._page,\n offset: this._offset,\n limit: this._limit,\n records: this._records,\n pageRecords: this._pageRecords,\n };\n }\n\n public initWithConfig(\n config: FsPaging | false,\n loadMore: FsListLoadMoreConfig | boolean,\n ) {\n\n if (config) {\n if (config.limits) {\n this._limits = config.limits;\n }\n\n if (config.limit) {\n this._limit = config.limit;\n }\n\n this.strategy = config.strategy;\n }\n \n this.setLoadMore(loadMore);\n }\n\n /**\n * If pagination has prev page when Page Strategy\n */\n private get _hasPrevPagePageStrategy(): boolean {\n return this._page > 1 && this.pages > 1;\n }\n\n /**\n * If pagination has prev page when Offset Strategy\n */\n private get _hasPrevPageOffsetStrategy(): boolean {\n return this._offset >= this._limit && this._records > 1;\n }\n\n /**\n * If pagination has prev page when Offset Strategy\n */\n private get _hasPrevPageManyStrategy(): boolean {\n return this._offset > 0;\n }\n\n /**\n * If pagination has next page when Page Strategy\n */\n private get _hasNextPagePageStrategy(): boolean {\n return this._page < this.pages && this.pages > 1;\n }\n\n /**\n * If pagination has next page when Offset Strategy\n */\n private get _hasNextPageOffsetStrategy(): boolean {\n return (this._offset + this._limit) < this._records && this._records > 1;\n }\n\n /**\n * Update paging config and all related fields\n */\n public updatePaging(config, pageRecords: number = 0, loadMoreOperation = false) {\n if (!loadMoreOperation) {\n this._fromParams(config);\n this._pageRecords = pageRecords;\n } else {\n this._records = config.records;\n\n if (this._records < this._pageRecords) {\n this._pageRecords = this._records;\n }\n\n this._removedRows = 0;\n }\n\n this._updateTotalPages();\n }\n\n // /**\n // * Update paging when data source not remove\n // * @param {any[]} rows\n // */\n /*public updatePagingManual(rows: any[]) {\n if (Array.isArray(rows) && rows.length > 0) {\n this._records = rows.length;\n this.pages = Math.ceil(rows.length / this._limit);\n }\n\n this.updatePagesArray();\n this.updateDisplayed();\n }*/\n\n /**\n * Update pages array with new pages count\n */\n // public updatePagesArray() {\n // const MIDDLE = 2;\n // const pagesArr = [];\n\n // let from = 0;\n // let to = 0;\n // if (this._page < MIDDLE) {\n // from = MIDDLE - 1;\n // to = MIDDLE + 1;\n // } else if (this._page >= MIDDLE && this._page <= this.pages - MIDDLE + 1) {\n // from = this._page - 1;\n // to = this._page + 1;\n // } else if (this._page > this.pages - MIDDLE + 1) {\n // from = this.pages - MIDDLE - 1;\n // to = this.pages;\n // }\n\n // if (!this.pages || this.pages < 5) {\n // from = 1;\n // to = this.pages || 0;\n // }\n\n // for (let i = from; i <= to; i++) {\n // pagesArr.push(i);\n // }\n\n // this.pagesArray = Object.assign([], pagesArr);\n // }\n\n public setLoadMore(config: FsListLoadMoreConfig | boolean) {\n const loadMoreConfig = typeof config === 'boolean' ? \n {\n enabled: !!config,\n } : \n (\n config === undefined ? {} : {\n ...config,\n enabled: true,\n }\n );\n\n this._loadMoreConfig = {\n enabled: false,\n label: 'Load More',\n buttonType: 'basic',\n ...loadMoreConfig,\n };\n }\n\n public getPageRecords() {\n return this._pageRecords;\n }\n\n /**\n * Set new limit\n *\n * @param limit\n */\n public setLimit(limit) {\n this._limit = limit;\n this.resetPaging();\n\n this._pageChanged$\n .next({\n type: PageChangeType.LimitChanged,\n payload: limit,\n });\n }\n\n /**\n * If page is activate page\n *\n * @param page\n */\n public isActive(page): boolean {\n return page === this._page;\n }\n\n /**\n * Go to page\n *\n * @param page\n */\n public goToPage(page) {\n if (page >= 1 && this._page !== page) {\n this._page = page;\n\n this._updateOffset();\n\n this._pageChanged$.next({\n type: PageChangeType.Default,\n payload: page,\n });\n }\n }\n\n /**\n * Reset paging like it was just initialized\n */\n public resetPaging() {\n this._page = 1;\n this._offset = 0;\n }\n\n /**\n * Go to next page\n */\n public goNext() {\n if (this.hasNextPage) {\n this._page++;\n this._updateOffset();\n\n this._pageChanged$.next({\n type: PageChangeType.Default,\n payload: this._page,\n });\n }\n }\n\n /**\n * Go to first page\n */\n public goFirst() {\n if (this._page > 1) {\n this._page = 1;\n this._updateOffset();\n\n this._pageChanged$.next({\n type: PageChangeType.Default,\n payload: this._page,\n });\n }\n }\n\n /**\n * Go to prev page\n */\n public goPrev() {\n if (this._page > 1) {\n this._page--;\n\n this._updateOffset();\n\n this._pageChanged$.next({\n type: PageChangeType.Default,\n payload: this._page,\n });\n }\n }\n\n /**\n * Go to last page\n */\n public goLast() {\n if (this._page !== this.pages) {\n this._page = this.pages;\n\n this._updateOffset();\n\n this._pageChanged$.next({\n type: PageChangeType.Default,\n payload: this._page,\n });\n }\n }\n\n /**\n * Update count of deleted rows. This count will be applied for offset calc\n *\n * @param count\n */\n public removeRows(count: number) {\n this._removedRows += count;\n }\n\n public updatePagination() {\n this._updateTotalPages();\n }\n\n /**\n * Destroy\n */\n public destroy() {\n this._onDestroy$.next(null);\n this._onDestroy$.complete();\n }\n\n /**\n * Update paging state\n *\n * @param params\n */\n private _fromParams(params): void {\n if (!this.loadMoreEnabled) {\n this._limit = params.limit ?? 25;\n }\n\n this._records = params.records;\n this.pages = params.pages || 0;\n }\n\n /**\n * Calc and update offset\n */\n private _updateOffset() {\n this._offset = this._limit * (this._page - 1);\n }\n\n /**\n * Calc and update total count of pages\n */\n private _updateTotalPages() {\n this.pages = Math.ceil(this._records / this._limit);\n }\n}\n","import { ElementRef, TemplateRef } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport {\n ChangeFn, FilterConfig, FsFilterAutoReload, IFilterSavedFiltersConfig, ItemType,\n} from '@firestitch/filter';\nimport { SelectionDialog } from '@firestitch/selection';\n\nimport {\n BehaviorSubject, combineLatest, EMPTY, from, Observable, of, Subject,\n} from 'rxjs';\nimport {\n catchError, debounceTime,\n delay,\n map, mapTo, shareReplay, switchMap, take, takeUntil, tap,\n} from 'rxjs/operators';\n\nimport { cloneDeep } from 'lodash-es';\n\nimport { PageChangeType } from '../enums/page-change-type.enum';\nimport { FsListState } from '../enums/state.enum';\nimport {\n FsListAfterContentInitFn,\n FsListAfterFetchFn,\n FsListAfterInitFn,\n FsListBeforeFetchFn,\n FsListConfig,\n FsListEmptyStateConfig,\n FsListFetchFn,\n FsListFetchOptions,\n FsListFetchSubscription,\n FsListGroupConfig,\n FsListLoadMoreConfig,\n FsListNoResultsConfig,\n FsListPersitance,\n FsListRestoreConfig,\n FsListRowAction,\n FsListRowActionGroup,\n FsListSelectionConfig,\n FsListTrackByFn,\n FsPaging,\n PageChange,\n} from '../interfaces';\nimport { SortingDirection } from '../models/column.model';\nimport { StyleConfig } from '../models/styleConfig.model';\n\nimport { ColumnsController } from './columns-controller';\nimport { DataController } from './data-controller';\nimport { ExternalParamsController } from './external-params-controller';\nimport { ActionsController } from './index';\nimport { PaginationController } from './pagination-controller';\nimport { PersistanceController } from './persistance-controller';\nimport { SelectionController } from './selection-controller';\nimport { SortingController } from './sorting-controller';\n\nconst showDeletedFilterKey = 'showDeleted';\n\n\nexport class List {\n\n public heading: string;\n public trackBy: string;\n public subheading: string;\n public autoFocus: boolean;\n public rowHoverHighlight: boolean;\n public rowActionsRaw: (FsListRowActionGroup | FsListRowAction)[];\n public groupActionsRaw: any[];\n public rowClass;\n public rowEvents: any;\n public restore: FsListRestoreConfig;\n public persist: FsListPersitance;\n public filters = [];\n public filterInitCb: ChangeFn;\n public filterChangeCb: ChangeFn;\n public savedFilters: IFilterSavedFiltersConfig;\n public noResults: FsListNoResultsConfig;\n public emptyState: FsListEmptyStateConfig;\n public fetchFn: FsListFetchFn;\n public beforeFetchFn: FsListBeforeFetchFn;\n public afterFetchFn: FsListAfterFetchFn;\n public afterContentInit: FsListAfterContentInitFn;\n public afterInit: FsListAfterInitFn;\n public style;\n public hasRowActions;\n public rowActionsHover = false;\n public paging: PaginationController;\n public columns: ColumnsController;\n public actions: ActionsController;\n public dataController: DataController;\n public sorting: SortingController;\n public externalParams: ExternalParamsController;\n public selection: SelectionController;\n public filterConfig: FilterConfig = null;\n public filterBaseConfig: Partial<FilterConfig> = null;\n public status = true;\n public chips = false;\n public queryParam = false;\n public restoreMode = false;\n public autoReload: FsFilterAutoReload;\n public initialFetch = true;\n public emptyStateEnabled = false;\n public emptyStateTemplate: TemplateRef<any>;\n\n private _loading$ = new BehaviorSubject(false);\n private _fetchComplete$ = new Subject<{ scrollIntoView?: boolean }>();\n private _filtersReady$ = new Subject<void>();\n private _destroy$ = new Subject();\n private _initialized$ = new BehaviorSubject(false);\n private _fetch$ = new Subject<FsListFetchSubscription | void>();\n private readonly _filtersQuery = new BehaviorSubject<Record<string, any>>(null);\n private readonly _headerConfig: StyleConfig;\n private readonly _groupCellConfig: StyleConfig;\n private readonly _cellConfig: StyleConfig;\n private readonly _footerConfig: StyleConfig;\n\n constructor(\n private _el: ElementRef,\n private _config: FsListConfig = {},\n private _selectionDialog: SelectionDialog,\n private _route: ActivatedRoute,\n private _persistance: PersistanceController,\n private _inDialog: boolean,\n ) {\n this.columns = new ColumnsController(this._persistance);\n this.actions = new ActionsController();\n this.paging = new PaginationController();\n this.dataController = new DataController();\n this.sorting = new SortingController();\n\n this._initialize(_config);\n this._headerConfig = new StyleConfig(_config.header);\n this._groupCellConfig = new StyleConfig(_config.cell);\n this._cellConfig = new StyleConfig(_config.cell);\n this._footerConfig = new StyleConfig(_config.footer);\n this._initialized$.next(true);\n this.subscribe();\n\n if (this.initialFetch) {\n this.dataController.setOperation(FsListState.Load);\n this._fetch$.next(null);\n }\n }\n\n public get loading$(): Observable<boolean> {\n return this._loading$.asObservable();\n }\n\n public filtersReady() {\n this._filtersReady$.next(null);\n }\n\n public get filtersReady$(): Observable<void> {\n return this._filtersReady$.asObservable();\n }\n\n public get fetch$(): Observable<FsListFetchSubscription | void> {\n return this._fetch$.asObservable();\n }\n\n public get fetchComplete$(): Observable<{ scrollIntoView?: boolean }> {\n return this._fetchComplete$.asObservable();\n }\n\n public get hasSavedFilters(): boolean {\n return !!this.filterConfig.savedFilters;\n }\n\n public get filtersQuery(): Record<string, any> {\n return this._filtersQuery.getValue();\n }\n\n public get filtersQuery$(): Observable<Record<string, any>> {\n return this._filtersQuery.asObservable()\n .pipe(\n map((v) => v || {}),\n );\n }\n\n public get activeFiltersCount$(): Observable<number> {\n return this.filtersQuery$\n .pipe(\n map((v) => {\n return Object.keys(v)\n .filter((key) => key !== 'order');\n }),\n map((v) => v.length),\n shareReplay(),\n );\n }\n\n public get destroy$(): Observable<any> {\n return this._destroy$;\n }\n\n public get initialized$(): Observable<boolean> {\n return this._initialized$;\n }\n\n public fetchRemote(query): Observable<any> {\n const options: FsListFetchOptions = {\n state: this.dataController.operation,\n };\n\n const result: any = this.fetchFn(query, options);\n\n return result instanceof Promise ? from(result) : result;\n }\n\n // public loadLocal() {\n // this.paging.updatePagingManual(this._rows);\n // const from = (this.paging.page - 1) * this.paging.limit;\n // const to = (this.paging.page === 1) ? this.paging.limit : this.paging.limit * this.paging.page;\n // const sliceOfRows = this._rows.slice(from, to);\n // this.data$.next(sliceOfRows);\n // }\n\n /**\n * Transform templates for using\n *\n * @param templates\n */\n public tranformTemplatesToColumns(templates) {\n const defaultConfigs = {\n header: this._headerConfig,\n groupCell: this._groupCellConfig,\n cell: this._cellConfig,\n footer: this._footerConfig,\n };\n\n this.columns.setDefaults(defaultConfigs);\n this.columns.initializeColumns(templates);\n\n // Set sortBy default column\n this._updateSortingColumns();\n\n // Default sort by\n const externalSorting = this.externalParams.externalSorting;\n const initialSortConfig = externalSorting || this._config.sort;\n this.sorting.initialSortBy(initialSortConfig);\n\n if (externalSorting && !this.sorting.isDefined) {\n this.externalParams.clearSortingParams();\n\n console.warn('Not able to restore persisted sorting params.', externalSorting);\n }\n\n this._initFilters();\n }\n\n public reload(): Observable<any> {\n this._loading$.next(true);\n this.dataController.setOperation(FsListState.Reload);\n this._fetch$.next(null);\n\n return this._fetchComplete$\n .asObservable()\n .pipe(\n take(1),\n delay(0),\n );\n }\n\n /**\n * Watch page changes\n */\n public subscribe() {\n this.paging.pageChanged$\n .pipe(\n tap((event: PageChange) => {\n this.dataController.setOperation(FsListState.PageChange);\n\n // Remove all rows if limits was changed\n if (event.type === PageChangeType.LimitChanged && this.paging.hasPageStrategy) {\n this.dataController.clearRows();\n }\n\n if (this.paging.hasOffsetStrategy) {\n this.paging.updatePagination();\n\n if (this.selection) {\n this.selection.updateVisibleRecordsCount(this.paging.getPageRecords());\n this.selection.updateTotalRecordsCount(this.paging.records);\n this.selection.pageChanged();\n }\n }\n }),\n switchMap((event: any) => {\n this._fetch$.next(null);\n if (!this.paging.loadMoreEnabled) {\n const contains = [].slice.call(document.querySelectorAll('.cdk-overlay-container'))\n .some((overlay) => {\n return this._el.nativeElement.contains(overlay);\n });\n\n let el = this._el.nativeElement;\n\n if (!contains) {\n const rect = this._el.nativeElement.getBoundingClientRect();\n if ((Number(rect.top || 0) + window.pageYOffset) < window.innerHeight) {\n el = document.body;\n }\n }\n\n return this._fetchComplete$\n .asObservable()\n .pipe(\n take(1),\n tap(() => {\n if(event?.scrollIntoView ?? true) {\n el.scrollIntoView({ behavior: 'smooth' });\n }\n }),\n );\n }\n\n return of(null);\n }),\n takeUntil(this._destroy$),\n )\n .subscribe();\n\n this.sorting.sortingChanged$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.dataController.setOperation(FsListState.Sort);\n this.paging.page = 1;\n this._fetch$.next(null);\n });\n\n this._listenVisibleColumnChanges();\n this._listenRowsRemove();\n this._listenFetch();\n }\n\n public getData(trackBy?: FsListTrackByFn) {\n let rowsData = this.dataController\n .visibleRowsData;\n\n if (trackBy) {\n rowsData = rowsData\n .filter(trackBy);\n }\n\n return rowsData\n .map((data) => {\n return cloneDeep(data);\n });\n }\n\n public hasData(trackBy: FsListTrackByFn) {\n return this.dataController.visibleRowsData.some(trackBy);\n }\n\n /**\n * Toggle group mode status\n *\n * @param value\n */\n public groupEnabled(value: boolean) {\n if (this.dataController.groupEnabled !== value) {\n this.dataController.groupEnabled = value;\n\n // Commented out because Ray wants to change group status in fetch map pipe\n // and it triggers extra requests\n // this.reload();\n }\n }\n\n public destroy() {\n if (this.paging) {\n this.paging.destroy();\n }\n\n if (this.sorting) {\n this.sorting.destroy();\n }\n\n if (this.selection) {\n this.selection.destroy();\n }\n\n if (this.filterConfig) {\n this.filterConfig = null;\n }\n\n if (this.externalParams) {\n this.externalParams.destroy();\n }\n\n this.columns.destroy();\n\n this._destroy$.next(null);\n this._destroy$.complete();\n\n this.dataController.destroy();\n }\n\n /**\n * Do initialization of table\n *\n * @param config\n */\n private _initialize(config: FsListConfig) {\n this._initVariables(config);\n this._initDefaultOptions(config);\n this._initRestore();\n this._initActions(config);\n this._initPaging(config.paging, config.loadMore);\n this._initSelection(config.selection, this._selectionDialog);\n this._initGroups(config.group);\n this._initExternalParamsController();\n this._initializeData();\n }\n\n // eslint-disable-next-line max-statements\n private _initVariables(config: FsListConfig) {\n this.autoFocus = config.autoFocus;\n this.rowHoverHighlight = config.rowHoverHighlight ?? true;\n this.heading = config.heading;\n this.trackBy = config.trackBy;\n this.subheading = config.subheading;\n this.rowActionsRaw = config.rowActions;\n this.rowClass = config.rowClass;\n this.rowEvents = config.rowEvents;\n this.restore = config.restore;\n this.persist = config.persist;\n this.filters = config.filters ?? [];\n this.filterBaseConfig = config.filterConfig ?? null;\n this.filterInitCb = config.filterInit;\n this.filterChangeCb = config.filterChange;\n this.savedFilters = config.savedFilters;\n this.noResults = config.noResults;\n this.emptyState = config.emptyState;\n this.fetchFn = config.fetch;\n this.afterFetchFn = config.afterFetch;\n this.beforeFetchFn = config.beforeFetch;\n this.afterInit = config.afterInit;\n this.style = config.style;\n this.autoReload = config.autoReload;\n this.columns.initConfig(config.column);\n }\n\n /**\n * Just init options by default it it wasn't specified\n *\n * @param config\n */\n private _initDefaultOptions(config) {\n // We should prevent initial fetch in cases when it will be fetched in any case\n // As ex. scrollable or filter will do fetch in any cases\n if (config.initialFetch === false || config.scrollable) { // TODO fixme after tsmodel version update\n this.initialFetch = false;\n }\n if (config.status === false) {\n this.status = false;\n }\n if (config.chips) {\n this.chips = config.chips;\n }\n\n if (this._inDialog) {\n this.queryParam = false;\n } else {\n this.queryParam = (config.queryParam === undefined)\n ? true\n : config.queryParam;\n }\n\n if (config.sorts) {\n this.sorting.initFakeColumns(config.sorts);\n }\n if (!config.trackBy) {\n this.trackBy = 'id';\n }\n\n if (config.afterContentInit) {\n this.afterContentInit = () => {\n config.afterContentInit(this.paging.query, this.dataController.visibleRows);\n };\n }\n }\n\n /**\n * Init restore row action and append Show Deleted option into filters\n */\n private _initRestore() {\n if (this.restore) {\n const restoreAction = {\n label: this.restore.menuLabel || 'Restore',\n menu: true,\n click: (row) => {\n this._restoreClick(this.restore.click, row);\n }, // TODO fix me, move to special file\n restore: true,\n };\n\n if (!this.rowActionsRaw) {\n this.rowActionsRaw = [];\n }\n\n this.rowActionsRaw.push(restoreAction);\n this.filters = this.filters || [];\n\n if (this.restore.filter !== false) {\n this.filters.push({\n name: showDeletedFilterKey,\n type: ItemType.Checkbox,\n label: this.restore.filterLabel || 'Show Deleted',\n default: null,\n });\n }\n }\n\n }\n\n /**\n * Init paging\n *\n * @param pagingConfig\n * @param loadMore\n */\n private _initPaging(pagingConfig: FsPaging | false, loadMore: FsListLoadMoreConfig | boolean) {\n this.paging.initWithConfig(pagingConfig, loadMore);\n }\n\n /**\n * Split actions by categories\n */\n private _initActions(config) {\n if (config.actions) {\n this.actions.setActions(config.actions);\n }\n\n this.rowActionsHover = config.rowActionsHover ?? false;\n\n this.hasRowActions =\n (this.rowActionsRaw && this.rowActionsRaw.length > 0)\n || (this.groupActionsRaw && this.groupActionsRaw.length > 0);\n }\n\n private _initSelection(\n selectionConfig: FsListSelectionConfig,\n selectionDialog: SelectionDialog,\n ) {\n if (selectionConfig) {\n this.selection = new SelectionController(selectionConfig, this.trackBy, selectionDialog);\n this.selection.setRowsCallback(() => this.dataController.visibleRows);\n }\n }\n\n private _initializeData() {\n this.dataController.setAdditionalConfigs({\n loadMoreEnabled: this.paging.loadMoreEnabled,\n });\n }\n\n private _initGroups(groupConfig: FsListGroupConfig) {\n if (groupConfig) {\n this.dataController.setGroupConfig(groupConfig);\n this.groupActionsRaw = groupConfig.actions;\n }\n }\n\n private _initExternalParamsController() {\n this.externalParams = new ExternalParamsController(\n this._route,\n this._persistance,\n this.paging,\n this.sorting,\n this.queryParam,\n );\n }\n\n /**\n * Subscribe to fetch$ event with debounce\n */\n private _listenFetch() {\n let fetch$ = this.fetch$;\n\n // Should wait until saved filters not loaded\n if (this.filters) {\n fetch$ = combineLatest([fetch$, this._filtersReady$])\n .pipe(\n map(([params]) => params),\n );\n }\n\n fetch$\n .pipe(\n debounceTime(50),\n tap(() => {\n this._loading$.next(true);\n }),\n tap(() => {\n this.selection?.closeSelectionDialog();\n }),\n map((params: FsListFetchSubscription) => {\n let query = { ...this.filtersQuery };\n\n if (this.paging.hasOffsetStrategy && params?.loadOffset) {\n query = Object.assign(query, this.paging.loadDeletedOffsetQuery);\n } else {\n const allRecordsRangeNeeded = (this.initialFetch\n || this.dataController.operation === FsListState.Reload\n ) && this.paging.loadMoreEnabled;\n\n query = allRecordsRangeNeeded ?\n Object.assign(query, this.paging.loadMoreQuery) :\n Object.assign(query, this.paging.query);\n }\n\n if (this.sorting.sortingColumn) {\n Object.assign(\n query,\n {\n order: `${this.sorting.sortingColumn.name},${this.sorting.sortingColumn.direction}`,\n },\n );\n }\n\n if (this.columns.configured) {\n query = {\n ...query,\n columns: this.columns.visibleColumnsNames,\n };\n }\n\n return { params, query };\n }),\n switchMap(({ params, query }) => {\n if (!this.columns.columnsFetched) {\n return this.columns.loadRemoteColumnConfigs()\n .pipe(\n mapTo({ params, query }),\n );\n }\n\n return of({ params, query });\n }),\n switchMap(({ params, query }) => {\n if (this.beforeFetchFn) {\n return this.beforeFetchFn(query)\n .pipe(\n map((beforeFetchQuery) => ({ params, query: beforeFetchQuery })),\n catchError((error) => {\n console.error(error);\n\n return EMPTY;\n }),\n );\n }\n\n return of({ params, query });\n }),\n switchMap(({ params, query }) => {\n const remoteFetch = this.fetchRemote(query)\n .pipe(\n catchError((error) => {\n console.error(error);\n this._loading$.next(false);\n\n return EMPTY;\n }),\n );\n\n return combineLatest<any>([of({ params, query }), remoteFetch]);\n }),\n catchError((error) => {\n console.error(error);\n this._loading$.next(false);\n\n return EMPTY;\n }),\n takeUntil(this._destroy$),\n )\n .subscribe(([paramsQuery, response]) => {\n this.initialFetch = false;\n this._completeFetch(paramsQuery.params, paramsQuery.query, response);\n });\n }\n\n private _listenRowsRemove() {\n this.dataController.rowsRemoved$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe((rows: any[]) => {\n if (this.paging.enabled) {\n\n const removedCount = rows.length;\n\n if (this.paging.hasPageStrategy) {\n this._noDataPaginationUpdate(removedCount);\n } else {\n // Fetch more if has something for fetch\n if (this.dataController.hasData || this.paging.hasNextPage) {\n this.dataController.setOperation(FsListState.LoadMore);\n\n this.paging.removeRows(removedCount);\n this._fetch$.next({ loadOffset: true });\n } else {\n this._noDataPaginationUpdate(removedCount);\n }\n }\n }\n\n // Remove from selection\n if (this.selection) {\n rows.forEach((row) => {\n this.selection.removeRow(row.data);\n });\n }\n });\n }\n\n /**\n * Lister may have originally hidden columns, but visibility of those columns\n * can be changed programmaticaly in any time\n */\n private _listenVisibleColumnChanges(): void {\n this.columns.visibleColumns$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._updateSortingColumns();\n });\n }\n\n /**\n * Update and watch filter changes\n */\n private _initFilters() {\n if (this.filterConfig) {\n return;\n }\n\n const sortConfig = this.sorting.sortingColumn\n ? { value: this.sorting.sortingColumn.name, direction: this.sorting.sortingColumn.direction }\n : null;\n\n // Config\n // Baseline filter config is spread first so the list's own dedicated options\n // (below) take precedence where they overlap, while any extra filter options\n // (e.g. minSecondaryItems) flow through unchanged.\n this.filterConfig = {\n ...this.filterBaseConfig,\n items: this.filters || [],\n savedFilters: this.savedFilters,\n actions: this.actions.actions,\n queryParam: this.queryParam,\n autofocus: this.autoFocus,\n sort: sortConfig,\n chips: this.chips,\n autoReload: this.autoReload,\n init: this._filterInit.bind(this),\n change: this._filterChange.bind(this),\n reload: (this._config.reload ?? true)\n ? this._filterReload.bind(this)\n : undefined,\n sortChange: this._filterSort.bind(this),\n heading: this.heading,\n subheading: this.subheading,\n };\n\n if(this._persistance.queryEnabled) {\n this.filterConfig.persist = {\n name: this._persistance.name,\n };\n }\n }\n\n /**\n * Callback when Filter has been initialized\n *\n * @param filters\n */\n private _filterInit(query) {\n if (this.filterInitCb) {\n this.filterInitCb(query);\n }\n\n query = this._processRestoreQuery(query);\n\n this._filtersQuery.next(query);\n\n this.filtersReady();\n }\n\n /**\n * Callback when Filter has been changed\n *\n * @param query\n * @param sort\n */\n private _filterChange(query, sort) {\n if (this.filterChangeCb) {\n this.filterChangeCb(query, sort);\n }\n\n query = this._processRestoreQuery(query);\n\n this._filtersQuery.next(query);\n\n if (this.restore && this.restore.reload) {\n this.reload();\n }\n\n this.dataController.setOperation(FsListState.Filter);\n\n // Reset paging for request with correct offset\n this.paging.resetPaging();\n this._fetch$.next(null);\n }\n\n /**\n * Callback when the filter reload button is clicked.\n *\n * Unlike a filter change, a reload must preserve the current page/offset,\n * so we route to reload() which keeps paging intact instead of resetting it.\n *\n * @param query\n * @param sort\n */\n private _filterReload(query, sort) {\n if (this.filterChangeCb) {\n this.filterChangeCb(query, sort);\n }\n\n query = this._processRestoreQuery(query);\n\n this._filtersQuery.next(query);\n\n this.reload();\n }\n\n private _processRestoreQuery(query) {\n this.restoreMode = false;\n // Restore option\n if (this.restore && query[showDeletedFilterKey]) {\n query = Object.keys(query)\n .filter((key) => key !== showDeletedFilterKey)\n .reduce((acc, key) => {\n return {\n ...acc,\n [key]: query[key],\n };\n }, {});\n\n query = {\n ...query,\n ...this.restore.query,\n };\n\n this.restoreMode = true;\n }\n\n return query;\n }\n\n // Callback when Filter sort has been changed\n private _filterSort(filterQuery, filterSort) {\n if (filterSort) {\n this.sorting.sortByColumnWithName(filterSort.value);\n\n const sortDirection = filterSort.direction === 'asc' ? SortingDirection.asc : SortingDirection.desc;\n this.sorting.sortDirection(sortDirection);\n } else {\n // FIXME need to be refactored...\n this.sorting.sortingColumn = undefined;\n this.reload();\n }\n }\n\n private _completeFetch(params, query, response) {\n if (!this.paging.page) {\n this.paging.page = 1;\n }\n\n if (response.paging) {\n const pageRecords = (Array.isArray(response.data) && response.data.length) || 0;\n this.paging.updatePaging(\n response.paging,\n pageRecords,\n this.dataController.operation === FsListState.LoadMore,\n );\n } else if (this.paging.enabled) {\n console.log(\n '%c FsList Warning ',\n 'color: white; background-color: #ffcc0b',\n 'Pagination does not configured properly. ' +\n 'Pagination is enabled, but http response does not contain \"paging\" field. ' +\n 'You have to set \"paging: false\" in config or add \"paging\" field to response.',\n );\n }\n\n /// must be before selection, because seletion use records\n this.dataController.setRowsFromResponse(response.data);\n ///\n\n this._completeFetchUpdateSelecton(response);\n\n if (this.emptyState?.validate && this.emptyStateTemplate) {\n this.emptyStateEnabled = this.emptyState.validate(query, cloneDeep(this.dataController.visibleRowsData));\n }\n\n if (this.afterFetchFn) {\n this.afterFetchFn(query, this.dataController.visibleRowsData);\n }\n\n // case when have removed all results from last page\n if (this.dataController.visibleRows.length === 0\n && this.paging.page > 1\n && this.paging.page > this.paging.pages\n ) {\n this.paging.goLast();\n }\n\n this._fetchComplete$.next({ scrollIntoView: params?.scrollIntoView });\n this._loading$.next(false);\n }\n\n private _completeFetchUpdateSelecton(response) {\n // Update selection params\n if (this.selection) {\n if (this.paging.enabled) {\n this.selection.pageChanged();\n this.selection.updateVisibleRecordsCount(this.paging.getPageRecords());\n this.selection.updateTotalRecordsCount(this.paging.records);\n } else {\n const count = response.paging && response.paging.records\n || Array.isArray(response.data) && response.data.length;\n\n this.selection.updateVisibleRecordsCount(count);\n this.selection.updateTotalRecordsCount(count);\n }\n\n this.selection.selectedRowsIntersection(this.dataController.visibleRowsData);\n }\n }\n\n /**\n * Will do some actions if you removed item and item was last on his own page\n *\n * Ex: if list has 3 pages and on third page you have only one item. And you just deleted this item.\n * You must go to second page, but if it was last page and you can't go back -> just reload\n *\n * @param deletedCount\n */\n private _noDataPaginationUpdate(deletedCount) {\n if (!this.dataController.hasData) {\n if (this.paging.page > 1) {\n this.paging.goToPage(this.paging.page - 1 || 1);\n } else {\n this.reload();\n }\n }\n\n this.paging.records -= deletedCount;\n this.paging.updatePagination();\n\n if (this.dataController.hasData && this.selection) {\n this.selection.updateVisibleRecordsCount(this.dataController.visibleRowsCount);\n this.selection.updateTotalRecordsCount(this.paging.records);\n }\n }\n\n /**\n * Temporary solution, will do auto subscribe if was returned Observable.\n *\n * TODO: MOVE THIS PEACE OF CODE TO SPECIAL PLACE\n *\n * @param restoreClickCallback\n * @param row\n */\n private _restoreClick(restoreClickCallback, row) {\n const restoreClickResult = restoreClickCallback(row);\n\n if (restoreClickResult instanceof Observable) {\n restoreClickResult\n .pipe(\n take(1),\n takeUntil(this._destroy$),\n )\n .subscribe({\n next: () => this.reload(),\n });\n }\n }\n\n private _updateSortingColumns(): void {\n this.sorting.clearSortableColumns();\n this.columns.columns\n .filter((column) => column.sortable && column.visible)\n .forEach((column) => {\n this.sorting.addSortableColumn(column);\n });\n }\n}\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[fs-list-heading],[fsListHeading]',\r\n standalone: true,\r\n})\r\nexport class FsListHeadingDirective {\r\n}\r\n","import { Directive, Input } from '@angular/core';\n\nimport type { FsListConfig } from '../../interfaces/listconfig.interface';\n\n\n@Directive({\n selector: '[fs-list-cell],[fsListCell]',\n standalone: true,\n})\nexport class FsListCellDirective<T = any> {\n\n @Input() public colspan;\n @Input() public align: string;\n @Input('class') public className: string | string[];\n /**\n * Typing anchor (e.g. `readonly anchor = {} as MyRow` then `[rowType]=\"anchor\"`).\n * The value is only used for template type inference; it can be an empty object cast.\n */\n @Input('fsListCell') public rowType?: T;\n\n\n /**\n * Same as `rowType`, for `*fsListCell=\"anchor\"` microsyntax (`*fsListCell` expands to `[fsListCell]=\"...\"`).\n * Pass a **component property** typed as `T` — not a type name (interfaces are not runtime values).\n */\n // @Input('fsListCell')\n // public set fsListCellAnchor(value: T | undefined) {\n // this.rowType = value;\n // }\n\n /**\n * Filled by `fs-list` from merged `[config]` when you omit `[rowType]` / `[fsListCell]` and `cellRowType` is unset.\n * Optional: bind `[configTyping]=\"config\"` for strictTemplates / IDE narrowing.\n */\n @Input() public configTyping?: FsListConfig<T>;\n\n public static ngTemplateContextGuard<T>(\n directive: FsListCellDirective<T>,\n context: unknown,\n ): context is {\n $implicit: T,\n row: T,\n index: number,\n group: any,\n groupRow: any,\n groupIndex: number,\n groupChildren: T[],\n expanded: boolean,\n } {\n return true;\n }\n}\n","import { Directive, Input } from '@angular/core';\r\n\r\n@Directive({\n selector: '[fs-list-footer]',\n standalone: true\n})\r\nexport class FsListFooterDirective {\r\n @Input() public colspan;\r\n @Input() public align: string;\r\n @Input('class') public className: string | string[];\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n\n@Injectable()\nexport class GroupExpandNotifierService implements OnDestroy {\n\n private _expandStatusChanged$ = new Subject();\n private _destroy$ = new Subject();\n\n get expandStatusChange$() {\n return this._expandStatusChanged$.pipe(\n takeUntil(this._destroy$)\n )\n }\n public toggleExpandStatus(rowData: any) {\n this._expandStatusChanged$.next(rowData);\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n}\n","import { Directive, HostListener, Input, inject } from '@angular/core';\r\nimport { GroupExpandNotifierService } from '../../services/group-expand-notifier.service';\r\n\r\n\r\n@Directive({\n selector: '[fsListGroupExpandTrigger]',\n standalone: true\n})\r\nexport class FsListGroupExpandTriggerDirective {\n private _expandNotifier = inject(GroupExpandNotifierService);\n\r\n\r\n @HostListener('click', ['$event'])\r\n public click(event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this._expandNotifier.toggleExpandStatus(this.row);\r\n }\r\n\r\n @Input()\r\n public row;\r\n}\r\n","import { Directive } from '@angular/core';\n\nimport { FsListCellDirective } from '../cell/cell.directive';\n\n\n@Directive({\n selector: '[fs-list-group-footer]',\n standalone: true\n})\nexport class FsListGroupFooterDirective extends FsListCellDirective {}\n","import { Directive } from '@angular/core';\n\nimport { FsListCellDirective } from '../cell/cell.directive';\n\n\n@Directive({\n selector: '[fs-list-group-cell],[fs-list-group-header]',\n standalone: true,\n})\nexport class FsListGroupHeaderDirective extends FsListCellDirective {}\n","import { Directive, Input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[fs-list-header]',\r\n standalone: true,\r\n})\r\nexport class FsListHeaderDirective {\r\n @Input() public colspan;\r\n @Input() public align: string;\r\n @Input('class') public className: string | string[];\r\n}\r\n","import {\n ContentChild,\n ContentChildren,\n Directive,\n Input,\n QueryList,\n TemplateRef,\n} from '@angular/core';\n\n// Directives\nimport { CellConfig } from '../../interfaces';\nimport { ColumnAttributes } from '../../models/column-attributes';\nimport { FsListCellDirective } from '../cell/cell.directive';\nimport { FsListFooterDirective } from '../footer/footer.directive';\nimport { FsListGroupExpandTriggerDirective } from '../group-expand-trigger/group-expand-trigger.directive';\nimport { FsListGroupFooterDirective } from '../group-footer/group-footer.directive';\nimport { FsListGroupHeaderDirective } from '../group-header/group-header.directive';\nimport { FsListHeaderDirective } from '../header/header.directive';\n\n\n@Directive({\n selector: 'fs-list-column',\n standalone: true,\n})\nexport class FsListColumnDirective {\n\n // Header\n @ContentChild(FsListHeaderDirective, { read: TemplateRef, static: true })\n public headerTemplate: TemplateRef<any>;\n\n @ContentChild(FsListHeaderDirective, { static: true })\n public headerConfigs: CellConfig;\n\n // Group\n @ContentChild(FsListGroupHeaderDirective, { read: TemplateRef, static: true })\n public groupHeaderTemplate: TemplateRef<any>;\n\n @ContentChild(FsListGroupHeaderDirective, { static: true })\n public groupHeaderConfigs: CellConfig;\n\n // Group Footer\n @ContentChild(FsListGroupFooterDirective, { read: TemplateRef, static: true })\n public groupFooterTemplate: TemplateRef<any>;\n\n @ContentChild(FsListGroupFooterDirective, { static: true })\n public groupFooterConfigs: CellConfig;\n\n // Trigger\n @ContentChildren(FsListGroupExpandTriggerDirective, { descendants: true })\n public expandTrigger: QueryList<FsListGroupExpandTriggerDirective>;\n\n // Cell\n @ContentChild(FsListCellDirective, { read: TemplateRef, static: true })\n public cellTemplate: TemplateRef<any>;\n\n @ContentChild(FsListCellDirective, { static: true })\n public cellConfigs: CellConfig;\n\n // Footer\n @ContentChild(FsListFooterDirective, { read: TemplateRef, static: true })\n public footerTemplate: TemplateRef<any>;\n\n @ContentChild(FsListFooterDirective, { static: true })\n public footerConfigs: CellConfig;\n\n private readonly _columnAttributes = new ColumnAttributes();\n\n constructor() {}\n\n public get attributes(): ColumnAttributes {\n return this._columnAttributes;\n }\n\n @Input('show')\n public set visible(value: boolean) {\n this._columnAttributes.visible = value;\n }\n\n @Input()\n public set title(value: string) {\n this._columnAttributes.title = value;\n }\n\n @Input()\n public set name(value: string) {\n this._columnAttributes.name = value;\n }\n\n @Input()\n public set customizable(value: boolean) {\n this._columnAttributes.customizable = value;\n }\n\n @Input()\n public set sortable(value: boolean) {\n this._columnAttributes.sortable = value;\n }\n\n @Input()\n public set sortableDefault(value: boolean) {\n this._columnAttributes.sortableDefault = value;\n }\n\n @Input()\n public set sortableDirection(value: 'asc' | 'desc') {\n this.sortable = true;\n this._columnAttributes.direction = value;\n }\n\n /**\n * @deprecated\n */\n @Input()\n public set direction(value: 'asc' | 'desc') {\n this._columnAttributes.direction = value;\n }\n\n @Input()\n public set align(value: string) {\n this._columnAttributes.align = value;\n }\n\n @Input()\n public set width(value: string) {\n this._columnAttributes.width = value;\n }\n\n @Input('class')\n public set className(value: string | string[]) {\n this._columnAttributes.className = value;\n }\n\n}\n","import { AfterViewInit, Directive, Input } from '@angular/core';\n\n\n@Directive({\n selector: '[fsListContentInit]',\n standalone: true\n})\nexport class FsListContentInitDirective implements AfterViewInit {\n\n @Input('fsListContentInit')\n public contentInitCallback: Function;\n\n constructor() {}\n\n public ngAfterViewInit() {\n if (this.contentInitCallback) {\n this.contentInitCallback();\n }\n }\n}\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\n selector: '[fs-list-empty-state]',\n standalone: true,\n})\r\nexport class FsListEmptyStateDirective {}\r\n","import { InjectionToken } from '@angular/core';\n\n\nexport const FS_LIST_CONFIG = new InjectionToken<any[]>('fs-list.config');\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n SimpleChanges,\r\n} from '@angular/core';\r\n\r\nimport { random } from 'lodash-es';\n\r\n\r\n\r\n@Component({\n selector: 'fs-list-loader',\n templateUrl: './loader.component.html',\n styleUrls: ['./loader.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [],\n})\r\nexport class FsListLoaderComponent implements OnInit, OnChanges {\r\n\r\n public placeholderWidths = [[], [], []];\r\n public widths = [];\r\n\r\n @Input() public columns;\r\n\r\n @Input()\r\n public loaderLines: number;\r\n\r\n public cols = [];\r\n public rows = [];\r\n\r\n public ngOnInit() {\r\n\r\n this.cols = this.columns > 5 ? this.columns.splice(0, 5) : this.columns;\r\n const length = this.cols.length;\r\n for (let w = length; w >= 0; w--) {\r\n this.widths[w] = w ? random(15, 100 / length, false) : 0;\r\n }\r\n\r\n for (let r = 0; r < 3; r++) {\r\n for (let c = 0; c < length; c++) {\r\n this.placeholderWidths[r].push(random(50, 90));\r\n }\r\n }\r\n }\r\n\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.loaderLines) {\r\n this.rows = new Array(this.loaderLines);\r\n }\r\n }\r\n}\r\n","<table>\n <thead>\n <tr>\n @for (col of cols; track column; let column = $index) {\n <th [width]=\"widths[column] + '%'\">\n <div class=\"fs-skeleton-placeholder\" [style.width]=\"(placeholderWidths[0][column]/2) + '%'\"></div>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of rows; track index; let index = $index) {\n <tr>\n @for (col of cols; track column; let column = $index) {\n <td>\n <div class=\"fs-skeleton-placeholder\" [style.width]=\"placeholderWidths[index][column] + '%'\"></div>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n","import {\n ChangeDetectionStrategy,\n Component,\n Input,\n} from '@angular/core';\n\n\nimport { PaginationController } from '../../classes/pagination-controller';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { MatButton } from '@angular/material/button';\nimport { MatRipple } from '@angular/material/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { FsCommonModule } from '@firestitch/common';\n\n@Component({\n selector: 'fs-list-pagination',\n templateUrl: './pagination.component.html',\n styleUrls: ['./pagination.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgTemplateOutlet,\n MatButton,\n MatRipple,\n MatIcon,\n FsCommonModule\n],\n})\nexport class FsPaginationComponent {\n\n @Input() public pagination: PaginationController;\n @Input() public rows;\n\n public first() {\n this.pagination.goFirst();\n }\n\n public prev() {\n this.pagination.goPrev();\n }\n\n public next() {\n this.pagination.goNext();\n }\n\n public last() {\n this.pagination.goLast();\n }\n}\n","<div class=\"pagination-container\">\n @if (pagination.hasManyStrategy) {\n <ng-container *ngTemplateOutlet=\"strategyMany\"></ng-container>\n } @else if (pagination.loadMoreEnabled) {\n <ng-container *ngTemplateOutlet=\"strategyLoadMore\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"strategyOffsetPage\"></ng-container>\n }\n</div>\n<ng-template #strategyLoadMore>\n @if (pagination.hasNextPage) {\n <div class=\"fs-list-load-more\">\n <button\n mat-button\n type=\"button\"\n [class]=\"pagination.loadMoreButtonClass\"\n [color]=\"pagination.loadMoreButtonColor\"\n (click)=\"next()\">\n {{ pagination.loadMoreLabel }}\n </button>\n </div>\n }\n</ng-template>\n<ng-template #strategyOffsetPage>\n @if (pagination.records > pagination.limit) {\n @if (pagination?.pages) {\n }\n <ng-container\n [ngTemplateOutlet]=\"firstPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: !pagination.hasPrevPage }\">\n </ng-container>\n <ng-container\n [ngTemplateOutlet]=\"prevPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: !pagination.hasPrevPage }\">\n </ng-container>\n <div class=\"number\">\n {{ pagination.page | fsFormatNumber }} of {{ pagination.pages | fsFormatNumber }}\n </div>\n <ng-container\n [ngTemplateOutlet]=\"nextPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: !pagination.hasNextPage }\">\n </ng-container>\n <ng-container\n [ngTemplateOutlet]=\"lastPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: !pagination.hasNextPage }\">\n </ng-container>\n }\n</ng-template>\n<ng-template #strategyMany>\n @if (!(pagination.pageRecords ===0 && pagination.page === 1)) {\n <ng-container\n [ngTemplateOutlet]=\"firstPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: !pagination.hasPrevPage }\">\n </ng-container>\n <ng-container\n [ngTemplateOutlet]=\"prevPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: !pagination.hasPrevPage }\">\n </ng-container>\n <div class=\"number\">\n {{ pagination.page }}\n </div>\n <ng-container\n [ngTemplateOutlet]=\"nextPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: !pagination.hasNextPage }\">\n </ng-container>\n <ng-container\n [ngTemplateOutlet]=\"lastPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: true }\">\n </ng-container>\n }\n</ng-template>\n<ng-template\n #firstPageButton\n let-disabled=\"disabled\">\n <a\n matRipple\n [matRippleRadius]=\"15\"\n [matRippleCentered]=\"true\"\n class=\"first\"\n [class.disabled]=\"disabled\"\n (click)=\"first()\">\n <mat-icon>\n first_page\n </mat-icon>\n </a>\n</ng-template>\n<ng-template\n #prevPageButton\n let-disabled=\"disabled\">\n <a\n matRipple\n [matRippleRadius]=\"15\"\n [matRippleCentered]=\"true\"\n class=\"previous\"\n [class.disabled]=\"disabled\"\n (click)=\"prev()\">\n <mat-icon>\n keyboard_arrow_left\n </mat-icon>\n </a>\n</ng-template>\n<ng-template\n #nextPageButton\n let-disabled=\"disabled\">\n <a\n matRipple\n [matRippleRadius]=\"15\"\n [matRippleCentered]=\"true\"\n class=\"next\"\n [class.disabled]=\"disabled\"\n (click)=\"next()\">\n <mat-icon>\n keyboard_arrow_right\n </mat-icon>\n </a>\n</ng-template>\n<ng-template\n #lastPageButton\n let-disabled=\"disabled\">\n <a\n matRipple\n [matRippleRadius]=\"15\"\n [matRippleCentered]=\"true\"\n class=\"last\"\n [class.disabled]=\"disabled\"\n (click)=\"last()\">\n <mat-icon>\n last_page\n </mat-icon>\n </a>\n</ng-template>","import { DecimalPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n inject,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nimport { FsMenuModule } from '@firestitch/menu';\n\nimport { of, Subject } from 'rxjs';\nimport { catchError, takeUntil, tap } from 'rxjs/operators';\n\nimport { List } from '../../classes/list-controller';\nimport { PaginationController } from '../../classes/pagination-controller';\nimport { SortingController } from '../../classes/sorting-controller';\nimport { PaginationStrategy } from '../../enums';\nimport { Row } from '../../models';\nimport { SortingDirection } from '../../models/column.model';\n\n\n@Component({\n selector: 'fs-list-status',\n templateUrl: './status.component.html',\n styleUrls: ['./status.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: true,\n standalone: true,\n imports: [\n NgTemplateOutlet,\n MatTooltip,\n MatProgressSpinner,\n FsMenuModule,\n DecimalPipe\n],\n})\nexport class FsStatusComponent implements OnInit, OnDestroy {\n\n @Input() public list: List;\n @Input() public rows: Row[];\n\n @Input()\n @HostBinding('class.first-load')\n @HostBinding('class.fs-skeleton-placeholder')\n public firstLoad: boolean;\n \n public PaginationStrategy = PaginationStrategy;\n public paging: PaginationController;\n public sorting: SortingController;\n public many: {\n status: 'many' | 'loading' | 'loaded';\n count: number;\n } = { \n status: 'many',\n count: 0,\n };\n\n private _destroy$ = new Subject<void>();\n private _cdRef = inject(ChangeDetectorRef);\n\n public ngOnInit() {\n this.paging = this.list.paging;\n this.sorting = this.list.sorting;\n this.sorting.sortingChanged$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._cdRef.markForCheck();\n });\n\n this.list.filtersQuery$\n .pipe(\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this.many.status = 'many';\n this._cdRef.markForCheck();\n });\n }\n\n public manyClick() {\n this.many.status = 'loading';\n this.list.fetchRemote({\n ...this.list.filtersQuery,\n offset: 0,\n limit: 0,\n recordCount: true,\n })\n .pipe(\n tap((response) => {\n this.many.count = response.paging?.records || 0;\n this.many.status = 'loaded';\n }),\n catchError(() => {\n this.many.status = 'many';\n this.many.count = null;\n\n return of(null);\n }),\n takeUntil(this._destroy$),\n )\n .subscribe(() => {\n this._cdRef.markForCheck();\n });\n }\n\n public ngOnDestroy(): void {\n this._destroy$.next(null);\n this._destroy$.complete();\n }\n\n public toggleDirection() {\n if (this.sorting.sortingColumn.direction === 'asc') {\n this.sorting.sortDirection(SortingDirection.desc);\n } else {\n this.sorting.sortDirection(SortingDirection.asc);\n }\n }\n\n public setSortableColumn(column) {\n if (this.sorting.sortingColumn !== column) {\n this.sorting.sortBy(column);\n }\n }\n\n public setLimit(limit) {\n this.paging.setLimit(limit);\n }\n}\n","<div class=\"status\">\n <small>\n @if (paging.enabled) {\n Showing\n @if (paging.hasManyStrategy) {\n <ng-container [ngTemplateOutlet]=\"limitMenu\"></ng-container>\n of\n @if (many.status === 'many') {\n <a\n (click)=\"manyClick()\"\n [matTooltip]=\"'Calculate number of results'\">\n many\n </a>\n } @else {\n @if (many.status === 'loading') {\n <mat-spinner\n [diameter]=\"15\"\n [strokeWidth]=\"2\">\n </mat-spinner>\n } @else {\n <a\n (click)=\"manyClick()\"\n [matTooltip]=\"'Recalculate number of results'\">\n {{ many.count | number:'1.0':'en-US' }}\n </a>\n }\n }\n } @else {\n @if (paging.records) {\n <ng-container [ngTemplateOutlet]=\"limitMenu\"></ng-container>\n of\n {{ paging.records | number:'1.0':'en-US' }}\n } @else {\n 0\n }\n }\n results\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container>\n }\n @if ((!paging.enabled) && paging.pageRecords > 0) {\n Showing\n @if (paging.pageRecords === 1) {\n <span>\n {{ paging.pageRecords }} result\n </span>\n }\n @if (paging.pageRecords > 1) {\n <span>\n {{ paging.pageRecords | number:'1.0':'en-US' }} results\n </span>\n }\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container>\n }\n <fs-menu\n [hidden]=\"!sorting.sortingColumn || paging.pageRecords === 0\"\n #orderColumnsMenu>\n <!-- Real sorting columns -->\n @for (column of sorting.sortingColumns; track column) {\n <ng-template\n fs-menu-item\n (click)=\"setSortableColumn(column)\">\n @if (column.title) {\n {{ column.title }}\n } @else {\n <ng-template [ngTemplateOutlet]=\"column.headerTemplate\"></ng-template>\n }\n </ng-template>\n }\n <!-- Fake sorting columns -->\n @for (column of sorting.fakeSortingColumns; track column) {\n <ng-template\n fs-menu-item\n (click)=\"setSortableColumn(column)\">\n {{ column.title }}\n </ng-template>\n }\n </fs-menu>\n <ng-template #sortedBy>\n @if (sorting.sortingColumn) {\n sorted by\n @if (sorting.sortingColumn.title) {\n <a\n class=\"sort-toggle\"\n [fsMenuTriggerFor]=\"orderColumnsMenu\">\n {{ sorting.sortingColumn.title }}\n </a>\n } @else {\n <a\n class=\"sort-toggle\"\n [fsMenuTriggerFor]=\"orderColumnsMenu\">\n <ng-template [ngTemplateOutlet]=\"sorting.sortingColumn.headerTemplate\"></ng-template>\n </a>\n }\n <a (click)=\"toggleDirection()\">\n {{ sorting.sortingColumn.fullNameDirection }}\n </a>\n }\n </ng-template>\n </small>\n</div>\n<ng-template #limitMenu>\n <a [fsMenuTriggerFor]=\"limitsMenuTrigger\">\n {{ paging.statusLabel }}\n </a>\n <fs-menu #limitsMenuTrigger>\n @for (limit of paging.limits; track limit) {\n <ng-template\n fs-menu-item\n (click)=\"setLimit(limit)\">\n {{ limit }}\n </ng-template>\n }\n </fs-menu>\n</ng-template>","import { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, ElementRef, EventEmitter, HostBinding, Injector, Input, OnDestroy, OnInit, Output, QueryList, TemplateRef, ViewChild, inject } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\n\nimport { DrawerRef } from '@firestitch/drawer';\nimport { FilterComponent, FilterHeadingDirective, FilterStatusBarDirective } from '@firestitch/filter';\nimport { SelectionDialog } from '@firestitch/selection';\n\nimport { Observable, Subject } from 'rxjs';\nimport { delay, filter, skip, take, takeUntil } from 'rxjs/operators';\n\nimport { cloneDeep, mergeWith } from 'lodash-es';\n\nimport { List } from '../../classes/list-controller';\nimport { PersistanceController } from '../../classes/persistance-controller';\nimport { ReorderController } from '../../classes/reorder-controller';\nimport {\n FsListHeadingDirective,\n} from '../../directives';\nimport { FsListCellDirective } from '../../directives/cell/cell.directive';\nimport { FsListColumnDirective } from '../../directives/column/column.directive';\nimport { FsListContentInitDirective } from '../../directives/content-init/content-init.directive';\nimport { FsListDraggableListDirective } from '../../directives/draggable-list/draggable-list.directive';\nimport { FsListEmptyStateDirective } from '../../directives/empty-state/empty-state.directive';\nimport { FsListFooterDirective } from '../../directives/footer/footer.directive';\nimport { PaginationStrategy } from '../../enums/pagination-strategy.enum';\nimport { FS_LIST_CONFIG } from '../../fs-list.providers';\nimport {\n FsListAbstractRow,\n FsListAction,\n FsListConfig, FsListPersitance, FsListSelectionConfig,\n FsListTrackByFn,\n FsListTrackByTargetRowFn,\n} from '../../interfaces';\nimport { IPaginationState } from '../../interfaces/pagination-state.interface';\nimport { Column, Row } from '../../models';\nimport { GroupExpandNotifierService } from '../../services/group-expand-notifier.service';\nimport { FsBodyComponent } from '../body/body.component';\nimport { CustomizeColsDialogComponent } from '../customize-cols';\nimport { FsFooterComponent } from '../footer/footer.component';\nimport { FsHeadComponent } from '../head/head.component';\nimport { FsListLoaderComponent } from '../loader/loader.component';\nimport { FsPaginationComponent } from '../pagination/pagination.component';\nimport { FsStatusComponent } from '../status/status.component';\n\n\n@Component({\n selector: 'fs-list',\n templateUrl: './list.component.html',\n styleUrls: ['./list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n GroupExpandNotifierService,\n PersistanceController,\n ReorderController,\n ],\n standalone: true,\n imports: [\n NgClass,\n NgTemplateOutlet,\n FilterComponent,\n FilterStatusBarDirective,\n FilterHeadingDirective,\n FsStatusComponent,\n FsListContentInitDirective,\n FsHeadComponent,\n FsBodyComponent,\n FsListDraggableListDirective,\n FsFooterComponent,\n FsListFooterDirective,\n FsListLoaderComponent,\n FsPaginationComponent,\n AsyncPipe,\n ],\n})\nexport class FsListComponent<TRow = any> implements OnInit, OnDestroy, AfterContentInit {\n \n public reorderController = inject(ReorderController);\n\n @HostBinding('class.fs-list') public classFsList = true;\n\n @HostBinding('class.fs-list-row-highlight')\n public rowHoverHighlight: boolean;\n\n @Input('config')\n public set config(config: FsListConfig<TRow>) {\n this._initWithConfig(config);\n }\n\n @Input()\n public loaderLines = 3;\n\n private _cellRowTypeInput?: unknown;\n private _cellRowTypeFromConfig?: unknown;\n\n /**\n * Row typing anchor for cell templates. Overrides {@link FsListConfig.cellRowType}.\n * Copied onto each `fs-list-cell` (and group cell templates) unless `[rowType]` is set on that cell.\n */\n @Input()\n public set cellRowType(value: unknown) {\n this._cellRowTypeInput = value;\n this._propagateCellRowTypeAnchors();\n }\n\n public get cellRowType(): unknown {\n return this._cellRowTypeInput !== undefined ? this._cellRowTypeInput : this._cellRowTypeFromConfig;\n }\n\n /** Merged config after defaults; used to type cells without per-template `[configTyping]`. */\n public get mergedListConfig(): FsListConfig<TRow> | undefined {\n return this._mergedListConfig as FsListConfig<TRow> | undefined;\n }\n\n @Output()\n public filtersReady = new EventEmitter<void>();\n\n @ContentChild(FsListHeadingDirective, { read: TemplateRef })\n public headingTemplate: TemplateRef<any>;\n\n @ViewChild(FsBodyComponent)\n public body: FsBodyComponent;\n\n public list: List;\n\n // Event will fired if action remove: true will clicked\n public rowRemoved = new EventEmitter();\n public firstLoad = true;\n\n private _listColumnDirectives: QueryList<FsListColumnDirective>;\n /** Merged list config (after defaults); used to populate cell `configTyping` when cells omit it. */\n private _mergedListConfig?: FsListConfig<TRow>;\n private _filterRef: FilterComponent;\n private _filterParamsReady = false;\n private _destroy = new Subject();\n private _injector = inject(Injector);\n private _config = inject<FsListConfig>(FS_LIST_CONFIG, { optional: true });\n private _el = inject(ElementRef);\n private _selectionDialog = inject(SelectionDialog);\n private _dialog = inject(MatDialog);\n private _cdRef = inject(ChangeDetectorRef);\n private _groupExpandNotifier = inject(GroupExpandNotifierService);\n private _route = inject(ActivatedRoute);\n private _persistance = inject(PersistanceController);\n\n @ViewChild(FilterComponent)\n public set filterReference(component) {\n this._filterRef = component;\n this.list.actions.setFilterRef(component);\n this._emitFiltersReadyEvent();\n }\n\n /**\n * Set columns to config\n * Create Column Model instances\n */\n @ContentChildren(FsListColumnDirective)\n public set columnTemplates(listColumnDirectives: QueryList<FsListColumnDirective>) {\n this._listColumnDirectives = listColumnDirectives;\n if (this.list) {\n this.list.tranformTemplatesToColumns(listColumnDirectives);\n }\n this._propagateCellRowTypeAnchors();\n }\n\n @ContentChild(FsListEmptyStateDirective, { read: TemplateRef })\n private set _emptyStateTemplate(template: TemplateRef<any>) {\n if (this.list) {\n this.list.emptyStateTemplate = template;\n }\n }\n\n private _dialogRef = inject(MatDialogRef, { optional: true });\n private _drawerRef = inject(DrawerRef, { optional: true });\n\n /**\n * Return reference for filter\n */\n public get filterRef(): FilterComponent {\n return this._filterRef;\n }\n\n public set groupEnabled(value: boolean) {\n this.list.groupEnabled(value);\n }\n\n public get groupEnabled() {\n return this.list.dataController.groupEnabled;\n }\n\n public get hasStatus() {\n return this.list.status &&\n (this.list.sorting.isDefined || this.list.paging.enabled) &&\n (\n !this.reorderController.enabled ||\n (this.reorderController.enabled && this.reorderController.status)\n );\n }\n\n public get paginatorVisible(): boolean {\n return this.list.paging.enabled\n && !this.firstLoad\n && !this.list.emptyStateEnabled\n && this.list.dataController.visibleRowsCount > 0\n && this.list.paging.pages > 1;\n }\n\n public get filtersQuery(): Record<string, unknown> {\n return this.list.filtersQuery;\n }\n\n public get pagingState(): IPaginationState {\n return this.list.paging.state;\n }\n\n public ngAfterContentInit(): void {\n if (this.list.afterInit) {\n this.list.afterInit(this);\n }\n }\n\n public ngOnInit() {\n this._subscribeToRemoveRow();\n this._subscribeToGroupExpandStatusChange();\n }\n\n public ngOnDestroy() {\n if (this.list) {\n this.list.destroy();\n }\n\n this._destroy.next(null);\n this._destroy.complete();\n }\n\n public nextPage() {\n this.list.paging.goNext();\n }\n\n public prevPage() {\n this.list.paging.goPrev();\n }\n\n public firstPage() {\n this.list.paging.goFirst();\n }\n\n public lastPage() {\n this.list.paging.goLast();\n }\n\n public reload(): Observable<{ scrollIntoView?: boolean }> {\n this.filterRef.reload();\n\n return this.list.fetchComplete$\n .pipe( \n take(1), \n delay(0),\n );\n }\n\n public getData(trackBy?: FsListTrackByFn) {\n return this.list.getData(trackBy);\n }\n\n public hasData(trackBy: FsListTrackByFn) {\n return this.list.hasData(trackBy);\n }\n\n public updateData(\n rows: FsListAbstractRow | FsListAbstractRow[],\n trackBy?: FsListTrackByTargetRowFn,\n ): boolean {\n return this.list.dataController.updateData(rows, trackBy);\n }\n\n public updateSelectionConfig(config: FsListSelectionConfig) {\n this.list.selection.updateConfig(config);\n }\n\n public resetSelectionActions() {\n this.list.selection.resetActions();\n }\n\n public enableSelection() {\n this.list.selection.enableSelection();\n }\n\n public disableSelection() {\n this.list.selection.disableSelection();\n }\n\n public removeData(data: FsListAbstractRow | FsListAbstractRow[] | FsListTrackByTargetRowFn): boolean {\n return this.list.dataController.removeData(data);\n }\n\n public setHeading(heading: string) {\n this.list.heading = heading;\n }\n\n public setSubheading(subheading: string) {\n this.list.subheading = subheading;\n }\n\n public reorderStart() {\n this.reorderController.enableReorder();\n }\n\n public reorderFinish() {\n this.reorderController.disableReorder();\n }\n\n public setActions(actions: FsListAction[]) {\n if (actions) {\n this.list.actions.clearActions();\n this.list.actions.setActions(actions);\n }\n }\n\n public filterReady() {\n this.list.filtersReady();\n this._filterParamsReady = true;\n this._emitFiltersReadyEvent();\n }\n\n /**\n * Update visibility for specific column\n */\n public columnVisibility(name: string, show: boolean) {\n this.columnsVisibility([{ name, show }]);\n }\n\n /**\n * Update visibility for list of specific columns\n */\n public columnsVisibility(columns: { name: string; show: boolean }[]) {\n this.list.columns.updateVisibilityForCols(columns);\n }\n\n public get visibleColumns$(): Observable<Column[]> {\n return this.list.columns.visibleColumns$;\n }\n\n private _emitFiltersReadyEvent(): void {\n if (!!this.filterRef && this._filterParamsReady) {\n this.filtersReady.emit();\n this._cdRef.markForCheck();\n }\n }\n\n public get inDialog() {\n return !!this._dialogRef || !!this._drawerRef;\n }\n\n /**\n * Initialize config for list\n *\n * @param config\n */\n private _initWithConfig(config: FsListConfig<TRow>) {\n if (this.list) {\n this.list.destroy();\n }\n\n const defaultConfig: FsListConfig<TRow> = {\n queryParam: true,\n chips: true,\n paging: {\n strategy: PaginationStrategy.Offset,\n limit: 25,\n },\n noResults: {\n message: 'No Results Found',\n },\n };\n\n const globalConfig = cloneDeep(this._config || {});\n const listConfig = mergeWith(defaultConfig, globalConfig, config, this._configMergeCustomizer);\n\n this._mergedListConfig = listConfig;\n this._cellRowTypeFromConfig = listConfig.cellRowType;\n\n if (listConfig.persist !== false) {\n this._restorePersistance(listConfig.persist);\n }\n\n this._updateCustomizeAction(listConfig.actions);\n\n this.list = new List(\n this._el,\n listConfig,\n this._selectionDialog,\n this._route,\n this._persistance,\n this.inDialog,\n );\n\n this.rowHoverHighlight = this.list.rowHoverHighlight;\n\n this._waitFirstLoad();\n\n this.reorderController.initWithConfig(\n config.reorder,\n this.list.dataController,\n this.list.actions,\n this.list.selection,\n );\n\n if (this._listColumnDirectives) {\n this.list.tranformTemplatesToColumns(this._listColumnDirectives);\n }\n this._listenSortingChange();\n this._propagateCellRowTypeAnchors();\n }\n\n /**\n * Find action with customize flag and re-declare click function for CustomizeColsDialog\n *\n * @param actions\n */\n private _updateCustomizeAction(actions: FsListAction[]) {\n const customizeAction = actions?.find((action) => action.customize);\n\n if (customizeAction) {\n const actionClickFn = customizeAction.click;\n\n customizeAction.click = () => {\n if (actionClickFn) {\n actionClickFn(null);\n }\n\n this._dialog\n .open(CustomizeColsDialogComponent, {\n autoFocus: false,\n injector: this._injector,\n data: {\n columns: this.list.columns.columnsForDialog,\n changeFn: this.list.columns.changeFn,\n },\n })\n .afterClosed()\n .pipe(\n takeUntil(this.list.destroy$),\n takeUntil(this._destroy),\n )\n .subscribe((data) => {\n if (data) {\n this.list.columns.updateVisibilityForCols(data);\n this._cdRef.markForCheck();\n }\n });\n };\n }\n }\n\n /**\n * Update sorting in filter\n */\n private _listenSortingChange() {\n this.list.sorting\n .sortingChanged$\n .pipe(\n takeUntil(this.list.destroy$),\n takeUntil(this._destroy),\n )\n .subscribe((sort) => {\n this._filterRef.updateSort(sort, false);\n });\n }\n\n private _subscribeToRemoveRow() {\n this.rowRemoved\n .pipe(takeUntil(this._destroy))\n .subscribe((row) => {\n this.list.dataController.removeData(row);\n this.list.dataController.visibleRows\n .forEach((item: Row) => item.updateActions());\n });\n }\n\n private _subscribeToGroupExpandStatusChange() {\n if (this.list.dataController.hasGroups) {\n this._groupExpandNotifier.expandStatusChange$\n .pipe(\n takeUntil(this._destroy),\n )\n .subscribe((row) => {\n this.list.dataController.toggleRowGroup(row);\n });\n }\n }\n\n private _waitFirstLoad() {\n this.list.loading$\n .pipe(\n skip(1),\n filter((value) => !value),\n take(1),\n takeUntil(this.list.destroy$),\n takeUntil(this._destroy),\n )\n .subscribe(() => {\n this.firstLoad = false;\n this._cdRef.markForCheck();\n });\n }\n\n private _configMergeCustomizer(objValue: any) {\n if (Array.isArray(objValue)) {\n return objValue;\n }\n }\n\n private _restorePersistance(persistConfig: FsListPersitance) {\n this._persistance.init(persistConfig, this.inDialog);\n }\n\n private _propagateCellRowTypeAnchors() {\n if (!this._listColumnDirectives || !this._mergedListConfig) {\n return;\n }\n\n const anchor = this.cellRowType;\n\n this._listColumnDirectives.forEach((col) => {\n this._maybeApplyCellTyping(col.cellConfigs, anchor, this._mergedListConfig);\n this._maybeApplyCellTyping(col.groupHeaderConfigs, anchor, this._mergedListConfig);\n this._maybeApplyCellTyping(col.groupFooterConfigs, anchor, this._mergedListConfig);\n });\n }\n\n private _maybeApplyCellTyping(dir: unknown, anchor: unknown, listConfig: FsListConfig<TRow>) {\n if (!(dir instanceof FsListCellDirective)) {\n return;\n }\n if (dir.rowType !== undefined || dir.configTyping !== undefined) {\n return;\n }\n if (anchor != null) {\n dir.rowType = anchor;\n } else {\n dir.configTyping = listConfig;\n }\n }\n}\n","<div\n class=\"fs-list-container\"\n [ngClass]=\"{\n 'has-filters': list.filterConfig?.items.length,\n 'has-status': hasStatus,\n 'has-chips': list.chips,\n 'has-actions': list.actions.hasActions,\n 'has-row-actions-hover': list.rowActionsHover,\n 'first-load': firstLoad,\n 'loading': list.loading$ | async\n }\">\n <ng-template [ngTemplateOutlet]=\"listContainerContent\"></ng-template>\n</div>\n<ng-template #listContainerContent>\n @if (list.dataController.visibleRows$ | async; as listData) {\n <div class=\"fs-list-header-container\">\n <div\n class=\"fs-list-header\"\n [ngClass]=\"{ 'no-wrap': reorderController.manualReorderActivated || !list.filterConfig?.items.length }\">\n @if (list.filterConfig) {\n <fs-filter\n class=\"fs-list-filter\"\n [config]=\"list.filterConfig\">\n @if (hasStatus) {\n <ng-template fsFilterStatusBar>\n <fs-list-status\n class=\"fs-list-status\"\n [ngClass]=\"{ 'hidden-mobile': !list.status }\"\n [rows]=\"listData\"\n [list]=\"list\"\n [firstLoad]=\"firstLoad\">\n </fs-list-status>\n </ng-template>\n }\n @if (headingTemplate) {\n <ng-template fsFilterHeading>\n <ng-template [ngTemplateOutlet]=\"headingTemplate\"></ng-template>\n </ng-template>\n }\n </fs-filter>\n }\n </div>\n </div>\n <ng-content select=\"[fs-list-content]\"></ng-content>\n <!-- Table implementation -->\n <div class=\"fs-list-table-container\">\n @if (!firstLoad && listData.length > 0 && !list.emptyStateEnabled) {\n <table\n class=\"fs-list-table\"\n role=\"grid\"\n [fsListContentInit]=\"list.afterContentInit\"\n [ngClass]=\"{\n 'style-card': list.style === 'card',\n 'style-basic': list.style === 'basic',\n 'style-line': (list.style || 'line') === 'line'\n }\">\n @if (list.columns.hasHeader) {\n <thead\n fs-list-head\n class=\"fs-list-head\"\n role=\"rowgroup\"\n [ngClass]=\"list.columns.theadClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [sorting]=\"list.sorting\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </thead>\n }\n <tbody\n fs-list-body\n fsListDraggableList\n class=\"fs-list-body\"\n role=\"rowgroup\"\n [class.disabled]=\"!!(reorderController.reorderDisabled$ | async)\"\n [rows]=\"listData\"\n [rowActionsRaw]=\"list.rowActionsRaw\"\n [groupActionsRaw]=\"list.groupActionsRaw\"\n [hasRowActions]=\"list.hasRowActions\"\n [rowEvents]=\"list.rowEvents\"\n [rowClass]=\"list.rowClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [restoreMode]=\"list.restoreMode\"\n [selection]=\"list.selection\"\n [rowRemoved]=\"rowRemoved\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\"\n [reorderMultiple]=\"reorderController.multiple\">\n </tbody>\n @if (list.columns.hasFooter) {\n <tfoot\n fs-list-footer\n class=\"fs-list-footer\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </tfoot>\n }\n </table>\n }\n @if (firstLoad) {\n <fs-list-loader\n [columns]=\"list.columns.columns\"\n [loaderLines]=\"loaderLines\">\n </fs-list-loader>\n }\n </div>\n <fs-list-pagination\n class=\"fs-list-pagination\"\n [rows]=\"listData\"\n [pagination]=\"list.paging\">\n </fs-list-pagination>\n @if (!firstLoad) {\n @if (listData.length === 0) {\n <div\n class=\"fs-list-no-results-container\">\n @if (list.noResults?.message && !list.emptyStateEnabled) {\n <div\n class=\"fs-list-no-results\">\n {{ list.noResults?.message }}\n </div>\n }\n @if (list.emptyStateEnabled) {\n <ng-template [ngTemplateOutlet]=\"list.emptyStateTemplate\"></ng-template>\n }\n </div>\n }\n }\n }\n</ng-template>","import { Directive, Input } from '@angular/core';\n\n/**\n * Wrap list columns in `<ng-container fsListCellRowType [rowType]=\"anchor\" #cr=\"fsListCellRowType\">`.\n * On each `fs-list-cell`, bind `[rowType]=\"cr.rowType\"` so `ngTemplateContextGuard` reuses the same\n * type without repeating `{} as YourRow` on every cell.\n */\n@Directive({\n selector: '[fsListCellRowType]',\n standalone: true,\n exportAs: 'fsListCellRowType',\n})\nexport class FsListCellRowTypeScopeDirective<T = unknown> {\n\n @Input() public rowType?: T;\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[fs-list-content]',\n standalone: true,\n})\nexport class FsListContentDirective { }\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\n\nimport { FsBodyComponent } from './components/body/body.component';\nimport { FsRowActionsComponent } from './components/body/row/actions/actions.component';\nimport { FsCellComponent } from './components/body/row/cell/cell.component';\nimport { FsRowInlineActionComponent } from './components/body/row/inline-action/inline-action.component';\nimport { FsRowMenuActionComponent } from './components/body/row/menu-action/menu-action.component';\nimport { FsRowComponent } from './components/body/row/row.component';\nimport { CustomizeColsDialogComponent } from './components/customize-cols/customize-cols.component';\nimport { FsFooterCellComponent } from './components/footer/footer-row/footer-cell/footer-cell.component';\nimport { FsFooterRowComponent } from './components/footer/footer-row/footer-row.component';\nimport { FsFooterComponent } from './components/footer/footer.component';\nimport { FsHeadCellComponent } from './components/head/head-cell/head-cell.component';\nimport { FsHeadComponent } from './components/head/head.component';\nimport { FsListComponent } from './components/list/list.component';\nimport { FsListLoaderComponent } from './components/loader/loader.component';\nimport { FsPaginationComponent } from './components/pagination/pagination.component';\nimport { FsStatusComponent } from './components/status/status.component';\nimport { FsListHeadingDirective } from './directives';\nimport { FsListCellDirective } from './directives/cell/cell.directive';\nimport { FsListCellRowTypeScopeDirective } from './directives/cell/cell-row-type-scope.directive';\nimport { FsListColumnDirective } from './directives/column/column.directive';\nimport { FsListContentInitDirective } from './directives/content-init/content-init.directive';\nimport { FsListContentDirective } from './directives/content/content.directive';\nimport { FsListDraggableListDirective } from './directives/draggable-list/draggable-list.directive';\nimport { FsListDraggableRowDirective } from './directives/draggable-row/draggable-row.directive';\nimport { FsListEmptyStateDirective } from './directives/empty-state/empty-state.directive';\nimport { FsListFooterDirective } from './directives/footer/footer.directive';\nimport { FsListGroupExpandTriggerDirective } from './directives/group-expand-trigger/group-expand-trigger.directive';\nimport { FsListGroupFooterDirective } from './directives/group-footer/group-footer.directive';\nimport { FsListGroupHeaderDirective } from './directives/group-header/group-header.directive';\nimport { FsListHeaderDirective } from './directives/header/header.directive';\nimport { FS_LIST_CONFIG } from './fs-list.providers';\nimport { FsListConfig } from './interfaces';\nimport { ActionLabelPipe } from './pipes';\n\n\n@NgModule({\n imports: [\n FsListComponent,\n FsRowComponent,\n FsRowActionsComponent,\n FsRowInlineActionComponent,\n FsRowMenuActionComponent,\n FsCellComponent,\n FsFooterRowComponent,\n FsFooterCellComponent,\n FsStatusComponent,\n FsListLoaderComponent,\n FsHeadComponent,\n FsHeadCellComponent,\n FsBodyComponent,\n FsFooterComponent,\n FsPaginationComponent,\n FsListColumnDirective,\n FsListCellDirective,\n FsListCellRowTypeScopeDirective,\n FsListHeaderDirective,\n FsListFooterDirective,\n FsListGroupHeaderDirective,\n FsListGroupFooterDirective,\n FsListGroupExpandTriggerDirective,\n FsListDraggableListDirective,\n FsListDraggableRowDirective,\n FsListEmptyStateDirective,\n FsListContentDirective,\n FsListContentInitDirective,\n FsListHeadingDirective,\n CustomizeColsDialogComponent,\n ActionLabelPipe,\n ],\n exports: [\n FsListComponent,\n FsRowComponent,\n FsCellComponent,\n FsListLoaderComponent,\n FsListColumnDirective,\n FsListCellDirective,\n FsListCellRowTypeScopeDirective,\n FsListHeaderDirective,\n FsListFooterDirective,\n FsListGroupHeaderDirective,\n FsListGroupFooterDirective,\n FsListGroupExpandTriggerDirective,\n FsListEmptyStateDirective,\n FsListContentDirective,\n FsListHeadingDirective,\n FsListDraggableListDirective,\n ],\n})\nexport class FsListModule {\n public static forRoot(config: FsListConfig = {}): ModuleWithProviders<FsListModule> {\n return {\n ngModule: FsListModule,\n providers: [\n { provide: FS_LIST_CONFIG, useValue: config },\n ],\n };\n }\n}\n","import { Directive } from '@angular/core';\n\nimport { FsListCellDirective } from './cell.directive';\n\n/**\n * Extend with your own `selector` and row type `T` for strict template typing of `let-row=\"row\"`\n * without repeating `[rowType]` on every `[fs-list-cell]` (subclasses still match column cell queries).\n *\n * For IDE / strictTemplates narrowing, **redeclare** `ngTemplateContextGuard` on the concrete class\n * with `directive: YourConcreteDirective` (inherited static guards are often not applied by the\n * language service). TypeScript may report an invalid override vs `FsListCellDirective`; use\n * `@ts-expect-error` on the class line above `export class` when required.\n */\n@Directive()\nexport abstract class FsTypedListCellDirective<T = any> extends FsListCellDirective<T> {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["_get","map","i1"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;IAgBY,gBAGX;AAHD,CAAA,UAAY,eAAe,EAAA;AACzB,IAAA,eAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,eAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACjB,CAAC,EAHW,eAAe,KAAf,eAAe,GAG1B,EAAA,CAAA,CAAA,CAAA;AAED,IAAY,eAIX,CAAA;AAJD,CAAA,UAAY,eAAe,EAAA;AACzB,IAAA,eAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,eAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,eAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACnB,CAAC,EAJW,eAAe,KAAf,eAAe,GAI1B,EAAA,CAAA,CAAA,CAAA;MAGY,iBAAiB,CAAA;AAErB,IAAA,aAAa,CAAgC;AAC7C,IAAA,aAAa,CAA6B;AAC1C,IAAA,YAAY,CAA4B;AACxC,IAAA,gBAAgB,CAAmC;AAEnD,IAAA,MAAM,CAAU;AAChB,IAAA,KAAK,CAAS;AACd,IAAA,IAAI,CAAU;AACd,IAAA,QAAQ,CAAU;AAEjB,IAAA,eAAe,CAAiB;AAChC,IAAA,kBAAkB,CAAoB;AACtC,IAAA,oBAAoB,CAAsB;AAE1C,IAAA,SAAS,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAChD,IAAA,wBAAwB,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AACtD,IAAA,iBAAiB,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAC/C,IAAA,SAAS,GAAG,IAAI,eAAe,CAAyB,IAAI,CAAC,CAAC;AAC9D,IAAA,SAAS,GAAG,IAAI,eAAe,CAAyB,IAAI,CAAC,CAAC;AAE9D,IAAA,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;AAElC,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAClC;IAED,IAAW,OAAO,CAAC,KAAK,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAE3B,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,KAAK,eAAe,CAAC,MAAM,CAAC,CAAC;KAC9F;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAClC;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAClC;AAED,IAAA,IAAW,cAAc,GAAA;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;AAED,IAAA,IAAW,mBAAmB,GAAA;QAC5B,OAAO,IAAI,CAAC,oBAAoB,CAAC;KAClC;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;KACtC;AAED,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;KACtC;AAED,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;KACtC;AAED,IAAA,IAAW,sBAAsB,GAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,CAAC;KACjD;AAED,IAAA,IAAW,gBAAgB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KAC9C;AAED,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;KAC1C;AAEM,IAAA,cAAc,CACnB,IAAyB,EACzB,cAA8B,EAC9B,iBAAoC,EACpC,mBAAwC,EAAA;QAExC,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC;QAC/B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AAEzD,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;SAC3C;AAED,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;SAC3C;;AAED,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC;AAElC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC;AAC9B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC;AAEtC,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;AACtC,QAAA,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;AAC5C,QAAA,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;QAEhD,IAAI,IAAI,CAAC,QAAQ,KAAK,eAAe,CAAC,MAAM,EAAE;YAC5C,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;aAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,eAAe,CAAC,MAAM,EAAE;YACnD,iBAAiB,CAAC,gBAAgB,CAChC;AACE,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,SAAS;gBAC9B,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,gBAAA,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,MAAK;oBACV,IAAI,CAAC,aAAa,EAAE,CAAC;iBACtB;gBACD,QAAQ,EAAE,MAAK;oBACb,OAAO,IAAI,CAAC,eAAe,CAAC;iBAC7B;AACF,aAAA,CACF,CAAC;YAEF,iBAAiB,CAAC,oBAAoB,CAAC;AACrC,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,MAAK;oBACV,IAAI,CAAC,cAAc,EAAE,CAAC;iBACvB;gBACD,QAAQ,EAAE,MAAK;oBACb,OAAO,IAAI,CAAC,eAAe,CAAC;iBAC7B;AACF,aAAA,CACA,CAAC;SACH;KACF;IAEM,aAAa,GAAA;QAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,eAAe,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,eAAe,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,EAAE;AAChH,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AAE3C,YAAA,IAAI,aAAa,IAAI,aAAa,YAAY,UAAU,EAAE;gBACxD,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAE5B,aAAa;AACV,qBAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;qBACA,SAAS,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC7B,iBAAC,CAAC,CAAC;gBAEL,OAAO;aACR;SACF;AAED,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;KACrB;IAEM,cAAc,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,eAAe,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,eAAe,CAAC,MAAM,EAAE;AACxF,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;AAE7C,YAAA,IAAI,aAAa,IAAI,aAAa,YAAY,UAAU,EAAE;gBACxD,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAE5B,aAAa;AACV,qBAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;qBACA,SAAS,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;oBACrB,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC7B,iBAAC,CAAC,CAAC;gBAEL,OAAO;aACR;SACF;AAED,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACtB;AAED;;AAEG;IACI,eAAe,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;SAC5D;KACF;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;AAED;;AAEG;IACI,mBAAmB,GAAA;AACxB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,CAAC;KAC/C;AAED;;AAEG;IACI,oBAAoB,GAAA;AACzB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,CAAC;KAC/C;AAEO,IAAA,YAAY,CAAC,KAAsB,EAAA;AACzC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5B;AAEO,IAAA,YAAY,CAAC,KAAsB,EAAA;AACzC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5B;uGA7NU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAAjB,iBAAiB,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;;;IC3BC,QAKX;AALD,CAAA,UAAY,OAAO,EAAA;AACjB,IAAA,OAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,OAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,OAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC3B,IAAA,OAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AAC3B,CAAC,EALW,OAAO,KAAP,OAAO,GAKlB,EAAA,CAAA,CAAA;;MCWqB,OAAO,CAAA;AAER,IAAA,QAAQ,CAAI;AAEvB,IAAA,MAAM,CAAS;IACf,YAAY,GAAG,IAAI,CAAC;AACpB,IAAA,gBAAgB,GAAG,IAAI,OAAO,EAAQ,CAAC;AACvC,IAAA,MAAM,GAAG,IAAI,eAAe,CAAS,EAAE,CAAC,CAAC;AAEjD,IAAA,WAAA,CACE,OAAe,EAAE,EAAA;AAEjB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACxB;AAED,IAAA,IAAW,IAAI,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;KAC/B;IAED,IAAW,IAAI,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACzB;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;KACnC;AAED,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;AAED,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IAED,IAAW,KAAK,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;AAED,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;IAED,IAAW,WAAW,CAAC,KAAc,EAAA;AACnC,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;KAC3B;AAED,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;KAC7C;IAEM,aAAa,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;KACrC;IAEM,WAAW,GAAA;QAChB,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,QAAmB;YAC9B,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,MAAM,EAAE,IAAI;SACb,CAAC;KACH;AAGF;;AC9DK,MAAO,QAAS,SAAQ,OAA2B,CAAA;AAEpC,IAAA,QAAQ,GAAuB,OAAO,CAAC,UAAU,CAAC;IAE7D,QAAQ,GAAG,IAAI,CAAC;AACP,IAAA,OAAO,CAAY;AAEpC,IAAA,WAAA,CACE,IAAe,GAAA,EAAE,EACjB,MAAA,GAAoB,IAAI,EAAA;QAExB,KAAK,CAAC,IAAI,CAAC,CAAC;AAEZ,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAEtB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YACtC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;SAC1C;KACF;AAGD,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IAED,IAAW,OAAO,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACvB;AAED,IAAA,IAAW,MAAM,GAAA;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;IAEM,WAAW,GAAA;QAChB,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,QAAQ;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;SAClC,CAAC;KACH;AAEM,IAAA,OAAO,MAAK;AACpB;;ACpDK,MAAO,cAAe,SAAQ,OAA4B,CAAA;AAE3C,IAAA,QAAQ,GAAwB,OAAO,CAAC,WAAW,CAAC;IAE/D,QAAQ,GAAG,IAAI,CAAC;AACP,IAAA,OAAO,CAAY;AAEpC,IAAA,WAAA,CACE,IAAe,GAAA,EAAE,EACjB,MAAA,GAAoB,IAAI,EAAA;QAExB,KAAK,CAAC,IAAI,CAAC,CAAC;AAEZ,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAEtB,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YACrC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;SAC1C;KACF;AAGD,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IAED,IAAW,OAAO,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACvB;AAED,IAAA,IAAW,MAAM,GAAA;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;AAEM,IAAA,OAAO,MAAK;AACpB;;ACzBK,MAAO,QAAS,SAAQ,OAAsB,CAAA;AAE/B,IAAA,QAAQ,GAAkB,OAAO,CAAC,KAAK,CAAC;IAEnD,SAAS,GAAoC,EAAE,CAAC;AAEvC,IAAA,SAAS,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAEjE,IAAA,WAAA,CACE,IAAe,GAAA,EAAE,EACjB,aAAa,GAAG,KAAK,EAAA;QAErB,KAAK,CAAC,IAAI,CAAC,CAAC;QAEZ,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SACpC;KACF;AAED,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AAED,IAAA,IAAW,YAAY,GAAA;QACrB,OAAO,IAAI,CAAC,SAAS;aAClB,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;KAC/B;AAGD,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAClC;AAED,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;KACtC;IAEM,qBAAqB,GAAA;QAC1B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEpC,IAAI,CAAC,yBAAyB,EAAE,CAAC;KAClC;IAEM,OAAO,GAAA;AACZ,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AAEnD,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;IAEO,yBAAyB,GAAA;QAC/B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AAC7B,YAAA,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC9B,SAAC,CAAC,CAAC;KACJ;AAEF;;ACjEK,MAAO,SAAU,SAAQ,OAAuB,CAAA;AAE1C,IAAA,QAAQ,GAAmB,OAAO,CAAC,MAAM,CAAC;AAEpD,IAAA,WAAA,CAAY,OAAe,EAAE,EAAA;QAC3B,KAAK,CAAC,IAAI,CAAC,CAAC;KACb;AAEM,IAAA,OAAO,MAAW;AAE1B;;ACTK,SAAU,UAAU,CAAC,GAAQ,EAAA;AACjC,IAAA,OAAO,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,CAAC;AACpC,CAAC;AAEK,SAAU,UAAU,CAAC,GAAQ,EAAA;AACjC,IAAA,OAAO,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,UAAU,CAAC;AACzC,CAAC;AAEK,SAAU,gBAAgB,CAAC,GAAQ,EAAA;AACvC,IAAA,OAAO,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,WAAW,CAAC;AAC1C,CAAC;AAEK,SAAU,cAAc,CAAC,GAAQ,EAAA;AACrC,IAAA,OAAO,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,UAAU,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,WAAW,CAAC;AAC7E,CAAC;AAEK,SAAU,cAAc,CAC5B,IAAY,EACZ,OAAgB,EAChB,OAAkD,EAAE,EAAA;IAEpD,QAAQ,OAAO;AACb,QAAA,KAAK,OAAO,CAAC,MAAM,EAAE;AACnB,YAAA,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;SAC5B;AAED,QAAA,KAAK,OAAO,CAAC,KAAK,EAAE;YAClB,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;SAC/C;AAED,QAAA,KAAK,OAAO,CAAC,UAAU,EAAE;YACvB,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,MAAmB,CAAC,CAAC;SACrD;AAED,QAAA,KAAK,OAAO,CAAC,WAAW,EAAE;YACxB,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,MAAmB,CAAC,CAAC;SAC3D;KACF;AACH;;ICtCY,oBAIX;AAJD,CAAA,UAAY,mBAAmB,EAAA;AAC7B,IAAA,mBAAA,CAAA,2BAAA,CAAA,GAAA,2BAAuD,CAAA;AACvD,IAAA,mBAAA,CAAA,oBAAA,CAAA,GAAA,oBAAyC,CAAA;AACzC,IAAA,mBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC7B,CAAC,EAJW,mBAAmB,KAAnB,mBAAmB,GAI9B,EAAA,CAAA,CAAA,CAAA;MAGY,mBAAmB,CAAA;AAqCpB,IAAA,QAAA,CAAA;AACA,IAAA,gBAAA,CAAA;;IAnCH,OAAO,GAAG,EAAE,CAAC;IACb,SAAS,GAAG,IAAI,CAAC;AACjB,IAAA,kBAAkB,CAAC;AACnB,IAAA,gBAAgB,CAAC;AACjB,IAAA,aAAa,CAAC;AACd,IAAA,YAAY,CAAC;AACb,IAAA,WAAW,CAAC;;AAGZ,IAAA,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;AACzB,IAAA,cAAc,GAAG,IAAI,GAAG,EAAE,CAAC;;IAG1B,mBAAmB,GAAiB,IAAI,CAAC;AAEzC,IAAA,QAAQ,CAAc;AACtB,IAAA,gBAAgB,GAAG,IAAI,OAAO,EAA+C,CAAC;;IAG9E,mBAAmB,GAAG,KAAK,CAAC;;;IAI5B,YAAY,GAAG,KAAK,CAAC;IAErB,gBAAgB,GAAG,CAAC,CAAC;IACrB,oBAAoB,GAAG,CAAC,CAAC;IACzB,kBAAkB,GAAG,CAAC,CAAC;AAEvB,IAAA,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;AAC1B,IAAA,UAAU,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAEzD,IAAA,WAAA,CACE,MAAgC,GAAA,EAAE,EAC1B,QAAgB,EAChB,gBAAiC,EAAA;QADjC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAQ;QAChB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAiB;AAEzC,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC;AACtC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AACzD,QAAA,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,cAAc,CAAC;AAC9C,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC;AACxC,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC;AACpC,QAAA,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAClD,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;KACzC;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KACnC;AAED,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;KACvC;IAEM,UAAU,CAAC,GAAQ,EAAE,KAAa,EAAA;AACvC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SAC3C;AAED,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;AAClC,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,QAAQ,KAAK,CAAC,QAAQ,CAAC,CAC7B,CAAC;KACL;AAED,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;AAED,IAAA,IAAW,gBAAgB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;KAC9D;AAEM,IAAA,eAAe,CAAC,IAAiB,EAAA;AACtC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;KACtB;AAED;;;;;AAKG;IACI,kBAAkB,CAAC,GAAQ,EAAE,OAAgB,EAAA;QAClD,IAAI,GAAG,EAAE;YACP,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACrB,IAAI,CAAC,UAAU,EAAE,CAAC;aACnB;iBAAM;AACL,gBAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,oBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;iBAC3B;AAED,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;aACxB;SACF;QAED,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;KACrC;AAED;;;;AAIG;AACI,IAAA,oBAAoB,CAAC,OAAO,EAAA;QACjC,IAAI,CAAC,UAAU,EAAE,CAAC;AAElB,QAAA,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC;AACnC,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;AAE1B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAE7B,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;gBACnB,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAEjD,gBAAA,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE;oBACnB,IAAI,CAAC,mCAAmC,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;iBAC3E;qBAAM;oBACL,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;oBAC5C,IAAI,CAAC,gBAAgB,EAAE,CAAC;iBACzB;AACH,aAAC,CAAC,CAAC;SACJ;aAAM;AACL,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;gBACnB,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAEjD,gBAAA,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE;AACnB,oBAAA,IAAI,CAAC,mCAAmC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;iBACzD;qBAAM;AACL,oBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;iBACtC;AACH,aAAC,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,YAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;SAC3B;;QAGD,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,IAAI,CAAC,2BAA2B,EAAE,CAAC;KACpC;AAEM,IAAA,aAAa,CAAC,OAAO,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;eACrD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;eACrD,IAAI,CAAC,WAAW,CAAC;KACvB;AAEM,IAAA,eAAe,CAAC,GAAG,EAAA;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAEjD,QAAA,IACE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC;AAChC,eAAA,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,EAC7D;AACA,YAAA,OAAO,eAAe,CAAC;SACxB;AAED,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC;KAEhE;AAED;;AAEG;IACI,UAAU,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC7B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;gBACpD,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,IAAI,CAAC,kBAAkB;AACjC,gBAAA,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;;AAE3B,aAAA,CAAC,CAAC;YAEH,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B;KACF;AAED;;;;AAIG;AACI,IAAA,yBAAyB,CAAC,KAAa,EAAA;AAC5C,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;KACnC;AAED;;;;AAIG;AACI,IAAA,uBAAuB,CAAC,KAAa,EAAA;AAC1C,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAEhC,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;SAClE;KACF;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,eAAe,EAAE,CAAC;SACxB;aAAM;AACL,YAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,QAAQ,EAAE;iBACZ,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC;AACtB,iBAAA,OAAO,CAAC,CAAC,OAAO,KAAI;gBACnB,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;gBAEhD,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;oBACrC,IAAI,CAAC,gBAAgB,EAAE,CAAC;iBACzB;AACH,aAAC,CAAC,CAAC;YAEL,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;SACrC;KACF;IAEM,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;IAEM,gBAAgB,GAAA;AACrB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC5B;AAED;;;;;;AAMG;AACI,IAAA,SAAS,CAAC,GAAG,EAAA;AAClB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;QAEnD,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,8BAA8B,EAAE,CAAC;KACvC;AAED;;;;AAIG;AACI,IAAA,wBAAwB,CAAC,IAAI,EAAA;AAClC,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;QAErE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,UAAU,KAAI;YACpD,IAAI,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE;AAC/C,gBAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;aAC7B;AACH,SAAC,CAAC,CAAC;KACJ;AAEM,IAAA,YAAY,CAAC,EAClB,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,GACtD,EAAA;AACtB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACrD,IAAI,CAAC,gBAAgB,GAAG,cAAc,IAAI,IAAI,CAAC,gBAAgB,CAAC;QAChE,IAAI,CAAC,aAAa,GAAG,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC;QACvD,IAAI,CAAC,WAAW,GAAG,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC;QACjD,IAAI,CAAC,kBAAkB,GAAG,gBAAgB,IAAI,IAAI,CAAC,kBAAkB,CAAC;QACtE,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;KAC9C;;IAGM,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,mBAAmB,EAAE,YAAY,EAAE,CAAC;KAC1C;IAEM,oBAAoB,GAAA;AACzB,QAAA,IAAI,CAAC,mBAAmB,EAAE,KAAK,EAAE,CAAC;KACnC;IAEM,OAAO,GAAA;QACZ,IAAI,CAAC,eAAe,EAAE,CAAC;AAEvB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AAEhC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AAE1B,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;KAClC;AAED;;AAEG;IACK,qBAAqB,GAAA;AAC3B,QAAA,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE;AACvC,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;AACA,aAAA,SAAS,CAAC,CAAC,IAAI,KAAI;AAClB,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC9B,SAAC,CAAC,CAAC;QAEL,IAAI,CAAC,mBAAmB,CAAC,QAAQ;AAC9B,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;aACA,SAAS,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAE5C,QAAA,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE;AACpC,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;AACA,aAAA,SAAS,CAAC,CAAC,IAAI,KAAI;AAClB,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACjC,SAAC,CAAC,CAAC;KACN;AAED;;;;AAIG;AACK,IAAA,gBAAgB,CAAC,IAAI,EAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC1B,OAAO;SACR;;AAGD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC;AACnC,YAAA,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;AAC3D,gBAAA,OAAO,EAAE,GAAG,GAAG,EAAE,CAAC;AACpB,aAAC,CAAC;AACF,YAAA,GAAG,IAAI;AACR,SAAA,CAAC,CAAC;;AAGH,QAAA,IAAI,MAAM,YAAY,UAAU,EAAE;;AAGhC,YAAA,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B,CAAC,SAAS,CAAC;gBACV,IAAI,EAAE,MAAK;;oBAGT,IAAI,CAAC,oBAAoB,EAAE,CAAC;;AAG5B,oBAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;iBAClC;AACD,gBAAA,KAAK,EAAE,MAAK,GAAI;AACjB,aAAA,CAAC,CAAC;SACJ;KACF;AAED;;AAEG;IACK,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAEjC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;AAED,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;KACjC;AAED;;;;AAIG;AACK,IAAA,mBAAmB,CAAC,IAAI,EAAA;AAC9B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAEzB,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAEhC,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAEjE,IAAI,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC/E,IAAI,CAAC,8BAA8B,EAAE,CAAC;AAEtC,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,OAAO;SACR;AAED,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;KAC1B;IAEO,wBAAwB,GAAA;;;QAG9B,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,EAAE;AAChC,YAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAE3C,OAAO;SACR;AAED,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CACpC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EACtC,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,mBAAmB,CACzB,CAAC;YAEF,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,MAAM,YAAY,UAAU,EAAE;AAChC,oBAAA,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B,CAAC,SAAS,CAAC;AACV,wBAAA,IAAI,EAAE,CAAC,OAAO,KAAI;AAChB,4BAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;yBACjD;AACF,qBAAA,CAAC,CAAC;iBACJ;AAAM,qBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAChC,oBAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;iBAChD;aACF;SACF;KACF;AAED;;AAEG;IACK,2BAA2B,GAAA;AACjC,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;;YAGhE,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,EAAE;AAChC,gBAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;aAClC;YAED,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACjC;KACF;AAED;;;;;;AAMG;IACK,8BAA8B,GAAA;AACpC,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACrE;KACF;AAED;;AAEG;IACK,4BAA4B,GAAA;AAClC,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,oBAAoB,CAAC;QAE9G,IAAI,CAAC,qBAAqB,CACxB,mBAAmB,CAAC,kBAAkB,EACtC,IAAI,CAAC,mBAAmB,CACzB,CAAC;KACH;AAED;;AAEG;IACK,4BAA4B,GAAA;QAClC,IAAI,CAAC,qBAAqB,CACxB,mBAAmB,CAAC,yBAAyB,EAC7C,IAAI,CAAC,mBAAmB,CACzB,CAAC;KACH;AAED;;;;;AAKG;IACK,qBAAqB,CAAC,IAAyB,EAAE,OAAO,EAAA;AAC9D,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;YACzB,IAAI;YACJ,OAAO;AACR,SAAA,CAAC,CAAC;KACJ;AAED;;;;AAIG;AACK,IAAA,cAAc,CAAC,GAAG,EAAA;AACxB,QAAA,MAAM,UAAU,GAAGA,GAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAEvD,QAAA,IAAI,UAAU,KAAK,SAAS,EAAE;YAC5B,OAAO,CAAC,IAAI,CAAC,sDAAsD;AACjE,gBAAA,sDAAsD,CAAC,CAAC;SAC3D;AAED,QAAA,OAAO,UAAU,CAAC;KACnB;AAEO,IAAA,UAAU,CAAC,GAAG,EAAA;QACpB,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAEjD,QAAA,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE;YACnB,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;AAChC,gBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC5B,aAAC,CAAC,CAAC;SACJ;aAAM;AACL,YAAA,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE;AACnB,gBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;aAC3B;YAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;KACF;AAEO,IAAA,YAAY,CAAC,GAAG,EAAA;QACtB,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAEjD,QAAA,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE;AACnB,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAEvC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;AAChC,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;SACJ;aAAM;AACL,YAAA,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AACxD,gBAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;aAC7B;AAED,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACrC,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;KACF;AAEO,IAAA,eAAe,CAAC,GAAG,EAAA;AACzB,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9D,QAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAE9E,IAAI,CAAC,mCAAmC,CAAC,gBAAgB,EAAE,sBAAsB,GAAG,CAAC,CAAC,CAAC;KACxF;AAEO,IAAA,iBAAiB,CAAC,GAAG,EAAA;AAC3B,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9D,QAAA,MAAM,sBAAsB,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAE9E,QAAA,IAAI,sBAAsB,GAAG,CAAC,EAAE;YAC9B,IAAI,CAAC,mCAAmC,CAAC,gBAAgB,EAAE,sBAAsB,GAAG,CAAC,CAAC,CAAC;SACxF;aAAM;AACL,YAAA,IAAI,CAAC,mCAAmC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;SAC/D;KACF;IAEO,mCAAmC,CAAC,UAAkB,EAAE,CAAS,EAAA;AACvE,QAAA,IAAI,CAAC,KAAK,CAAC,EAAE;AACX,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAEvC,OAAO;SACR;QAED,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;KACxC;AAED;;AAEG;IACK,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;AACjC,QAAA,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAE1B,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,8BAA8B,EAAE,CAAC;QACtC,IAAI,CAAC,4BAA4B,EAAE,CAAC;KACrC;AACF;;MCvlBY,4BAA4B,CAAA;AAE/B,IAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACnC,IAAA,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACvB,IAAA,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACvC,IAAA,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAC/C,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;;AAG9B,IAAA,iBAAiB,CAAc;AAC/B,IAAA,wBAAwB,CAAc;AACtC,IAAA,gCAAgC,CAAc;AAC9C,IAAA,uBAAuB,CAAS;AAChC,IAAA,sBAAsB,CAAS;AAC/B,IAAA,2BAA2B,CAAS;;IAGpC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE1C,eAAe,GAAG,KAAK,CAAC;AAExB,IAAA,iBAAiB,CAA8B;AAC/C,IAAA,WAAW,GAAG,IAAI,OAAO,EAAQ,CAAC;AAClC,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;AAGhC,IAAA,KAAK,CAAQ;IACb,4BAA4B,GAAkC,EAAE,CAAC;IACjE,uBAAuB,GAAkC,EAAE,CAAC;AAC5D,IAAA,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;IAE1B,uBAAuB,GAAG,MAAK;;AAEvC,KAAC,CAAC;AAEF,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;KACzD;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;KACvD;AAED,IAAA,IAAW,aAAa,GAAA;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;KAChD;AACM,IAAA,qBAAqB,CAAC,GAAgC,EAAA;AAC3D,QAAA,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC7C;AAEM,IAAA,wBAAwB,CAAC,GAAgC,EAAA;QAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAE3D,QAAA,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;YACd,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;SAClD;KACF;AAED;;;;AAIG;AACI,IAAA,SAAS,CAAC,gBAA6B,EAAA;AAC5C,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,OAAO;SACR;AAED,QAAA,IACE,IAAI,CAAC,kBAAkB,CAAC,aAAa;eAClC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,KAAK,eAAe,CAAC,MAAM,EAC9D;AACA,YAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;SACzC;AAED,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAE5B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AAE1D,QAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;QAE1C,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAE5B,QAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,sBAAsB,CAAC;QAC/D,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAEvD,QAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAK;AAChC,YAAA,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,uBAAuB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AACtF,YAAA,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AACtF,YAAA,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACzF,SAAC,CAAC,CAAC;QAEH,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAClE,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACnE,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AAEtE,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC7B;AAGD;;;;AAIG;AACI,IAAA,MAAM,CAAC,KAAK,EAAA;AACjB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAExC,QAAA,IAAI,IAAI,CAAC,gCAAgC,EAAE;AACzC,YAAA,IAAI,CAAC,gCAAgC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAA,EAAG,KAAK,CAAC,OAAO,CAAA,EAAA,CAAI,CAAC;AACxE,YAAA,IAAI,CAAC,gCAAgC,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,KAAK,CAAC,OAAO,CAAA,EAAA,CAAI,CAAC;SACxE;;AAGD,QAAA,MAAM,4BAA4B,GAChC,CAAC,SAAS,KAAK,CAAC,IAAI,SAAS,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;eACpD,UAAU,CAAC,SAAS,CAAC;;AAErB,gBAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAGtC,IAAI,CAAC,4BAA4B,EAAE;AACjC,YAAA,IAAI,SAAS,KAAK,IAAI,EAAE;AACtB,gBAAA,IAAI,SAAS,CAAC,WAAW,EAAE;AACzB,oBAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AAC9B,oBAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE;wBACjC,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;qBACnE;iBACF;qBAAM;AACL,oBAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE;wBACjC,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;qBAChE;iBACF;aACF;;AAGD,YAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE;AACjC,gBAAA,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC,CAAC;gBAClF,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,SAAS,CAAA,EAAA,CAAI,CAAC;aAC5D;SACF;KACF;AAED;;AAEG;IACI,OAAO,GAAA;AACZ,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;AAEvD,QAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,aAAa;AACpC,eAAA,IAAI,CAAC,2BAA2B,KAAK,IAAI,CAAC,sBAAsB,EAAE;AAErE,YAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,CACnC,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,WAAW,CACnD,CAAC;SACH;QAED,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,KAAK,eAAe,CAAC,MAAM,EAAE;AAC/D,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAK;AAClB,gBAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;AACxC,oBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CACjD,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,WAAW,CACnD,CAAC;AAEF,oBAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;iBAClC;AACH,aAAC,CAAC,CAAC;SACJ;;;QAID,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACrE,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC1D,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAE9B,QAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE;AACjC,YAAA,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC;AAEvC,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;SACtC;aAAM;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,gCAAgC,CAAC,CAAC;AACjF,YAAA,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC;SAC9C;AAED,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;AACpC,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;AACnC,QAAA,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;AACxC,QAAA,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC;QAElC,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACtE,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACtE,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACtE,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACrE,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACtE,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;AAEzE,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC3B;AAED,IAAA,IAAY,eAAe,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,IAAI,IAAI,CAAC,uBAAuB,CAAC,MAAM,GAAG,CAAC,CAAC;KACpF;AAGD;;AAEG;IACK,eAAe,GAAA;QACrB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,sBAAsB,EAAE,CAAC;KAC/B;AAED;;AAEG;IACK,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;aAC/G,MAAM,CAAC,CAAC,GAAU,EAAE,UAAU,EAAE,KAAK,KAAI;AACxC,YAAA,MAAM,OAAO,GAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAE5C,YAAA,IAAI,UAAU,KAAK,IAAI,CAAC,iBAAiB,EAAE;AACzC,gBAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;AACpC,gBAAA,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;aACvB;AAED,YAAA,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAElB,YAAA,OAAO,GAAG,CAAC;SACZ,EAAE,EAAE,CAAgC,CAAC;KACzC;AAED;;AAEG;IACK,sBAAsB,GAAA;QAC5B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,EAAO,EAAE,KAAK,KAAI;YAChD,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;AAC/C,YAAA,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AAClB,YAAA,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACxB,YAAA,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACzC,YAAA,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,SAAC,CAAC,CAAC;KACJ;AAED;;AAEG;IACK,oBAAoB,GAAA;QAC1B,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAC;QACjE,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,CAAC;AAE5D,QAAA,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE;YAC3B,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,KAAK,CAAA,EAAA,CAAI,CAAC;YACnC,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAA,EAAA,CAAI,CAAC;YACjC,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA,EAAA,CAAI,CAAC;AAC/B,YAAA,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAE9B,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAEhD,YAAA,IAAI,CAAC,wBAAwB,GAAG,EAAE,CAAC;AACnC,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,MAAM,CAAC;YAE3C,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC5B;aAAM;;YAEL,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAElE,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,uBAAuB,EAAE,MAAM,CAAC;YAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACzD,YAAY,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAA,EAAA,CAAI,CAAC;YAC3C,YAAY,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA,EAAA,CAAI,CAAC;AAEzC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAG,EAAA,aAAa,CAAiB,eAAA,CAAA,CAAC,CAAC;YAE1E,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAC/C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAAC;YAC/D,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AACxD,YAAA,IAAI,CAAC,gCAAgC,GAAG,YAAY,CAAC;SACtD;KAEF;AAED;;;;AAIG;AACK,IAAA,kBAAkB,CAAC,KAAK,EAAA;QAC9B,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC;QACrC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC;QACxC,IAAI,SAAS,GAAG,IAAI,CAAC;AAErB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtD,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAErC,YAAA,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE;gBACd,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,sBAAsB;uBAC1E,MAAM,GAAG,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,sBAAsB,EAAE;oBACnF,SAAS,GAAG,CAAC,CAAC;iBACf;aACF;SACF;AAED,QAAA,OAAO,SAAS,CAAC;KAClB;AAED;;;;AAIG;AACK,IAAA,aAAa,CAAC,KAAK,EAAA;AACzB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC;AAChD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,uBAAuB;aAC9C,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;aACjB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC;;AAGhC,QAAA,IAAI,CAAC,kBAAkB;aACpB,cAAc;aACd,QAAQ,CACP,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EACvB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EACjB,YAAY,EACZ,IAAI,CAAC,eAAe,CACrB,CAAC;;AAGJ,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAC1C,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC5C,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;YAE9B,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;YACjE,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;AAEnD,YAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;YAClF,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,aAAa,CAAC;YACrD,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;SAC7C;AAED,QAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;AACpC,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;KAC7B;AAED;;AAEG;IACK,mBAAmB,GAAA;AACzB,QAAA,MAAM,cAAc,GAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QAE7F,KAAK,CAAC,IAAI,CACR,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CACrD,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,KAAK,KAAI;AAC7B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC1C,YAAA,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,CAAG,EAAA,IAAI,CAAC,KAAK,IAAI,CAAC;AACxD,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,mBAAmB,CAAC,UAAmB,EAAA;AAC7C,QAAA,IAAI,UAAU,YAAY,UAAU,EAAE;AACpC,YAAA,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,CAAC;YAE/C,UAAU;AACP,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBAC/B,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,CAAC;AAChD,aAAC,CAAC,CAAC;SACN;KACF;IAEO,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,4BAA4B;AAC9B,aAAA,OAAO,CAAC,CAAC,GAAgC,KAAI;AAC5C,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAE/F,IAAI,aAAa,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACzC,gBAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACxC;AACH,SAAC,CAAC,CAAC;KACN;AAED;;;;AAIG;AACK,IAAA,QAAQ,CAAC,CAAC,EAAA;AAChB,QAAA,IAAI,EAAE,SAAS,IAAI,CAAC,CAAC,IAAI,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE;YAC1C,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC;AACrD,YAAA,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;gBAC7B,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBAC/B,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;aAChC;YAED,CAAC,CAAC,cAAc,EAAE,CAAC;SACpB;KACF;uGApZU,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAJxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;8BA4BS,KAAK,EAAA,CAAA;sBADZ,KAAK;uBAAC,MAAM,CAAA;;;MC3BF,2BAA2B,CAAA;AAG/B,IAAA,GAAG,CAAM;AAER,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;AAChC,IAAA,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACzB,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAC9B,IAAA,kBAAkB,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAC/C,IAAA,cAAc,GAAG,MAAM,CAAC,4BAA4B,CAAC,CAAC;AAE9D,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,GAAG,CAAC;KACjB;IAEM,QAAQ,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE;YAC5C,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;KACjD;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;IAEM,QAAQ,GAAA;QACb,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;KACrD;IAEO,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,cAAc;aAChB,UAAU;AACV,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;aACA,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC9B,SAAC,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,cAAc;aAChB,QAAQ;AACR,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;aACA,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,WAAW,EAAE,CAAC;AACrB,SAAC,CAAC,CAAC;KACN;IAEO,oBAAoB,GAAA;AAC1B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC;AAC3B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;QAEnD,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAC7D;YACE,IAAI,EAAE,SAAS,EAAE,IAAI;YACrB,IAAI,EAAE,QAAQ,EAAE,IAAI;AACpB,YAAA,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI;AACjE,YAAA,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI;AAChE,SAAA,CACF,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;AACzB,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,yBAAyB,CAAC,CAAC;SAC5E;KACF;IAEO,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;AACzB,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,yBAAyB,CAAC,CAAC;SAC/E;KACF;uGA1EU,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;8BAIQ,GAAG,EAAA,CAAA;sBADT,KAAK;;;IChBI,WAMX;AAND,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,UAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,UAAoB,CAAA;AACtB,CAAC,EANW,UAAU,KAAV,UAAU,GAMrB,EAAA,CAAA,CAAA;;MCKY,SAAS,CAAA;AAEb,IAAA,IAAI,CAAkC;AACtC,IAAA,IAAI,CAAU;AACd,IAAA,MAAM,CAAkC;AACxC,IAAA,SAAS,CAAS;AAClB,IAAA,IAAI,CAAa;AACjB,IAAA,IAAI,CAAuC;AAC3C,IAAA,OAAO,CAAU;AACjB,IAAA,UAAU,CAAc;IACxB,KAAK,GAAG,EAAE,CAAC;AACX,IAAA,UAAU,CAAsB;IAChC,UAAU,GAAa,EAAE,CAAC;AAC1B,IAAA,KAAK,CAA2E;AAEhF,IAAA,UAAU,CAAsB;AAE/B,IAAA,OAAO,CAAwB;IACtB,QAAQ,GAAY,KAAK,CAAC;AACnC,IAAA,QAAQ,GAAG,IAAI,eAAe,CAAU,IAAI,CAAC,CAAC;AAEtD,IAAA,WAAA,CAAY,SAAc,EAAE,EAAA;AAC1B,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEnB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAClC,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACtB;KACF;AAED,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;AAEM,IAAA,UAAU,CAAC,GAAQ,EAAA;QACxB,OAAO,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;KACrE;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;KACrC;AAED,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,QAAQ;AACjB,aAAA,IAAI,CAACC,KAAG,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;KACrC;AAED,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KACjC;AAEM,IAAA,KAAK,CAAC,KAAU,EAAA;AACrB,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAC3B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;AACjC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC;AACpH,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC7B,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU;AAChC,cAAE,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;;AAI3C,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI,KAAI;AACvD,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AACrE,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;AAE1B,QAAA,IAAI,KAAK,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,UAAU,GAAG,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;AAEpC,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AAC1B,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AACxC,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,KAAI;AACjD,oBAAA,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAClC,iBAAC,CAAC;aACH;SACF;AAED,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAEzB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;AAC/D,gBAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEf,gBAAA,OAAO,GAAG,CAAC;aACZ,EAAE,EAAE,CAAC,CAAC;SACR;KACF;IAEM,eAAe,CAAC,GAAG,EAAE,KAAK,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACjC,gBAAA,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACrC,aAAC,CAAC,CAAC;AAEH,YAAA,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAEzD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;SACtF;AAAM,aAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACpB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;SAC3C;KACF;AAEM,IAAA,UAAU,CAAC,GAAG,EAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,OAAO;SACR;AAED,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACjC,gBAAA,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACzB,aAAC,CAAC,CAAC;SACJ;AAAM,aAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAEpC,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AAC9C,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;aAC/B;SACF;KACF;IAEO,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAA;;QAE3D,KAAK,CAAC,eAAe,EAAE,CAAC;;QAGxB,IAAI,aAAa,EAAE;YACjB,aAAa,CAAC,SAAS,EAAE,CAAC;SAC3B;QAED,IAAI,OAAO,EAAE;;YAEX,OAAO,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;SACnC;KACF;AACF;;MC5IY,eAAe,CAAA;IACnB,SAAS,CAAC,KAAK,EAAE,GAAQ,EAAA;AAC9B,QAAA,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;AAC/B,YAAA,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SACxB;AAED,QAAA,OAAO,KAAK,CAAC;KACd;uGAPU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;qGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,aAAa;AACnB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;MCoBY,iCAAiC,CAAA;AAGrC,IAAA,SAAS,CAAY;AAGrB,IAAA,GAAG,CAAM;AAGT,IAAA,UAAU,GAAG,IAAI,YAAY,EAAqB,CAAC;AAEnD,IAAA,IAAI,CAAS;AAEb,IAAA,WAAW,CAAC,OAAsB,EAAA;AACvC,QAAA,IAAG,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE;AACnE,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SACtD;KACF;AAEM,IAAA,YAAY,CAAC,KAAwB,EAAA;AAC1C,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;uGArBU,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iCAAiC,EC5B9C,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,2vBA2BA,EDHI,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,0IACP,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGH,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAV7C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mCAAmC,mBAE5B,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,OAAO;wBACP,YAAY;AACb,qBAAA,EAAA,QAAA,EAAA,2vBAAA,EAAA,CAAA;8BAKM,SAAS,EAAA,CAAA;sBADf,KAAK;gBAIC,GAAG,EAAA,CAAA;sBADT,KAAK;gBAIC,UAAU,EAAA,CAAA;sBADhB,MAAM;;;MEPI,8BAA8B,CAAA;AAGlC,IAAA,SAAS,CAAY;AAGrB,IAAA,GAAG,CAAM;AAGT,IAAA,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;AAG7B,IAAA,UAAU,GAAG,IAAI,YAAY,EAAqB,CAAC;AAEnD,IAAA,WAAW,CAAC,KAAY,EAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1B;AAEM,IAAA,YAAY,CAAC,KAAwB,EAAA;AAC1C,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;uGApBU,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,qMC7B3C,wTAUS,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDcL,OAAO,EACP,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,aAAa,6FACb,iCAAiC,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGxB,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAX1C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gCAAgC,mBAEzB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,OAAO;wBACP,aAAa;wBACb,iCAAiC;AAClC,qBAAA,EAAA,QAAA,EAAA,wTAAA,EAAA,CAAA;8BAKM,SAAS,EAAA,CAAA;sBADf,KAAK;gBAIC,GAAG,EAAA,CAAA;sBADT,KAAK;gBAIC,OAAO,EAAA,CAAA;sBADb,MAAM;gBAIA,UAAU,EAAA,CAAA;sBADhB,MAAM;;;MEdI,4BAA4B,CAAA;AAGhC,IAAA,SAAS,CAAY;AAGrB,IAAA,GAAG,CAAM;uGANL,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,wIC1BzC,6TAUC,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDWG,UAAU,EACV,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,aAAa,qGACb,iCAAiC,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGxB,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAXxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,mBAEvB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,UAAU;wBACV,aAAa;wBACb,iCAAiC;AAClC,qBAAA,EAAA,QAAA,EAAA,6TAAA,EAAA,CAAA;8BAKM,SAAS,EAAA,CAAA;sBADf,KAAK;gBAIC,GAAG,EAAA,CAAA;sBADT,KAAK;;;MEqBK,0BAA0B,CAAA;AAG9B,IAAA,SAAS,CAAY;AAGrB,IAAA,GAAG,CAAM;AAGT,IAAA,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;AAG7B,IAAA,UAAU,GAAG,IAAI,YAAY,EAAqB,CAAC;AAEnD,IAAA,WAAW,CAAC,KAAY,EAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1B;IAEM,QAAQ,GAAA;AACb,QAAA,IAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;YAC/C,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;SACvC;KACF;AAEM,IAAA,YAAY,CAAC,KAAwB,EAAA;AAC1C,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;uGA1BU,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpDvC,ylIA+HC,EAAA,MAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDzFG,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,SAAS,EACT,QAAA,EAAA,gFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAU,EACV,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,SAAS,EACT,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,YAAY,2GACZ,YAAY,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,gBAAgB,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,gBAAgB,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAChB,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,iCAAiC,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjC,8BAA8B,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,KAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC9B,4BAA4B,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,KAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGnB,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBArBtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,mBAGpB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,OAAO;wBACP,SAAS;wBACT,UAAU;wBACV,SAAS;wBACT,YAAY;wBACZ,YAAY;wBACZ,gBAAgB;wBAChB,gBAAgB;wBAChB,SAAS;wBACT,iCAAiC;wBACjC,8BAA8B;wBAC9B,4BAA4B;AAC7B,qBAAA,EAAA,QAAA,EAAA,ylIAAA,EAAA,MAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,CAAA;8BAKM,SAAS,EAAA,CAAA;sBADf,KAAK;gBAIC,GAAG,EAAA,CAAA;sBADT,KAAK;gBAIC,OAAO,EAAA,CAAA;sBADb,MAAM;gBAIA,UAAU,EAAA,CAAA;sBADhB,MAAM;;;MEtCI,wBAAwB,CAAA;AAG5B,IAAA,GAAG,CAAM;AAGT,IAAA,SAAS,CAAY;AAGrB,IAAA,IAAI,CAAsB;AAG1B,IAAA,UAAU,GAAG,IAAI,YAAY,EAAE,CAAC;AAGhC,IAAA,SAAS,GAAG,IAAI,YAAY,EAAE,CAAC;AAE/B,IAAA,IAAI,CAAS;AACb,IAAA,KAAK,CAAS;AAEb,IAAA,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AAEjC,IAAA,WAAW,CAAC,OAAsB,EAAA;AACvC,QAAA,IAAG,OAAO,CAAC,GAAG,EAAE;AACd,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SACtD;KACF;AAEM,IAAA,UAAU,CAAC,KAAK,EAAA;AACrB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;AAEM,IAAA,SAAS,CAAC,KAAK,EAAA;AACpB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;IAEM,SAAS,GAAA;AACd,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;KACxB;IAEM,QAAQ,GAAA;QACb,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;KACnC;uGA5CU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,qOCzBrC,+qBA2BC,EAAA,MAAA,EAAA,CAAA,0CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDPG,OAAO,EACP,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8UACZ,eAAe,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGN,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAZpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,mBAGlB,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,OAAO;wBACP,YAAY;wBACZ,eAAe;AAChB,qBAAA,EAAA,QAAA,EAAA,+qBAAA,EAAA,MAAA,EAAA,CAAA,0CAAA,CAAA,EAAA,CAAA;8BAKM,GAAG,EAAA,CAAA;sBADT,KAAK;gBAIC,SAAS,EAAA,CAAA;sBADf,KAAK;gBAIC,IAAI,EAAA,CAAA;sBADV,KAAK;gBAIC,UAAU,EAAA,CAAA;sBADhB,MAAM;gBAIA,SAAS,EAAA,CAAA;sBADf,MAAM;;;MELI,qBAAqB,CAAA;AAGzB,IAAA,GAAG,CAAM;AAGT,IAAA,KAAK,CAAS;IAGd,WAAW,GAAG,KAAK,CAAC;IAGpB,UAAU,GAAgB,EAAE,CAAC;AAG7B,IAAA,UAAU,CAAoB;IAG9B,cAAc,GAAgB,EAAE,CAAC;IAGjC,gBAAgB,GAAgB,EAAE,CAAC;AAGnC,IAAA,aAAa,CAAY;AAExB,IAAA,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;AAC1B,IAAA,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAG5B,IAAA,WAAW,CAAC,MAAiB,EAAE,GAAQ,EAAE,KAAU,EAAE,OAAQ,EAAA;AAClE,QAAA,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,YAAA,IACE,MAAM,CAAC,MAAM,YAAY,MAAM,EAC/B;AACA,gBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AACnB,oBAAA,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK;AAC1B,oBAAA,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ;AAChC,oBAAA,SAAS,EAAE,IAAI;iBAChB,CAAC;AACC,qBAAA,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;qBACA,SAAS,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1D,iBAAC,CAAC,CAAC;aACN;iBAAM;AACL,gBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;aAEzD;SACF;aAAM;AACL,YAAA,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SACpD;KACF;AAED;;;;AAIG;AACI,IAAA,SAAS,CAAC,KAAK,EAAA;AACpB,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;;;;;;AAOG;AACK,IAAA,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAA;AAC7C,QAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAEzD,QAAA,IAAI,gBAAgB,IAAI,gBAAgB,YAAY,UAAU,EAAE;YAC9D,gBAAgB;AACb,iBAAA,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;iBACA,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,aAAC,CAAC,CAAC;SACN;aAAM;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC3B;KACF;uGAxFU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EClClC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,KAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,q4HA4FC,EDnEG,MAAA,EAAA,CAAA,6PAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,0BAA0B,wIAC1B,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACP,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,wBAAwB,EACxB,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,WAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,EACP,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,eAAe,+CACf,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGA,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAhBjC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,mBAGd,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,0BAA0B;wBAC1B,OAAO;wBACP,YAAY;wBACZ,wBAAwB;wBACxB,OAAO;wBACP,eAAe;wBACf,SAAS;AACV,qBAAA,EAAA,QAAA,EAAA,q4HAAA,EAAA,MAAA,EAAA,CAAA,6PAAA,CAAA,EAAA,CAAA;8BAKM,GAAG,EAAA,CAAA;sBADT,KAAK;gBAIC,KAAK,EAAA,CAAA;sBADX,KAAK;gBAIC,WAAW,EAAA,CAAA;sBADjB,KAAK;gBAIC,UAAU,EAAA,CAAA;sBADhB,KAAK;gBAIC,UAAU,EAAA,CAAA;sBADhB,KAAK;gBAIC,cAAc,EAAA,CAAA;sBADpB,KAAK;gBAIC,gBAAgB,EAAA,CAAA;sBADtB,KAAK;gBAIC,aAAa,EAAA,CAAA;sBADnB,KAAK;;;AEvDF,MAAO,oBAAwB,SAAQ,eAAkB,CAAA;AAE7D,IAAA,WAAA,CAAY,KAAQ,EAAA;QAClB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;KAC7B;AAEM,IAAA,IAAI,CAAC,KAAQ,EAAA;QAClB,MAAM,QAAQ,GAAG,KAAK,CAAC;AACvB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AAEjC,QAAA,IAAI,QAAQ,KAAK,QAAQ,EAAE;YACzB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;SAClC;KACF;AACF;;MCZY,gBAAgB,CAAA;AAEnB,IAAA,MAAM,CAAS;AACf,IAAA,KAAK,CAAS;IACd,aAAa,GAAG,IAAI,CAAC;AACrB,IAAA,SAAS,CAAU;AACnB,IAAA,gBAAgB,CAAU;AAC1B,IAAA,WAAW,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAC7C,IAAA,MAAM,CAAS;AACf,IAAA,MAAM,CAAS;AACf,IAAA,UAAU,CAAoB;AAC9B,IAAA,SAAS,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAEnD,IAAA,WAAA,CAAY,QAAgC,EAAE,EAAA;AAC5C,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KACnB;;IAGD,IAAW,KAAK,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;AAED,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;;IAGD,IAAW,IAAI,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;AAED,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;;IAGD,IAAW,YAAY,CAAC,KAAc,EAAA;AACpC,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC5B;AAED,IAAA,IAAW,YAAY,GAAA;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;;IAGD,IAAW,QAAQ,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;AAED,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;;IAGD,IAAW,eAAe,CAAC,KAAc,EAAA;AACvC,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAE9B,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACtB;KACF;AAED,IAAA,IAAW,eAAe,GAAA;QACxB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAC9B;;IAGD,IAAW,SAAS,CAAC,KAAqB,EAAA;AACxC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AAErB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;AAED,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;KAC/B;AAED,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;KACxC;;IAGD,IAAW,KAAK,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;AAED,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;;IAGD,IAAW,KAAK,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACrB;AAED,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;;IAGD,IAAW,SAAS,CAAC,KAAwB,EAAA;AAC3C,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KACzB;AAED,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;;IAGD,IAAW,OAAO,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5B;AAED,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAClC;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;KACtC;AAEO,IAAA,KAAK,CAAC,KAA6B,EAAA;AACzC,QAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACf,aAAA,OAAO,CAAC,CAAC,GAAG,KAAI;YACf,QAAQ,GAAG;AACT,gBAAA,KAAK,OAAO;oBAAE;AAAE,wBAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;qBAAE;oBAAC,MAAM;AACjD,gBAAA,KAAK,MAAM;oBAAE;AAAE,wBAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;qBAAE;oBAAC,MAAM;AAC/C,gBAAA,KAAK,OAAO;oBAAE;AAAE,wBAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;qBAAE;oBAAC,MAAM;AACjD,gBAAA,KAAK,WAAW;oBAAE;AAAE,wBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;qBAAE;oBAAC,MAAM;AACzD,gBAAA,KAAK,UAAU;oBAAE;AAAE,wBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;qBAAE;oBAAC,MAAM;AACvD,gBAAA,KAAK,MAAM;oBAAE;AAAE,wBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;qBAAE;oBAAC,MAAM;AAClD,gBAAA,KAAK,SAAS;oBAAE;AAAE,wBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;qBAAE;oBAAC,MAAM;aACtD;AACH,SAAC,CAAC,CAAC;KACN;AACF;;MCzIY,WAAW,CAAA;AACf,IAAA,OAAO,CAAC;IACR,KAAK,CAAS;AACd,IAAA,SAAS,GAAsB,EAAE,CAAC;AAElC,IAAA,YAAY,GAAG,EAAE,CAAC;IAClB,aAAa,GAAG,EAAE,CAAC;IAE1B,WAAY,CAAA,MAAM,GAAG,EAAE,EAAA;AACrB,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KACpB;AAED;;AAEG;IACI,iBAAiB,GAAA;AACtB,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACtE;AAED;;;;AAIG;IACI,oBAAoB,CAAC,MAAmB,EAAE,MAAmB,EAAA;AAClE,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;AAE7B,QAAA,IAAI,WAAW,KAAK,KAAK,CAAC,EAAE;YAC1B,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE;AACrC,gBAAA,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;aAC5B;iBAAM,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE;AAC5C,gBAAA,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;aAC5B;iBAAM;gBACL,WAAW,GAAG,MAAM,CAAC;aACtB;SACF;AAED,QAAA,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;KAC1B;AAED;;;;AAIG;IACI,oBAAoB,CAAC,MAAmB,EAAE,MAAmB,EAAA;QAClE,IAAI,WAAW,GAAG,EAAE,CAAC;QAErB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACjC,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAClD;AAAM,aAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACnC,YAAA,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAClC;QAED,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,CAAC,EAAE;YACzC,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;SAC5D;aAAM,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,CAAC,EAAE;YAChD,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;SAC5D;AAED,QAAA,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC;KAC9B;AAEO,IAAA,KAAK,CAAC,MAAM,EAAA;AAClB,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAC9B,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;KACnC;AAED;;;;AAIG;IACK,sBAAsB,CAAC,EAAY,EAAE,IAAuB,EAAA;AAClE,QAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;AAClB,YAAA,EAAE,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC;SACzB;AAAM,aAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC9B,YAAA,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;SACjB;KACF;AACF;;ICxEW,iBAGX;AAHD,CAAA,UAAY,gBAAgB,EAAA;AAC1B,IAAA,gBAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACf,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,GAG3B,EAAA,CAAA,CAAA,CAAA;AAED,MAAM,eAAe,GAAG;IACtB,OAAO;IACP,UAAU;IACV,OAAO;IACP,OAAO;CACR,CAAC;MAEW,MAAM,CAAA;AAEV,IAAA,cAAc,CAAmB;AACjC,IAAA,mBAAmB,CAAmB;AACtC,IAAA,mBAAmB,CAAmB;AACtC,IAAA,YAAY,CAAmB;AAC/B,IAAA,cAAc,CAAmB;AACjC,IAAA,aAAa,CAA+C;AAC5D,IAAA,aAAa,GAAgB,IAAI,WAAW,EAAE,CAAC;AAC/C,IAAA,kBAAkB,GAAgB,IAAI,WAAW,EAAE,CAAC;AACpD,IAAA,kBAAkB,GAAgB,IAAI,WAAW,EAAE,CAAC;AACpD,IAAA,WAAW,GAAgB,IAAI,WAAW,EAAE,CAAC;AAC7C,IAAA,aAAa,GAAgB,IAAI,WAAW,EAAE,CAAC;AAC/C,IAAA,SAAS,CAAc;IACvB,gBAAgB,GAAG,KAAK,CAAC;IACzB,qBAAqB,GAAG,KAAK,CAAC;IAC9B,qBAAqB,GAAG,KAAK,CAAC;IAC9B,cAAc,GAAG,KAAK,CAAC;IACvB,gBAAgB,GAAG,KAAK,CAAC;AAExB,IAAA,WAAW,CAAmB;AAC9B,IAAA,iBAAiB,CAAiB;AAClC,IAAA,SAAS,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;IAExD,WACE,CAAA,SAA2B,EAC3B,WAAA,GAAmB,KAAK,EAAA;AAExB,QAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAE7B,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,WAAW,CAAC;AAC/B,YAAA,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS;AACrC,YAAA,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK;AAC9B,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;KAC3C;IAED,IAAW,KAAK,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;KAChC;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;KAC/B;AAED,IAAA,IAAW,IAAI,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;KAC9B;AAED,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;KACtC;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;KAC/B;IAED,IAAW,QAAQ,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAC;KACnC;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;KAClC;AAED,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;KACzC;IAED,IAAW,gBAAgB,CAAC,KAAqB,EAAA;AAC/C,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,KAAK,CAAC;KACpC;AAED,IAAA,IAAW,gBAAgB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;KACnC;AAED,IAAA,IAAW,iBAAiB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;KACpC;AAED,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;KACjC;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;KAClC;AAED,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,CAAC,IAAI,CAAC,gBAAgB,KAAK,gBAAgB,CAAC,GAAG,IAAI,KAAK,GAAG,MAAM,CAAC;KAC1E;AAED,IAAA,IAAW,iBAAiB,GAAA;AAC1B,QAAA,OAAO,CAAC,IAAI,CAAC,gBAAgB,KAAK,gBAAgB,CAAC,GAAG,IAAI,WAAW,GAAG,YAAY,CAAC;KACtF;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;KACtC;AAED,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAClC;IAED,IAAW,OAAO,CAAC,KAAK,EAAA;QACtB,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,KAAK,EAAE;YAChD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,IAAI,gBAAgB,CAAC,GAAG,CAAC;SACxE;AAED,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5B;AAED;;;;AAIG;AACI,IAAA,uBAAuB,CAAC,QAAQ,EAAA;AACrC,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YACvB,QAAQ,GAAG,EAAE,CAAC;SACf;QAED,eAAe;AACZ,aAAA,OAAO,CAAC,CAAC,GAAG,KAAI;YACf,QAAQ,GAAG;AACT,gBAAA,KAAK,OAAO;oBAAE;wBACZ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC;qBAC3C;oBAAC,MAAM;AAER,gBAAA,KAAK,UAAU;oBAAE;AACf,wBAAA,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAChC,4BAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE;AAC/B,gCAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;6BACnC;yBACF;qBACF;oBAAC,MAAM;AAER,gBAAA,KAAK,OAAO;oBAAE;AACZ,wBAAA,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;AACzE,wBAAA,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC5E,wBAAA,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC5E,wBAAA,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrE,wBAAA,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;qBAC1E;oBAAC,MAAM;AAER,gBAAA,KAAK,OAAO;oBAAE;AACZ,wBAAA,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;AACzE,wBAAA,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC5E,wBAAA,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC5E,wBAAA,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrE,wBAAA,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;qBAC1E;oBAAC,MAAM;aACT;AACH,SAAC,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC;AACvC,QAAA,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;AAC5C,QAAA,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;AAC5C,QAAA,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;AACrC,QAAA,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC;KACxC;AAED;;AAEG;IACI,eAAe,GAAA;QACpB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,KAAK,gBAAgB,CAAC,GAAG,GAAG,gBAAgB,CAAC,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC;KACvH;AAEM,IAAA,gBAAgB,CAAC,KAAc,EAAA;AACpC,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;KAClC;AAEM,IAAA,kBAAkB,CAAC,KAAc,EAAA;AACtC,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,KAAK,CAAC;KACvC;AAEO,IAAA,YAAY,CAAC,MAAwB,EAAA;AAC3C,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAErC,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AAC5C,QAAA,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACtD,QAAA,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACtD,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACxC,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAC5C,IAAI,CAAC,aAAa,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC3D,IAAI,CAAC,kBAAkB,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACrE,IAAI,CAAC,kBAAkB,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACrE,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACvD,IAAI,CAAC,aAAa,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;QAC1C,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;KACtD;AACF;;MCxNY,aAAa,CAAA;AAEjB,IAAA,QAAQ,CAAoB;AAC5B,IAAA,IAAI,CAAU;AACd,IAAA,IAAI,CAAW;AACf,IAAA,KAAK,CAAU;AACf,IAAA,QAAQ,CAAW;AAE3B;;MCmBY,eAAe,CAAA;IAEe,MAAM,GAAG,IAAI,CAAC;IAEtB,IAAI,GAAG,UAAU,CAAC;AAEnC,IAAA,MAAM,CAAS;AACf,IAAA,QAAQ,CAAS;IAC1B,GAAG,GAAG,KAAK,EAAO,CAAC;IAEnB,WAAW,GAAQ,EAAE,CAAC;AACtB,IAAA,YAAY,CAAmB;AAE9B,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;AAExC,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAE9B,IAAI,UAAU,EAAE;gBACd,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC;aAChD;AACH,SAAC,CAAC,CAAC;KACJ;IAEM,QAAQ,GAAA;QACb,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;AAEM,IAAA,WAAW,CAAC,OAAsB,EAAA;AACvC,QAAA,IAAI,OAAO,CAAC,QAAQ,EAAE,YAAY,KAAK,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE;YACtE,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;YACvC,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;SAChD;AAED,QAAA,IAAI,OAAO,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE;YAClE,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;KACF;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;IAEO,gBAAgB,GAAA;AACtB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE9B,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;QAEvC,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE;gBAC1B,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC;aAChD;AAAM,iBAAA,IAAI,cAAc,CAAC,UAAU,CAAC,EAAE;gBACrC,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC;gBAC/C,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;gBACnD,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;aACjD;AAED,YAAA,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE;gBAC1B,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC;AACzC,gBAAA,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,UAAU,CAAC,QAAQ;qBACjD,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;aAC/B;AAAM,iBAAA,IAAI,gBAAgB,CAAC,UAAU,CAAC,EAAE;gBACvC,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;gBAChD,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC;gBAC/C,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ;qBACxD,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;aAC/B;SACF;QAED,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACtC,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC;YAC7C,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC;AACvC,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAE3D,YAAA,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE;gBAC1B,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;aACjD;SACF;KACF;IAEO,oBAAoB,GAAA;AAC1B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC9B,QAAA,IAAG,UAAU,YAAY,OAAO,EAAE;AAChC,YAAA,UAAU,CAAC,KAAK;AACb,iBAAA,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;iBACA,SAAS,CAAC,MAAK;gBACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC1B,aAAC,CAAC,CAAC;SACN;KACF;IAEO,iBAAiB,GAAA;AACvB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAE9B,QAAA,IAAI,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE;AACxC,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;SACjF;AAAM,aAAA,IAAI,UAAU,IAAI,gBAAgB,CAAC,UAAU,CAAC,EAAE;AACrD,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;SACjF;aAAM;YACL,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;SAC9C;KACF;IAEO,gBAAgB,GAAA;AACtB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAE9B,QAAA,IAAI,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE;AACxC,YAAA,UAAU,CAAC,SAAS;AACjB,iBAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;AACA,iBAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACpB,gBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,MAAM,CAAC;AACrC,aAAC,CAAC,CAAC;SACN;KACF;uGA3HU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,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,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,WAAA,EAAA,WAAA,EAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9B5B,qOAKA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDuBY,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;;2FAEf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;+BACE,WAAW,EAAA,eAAA,EAEJ,uBAAuB,CAAC,MAAM,cACnC,IAAI,EAAA,OAAA,EACP,CAAC,gBAAgB,CAAC,EAAA,QAAA,EAAA,qOAAA,EAAA,CAAA;wDAIc,MAAM,EAAA,CAAA;sBAA9C,WAAW;uBAAC,mBAAmB,CAAA;gBAEC,IAAI,EAAA,CAAA;sBAApC,WAAW;uBAAC,WAAW,CAAA;gBAER,MAAM,EAAA,CAAA;sBAArB,KAAK;gBACU,QAAQ,EAAA,CAAA;sBAAvB,KAAK;;;MEWK,cAAc,CAAA;IAIlB,IAAI,GAAG,KAAK,CAAC;IAEb,GAAG,GAAG,KAAK,EAAO,CAAC;IAEV,aAAa,GAAU,EAAE,CAAC;IAC1B,eAAe,GAAU,EAAE,CAAC;IAC5B,aAAa,GAAG,KAAK,CAAC;IACtB,SAAS,GAAQ,EAAE,CAAC;AACpB,IAAA,QAAQ,CAAC;IACT,WAAW,GAAG,KAAK,CAAC;AACpB,IAAA,QAAQ,CAAS;AACjB,IAAA,OAAO,CAAW;AAClB,IAAA,SAAS,CAAsB;AAC/B,IAAA,UAAU,CAAoB;AAC9B,IAAA,kBAAkB,CAAS;AAIpC,IAAA,cAAc,CAAU;AAEf,IAAA,eAAe,CAAyB;AACxC,IAAA,eAAe,CAAyB;AACxC,IAAA,eAAe,CAAU;IAEzB,eAAe,GAAG,eAAe,CAAC;IAClC,eAAe,GAAG,eAAe,CAAC;IAC3C,UAAU,GAAgB,EAAE,CAAC;IAC7B,cAAc,GAAgB,EAAE,CAAC;IACjC,gBAAgB,GAAgB,EAAE,CAAC;AACnC,IAAA,aAAa,CAAY;IACzB,QAAQ,GAAG,KAAK,CAAC;IACjB,qBAAqB,GAA8B,KAAK,CAAC;AAEzD,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AAChC,QAAA,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AAChC,KAAC,CAAC,CAAC;AAEI,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,OAAO,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACtC,KAAC,CAAC,CAAC;AAEI,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;QACrC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACjC,KAAC,CAAC,CAAC;AAEI,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE;YACf,OAAO;SACR;AAED,QAAA,IAAI,OAAO,GAAG,CAAC,aAAa,CAAC,CAAC;QAE9B,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,EAAE;AAC3B,YAAA,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;SACjC;QACD,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,EAAE;AAC3B,YAAA,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;SAClC;QAED,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE;AAC1B,YAAA,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;SACnC;aAAM,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE;AACjC,YAAA,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;SACzC;aAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE;AACvC,YAAA,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;SAC1C;aAAM;AACL,YAAA,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;SAClC;AAED,QAAA,IAAG,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE;AACxB,YAAA,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;SACvC;AAED,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,GAAG;AACR,gBAAA,GAAG,OAAO;AACV,gBAAA,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;aACtC,CAAC;SACH;AAED,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,KAAC,CAAC,CAAC;IAEK,eAAe,GAAG,EAAE,CAAC;AACrB,IAAA,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;AAC1B,IAAA,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACzB,IAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACnC,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAC9B,cAAc,GAAG,MAAM,CAAC,4BAA4B,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAElF,IAAA,IAAW,cAAc,GAAA;AACvB,QAAA,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC;KACrF;AAED,IAAA,IACW,mBAAmB,GAAA;AAC5B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;AAEtC,QAAA,OAAO,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;KAClC;AAED,IAAA,IAAW,mBAAmB,GAAA;QAC5B,OAAO,IAAI,CAAC,cAAc;AACrB,eAAA,IAAI,CAAC,eAAe,KAAK,eAAe,CAAC,IAAI;AAC7C,eAAA,IAAI,CAAC,kBAAkB,KAAK,CAAC,CAAC;KACpC;AAED,IAAA,IAAW,oBAAoB,GAAA;QAC7B,OAAO,IAAI,CAAC,cAAc;AACrB,eAAA,IAAI,CAAC,eAAe,KAAK,eAAe,CAAC,KAAK;AAC9C,eAAA,IAAI,CAAC,kBAAkB,KAAK,CAAC,CAAC;KACpC;IAEM,QAAQ,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;YACd,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;KACF;IAEM,eAAe,GAAA;QACpB,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IAEM,gBAAgB,GAAA;AACrB,QAAA,IAAI,CAAC,UAAU;AACZ,aAAA,OAAO,CAAC,CAAC,MAAM,KAAI;AAClB,YAAA,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;AACrC,SAAC,CAAC,CAAC;QAEL,IAAI,CAAC,0BAA0B,EAAE,CAAC;KACnC;IAEM,WAAW,GAAA;QAChB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;AACxC,YAAA,QAAQ,EAAE,CAAC;AACb,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;AAED;;;;AAIG;AACI,IAAA,SAAS,CAAC,KAAwB,EAAA;AACvC,QAAA,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;KAC5B;AAED;;;;AAIG;AACI,IAAA,SAAS,CAAC,KAAK,EAAA;AACpB,QAAA,OAAO,KAAK,CAAC;KACd;AAEM,IAAA,SAAS,CAAC,KAAK,EAAA;QACpB,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YAC/C,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;YAExB,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;SACvD;KACF;IAEO,cAAc,GAAA;QACpB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;AAC9B,aAAA,OAAO,CAAC,CAAC,KAAK,KAAI;AACjB,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS;AAC5B,iBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC,GAAG,KAAI;AAC7C,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACpB,oBAAA,KAAK,EAAE,GAAG;AACV,oBAAA,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI;oBACpB,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACxB,iBAAA,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;AAEL,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACtC,SAAC,CAAC,CAAC;KACN;IAEO,eAAe,GAAA;QACrB,IAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE;YACzB,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE;gBACtC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;gBAE9E,IAAI,CAAC,0BAA0B,EAAE,CAAC;aACnC;SACF;AAAM,aAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YAE5E,IAAI,CAAC,0BAA0B,EAAE,CAAC;SACnC;AAED,QAAA,KAAK,CACH,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,EAChB,IAAI,CAAC,GAAG,EAAE,CAAC,eAAe,CAC3B;AACE,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;aACA,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxB,YAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;AAC7B,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,cAAc,CAAC,QAAQ,EAAA;QAC7B,MAAM,OAAO,GAAG,EAAE,CAAC;AACnB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC9B,QAAA,MAAM,OAAO,GAA0B;YACrC,KAAK,EAAE,IAAI,CAAC,QAAQ;YACpB,IAAI,EAAE,UAAU,CAAC,IAAI;SACtB,CAAC;AAEF,QAAA,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE;AAC1B,YAAA,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC;SACvC;AAAM,aAAA,IAAI,cAAc,CAAC,UAAU,CAAC,EAAE;YACrC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9C;AAED,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACvD,IAAG,WAAW,EAAE;AACd,YAAA,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;AACnC,gBAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aAC3B;AAAM,iBAAA,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;gBAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACtC,gBAAA,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;AACpB,oBAAA,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;AAC3B,wBAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;qBACjB;iBACF;aACF;SACF;AAED,QAAA,OAAO,OAAO,CAAC;KAChB;AAED;;AAEG;IACK,cAAc,GAAA;QACpB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;AAChC,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAE9D,IAAI,CAAC,SAAS,CAAC,gBAAgB;iBAC5B,IAAI;;;;;;;AAOH,YAAA,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;iBACA,SAAS,CAAC,MAAK;AACd,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAE9B,gBAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAE5E,gBAAA,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE;oBAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;AAElE,oBAAA,IAAI,cAAc,KAAK,eAAe,EAAE;AACtC,wBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,wBAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;qBACnC;yBAAM;AACL,wBAAA,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;AAC/B,wBAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;qBACpC;iBACF;AAED,gBAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;AAC7B,aAAC,CAAC,CAAC;SACN;KACF;IAEO,0BAA0B,GAAA;AAChC,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAE1B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AAEjC,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;gBACnB,OAAO;aACR;YAED,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AAClC,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAClC;iBAAM,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AAC1C,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACpC;AAAM,iBAAA,IAAI,MAAM,CAAC,OAAO,EAAE;AACzB,gBAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;aAC7B;AACH,SAAC,CAAC,CAAC;KACJ;uGAlTU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EChD3B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,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,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,68EAuEc,EDhCV,MAAA,EAAA,CAAA,u9BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,oJAChB,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,eAAe,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,OAAO,EACP,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,EACrB,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,OAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,sIACP,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGA,cAAc,EAAA,UAAA,EAAA,CAAA;kBAnB1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAGR,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACJ,wBAAA,SAAS,EAAE,uBAAuB;AACnC,qBAAA,EAAA,UAAA,EACW,IAAI,EACP,OAAA,EAAA;wBACP,gBAAgB;wBAChB,WAAW;wBACX,eAAe;wBACf,OAAO;wBACP,qBAAqB;wBACrB,OAAO;wBACP,SAAS;AACV,qBAAA,EAAA,QAAA,EAAA,68EAAA,EAAA,MAAA,EAAA,CAAA,u9BAAA,CAAA,EAAA,CAAA;8BAMM,IAAI,EAAA,CAAA;sBADV,WAAW;uBAAC,WAAW,CAAA;gBAKR,aAAa,EAAA,CAAA;sBAA5B,KAAK;gBACU,eAAe,EAAA,CAAA;sBAA9B,KAAK;gBACU,aAAa,EAAA,CAAA;sBAA5B,KAAK;gBACU,SAAS,EAAA,CAAA;sBAAxB,KAAK;gBACU,QAAQ,EAAA,CAAA;sBAAvB,KAAK;gBACU,WAAW,EAAA,CAAA;sBAA1B,KAAK;gBACU,QAAQ,EAAA,CAAA;sBAAvB,KAAK;gBACU,OAAO,EAAA,CAAA;sBAAtB,KAAK;gBACU,SAAS,EAAA,CAAA;sBAAxB,KAAK;gBACU,UAAU,EAAA,CAAA;sBAAzB,KAAK;gBACU,kBAAkB,EAAA,CAAA;sBAAjC,KAAK;gBAIC,cAAc,EAAA,CAAA;sBAFpB,KAAK;;sBACL,WAAW;uBAAC,gBAAgB,CAAA;gBAGb,eAAe,EAAA,CAAA;sBAA9B,KAAK;gBACU,eAAe,EAAA,CAAA;sBAA9B,KAAK;gBACU,eAAe,EAAA,CAAA;sBAA9B,KAAK;gBAyEK,mBAAmB,EAAA,CAAA;sBAD7B,WAAW;uBAAC,0BAA0B,CAAA;;;MEnH5B,eAAe,CAAA;AAEV,IAAA,IAAI,CAAQ;IACZ,OAAO,GAAa,EAAE,CAAC;IACvB,SAAS,GAAG,KAAK,CAAC;IAClB,aAAa,GAAU,EAAE,CAAC;IAC1B,eAAe,GAAU,EAAE,CAAC;IAC5B,SAAS,GAAG,EAAE,CAAC;AACf,IAAA,QAAQ,CAAC;IACT,aAAa,GAAG,KAAK,CAAC;AACtB,IAAA,SAAS,CAAsB;IAC/B,WAAW,GAAG,KAAK,CAAC;AACpB,IAAA,UAAU,CAAoB;AAC9B,IAAA,kBAAkB,CAAS;AAC3B,IAAA,cAAc,CAAU;AACxB,IAAA,eAAe,CAAyB;AACxC,IAAA,eAAe,CAAyB;AACxC,IAAA,eAAe,CAAU;AAGlC,IAAA,aAAa,CAAC;AAGd,IAAA,cAAc,CAAmB;AAExC;;;;;AAKG;IACI,SAAS,CAAC,KAAa,EAAE,GAAQ,EAAA;AACtC,QAAA,MAAM,EAAE,GAAI,GAAG,EAAE,IAAyB,EAAE,EAAE,CAAC;QAE/C,OAAO,EAAE,IAAI,KAAK,CAAC;KACpB;uGAnCU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAsBZ,cAAc,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,WAAW,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAHb,gBAAgB,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClDtD,mrBAqBC,EAAA,MAAA,EAAA,CAAA,iHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDMG,cAAc,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,2BAA2B,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGlB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAX3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,mBAGT,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,cAAc;wBACd,2BAA2B;AAC5B,qBAAA,EAAA,QAAA,EAAA,mrBAAA,EAAA,MAAA,EAAA,CAAA,iHAAA,CAAA,EAAA,CAAA;8BAIe,IAAI,EAAA,CAAA;sBAAnB,KAAK;gBACU,OAAO,EAAA,CAAA;sBAAtB,KAAK;gBACU,SAAS,EAAA,CAAA;sBAAxB,KAAK;gBACU,aAAa,EAAA,CAAA;sBAA5B,KAAK;gBACU,eAAe,EAAA,CAAA;sBAA9B,KAAK;gBACU,SAAS,EAAA,CAAA;sBAAxB,KAAK;gBACU,QAAQ,EAAA,CAAA;sBAAvB,KAAK;gBACU,aAAa,EAAA,CAAA;sBAA5B,KAAK;gBACU,SAAS,EAAA,CAAA;sBAAxB,KAAK;gBACU,WAAW,EAAA,CAAA;sBAA1B,KAAK;gBACU,UAAU,EAAA,CAAA;sBAAzB,KAAK;gBACU,kBAAkB,EAAA,CAAA;sBAAjC,KAAK;gBACU,cAAc,EAAA,CAAA;sBAA7B,KAAK;gBACU,eAAe,EAAA,CAAA;sBAA9B,KAAK;gBACU,eAAe,EAAA,CAAA;sBAA9B,KAAK;gBACU,eAAe,EAAA,CAAA;sBAA9B,KAAK;gBAGC,aAAa,EAAA,CAAA;sBADnB,SAAS;uBAAC,eAAe,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAI7D,cAAc,EAAA,CAAA;sBADpB,YAAY;uBAAC,cAAc,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;ME1CtD,qBAAqB,CAAA;IAEzB,cAAc,GAAG,KAAK,CAAC;IACvB,cAAc,GAAG,KAAK,CAAC;IACvB,aAAa,GAAG,KAAK,CAAC;IACtB,cAAc,GAAG,KAAK,CAAC;IACvB,YAAY,GAAG,KAAK,CAAC;AACrB,IAAA,IAAI,CAAS;AAEZ,IAAA,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACzB,KAAK,GAAQ,EAAE,CAAC;IACP,SAAS,GAAG,iBAAiB,CAAC;AAEvC,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAG9B,IAAI,CAAC,UAA4B,EAAE,QAAiB,EAAA;QACzD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEtD,IAAG,MAAM,EAAE;AACT,YAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC;AAC3C,YAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC;AAC3C,YAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAC1C,YAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AAC5C,YAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACxC,YAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;SAChC;KACF;AAEM,IAAA,UAAU,CAAC,KAAU,EAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;KAC7B;AAEM,IAAA,SAAS,CAAC,KAAU,EAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;KAC5B;AAEM,IAAA,UAAU,CAAC,KAAU,EAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;KAC7B;IAEM,UAAU,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;KACjC;IAEM,UAAU,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;KACjC;IAEM,SAAS,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;KAChC;IAEO,IAAI,CAAC,GAAW,EAAE,KAAU,EAAA;AAClC,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACxB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACxD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAElC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;KAC5C;IAEO,IAAI,GAAA;AACV,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAElD,IAAI,SAAS,EAAE;AACb,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC7B;AAED,QAAA,OAAO,EAAE,CAAC;KACX;IAEO,WAAW,CAAC,MAAwB,EAAE,QAAiB,EAAA;QAC7D,IAAI,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAEhD,IAAG,iBAAiB,EAAE;YACpB,MAAM,OAAO,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAEtD,YAAA,iBAAiB,GAAG;gBAClB,IAAI,EAAE,iBAAiB,CAAC,IAAI,IAAI,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC;AACjE,gBAAA,aAAa,EAAE,OAAO;AACtB,gBAAA,aAAa,EAAE,OAAO;AACtB,gBAAA,cAAc,EAAE,OAAO;AACvB,gBAAA,aAAa,EAAE,OAAO;AACtB,gBAAA,YAAY,EAAE,OAAO;AACrB,gBAAA,GAAG,iBAAiB;aACrB,CAAC;SACH;AAED,QAAA,OAAO,iBAAiB,CAAC;KAC1B;AAEO,IAAA,UAAU,CAAC,MAAwB,EAAA;QACzC,IAAG,MAAM,EAAE;YACT,OAAO;AACL,gBAAA,IAAI,MAAM,KAAK,IAAI,GAAG,EAAE,GAAG,MAAM,CAAC;aACnC,CAAC;SACH;AAED,QAAA,OAAO,IAAI,CAAC;KACb;uGApGU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAArB,qBAAqB,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;;;MCoBE,4BAA4B,CAAA;IAEhC,OAAO,GAAoB,EAAE,CAAC;IAC9B,YAAY,GAAG,KAAK,CAAC;IACrB,cAAc,GAAG,KAAK,CAAC;AAEtB,IAAA,SAAS,CAAC;AACV,IAAA,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;AAC1B,IAAA,YAAY,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAC7C,IAAA,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;AAC/B,IAAA,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AAExC,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;KACtC;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;IAEM,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAA;AACnC,QAAA,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC;KAC7B;IAEM,IAAI,GAAA;AACT,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO;aACtB,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AACjC,aAAA,GAAG,CAAC,CAAC,MAAM,KAAI;YACd,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAC;AACJ,SAAC,CAAC,CAAC;AAEL,QAAA,IAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE;AACnC,YAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SACpC;AAED,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE7D,QAAA,IAAI,OAAO,YAAY,UAAU,EAAE;YACjC,OAAO;AACJ,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC/B,iBAAA,SAAS,CAAC;gBACT,IAAI,EAAE,MAAK;oBACT,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBAClC;gBACD,KAAK,EAAE,MAAK;AACV,oBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;iBAC3B;AACF,aAAA,CAAC,CAAC;SACN;aAAM;YACL,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAClC;KACF;IAEM,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;KACtB;uGA7DU,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EC9BzC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,inCA4CqB,EDvBjB,MAAA,EAAA,CAAA,4MAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,cAAc,EAEd,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,EAChB,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,WAAW,EACX,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,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,gBAAgB,4HAChB,SAAS,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGA,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAfxC,SAAS;AAGS,YAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACnC,UAAA,EAAA,IAAI,EACP,OAAA,EAAA;wBACP,cAAc;wBACd,aAAa;wBACb,gBAAgB;wBAChB,WAAW;wBACX,gBAAgB;wBAChB,gBAAgB;wBAChB,SAAS;AACV,qBAAA,EAAA,QAAA,EAAA,inCAAA,EAAA,MAAA,EAAA,CAAA,4MAAA,CAAA,EAAA,CAAA;;;AEfG,MAAO,qBAAsB,SAAQ,eAAe,CAAA;AAExD,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAC;KACT;uGAJU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECblC,gNAKA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDMc,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;;2FAEjB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;+BACI,uBAAuB,EAAA,eAAA,EAEhB,uBAAuB,CAAC,MAAM,cACnC,IAAI,EAAA,OAAA,EACP,CAAC,gBAAgB,CAAC,EAAA,QAAA,EAAA,gNAAA,EAAA,CAAA;;;AEQzB,MAAO,oBAAqB,SAAQ,cAAc,CAAA;uGAA3C,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,ECnBjC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,qoBAuBoB,EDRhB,MAAA,EAAA,CAAA,kFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,kEACrB,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGE,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAXhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,mBAGf,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,qBAAqB;wBACrB,OAAO;AACR,qBAAA,EAAA,QAAA,EAAA,qoBAAA,EAAA,MAAA,EAAA,CAAA,kFAAA,CAAA,EAAA,CAAA;;;MEEU,iBAAiB,CAAA;AAEZ,IAAA,aAAa,CAAU;IACvB,OAAO,GAAa,EAAE,CAAC;AACvB,IAAA,SAAS,CAAsB;AAC/B,IAAA,kBAAkB,CAAS;AAC3B,IAAA,cAAc,CAAU;AACxB,IAAA,eAAe,CAAyB;AACxC,IAAA,eAAe,CAAyB;uGAR7C,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnB9B,yTAUA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDOc,oBAAoB,EAAA,QAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAErB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;+BACI,kBAAkB,EAAA,eAAA,EAGX,uBAAuB,CAAC,MAAM,cACnC,IAAI,EAAA,OAAA,EACP,CAAC,oBAAoB,CAAC,EAAA,QAAA,EAAA,yTAAA,EAAA,CAAA;8BAIjB,aAAa,EAAA,CAAA;sBAA5B,KAAK;gBACU,OAAO,EAAA,CAAA;sBAAtB,KAAK;gBACU,SAAS,EAAA,CAAA;sBAAxB,KAAK;gBACU,kBAAkB,EAAA,CAAA;sBAAjC,KAAK;gBACU,cAAc,EAAA,CAAA;sBAA7B,KAAK;gBACU,eAAe,EAAA,CAAA;sBAA9B,KAAK;gBACU,eAAe,EAAA,CAAA;sBAA9B,KAAK;;;AEPF,MAAO,mBAAoB,SAAQ,eAAe,CAAA;IAE/C,WAAW,GAAQ,EAAE,CAAC;IAEtB,eAAe,GAAA;QACpB,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;KAC5C;uGANU,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,iGCpBhC,ksBA8BM,EAAA,MAAA,EAAA,CAAA,oIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDfF,gBAAgB,EAChB,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,sIACP,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGA,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAZ/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,mBAGT,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,gBAAgB;wBAChB,OAAO;wBACP,SAAS;AACV,qBAAA,EAAA,QAAA,EAAA,ksBAAA,EAAA,MAAA,EAAA,CAAA,oIAAA,CAAA,EAAA,CAAA;;;MERU,iBAAiB,CAAA;AAErB,IAAA,MAAM,CAAO;IACb,cAAc,GAAa,EAAE,CAAC;IAC9B,kBAAkB,GAAa,EAAE,CAAC;AAClC,IAAA,aAAa,CAAS;AAErB,IAAA,YAAY,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AACnD,IAAA,gBAAgB,GAAG,IAAI,OAAO,EAAsB,CAAC;AACrD,IAAA,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;AAEnC,IAAA,WAAA,GAAA,GAAgB;AAEhB,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;KAC/D;AAED,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;KAC3D;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,OAAO;AACL,gBAAA,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI;AAC9B,gBAAA,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS;aACxC,CAAC;SACH;AAED,QAAA,OAAO,SAAS,CAAC;KAClB;AAED,IAAA,IAAW,cAAc,GAAA;AACvB,QAAA,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;KACtC;AAED,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;KAC7B;IAED,IAAY,eAAe,CAAC,KAAc,EAAA;QACxC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;KAChC;AAEM,IAAA,iBAAiB,CAAC,MAAc,EAAA;AACrC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAClC;IAEM,oBAAoB,GAAA;AACzB,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;KAC1B;AAED;;;;AAIG;AACI,IAAA,aAAa,CAAC,SAAS,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,gBAAgB,KAAK,SAAS,EAAE;AAC3E,YAAA,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAErC,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B;KACF;AAED;;;;AAIG;AACI,IAAA,MAAM,CAAC,MAAc,EAAA;AAC1B,QAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;AACnB,YAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAE/B,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B;KACF;AAED;;;;AAIG;AACI,IAAA,oBAAoB,CAAC,IAAY,EAAA;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEpC,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;SACR;AAED,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAE/B,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;AAED;;;;AAIG;AACI,IAAA,eAAe,CAAC,OAAO,EAAA;AAC5B,QAAA,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;AACzB,YAAA,MAAM,UAAU,GAAG,IAAI,gBAAgB,CAAC;gBACtC,KAAK,EAAE,MAAM,CAAC,IAAI;gBAClB,IAAI,EAAE,MAAM,CAAC,KAAK;AAClB,gBAAA,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,MAAM,CAAC,SAAS;AAC5B,aAAA,CAAC,CAAC;AAEH,YAAA,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC;gBAC5B,UAAU;AACX,aAAA,CAAC,CAAC;AAEH,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC3C,SAAC,CAAC,CAAC;KACJ;AAED;;;;AAIG;AACI,IAAA,aAAa,CAAC,IAAsB,EAAA;AACzC,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAE5B,IAAI,CAAC,IAAI,EAAE;YACT,IAAI,CAAC,+BAA+B,EAAE,CAAC;AAEvC,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;gBACvB,IAAI,CAAC,mBAAmB,EAAE,CAAC;aAC5B;AAED,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAE7B,OAAO;SACR;QAED,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC/B,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAE3B,OAAO,CAAC,IAAI,CAAC,CAAA;AAC2B,4CAAA,EAAA,IAAI,CAAC,KAAK,CAAA;AAC5B,0BAAA,EAAA,IAAI,CAAC,KAAK,CAAA;;AAE/B,MAAA,CAAA,CAAC,CAAC;SACJ;aAAM;AACL,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAEtC,YAAA,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK;kBACvE,gBAAgB,CAAC,GAAG;AACtB,kBAAE,gBAAgB,CAAC,IAAI,CAAC;AAC1B,YAAA,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;SACtC;AAED,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;KAC9B;AAED;;AAEG;IACI,mBAAmB,GAAA;AACxB,QAAA,MAAM,MAAM,GACV,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC;QAElD,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;SACR;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC;KAC9D;AAED;;;AAGG;IACI,eAAe,GAAA;QACpB,OAAO;YACL,GAAG,IAAI,CAAC,cAAc;YACtB,GAAG,IAAI,CAAC,kBAAkB;AAC3B,SAAA,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,KAAI;AAEvB,YAAA,MAAM,WAAW,GAAG;gBAClB,IAAI,EAAE,MAAM,CAAC,KAAK;gBAClB,KAAK,EAAE,MAAM,CAAC,IAAI;AAClB,gBAAA,OAAO,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI;aACvE,CAAC;AAEF,YAAA,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAEtB,YAAA,OAAO,GAAG,CAAC;SACZ,EAAE,EAAE,CAAC,CAAC;KACR;AAEM,IAAA,SAAS,CAAC,IAAY,EAAA;QAC3B,OAAO,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC;AACxD,aAAA,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;KACrD;AAED;;AAEG;IACI,OAAO,GAAA;AACZ,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;AAEO,IAAA,iBAAiB,CAAC,MAAc,EAAA;;AAEtC,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACpB,YAAA,OAAO,KAAK,CAAC;SACd;;AAGD,QAAA,IAAI,MAAM,CAAC,OAAO,EAAE;YAClB,MAAM,CAAC,eAAe,EAAE,CAAC;SAC1B;aAAM;YACL,CAAC,GAAG,IAAI,CAAC,kBAAkB,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC;iBACjD,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,CAAC;AAC5B,iBAAA,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;AAEzC,YAAA,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;SACvB;AAED,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;KAC7B;AAEO,IAAA,oBAAoB,CAAC,SAAS,EAAA;AACpC,QAAA,IAAI,CAAC,aAAa,CAAC,gBAAgB,GAAG,SAAS,CAAC;KACjD;IAEO,kBAAkB,GAAA;AACxB,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,OAAO;SACR;AAED,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACzB,YAAA,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI;AAC/B,YAAA,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,SAAS;AAC5C,SAAA,CAAC,CAAC;KACJ;IAEO,+BAA+B,GAAA;AACrC,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc;aACxC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,eAAe,CAAC,CAAC;QAE5C,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;SACjD;KACF;AACF;;MCpOY,eAAe,CAAA;AAEV,IAAA,OAAO,CAAoB;AAC3B,IAAA,OAAO,CAAW;AAClB,IAAA,aAAa,CAAU;AACvB,IAAA,SAAS,CAAsB;AAC/B,IAAA,kBAAkB,CAAS;AAC3B,IAAA,cAAc,CAAU;AACxB,IAAA,eAAe,CAAyB;AACxC,IAAA,eAAe,CAAyB;AAGjD,IAAA,aAAa,CAAC;IAEd,WAAW,GAAG,KAAK,CAAC;IACX,mBAAmB,GAAG,eAAe,CAAC;AAE9C,IAAA,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;AAC1B,IAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAE3C,IAAA,IAAW,mBAAmB,GAAA;QAC5B,OAAO,IAAI,CAAC,cAAc;AACrB,eAAA,IAAI,CAAC,eAAe,KAAK,eAAe,CAAC,IAAI;AAC7C,eAAA,IAAI,CAAC,kBAAkB,KAAK,CAAC,CAAC;KACpC;AAED,IAAA,IAAW,oBAAoB,GAAA;QAC7B,OAAO,IAAI,CAAC,cAAc;AACrB,eAAA,IAAI,CAAC,eAAe,KAAK,eAAe,CAAC,KAAK;AAC9C,eAAA,IAAI,CAAC,kBAAkB,KAAK,CAAC,CAAC;KACpC;IAEM,QAAQ,GAAA;QACb,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;AAED;;;;AAIG;AACI,IAAA,SAAS,CAAC,KAAwB,EAAA;QACvC,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KACpD;AAED;;;;;AAKG;IACI,SAAS,CAAC,KAAa,EAAE,MAAc,EAAA;QAC5C,OAAO,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC;KAC7C;AAED;;AAEG;IACK,YAAY,GAAA;QAClB,IAAI,CAAC,OAAO,CAAC,eAAe;AACzB,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;aACA,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;AAC9B,SAAC,CAAC,CAAC;KACN;AAED;;AAEG;IACK,cAAc,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,CAAC,gBAAgB;AAC5B,iBAAA,IAAI,CACH,MAAM,CACJ,CAAC,EAAE,IAAI,EAAE,MACP,IAAI,KAAK,mBAAmB,CAAC,yBAAyB;mBACnD,IAAI,KAAK,mBAAmB,CAAC,WAAW;AACxC,mBAAA,IAAI,KAAK,mBAAmB,CAAC,kBAAkB,CACnD,CACF,EACD,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;iBACA,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAI;AACvC,gBAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;AAE1B,gBAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;AAC7B,aAAC,CAAC,CAAC;SACN;KACF;uGAhGU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAWU,gBAAgB,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3CtD,ikCAkCK,EAAA,MAAA,EAAA,CAAA,mPAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDRD,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,mBAAmB,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACP,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGA,eAAe,EAAA,UAAA,EAAA,CAAA;kBAb3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,mBAGT,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACP,WAAW;wBACX,mBAAmB;wBACnB,OAAO;wBACP,SAAS;AACV,qBAAA,EAAA,QAAA,EAAA,ikCAAA,EAAA,MAAA,EAAA,CAAA,mPAAA,CAAA,EAAA,CAAA;8BAIe,OAAO,EAAA,CAAA;sBAAtB,KAAK;gBACU,OAAO,EAAA,CAAA;sBAAtB,KAAK;gBACU,aAAa,EAAA,CAAA;sBAA5B,KAAK;gBACU,SAAS,EAAA,CAAA;sBAAxB,KAAK;gBACU,kBAAkB,EAAA,CAAA;sBAAjC,KAAK;gBACU,cAAc,EAAA,CAAA;sBAA7B,KAAK;gBACU,eAAe,EAAA,CAAA;sBAA9B,KAAK;gBACU,eAAe,EAAA,CAAA;sBAA9B,KAAK;gBAGC,aAAa,EAAA,CAAA;sBADnB,SAAS;uBAAC,eAAe,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;AE3CtE,IAAY,cAGX,CAAA;AAHD,CAAA,UAAY,cAAc,EAAA;AACxB,IAAA,cAAA,CAAA,cAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW,CAAA;AACX,IAAA,cAAA,CAAA,cAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAgB,CAAA;AAClB,CAAC,EAHW,cAAc,KAAd,cAAc,GAGzB,EAAA,CAAA,CAAA;;ICHW,YAQX;AARD,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,WAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,WAAA,CAAA,WAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,WAAA,CAAA,WAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN,IAAA,WAAA,CAAA,WAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN,IAAA,WAAA,CAAA,WAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,WAAA,CAAA,WAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU,CAAA;AACV,IAAA,WAAA,CAAA,WAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ,CAAA;AACV,CAAC,EARW,WAAW,KAAX,WAAW,GAQtB,EAAA,CAAA,CAAA;;MCSY,iBAAiB,CAAA;AAkBlB,IAAA,YAAA,CAAA;AAhBF,IAAA,gBAAgB,GAAG,IAAI,eAAe,CAAW,EAAE,CAAC,CAAC;AACrD,IAAA,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;IACtD,WAAW,GAAG,EAAE,CAAC;AACjB,IAAA,OAAO,CAAqB;AAC5B,IAAA,SAAS,CAAuB;AAChC,IAAA,OAAO,CAAuB;IAC9B,aAAa,GAAG,KAAK,CAAC;IACtB,eAAe,GAAG,KAAK,CAAC;IACxB,UAAU,GAAG,KAAK,CAAC;IACnB,UAAU,GAAG,KAAK,CAAC;IACnB,QAAQ,GAAa,EAAE,CAAC;AACxB,IAAA,eAAe,CAAC;AAChB,IAAA,gBAAgB,GAAG,IAAI,OAAO,EAAQ,CAAC;AACvC,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;AAExC,IAAA,WAAA,CACU,YAAmC,EAAA;QAAnC,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAuB;KACzC;AAEJ,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;KAC9B;AAED,IAAA,IAAW,cAAc,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;KACzC;AAED,IAAA,IAAW,eAAe,GAAA;QACxB,OAAO,IAAI,CAAC,sBAAsB,CAAC;KACpC;AAED,IAAA,IAAW,gBAAgB,GAAA;QACzB,OAAO,IAAI,CAAC,QAAQ;AACjB,aAAA,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AACxD,aAAA,GAAG,CAAC,CAAC,MAAM,KAAI;YACd,OAAO;gBACL,QAAQ,EAAE,MAAM,CAAC,cAAc;gBAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,MAAM,CAAC,OAAO;gBACpB,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CAAC;AACJ,SAAC,CAAC,CAAC;KACN;AAED,IAAA,IAAW,cAAc,GAAA;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;AAED,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;AAED,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;AAED,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;AAED,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;AAED,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AAED,IAAA,IAAW,mBAAmB,GAAA;QAC5B,OAAO,IAAI,CAAC,cAAc;aACvB,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC;aAC5B,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;KAC7B;AAEM,IAAA,WAAW,CAAC,QAAQ,EAAA;AACzB,QAAA,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;KACjC;AAED;;;AAGG;AACI,IAAA,UAAU,CAAC,MAA0B,EAAA;AAC1C,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,MAAK;YAC/C,OAAO,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;AACpF,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,MAAK;;AAEvD,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC,IAAI,GAAG,MAAK;;AAEjD,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;KAC/B;AAED;;;AAGG;AACI,IAAA,iBAAiB,CAAC,SAAS,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AAEnB,QAAA,SAAS,CAAC,OAAO,CAAC,CAAC,MAAM,KAAI;YAC3B,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YAErD,IAAI,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,KAAK,EAAE;AACnC,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;aACxB;AACD,YAAA,IAAI,GAAG,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;aACxB;AAED,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,GAAG,YAAY,GAAG,EAAE,CAAC;AAEtD,QAAA,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC;QAE1D,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,8BAA8B,EAAE,CAAC;KACvC;AAED;;AAEG;IACI,uBAAuB,GAAA;QAC5B,OAAO,IAAI,CAAC,OAAO,EAAE;AAClB,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,OAAuB,KAAI;AAC9B,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC5B,YAAA,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACtC,YAAA,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACxC,YAAA,IAAI,CAAC,OAAO,CACV,IAAI,CAAC,QAAQ;AACV,iBAAA,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AACxD,iBAAA,GAAG,CAAe,CAAC,MAAM,KAAI;gBAC5B,OAAO;oBACL,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,IAAI,EAAE,MAAM,CAAC,OAAO;iBACrB,CAAC;aACH,CAAC,CAAC,CAAC;SACT,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B,CAAC;KACL;AAED;;AAEG;IACI,oBAAoB,GAAA;QACzB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACxB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CACvD,CAAC;KACH;AAED;;;AAGG;AACI,IAAA,uBAAuB,CAAC,aAA6B,EAAA;AAC1D,QAAA,aAAa,CAAC,OAAO,CAAC,CAAC,YAAY,KAAI;AACrC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ;AACtB,iBAAA,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;YAEvD,IAAI,GAAG,EAAE;gBACP,GAAG,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;aACjD;AACH,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;AAEM,IAAA,yBAAyB,CAAC,aAA6B,EAAA;AAC5D,QAAA,aAAa,CAAC,OAAO,CAAC,CAAC,YAAY,KAAI;AACrC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ;AACtB,iBAAA,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;YAEvD,IAAI,GAAG,EAAE;gBACP,GAAG,CAAC,kBAAkB,CAAC,YAAY,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC;aAC3D;AACH,SAAC,CAAC,CAAC;KACJ;IAEM,OAAO,GAAA;AACZ,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;AAEjC,QAAA,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;AAC1B,QAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;AAClC,QAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;AAEjC,QAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,QAAA,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;KAC1B;IAEO,8BAA8B,GAAA;AACpC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEjC,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;YACrD,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,SAAC,CAAC,CAAC;QAEH,KAAK,CAAC,GAAG,iBAAiB,CAAC;AACxB,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAChC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;aACA,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC9B,SAAC,CAAC,CAAC;KACN;IAEO,eAAe,CAAC,MAAM,EAAE,UAAU,EAAA;QACxC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;YAEnC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,SAAS,EAAE;gBACrC,MAAM,MAAM,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AAE5C,gBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;oBACrB,OAAO;iBACR;gBACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;AAEzC,gBAAA,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,oBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;wBACpB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;qBACrC;iBACF;aACF;AACH,SAAC,CAAC,CAAC;KACJ;AAEF;;MCvPY,cAAc,CAAA;AAER,IAAA,aAAa,GAAG,IAAI,eAAe,CAAQ,EAAE,CAAC,CAAC;AAC/C,IAAA,aAAa,GAAG,IAAI,OAAO,EAAS,CAAC;AACrC,IAAA,kBAAkB,GAAG,IAAI,OAAO,EAAQ,CAAC;AAElD,IAAA,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;IACnB,UAAU,GAAU,EAAE,CAAC;AACvB,IAAA,UAAU,CAAc;AAExB,IAAA,UAAU,CAAiB;AAC3B,IAAA,YAAY,CAQP;AACL,IAAA,YAAY,CAAiB;IAC7B,cAAc,GAAG,IAAI,CAAC;IACtB,aAAa,GAAG,KAAK,CAAC;AAEtB,IAAA,gBAAgB,CAAU;IAE1B,QAAQ,GAAG,KAAK,CAAC;AAER,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;AAEjD,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;KAChD;AAED,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;KAChC;AAED,IAAA,IAAW,YAAY,GAAA;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;IAED,IAAW,YAAY,CAAC,KAAc,EAAA;AACpC,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC5B;AAED,IAAA,IAAW,iBAAiB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CACjC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B,CAAC;KACH;AAED,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAC5B,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B,CAAC;KACH;AAED,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;AAED,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;AAED,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;KAC1C;IAED,IAAW,WAAW,CAAC,KAAY,EAAA;AACjC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;KAC7C;AAED,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;KACtC;AAED,IAAA,IAAW,gBAAgB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;KAChC;AAED,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,CAAC;KAC7C;AAED,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,UAAU;aACnB,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACpC;AAEM,IAAA,cAAc,CAAC,KAAwB,EAAA;QAC5C,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC;AAChC,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC;AACpC,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,KAAK,MAAM,KAAK,CAAC,CAAC;YAClD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC;;YAGlD,IAAI,CAAC,aAAa,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS;kBAC7C,KAAK,CAAC,OAAO;kBACb,IAAI,CAAC;SACV;KACF;AAEM,IAAA,oBAAoB,CAAC,OAAqC,EAAA;AAC/D,QAAA,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;KACjD;AAED;;;AAGG;AACI,IAAA,mBAAmB,CAAC,IAAW,EAAA;AACpC,QAAA,IACE,IAAI,CAAC,UAAU,KAAK,WAAW,CAAC,QAAQ;AACtC,aAAC,IAAI,CAAC,UAAU,KAAK,WAAW,CAAC,UAAU,IAAI,IAAI,CAAC,gBAAgB,CAAC,EACvE;AACA,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;SAC7B;aAAM;AACL,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;SAC7B;AAED,QAAA,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC;QAEnC,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;AAED;;;AAGG;AACI,IAAA,YAAY,CAAC,KAAkB,EAAA;AACpC,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KACzB;AAED;;AAEG;IACI,SAAS,GAAA;AACd,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;KACvB;AAED;;;;AAIG;IACI,UAAU,CACf,IAA6C,EAC7C,OAAkC,EAAA;AAElC,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACvB,IAAI,aAAa,GAAG,KAAK,CAAC;AAE1B,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;gBACpB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;oBAClC,aAAa,GAAG,IAAI,CAAC;iBACtB;AACH,aAAC,CAAC,CAAC;AAEH,YAAA,OAAO,aAAa,CAAC;SACtB;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KACvC;AAED;;;AAGG;AACI,IAAA,UAAU,CACf,IAAwE,EAAA;QAExE,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB,QAAA,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,MAAM,KAAI;YACrC,OAAO,GAAG,KAAK,MAAM,CAAC;AACxB,SAAC,CAAC;AAEF,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;;AAEvB,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACpB,gBAAA,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;AAC7D,aAAC,CAAC,CAAC;SACJ;AAAM,aAAA,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;AAC3B,YAAA,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAG,IAAiC,CAAC,CAAC,CAAC;SAChF;AAAM,aAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;AACzB,YAAA,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;SAC5D;AAED,QAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1B,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAE1B,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACtC;AAED,QAAA,OAAO,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC;KAC7B;IAEM,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,YAAoB,EAAE,cAAc,GAAG,KAAK,EAAA;AACtE,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAEhD,QAAA,MAAM,KAAK,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;QACzC,SAAS,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;AACxD,QAAA,SAAS,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC;QAEnC,IAAI,cAAc,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;YACjD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAChC,gBAAA,YAAY,GAAG,CAAC,IAAI,EAAE,GAAG,YAAY,CAAC,CAAC;aACxC;YAED,YAAY;AACT,iBAAA,MAAM,CAAC,CAAC,WAAW,KAAI;gBACtB,OAAO,WAAW,KAAK,IAAI,CAAC;AAC9B,aAAC,CAAC;AACD,iBAAA,OAAO,CAAC,CAAC,WAAW,KAAI;gBACvB,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAC3C,gBAAA,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC3B,aAAC,CAAC,CAAC;YAEL,MAAM,kBAAkB,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAEpD,YAAA,SAAS,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;YAExC,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,MAAM,KAAI;gBAC3C,SAAS,CAAC,MAAM,CAAC,kBAAkB,GAAG,MAAM,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;AAChE,aAAC,CAAC,CAAC;SACJ;AAED,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;KAClC;IAEM,OAAO,GAAA;QACZ,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AAEpB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;AAEM,IAAA,cAAc,CAAC,OAAO,EAAA;AAC3B,QAAA,MAAM,GAAG,GAAc,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,IAAI,KAAK,OAAO,CAAE,CAAC;QAC3F,GAAG,EAAE,qBAAqB,EAAE,CAAC;QAE7B,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;IAEM,aAAa,GAAA;;AAElB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,KAAgB,CAAC;AAErB,YAAA,IAAI,CAAC,UAAU;AACZ,iBAAA,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;gBACtB,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,KAAK,EAAE;oBACpC,KAAK,GAAG,GAAG,CAAC;iBACb;qBAAM;AACL,oBAAA,GAAG,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;iBACxD;AACH,aAAC,CAAC,CAAC;SACN;QAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;AAEO,IAAA,gBAAgB,CAAC,IAAI,EAAA;QAC3B,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAEzB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AACpB,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;SAChD;aAAM;YACL,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;gBACtB,OAAO,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7C,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;SAC7B;KACF;AAEO,IAAA,gBAAgB,CAAC,IAAI,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;SAChD;aAAM;YACL,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;gBACtB,OAAO,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7C,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC;SACjD;KACF;IAEO,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;KACjD;IAEO,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU;AAC/B,aAAA,MAAM,CAAC,CAAC,GAAQ,KAAI;YACnB,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC;AAC7C,SAAC,CAAC,CAAC;KACN;IAEO,UAAU,CAChB,UAA6B,EAC7B,OAAgF,EAAA;AAEhF,QAAA,IAAI,OAAO,KAAK,SAAS,EAAE;AACzB,YAAA,OAAO,GAAG,CAAC,GAAG,EAAE,MAAM,KAAI;gBACxB,OAAO,GAAG,KAAK,MAAM,CAAC;AACxB,aAAC,CAAC;SACH;AAED,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU;AAChC,aAAA,SAAS,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;AAE7D,QAAA,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAC/C,MAAM,WAAW,GAAG,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,GAAG,UAAU,EAAE,CAAC;AAEzD,YAAA,SAAS,CAAC,IAAI,GAAG,WAAW,CAAC;AAE7B,YAAA,OAAO,IAAI,CAAC;SACb;AAED,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;;;AAIG;IACK,UAAU,CAChB,SAAmC,EACnC,OAAkC,EAAA;AAGlC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7B,MAAM,WAAW,GAAG,EAAE,CAAC;QAEvB,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,KAAI;YAC9B,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE;gBACpC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAEzC,gBAAA,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC9B;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,WAAW,CAAC;KACpB;AAED;;AAEG;AACK,IAAA,YAAY,CAAC,IAAI,EAAA;QACvB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AAC1C,YAAA,OAAO,IAAI,CAAC;SACb;QAED,MAAM,SAAS,GAAgB,EAAE,CAAC;AAElC,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;YACnB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAE9C,IAAI,KAAK,GAAc,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEjD,IAAI,CAAC,KAAK,EAAE;AACV,gBAAA,KAAK,GAAG,cAAc,CACpB,SAAS,EACT,OAAO,CAAC,KAAK,EACb,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CAC1B,CAAC;AAEf,gBAAA,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;AAC/B,gBAAA,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAEtB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;aAClC;AAED,YAAA,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAc,CAAC;AACzF,YAAA,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAChC,SAAC,CAAC,CAAC;AAEH,QAAA,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;AAC7B,YAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ;AAClC,iBAAA,SAAS,CAAC,CAAC,GAAG,KAAI;AACjB,gBAAA,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE;oBACjC,GAAG,QAAQ,CAAC,IAAI;oBAChB,QAAQ,EAAE,QAAQ,CAAC,YAAY;AAChC,iBAAA,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;AAEL,YAAA,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;AACtB,gBAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,gBAAA,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;AACzF,gBAAA,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAyB,CAAC,CAAC;aACnD;AACH,SAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;AACpC,aAAA,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;AACpB,YAAA,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;gBACpB,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;aAClC;iBAAM;AACL,gBAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAChB;AAED,YAAA,OAAO,GAAG,CAAC;SACZ,EAAE,EAAE,CAAC,CAAC;KACV;AACF;;MC3ZY,wBAAwB,CAAA;AAYzB,IAAA,MAAA,CAAA;AACA,IAAA,YAAA,CAAA;AACA,IAAA,UAAA,CAAA;AACA,IAAA,QAAA,CAAA;AACA,IAAA,mBAAA,CAAA;AAdF,IAAA,eAAe,GAAmB;AACxC,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,aAAa,EAAE,IAAI;KACpB,CAAC;AAEM,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;IAExC,WACU,CAAA,MAAsB,EACtB,YAAmC,EACnC,UAAgC,EAChC,QAA2B,EAC3B,mBAA4B,EAAA;QAJ5B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;QACtB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAuB;QACnC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAsB;QAChC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAmB;QAC3B,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAS;QAEpC,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;AAED,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC7D,YAAA,OAAO,IAAI,CAAC;SACb;QAED,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,SAAS;YACrB,SAAS,EAAE,IAAI,CAAC,cAAc;SAC/B,CAAC;KACH;AAED,IAAA,IAAY,QAAQ,GAAA;QAClB,OAAO,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;KACrE;AAED,IAAA,IAAY,KAAK,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;KAClC;AAED,IAAA,IAAY,MAAM,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;KACnC;AAED,IAAA,IAAY,SAAS,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;KACtC;AAED,IAAA,IAAY,cAAc,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;KAC3C;IAEM,UAAU,GAAA;;AAGf,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;YACnC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC;SAC9D;AAED,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE;YACpC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC;SAC5D;;AAGD,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAsC,CAAC,CAAC;YAC3F,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAmC,CAAC,CAAC;SACtF;;;AAID,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AAC3B,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACvC;AAED,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;gBACd,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACtC;SACF;;QAGD,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAEhE,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;IAEM,kBAAkB,GAAA;AACvB,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KACvC;IAEM,OAAO,GAAA;AACZ,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;AAEO,IAAA,wBAAwB,CAAC,MAA+B,EAAA;AAC9D,QAAA,IAAI,MAAM,EAAE,IAAI,EAAE;YAChB,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;SAC1C;AAED,QAAA,IAAI,MAAM,EAAE,KAAK,EAAE;YACjB,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;SAC5C;KACF;AAEO,IAAA,qBAAqB,CAAC,MAA4B,EAAA;AACxD,QAAA,IAAI,MAAM,EAAE,QAAQ,EAAE;YACpB,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;SACjD;AAED,QAAA,IAAI,MAAM,EAAE,aAAa,EAAE;YACzB,IAAI,CAAC,eAAe,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;SAC3D;KACF;IAEO,uBAAuB,GAAA;AAC7B,QAAA,KAAK,CACH,IAAI,CAAC,UAAU,CAAC,YAAY,EAC5B,IAAI,CAAC,UAAU,CAAC,MAAM,EACtB,IAAI,CAAC,UAAU,CAAC,UAAU,CAC3B;AACE,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;aACA,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AAClE,SAAC,CAAC,CAAC;KACN;IAEO,qBAAqB,GAAA;AAC3B,QAAA,KAAK,CACH,IAAI,CAAC,QAAQ,CAAC,YAAY,EAC1B,IAAI,CAAC,QAAQ,CAAC,eAAe,CAC9B;AACE,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;aACA,SAAS,CAAC,MAAK;AACd,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAEpC,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;aAC7D;iBAAM;gBACL,IAAI,CAAC,kBAAkB,EAAE,CAAC;aAC3B;AACH,SAAC,CAAC,CAAC;KACN;IAEO,oBAAoB,CAAC,IAAY,EAAE,SAAiB,EAAA;AAC1D,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,IAAI,CAAC,aAAa,CAAC;AACjB,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,aAAa,EAAE,SAAS;AACzB,aAAA,CAAC,CAAC;SACJ;AAED,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE;AACpC,YAAA,IAAI,IAAI,IAAI,SAAS,EAAE;AACrB,gBAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC;aAC5E;iBAAM;AACL,gBAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aACpC;SACF;KACF;AAEO,IAAA,uBAAuB,CAAC,MAAM,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;SAC5B;AAED,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE;AACpC,YAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;SACrC;KACF;AAEO,IAAA,aAAa,CAAC,IAAI,EAAA;QACxB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAE1C,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACd,aAAA,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;AACjE,aAAA,OAAO,CAAC,CAAC,IAAI,KAAI;AAChB,YAAA,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,SAAC,CAAC,CAAC;AAEL,QAAA,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;KAC3D;AACF;;MCtMY,iBAAiB,CAAA;AAEpB,IAAA,UAAU,CAAkB;IAE5B,QAAQ,GAAmB,EAAE,CAAC;AAC9B,IAAA,cAAc,CAAe;AAC7B,IAAA,WAAW,CAAe;AAE1B,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;AAExC,IAAA,WAAA,GAAA,GAAgB;AAEhB,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;KACtC;AAED,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;AAED,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;KACjC;AAEM,IAAA,YAAY,CAAC,GAAoB,EAAA;AACtC,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;KACvB;AAEM,IAAA,UAAU,CAAC,OAAuB,EAAA;QACvC,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;AAExB,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SAC5C;KACF;AAEM,IAAA,gBAAgB,CAAC,MAAoB,EAAA;AAC1C,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAE9B,QAAA,MAAM,CAAC,KAAK,GAAG,MAAK;YAClB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AAClD,YAAA,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;YACjC,aAAa,CAAC,IAAI,CAAC,CAAC;AACtB,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;KAC9B;AAEM,IAAA,oBAAoB,CAAC,MAAoB,EAAA;AAC9C,QAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;AAC1B,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC;AAEnC,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,MAAK;YAC5B,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7C,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;YAChC,aAAa,CAAC,IAAI,CAAC,CAAC;AACtB,SAAC,CAAC;KACH;IAEM,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC3B;IAEM,mBAAmB,GAAA;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC;KACvC;AACF;;IC5EW,mBAKX;AALD,CAAA,UAAY,kBAAkB,EAAA;AAC5B,IAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,kBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,kBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACf,CAAC,EALW,kBAAkB,KAAlB,kBAAkB,GAK7B,EAAA,CAAA,CAAA;;MCYY,oBAAoB,CAAA;IAEvB,MAAM,GAAG,EAAE,CAAC;AACZ,IAAA,QAAQ,CAAS;AACjB,IAAA,KAAK,GAAG,CAAC,CAAC;IACV,YAAY,GAAG,CAAC,CAAC;IACjB,OAAO,GAAG,CAAC,CAAC;IACZ,OAAO,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC,CAAC;AACzC,IAAA,SAAS,GAAuB,kBAAkB,CAAC,IAAI,CAAC;IACxD,YAAY,GAAG,CAAC,CAAC;AACjB,IAAA,aAAa,GAAG,IAAI,OAAO,EAAc,CAAC;AAC1C,IAAA,WAAW,GAAG,IAAI,OAAO,EAAQ,CAAC;AAClC,IAAA,WAAW,GAAG,IAAI,OAAO,EAAE,CAAC;AAC5B,IAAA,eAAe,CAAuB;AACtC,IAAA,OAAO,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAEzC,IAAW,KAAK,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1B;AAED,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;KAChC;AAED,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IAED,IAAW,IAAI,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;AAED,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;AAED,IAAA,IAAW,MAAM,GAAA;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;AAED,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;AAED,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IAED,IAAW,OAAO,CAAC,KAAa,EAAA;AAC9B,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACvB;AAED,IAAA,IAAW,MAAM,GAAA;QACf,OAAO,IAAI,CAAC,OAAO;AAChB,aAAA,IAAI,CACH,oBAAoB,EAAE,CACvB,CAAC;KACL;AAED;;AAEG;AACH,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;KAC7D;AAED,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;KACxC;AAED;;AAEG;AACH,IAAA,IAAW,OAAO,GAAA;AAChB,QAAA,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;KAC9B;AAED;;AAEG;AACH,IAAA,IAAW,MAAM,GAAA;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;AAED;;;;AAIG;IACH,IAAW,MAAM,CAAC,KAAK,EAAA;AACrB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QAErB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;YACvE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SAC/B;aAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;SAC7B;KACF;AAED;;AAEG;AACH,IAAA,IAAW,KAAK,GAAA;AACd,QAAA,QAAQ,IAAI,CAAC,QAAQ;YACnB,KAAK,kBAAkB,CAAC,IAAI;gBAC1B,OAAO,IAAI,CAAC,iBAAiB,CAAC;YAChC,KAAK,kBAAkB,CAAC,MAAM;gBAC5B,OAAO,IAAI,CAAC,mBAAmB,CAAC;YAClC,KAAK,kBAAkB,CAAC,IAAI;gBAC1B,OAAO,IAAI,CAAC,iBAAiB,CAAC;SACjC;AAED,QAAA,OAAO,EAAE,CAAC;KACX;AAED,IAAA,IAAW,aAAa,GAAA;AACtB,QAAA,QAAQ,IAAI,CAAC,QAAQ;AACnB,YAAA,KAAK,kBAAkB,CAAC,IAAI,EAAE;gBAC5B,OAAO,IAAI,CAAC,KAAK,CAAC;aACnB;AAED,YAAA,KAAK,kBAAkB,CAAC,MAAM,EAAE;AAC9B,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC;gBAEvC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;AACzC,gBAAA,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAEjB,gBAAA,OAAO,KAAK,CAAC;aACd;SACF;AAED,QAAA,OAAO,EAAE,CAAC;KACX;AAED;;AAEG;AACH,IAAA,IAAW,iBAAiB,GAAA;QAC1B,OAAO,IAAI,CAAC,eAAe;AACzB,cAAE,EAAE;AACJ,cAAE;AACA,gBAAA,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC;AACrB,gBAAA,KAAK,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;AACxB,gBAAA,WAAW,EAAE,IAAI;aAClB,CAAC;KACL;AAED;;AAEG;AACH,IAAA,IAAW,mBAAmB,GAAA;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;AACjC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;QAE/B,OAAO;YACL,MAAM,EAAE,IAAI,GAAG,KAAK;YACpB,KAAK;AACL,YAAA,WAAW,EAAE,IAAI;SAClB,CAAC;KACH;AAED,IAAA,IAAW,iBAAiB,GAAA;QAC1B,OAAO;YACL,GAAG,IAAI,CAAC,mBAAmB;AAC3B,YAAA,WAAW,EAAE,KAAK;SACnB,CAAC;KACH;AAED;;AAEG;AACH,IAAA,IAAW,sBAAsB,GAAA;QAC/B,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;AAClD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AAC/D,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;QAE7D,OAAO;YACL,MAAM;YACN,KAAK,EAAE,IAAI,CAAC,YAAY;SACzB,CAAC;KACH;AAED,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;KACrB;AAED,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IAED,IAAW,QAAQ,CAAC,QAA4B,EAAA;AAC9C,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,kBAAkB,CAAC,IAAI,GAAG,QAAQ,CAAC;KAChF;AAED;;AAEG;AACH,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,kBAAkB,CAAC,IAAI,CAAC;KAClD;AAED;;AAEG;AACH,IAAA,IAAW,iBAAiB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,kBAAkB,CAAC,MAAM,CAAC;KACpD;AAED;;AAEG;AACH,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,kBAAkB,CAAC,IAAI,CAAC;KAClD;AAED;;AAEG;AACH,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,kBAAkB,CAAC,IAAI,CAAC;KAClD;AAED;;;AAGG;AACH,IAAA,IAAY,WAAW,GAAA;AACrB,QAAA,QAAQ,IAAI,CAAC,QAAQ;YACnB,KAAK,kBAAkB,CAAC,IAAI;gBAC1B,OAAO,IAAI,CAAC,wBAAwB,CAAC;YACvC,KAAK,kBAAkB,CAAC,MAAM;gBAC5B,OAAO,IAAI,CAAC,0BAA0B,CAAC;YACzC,KAAK,kBAAkB,CAAC,IAAI;gBAC1B,OAAO,IAAI,CAAC,wBAAwB,CAAC;SACxC;AAED,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;AAEG;AACH,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,QAAQ,IAAI,CAAC,QAAQ;YACnB,KAAK,kBAAkB,CAAC,IAAI;gBAC1B,OAAO,IAAI,CAAC,wBAAwB,CAAC;YACvC,KAAK,kBAAkB,CAAC,MAAM;gBAC5B,OAAO,IAAI,CAAC,0BAA0B,CAAC;YACzC,KAAK,kBAAkB,CAAC,IAAI;AAC1B,gBAAA,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY,CAAC;SACnE;AAED,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;KACrC;AAED,IAAA,IAAW,aAAa,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;KACnC;AAED,IAAA,IAAW,mBAAmB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;KACzC;AAED,IAAA,IAAW,mBAAmB,GAAA;QAC5B,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,KAAK,OAAO,EAAG;AAChD,YAAA,OAAO,EAAE,CAAC;SACX;AAED,QAAA,OAAO,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU,SAAS,CAAC;KACxD;AAED,IAAA,IAAW,kBAAkB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;KACxC;AAED;;;;AAIG;AACH,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe;YACjC,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,aAAa,CAAC;AAErB,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;aACzB,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC;aAC1B,IAAI,CAAC,GAAG,CAAC,CAAC;KACd;AAED,IAAA,IAAW,UAAU,GAAA;AACnB,QAAA,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC;AAC/C,QAAA,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC;AAEzB,QAAA,IAAG,IAAI,CAAC,YAAY,KAAK,CAAC,EAAE;YAC1B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;SACjC;QAED,OAAO,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM;YACpC,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE;YACzC,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;KACvC;AAED,IAAA,IAAW,aAAa,GAAA;AACtB,QAAA,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC;AAC/C,QAAA,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC;AACzB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;AAE1D,QAAA,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;KACrB;AAED,IAAA,IAAW,KAAK,GAAA;QACd,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,WAAW,EAAE,IAAI,CAAC,YAAY;SAC/B,CAAC;KACH;IAEM,cAAc,CACnB,MAAwB,EACxB,QAAwC,EAAA;QAGxC,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,gBAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;aAC9B;AAED,YAAA,IAAI,MAAM,CAAC,KAAK,EAAE;AAChB,gBAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;aAC5B;AAED,YAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;SACjC;AAED,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;KAC5B;AAED;;AAEG;AACH,IAAA,IAAY,wBAAwB,GAAA;QAClC,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;KACzC;AAED;;AAEG;AACH,IAAA,IAAY,0BAA0B,GAAA;AACpC,QAAA,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;KACzD;AAED;;AAEG;AACH,IAAA,IAAY,wBAAwB,GAAA;AAClC,QAAA,OAAO,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;KACzB;AAED;;AAEG;AACH,IAAA,IAAY,wBAAwB,GAAA;AAClC,QAAA,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;KAClD;AAED;;AAEG;AACH,IAAA,IAAY,0BAA0B,GAAA;AACpC,QAAA,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;KAC1E;AAED;;AAEG;IACI,YAAY,CAAC,MAAM,EAAE,WAAA,GAAsB,CAAC,EAAE,iBAAiB,GAAG,KAAK,EAAA;QAC5E,IAAI,CAAC,iBAAiB,EAAE;AACtB,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACzB,YAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;SACjC;aAAM;AACL,YAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;YAE/B,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE;AACrC,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;aACnC;AAED,YAAA,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;SACvB;QAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;;;;;AAMD;;;;;;;;AAQG;AAEH;;AAEG;;;;;;;;;;;;;;;;;;;;;;;;;AA8BI,IAAA,WAAW,CAAC,MAAsC,EAAA;AACvD,QAAA,MAAM,cAAc,GAAG,OAAO,MAAM,KAAK,SAAS;AAChD,YAAA;gBACE,OAAO,EAAE,CAAC,CAAC,MAAM;AAClB,aAAA;aAEC,MAAM,KAAK,SAAS,GAAG,EAAE,GAAG;AAC1B,gBAAA,GAAG,MAAM;AACT,gBAAA,OAAO,EAAE,IAAI;AACd,aAAA,CACF,CAAC;QAEJ,IAAI,CAAC,eAAe,GAAG;AACrB,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,KAAK,EAAE,WAAW;AAClB,YAAA,UAAU,EAAE,OAAO;AACnB,YAAA,GAAG,cAAc;SAClB,CAAC;KACH;IAEM,cAAc,GAAA;QACnB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;AAED;;;;AAIG;AACI,IAAA,QAAQ,CAAC,KAAK,EAAA;AACnB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,WAAW,EAAE,CAAC;AAEnB,QAAA,IAAI,CAAC,aAAa;AACf,aAAA,IAAI,CAAC;YACJ,IAAI,EAAE,cAAc,CAAC,YAAY;AACjC,YAAA,OAAO,EAAE,KAAK;AACf,SAAA,CAAC,CAAC;KACN;AAED;;;;AAIG;AACI,IAAA,QAAQ,CAAC,IAAI,EAAA;AAClB,QAAA,OAAO,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC;KAC5B;AAED;;;;AAIG;AACI,IAAA,QAAQ,CAAC,IAAI,EAAA;QAClB,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;AACpC,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAElB,IAAI,CAAC,aAAa,EAAE,CAAC;AAErB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;gBACtB,IAAI,EAAE,cAAc,CAAC,OAAO;AAC5B,gBAAA,OAAO,EAAE,IAAI;AACd,aAAA,CAAC,CAAC;SACJ;KACF;AAED;;AAEG;IACI,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACf,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;KAClB;AAED;;AAEG;IACI,MAAM,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,aAAa,EAAE,CAAC;AAErB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;gBACtB,IAAI,EAAE,cAAc,CAAC,OAAO;gBAC5B,OAAO,EAAE,IAAI,CAAC,KAAK;AACpB,aAAA,CAAC,CAAC;SACJ;KACF;AAED;;AAEG;IACI,OAAO,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE;AAClB,YAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;YACf,IAAI,CAAC,aAAa,EAAE,CAAC;AAErB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;gBACtB,IAAI,EAAE,cAAc,CAAC,OAAO;gBAC5B,OAAO,EAAE,IAAI,CAAC,KAAK;AACpB,aAAA,CAAC,CAAC;SACJ;KACF;AAED;;AAEG;IACI,MAAM,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE;YAClB,IAAI,CAAC,KAAK,EAAE,CAAC;YAEb,IAAI,CAAC,aAAa,EAAE,CAAC;AAErB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;gBACtB,IAAI,EAAE,cAAc,CAAC,OAAO;gBAC5B,OAAO,EAAE,IAAI,CAAC,KAAK;AACpB,aAAA,CAAC,CAAC;SACJ;KACF;AAED;;AAEG;IACI,MAAM,GAAA;QACX,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;AAC7B,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YAExB,IAAI,CAAC,aAAa,EAAE,CAAC;AAErB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;gBACtB,IAAI,EAAE,cAAc,CAAC,OAAO;gBAC5B,OAAO,EAAE,IAAI,CAAC,KAAK;AACpB,aAAA,CAAC,CAAC;SACJ;KACF;AAED;;;;AAIG;AACI,IAAA,UAAU,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC;KAC5B;IAEM,gBAAgB,GAAA;QACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;AAED;;AAEG;IACI,OAAO,GAAA;AACZ,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;KAC7B;AAED;;;;AAIG;AACK,IAAA,WAAW,CAAC,MAAM,EAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;SAClC;AAED,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;KAChC;AAED;;AAEG;IACK,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;KAC/C;AAED;;AAEG;IACK,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;KACrD;AACF;;ACnlBD,MAAM,oBAAoB,GAAG,aAAa,CAAC;MAG9B,IAAI,CAAA;AA0DL,IAAA,GAAA,CAAA;AACA,IAAA,OAAA,CAAA;AACA,IAAA,gBAAA,CAAA;AACA,IAAA,MAAA,CAAA;AACA,IAAA,YAAA,CAAA;AACA,IAAA,SAAA,CAAA;AA7DH,IAAA,OAAO,CAAS;AAChB,IAAA,OAAO,CAAS;AAChB,IAAA,UAAU,CAAS;AACnB,IAAA,SAAS,CAAU;AACnB,IAAA,iBAAiB,CAAU;AAC3B,IAAA,aAAa,CAA6C;AAC1D,IAAA,eAAe,CAAQ;AACvB,IAAA,QAAQ,CAAC;AACT,IAAA,SAAS,CAAM;AACf,IAAA,OAAO,CAAsB;AAC7B,IAAA,OAAO,CAAmB;IAC1B,OAAO,GAAG,EAAE,CAAC;AACb,IAAA,YAAY,CAAW;AACvB,IAAA,cAAc,CAAW;AACzB,IAAA,YAAY,CAA4B;AACxC,IAAA,SAAS,CAAwB;AACjC,IAAA,UAAU,CAAyB;AACnC,IAAA,OAAO,CAAgB;AACvB,IAAA,aAAa,CAAsB;AACnC,IAAA,YAAY,CAAqB;AACjC,IAAA,gBAAgB,CAA2B;AAC3C,IAAA,SAAS,CAAoB;AAC7B,IAAA,KAAK,CAAC;AACN,IAAA,aAAa,CAAC;IACd,eAAe,GAAG,KAAK,CAAC;AACxB,IAAA,MAAM,CAAuB;AAC7B,IAAA,OAAO,CAAoB;AAC3B,IAAA,OAAO,CAAoB;AAC3B,IAAA,cAAc,CAAiB;AAC/B,IAAA,OAAO,CAAoB;AAC3B,IAAA,cAAc,CAA2B;AACzC,IAAA,SAAS,CAAsB;IAC/B,YAAY,GAAiB,IAAI,CAAC;IAClC,gBAAgB,GAA0B,IAAI,CAAC;IAC/C,MAAM,GAAG,IAAI,CAAC;IACd,KAAK,GAAG,KAAK,CAAC;IACd,UAAU,GAAG,KAAK,CAAC;IACnB,WAAW,GAAG,KAAK,CAAC;AACpB,IAAA,UAAU,CAAqB;IAC/B,YAAY,GAAG,IAAI,CAAC;IACpB,iBAAiB,GAAG,KAAK,CAAC;AAC1B,IAAA,kBAAkB,CAAmB;AAEpC,IAAA,SAAS,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AACvC,IAAA,eAAe,GAAG,IAAI,OAAO,EAAgC,CAAC;AAC9D,IAAA,cAAc,GAAG,IAAI,OAAO,EAAQ,CAAC;AACrC,IAAA,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;AAC1B,IAAA,aAAa,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAC3C,IAAA,OAAO,GAAG,IAAI,OAAO,EAAkC,CAAC;AAC/C,IAAA,aAAa,GAAG,IAAI,eAAe,CAAsB,IAAI,CAAC,CAAC;AAC/D,IAAA,aAAa,CAAc;AAC3B,IAAA,gBAAgB,CAAc;AAC9B,IAAA,WAAW,CAAc;AACzB,IAAA,aAAa,CAAc;IAE5C,WACU,CAAA,GAAe,EACf,OAAA,GAAwB,EAAE,EAC1B,gBAAiC,EACjC,MAAsB,EACtB,YAAmC,EACnC,SAAkB,EAAA;QALlB,IAAG,CAAA,GAAA,GAAH,GAAG,CAAY;QACf,IAAO,CAAA,OAAA,GAAP,OAAO,CAAmB;QAC1B,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAiB;QACjC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;QACtB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAuB;QACnC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAS;QAE1B,IAAI,CAAC,OAAO,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,iBAAiB,EAAE,CAAC;AACvC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,oBAAoB,EAAE,CAAC;AACzC,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;AAC3C,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAEvC,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,gBAAgB,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,aAAa,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;AAEjB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACnD,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACzB;KACF;AAED,IAAA,IAAW,QAAQ,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;KACtC;IAEM,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAChC;AAED,IAAA,IAAW,aAAa,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KAC3C;AAED,IAAA,IAAW,MAAM,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;KACpC;AAED,IAAA,IAAW,cAAc,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;KAC5C;AAED,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;KACzC;AAED,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;KACtC;AAED,IAAA,IAAW,aAAa,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;AACrC,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CACpB,CAAC;KACL;AAED,IAAA,IAAW,mBAAmB,GAAA;QAC5B,OAAO,IAAI,CAAC,aAAa;AACtB,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,CAAC,KAAI;AACR,YAAA,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;iBAClB,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,OAAO,CAAC,CAAC;AACtC,SAAC,CAAC,EACF,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EACpB,WAAW,EAAE,CACd,CAAC;KACL;AAED,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AAED,IAAA,IAAW,YAAY,GAAA;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;AAEM,IAAA,WAAW,CAAC,KAAK,EAAA;AACtB,QAAA,MAAM,OAAO,GAAuB;AAClC,YAAA,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS;SACrC,CAAC;QAEF,MAAM,MAAM,GAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAEjD,QAAA,OAAO,MAAM,YAAY,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;KAC1D;;;;;;;;AAUD;;;;AAIG;AACI,IAAA,0BAA0B,CAAC,SAAS,EAAA;AACzC,QAAA,MAAM,cAAc,GAAG;YACrB,MAAM,EAAE,IAAI,CAAC,aAAa;YAC1B,SAAS,EAAE,IAAI,CAAC,gBAAgB;YAChC,IAAI,EAAE,IAAI,CAAC,WAAW;YACtB,MAAM,EAAE,IAAI,CAAC,aAAa;SAC3B,CAAC;AAEF,QAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;;QAG1C,IAAI,CAAC,qBAAqB,EAAE,CAAC;;AAG7B,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC;QAC5D,MAAM,iBAAiB,GAAG,eAAe,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAC/D,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAE9C,IAAI,eAAe,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AAC9C,YAAA,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC;AAEzC,YAAA,OAAO,CAAC,IAAI,CAAC,+CAA+C,EAAE,eAAe,CAAC,CAAC;SAChF;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAEM,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAExB,OAAO,IAAI,CAAC,eAAe;AACxB,aAAA,YAAY,EAAE;aACd,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,KAAK,CAAC,CAAC,CAAC,CACT,CAAC;KACL;AAED;;AAEG;IACI,SAAS,GAAA;QACd,IAAI,CAAC,MAAM,CAAC,YAAY;AACrB,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,KAAiB,KAAI;YACxB,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;;AAGzD,YAAA,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;AAC7E,gBAAA,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;aACjC;AAED,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE;AACjC,gBAAA,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;AAE/B,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,oBAAA,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;oBACvE,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC5D,oBAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;iBAC9B;aACF;AACH,SAAC,CAAC,EACF,SAAS,CAAC,CAAC,KAAU,KAAI;AACvB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;AAChC,gBAAA,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;AAChF,qBAAA,IAAI,CAAC,CAAC,OAAO,KAAI;oBAChB,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAClD,iBAAC,CAAC,CAAC;AAEL,gBAAA,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC;gBAEhC,IAAI,CAAC,QAAQ,EAAE;oBACb,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;AAC5D,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,EAAE;AACrE,wBAAA,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC;qBACpB;iBACF;gBAED,OAAO,IAAI,CAAC,eAAe;AACxB,qBAAA,YAAY,EAAE;qBACd,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,MAAK;AACP,oBAAA,IAAG,KAAK,EAAE,cAAc,IAAI,IAAI,EAAE;wBAChC,EAAE,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;qBAC3C;iBACF,CAAC,CACH,CAAC;aACL;AAED,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;SACjB,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;AACA,aAAA,SAAS,EAAE,CAAC;QAEf,IAAI,CAAC,OAAO,CAAC,eAAe;AACzB,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;aACA,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACnD,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;AACrB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,SAAC,CAAC,CAAC;QAEL,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;AAEM,IAAA,OAAO,CAAC,OAAyB,EAAA;AACtC,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc;AAC/B,aAAA,eAAe,CAAC;QAEnB,IAAI,OAAO,EAAE;AACX,YAAA,QAAQ,GAAG,QAAQ;iBAChB,MAAM,CAAC,OAAO,CAAC,CAAC;SACpB;AAED,QAAA,OAAO,QAAQ;AACZ,aAAA,GAAG,CAAC,CAAC,IAAI,KAAI;AACZ,YAAA,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;AACzB,SAAC,CAAC,CAAC;KACN;AAEM,IAAA,OAAO,CAAC,OAAwB,EAAA;QACrC,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC1D;AAED;;;;AAIG;AACI,IAAA,YAAY,CAAC,KAAc,EAAA;QAChC,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,KAAK,KAAK,EAAE;AAC9C,YAAA,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,KAAK,CAAC;;;;SAK1C;KACF;IAEM,OAAO,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;SACvB;AAED,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;SACxB;AAED,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;SAC1B;AAED,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SAC1B;AAED,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;SAC/B;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AAEvB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AAE1B,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;KAC/B;AAED;;;;AAIG;AACK,IAAA,WAAW,CAAC,MAAoB,EAAA;AACtC,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC1B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACrC,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;;AAGO,IAAA,cAAc,CAAC,MAAoB,EAAA;AACzC,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,IAAI,IAAI,CAAC;AAC1D,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAC9B,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACpC,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC;AACvC,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAClC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAC9B,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC;AACpD,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC;AACtC,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,YAAY,CAAC;AAC1C,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACxC,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACpC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC;AACtC,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC;AACxC,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAClC,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KACxC;AAED;;;;AAIG;AACK,IAAA,mBAAmB,CAAC,MAAM,EAAA;;;AAGhC,QAAA,IAAI,MAAM,CAAC,YAAY,KAAK,KAAK,IAAI,MAAM,CAAC,UAAU,EAAE;AACtD,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;SAC3B;AACD,QAAA,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,EAAE;AAC3B,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SACrB;AACD,QAAA,IAAI,MAAM,CAAC,KAAK,EAAE;AAChB,YAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;SAC3B;AAED,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;SACzB;aAAM;YACL,IAAI,CAAC,UAAU,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS;AAChD,kBAAE,IAAI;AACN,kBAAE,MAAM,CAAC,UAAU,CAAC;SACvB;AAED,QAAA,IAAI,MAAM,CAAC,KAAK,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC5C;AACD,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACnB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACrB;AAED,QAAA,IAAI,MAAM,CAAC,gBAAgB,EAAE;AAC3B,YAAA,IAAI,CAAC,gBAAgB,GAAG,MAAK;AAC3B,gBAAA,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;AAC9E,aAAC,CAAC;SACH;KACF;AAED;;AAEG;IACK,YAAY,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,MAAM,aAAa,GAAG;AACpB,gBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,SAAS;AAC1C,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,KAAK,EAAE,CAAC,GAAG,KAAI;oBACb,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC9C,iBAAC;AACD,gBAAA,OAAO,EAAE,IAAI;aACd,CAAC;AAEF,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,gBAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;aACzB;AAED,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACvC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;YAElC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE;AACjC,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAChB,oBAAA,IAAI,EAAE,oBAAoB;oBAC1B,IAAI,EAAE,QAAQ,CAAC,QAAQ;AACvB,oBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,cAAc;AACjD,oBAAA,OAAO,EAAE,IAAI;AACd,iBAAA,CAAC,CAAC;aACJ;SACF;KAEF;AAED;;;;;AAKG;IACK,WAAW,CAAC,YAA8B,EAAE,QAAwC,EAAA;QAC1F,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;KACpD;AAED;;AAEG;AACK,IAAA,YAAY,CAAC,MAAM,EAAA;AACzB,QAAA,IAAI,MAAM,CAAC,OAAO,EAAE;YAClB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SACzC;QAED,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,KAAK,CAAC;AAEvD,QAAA,IAAI,CAAC,aAAa;YAChB,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;AACjD,oBAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KAChE;IAEO,cAAc,CACpB,eAAsC,EACtC,eAAgC,EAAA;QAEhC,IAAI,eAAe,EAAE;AACnB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,mBAAmB,CAAC,eAAe,EAAE,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AACzF,YAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;SACvE;KACF;IAEO,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC;AACvC,YAAA,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe;AAC7C,SAAA,CAAC,CAAC;KACJ;AAEO,IAAA,WAAW,CAAC,WAA8B,EAAA;QAChD,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;AAChD,YAAA,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,OAAO,CAAC;SAC5C;KACF;IAEO,6BAA6B,GAAA;QACnC,IAAI,CAAC,cAAc,GAAG,IAAI,wBAAwB,CAChD,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,UAAU,CAChB,CAAC;KACH;AAED;;AAEG;IACK,YAAY,GAAA;AAClB,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;;AAGzB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,MAAM,GAAG,aAAa,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAClD,iBAAA,IAAI,CACH,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,CAC1B,CAAC;SACL;QAED,MAAM;aACH,IAAI,CACH,YAAY,CAAC,EAAE,CAAC,EAChB,GAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,SAAC,CAAC,EACF,GAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,SAAS,EAAE,oBAAoB,EAAE,CAAC;AACzC,SAAC,CAAC,EACF,GAAG,CAAC,CAAC,MAA+B,KAAI;YACtC,IAAI,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAErC,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI,MAAM,EAAE,UAAU,EAAE;AACvD,gBAAA,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;aAClE;iBAAM;AACL,gBAAA,MAAM,qBAAqB,GAAG,CAAC,IAAI,CAAC,YAAY;AAC3C,uBAAA,IAAI,CAAC,cAAc,CAAC,SAAS,KAAK,WAAW,CAAC,MAAM,KACpD,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;gBAEjC,KAAK,GAAG,qBAAqB;AAC3B,oBAAA,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;oBAC/C,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aAC3C;AAED,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;AAC9B,gBAAA,MAAM,CAAC,MAAM,CACX,KAAK,EACL;AACE,oBAAA,KAAK,EAAE,CAAG,EAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAE,CAAA;AACpF,iBAAA,CACF,CAAC;aACH;AAED,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;AAC3B,gBAAA,KAAK,GAAG;AACN,oBAAA,GAAG,KAAK;AACR,oBAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB;iBAC1C,CAAC;aACH;AAED,YAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;SAC1B,CAAC,EACF,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAI;AAC9B,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;AAChC,gBAAA,OAAO,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE;qBAC1C,IAAI,CACH,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CACzB,CAAC;aACL;YAED,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;SAC9B,CAAC,EACF,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAI;AAC9B,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,gBAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;qBAC7B,IAAI,CACH,GAAG,CAAC,CAAC,gBAAgB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC,EAChE,UAAU,CAAC,CAAC,KAAK,KAAI;AACnB,oBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAErB,oBAAA,OAAO,KAAK,CAAC;iBACd,CAAC,CACH,CAAC;aACL;YAED,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;SAC9B,CAAC,EACF,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAI;AAC9B,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACxC,iBAAA,IAAI,CACH,UAAU,CAAC,CAAC,KAAK,KAAI;AACnB,gBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAE3B,gBAAA,OAAO,KAAK,CAAC;aACd,CAAC,CACH,CAAC;AAEJ,YAAA,OAAO,aAAa,CAAM,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;AAClE,SAAC,CAAC,EACF,UAAU,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACrB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAE3B,YAAA,OAAO,KAAK,CAAC;SACd,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;aACA,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC,KAAI;AACrC,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,YAAA,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACvE,SAAC,CAAC,CAAC;KACN;IAEO,iBAAiB,GAAA;QACvB,IAAI,CAAC,cAAc,CAAC,YAAY;AAC7B,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;AACA,aAAA,SAAS,CAAC,CAAC,IAAW,KAAI;AACzB,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AAEvB,gBAAA,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;AAEjC,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;AAC/B,oBAAA,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;iBAC5C;qBAAM;;AAEL,oBAAA,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;wBAC1D,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAEvD,wBAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;wBACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;qBACzC;yBAAM;AACL,wBAAA,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;qBAC5C;iBACF;aACF;;AAGD,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,gBAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;oBACnB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrC,iBAAC,CAAC,CAAC;aACJ;AACH,SAAC,CAAC,CAAC;KACN;AAED;;;AAGG;IACK,2BAA2B,GAAA;QACjC,IAAI,CAAC,OAAO,CAAC,eAAe;AACzB,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;aACA,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC/B,SAAC,CAAC,CAAC;KACN;AAED;;AAEG;IACK,YAAY,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,OAAO;SACR;AAED,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;cACzC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE;cAC3F,IAAI,CAAC;;;;;QAMT,IAAI,CAAC,YAAY,GAAG;YAClB,GAAG,IAAI,CAAC,gBAAgB;AACxB,YAAA,KAAK,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;YACzB,YAAY,EAAE,IAAI,CAAC,YAAY;AAC/B,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;AACzB,YAAA,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YACjC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YACrC,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI;kBAChC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,kBAAE,SAAS;YACb,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YACvC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC;AAEF,QAAA,IAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE;AACjC,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,GAAI;AAC3B,gBAAA,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;aAC7B,CAAC;SACH;KACF;AAED;;;;AAIG;AACK,IAAA,WAAW,CAAC,KAAK,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;SAC1B;AAED,QAAA,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAEzC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE/B,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;AAED;;;;;AAKG;IACK,aAAa,CAAC,KAAK,EAAE,IAAI,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;SAClC;AAED,QAAA,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAEzC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE/B,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACvC,IAAI,CAAC,MAAM,EAAE,CAAC;SACf;QAED,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;;AAGrD,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACzB;AAED;;;;;;;;AAQG;IACK,aAAa,CAAC,KAAK,EAAE,IAAI,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;SAClC;AAED,QAAA,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAEzC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE/B,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;AAEO,IAAA,oBAAoB,CAAC,KAAK,EAAA;AAChC,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;;QAEzB,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,oBAAoB,CAAC,EAAE;AAC/C,YAAA,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;iBACvB,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,oBAAoB,CAAC;AAC7C,iBAAA,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAI;gBACnB,OAAO;AACL,oBAAA,GAAG,GAAG;AACN,oBAAA,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;iBAClB,CAAC;aACH,EAAE,EAAE,CAAC,CAAC;AAET,YAAA,KAAK,GAAG;AACN,gBAAA,GAAG,KAAK;AACR,gBAAA,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK;aACtB,CAAC;AAEF,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SACzB;AAED,QAAA,OAAO,KAAK,CAAC;KACd;;IAGO,WAAW,CAAC,WAAW,EAAE,UAAU,EAAA;QACzC,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAEpD,YAAA,MAAM,aAAa,GAAG,UAAU,CAAC,SAAS,KAAK,KAAK,GAAG,gBAAgB,CAAC,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC;AACpG,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;SAC3C;aAAM;;AAEL,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;YACvC,IAAI,CAAC,MAAM,EAAE,CAAC;SACf;KACF;AAEO,IAAA,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAA;AAC5C,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;SACtB;AAED,QAAA,IAAI,QAAQ,CAAC,MAAM,EAAE;YACnB,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;YAChF,IAAI,CAAC,MAAM,CAAC,YAAY,CACtB,QAAQ,CAAC,MAAM,EACf,WAAW,EACX,IAAI,CAAC,cAAc,CAAC,SAAS,KAAK,WAAW,CAAC,QAAQ,CACvD,CAAC;SACH;AAAM,aAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AAC9B,YAAA,OAAO,CAAC,GAAG,CACT,oBAAoB,EACpB,yCAAyC,EACzC,2CAA2C;gBAC3C,4EAA4E;AAC5E,gBAAA,8EAA8E,CAC/E,CAAC;SACH;;QAGD,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;AAGvD,QAAA,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC;QAE5C,IAAI,IAAI,CAAC,UAAU,EAAE,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACxD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC;SAC1G;AAED,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;SAC/D;;QAGD,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;AAC3C,eAAA,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;eACpB,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EACvC;AACA,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;SACtB;AAED,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;AACtE,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5B;AAEO,IAAA,4BAA4B,CAAC,QAAQ,EAAA;;AAE3C,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACvB,gBAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;AAC7B,gBAAA,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;gBACvE,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;aAC7D;iBAAM;gBACL,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO;AACnD,uBAAA,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;AAE1D,gBAAA,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;AAChD,gBAAA,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;aAC/C;YAED,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;SAC9E;KACF;AAED;;;;;;;AAOG;AACK,IAAA,uBAAuB,CAAC,YAAY,EAAA;AAC1C,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;YAChC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE;AACxB,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;aACjD;iBAAM;gBACL,IAAI,CAAC,MAAM,EAAE,CAAC;aACf;SACF;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,YAAY,CAAC;AACpC,QAAA,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAE/B,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;YACjD,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;YAC/E,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SAC7D;KACF;AAED;;;;;;;AAOG;IACK,aAAa,CAAC,oBAAoB,EAAE,GAAG,EAAA;AAC7C,QAAA,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;AAErD,QAAA,IAAI,kBAAkB,YAAY,UAAU,EAAE;YAC5C,kBAAkB;AACf,iBAAA,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;AACA,iBAAA,SAAS,CAAC;AACT,gBAAA,IAAI,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE;AAC1B,aAAA,CAAC,CAAC;SACN;KACF;IAEO,qBAAqB,GAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,OAAO;AACjB,aAAA,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC;AACrD,aAAA,OAAO,CAAC,CAAC,MAAM,KAAI;AAClB,YAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACzC,SAAC,CAAC,CAAC;KACN;AACF;;MCl+BY,sBAAsB,CAAA;uGAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mCAAmC;AAC7C,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;MCIY,mBAAmB,CAAA;AAEd,IAAA,OAAO,CAAC;AACR,IAAA,KAAK,CAAS;AACP,IAAA,SAAS,CAAoB;AACpD;;;AAGG;AACyB,IAAA,OAAO,CAAK;AAGxC;;;AAGG;;;;;AAMH;;;AAGG;AACa,IAAA,YAAY,CAAmB;AAExC,IAAA,OAAO,sBAAsB,CAClC,SAAiC,EACjC,OAAgB,EAAA;AAWhB,QAAA,OAAO,IAAI,CAAC;KACb;uGAzCU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,CAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,SAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;8BAGiB,OAAO,EAAA,CAAA;sBAAtB,KAAK;gBACU,KAAK,EAAA,CAAA;sBAApB,KAAK;gBACiB,SAAS,EAAA,CAAA;sBAA/B,KAAK;uBAAC,OAAO,CAAA;gBAKc,OAAO,EAAA,CAAA;sBAAlC,KAAK;uBAAC,YAAY,CAAA;gBAgBH,YAAY,EAAA,CAAA;sBAA3B,KAAK;;;MC5BK,qBAAqB,CAAA;AAChB,IAAA,OAAO,CAAC;AACR,IAAA,KAAK,CAAS;AACP,IAAA,SAAS,CAAoB;uGAHzC,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,CAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;8BAEiB,OAAO,EAAA,CAAA;sBAAtB,KAAK;gBACU,KAAK,EAAA,CAAA;sBAApB,KAAK;gBACiB,SAAS,EAAA,CAAA;sBAA/B,KAAK;uBAAC,OAAO,CAAA;;;MCHH,0BAA0B,CAAA;AAE7B,IAAA,qBAAqB,GAAG,IAAI,OAAO,EAAE,CAAC;AACtC,IAAA,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;AAElC,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CACpC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B,CAAA;KACF;AACM,IAAA,kBAAkB,CAAC,OAAY,EAAA;AACpC,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC1C;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;uGAjBU,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAA1B,0BAA0B,EAAA,CAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;;;MCGE,iCAAiC,CAAA;AACpC,IAAA,eAAe,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAItD,IAAA,KAAK,CAAC,KAAK,EAAA;QAChB,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACnD;AAGM,IAAA,GAAG,CAAC;uGAZA,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAjC,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAJ7C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;8BAMQ,KAAK,EAAA,CAAA;sBADX,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAQ1B,GAAG,EAAA,CAAA;sBADT,KAAK;;;ACVF,MAAO,0BAA2B,SAAQ,mBAAmB,CAAA;uGAAtD,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;;ACCK,MAAO,0BAA2B,SAAQ,mBAAmB,CAAA;uGAAtD,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,6CAA6C;AACvD,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;;MCFY,qBAAqB,CAAA;AAChB,IAAA,OAAO,CAAC;AACR,IAAA,KAAK,CAAS;AACP,IAAA,SAAS,CAAoB;uGAHzC,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,CAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;8BAEiB,OAAO,EAAA,CAAA;sBAAtB,KAAK;gBACU,KAAK,EAAA,CAAA;sBAApB,KAAK;gBACiB,SAAS,EAAA,CAAA;sBAA/B,KAAK;uBAAC,OAAO,CAAA;;;MCeH,qBAAqB,CAAA;;AAIzB,IAAA,cAAc,CAAmB;AAGjC,IAAA,aAAa,CAAa;;AAI1B,IAAA,mBAAmB,CAAmB;AAGtC,IAAA,kBAAkB,CAAa;;AAI/B,IAAA,mBAAmB,CAAmB;AAGtC,IAAA,kBAAkB,CAAa;;AAI/B,IAAA,aAAa,CAA+C;;AAI5D,IAAA,YAAY,CAAmB;AAG/B,IAAA,WAAW,CAAa;;AAIxB,IAAA,cAAc,CAAmB;AAGjC,IAAA,aAAa,CAAa;AAEhB,IAAA,iBAAiB,GAAG,IAAI,gBAAgB,EAAE,CAAC;AAE5D,IAAA,WAAA,GAAA,GAAgB;AAEhB,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KAC/B;IAED,IACW,OAAO,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,KAAK,CAAC;KACxC;IAED,IACW,KAAK,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC;KACtC;IAED,IACW,IAAI,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,GAAG,KAAK,CAAC;KACrC;IAED,IACW,YAAY,CAAC,KAAc,EAAA;AACpC,QAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,GAAG,KAAK,CAAC;KAC7C;IAED,IACW,QAAQ,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,GAAG,KAAK,CAAC;KACzC;IAED,IACW,eAAe,CAAC,KAAc,EAAA;AACvC,QAAA,IAAI,CAAC,iBAAiB,CAAC,eAAe,GAAG,KAAK,CAAC;KAChD;IAED,IACW,iBAAiB,CAAC,KAAqB,EAAA;AAChD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,KAAK,CAAC;KAC1C;AAED;;AAEG;IACH,IACW,SAAS,CAAC,KAAqB,EAAA;AACxC,QAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,KAAK,CAAC;KAC1C;IAED,IACW,KAAK,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC;KACtC;IAED,IACW,KAAK,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC;KACtC;IAED,IACW,SAAS,CAAC,KAAwB,EAAA;AAC3C,QAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,KAAK,CAAC;KAC1C;uGA1GU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAGlB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,MAAA,EAAA,SAAA,CAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,CAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,qBAAqB,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,EAG1C,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,qBAAqB,EAIrB,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,0BAA0B,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,EAG/C,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,0BAA0B,oGAI1B,0BAA0B,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,WAAW,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAG/C,0BAA0B,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAQ1B,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,WAAW,EAGxC,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,mBAAmB,EAInB,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,qBAAqB,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,EAG1C,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,qBAAqB,iFAdlB,iCAAiC,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAxBvC,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;wDAKQ,cAAc,EAAA,CAAA;sBADpB,YAAY;uBAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAIjE,aAAa,EAAA,CAAA;sBADnB,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,qBAAqB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAK9C,mBAAmB,EAAA,CAAA;sBADzB,YAAY;uBAAC,0BAA0B,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAItE,kBAAkB,EAAA,CAAA;sBADxB,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,0BAA0B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAKnD,mBAAmB,EAAA,CAAA;sBADzB,YAAY;uBAAC,0BAA0B,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAItE,kBAAkB,EAAA,CAAA;sBADxB,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,0BAA0B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAKnD,aAAa,EAAA,CAAA;sBADnB,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,iCAAiC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;gBAKlE,YAAY,EAAA,CAAA;sBADlB,YAAY;uBAAC,mBAAmB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAI/D,WAAW,EAAA,CAAA;sBADjB,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,mBAAmB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAK5C,cAAc,EAAA,CAAA;sBADpB,YAAY;uBAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAIjE,aAAa,EAAA,CAAA;sBADnB,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,qBAAqB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAY1C,OAAO,EAAA,CAAA;sBADjB,KAAK;uBAAC,MAAM,CAAA;gBAMF,KAAK,EAAA,CAAA;sBADf,KAAK;gBAMK,IAAI,EAAA,CAAA;sBADd,KAAK;gBAMK,YAAY,EAAA,CAAA;sBADtB,KAAK;gBAMK,QAAQ,EAAA,CAAA;sBADlB,KAAK;gBAMK,eAAe,EAAA,CAAA;sBADzB,KAAK;gBAMK,iBAAiB,EAAA,CAAA;sBAD3B,KAAK;gBAUK,SAAS,EAAA,CAAA;sBADnB,KAAK;gBAMK,KAAK,EAAA,CAAA;sBADf,KAAK;gBAMK,KAAK,EAAA,CAAA;sBADf,KAAK;gBAMK,SAAS,EAAA,CAAA;sBADnB,KAAK;uBAAC,OAAO,CAAA;;;MCxHH,0BAA0B,CAAA;AAG9B,IAAA,mBAAmB,CAAW;AAErC,IAAA,WAAA,GAAA,GAAgB;IAET,eAAe,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC5B;KACF;uGAXU,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,mBAAA,EAAA,CAAA,mBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;wDAIQ,mBAAmB,EAAA,CAAA;sBADzB,KAAK;uBAAC,mBAAmB,CAAA;;;MCHf,yBAAyB,CAAA;uGAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;;MCFY,cAAc,GAAG,IAAI,cAAc,CAAQ,gBAAgB;;MCkB3D,qBAAqB,CAAA;IAEzB,iBAAiB,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACjC,MAAM,GAAG,EAAE,CAAC;AAEH,IAAA,OAAO,CAAC;AAGjB,IAAA,WAAW,CAAS;IAEpB,IAAI,GAAG,EAAE,CAAC;IACV,IAAI,GAAG,EAAE,CAAC;IAEV,QAAQ,GAAA;QAEb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;AACxE,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AAChC,QAAA,KAAK,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAChC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,EAAE,GAAG,GAAG,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;SAC1D;AAED,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1B,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;aAChD;SACF;KACF;AAEM,IAAA,WAAW,CAAC,OAAsB,EAAA;AACvC,QAAA,IAAI,OAAO,CAAC,WAAW,EAAE;YACvB,IAAI,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACzC;KACF;uGAhCU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,2JCrBlC,6oBAsBA,EAAA,MAAA,EAAA,CAAA,mIAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDDa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,mBAGT,uBAAuB,CAAC,MAAM,EACnC,UAAA,EAAA,IAAI,WACP,EAAE,EAAA,QAAA,EAAA,6oBAAA,EAAA,MAAA,EAAA,CAAA,mIAAA,CAAA,EAAA,CAAA;8BAOG,OAAO,EAAA,CAAA;sBAAtB,KAAK;gBAGC,WAAW,EAAA,CAAA;sBADjB,KAAK;;;MEAK,qBAAqB,CAAA;AAEhB,IAAA,UAAU,CAAuB;AACjC,IAAA,IAAI,CAAC;IAEd,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;KAC3B;IAEM,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;KAC1B;IAEM,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;KAC1B;IAEM,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;KAC1B;uGAnBU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5BlC,88HAkIc,EAAA,MAAA,EAAA,CAAA,2YAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED7GV,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,SAAS,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,SAAS,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACP,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGL,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAdjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,mBAGb,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EACP,OAAA,EAAA;wBACT,gBAAgB;wBAChB,SAAS;wBACT,SAAS;wBACT,OAAO;wBACP,cAAc;AACjB,qBAAA,EAAA,QAAA,EAAA,88HAAA,EAAA,MAAA,EAAA,CAAA,2YAAA,CAAA,EAAA,CAAA;8BAIiB,UAAU,EAAA,CAAA;sBAAzB,KAAK;gBACU,IAAI,EAAA,CAAA;sBAAnB,KAAK;;;MEYK,iBAAiB,CAAA;AAEZ,IAAA,IAAI,CAAO;AACX,IAAA,IAAI,CAAQ;AAKrB,IAAA,SAAS,CAAU;IAEnB,kBAAkB,GAAG,kBAAkB,CAAC;AACxC,IAAA,MAAM,CAAuB;AAC7B,IAAA,OAAO,CAAoB;AAC3B,IAAA,IAAI,GAGL;AACF,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,KAAK,EAAE,CAAC;KACT,CAAC;AAEI,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;AAChC,IAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAEpC,QAAQ,GAAA;QACb,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,eAAe;AACzB,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;aACA,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;AAC7B,SAAC,CAAC,CAAC;QAEL,IAAI,CAAC,IAAI,CAAC,aAAa;AACpB,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;aACA,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC1B,YAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;AAC7B,SAAC,CAAC,CAAC;KACN;IAEM,SAAS,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;AACpB,YAAA,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY;AACzB,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,WAAW,EAAE,IAAI;SAClB,CAAC;AACC,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,QAAQ,KAAI;AACf,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,CAAC;AAChD,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;AAC9B,SAAC,CAAC,EACF,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC1B,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAEvB,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;SACjB,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B;aACA,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;AAC7B,SAAC,CAAC,CAAC;KACN;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;IAEM,eAAe,GAAA;QACpB,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,KAAK,KAAK,EAAE;YAClD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;SACnD;aAAM;YACL,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;SAClD;KACF;AAEM,IAAA,iBAAiB,CAAC,MAAM,EAAA;QAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,MAAM,EAAE;AACzC,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SAC7B;KACF;AAEM,IAAA,QAAQ,CAAC,KAAK,EAAA;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC7B;uGA5FU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,gBAAA,EAAA,+BAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3C9B,s2GAiHc,EAAA,MAAA,EAAA,CAAA,qQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED7EV,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,kBAAkB,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACZ,WAAW,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,CAAA,CAAA;;2FAGF,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAf7B,SAAS;+BACE,gBAAgB,EAAA,eAAA,EAGT,uBAAuB,CAAC,MAAM,uBAC1B,IAAI,EAAA,UAAA,EACb,IAAI,EACP,OAAA,EAAA;wBACP,gBAAgB;wBAChB,UAAU;wBACV,kBAAkB;wBAClB,YAAY;wBACZ,WAAW;AACd,qBAAA,EAAA,QAAA,EAAA,s2GAAA,EAAA,MAAA,EAAA,CAAA,qQAAA,CAAA,EAAA,CAAA;8BAIiB,IAAI,EAAA,CAAA;sBAAnB,KAAK;gBACU,IAAI,EAAA,CAAA;sBAAnB,KAAK;gBAKC,SAAS,EAAA,CAAA;sBAHf,KAAK;;sBACL,WAAW;uBAAC,kBAAkB,CAAA;;sBAC9B,WAAW;uBAAC,+BAA+B,CAAA;;;ME2BjC,eAAe,CAAA;AAEnB,IAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAEhB,WAAW,GAAG,IAAI,CAAC;AAGjD,IAAA,iBAAiB,CAAU;IAElC,IACW,MAAM,CAAC,MAA0B,EAAA;AAC1C,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;KAC9B;IAGM,WAAW,GAAG,CAAC,CAAC;AAEf,IAAA,iBAAiB,CAAW;AAC5B,IAAA,sBAAsB,CAAW;AAEzC;;;AAGG;IACH,IACW,WAAW,CAAC,KAAc,EAAA;AACnC,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,4BAA4B,EAAE,CAAC;KACrC;AAED,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,iBAAiB,KAAK,SAAS,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,CAAC;KACpG;;AAGD,IAAA,IAAW,gBAAgB,GAAA;QACzB,OAAO,IAAI,CAAC,iBAAmD,CAAC;KACjE;AAGM,IAAA,YAAY,GAAG,IAAI,YAAY,EAAQ,CAAC;AAGxC,IAAA,eAAe,CAAmB;AAGlC,IAAA,IAAI,CAAkB;AAEtB,IAAA,IAAI,CAAO;;AAGX,IAAA,UAAU,GAAG,IAAI,YAAY,EAAE,CAAC;IAChC,SAAS,GAAG,IAAI,CAAC;AAEhB,IAAA,qBAAqB,CAAmC;;AAExD,IAAA,iBAAiB,CAAsB;AACvC,IAAA,UAAU,CAAkB;IAC5B,kBAAkB,GAAG,KAAK,CAAC;AAC3B,IAAA,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAC;AACzB,IAAA,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC7B,OAAO,GAAG,MAAM,CAAe,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACnE,IAAA,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACzB,IAAA,gBAAgB,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AAC3C,IAAA,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAC5B,IAAA,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACnC,IAAA,oBAAoB,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAC1D,IAAA,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAChC,IAAA,YAAY,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAErD,IACW,eAAe,CAAC,SAAS,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,sBAAsB,EAAE,CAAC;KAC/B;AAED;;;AAGG;IACH,IACW,eAAe,CAAC,oBAAsD,EAAA;AAC/E,QAAA,IAAI,CAAC,qBAAqB,GAAG,oBAAoB,CAAC;AAClD,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,oBAAoB,CAAC,CAAC;SAC5D;QACD,IAAI,CAAC,4BAA4B,EAAE,CAAC;KACrC;IAED,IACY,mBAAmB,CAAC,QAA0B,EAAA;AACxD,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC;SACzC;KACF;IAEO,UAAU,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,UAAU,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAE3D;;AAEG;AACH,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IAED,IAAW,YAAY,CAAC,KAAc,EAAA;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;KAC/B;AAED,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;KAC9C;AAED,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM;AACrB,aAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AACzD,aACE,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO;AAC/B,iBAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAClE,CAAC;KACL;AAED,IAAA,IAAW,gBAAgB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;eAC1B,CAAC,IAAI,CAAC,SAAS;AACf,eAAA,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB;AAC5B,eAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,GAAG,CAAC;eAC7C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;KACjC;AAED,IAAA,IAAW,YAAY,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;KAC/B;AAED,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;KAC/B;IAEM,kBAAkB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACvB,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SAC3B;KACF;IAEM,QAAQ,GAAA;QACb,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,mCAAmC,EAAE,CAAC;KAC5C;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;SACrB;AAED,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KAC1B;IAEM,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;KAC3B;IAEM,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;KAC3B;IAEM,SAAS,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;KAC5B;IAEM,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;KAC3B;IAEM,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;AAExB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc;aAC5B,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,KAAK,CAAC,CAAC,CAAC,CACT,CAAC;KACL;AAEM,IAAA,OAAO,CAAC,OAAyB,EAAA;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KACnC;AAEM,IAAA,OAAO,CAAC,OAAwB,EAAA;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KACnC;IAEM,UAAU,CACf,IAA6C,EAC7C,OAAkC,EAAA;AAElC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KAC3D;AAEM,IAAA,qBAAqB,CAAC,MAA6B,EAAA;QACxD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;KAC1C;IAEM,qBAAqB,GAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;KACpC;IAEM,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;KACvC;IAEM,gBAAgB,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;KACxC;AAEM,IAAA,UAAU,CAAC,IAAwE,EAAA;QACxF,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KAClD;AAEM,IAAA,UAAU,CAAC,OAAe,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;KAC7B;AAEM,IAAA,aAAa,CAAC,UAAkB,EAAA;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;KACnC;IAEM,YAAY,GAAA;AACjB,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;KACxC;IAEM,aAAa,GAAA;AAClB,QAAA,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC;KACzC;AAEM,IAAA,UAAU,CAAC,OAAuB,EAAA;QACvC,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SACvC;KACF;IAEM,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,sBAAsB,EAAE,CAAC;KAC/B;AAED;;AAEG;IACI,gBAAgB,CAAC,IAAY,EAAE,IAAa,EAAA;QACjD,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;KAC1C;AAED;;AAEG;AACI,IAAA,iBAAiB,CAAC,OAA0C,EAAA;QACjE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;KACpD;AAED,IAAA,IAAW,eAAe,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;KAC1C;IAEO,sBAAsB,GAAA;QAC5B,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC/C,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AACzB,YAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;SAC5B;KACF;AAED,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;KAC/C;AAED;;;;AAIG;AACK,IAAA,eAAe,CAAC,MAA0B,EAAA;AAChD,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;SACrB;AAED,QAAA,MAAM,aAAa,GAAuB;AACxC,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,MAAM,EAAE;gBACN,QAAQ,EAAE,kBAAkB,CAAC,MAAM;AACnC,gBAAA,KAAK,EAAE,EAAE;AACV,aAAA;AACD,YAAA,SAAS,EAAE;AACT,gBAAA,OAAO,EAAE,kBAAkB;AAC5B,aAAA;SACF,CAAC;QAEF,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;AACnD,QAAA,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAE/F,QAAA,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC;AACpC,QAAA,IAAI,CAAC,sBAAsB,GAAG,UAAU,CAAC,WAAW,CAAC;AAErD,QAAA,IAAI,UAAU,CAAC,OAAO,KAAK,KAAK,EAAE;AAChC,YAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SAC9C;AAED,QAAA,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAEhD,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAClB,IAAI,CAAC,GAAG,EACR,UAAU,EACV,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,QAAQ,CACd,CAAC;QAEF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;QAErD,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,IAAI,CAAC,iBAAiB,CAAC,cAAc,CACnC,MAAM,CAAC,OAAO,EACd,IAAI,CAAC,IAAI,CAAC,cAAc,EACxB,IAAI,CAAC,IAAI,CAAC,OAAO,EACjB,IAAI,CAAC,IAAI,CAAC,SAAS,CACpB,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC9B,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;SAClE;QACD,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,4BAA4B,EAAE,CAAC;KACrC;AAED;;;;AAIG;AACK,IAAA,sBAAsB,CAAC,OAAuB,EAAA;AACpD,QAAA,MAAM,eAAe,GAAG,OAAO,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC;QAEpE,IAAI,eAAe,EAAE;AACnB,YAAA,MAAM,aAAa,GAAG,eAAe,CAAC,KAAK,CAAC;AAE5C,YAAA,eAAe,CAAC,KAAK,GAAG,MAAK;gBAC3B,IAAI,aAAa,EAAE;oBACjB,aAAa,CAAC,IAAI,CAAC,CAAC;iBACrB;AAED,gBAAA,IAAI,CAAC,OAAO;qBACT,IAAI,CAAC,4BAA4B,EAAE;AAClC,oBAAA,SAAS,EAAE,KAAK;oBAChB,QAAQ,EAAE,IAAI,CAAC,SAAS;AACxB,oBAAA,IAAI,EAAE;AACJ,wBAAA,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB;AAC3C,wBAAA,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;AACrC,qBAAA;iBACF,CAAC;AACD,qBAAA,WAAW,EAAE;AACb,qBAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC7B,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CACzB;AACA,qBAAA,SAAS,CAAC,CAAC,IAAI,KAAI;oBAClB,IAAI,IAAI,EAAE;wBACR,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;AAChD,wBAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;qBAC5B;AACH,iBAAC,CAAC,CAAC;AACP,aAAC,CAAC;SACH;KACF;AAED;;AAEG;IACK,oBAAoB,GAAA;QAC1B,IAAI,CAAC,IAAI,CAAC,OAAO;aACd,eAAe;AACf,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC7B,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CACzB;AACA,aAAA,SAAS,CAAC,CAAC,IAAI,KAAI;YAClB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC1C,SAAC,CAAC,CAAC;KACN;IAEO,qBAAqB,GAAA;AAC3B,QAAA,IAAI,CAAC,UAAU;AACZ,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,aAAA,SAAS,CAAC,CAAC,GAAG,KAAI;YACjB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACzC,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW;iBACjC,OAAO,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;AAClD,SAAC,CAAC,CAAC;KACN;IAEO,mCAAmC,GAAA;QACzC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE;YACtC,IAAI,CAAC,oBAAoB,CAAC,mBAAmB;AAC1C,iBAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CACzB;AACA,iBAAA,SAAS,CAAC,CAAC,GAAG,KAAI;gBACjB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAC/C,aAAC,CAAC,CAAC;SACN;KACF;IAEO,cAAc,GAAA;QACpB,IAAI,CAAC,IAAI,CAAC,QAAQ;AACf,aAAA,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,EACzB,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC7B,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CACzB;aACA,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;AAC7B,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,sBAAsB,CAAC,QAAa,EAAA;AAC1C,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC3B,YAAA,OAAO,QAAQ,CAAC;SACjB;KACF;AAEO,IAAA,mBAAmB,CAAC,aAA+B,EAAA;QACzD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;KACtD;IAEO,4BAA4B,GAAA;QAClC,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC1D,OAAO;SACR;AAED,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;QAEhC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACzC,YAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC5E,YAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACnF,YAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACrF,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,qBAAqB,CAAC,GAAY,EAAE,MAAe,EAAE,UAA8B,EAAA;AACzF,QAAA,IAAI,EAAE,GAAG,YAAY,mBAAmB,CAAC,EAAE;YACzC,OAAO;SACR;AACD,QAAA,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,GAAG,CAAC,YAAY,KAAK,SAAS,EAAE;YAC/D,OAAO;SACR;AACD,QAAA,IAAI,MAAM,IAAI,IAAI,EAAE;AAClB,YAAA,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC;SACtB;aAAM;AACL,YAAA,GAAG,CAAC,YAAY,GAAG,UAAU,CAAC;SAC/B;KACF;uGApdU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EAxBf,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,6BAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;YACT,0BAA0B;YAC1B,qBAAqB;YACrB,iBAAiB;SAClB,EA8Da,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,sBAAsB,2BAAU,WAAW,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAgD3C,yBAAyB,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAW,kDAT3C,qBAAqB,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EApC3B,eAAe,EAyBf,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,eAAe,gDCnJ5B,42KA0Ic,EAAA,MAAA,EAAA,CAAA,69KAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED9EV,OAAO,EACP,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,oJAChB,eAAe,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,wBAAwB,EACxB,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,sBAAsB,8DACtB,iBAAiB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,0BAA0B,EAC1B,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,eAAe,uMACf,eAAe,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,4BAA4B,EAC5B,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,iBAAiB,8LACjB,qBAAqB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,qBAAqB,EACrB,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,0FACrB,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAGA,eAAe,EAAA,UAAA,EAAA,CAAA;kBA7B3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAGF,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;wBACT,0BAA0B;wBAC1B,qBAAqB;wBACrB,iBAAiB;AAClB,qBAAA,EAAA,UAAA,EACW,IAAI,EACP,OAAA,EAAA;wBACP,OAAO;wBACP,gBAAgB;wBAChB,eAAe;wBACf,wBAAwB;wBACxB,sBAAsB;wBACtB,iBAAiB;wBACjB,0BAA0B;wBAC1B,eAAe;wBACf,eAAe;wBACf,4BAA4B;wBAC5B,iBAAiB;wBACjB,qBAAqB;wBACrB,qBAAqB;wBACrB,qBAAqB;wBACrB,SAAS;AACV,qBAAA,EAAA,QAAA,EAAA,42KAAA,EAAA,MAAA,EAAA,CAAA,69KAAA,CAAA,EAAA,CAAA;8BAMoC,WAAW,EAAA,CAAA;sBAA/C,WAAW;uBAAC,eAAe,CAAA;gBAGrB,iBAAiB,EAAA,CAAA;sBADvB,WAAW;uBAAC,6BAA6B,CAAA;gBAI/B,MAAM,EAAA,CAAA;sBADhB,KAAK;uBAAC,QAAQ,CAAA;gBAMR,WAAW,EAAA,CAAA;sBADjB,KAAK;gBAWK,WAAW,EAAA,CAAA;sBADrB,KAAK;gBAgBC,YAAY,EAAA,CAAA;sBADlB,MAAM;gBAIA,eAAe,EAAA,CAAA;sBADrB,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,sBAAsB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;gBAIpD,IAAI,EAAA,CAAA;sBADV,SAAS;uBAAC,eAAe,CAAA;gBA0Bf,eAAe,EAAA,CAAA;sBADzB,SAAS;uBAAC,eAAe,CAAA;gBAYf,eAAe,EAAA,CAAA;sBADzB,eAAe;uBAAC,qBAAqB,CAAA;gBAU1B,mBAAmB,EAAA,CAAA;sBAD9B,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,yBAAyB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;;;AErKhE;;;;AAIG;MAMU,+BAA+B,CAAA;AAE1B,IAAA,OAAO,CAAK;uGAFjB,+BAA+B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAA/B,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAL3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,mBAAmB;AAC9B,iBAAA,CAAA;8BAGiB,OAAO,EAAA,CAAA;sBAAtB,KAAK;;;MCRK,sBAAsB,CAAA;uGAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;;MCsFY,YAAY,CAAA;AAChB,IAAA,OAAO,OAAO,CAAC,MAAA,GAAuB,EAAE,EAAA;QAC7C,OAAO;AACL,YAAA,QAAQ,EAAE,YAAY;AACtB,YAAA,SAAS,EAAE;AACT,gBAAA,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE;AAC9C,aAAA;SACF,CAAC;KACH;uGARU,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAnDrB,eAAe;YACf,cAAc;YACd,qBAAqB;YACrB,0BAA0B;YAC1B,wBAAwB;YACxB,eAAe;YACf,oBAAoB;YACpB,qBAAqB;YACrB,iBAAiB;YACjB,qBAAqB;YACrB,eAAe;YACf,mBAAmB;YACnB,eAAe;YACf,iBAAiB;YACjB,qBAAqB;YACrB,qBAAqB;YACrB,mBAAmB;YACnB,+BAA+B;YAC/B,qBAAqB;YACrB,qBAAqB;YACrB,0BAA0B;YAC1B,0BAA0B;YAC1B,iCAAiC;YACjC,4BAA4B;YAC5B,2BAA2B;YAC3B,yBAAyB;YACzB,sBAAsB;YACtB,0BAA0B;YAC1B,sBAAsB;YACtB,4BAA4B;AAC5B,YAAA,eAAe,aAGf,eAAe;YACf,cAAc;YACd,eAAe;YACf,qBAAqB;YACrB,qBAAqB;YACrB,mBAAmB;YACnB,+BAA+B;YAC/B,qBAAqB;YACrB,qBAAqB;YACrB,0BAA0B;YAC1B,0BAA0B;YAC1B,iCAAiC;YACjC,yBAAyB;YACzB,sBAAsB;YACtB,sBAAsB;YACtB,4BAA4B,CAAA,EAAA,CAAA,CAAA;AAGnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,YAnDrB,eAAe;YACf,cAAc;YACd,qBAAqB;YACrB,0BAA0B;YAC1B,wBAAwB;YAIxB,iBAAiB;YAEjB,eAAe;YACf,mBAAmB;YACnB,eAAe;YAEf,qBAAqB;YAerB,4BAA4B,CAAA,EAAA,CAAA,CAAA;;2FAsBnB,YAAY,EAAA,UAAA,EAAA,CAAA;kBArDxB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,eAAe;wBACf,cAAc;wBACd,qBAAqB;wBACrB,0BAA0B;wBAC1B,wBAAwB;wBACxB,eAAe;wBACf,oBAAoB;wBACpB,qBAAqB;wBACrB,iBAAiB;wBACjB,qBAAqB;wBACrB,eAAe;wBACf,mBAAmB;wBACnB,eAAe;wBACf,iBAAiB;wBACjB,qBAAqB;wBACrB,qBAAqB;wBACrB,mBAAmB;wBACnB,+BAA+B;wBAC/B,qBAAqB;wBACrB,qBAAqB;wBACrB,0BAA0B;wBAC1B,0BAA0B;wBAC1B,iCAAiC;wBACjC,4BAA4B;wBAC5B,2BAA2B;wBAC3B,yBAAyB;wBACzB,sBAAsB;wBACtB,0BAA0B;wBAC1B,sBAAsB;wBACtB,4BAA4B;wBAC5B,eAAe;AAChB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,eAAe;wBACf,cAAc;wBACd,eAAe;wBACf,qBAAqB;wBACrB,qBAAqB;wBACrB,mBAAmB;wBACnB,+BAA+B;wBAC/B,qBAAqB;wBACrB,qBAAqB;wBACrB,0BAA0B;wBAC1B,0BAA0B;wBAC1B,iCAAiC;wBACjC,yBAAyB;wBACzB,sBAAsB;wBACtB,sBAAsB;wBACtB,4BAA4B;AAC7B,qBAAA;AACF,iBAAA,CAAA;;;ACtFD;;;;;;;;AAQG;AAEG,MAAgB,wBAAkC,SAAQ,mBAAsB,CAAA;uGAAhE,wBAAwB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAxB,wBAAwB,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAD7C,SAAS;;;ACbV;;AAEG;;;;"}
|