@fundamental-ngx/platform 0.58.0-rc.8 → 0.58.0-rc.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.
Files changed (46) hide show
  1. package/approval-flow/index.d.ts +2 -0
  2. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs +14 -11
  3. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
  4. package/fesm2022/fundamental-ngx-platform-form.mjs +65 -17
  5. package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
  6. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +125 -12
  7. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
  8. package/fesm2022/fundamental-ngx-platform-list.mjs +1 -3
  9. package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
  10. package/fesm2022/fundamental-ngx-platform-menu.mjs.map +1 -1
  11. package/fesm2022/fundamental-ngx-platform-message-popover.mjs +1 -2
  12. package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
  13. package/fesm2022/fundamental-ngx-platform-page-footer.mjs +2 -2
  14. package/fesm2022/fundamental-ngx-platform-page-footer.mjs.map +1 -1
  15. package/fesm2022/fundamental-ngx-platform-settings-generator.mjs +3 -4
  16. package/fesm2022/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
  17. package/fesm2022/fundamental-ngx-platform-table-helpers.mjs +2 -3
  18. package/fesm2022/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
  19. package/fesm2022/fundamental-ngx-platform-table.mjs +3 -4
  20. package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
  21. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +1 -3
  22. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
  23. package/fesm2022/fundamental-ngx-platform-variant-management.mjs +1 -2
  24. package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
  25. package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs +3 -4
  26. package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs.map +1 -1
  27. package/form/index.d.ts +40 -5
  28. package/icon-tab-bar/index.d.ts +61 -10
  29. package/list/index.d.ts +1 -1
  30. package/menu/index.d.ts +3 -3
  31. package/message-popover/index.d.ts +3 -3
  32. package/package.json +6 -6
  33. package/settings-generator/index.d.ts +3 -3
  34. package/table/index.d.ts +1 -1
  35. package/variant-management/index.d.ts +1 -1
  36. package/schematics/collection.json +0 -10
  37. package/schematics/ng-add/index.d.ts +0 -13
  38. package/schematics/ng-add/index.js +0 -55
  39. package/schematics/ng-add/index.js.map +0 -1
  40. package/schematics/ng-add/schema.d.ts +0 -3
  41. package/schematics/ng-add/schema.js +0 -3
  42. package/schematics/ng-add/schema.js.map +0 -1
  43. package/schematics/ng-add/schema.json +0 -15
  44. package/schematics/utils/package-utils.d.ts +0 -19
  45. package/schematics/utils/package-utils.js +0 -119
  46. package/schematics/utils/package-utils.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-platform-table-helpers.mjs","sources":["../tmp-esm2022/table-helpers/table.js","../tmp-esm2022/table-helpers/constants/tokens.js","../tmp-esm2022/table-helpers/constants/index.js","../tmp-esm2022/table-helpers/services/table.service.js","../tmp-esm2022/table-helpers/services/table-responsive.service.js","../tmp-esm2022/table-helpers/table-column.js","../tmp-esm2022/table-helpers/directives/platform-table-column-responsive.directive.js","../tmp-esm2022/table-helpers/directives/table-cell-header-popover.directive.js","../tmp-esm2022/table-helpers/services/table-scroll-dispatcher.service.js","../tmp-esm2022/table-helpers/services/table-column-resize.service.js","../tmp-esm2022/table-helpers/directives/table-cell-resizable.directive.js","../tmp-esm2022/table-helpers/table-cell.class.js","../tmp-esm2022/table-helpers/directives/table-cell.directive.js","../tmp-esm2022/table-helpers/enums/filter-type.enum.js","../tmp-esm2022/table-helpers/enums/collection-filter.enum.js","../tmp-esm2022/table-helpers/enums/column-align.enum.js","../tmp-esm2022/table-helpers/enums/row-type.enum.js","../tmp-esm2022/table-helpers/enums/selection-mode.enum.js","../tmp-esm2022/table-helpers/enums/sort-direction.enum.js","../tmp-esm2022/table-helpers/utils.js","../tmp-esm2022/table-helpers/domain/table-data-provider.js","../tmp-esm2022/table-helpers/domain/table-data-source.js","../tmp-esm2022/table-helpers/domain/array-data-source.js","../tmp-esm2022/table-helpers/domain/observable-data-source.js","../tmp-esm2022/table-helpers/domain/data-source-parser.class.js","../tmp-esm2022/table-helpers/directives/table-data-source.directive.js","../tmp-esm2022/table-helpers/models/table-row.model.js","../tmp-esm2022/table-helpers/helpers.js","../tmp-esm2022/table-helpers/models/column-freeze-event.model.js","../tmp-esm2022/table-helpers/models/columns-change-event.model.js","../tmp-esm2022/table-helpers/models/directives.js","../tmp-esm2022/table-helpers/models/filter-change-event.model.js","../tmp-esm2022/table-helpers/models/group-change-event.model.js","../tmp-esm2022/table-helpers/models/page-change-event.model.js","../tmp-esm2022/table-helpers/models/save-rows-event.interface.js","../tmp-esm2022/table-helpers/models/search-change-event.model.js","../tmp-esm2022/table-helpers/models/selection-change-event.model.js","../tmp-esm2022/table-helpers/models/sort-change-event.model.js","../tmp-esm2022/table-helpers/models/table-cell-activate-event.model.js","../tmp-esm2022/table-helpers/models/table-dialog-common-data.model.js","../tmp-esm2022/table-helpers/models/table-row-activate-event.model.js","../tmp-esm2022/table-helpers/models/table-row-toggle-open-state-event.model.js","../tmp-esm2022/table-helpers/models/table-rows-rearrange-event.model.js","../tmp-esm2022/table-helpers/directives/table-draggable.directive.js","../tmp-esm2022/table-helpers/services/table-row.service.js","../tmp-esm2022/table-helpers/directives/table-header-resizer.directive.js","../tmp-esm2022/table-helpers/directives/table-header.directive.js","../tmp-esm2022/table-helpers/directives/table-initial-state.directive.js","../tmp-esm2022/table-helpers/directives/table-scrollable.directive.js","../tmp-esm2022/table-helpers/directives/table-view-settings-filter-custom.directive.js","../tmp-esm2022/table-helpers/directives/table-virtual-scroll.directive.js","../tmp-esm2022/table-helpers/pipes/cell-styles.pipe.js","../tmp-esm2022/table-helpers/pipes/column-resizable-side.pipe.js","../tmp-esm2022/table-helpers/pipes/column-sorting-direction.pipe.js","../tmp-esm2022/table-helpers/pipes/row-classes.pipe.js","../tmp-esm2022/table-helpers/pipes/selection-cell-styles.pipe.js","../tmp-esm2022/table-helpers/table-helpers.module.js","../tmp-esm2022/table-helpers/fundamental-ngx-platform-table-helpers.js"],"sourcesContent":["import { EventEmitter } from '@angular/core';\nexport class Table {\n constructor() {\n /** Toolbar Sort Settings button click event */\n this.openTableSortSettings = new EventEmitter();\n /** Toolbar Filter Settings button click event */\n this.openTableFilterSettings = new EventEmitter();\n /** Toolbar Group Settings button click event */\n this.openTableGroupSettings = new EventEmitter();\n /** Toolbar Column Settings button click event */\n this.openTableColumnSettings = new EventEmitter();\n /** Event fired when table state changes. */\n this.tableColumnFilterChange = new EventEmitter();\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvdGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFlBQVksRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFlM0UsTUFBTSxPQUFnQixLQUFLO0lBQTNCO1FBd0tJLCtDQUErQztRQUN0QywwQkFBcUIsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUU5RSxpREFBaUQ7UUFDeEMsNEJBQXVCLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFaEYsZ0RBQWdEO1FBQ3ZDLDJCQUFzQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRS9FLGlEQUFpRDtRQUN4Qyw0QkFBdUIsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVoRiw0Q0FBNEM7UUFDbkMsNEJBQXVCLEdBQXNCLElBQUksWUFBWSxFQUFRLENBQUM7SUFVbkYsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZWFyY2hJbnB1dCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2VhcmNoLWZpZWxkJztcbmltcG9ydCB7IFByZXNldE1hbmFnZWRDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEZvY3VzYWJsZUdyaWREaXJlY3RpdmUsIE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgVGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi9kb21haW4nO1xuaW1wb3J0IHsgQ29sbGVjdGlvbkZpbHRlciB9IGZyb20gJy4vaW50ZXJmYWNlcy9jb2xsZWN0aW9uLWZpbHRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbkdyb3VwIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NvbGxlY3Rpb24tZ3JvdXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IENvbGxlY3Rpb25Tb3J0IH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NvbGxlY3Rpb24tc29ydC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGFibGVTdGF0ZSB9IGZyb20gJy4vaW50ZXJmYWNlcy90YWJsZS1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUGxhdGZvcm1UYWJsZU1hbmFnZWRQcmVzZXQsIFNhdmVSb3dzRXZlbnQsIFRhYmxlSW5pdGlhbFN0YXRlLCBUYWJsZVJvdyB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IFRhYmxlU2Nyb2xsYWJsZSB9IGZyb20gJy4vc2VydmljZXMvdGFibGUtc2Nyb2xsLWRpc3BhdGNoZXIuc2VydmljZSc7XG5pbXBvcnQgeyBUYWJsZUNvbHVtbiB9IGZyb20gJy4vdGFibGUtY29sdW1uJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRhYmxlPFQgPSBhbnk+IGltcGxlbWVudHMgUHJlc2V0TWFuYWdlZENvbXBvbmVudDxQbGF0Zm9ybVRhYmxlTWFuYWdlZFByZXNldD4ge1xuICAgIGFic3RyYWN0IHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAgIGFic3RyYWN0IHJlYWRvbmx5IGlkOiBzdHJpbmc7XG5cbiAgICBhYnN0cmFjdCBfbG9hZFByZXZpb3VzUGFnZXM6IGJvb2xlYW47XG5cbiAgICBhYnN0cmFjdCBwYWdlU2Nyb2xsaW5nOiBib29sZWFuO1xuXG4gICAgYWJzdHJhY3QgbG9hZFBhZ2VzQmVmb3JlOiBib29sZWFuO1xuXG4gICAgYWJzdHJhY3QgcGFnZVNpemU6IE51bGxhYmxlPG51bWJlcj47XG5cbiAgICBhYnN0cmFjdCBmcmVlemVDb2x1bW5zVG86IHN0cmluZztcblxuICAgIGFic3RyYWN0IGZyZWV6ZUVuZENvbHVtbnNUbzogc3RyaW5nO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBjdXJyZW50IHByZXNldCBjb25maWd1cmF0aW9uIGhhcyBiZWVuIGNoYW5nZWQuICovXG4gICAgYWJzdHJhY3QgcHJlc2V0Q2hhbmdlZDogRXZlbnRFbWl0dGVyPFBsYXRmb3JtVGFibGVNYW5hZ2VkUHJlc2V0PjtcblxuICAgIC8qKiBTdW0gb2Ygd2lkdGhzIG9mIGZpeGVkIGNvbHVtbnMgKHNlbWFudGljIGhpZ2hsaWdodGluZywgc2VsZWN0aW9uKSAqL1xuICAgIGFic3RyYWN0IGdldCBfZml4ZWRDb2x1bW5zUGFkZGluZygpOiBudW1iZXI7XG5cbiAgICAvKiogRnJlZXphYmxlIGNvbHVtbiBuYW1lcyBhbmQgdGhlaXIgcmVzcGVjdGl2ZSBpbmRleGVzICovXG4gICAgYWJzdHJhY3QgZ2V0IF9mcmVlemFibGVDb2x1bW5zKCk6IFJlYWRvbmx5TWFwPHN0cmluZywgbnVtYmVyPjtcblxuICAgIC8qKiBGcmVlemFibGUgY29sdW1uIG5hbWVzIGFuZCB0aGVpciByZXNwZWN0aXZlIGluZGV4ZXMgKi9cbiAgICBhYnN0cmFjdCBnZXQgX2ZyZWV6YWJsZUVuZENvbHVtbnMoKTogUmVhZG9ubHlNYXA8c3RyaW5nLCBudW1iZXI+O1xuXG4gICAgLyoqIFdpZHRoIG9mIHRoZSB0YWJsZSBlbGVtZW50IGluIHB4ICovXG4gICAgYWJzdHJhY3QgZ2V0IF90YWJsZVdpZHRoUHgoKTogbnVtYmVyO1xuXG4gICAgYWJzdHJhY3QgZ2V0IGxvYWRpbmdTdGF0ZSgpOiBib29sZWFuO1xuXG4gICAgYWJzdHJhY3QgaW5pdGlhbFN0YXRlOiBUYWJsZUluaXRpYWxTdGF0ZSB8IG51bGw7XG5cbiAgICAvKiogVGFibGUgY29sdW1ucyBkZWZpbml0aW9uIGxpc3QgKi9cbiAgICBhYnN0cmFjdCByZWFkb25seSB0YWJsZUNvbHVtbnNTdHJlYW06IE9ic2VydmFibGU8VGFibGVDb2x1bW5bXT47XG5cbiAgICBhYnN0cmFjdCByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3I7XG5cbiAgICBhYnN0cmFjdCByZWFkb25seSB0YWJsZUNvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICAgIGFic3RyYWN0IHJlYWRvbmx5IHRhYmxlU2Nyb2xsYWJsZTogVGFibGVTY3JvbGxhYmxlO1xuXG4gICAgYWJzdHJhY3QgX3RhYmxlUm93c1Zpc2libGU6IFRhYmxlUm93PFQ+W107XG5cbiAgICBhYnN0cmFjdCBfdGFibGVSb3dzOiBUYWJsZVJvdzxUPltdO1xuXG4gICAgYWJzdHJhY3QgbG9hZGVkUm93cyQ6IFNpZ25hbDxudW1iZXI+O1xuXG4gICAgYWJzdHJhY3QgX3RhYmxlQ3VycmVudGx5UmVuZGVyZWRSb3dzUGxhY2Vob2xkZXI6IG51bWJlcltdO1xuXG4gICAgYWJzdHJhY3QgbWluaW11bUNvbHVtbldpZHRoOiBudW1iZXI7XG5cbiAgICBhYnN0cmFjdCBfZm9jdXNhYmxlR3JpZDogRm9jdXNhYmxlR3JpZERpcmVjdGl2ZTtcblxuICAgIC8qKiBHZXQgdGFibGUgc3RhdGUgKi9cbiAgICBhYnN0cmFjdCBnZXRUYWJsZVN0YXRlKCk6IFRhYmxlU3RhdGU7XG5cbiAgICAvKiogU2V0IHRhYmxlIHN0YXRlICovXG4gICAgYWJzdHJhY3Qgc2V0VGFibGVTdGF0ZSh0YWJsZVN0YXRlOiBUYWJsZVN0YXRlKTogdm9pZDtcblxuICAgIC8qKiBHZXQgdGFibGUgY29sdW1ucyBkZWZpbml0aW9uIGxpc3QgKi9cbiAgICBhYnN0cmFjdCBnZXRUYWJsZUNvbHVtbnMoKTogVGFibGVDb2x1bW5bXTtcblxuICAgIC8qKiBHZXQgYSBsaXN0IG9mIHZpc2libGUgdGFibGUgY29sdW1ucy4gKi9cbiAgICBhYnN0cmFjdCBnZXRWaXNpYmxlVGFibGVDb2x1bW5zKCk6IFRhYmxlQ29sdW1uW107XG5cbiAgICAvKiogU2V0IFNvcnRpbmcgcnVsZXMgKi9cbiAgICBhYnN0cmFjdCBzb3J0KHNvcnRSdWxlczogQ29sbGVjdGlvblNvcnRbXSk6IHZvaWQ7XG5cbiAgICAvKiogQWRkIFNvcnRpbmcgcnVsZXMgdG8gdGhlIGV4aXN0aW5nIG9uZXMgKi9cbiAgICBhYnN0cmFjdCBhZGRTb3J0KHNvcnRSdWxlczogQ29sbGVjdGlvblNvcnRbXSk6IHZvaWQ7XG5cbiAgICAvKiogU2V0IEZpbHRlcmluZyBydWxlcyAqL1xuICAgIGFic3RyYWN0IGZpbHRlcihmaWx0ZXJSdWxlczogQ29sbGVjdGlvbkZpbHRlcltdKTogdm9pZDtcblxuICAgIC8qKiBBZGQgRmlsdGVyIHJ1bGVzIHRvIHRoZSBleGlzdGluZyBvbmVzICovXG4gICAgYWJzdHJhY3QgYWRkRmlsdGVyKGZpbHRlclJ1bGVzOiBDb2xsZWN0aW9uRmlsdGVyW10pOiB2b2lkO1xuXG4gICAgLyoqIFNldCBncm91cGluZyBydWxlcyAqL1xuICAgIGFic3RyYWN0IGdyb3VwKGdyb3VwUnVsZXM6IENvbGxlY3Rpb25Hcm91cFtdKTogdm9pZDtcblxuICAgIC8qKiBBZGQgR3JvdXAgcnVsZXMgdG8gdGhlIGV4aXN0aW5nIG9uZXMgKi9cbiAgICBhYnN0cmFjdCBhZGRHcm91cChncm91cFJ1bGVzOiBDb2xsZWN0aW9uR3JvdXBbXSk6IHZvaWQ7XG5cbiAgICAvKiogU2V0IHRhYmxlIGNvbHVtbnMgKi9cbiAgICBhYnN0cmFjdCBzZXRDb2x1bW5zKGNvbHVtbnM6IHN0cmluZ1tdKTogdm9pZDtcblxuICAgIC8qKiBUb2dnbGUgcm93IGNoZWNrZWQgc3RhdGUuICovXG4gICAgYWJzdHJhY3QgdG9nZ2xlU2VsZWN0YWJsZVJvdyhyb3dJbmRleDogbnVtYmVyKTogdm9pZDtcblxuICAgIC8qKiBGcmVlemUgdGFibGUgY29sdW1ucyB0byBpbmNsdWRpbmcgKi9cbiAgICBhYnN0cmFjdCBmcmVlemVUb0NvbHVtbihjb2x1bW5LZXk6IHN0cmluZywgZW5kPzogYm9vbGVhbik6IHZvaWQ7XG5cbiAgICAvKiogVW5mcmVlemUgY29sdW1uICovXG4gICAgYWJzdHJhY3QgdW5mcmVlemUoY29sdW1uS2V5OiBzdHJpbmcsIGVuZD86IGJvb2xlYW4pOiB2b2lkO1xuXG4gICAgLyoqIFNlYXJjaCBpbiBhbGwgdGFibGUgY29sdW1ucyAqL1xuICAgIGFic3RyYWN0IHNlYXJjaChzZWFyY2hJbnB1dDogU2VhcmNoSW5wdXQpOiB2b2lkO1xuXG4gICAgLyoqIFRvb2xiYXIgU29ydCBTZXR0aW5ncyBidXR0b24gdmlzaWJpbGl0eSAqL1xuICAgIGFic3RyYWN0IHNob3dTb3J0U2V0dGluZ3NJblRvb2xiYXIoc2hvd1NvcnRTZXR0aW5nczogYm9vbGVhbik6IHZvaWQ7XG5cbiAgICAvKiogVG9vbGJhciBGaWx0ZXIgU2V0dGluZ3MgYnV0dG9uIHZpc2liaWxpdHkgKi9cbiAgICBhYnN0cmFjdCBzaG93RmlsdGVyU2V0dGluZ3NJblRvb2xiYXIoc2hvd0ZpbHRlclNldHRpbmdzOiBib29sZWFuKTogdm9pZDtcblxuICAgIC8qKiBUb29sYmFyIEdyb3VwIFNldHRpbmdzIGJ1dHRvbiB2aXNpYmlsaXR5ICovXG4gICAgYWJzdHJhY3Qgc2hvd0dyb3VwU2V0dGluZ3NJblRvb2xiYXIoc2hvd0dyb3VwU2V0dGluZ3M6IGJvb2xlYW4pOiB2b2lkO1xuXG4gICAgLyoqIFRvb2xiYXIgQ29sdW1ucyBTZXR0aW5ncyBidXR0b24gdmlzaWJpbGl0eSAqL1xuICAgIGFic3RyYWN0IHNob3dDb2x1bW5TZXR0aW5nc0luVG9vbGJhcihzaG93Q29sdW1uU2V0dGluZ3M6IGJvb2xlYW4pOiB2b2lkO1xuXG4gICAgLyoqIFRvb2xiYXIgU2V0dGluZ3MgYnV0dG9uIHZpc2liaWxpdHkgKi9cbiAgICBhYnN0cmFjdCBzaG93U2V0dGluZ3NJblRvb2xiYXIoc2hvd1NldHRpbmdzOiBib29sZWFuKTogdm9pZDtcblxuICAgIC8qKiBEaXNhYmxlIGZpbHRlcmluZyBieSBoZWFkZXIgY29sdW1uIG1lbnUgKi9cbiAgICBhYnN0cmFjdCBzZXRIZWFkZXJDb2x1bW5GaWx0ZXJpbmdEaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQ7XG5cbiAgICAvKiogU2V0IGN1cnJlbnQgcGFnZSAqL1xuICAgIGFic3RyYWN0IHNldEN1cnJlbnRQYWdlKGN1cnJlbnRQYWdlOiBudW1iZXIpOiB2b2lkO1xuXG4gICAgLyoqIEdldHMgdGhlIG1heCBhbGxvd2VkIHdpZHRoIGZvciBhbGwgZnJlZXphYmxlIGNvbHVtbnMgKi9cbiAgICBhYnN0cmFjdCBnZXRNYXhBbGxvd2VkRnJlZXphYmxlQ29sdW1uc1dpZHRoKCk6IG51bWJlcjtcblxuICAgIC8qKiBHZXQgdGFibGUgZGF0YSBzb3VyY2UgKi9cbiAgICBhYnN0cmFjdCBnZXREYXRhU291cmNlKCk6IFRhYmxlRGF0YVNvdXJjZTxUPjtcblxuICAgIC8qKiBNYW51YWxseSB0cmlnZ2VycyBjb2x1bW5zIHdpZHRoIHJlY2FsY3VsYXRpb24gKi9cbiAgICBhYnN0cmFjdCByZWNhbGN1bGF0ZVRhYmxlQ29sdW1uV2lkdGgoKTogdm9pZDtcblxuICAgIC8qKiBGZXRjaCBkYXRhIHNvdXJjZSBkYXRhLiAqL1xuICAgIGFic3RyYWN0IGZldGNoKCk6IHZvaWQ7XG5cbiAgICAvKiogQWRkcyBlbXB0eSByb3cgZm9yIGVkaXRpbmcgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgcm93cyBhcnJheS4gKi9cbiAgICBhYnN0cmFjdCBhZGRSb3coKTogdm9pZDtcblxuICAgIC8qKiBFbWl0cyBzYXZlIGV2ZW50IGFuZCByZXNldHMgZWRpdGFibGUgcm93cyBhcnJheS4gKi9cbiAgICBhYnN0cmFjdCBzYXZlUm93cygpOiB2b2lkO1xuXG4gICAgLyoqIENhbmNlbHMgZWRpdGluZyBhbmQgZGlzY2FyZHMgbmV3bHkgYWRkZWQgcm93cyAqL1xuICAgIGFic3RyYWN0IGNhbmNlbEVkaXRpbmcoKTogdm9pZDtcblxuICAgIC8qKiBFeHBhbmQgYWxsIHRoZSByb3dzIG9mIHRoZSB0YWJsZSAqL1xuICAgIGFic3RyYWN0IGV4cGFuZEFsbCgpOiB2b2lkO1xuXG4gICAgLyoqIENvbGxhcHNlIGFsbCB0aGUgcm93cyBvZiB0aGUgdGFibGUgKi9cbiAgICBhYnN0cmFjdCBjb2xsYXBzZUFsbCgpOiB2b2lkO1xuXG4gICAgLyoqIFNldHMgc2VsZWN0ZWQgcHJlc2V0LiAqL1xuICAgIGFic3RyYWN0IHNldFByZXNldChkYXRhOiBQbGF0Zm9ybVRhYmxlTWFuYWdlZFByZXNldCk6IHZvaWQ7XG5cbiAgICAvKiogUmV0dXJucyBjdXJyZW50IHByZXNldC4gKi9cbiAgICBhYnN0cmFjdCBnZXRDdXJyZW50UHJlc2V0KCk6IFBsYXRmb3JtVGFibGVNYW5hZ2VkUHJlc2V0O1xuXG4gICAgYWJzdHJhY3QgZ2V0Q3VycmVudGx5UmVuZGVyZWRSb3dzKCk6IG51bWJlcltdO1xuXG4gICAgYWJzdHJhY3Qgc2V0Q3VycmVudGx5UmVuZGVyZWRSb3dzKHN0YXJ0SW5kZXg6IG51bWJlciwgbGVuZ3RoOiBudW1iZXIpOiB2b2lkO1xuXG4gICAgYWJzdHJhY3QgdG9nZ2xlRXhwYW5kYWJsZVRhYmxlUm93KHJvdzogVGFibGVSb3c8VD4sIGZvcmNlRmV0Y2g/OiBib29sZWFuKTtcblxuICAgIGFic3RyYWN0IG9uVGFibGVSb3dzQ2hhbmdlZCgpOiB2b2lkO1xuXG4gICAgYWJzdHJhY3QgcmVmcmVzaERuZExpc3QoKTogdm9pZDtcblxuICAgIGFic3RyYWN0IGNsZWFyVGFibGVSb3dzKCk6IHZvaWQ7XG5cbiAgICAvKiogVG9vbGJhciBTb3J0IFNldHRpbmdzIGJ1dHRvbiBjbGljayBldmVudCAqL1xuICAgIHJlYWRvbmx5IG9wZW5UYWJsZVNvcnRTZXR0aW5nczogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIFRvb2xiYXIgRmlsdGVyIFNldHRpbmdzIGJ1dHRvbiBjbGljayBldmVudCAqL1xuICAgIHJlYWRvbmx5IG9wZW5UYWJsZUZpbHRlclNldHRpbmdzOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogVG9vbGJhciBHcm91cCBTZXR0aW5ncyBidXR0b24gY2xpY2sgZXZlbnQgKi9cbiAgICByZWFkb25seSBvcGVuVGFibGVHcm91cFNldHRpbmdzOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogVG9vbGJhciBDb2x1bW4gU2V0dGluZ3MgYnV0dG9uIGNsaWNrIGV2ZW50ICovXG4gICAgcmVhZG9ubHkgb3BlblRhYmxlQ29sdW1uU2V0dGluZ3M6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFdmVudCBmaXJlZCB3aGVuIHRhYmxlIHN0YXRlIGNoYW5nZXMuICovXG4gICAgcmVhZG9ubHkgdGFibGVDb2x1bW5GaWx0ZXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEV2ZW50IGZpcmVkIHdoZW4gZW1wdHkgcm93IGFkZGVkLiAqL1xuICAgIHJlYWRvbmx5IGVtcHR5Um93QWRkZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPjtcblxuICAgIC8qKiBFdmVudCBmaXJlZCB3aGVuIHNhdmUgYnV0dG9uIHByZXNzZWQuICovXG4gICAgcmVhZG9ubHkgc2F2ZTogRXZlbnRFbWl0dGVyPFNhdmVSb3dzRXZlbnQ8VD4+O1xuXG4gICAgLyoqIEV2ZW50IGZpcmVkIHdoZW4gY2FuY2VsIGJ1dHRvbiBwcmVzc2VkLiAqL1xuICAgIHJlYWRvbmx5IGNhbmNlbDogRXZlbnRFbWl0dGVyPHZvaWQ+O1xufVxuIl19","import { InjectionToken } from '@angular/core';\nexport const FDP_TABLE_DRAGGABLE_DIRECTIVE = new InjectionToken('FdpTableDraggableDirective');\nexport const FDP_TABLE_STATE_DIRECTIVE = new InjectionToken('FdpTableStateDirective');\nexport const FDP_TABLE_VIRTUAL_SCROLL_DIRECTIVE = new InjectionToken('FdpTableVirtualScrollDirective');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzL2NvbnN0YW50cy90b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxJQUFJLGNBQWMsQ0FBaUIsNEJBQTRCLENBQUMsQ0FBQztBQUM5RyxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLGNBQWMsQ0FBb0Isd0JBQXdCLENBQUMsQ0FBQztBQUN6RyxNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FBRyxJQUFJLGNBQWMsQ0FDaEUsZ0NBQWdDLENBQ25DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGFibGVEcmFnZ2FibGUsIFRhYmxlSW5pdGlhbFN0YXRlLCBUYWJsZVZpcnR1YWxTY3JvbGwgfSBmcm9tICcuLi9tb2RlbHMnO1xuXG5leHBvcnQgY29uc3QgRkRQX1RBQkxFX0RSQUdHQUJMRV9ESVJFQ1RJVkUgPSBuZXcgSW5qZWN0aW9uVG9rZW48VGFibGVEcmFnZ2FibGU+KCdGZHBUYWJsZURyYWdnYWJsZURpcmVjdGl2ZScpO1xuZXhwb3J0IGNvbnN0IEZEUF9UQUJMRV9TVEFURV9ESVJFQ1RJVkUgPSBuZXcgSW5qZWN0aW9uVG9rZW48VGFibGVJbml0aWFsU3RhdGU+KCdGZHBUYWJsZVN0YXRlRGlyZWN0aXZlJyk7XG5leHBvcnQgY29uc3QgRkRQX1RBQkxFX1ZJUlRVQUxfU0NST0xMX0RJUkVDVElWRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxUYWJsZVZpcnR1YWxTY3JvbGw+KFxuICAgICdGZHBUYWJsZVZpcnR1YWxTY3JvbGxEaXJlY3RpdmUnXG4pO1xuIl19","import { ContentDensityMode } from '@fundamental-ngx/core/content-density';\nexport * from './tokens';\nexport const DEFAULT_TABLE_PAGE = {\n pageSize: 0,\n currentPage: 1\n};\nexport const DEFAULT_TABLE_SEARCH_INPUT = {\n text: '',\n category: ''\n};\nexport const DEFAULT_TABLE_STATE = {\n sortBy: [],\n filterBy: [],\n groupBy: [],\n page: DEFAULT_TABLE_PAGE,\n columns: [],\n columnKeys: [],\n freezeToColumn: null,\n freezeToEndColumn: null,\n searchInput: DEFAULT_TABLE_SEARCH_INPUT,\n scrollTopPosition: 0\n};\nexport const DEFAULT_HIGHLIGHTING_KEY = 'semantic';\nexport const EDITABLE_ROW_SEMANTIC_STATE = 'information';\nexport const SEMANTIC_HIGHLIGHTING_COLUMN_WIDTH = 6;\nexport const SELECTION_COLUMN_WIDTH = new Map([\n [ContentDensityMode.COZY, 44],\n [ContentDensityMode.COMPACT, 32],\n [ContentDensityMode.CONDENSED, 32]\n]);\nexport const TABLE_COLUMN_MIN_WIDTH = 50;\nexport const ROW_HEIGHT = new Map([\n [ContentDensityMode.COZY, 44],\n [ContentDensityMode.COMPACT, 32],\n [ContentDensityMode.CONDENSED, 24]\n]);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvY29uc3RhbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRzNFLGNBQWMsVUFBVSxDQUFDO0FBRXpCLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUE2QjtJQUN4RCxRQUFRLEVBQUUsQ0FBQztJQUNYLFdBQVcsRUFBRSxDQUFDO0NBQ2pCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBMEI7SUFDN0QsSUFBSSxFQUFFLEVBQUU7SUFDUixRQUFRLEVBQUUsRUFBRTtDQUNmLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBeUI7SUFDckQsTUFBTSxFQUFFLEVBQUU7SUFDVixRQUFRLEVBQUUsRUFBRTtJQUNaLE9BQU8sRUFBRSxFQUFFO0lBQ1gsSUFBSSxFQUFFLGtCQUFrQjtJQUN4QixPQUFPLEVBQUUsRUFBRTtJQUNYLFVBQVUsRUFBRSxFQUFFO0lBQ2QsY0FBYyxFQUFFLElBQUk7SUFDcEIsaUJBQWlCLEVBQUUsSUFBSTtJQUN2QixXQUFXLEVBQUUsMEJBQTBCO0lBQ3ZDLGlCQUFpQixFQUFFLENBQUM7Q0FDdkIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLFVBQVUsQ0FBQztBQUVuRCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxhQUFhLENBQUM7QUFFekQsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsQ0FBQyxDQUFDO0FBRXBELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUE0QyxJQUFJLEdBQUcsQ0FBNkI7SUFDL0csQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQzdCLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztJQUNoQyxDQUFDLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7Q0FDckMsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxDQUFDO0FBRXpDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBNEMsSUFBSSxHQUFHLENBQTZCO0lBQ25HLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUM3QixDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7SUFDaEMsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO0NBQ3JDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlYXJjaElucHV0IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zZWFyY2gtZmllbGQnO1xuXG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eU1vZGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IENvbGxlY3Rpb25QYWdlLCBUYWJsZVN0YXRlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vdG9rZW5zJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfVEFCTEVfUEFHRTogUmVhZG9ubHk8Q29sbGVjdGlvblBhZ2U+ID0ge1xuICAgIHBhZ2VTaXplOiAwLFxuICAgIGN1cnJlbnRQYWdlOiAxXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9UQUJMRV9TRUFSQ0hfSU5QVVQ6IFJlYWRvbmx5PFNlYXJjaElucHV0PiA9IHtcbiAgICB0ZXh0OiAnJyxcbiAgICBjYXRlZ29yeTogJydcbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1RBQkxFX1NUQVRFOiBSZWFkb25seTxUYWJsZVN0YXRlPiA9IHtcbiAgICBzb3J0Qnk6IFtdLFxuICAgIGZpbHRlckJ5OiBbXSxcbiAgICBncm91cEJ5OiBbXSxcbiAgICBwYWdlOiBERUZBVUxUX1RBQkxFX1BBR0UsXG4gICAgY29sdW1uczogW10sXG4gICAgY29sdW1uS2V5czogW10sXG4gICAgZnJlZXplVG9Db2x1bW46IG51bGwsXG4gICAgZnJlZXplVG9FbmRDb2x1bW46IG51bGwsXG4gICAgc2VhcmNoSW5wdXQ6IERFRkFVTFRfVEFCTEVfU0VBUkNIX0lOUFVULFxuICAgIHNjcm9sbFRvcFBvc2l0aW9uOiAwXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9ISUdITElHSFRJTkdfS0VZID0gJ3NlbWFudGljJztcblxuZXhwb3J0IGNvbnN0IEVESVRBQkxFX1JPV19TRU1BTlRJQ19TVEFURSA9ICdpbmZvcm1hdGlvbic7XG5cbmV4cG9ydCBjb25zdCBTRU1BTlRJQ19ISUdITElHSFRJTkdfQ09MVU1OX1dJRFRIID0gNjtcblxuZXhwb3J0IGNvbnN0IFNFTEVDVElPTl9DT0xVTU5fV0lEVEg6IFJlYWRvbmx5TWFwPENvbnRlbnREZW5zaXR5TW9kZSwgbnVtYmVyPiA9IG5ldyBNYXA8Q29udGVudERlbnNpdHlNb2RlLCBudW1iZXI+KFtcbiAgICBbQ29udGVudERlbnNpdHlNb2RlLkNPWlksIDQ0XSxcbiAgICBbQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1QsIDMyXSxcbiAgICBbQ29udGVudERlbnNpdHlNb2RlLkNPTkRFTlNFRCwgMzJdXG5dKTtcblxuZXhwb3J0IGNvbnN0IFRBQkxFX0NPTFVNTl9NSU5fV0lEVEggPSA1MDtcblxuZXhwb3J0IGNvbnN0IFJPV19IRUlHSFQ6IFJlYWRvbmx5TWFwPENvbnRlbnREZW5zaXR5TW9kZSwgbnVtYmVyPiA9IG5ldyBNYXA8Q29udGVudERlbnNpdHlNb2RlLCBudW1iZXI+KFtcbiAgICBbQ29udGVudERlbnNpdHlNb2RlLkNPWlksIDQ0XSxcbiAgICBbQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1QsIDMyXSxcbiAgICBbQ29udGVudERlbnNpdHlNb2RlLkNPTkRFTlNFRCwgMjRdXG5dKTtcbiJdfQ==","import { Injectable, computed, signal } from '@angular/core';\nimport equal from 'fast-deep-equal';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { skip } from 'rxjs/operators';\nimport { DEFAULT_TABLE_STATE } from '../constants';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport * as i0 from \"@angular/core\";\nexport class TableService {\n constructor() {\n /** Table state stream. */\n this.tableState$ = new BehaviorSubject(DEFAULT_TABLE_STATE);\n /** @hidden */\n this._semanticHighlighting$ = signal('', ...(ngDevMode ? [{ debugName: \"_semanticHighlighting$\" }] : []));\n /** @hidden */\n this._isFilteringFromHeaderDisabled$ = signal(false, ...(ngDevMode ? [{ debugName: \"_isFilteringFromHeaderDisabled$\" }] : []));\n /** @hidden */\n this._isShownNavigationColumn$ = signal(false, ...(ngDevMode ? [{ debugName: \"_isShownNavigationColumn$\" }] : []));\n /** @hidden */\n this._semanticHighlightingColumnWidth$ = signal(0, ...(ngDevMode ? [{ debugName: \"_semanticHighlightingColumnWidth$\" }] : []));\n /** Visible columns stream. */\n this.visibleColumns$ = signal([], ...(ngDevMode ? [{ debugName: \"visibleColumns$\" }] : []));\n /** Visible columns length. */\n this.visibleColumnsLength = computed(() => this.visibleColumns$().length, ...(ngDevMode ? [{ debugName: \"visibleColumnsLength\" }] : []));\n /** Popping columns stream. */\n this.poppingColumns$ = signal([], ...(ngDevMode ? [{ debugName: \"poppingColumns$\" }] : []));\n /** Popping columns length. */\n this._poppingColumnsLength = 0;\n /** Table columns stream. */\n this.tableColumns$ = new BehaviorSubject([]);\n /** @hidden */\n this.tableStateChanges$ = this.tableState$.pipe(skip(1));\n /** Stream that emits when search state changes. */\n this.searchChange$ = new Subject();\n /** Stream that emits when sort state changes. */\n this.sortChange$ = new Subject();\n /** Stream that emits when filter state changes. */\n this.filterChange$ = new Subject();\n /** Stream that emits when group state changes. */\n this.groupChange$ = new Subject();\n /** Stream that emits when freeze state changes. */\n this.freezeChange$ = new Subject();\n /** Stream that emits when columns state changes. */\n this.columnsChange$ = new Subject();\n /** Stream that emits when page state changes. */\n this.pageChange$ = new Subject();\n /** Stream that emits when new fetch of data is needed. */\n this.needFetch$ = new Subject();\n /** @hidden */\n this.stateChange$ = new Subject();\n /** Stream that emits when loading state changes. */\n this.tableLoading$ = new BehaviorSubject(false);\n /** Listen for soft changes in table subcomponents (mostly table column) */\n this.markForCheck$ = new Subject();\n /** Listen for immediate changes in table subcomponents (mostly table column) */\n this.detectChanges$ = new Subject();\n /** Sort rules stream. */\n this.sortRules$ = signal(new Map(), ...(ngDevMode ? [{ debugName: \"sortRules$\" }] : []));\n /**\n * Filter Rules Map stream. Where key is column key, and value is the associated filter rules.\n * Many filters can be applied to one column.\n */\n this.filterRules$ = signal(new Map(), ...(ngDevMode ? [{ debugName: \"filterRules$\" }] : []));\n /**\n * Group Rules Map stream. Where key is column key and value is associated group rule\n */\n this.groupRulesSubject = new BehaviorSubject(new Map());\n /** Group Rules Map signal. */\n this.groupRules$ = toSignal(this.groupRulesSubject);\n }\n /** Get current state/settings of the Table. */\n getTableState() {\n return this.tableState$.getValue();\n }\n /** Set current state/settings of the Table. */\n setTableState(state) {\n this.tableState$.next(state);\n }\n /** Set current loading state of the Table. */\n setTableLoading(isLoading) {\n this.tableLoading$.next(isLoading);\n }\n /** Notify about changes in table subcomponents (mostly table column) and detect them on next detector check. */\n markForCheck() {\n this.markForCheck$.next();\n }\n /** Notify about changes in table subcomponents (mostly table column) and detect them immediately. */\n detectChanges() {\n this.detectChanges$.next();\n }\n /** Search */\n search(searchInput) {\n const prevState = this.getTableState();\n const state = { ...prevState, searchInput };\n this.setTableState(setCurrentPageToState(state, 1));\n const evt = { current: searchInput, previous: prevState.searchInput };\n this.needFetch$.next();\n this.stateChange$.next({ type: 'search', state: evt });\n this.searchChange$.next(evt);\n }\n /** Set new sort rules */\n setSort(sortRules) {\n const prevState = this.getTableState();\n const prevSortRules = (prevState && prevState.sortBy) || [];\n const newSortRules = sortRules ? [...sortRules] : [];\n const state = { ...prevState, sortBy: newSortRules };\n if (!equal(prevSortRules, state.sortBy)) {\n this.setTableState(setCurrentPageToState(state, 1));\n this.buildSortRulesMap();\n const evt = { current: state.sortBy, previous: prevSortRules };\n this.buildSortRulesMap();\n this.needFetch$.next();\n this.stateChange$.next({ type: 'sort', state: evt });\n this.sortChange$.next(evt);\n }\n }\n /** Add sort rules to the existing ones */\n addSort(sortRules) {\n const prevState = this.getTableState();\n const prevSortRules = (prevState && prevState.sortBy) || [];\n const newSortRules = [\n ...prevSortRules.filter((existing) => !sortRules.find(({ field }) => field === existing.field)),\n ...sortRules\n ];\n const state = { ...prevState, sortBy: newSortRules };\n if (!equal(prevSortRules, state.sortBy)) {\n this.setTableState(setCurrentPageToState(state, 1));\n const evt = { current: state.sortBy, previous: prevSortRules };\n this.buildSortRulesMap();\n this.needFetch$.next();\n this.stateChange$.next({ type: 'sort', state: evt });\n this.sortChange$.next(evt);\n }\n }\n /** Set new filter rules */\n setFilters(filterRules) {\n const prevState = this.getTableState();\n const prevFilterRules = (prevState && prevState.filterBy) || [];\n const newFilterRules = filterRules\n ? filterRules.map((rule) => ({\n ...rule,\n fieldName: this._getFieldName(rule.field, rule.fieldName)\n }))\n : [];\n const state = { ...prevState, filterBy: newFilterRules };\n if (!equal(prevFilterRules, state.filterBy)) {\n this.setTableState(setCurrentPageToState(state, 1));\n const evt = { current: state.filterBy, previous: prevFilterRules };\n this.buildFilterRulesMap();\n this.needFetch$.next();\n this.stateChange$.next({ type: 'filter', state: evt });\n this.filterChange$.next(evt);\n }\n }\n /** Add filter rules to the existing ones */\n addFilters(rulesToAdd) {\n const prevState = this.getTableState();\n const prevFilterRules = (prevState && prevState.filterBy) || [];\n const newFilterRules = [\n ...prevFilterRules.filter((existing) => !rulesToAdd.find(({ field }) => field === existing.field)),\n ...rulesToAdd.map((rule) => ({\n ...rule,\n fieldName: this._getFieldName(rule.field, rule.fieldName)\n }))\n ];\n const state = { ...prevState, filterBy: newFilterRules };\n if (!equal(prevFilterRules, state.filterBy)) {\n this.setTableState(setCurrentPageToState(state, 1));\n const evt = { current: state.filterBy, previous: prevFilterRules };\n this.buildFilterRulesMap();\n this.needFetch$.next();\n this.stateChange$.next({ type: 'filter', state: evt });\n this.filterChange$.next(evt);\n }\n }\n /** Removes filters for the provided fields */\n removeFilters(fields) {\n const prevState = this.getTableState();\n const prevFilterRules = (prevState && prevState.filterBy) || [];\n const newFilterRules = prevFilterRules.filter((existing) => !fields.includes(existing.field));\n const state = { ...prevState, filterBy: newFilterRules };\n this.setTableState(setCurrentPageToState(state, 1));\n const evt = { current: state.filterBy, previous: prevFilterRules };\n this.buildFilterRulesMap();\n this.needFetch$.next();\n this.stateChange$.next({ type: 'filter', state: evt });\n this.filterChange$.next(evt);\n }\n /** Set group rules */\n setGroups(groups) {\n const prevState = this.getTableState();\n const prevGroups = (prevState && prevState.groupBy) || [];\n const newGroups = groups ? [...groups] : [];\n const state = { ...prevState, groupBy: newGroups };\n if (!equal(prevGroups, state.groupBy)) {\n this.setTableState(state);\n const evt = { current: state.groupBy, previous: prevGroups };\n this.buildGroupRulesMap();\n this.stateChange$.next({ type: 'group', state: evt });\n this.groupChange$.next(evt);\n }\n }\n /** Add group rules to the existing ones */\n addGroups(groupsToAdd) {\n const prevState = this.getTableState();\n const prevGroups = (prevState && prevState.groupBy) || [];\n const newGroups = [\n ...prevGroups.filter((existing) => !groupsToAdd.find(({ field }) => field === existing.field)),\n ...groupsToAdd\n ];\n const state = { ...prevState, groupBy: newGroups };\n if (!equal(prevGroups, state.groupBy)) {\n this.setTableState(state);\n this.buildGroupRulesMap();\n const evt = { current: state.groupBy, previous: prevGroups };\n this.stateChange$.next({ type: 'group', state: evt });\n this.groupChange$.next(evt);\n }\n }\n /** Freeze table to column */\n freezeTo(columnName, end) {\n const prevState = this.getTableState();\n if (!end) {\n this.setTableState({ ...prevState, freezeToColumn: columnName });\n }\n else {\n this.setTableState({ ...prevState, freezeToEndColumn: columnName });\n }\n const evt = {\n current: columnName,\n previous: end ? prevState.freezeToEndColumn : prevState.freezeToColumn\n };\n this.stateChange$.next({ type: 'freeze', state: evt });\n this.freezeChange$.next(evt);\n }\n /** Set table columns */\n setColumns(columns, keys) {\n const prevState = this.getTableState();\n const prevColumns = (prevState && prevState.columns) || [];\n const newColumns = [...columns];\n const newColumnKeys = [...keys];\n const state = { ...prevState, columns: newColumns, columnKeys: newColumnKeys };\n if (!equal(prevColumns, state.columns)) {\n this.setTableState(state);\n const evt = { current: state.columns, previous: prevColumns };\n this.stateChange$.next({ type: 'columns', state: evt });\n this.columnsChange$.next(evt);\n }\n }\n /** Set page. */\n setCurrentPage(currentPage) {\n const prevState = this.getTableState();\n const prevPageState = prevState.page;\n if (prevPageState.currentPage === currentPage) {\n return;\n }\n const state = setCurrentPageToState(prevState, currentPage);\n this.setTableState(state);\n const evt = { current: state.page, previous: prevPageState };\n this.needFetch$.next();\n this.stateChange$.next({ type: 'page', state: evt });\n this.pageChange$.next(evt);\n }\n /** Set items per page. */\n setItemsPerPage(itemsPerPage, resetPageNumber = true) {\n const prevState = this.getTableState();\n const prevPageState = prevState.page;\n if (prevPageState.pageSize === itemsPerPage) {\n return;\n }\n let state = setPageSizeToState(prevState, itemsPerPage);\n if (resetPageNumber) {\n state = setCurrentPageToState(state, 1);\n }\n this.setTableState(state);\n const evt = { current: state.page, previous: prevPageState };\n this.needFetch$.next();\n this.stateChange$.next({ type: 'page', state: evt });\n this.pageChange$.next(evt);\n }\n /** Returns default table state. */\n getDefaultState() {\n const tableState = this.getTableState();\n return {\n columnKeys: tableState.columnKeys,\n sortBy: [],\n filterBy: [],\n groupBy: [],\n columns: tableState.columns,\n searchInput: {\n category: null,\n text: ''\n },\n freezeToColumn: null,\n freezeToEndColumn: null,\n page: {\n pageSize: 0,\n currentPage: 1\n },\n scrollTopPosition: 0\n };\n }\n /**\n * Shares visible columns array across listeners.\n * @param columns Visible columns to share.\n */\n setVisibleColumns(columns) {\n this.visibleColumns$.set(columns);\n }\n /**\n * Shares popping columns array across listeners.\n * @param columns Popping columns to share.\n */\n setPoppingColumns(columns) {\n this.poppingColumns$.set(columns);\n this._poppingColumnsLength = columns.length;\n }\n /**\n * Constructs grouping rules based on the table state.\n * @param state Table state.\n */\n buildGroupRulesMap(state = this.getTableState()) {\n const groupMap = new Map(state.groupBy.map((rule) => [rule.field, rule]));\n this.groupRulesSubject.next(groupMap);\n }\n /**\n * Constructs sorting rules based on the table state.\n * @param state Table state\n */\n buildSortRulesMap(state = this.getTableState()) {\n this.sortRules$.set(new Map(state.sortBy.filter((rule) => rule.field).map((rule) => [rule.field, rule])));\n }\n /**\n * Constructs filter rules based on the table state.\n * @param state Table state.\n */\n buildFilterRulesMap(state = this.getTableState()) {\n const filterRulesWithFieldNames = state.filterBy.map((rule) => ({\n ...rule,\n fieldName: this._getFieldName(rule.field, rule.fieldName)\n }));\n this.filterRules$.set(filterRulesWithFieldNames.reduce((hash, rule) => {\n const key = rule.field;\n if (!hash.has(key)) {\n hash.set(key, []);\n }\n hash.get(key)?.push(rule);\n return hash;\n }, new Map()));\n const evt = { current: filterRulesWithFieldNames, previous: state.filterBy };\n this.stateChange$.next({ type: 'filter', state: evt });\n }\n /** Reset all filter rules */\n resetFilters() {\n const prevState = this.getTableState();\n const prevFilterRules = (prevState && prevState.filterBy) || [];\n const newFilterRules = [];\n const state = { ...prevState, filterBy: newFilterRules };\n if (!equal(prevFilterRules, state.filterBy)) {\n this.setTableState(setCurrentPageToState(state, 1));\n const evt = { current: state.filterBy, previous: prevFilterRules };\n this.buildFilterRulesMap();\n this.needFetch$.next();\n this.stateChange$.next({ type: 'filter', state: evt });\n this.filterChange$.next(evt);\n }\n }\n /**\n * Constructs base table config.\n */\n constructTableMetadata() {\n this.buildGroupRulesMap();\n this.buildSortRulesMap();\n this.buildFilterRulesMap();\n }\n /** @hidden */\n _getFieldName(field, fieldName) {\n const column = this.tableColumns$.getValue().find((col) => col.key === field);\n return column ? column.name : (fieldName ?? field);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableService, decorators: [{\n type: Injectable\n }] });\n/** @hidden */\nfunction setCurrentPageToState(state, currentPage) {\n const newPageState = { ...state.page, currentPage };\n return { ...state, page: newPageState };\n}\n/** @hidden */\nfunction setPageSizeToState(state, pageSize) {\n const newPageState = { ...state.page, pageSize };\n return { ...state, page: newPageState };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9zZXJ2aWNlcy90YWJsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEtBQUssTUFBTSxpQkFBaUIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRW5ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFnQ3RELE1BQU0sT0FBTyxZQUFZO0lBRHpCO1FBRUksMEJBQTBCO1FBQ2pCLGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNoRSxjQUFjO1FBQ0wsMkJBQXNCLEdBQUcsTUFBTSxDQUFDLEVBQUUsa0VBQUMsQ0FBQztRQUM3QyxjQUFjO1FBQ0wsb0NBQStCLEdBQUcsTUFBTSxDQUFDLEtBQUssMkVBQUMsQ0FBQztRQUN6RCxjQUFjO1FBQ0wsOEJBQXlCLEdBQUcsTUFBTSxDQUFDLEtBQUsscUVBQUMsQ0FBQztRQUNuRCxjQUFjO1FBQ0wsc0NBQWlDLEdBQUcsTUFBTSxDQUFDLENBQUMsNkVBQUMsQ0FBQztRQUN2RCw4QkFBOEI7UUFDckIsb0JBQWUsR0FBRyxNQUFNLENBQWdCLEVBQUUsMkRBQUMsQ0FBQztRQUNyRCw4QkFBOEI7UUFDOUIseUJBQW9CLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxNQUFNLGdFQUFDLENBQUM7UUFD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U0FBUyxxQkFBcUIsQ0FBQyxLQUFpQixFQUFFLFdBQW1CO0lBQ2pFLE1BQU0sWUFBWSxHQUFtQixFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNwRSxPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFDO0FBQzVDLENBQUM7QUFFRCxjQUFjO0FBQ2QsU0FBUyxrQkFBa0IsQ0FBQyxLQUFpQixFQUFFLFFBQWdCO0lBQzNELE1BQU0sWUFBWSxHQUFtQixFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQztJQUNqRSxPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFDO0FBQzVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBjb21wdXRlZCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZWFyY2hJbnB1dCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2VhcmNoLWZpZWxkJztcbmltcG9ydCBlcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBza2lwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgREVGQVVMVF9UQUJMRV9TVEFURSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uRmlsdGVyLCBDb2xsZWN0aW9uR3JvdXAsIENvbGxlY3Rpb25QYWdlLCBDb2xsZWN0aW9uU29ydCwgVGFibGVTdGF0ZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtcbiAgICBDb2x1bW5zQ2hhbmdlLFxuICAgIEZpbHRlckNoYW5nZSxcbiAgICBGcmVlemVDaGFuZ2UsXG4gICAgR3JvdXBDaGFuZ2UsXG4gICAgUGFnZUNoYW5nZSxcbiAgICBTZWFyY2hDaGFuZ2UsXG4gICAgU29ydENoYW5nZVxufSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgVGFibGVDb2x1bW4gfSBmcm9tICcuLi90YWJsZS1jb2x1bW4nO1xuXG5leHBvcnQgdHlwZSBUYWJsZVN0YXRlQ2hhbmdlID1cbiAgICB8IFRhYmxlU3RhdGVQcm9wZXJ0eTwnc29ydCcsIFNvcnRDaGFuZ2U+XG4gICAgfCBUYWJsZVN0YXRlUHJvcGVydHk8J3BhZ2UnLCBQYWdlQ2hhbmdlPlxuICAgIHwgVGFibGVTdGF0ZVByb3BlcnR5PCdmaWx0ZXInLCBGaWx0ZXJDaGFuZ2U+XG4gICAgfCBUYWJsZVN0YXRlUHJvcGVydHk8J2dyb3VwJywgR3JvdXBDaGFuZ2U+XG4gICAgfCBUYWJsZVN0YXRlUHJvcGVydHk8J2ZyZWV6ZScsIEZyZWV6ZUNoYW5nZT5cbiAgICB8IFRhYmxlU3RhdGVQcm9wZXJ0eTwnY29sdW1ucycsIENvbHVtbnNDaGFuZ2U+XG4gICAgfCBUYWJsZVN0YXRlUHJvcGVydHk8J3NlYXJjaCcsIFNlYXJjaENoYW5nZT47XG5cbmV4cG9ydCB0eXBlIFRhYmxlU3RhdGVQcm9wZXJ0eTxcbiAgICBUID0gJ3NvcnQnIHwgJ3BhZ2UnIHwgJ2ZpbHRlcicgfCAnZ3JvdXAnIHwgJ2ZyZWV6ZScgfCAnY29sdW1ucycgfCAnc2VhcmNoJyxcbiAgICBQID0gU29ydENoYW5nZSB8IFBhZ2VDaGFuZ2UgfCBGaWx0ZXJDaGFuZ2UgfCBHcm91cENoYW5nZSB8IEZyZWV6ZUNoYW5nZSB8IENvbHVtbnNDaGFuZ2Vcbj4gPSB7XG4gICAgdHlwZTogVDtcbiAgICBzdGF0ZTogUDtcbn07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUYWJsZVNlcnZpY2Uge1xuICAgIC8qKiBUYWJsZSBzdGF0ZSBzdHJlYW0uICovXG4gICAgcmVhZG9ubHkgdGFibGVTdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KERFRkFVTFRfVEFCTEVfU1RBVEUpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX3NlbWFudGljSGlnaGxpZ2h0aW5nJCA9IHNpZ25hbCgnJyk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBfaXNGaWx0ZXJpbmdGcm9tSGVhZGVyRGlzYWJsZWQkID0gc2lnbmFsKGZhbHNlKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IF9pc1Nob3duTmF2aWdhdGlvbkNvbHVtbiQgPSBzaWduYWwoZmFsc2UpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX3NlbWFudGljSGlnaGxpZ2h0aW5nQ29sdW1uV2lkdGgkID0gc2lnbmFsKDApO1xuICAgIC8qKiBWaXNpYmxlIGNvbHVtbnMgc3RyZWFtLiAqL1xuICAgIHJlYWRvbmx5IHZpc2libGVDb2x1bW5zJCA9IHNpZ25hbDxUYWJsZUNvbHVtbltdPihbXSk7XG4gICAgLyoqIFZpc2libGUgY29sdW1ucyBsZW5ndGguICovXG4gICAgdmlzaWJsZUNvbHVtbnNMZW5ndGggPSBjb21wdXRlZCgoKSA9PiB0aGlzLnZpc2libGVDb2x1bW5zJCgpLmxlbmd0aCk7XG4gICAgLyoqIFBvcHBpbmcgY29sdW1ucyBzdHJlYW0uICovXG4gICAgcmVhZG9ubHkgcG9wcGluZ0NvbHVtbnMkID0gc2lnbmFsPFRhYmxlQ29sdW1uW10+KFtdKTtcbiAgICAvKiogUG9wcGluZyBjb2x1bW5zIGxlbmd0aC4gKi9cbiAgICBfcG9wcGluZ0NvbHVtbnNMZW5ndGggPSAwO1xuICAgIC8qKiBUYWJsZSBjb2x1bW5zIHN0cmVhbS4gKi9cbiAgICByZWFkb25seSB0YWJsZUNvbHVtbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUYWJsZUNvbHVtbltdPihbXSk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSB0YWJsZVN0YXRlQ2hhbmdlcyQgPSB0aGlzLnRhYmxlU3RhdGUkLnBpcGUoc2tpcCgxKSk7XG4gICAgLyoqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW4gc2VhcmNoIHN0YXRlIGNoYW5nZXMuICovXG4gICAgcmVhZG9ubHkgc2VhcmNoQ2hhbmdlJCA9IG5ldyBTdWJqZWN0PFNlYXJjaENoYW5nZT4oKTtcbiAgICAvKiogU3RyZWFtIHRoYXQgZW1pdHMgd2hlbiBzb3J0IHN0YXRlIGNoYW5nZXMuICovXG4gICAgcmVhZG9ubHkgc29ydENoYW5nZSQgPSBuZXcgU3ViamVjdDxTb3J0Q2hhbmdlPigpO1xuICAgIC8qKiBTdHJlYW0gdGhhdCBlbWl0cyB3aGVuIGZpbHRlciBzdGF0ZSBjaGFuZ2VzLiAqL1xuICAgIHJlYWRvbmx5IGZpbHRlckNoYW5nZSQgPSBuZXcgU3ViamVjdDxGaWx0ZXJDaGFuZ2U+KCk7XG4gICAgLyoqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW4gZ3JvdXAgc3RhdGUgY2hhbmdlcy4gKi9cbiAgICByZWFkb25seSBncm91cENoYW5nZSQgPSBuZXcgU3ViamVjdDxHcm91cENoYW5nZT4oKTtcbiAgICAvKiogU3RyZWFtIHRoYXQgZW1pdHMgd2hlbiBmcmVlemUgc3RhdGUgY2hhbmdlcy4gKi9cbiAgICByZWFkb25seSBmcmVlemVDaGFuZ2UkID0gbmV3IFN1YmplY3Q8RnJlZXplQ2hhbmdlPigpO1xuICAgIC8qKiBTdHJlYW0gdGhhdCBlbWl0cyB3aGVuIGNvbHVtbnMgc3RhdGUgY2hhbmdlcy4gKi9cbiAgICByZWFkb25seSBjb2x1bW5zQ2hhbmdlJCA9IG5ldyBTdWJqZWN0PENvbHVtbnNDaGFuZ2U+KCk7XG4gICAgLyoqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW4gcGFnZSBzdGF0ZSBjaGFuZ2VzLiAqL1xuICAgIHJlYWRvbmx5IHBhZ2VDaGFuZ2UkID0gbmV3IFN1YmplY3Q8UGFnZUNoYW5nZT4oKTtcbiAgICAvKiogU3RyZWFtIHRoYXQgZW1pdHMgd2hlbiBuZXcgZmV0Y2ggb2YgZGF0YSBpcyBuZWVkZWQuICovXG4gICAgcmVhZG9ubHkgbmVlZEZldGNoJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBzdGF0ZUNoYW5nZSQgPSBuZXcgU3ViamVjdDxUYWJsZVN0YXRlQ2hhbmdlPigpO1xuICAgIC8qKiBTdHJlYW0gdGhhdCBlbWl0cyB3aGVuIGxvYWRpbmcgc3RhdGUgY2hhbmdlcy4gKi9cbiAgICByZWFkb25seSB0YWJsZUxvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgLyoqIExpc3RlbiBmb3Igc29mdCBjaGFuZ2VzIGluIHRhYmxlIHN1YmNvbXBvbmVudHMgKG1vc3RseSB0YWJsZSBjb2x1bW4pICovXG4gICAgcmVhZG9ubHkgbWFya0ZvckNoZWNrJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgLyoqIExpc3RlbiBmb3IgaW1tZWRpYXRlIGNoYW5nZXMgaW4gdGFibGUgc3ViY29tcG9uZW50cyAobW9zdGx5IHRhYmxlIGNvbHVtbikgKi9cbiAgICByZWFkb25seSBkZXRlY3RDaGFuZ2VzJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgLyoqIFNvcnQgcnVsZXMgc3RyZWFtLiAqL1xuICAgIHJlYWRvbmx5IHNvcnRSdWxlcyQgPSBzaWduYWw8TWFwPHN0cmluZywgQ29sbGVjdGlvblNvcnQ+PihuZXcgTWFwKCkpO1xuICAgIC8qKlxuICAgICAqIEZpbHRlciBSdWxlcyBNYXAgc3RyZWFtLiBXaGVyZSBrZXkgaXMgY29sdW1uIGtleSwgYW5kIHZhbHVlIGlzIHRoZSBhc3NvY2lhdGVkIGZpbHRlciBydWxlcy5cbiAgICAgKiBNYW55IGZpbHRlcnMgY2FuIGJlIGFwcGxpZWQgdG8gb25lIGNvbHVtbi5cbiAgICAgKi9cbiAgICByZWFkb25seSBmaWx0ZXJSdWxlcyQgPSBzaWduYWw8TWFwPHN0cmluZywgQ29sbGVjdGlvbkZpbHRlcltdPj4obmV3IE1hcCgpKTtcblxuICAgIC8qKlxuICAgICAqIEdyb3VwIFJ1bGVzIE1hcCBzdHJlYW0uIFdoZXJlIGtleSBpcyBjb2x1bW4ga2V5IGFuZCB2YWx1ZSBpcyBhc3NvY2lhdGVkIGdyb3VwIHJ1bGVcbiAgICAgKi9cbiAgICByZWFkb25seSBncm91cFJ1bGVzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFwPHN0cmluZywgQ29sbGVjdGlvbkdyb3VwPj4obmV3IE1hcCgpKTtcblxuICAgIC8qKiBHcm91cCBSdWxlcyBNYXAgc2lnbmFsLiAqL1xuICAgIHJlYWRvbmx5IGdyb3VwUnVsZXMkID0gdG9TaWduYWwodGhpcy5ncm91cFJ1bGVzU3ViamVjdCk7XG5cbiAgICAvKiogR2V0IGN1cnJlbnQgc3RhdGUvc2V0dGluZ3Mgb2YgdGhlIFRhYmxlLiAqL1xuICAgIGdldFRhYmxlU3RhdGUoKTogVGFibGVTdGF0ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYmxlU3RhdGUkLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqIFNldCBjdXJyZW50IHN0YXRlL3NldHRpbmdzIG9mIHRoZSBUYWJsZS4gKi9cbiAgICBzZXRUYWJsZVN0YXRlKHN0YXRlOiBUYWJsZVN0YXRlKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGFibGVTdGF0ZSQubmV4dChzdGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqIFNldCBjdXJyZW50IGxvYWRpbmcgc3RhdGUgb2YgdGhlIFRhYmxlLiAqL1xuICAgIHNldFRhYmxlTG9hZGluZyhpc0xvYWRpbmc6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy50YWJsZUxvYWRpbmckLm5leHQoaXNMb2FkaW5nKTtcbiAgICB9XG5cbiAgICAvKiogTm90aWZ5IGFib3V0IGNoYW5nZXMgaW4gdGFibGUgc3ViY29tcG9uZW50cyAobW9zdGx5IHRhYmxlIGNvbHVtbikgYW5kIGRldGVjdCB0aGVtIG9uIG5leHQgZGV0ZWN0b3IgY2hlY2suICovXG4gICAgbWFya0ZvckNoZWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1hcmtGb3JDaGVjayQubmV4dCgpO1xuICAgIH1cblxuICAgIC8qKiBOb3RpZnkgYWJvdXQgY2hhbmdlcyBpbiB0YWJsZSBzdWJjb21wb25lbnRzIChtb3N0bHkgdGFibGUgY29sdW1uKSBhbmQgZGV0ZWN0IHRoZW0gaW1tZWRpYXRlbHkuICovXG4gICAgZGV0ZWN0Q2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXRlY3RDaGFuZ2VzJC5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqIFNlYXJjaCAqL1xuICAgIHNlYXJjaChzZWFyY2hJbnB1dDogU2VhcmNoSW5wdXQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy5nZXRUYWJsZVN0YXRlKCk7XG5cbiAgICAgICAgY29uc3Qgc3RhdGU6IFRhYmxlU3RhdGUgPSB7IC4uLnByZXZTdGF0ZSwgc2VhcmNoSW5wdXQgfTtcblxuICAgICAgICB0aGlzLnNldFRhYmxlU3RhdGUoc2V0Q3VycmVudFBhZ2VUb1N0YXRlKHN0YXRlLCAxKSk7XG5cbiAgICAgICAgY29uc3QgZXZ0ID0geyBjdXJyZW50OiBzZWFyY2hJbnB1dCwgcHJldmlvdXM6IHByZXZTdGF0ZS5zZWFyY2hJbnB1dCB9O1xuXG4gICAgICAgIHRoaXMubmVlZEZldGNoJC5uZXh0KCk7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2UkLm5leHQoeyB0eXBlOiAnc2VhcmNoJywgc3RhdGU6IGV2dCB9KTtcbiAgICAgICAgdGhpcy5zZWFyY2hDaGFuZ2UkLm5leHQoZXZ0KTtcbiAgICB9XG5cbiAgICAvKiogU2V0IG5ldyBzb3J0IHJ1bGVzICovXG4gICAgc2V0U29ydChzb3J0UnVsZXM6IENvbGxlY3Rpb25Tb3J0W10gfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy5nZXRUYWJsZVN0YXRlKCk7XG4gICAgICAgIGNvbnN0IHByZXZTb3J0UnVsZXMgPSAocHJldlN0YXRlICYmIHByZXZTdGF0ZS5zb3J0QnkpIHx8IFtdO1xuXG4gICAgICAgIGNvbnN0IG5ld1NvcnRSdWxlczogQ29sbGVjdGlvblNvcnRbXSA9IHNvcnRSdWxlcyA/IFsuLi5zb3J0UnVsZXNdIDogW107XG5cbiAgICAgICAgY29uc3Qgc3RhdGU6IFRhYmxlU3RhdGUgPSB7IC4uLnByZXZTdGF0ZSwgc29ydEJ5OiBuZXdTb3J0UnVsZXMgfTtcblxuICAgICAgICBpZiAoIWVxdWFsKHByZXZTb3J0UnVsZXMsIHN0YXRlLnNvcnRCeSkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VGFibGVTdGF0ZShzZXRDdXJyZW50UGFnZVRvU3RhdGUoc3RhdGUsIDEpKTtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRTb3J0UnVsZXNNYXAoKTtcbiAgICAgICAgICAgIGNvbnN0IGV2dCA9IHsgY3VycmVudDogc3RhdGUuc29ydEJ5LCBwcmV2aW91czogcHJldlNvcnRSdWxlcyB9O1xuICAgICAgICAgICAgdGhpcy5idWlsZFNvcnRSdWxlc01hcCgpO1xuXG4gICAgICAgICAgICB0aGlzLm5lZWRGZXRjaCQubmV4dCgpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZSQubmV4dCh7IHR5cGU6ICdzb3J0Jywgc3RhdGU6IGV2dCB9KTtcbiAgICAgICAgICAgIHRoaXMuc29ydENoYW5nZSQubmV4dChldnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEFkZCBzb3J0IHJ1bGVzIHRvIHRoZSBleGlzdGluZyBvbmVzICovXG4gICAgYWRkU29ydChzb3J0UnVsZXM6IENvbGxlY3Rpb25Tb3J0W10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy5nZXRUYWJsZVN0YXRlKCk7XG4gICAgICAgIGNvbnN0IHByZXZTb3J0UnVsZXMgPSAocHJldlN0YXRlICYmIHByZXZTdGF0ZS5zb3J0QnkpIHx8IFtdO1xuXG4gICAgICAgIGNvbnN0IG5ld1NvcnRSdWxlczogQ29sbGVjdGlvblNvcnRbXSA9IFtcbiAgICAgICAgICAgIC4uLnByZXZTb3J0UnVsZXMuZmlsdGVyKChleGlzdGluZykgPT4gIXNvcnRSdWxlcy5maW5kKCh7IGZpZWxkIH0pID0+IGZpZWxkID09PSBleGlzdGluZy5maWVsZCkpLFxuICAgICAgICAgICAgLi4uc29ydFJ1bGVzXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3Qgc3RhdGU6IFRhYmxlU3RhdGUgPSB7IC4uLnByZXZTdGF0ZSwgc29ydEJ5OiBuZXdTb3J0UnVsZXMgfTtcblxuICAgICAgICBpZiAoIWVxdWFsKHByZXZTb3J0UnVsZXMsIHN0YXRlLnNvcnRCeSkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VGFibGVTdGF0ZShzZXRDdXJyZW50UGFnZVRvU3RhdGUoc3RhdGUsIDEpKTtcbiAgICAgICAgICAgIGNvbnN0IGV2dCA9IHsgY3VycmVudDogc3RhdGUuc29ydEJ5LCBwcmV2aW91czogcHJldlNvcnRSdWxlcyB9O1xuICAgICAgICAgICAgdGhpcy5idWlsZFNvcnRSdWxlc01hcCgpO1xuXG4gICAgICAgICAgICB0aGlzLm5lZWRGZXRjaCQubmV4dCgpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZSQubmV4dCh7IHR5cGU6ICdzb3J0Jywgc3RhdGU6IGV2dCB9KTtcbiAgICAgICAgICAgIHRoaXMuc29ydENoYW5nZSQubmV4dChldnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFNldCBuZXcgZmlsdGVyIHJ1bGVzICovXG4gICAgc2V0RmlsdGVycyhmaWx0ZXJSdWxlczogQ29sbGVjdGlvbkZpbHRlcltdIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHByZXZTdGF0ZSA9IHRoaXMuZ2V0VGFibGVTdGF0ZSgpO1xuICAgICAgICBjb25zdCBwcmV2RmlsdGVyUnVsZXMgPSAocHJldlN0YXRlICYmIHByZXZTdGF0ZS5maWx0ZXJCeSkgfHwgW107XG5cbiAgICAgICAgY29uc3QgbmV3RmlsdGVyUnVsZXM6IENvbGxlY3Rpb25GaWx0ZXJbXSA9IGZpbHRlclJ1bGVzXG4gICAgICAgICAgICA/IGZpbHRlclJ1bGVzLm1hcCgocnVsZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgIC4uLnJ1bGUsXG4gICAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IHRoaXMuX2dldEZpZWxkTmFtZShydWxlLmZpZWxkLCBydWxlLmZpZWxkTmFtZSlcbiAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICA6IFtdO1xuICAgICAgICBjb25zdCBzdGF0ZTogVGFibGVTdGF0ZSA9IHsgLi4ucHJldlN0YXRlLCBmaWx0ZXJCeTogbmV3RmlsdGVyUnVsZXMgfTtcblxuICAgICAgICBpZiAoIWVxdWFsKHByZXZGaWx0ZXJSdWxlcywgc3RhdGUuZmlsdGVyQnkpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFRhYmxlU3RhdGUoc2V0Q3VycmVudFBhZ2VUb1N0YXRlKHN0YXRlLCAxKSk7XG4gICAgICAgICAgICBjb25zdCBldnQgPSB7IGN1cnJlbnQ6IHN0YXRlLmZpbHRlckJ5LCBwcmV2aW91czogcHJldkZpbHRlclJ1bGVzIH07XG5cbiAgICAgICAgICAgIHRoaXMuYnVpbGRGaWx0ZXJSdWxlc01hcCgpO1xuICAgICAgICAgICAgdGhpcy5uZWVkRmV0Y2gkLm5leHQoKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2UkLm5leHQoeyB0eXBlOiAnZmlsdGVyJywgc3RhdGU6IGV2dCB9KTtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyQ2hhbmdlJC5uZXh0KGV2dCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQWRkIGZpbHRlciBydWxlcyB0byB0aGUgZXhpc3Rpbmcgb25lcyAqL1xuICAgIGFkZEZpbHRlcnMocnVsZXNUb0FkZDogQ29sbGVjdGlvbkZpbHRlcltdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHByZXZTdGF0ZSA9IHRoaXMuZ2V0VGFibGVTdGF0ZSgpO1xuICAgICAgICBjb25zdCBwcmV2RmlsdGVyUnVsZXMgPSAocHJldlN0YXRlICYmIHByZXZTdGF0ZS5maWx0ZXJCeSkgfHwgW107XG5cbiAgICAgICAgY29uc3QgbmV3RmlsdGVyUnVsZXM6IENvbGxlY3Rpb25GaWx0ZXJbXSA9IFtcbiAgICAgICAgICAgIC4uLnByZXZGaWx0ZXJSdWxlcy5maWx0ZXIoKGV4aXN0aW5nKSA9PiAhcnVsZXNUb0FkZC5maW5kKCh7IGZpZWxkIH0pID0+IGZpZWxkID09PSBleGlzdGluZy5maWVsZCkpLFxuICAgICAgICAgICAgLi4ucnVsZXNUb0FkZC5tYXAoKHJ1bGUpID0+ICh7XG4gICAgICAgICAgICAgICAgLi4ucnVsZSxcbiAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IHRoaXMuX2dldEZpZWxkTmFtZShydWxlLmZpZWxkLCBydWxlLmZpZWxkTmFtZSlcbiAgICAgICAgICAgIH0pKVxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IHN0YXRlOiBUYWJsZVN0YXRlID0geyAuLi5wcmV2U3RhdGUsIGZpbHRlckJ5OiBuZXdGaWx0ZXJSdWxlcyB9O1xuXG4gICAgICAgIGlmICghZXF1YWwocHJldkZpbHRlclJ1bGVzLCBzdGF0ZS5maWx0ZXJCeSkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VGFibGVTdGF0ZShzZXRDdXJyZW50UGFnZVRvU3RhdGUoc3RhdGUsIDEpKTtcbiAgICAgICAgICAgIGNvbnN0IGV2dCA9IHsgY3VycmVudDogc3RhdGUuZmlsdGVyQnksIHByZXZpb3VzOiBwcmV2RmlsdGVyUnVsZXMgfTtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRGaWx0ZXJSdWxlc01hcCgpO1xuXG4gICAgICAgICAgICB0aGlzLm5lZWRGZXRjaCQubmV4dCgpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZSQubmV4dCh7IHR5cGU6ICdmaWx0ZXInLCBzdGF0ZTogZXZ0IH0pO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJDaGFuZ2UkLm5leHQoZXZ0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBSZW1vdmVzIGZpbHRlcnMgZm9yIHRoZSBwcm92aWRlZCBmaWVsZHMgKi9cbiAgICByZW1vdmVGaWx0ZXJzKGZpZWxkczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy5nZXRUYWJsZVN0YXRlKCk7XG4gICAgICAgIGNvbnN0IHByZXZGaWx0ZXJSdWxlcyA9IChwcmV2U3RhdGUgJiYgcHJldlN0YXRlLmZpbHRlckJ5KSB8fCBbXTtcblxuICAgICAgICBjb25zdCBuZXdGaWx0ZXJSdWxlczogQ29sbGVjdGlvbkZpbHRlcltdID0gcHJldkZpbHRlclJ1bGVzLmZpbHRlcihcbiAgICAgICAgICAgIChleGlzdGluZykgPT4gIWZpZWxkcy5pbmNsdWRlcyhleGlzdGluZy5maWVsZClcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBzdGF0ZTogVGFibGVTdGF0ZSA9IHsgLi4ucHJldlN0YXRlLCBmaWx0ZXJCeTogbmV3RmlsdGVyUnVsZXMgfTtcblxuICAgICAgICB0aGlzLnNldFRhYmxlU3RhdGUoc2V0Q3VycmVudFBhZ2VUb1N0YXRlKHN0YXRlLCAxKSk7XG4gICAgICAgIGNvbnN0IGV2dCA9IHsgY3VycmVudDogc3RhdGUuZmlsdGVyQnksIHByZXZpb3VzOiBwcmV2RmlsdGVyUnVsZXMgfTtcbiAgICAgICAgdGhpcy5idWlsZEZpbHRlclJ1bGVzTWFwKCk7XG5cbiAgICAgICAgdGhpcy5uZWVkRmV0Y2gkLm5leHQoKTtcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZSQubmV4dCh7IHR5cGU6ICdmaWx0ZXInLCBzdGF0ZTogZXZ0IH0pO1xuICAgICAgICB0aGlzLmZpbHRlckNoYW5nZSQubmV4dChldnQpO1xuICAgIH1cblxuICAgIC8qKiBTZXQgZ3JvdXAgcnVsZXMgKi9cbiAgICBzZXRHcm91cHMoZ3JvdXBzOiBDb2xsZWN0aW9uR3JvdXBbXSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLmdldFRhYmxlU3RhdGUoKTtcbiAgICAgICAgY29uc3QgcHJldkdyb3VwcyA9IChwcmV2U3RhdGUgJiYgcHJldlN0YXRlLmdyb3VwQnkpIHx8IFtdO1xuXG4gICAgICAgIGNvbnN0IG5ld0dyb3VwczogQ29sbGVjdGlvbkdyb3VwW10gPSBncm91cHMgPyBbLi4uZ3JvdXBzXSA6IFtdO1xuICAgICAgICBjb25zdCBzdGF0ZTogVGFibGVTdGF0ZSA9IHsgLi4ucHJldlN0YXRlLCBncm91cEJ5OiBuZXdHcm91cHMgfTtcblxuICAgICAgICBpZiAoIWVxdWFsKHByZXZHcm91cHMsIHN0YXRlLmdyb3VwQnkpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFRhYmxlU3RhdGUoc3RhdGUpO1xuICAgICAgICAgICAgY29uc3QgZXZ0ID0geyBjdXJyZW50OiBzdGF0ZS5ncm91cEJ5LCBwcmV2aW91czogcHJldkdyb3VwcyB9O1xuICAgICAgICAgICAgdGhpcy5idWlsZEdyb3VwUnVsZXNNYXAoKTtcblxuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZSQubmV4dCh7IHR5cGU6ICdncm91cCcsIHN0YXRlOiBldnQgfSk7XG4gICAgICAgICAgICB0aGlzLmdyb3VwQ2hhbmdlJC5uZXh0KGV2dCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQWRkIGdyb3VwIHJ1bGVzIHRvIHRoZSBleGlzdGluZyBvbmVzICovXG4gICAgYWRkR3JvdXBzKGdyb3Vwc1RvQWRkOiBDb2xsZWN0aW9uR3JvdXBbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLmdldFRhYmxlU3RhdGUoKTtcbiAgICAgICAgY29uc3QgcHJldkdyb3VwcyA9IChwcmV2U3RhdGUgJiYgcHJldlN0YXRlLmdyb3VwQnkpIHx8IFtdO1xuXG4gICAgICAgIGNvbnN0IG5ld0dyb3VwczogQ29sbGVjdGlvbkdyb3VwW10gPSBbXG4gICAgICAgICAgICAuLi5wcmV2R3JvdXBzLmZpbHRlcigoZXhpc3RpbmcpID0+ICFncm91cHNUb0FkZC5maW5kKCh7IGZpZWxkIH0pID0+IGZpZWxkID09PSBleGlzdGluZy5maWVsZCkpLFxuICAgICAgICAgICAgLi4uZ3JvdXBzVG9BZGRcbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBzdGF0ZTogVGFibGVTdGF0ZSA9IHsgLi4ucHJldlN0YXRlLCBncm91cEJ5OiBuZXdHcm91cHMgfTtcblxuICAgICAgICBpZiAoIWVxdWFsKHByZXZHcm91cHMsIHN0YXRlLmdyb3VwQnkpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFRhYmxlU3RhdGUoc3RhdGUpO1xuICAgICAgICAgICAgdGhpcy5idWlsZEdyb3VwUnVsZXNNYXAoKTtcblxuICAgICAgICAgICAgY29uc3QgZXZ0ID0geyBjdXJyZW50OiBzdGF0ZS5ncm91cEJ5LCBwcmV2aW91czogcHJldkdyb3VwcyB9O1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZSQubmV4dCh7IHR5cGU6ICdncm91cCcsIHN0YXRlOiBldnQgfSk7XG4gICAgICAgICAgICB0aGlzLmdyb3VwQ2hhbmdlJC5uZXh0KGV2dCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogRnJlZXplIHRhYmxlIHRvIGNvbHVtbiAqL1xuICAgIGZyZWV6ZVRvKGNvbHVtbk5hbWU6IHN0cmluZyB8IG51bGwsIGVuZD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy5nZXRUYWJsZVN0YXRlKCk7XG5cbiAgICAgICAgaWYgKCFlbmQpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VGFibGVTdGF0ZSh7IC4uLnByZXZTdGF0ZSwgZnJlZXplVG9Db2x1bW46IGNvbHVtbk5hbWUgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldFRhYmxlU3RhdGUoeyAuLi5wcmV2U3RhdGUsIGZyZWV6ZVRvRW5kQ29sdW1uOiBjb2x1bW5OYW1lIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXZ0ID0ge1xuICAgICAgICAgICAgY3VycmVudDogY29sdW1uTmFtZSxcbiAgICAgICAgICAgIHByZXZpb3VzOiBlbmQgPyBwcmV2U3RhdGUuZnJlZXplVG9FbmRDb2x1bW4gOiBwcmV2U3RhdGUuZnJlZXplVG9Db2x1bW5cbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlJC5uZXh0KHsgdHlwZTogJ2ZyZWV6ZScsIHN0YXRlOiBldnQgfSk7XG4gICAgICAgIHRoaXMuZnJlZXplQ2hhbmdlJC5uZXh0KGV2dCk7XG4gICAgfVxuXG4gICAgLyoqIFNldCB0YWJsZSBjb2x1bW5zICovXG4gICAgc2V0Q29sdW1ucyhjb2x1bW5zOiBzdHJpbmdbXSwga2V5czogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy5nZXRUYWJsZVN0YXRlKCk7XG4gICAgICAgIGNvbnN0IHByZXZDb2x1bW5zID0gKHByZXZTdGF0ZSAmJiBwcmV2U3RhdGUuY29sdW1ucykgfHwgW107XG5cbiAgICAgICAgY29uc3QgbmV3Q29sdW1ucyA9IFsuLi5jb2x1bW5zXTtcbiAgICAgICAgY29uc3QgbmV3Q29sdW1uS2V5cyA9IFsuLi5rZXlzXTtcbiAgICAgICAgY29uc3Qgc3RhdGU6IFRhYmxlU3RhdGUgPSB7IC4uLnByZXZTdGF0ZSwgY29sdW1uczogbmV3Q29sdW1ucywgY29sdW1uS2V5czogbmV3Q29sdW1uS2V5cyB9O1xuXG4gICAgICAgIGlmICghZXF1YWwocHJldkNvbHVtbnMsIHN0YXRlLmNvbHVtbnMpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFRhYmxlU3RhdGUoc3RhdGUpO1xuXG4gICAgICAgICAgICBjb25zdCBldnQgPSB7IGN1cnJlbnQ6IHN0YXRlLmNvbHVtbnMsIHByZXZpb3VzOiBwcmV2Q29sdW1ucyB9O1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZSQubmV4dCh7IHR5cGU6ICdjb2x1bW5zJywgc3RhdGU6IGV2dCB9KTtcbiAgICAgICAgICAgIHRoaXMuY29sdW1uc0NoYW5nZSQubmV4dChldnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFNldCBwYWdlLiAqL1xuICAgIHNldEN1cnJlbnRQYWdlKGN1cnJlbnRQYWdlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy5nZXRUYWJsZVN0YXRlKCk7XG4gICAgICAgIGNvbnN0IHByZXZQYWdlU3RhdGUgPSBwcmV2U3RhdGUucGFnZTtcblxuICAgICAgICBpZiAocHJldlBhZ2VTdGF0ZS5jdXJyZW50UGFnZSA9PT0gY3VycmVudFBhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN0YXRlOiBUYWJsZVN0YXRlID0gc2V0Q3VycmVudFBhZ2VUb1N0YXRlKHByZXZTdGF0ZSwgY3VycmVudFBhZ2UpO1xuXG4gICAgICAgIHRoaXMuc2V0VGFibGVTdGF0ZShzdGF0ZSk7XG4gICAgICAgIGNvbnN0IGV2dCA9IHsgY3VycmVudDogc3RhdGUucGFnZSwgcHJldmlvdXM6IHByZXZQYWdlU3RhdGUgfTtcblxuICAgICAgICB0aGlzLm5lZWRGZXRjaCQubmV4dCgpO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlJC5uZXh0KHsgdHlwZTogJ3BhZ2UnLCBzdGF0ZTogZXZ0IH0pO1xuICAgICAgICB0aGlzLnBhZ2VDaGFuZ2UkLm5leHQoZXZ0KTtcbiAgICB9XG5cbiAgICAvKiogU2V0IGl0ZW1zIHBlciBwYWdlLiAqL1xuICAgIHNldEl0ZW1zUGVyUGFnZShpdGVtc1BlclBhZ2U6IG51bWJlciwgcmVzZXRQYWdlTnVtYmVyID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLmdldFRhYmxlU3RhdGUoKTtcbiAgICAgICAgY29uc3QgcHJldlBhZ2VTdGF0ZSA9IHByZXZTdGF0ZS5wYWdlO1xuXG4gICAgICAgIGlmIChwcmV2UGFnZVN0YXRlLnBhZ2VTaXplID09PSBpdGVtc1BlclBhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzdGF0ZTogVGFibGVTdGF0ZSA9IHNldFBhZ2VTaXplVG9TdGF0ZShwcmV2U3RhdGUsIGl0ZW1zUGVyUGFnZSk7XG5cbiAgICAgICAgaWYgKHJlc2V0UGFnZU51bWJlcikge1xuICAgICAgICAgICAgc3RhdGUgPSBzZXRDdXJyZW50UGFnZVRvU3RhdGUoc3RhdGUsIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRUYWJsZVN0YXRlKHN0YXRlKTtcbiAgICAgICAgY29uc3QgZXZ0ID0geyBjdXJyZW50OiBzdGF0ZS5wYWdlLCBwcmV2aW91czogcHJldlBhZ2VTdGF0ZSB9O1xuXG4gICAgICAgIHRoaXMubmVlZEZldGNoJC5uZXh0KCk7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2UkLm5leHQoeyB0eXBlOiAncGFnZScsIHN0YXRlOiBldnQgfSk7XG4gICAgICAgIHRoaXMucGFnZUNoYW5nZSQubmV4dChldnQpO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIGRlZmF1bHQgdGFibGUgc3RhdGUuICovXG4gICAgZ2V0RGVmYXVsdFN0YXRlKCk6IFRhYmxlU3RhdGUge1xuICAgICAgICBjb25zdCB0YWJsZVN0YXRlID0gdGhpcy5nZXRUYWJsZVN0YXRlKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb2x1bW5LZXlzOiB0YWJsZVN0YXRlLmNvbHVtbktleXMsXG4gICAgICAgICAgICBzb3J0Qnk6IFtdLFxuICAgICAgICAgICAgZmlsdGVyQnk6IFtdLFxuICAgICAgICAgICAgZ3JvdXBCeTogW10sXG4gICAgICAgICAgICBjb2x1bW5zOiB0YWJsZVN0YXRlLmNvbHVtbnMsXG4gICAgICAgICAgICBzZWFyY2hJbnB1dDoge1xuICAgICAgICAgICAgICAgIGNhdGVnb3J5OiBudWxsLFxuICAgICAgICAgICAgICAgIHRleHQ6ICcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZnJlZXplVG9Db2x1bW46IG51bGwsXG4gICAgICAgICAgICBmcmVlemVUb0VuZENvbHVtbjogbnVsbCxcbiAgICAgICAgICAgIHBhZ2U6IHtcbiAgICAgICAgICAgICAgICBwYWdlU2l6ZTogMCxcbiAgICAgICAgICAgICAgICBjdXJyZW50UGFnZTogMVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNjcm9sbFRvcFBvc2l0aW9uOiAwXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2hhcmVzIHZpc2libGUgY29sdW1ucyBhcnJheSBhY3Jvc3MgbGlzdGVuZXJzLlxuICAgICAqIEBwYXJhbSBjb2x1bW5zIFZpc2libGUgY29sdW1ucyB0byBzaGFyZS5cbiAgICAgKi9cbiAgICBzZXRWaXNpYmxlQ29sdW1ucyhjb2x1bW5zOiBUYWJsZUNvbHVtbltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlzaWJsZUNvbHVtbnMkLnNldChjb2x1bW5zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaGFyZXMgcG9wcGluZyBjb2x1bW5zIGFycmF5IGFjcm9zcyBsaXN0ZW5lcnMuXG4gICAgICogQHBhcmFtIGNvbHVtbnMgUG9wcGluZyBjb2x1bW5zIHRvIHNoYXJlLlxuICAgICAqL1xuICAgIHNldFBvcHBpbmdDb2x1bW5zKGNvbHVtbnM6IFRhYmxlQ29sdW1uW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wb3BwaW5nQ29sdW1ucyQuc2V0KGNvbHVtbnMpO1xuICAgICAgICB0aGlzLl9wb3BwaW5nQ29sdW1uc0xlbmd0aCA9IGNvbHVtbnMubGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgZ3JvdXBpbmcgcnVsZXMgYmFzZWQgb24gdGhlIHRhYmxlIHN0YXRlLlxuICAgICAqIEBwYXJhbSBzdGF0ZSBUYWJsZSBzdGF0ZS5cbiAgICAgKi9cbiAgICBidWlsZEdyb3VwUnVsZXNNYXAoc3RhdGUgPSB0aGlzLmdldFRhYmxlU3RhdGUoKSk6IHZvaWQge1xuICAgICAgICBjb25zdCBncm91cE1hcCA9IG5ldyBNYXAoc3RhdGUuZ3JvdXBCeS5tYXAoKHJ1bGUpID0+IFtydWxlLmZpZWxkLCBydWxlXSkpO1xuICAgICAgICB0aGlzLmdyb3VwUnVsZXNTdWJqZWN0Lm5leHQoZ3JvdXBNYXApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgc29ydGluZyBydWxlcyBiYXNlZCBvbiB0aGUgdGFibGUgc3RhdGUuXG4gICAgICogQHBhcmFtIHN0YXRlIFRhYmxlIHN0YXRlXG4gICAgICovXG4gICAgYnVpbGRTb3J0UnVsZXNNYXAoc3RhdGUgPSB0aGlzLmdldFRhYmxlU3RhdGUoKSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNvcnRSdWxlcyQuc2V0KG5ldyBNYXAoc3RhdGUuc29ydEJ5LmZpbHRlcigocnVsZSkgPT4gcnVsZS5maWVsZCkubWFwKChydWxlKSA9PiBbcnVsZS5maWVsZCEsIHJ1bGVdKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgZmlsdGVyIHJ1bGVzIGJhc2VkIG9uIHRoZSB0YWJsZSBzdGF0ZS5cbiAgICAgKiBAcGFyYW0gc3RhdGUgVGFibGUgc3RhdGUuXG4gICAgICovXG4gICAgYnVpbGRGaWx0ZXJSdWxlc01hcChzdGF0ZSA9IHRoaXMuZ2V0VGFibGVTdGF0ZSgpKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZpbHRlclJ1bGVzV2l0aEZpZWxkTmFtZXMgPSBzdGF0ZS5maWx0ZXJCeS5tYXAoKHJ1bGUpID0+ICh7XG4gICAgICAgICAgICAuLi5ydWxlLFxuICAgICAgICAgICAgZmllbGROYW1lOiB0aGlzLl9nZXRGaWVsZE5hbWUocnVsZS5maWVsZCwgcnVsZS5maWVsZE5hbWUpXG4gICAgICAgIH0pKTtcbiAgICAgICAgdGhpcy5maWx0ZXJSdWxlcyQuc2V0KFxuICAgICAgICAgICAgZmlsdGVyUnVsZXNXaXRoRmllbGROYW1lcy5yZWR1Y2UoKGhhc2gsIHJ1bGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBydWxlLmZpZWxkO1xuICAgICAgICAgICAgICAgIGlmICghaGFzaC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICBoYXNoLnNldChrZXksIFtdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaGFzaC5nZXQoa2V5KT8ucHVzaChydWxlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFzaDtcbiAgICAgICAgICAgIH0sIG5ldyBNYXA8c3RyaW5nLCBDb2xsZWN0aW9uRmlsdGVyW10+KCkpXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGV2dCA9IHsgY3VycmVudDogZmlsdGVyUnVsZXNXaXRoRmllbGROYW1lcywgcHJldmlvdXM6IHN0YXRlLmZpbHRlckJ5IH07XG5cbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZSQubmV4dCh7IHR5cGU6ICdmaWx0ZXInLCBzdGF0ZTogZXZ0IH0pO1xuICAgIH1cblxuICAgIC8qKiBSZXNldCBhbGwgZmlsdGVyIHJ1bGVzICovXG4gICAgcmVzZXRGaWx0ZXJzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLmdldFRhYmxlU3RhdGUoKTtcbiAgICAgICAgY29uc3QgcHJldkZpbHRlclJ1bGVzID0gKHByZXZTdGF0ZSAmJiBwcmV2U3RhdGUuZmlsdGVyQnkpIHx8IFtdO1xuXG4gICAgICAgIGNvbnN0IG5ld0ZpbHRlclJ1bGVzOiBDb2xsZWN0aW9uRmlsdGVyW10gPSBbXTtcbiAgICAgICAgY29uc3Qgc3RhdGU6IFRhYmxlU3RhdGUgPSB7IC4uLnByZXZTdGF0ZSwgZmlsdGVyQnk6IG5ld0ZpbHRlclJ1bGVzIH07XG5cbiAgICAgICAgaWYgKCFlcXVhbChwcmV2RmlsdGVyUnVsZXMsIHN0YXRlLmZpbHRlckJ5KSkge1xuICAgICAgICAgICAgdGhpcy5zZXRUYWJsZVN0YXRlKHNldEN1cnJlbnRQYWdlVG9TdGF0ZShzdGF0ZSwgMSkpO1xuICAgICAgICAgICAgY29uc3QgZXZ0ID0geyBjdXJyZW50OiBzdGF0ZS5maWx0ZXJCeSwgcHJldmlvdXM6IHByZXZGaWx0ZXJSdWxlcyB9O1xuXG4gICAgICAgICAgICB0aGlzLmJ1aWxkRmlsdGVyUnVsZXNNYXAoKTtcbiAgICAgICAgICAgIHRoaXMubmVlZEZldGNoJC5uZXh0KCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlJC5uZXh0KHsgdHlwZTogJ2ZpbHRlcicsIHN0YXRlOiBldnQgfSk7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckNoYW5nZSQubmV4dChldnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBiYXNlIHRhYmxlIGNvbmZpZy5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RUYWJsZU1ldGFkYXRhKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1aWxkR3JvdXBSdWxlc01hcCgpO1xuICAgICAgICB0aGlzLmJ1aWxkU29ydFJ1bGVzTWFwKCk7XG4gICAgICAgIHRoaXMuYnVpbGRGaWx0ZXJSdWxlc01hcCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0RmllbGROYW1lKGZpZWxkOiBzdHJpbmcsIGZpZWxkTmFtZTogTnVsbGFibGU8c3RyaW5nPik6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMudGFibGVDb2x1bW5zJC5nZXRWYWx1ZSgpLmZpbmQoKGNvbCkgPT4gY29sLmtleSA9PT0gZmllbGQpO1xuICAgICAgICByZXR1cm4gY29sdW1uID8gY29sdW1uLm5hbWUgOiAoZmllbGROYW1lID8/IGZpZWxkKTtcbiAgICB9XG59XG5cbi8qKiBAaGlkZGVuICovXG5mdW5jdGlvbiBzZXRDdXJyZW50UGFnZVRvU3RhdGUoc3RhdGU6IFRhYmxlU3RhdGUsIGN1cnJlbnRQYWdlOiBudW1iZXIpOiBUYWJsZVN0YXRlIHtcbiAgICBjb25zdCBuZXdQYWdlU3RhdGU6IENvbGxlY3Rpb25QYWdlID0geyAuLi5zdGF0ZS5wYWdlLCBjdXJyZW50UGFnZSB9O1xuICAgIHJldHVybiB7IC4uLnN0YXRlLCBwYWdlOiBuZXdQYWdlU3RhdGUgfTtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmZ1bmN0aW9uIHNldFBhZ2VTaXplVG9TdGF0ZShzdGF0ZTogVGFibGVTdGF0ZSwgcGFnZVNpemU6IG51bWJlcik6IFRhYmxlU3RhdGUge1xuICAgIGNvbnN0IG5ld1BhZ2VTdGF0ZTogQ29sbGVjdGlvblBhZ2UgPSB7IC4uLnN0YXRlLnBhZ2UsIHBhZ2VTaXplIH07XG4gICAgcmV0dXJuIHsgLi4uc3RhdGUsIHBhZ2U6IG5ld1BhZ2VTdGF0ZSB9O1xufVxuIl19","import { DestroyRef, ElementRef, Inject, Injectable, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { resizeObservable } from '@fundamental-ngx/cdk/utils';\nimport { debounceTime } from 'rxjs/operators';\nimport { Table } from '../table';\nimport { TableService } from './table.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./table.service\";\nimport * as i2 from \"../table\";\nexport class TableResponsiveService {\n /** @hidden */\n constructor(_table, _tableService, _elmRef) {\n this._table = _table;\n this._tableService = _tableService;\n this._elmRef = _elmRef;\n /** @hidden */\n this._responsiveBreakpoints = new Map();\n /** @hidden */\n this._destroyRef = inject(DestroyRef);\n }\n /**\n * Registers responsive column with it's breakpoint configuration.\n * @param column Table Column\n * @param breakpoints Breakpoint configuration.\n */\n registerResponsiveColumn(column, breakpoints) {\n this._responsiveBreakpoints.set(column, this._normalizeBreakpoints(breakpoints));\n this._listenToTableResize();\n }\n /**\n * @hidden\n * Transforms plain breakpoints into a list with minimal/maximal element width with it's visibility state.\n */\n _normalizeBreakpoints(breakpoints) {\n const sortedBreakpoints = Object.keys(breakpoints)\n .map((i) => parseInt(i, 10))\n .sort((a, b) => a - b);\n const newBreakpoints = sortedBreakpoints.reduce((result, value, index, array) => {\n result.push({\n min: value,\n max: index + 1 < array.length ? array[index + 1] - 1 : Infinity,\n visibility: breakpoints[value.toString()]\n });\n return result;\n }, []);\n return newBreakpoints;\n }\n /**\n * @hidden\n * Listens to the table element resize and calculates columns visibility based on the current breakpoint.\n */\n _listenToTableResize() {\n this._resizeSubscription?.unsubscribe();\n this._resizeSubscription = resizeObservable(this._elmRef.nativeElement)\n .pipe(debounceTime(20), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._processResponsiveColumns();\n });\n }\n /** @hidden */\n _processResponsiveColumns() {\n let shouldNotify = false;\n const { width } = this._elmRef.nativeElement.getBoundingClientRect();\n this._responsiveBreakpoints.forEach((breakpoints, item) => {\n const fittingBreakpoint = breakpoints.find((breakpoint) => breakpoint.min <= width && breakpoint.max >= width);\n if (fittingBreakpoint) {\n shouldNotify = shouldNotify || item.responsiveState !== fittingBreakpoint.visibility;\n item.responsiveState = fittingBreakpoint.visibility;\n }\n });\n // Notify only when there's actual visibility changes to any of the columns.\n if (!shouldNotify) {\n return;\n }\n const currentTableColumns = this._table.getVisibleTableColumns().map((column) => column.name);\n this._tableService.stateChange$.next({\n type: 'columns',\n state: { previous: currentTableColumns, current: currentTableColumns }\n });\n this._tableService.columnsChange$.next({ previous: currentTableColumns, current: currentTableColumns });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableResponsiveService, deps: [{ token: Table }, { token: i1.TableService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableResponsiveService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableResponsiveService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i2.Table, decorators: [{\n type: Inject,\n args: [Table]\n }] }, { type: i1.TableService }, { type: i0.ElementRef }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcmVzcG9uc2l2ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzL3NlcnZpY2VzL3RhYmxlLXJlc3BvbnNpdmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFTL0MsTUFBTSxPQUFPLHNCQUFzQjtJQVUvQixjQUFjO0lBQ2QsWUFDb0MsTUFBYSxFQUM1QixhQUEyQixFQUMzQixPQUFtQjtRQUZKLFdBQU0sR0FBTixNQUFNLENBQU87UUFDNUIsa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDM0IsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQWJ4QyxjQUFjO1FBQ0csMkJBQXNCLEdBQUcsSUFBSSxHQUFHLEVBQXFDLENBQUM7UUFFdkYsY0FBYztRQUNHLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBVS9DLENBQUM7SUFFSjs7OztPQUlHO0lBQ0gsd0JBQXdCLENBQUMsTUFBbUIsRUFBRSxXQUFxRDtRQUMvRixJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUVqRixJQUFJLENB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QUFFLG1CQUFtQixFQUFFO1NBQ3pFLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQzVHLENBQUM7OEdBM0ZRLHNCQUFzQixrQkFZbkIsS0FBSztrSEFaUixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVU7OzBCQWFGLE1BQU07MkJBQUMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIEVsZW1lbnRSZWYsIEluamVjdCwgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyByZXNpemVPYnNlcnZhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGZHBDb2x1bW5SZXNwb25zaXZlU3RhdGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbHVtbi1yZXNwb25zaXZlLXN0YXRlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJy4uL3RhYmxlJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vdGFibGUtY29sdW1uJztcbmltcG9ydCB7IFRhYmxlU2VydmljZSB9IGZyb20gJy4vdGFibGUuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmRwVGFibGVCcmVha3BvaW50IHtcbiAgICBtaW46IG51bWJlcjtcbiAgICBtYXg6IG51bWJlcjtcbiAgICB2aXNpYmlsaXR5OiBGZHBDb2x1bW5SZXNwb25zaXZlU3RhdGU7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUYWJsZVJlc3BvbnNpdmVTZXJ2aWNlIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Jlc3BvbnNpdmVCcmVha3BvaW50cyA9IG5ldyBNYXA8VGFibGVDb2x1bW4sIEZkcFRhYmxlQnJlYWtwb2ludFtdPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZXNpemVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoVGFibGUpIHByaXZhdGUgcmVhZG9ubHkgX3RhYmxlOiBUYWJsZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfdGFibGVTZXJ2aWNlOiBUYWJsZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2VsbVJlZjogRWxlbWVudFJlZlxuICAgICkge31cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVycyByZXNwb25zaXZlIGNvbHVtbiB3aXRoIGl0J3MgYnJlYWtwb2ludCBjb25maWd1cmF0aW9uLlxuICAgICAqIEBwYXJhbSBjb2x1bW4gVGFibGUgQ29sdW1uXG4gICAgICogQHBhcmFtIGJyZWFrcG9pbnRzIEJyZWFrcG9pbnQgY29uZmlndXJhdGlvbi5cbiAgICAgKi9cbiAgICByZWdpc3RlclJlc3BvbnNpdmVDb2x1bW4oY29sdW1uOiBUYWJsZUNvbHVtbiwgYnJlYWtwb2ludHM6IFJlY29yZDxzdHJpbmcsIEZkcENvbHVtblJlc3BvbnNpdmVTdGF0ZT4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVzcG9uc2l2ZUJyZWFrcG9pbnRzLnNldChjb2x1bW4sIHRoaXMuX25vcm1hbGl6ZUJyZWFrcG9pbnRzKGJyZWFrcG9pbnRzKSk7XG5cbiAgICAgICAgdGhpcy5fbGlzdGVuVG9UYWJsZVJlc2l6ZSgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogVHJhbnNmb3JtcyBwbGFpbiBicmVha3BvaW50cyBpbnRvIGEgbGlzdCB3aXRoIG1pbmltYWwvbWF4aW1hbCBlbGVtZW50IHdpZHRoIHdpdGggaXQncyB2aXNpYmlsaXR5IHN0YXRlLlxuICAgICAqL1xuICAgIHByaXZhdGUgX25vcm1hbGl6ZUJyZWFrcG9pbnRzKGJyZWFrcG9pbnRzOiBSZWNvcmQ8c3RyaW5nLCBGZHBDb2x1bW5SZXNwb25zaXZlU3RhdGU+KTogRmRwVGFibGVCcmVha3BvaW50W10ge1xuICAgICAgICBjb25zdCBzb3J0ZWRCcmVha3BvaW50cyA9IE9iamVjdC5rZXlzKGJyZWFrcG9pbnRzKVxuICAgICAgICAgICAgLm1hcCgoaSkgPT4gcGFyc2VJbnQoaSwgMTApKVxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcbiAgICAgICAgY29uc3QgbmV3QnJlYWtwb2ludHMgPSBzb3J0ZWRCcmVha3BvaW50cy5yZWR1Y2UoKHJlc3VsdDogRmRwVGFibGVCcmVha3BvaW50W10sIHZhbHVlLCBpbmRleCwgYXJyYXkpID0+IHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICBtaW46IHZhbHVlLFxuICAgICAgICAgICAgICAgIG1heDogaW5kZXggKyAxIDwgYXJyYXkubGVuZ3RoID8gYXJyYXlbaW5kZXggKyAxXSAtIDEgOiBJbmZpbml0eSxcbiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiBicmVha3BvaW50c1t2YWx1ZS50b1N0cmluZygpXVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sIFtdKTtcblxuICAgICAgICByZXR1cm4gbmV3QnJlYWtwb2ludHM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIExpc3RlbnMgdG8gdGhlIHRhYmxlIGVsZW1lbnQgcmVzaXplIGFuZCBjYWxjdWxhdGVzIGNvbHVtbnMgdmlzaWJpbGl0eSBiYXNlZCBvbiB0aGUgY3VycmVudCBicmVha3BvaW50LlxuICAgICAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvVGFibGVSZXNpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Jlc2l6ZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcblxuICAgICAgICB0aGlzLl9yZXNpemVTdWJzY3JpcHRpb24gPSByZXNpemVPYnNlcnZhYmxlKHRoaXMuX2VsbVJlZi5uYXRpdmVFbGVtZW50KVxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDIwKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc1Jlc3BvbnNpdmVDb2x1bW5zKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Byb2Nlc3NSZXNwb25zaXZlQ29sdW1ucygpOiB2b2lkIHtcbiAgICAgICAgbGV0IHNob3VsZE5vdGlmeSA9IGZhbHNlO1xuICAgICAgICBjb25zdCB7IHdpZHRoIH0gPSB0aGlzLl9lbG1SZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICB0aGlzLl9yZXNwb25zaXZlQnJlYWtwb2ludHMuZm9yRWFjaCgoYnJlYWtwb2ludHMsIGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpdHRpbmdCcmVha3BvaW50ID0gYnJlYWtwb2ludHMuZmluZChcbiAgICAgICAgICAgICAgICAoYnJlYWtwb2ludCkgPT4gYnJlYWtwb2ludC5taW4gPD0gd2lkdGggJiYgYnJlYWtwb2ludC5tYXggPj0gd2lkdGhcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChmaXR0aW5nQnJlYWtwb2ludCkge1xuICAgICAgICAgICAgICAgIHNob3VsZE5vdGlmeSA9IHNob3VsZE5vdGlmeSB8fCBpdGVtLnJlc3BvbnNpdmVTdGF0ZSAhPT0gZml0dGluZ0JyZWFrcG9pbnQudmlzaWJpbGl0eTtcbiAgICAgICAgICAgICAgICBpdGVtLnJlc3BvbnNpdmVTdGF0ZSA9IGZpdHRpbmdCcmVha3BvaW50LnZpc2liaWxpdHk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIE5vdGlmeSBvbmx5IHdoZW4gdGhlcmUncyBhY3R1YWwgdmlzaWJpbGl0eSBjaGFuZ2VzIHRvIGFueSBvZiB0aGUgY29sdW1ucy5cbiAgICAgICAgaWYgKCFzaG91bGROb3RpZnkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRUYWJsZUNvbHVtbnMgPSB0aGlzLl90YWJsZS5nZXRWaXNpYmxlVGFibGVDb2x1bW5zKCkubWFwKChjb2x1bW4pID0+IGNvbHVtbi5uYW1lKTtcblxuICAgICAgICB0aGlzLl90YWJsZVNlcnZpY2Uuc3RhdGVDaGFuZ2UkLm5leHQoe1xuICAgICAgICAgICAgdHlwZTogJ2NvbHVtbnMnLFxuICAgICAgICAgICAgc3RhdGU6IHsgcHJldmlvdXM6IGN1cnJlbnRUYWJsZUNvbHVtbnMsIGN1cnJlbnQ6IGN1cnJlbnRUYWJsZUNvbHVtbnMgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl90YWJsZVNlcnZpY2UuY29sdW1uc0NoYW5nZSQubmV4dCh7IHByZXZpb3VzOiBjdXJyZW50VGFibGVDb2x1bW5zLCBjdXJyZW50OiBjdXJyZW50VGFibGVDb2x1bW5zIH0pO1xuICAgIH1cbn1cbiJdfQ==","export class TableColumn {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzL3RhYmxlLWNvbHVtbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxNQUFNLE9BQWdCLFdBQVc7Q0E0RmhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2lnbmFsLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbHVtbkFsaWduVmFsdWUsIEZpbHRlcmFibGVDb2x1bW5EYXRhVHlwZSB9IGZyb20gJy4vZW51bXMnO1xuaW1wb3J0IHsgRmRwQ29sdW1uUmVzcG9uc2l2ZVN0YXRlIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRhYmxlQ29sdW1uIHtcbiAgICAvKiogQ29sdW1uIHVuaXF1ZSBpZGVudGlmaWVyLiAqL1xuICAgIGFic3RyYWN0IG5hbWU6IHN0cmluZztcblxuICAgIC8qKiBDb2x1bW4gZGF0YSBhY2Nlc3NvciBrZXkuICovXG4gICAgYWJzdHJhY3Qga2V5OiBzdHJpbmc7XG5cbiAgICAvKiogQ29sdW1uIGhlYWRlciBsYWJlbC4gKi9cbiAgICBhYnN0cmFjdCBsYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIENvbHVtbiBmb290ZXIgbGFiZWwuICovXG4gICAgYWJzdHJhY3QgZm9vdGVyTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBFbWl0cyB3aGVuIHRoZSBsYWJlbCB2YWx1ZSBjaGFuZ2VzLiAqL1xuICAgIGFic3RyYWN0IGxhYmVsVmFsdWVDaGFuZ2VzJDogT2JzZXJ2YWJsZTxOdWxsYWJsZTxzdHJpbmc+PjtcblxuICAgIC8qKiBDZWxsIHRleHQgYWxpZ25tZW50LiAqL1xuICAgIGFic3RyYWN0IGFsaWduOiBDb2x1bW5BbGlnblZhbHVlO1xuXG4gICAgLyoqIFRvZ2dsZXMgc29ydCBmZWF0dXJlIGluIHRoZSBjb2x1bW4gaGVhZGVyLiAqL1xuICAgIGFic3RyYWN0IHNvcnRhYmxlOiBib29sZWFuO1xuXG4gICAgLyoqIFRvZ2dsZXMgZmlsdGVyIGZlYXR1cmUgaW4gdGhlIGNvbHVtbiBoZWFkZXIuICovXG4gICAgYWJzdHJhY3QgZmlsdGVyYWJsZTogYm9vbGVhbjtcblxuICAgIC8qKiBEYXRhIHR5cGUgdGhlIGNvbHVtbiByZXByZXNlbnRzLiAqL1xuICAgIGFic3RyYWN0IGRhdGFUeXBlOiBGaWx0ZXJhYmxlQ29sdW1uRGF0YVR5cGU7XG5cbiAgICAvKipcbiAgICAgKiBPcHRpb25hbCBhcnJheSBvZiBhdmFpbGFibGUgZmlsdGVyIG9wdGlvbnMuXG4gICAgICogUHJvdmlkaW5nIHZhbHVlcyB0byB0aGlzIGlucHV0IHdpbGwgY2F1c2UgdGhlIGZpbHRlciB0byBjaGFuZ2UgZnJvbSBhIHRleHQtdHlwZSBpbnB1dCB0byBhIHNlbGVjdC10eXBlIGlucHV0LlxuICAgICAqICovXG4gICAgYWJzdHJhY3QgZmlsdGVyU2VsZWN0T3B0aW9uczogc3RyaW5nW107XG5cbiAgICAvKiogV2lkdGggb2YgdGhlIGNvbHVtbiBjZWxscy4gKi9cbiAgICBhYnN0cmFjdCB3aWR0aDogc3RyaW5nO1xuXG4gICAgLyoqIFRvZ2dsZXMgZ3JvdXBpbmcgZmVhdHVyZSBpbiB0aGUgY29sdW1uIGhlYWRlci4gKi9cbiAgICBhYnN0cmFjdCBncm91cGFibGU6IGJvb2xlYW47XG5cbiAgICAvKiogVG9nZ2xlcyBmcmVlemUvdW5mcmVlemUgZmVhdHVyZSBpbiB0aGUgY29sdW1uIGhlYWRlci4gKi9cbiAgICBhYnN0cmFjdCBmcmVlemFibGU6IGJvb2xlYW47XG5cbiAgICAvKiogVG9nZ2xlcyBlbmQgY29sdW1uIGZyZWV6ZS91bmZyZWV6ZSBmZWF0dXJlIGluIHRoZSBjb2x1bW4gaGVhZGVyLiAqL1xuICAgIGFic3RyYWN0IGVuZEZyZWV6YWJsZTogYm9vbGVhbjtcblxuICAgIC8qKiAgV2hldGhlciB0aGUgdGFibGUgY2VsbCBpbnNpZGUgdGFibGUgaGVhZGVyIHNob3VsZCBiZSBub24taW50ZXJhY3RpdmUuICovXG4gICAgYWJzdHJhY3Qgbm9uSW50ZXJhY3RpdmU6IGJvb2xlYW47XG5cbiAgICAvKiogSW5pdGlhbCB2aXNpYmlsaXR5IHN0YXRlIG9mIHRoZSBjb2x1bW4uICovXG4gICAgYWJzdHJhY3QgdmlzaWJsZTogYm9vbGVhbjtcblxuICAgIC8qKiBDb2x1bW4gY2VsbCB0ZW1wbGF0ZSBmb3IgcmVhZG9ubHkgbW9kZS4gKi9cbiAgICBhYnN0cmFjdCBjb2x1bW5DZWxsVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgLyoqIENvbHVtbiBjZWxsIHRlbXBsYXRlIGZvciBlZGl0aW5nIG1vZGUuICovXG4gICAgYWJzdHJhY3QgZWRpdGFibGVDb2x1bW5DZWxsVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgLyoqIENvbHVtbiBoZWFkZXIgdGVtcGxhdGUuICovXG4gICAgYWJzdHJhY3QgaGVhZGVyQ2VsbFRlbXBsYXRlOiBOdWxsYWJsZTxUZW1wbGF0ZVJlZjxhbnk+PjtcblxuICAgIC8qKiBDb2x1bW4gaGVhZGVyIHRlbXBsYXRlLiAqL1xuICAgIGFic3RyYWN0IGZvb3RlckNlbGxUZW1wbGF0ZTogTnVsbGFibGU8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgICAvKiogQ29sdW1uIGhlYWRlciBwb3BvdmVyIHRlbXBsYXRlLiAqL1xuICAgIGFic3RyYWN0IGhlYWRlckNlbGxQb3BvdmVyVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHRleHQgc2hvdWxkIHdyYXAsIHdoZW4gdGV4dCBpcyB0b28gbG9uZyBmb3IgMSBsaW5lLiAqL1xuICAgIGFic3RyYWN0IG5vV3JhcDogYm9vbGVhbjtcblxuICAgIC8qKiBXaGV0aGVyIHRvIGFwcGx5IGZkLXRhYmxlLXRleHQgKHRleHQtc2hhZG93KSB0byB0aGUgY2VsbCBjb250ZW50LCBpZiBkaXNhYmxlZCBub1dyYXAgaGFzIG5vIGVmZmVjdC4gKi9cbiAgICBhYnN0cmFjdCBhcHBseVRleHQ6IGJvb2xlYW47XG5cbiAgICAvKiogU3RvcmVzIGluZm9ybWF0aW9uIGZvciB0aGUgaGVhZGVyIGNlbGwgaWYgdGhlIGVsbGlwc2lzIGFyZSB2aXNpYmxlIGFmdGVyIHRoZSBjb2x1bW4gcmVzaXplICovXG4gICAgYWJzdHJhY3QgaGVhZGVyT3ZlcmZsb3dzOiBib29sZWFuOyAvLyBOb3QgYmVpbmcgdXNlZCBhbnl3aGVyZSwgaXMgaGVyZSBmb3IgaW5mb3JtYXRpb25cblxuICAgIC8qKiBXaGV0aGVyIHRoaXMgY29sdW1uIGlzIHZpc2libGUgKi9cbiAgICBhYnN0cmFjdCByZXNwb25zaXZlU3RhdGU6IEZkcENvbHVtblJlc3BvbnNpdmVTdGF0ZTtcbiAgICAvKiogQ29sdW1uIHJvbGUgYXR0cmlidXRlLiAqL1xuICAgIGFic3RyYWN0IHJvbGU6ICdjZWxsJyB8ICdyb3doZWFkZXInIHwgJ2dyaWRjZWxsJztcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gYW5ub3VuY2UgYnVpbHQtaW4gZW1wdHkgY2VsbHMgdG8gc2NyZWVuIHJlYWRlcnMgZm9yIGNvbHVtbnMgd2l0aCBjb2x1bW4gdGVtcGxhdGVzLlxuICAgICAqIFRoaXMgcHJvdmlkZXMgb3B0aW9uIHRvIHR1cm4gb2ZmIHRoZSBhbm5vdW5jZW1lbnQgaWYgdGhlIGNvbHVtbiB0ZW1wbGF0ZSBhbHJlYWR5IGluY2x1ZGVzIGl0cyBvd25cbiAgICAgKiAqL1xuICAgIGFic3RyYWN0IGFubm91bmNlRW1wdHlDZWxsOiBTaWduYWw8Ym9vbGVhbj47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGFic3RyYWN0IF9mcmVlemVkOiBib29sZWFuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBhYnN0cmFjdCBfZW5kRnJlZXplZDogYm9vbGVhbjtcbn1cbiJdfQ==","import { Directive, Inject, Input, Optional } from '@angular/core';\nimport equal from 'fast-deep-equal';\nimport { TableResponsiveService } from '../services/table-responsive.service';\nimport { TableColumn } from '../table-column';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../services/table-responsive.service\";\nimport * as i2 from \"../table-column\";\nexport class PlatformTableColumnResponsiveDirective {\n /**\n * Responsive breakpoints configuration.\n * @param value where key is minimal table with and value is a column visibility type.\n */\n set breakpoints(value) {\n if (equal(value, this._breakpoints) || !this._column) {\n return;\n }\n this._breakpoints = value;\n this._responsiveTableService.registerResponsiveColumn(this._column, this._breakpoints);\n }\n get breakpoints() {\n return this._breakpoints;\n }\n /** @hidden */\n constructor(_responsiveTableService, _column) {\n this._responsiveTableService = _responsiveTableService;\n this._column = _column;\n /** @hidden */\n this._breakpoints = {};\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformTableColumnResponsiveDirective, deps: [{ token: i1.TableResponsiveService }, { token: TableColumn, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: PlatformTableColumnResponsiveDirective, isStandalone: true, selector: \"[fdpTableColumnResponsive]\", inputs: { breakpoints: [\"fdpTableColumnResponsive\", \"breakpoints\"] }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformTableColumnResponsiveDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdpTableColumnResponsive]',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i1.TableResponsiveService }, { type: i2.TableColumn, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TableColumn]\n }] }], propDecorators: { breakpoints: [{\n type: Input,\n args: ['fdpTableColumnResponsive']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0tdGFibGUtY29sdW1uLXJlc3BvbnNpdmUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzL2RpcmVjdGl2ZXMvcGxhdGZvcm0tdGFibGUtY29sdW1uLXJlc3BvbnNpdmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxLQUFLLE1BQU0saUJBQWlCLENBQUM7QUFFcEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBTTlDLE1BQU0sT0FBTyxzQ0FBc0M7SUFDL0M7OztPQUdHO0lBQ0gsSUFDSSxXQUFXLENBQUMsS0FBK0M7UUFDM0QsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNuRCxPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLENBQUM7SUFLRCxjQUFjO0lBQ2QsWUFDcUIsdUJBQStDLEVBQ2QsT0FBMkI7UUFENUQsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF3QjtRQUNkLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBTmpGLGNBQWM7UUFDTixpQkFBWSxHQUE2QyxFQUFFLENBQUM7SUFNakUsQ0FBQzs4R0F6Qkssc0NBQXNDLHdEQXdCdkIsV0FBVztrR0F4QjFCLHNDQUFzQzs7MkZBQXRDLHNDQUFzQztrQkFKbEQsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsNEJBQTRCO29CQUN0QyxVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OzBCQXlCUSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLFdBQVc7eUNBbEIvQixXQUFXO3NCQURkLEtBQUs7dUJBQUMsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbmplY3QsIElucHV0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IGVxdWFsIGZyb20gJ2Zhc3QtZGVlcC1lcXVhbCc7XG5pbXBvcnQgeyBGZHBDb2x1bW5SZXNwb25zaXZlU3RhdGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbHVtbi1yZXNwb25zaXZlLXN0YXRlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUYWJsZVJlc3BvbnNpdmVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdGFibGUtcmVzcG9uc2l2ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vdGFibGUtY29sdW1uJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRwVGFibGVDb2x1bW5SZXNwb25zaXZlXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBQbGF0Zm9ybVRhYmxlQ29sdW1uUmVzcG9uc2l2ZURpcmVjdGl2ZSB7XG4gICAgLyoqXG4gICAgICogUmVzcG9uc2l2ZSBicmVha3BvaW50cyBjb25maWd1cmF0aW9uLlxuICAgICAqIEBwYXJhbSB2YWx1ZSB3aGVyZSBrZXkgaXMgbWluaW1hbCB0YWJsZSB3aXRoIGFuZCB2YWx1ZSBpcyBhIGNvbHVtbiB2aXNpYmlsaXR5IHR5cGUuXG4gICAgICovXG4gICAgQElucHV0KCdmZHBUYWJsZUNvbHVtblJlc3BvbnNpdmUnKVxuICAgIHNldCBicmVha3BvaW50cyh2YWx1ZTogUmVjb3JkPHN0cmluZywgRmRwQ29sdW1uUmVzcG9uc2l2ZVN0YXRlPikge1xuICAgICAgICBpZiAoZXF1YWwodmFsdWUsIHRoaXMuX2JyZWFrcG9pbnRzKSB8fCAhdGhpcy5fY29sdW1uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fYnJlYWtwb2ludHMgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fcmVzcG9uc2l2ZVRhYmxlU2VydmljZS5yZWdpc3RlclJlc3BvbnNpdmVDb2x1bW4odGhpcy5fY29sdW1uLCB0aGlzLl9icmVha3BvaW50cyk7XG4gICAgfVxuXG4gICAgZ2V0IGJyZWFrcG9pbnRzKCk6IFJlY29yZDxudW1iZXIsIEZkcENvbHVtblJlc3BvbnNpdmVTdGF0ZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWtwb2ludHM7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9icmVha3BvaW50czogUmVjb3JkPG51bWJlciwgRmRwQ29sdW1uUmVzcG9uc2l2ZVN0YXRlPiA9IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfcmVzcG9uc2l2ZVRhYmxlU2VydmljZTogVGFibGVSZXNwb25zaXZlU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChUYWJsZUNvbHVtbikgcHJpdmF0ZSByZWFkb25seSBfY29sdW1uOiBUYWJsZUNvbHVtbiB8IG51bGxcbiAgICApIHt9XG59XG4iXX0=","import { Directive, TemplateRef } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class TableCellHeaderPopoverDirective {\n /** @hidden */\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n /** @hidden */\n static ngTemplateContextGuard(directive, context) {\n return true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableCellHeaderPopoverDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: TableCellHeaderPopoverDirective, isStandalone: true, selector: \"[fdpTableCellHeaderPopover]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableCellHeaderPopoverDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdpTableCellHeaderPopover]',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i0.TemplateRef }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC1oZWFkZXItcG9wb3Zlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvZGlyZWN0aXZlcy90YWJsZS1jZWxsLWhlYWRlci1wb3BvdmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFVL0QsTUFBTSxPQUFPLCtCQUErQjtJQUN4QyxjQUFjO0lBQ2QsWUFBbUIsV0FBZ0U7UUFBaEUsZ0JBQVcsR0FBWCxXQUFXLENBQXFEO0lBQUcsQ0FBQztJQUV2RixjQUFjO0lBQ2QsTUFBTSxDQUFDLHNCQUFzQixDQUN6QixTQUEwQyxFQUMxQyxPQUFnQjtRQUVoQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOzhHQVZRLCtCQUErQjtrR0FBL0IsK0JBQStCOzsyRkFBL0IsK0JBQStCO2tCQUozQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLFVBQVUsRUFBRSxJQUFJO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgU2lnbmFsLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQ2VsbEhlYWRlclBvcG92ZXJEaXJlY3RpdmVDb250ZXh0IHtcbiAgICAkaW1wbGljaXQ6IFNpZ25hbDxUZW1wbGF0ZVJlZjxhbnk+W10+O1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZHBUYWJsZUNlbGxIZWFkZXJQb3BvdmVyXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNlbGxIZWFkZXJQb3BvdmVyRGlyZWN0aXZlIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8VGFibGVDZWxsSGVhZGVyUG9wb3ZlckRpcmVjdGl2ZUNvbnRleHQ+KSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZChcbiAgICAgICAgZGlyZWN0aXZlOiBUYWJsZUNlbGxIZWFkZXJQb3BvdmVyRGlyZWN0aXZlLFxuICAgICAgICBjb250ZXh0OiB1bmtub3duXG4gICAgKTogY29udGV4dCBpcyBUYWJsZUNlbGxIZWFkZXJQb3BvdmVyRGlyZWN0aXZlQ29udGV4dCB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbn1cbiJdfQ==","import { Injectable, InjectionToken } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport const TABLE_SCROLLABLE = new InjectionToken('Table Scrollable');\nexport class TableScrollDispatcherService {\n constructor() {\n /** @hidden */\n this._scrollSubject = new Subject();\n /** @hidden */\n this._verticalScrollSubject = new Subject();\n /** @hidden */\n this._horizontalScrollSubject = new Subject();\n /** @hidden */\n this._scrollableSubscriptionsMap = new Map();\n }\n /** @hidden */\n register(scrollable) {\n if (this._scrollableSubscriptionsMap.has(scrollable)) {\n return;\n }\n const sub = new Subscription();\n sub.add(scrollable.getScrollStream().subscribe(() => this._scrollSubject.next(scrollable)));\n sub.add(scrollable.getHorizontalScrollStream().subscribe(() => this._horizontalScrollSubject.next(scrollable)));\n sub.add(scrollable.getVerticalScrollStream().subscribe(() => this._verticalScrollSubject.next(scrollable)));\n this._scrollableSubscriptionsMap.set(scrollable, sub);\n }\n /** @hidden */\n deregister(scrollable) {\n if (!this._scrollableSubscriptionsMap.has(scrollable)) {\n return;\n }\n this._scrollableSubscriptionsMap.get(scrollable)?.unsubscribe();\n }\n /** Scroll stream */\n scrolled() {\n return this._scrollSubject.asObservable();\n }\n /** Horizontal scroll stream */\n horizontallyScrolled() {\n return this._horizontalScrollSubject.asObservable();\n }\n /** Vertical scroll stream */\n verticallyScrolled() {\n return this._verticalScrollSubject.asObservable();\n }\n /** @hidden */\n ngOnDestroy() {\n Array.from(this._scrollableSubscriptionsMap.values()).forEach((subscription) => subscription.unsubscribe());\n this._scrollableSubscriptionsMap.clear();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableScrollDispatcherService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableScrollDispatcherService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableScrollDispatcherService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc2Nyb2xsLWRpc3BhdGNoZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9zZXJ2aWNlcy90YWJsZS1zY3JvbGwtZGlzcGF0Y2hlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsY0FBYyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBYyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQWtDekQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQWtCLGtCQUFrQixDQUFDLENBQUM7QUFHeEYsTUFBTSxPQUFPLDRCQUE0QjtJQUR6QztRQUVJLGNBQWM7UUFDTixtQkFBYyxHQUE2QixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ2pFLGNBQWM7UUFDTiwyQkFBc0IsR0FBNkIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN6RSxjQUFjO1FBQ04sNkJBQXdCLEdBQTZCLElBQUksT0FBTyxFQUFFLENBQUM7UUFDM0UsY0FBYztRQUNOLGdDQUEyQixHQUF1QyxJQUFJLEdBQUcsRUFBRSxDQUFDO0tBOEN2RjtJQTVDRyxjQUFjO0lBQ2QsUUFBUSxDQUFDLFVBQTJCO1FBQ2hDLElBQUksSUFBSSxDQUFDLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ25ELE9BQU87UUFDWCxDQUFDO1FBRUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMvQixHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVGLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLHlCQUF5QixFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hILEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLHVCQUF1QixFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTVHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxjQUFjO0lBQ2QsVUFBVSxDQUFDLFVBQTJCO1FBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDcEQsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLENBQUMsMkJBQTJCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ3BFLENBQUM7SUFFRCxvQkFBb0I7SUFDcEIsUUFBUTtRQUNKLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsK0JBQStCO0lBQy9CLG9CQUFvQjtRQUNoQixPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4RCxDQUFDO0lBRUQsNkJBQTZCO0lBQzdCLGtCQUFrQjtRQUNkLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFRCxjQUFjO0lBQ2QsV0FBVztRQUNQLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUU1RyxJQUFJLENBQUMsMkJBQTJCLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0MsQ0FBQzs4R0FyRFEsNEJBQTRCO2tIQUE1Qiw0QkFBNEI7OzJGQUE1Qiw0QkFBNEI7a0JBRHhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZVNjcm9sbGFibGUge1xuICAgIC8qKiBHZXQgc2Nyb2xsYWJsZSBFbGVtZW50UmVmIG9mLiAqL1xuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqIFJldHVybnMgb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHdoZW4gYSBzY3JvbGwgZXZlbnQgaXMgZmlyZWQgb24gdGhlIGhvc3QgZWxlbWVudC4gKi9cbiAgICBnZXRTY3JvbGxTdHJlYW0oKTogT2JzZXJ2YWJsZTxFdmVudD47XG5cbiAgICAvKiogUmV0dXJucyBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgd2hlbiBhIHZlcnRpY2FsIHNjcm9sbCBldmVudCBpcyBoYXBwZW5lZCBvbiB0aGUgaG9zdCBlbGVtZW50LiAqL1xuICAgIGdldFZlcnRpY2FsU2Nyb2xsU3RyZWFtKCk6IE9ic2VydmFibGU8RXZlbnQ+O1xuXG4gICAgLyoqIFJldHVybnMgb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHdoZW4gYSBob3Jpem9udGFsIHNjcm9sbCBldmVudCBpcyBoYXBwZW5lZCBvbiB0aGUgaG9zdCBlbGVtZW50LiAqL1xuICAgIGdldEhvcml6b250YWxTY3JvbGxTdHJlYW0oKTogT2JzZXJ2YWJsZTxFdmVudD47XG5cbiAgICAvKiogUmV0dXJucyBzY3JvbGxUb3AgcG9zaXRpb24gb2YgdGhlIGhvc3QgZWxlbWVudC4gKi9cbiAgICBnZXRTY3JvbGxUb3AoKTogbnVtYmVyO1xuXG4gICAgLyoqIFJldHVybnMgc2Nyb2xsTGVmdCBwb3NpdGlvbiBvZiB0aGUgaG9zdCBlbGVtZW50LiAqL1xuICAgIGdldFNjcm9sbExlZnQoKTogbnVtYmVyO1xuXG4gICAgLyoqIFNldCBzY3JvbGxUb3AgcG9zaXRpb24gb2YgdGhlIGhvc3QgZWxlbWVudC4gKi9cbiAgICBzZXRTY3JvbGxUb3Aoc2Nyb2xsVG9wOiBudW1iZXIsIGVtaXRFdmVudDogYm9vbGVhbik6IHZvaWQ7XG5cbiAgICAvKiogU2V0IHNjcm9sbExlZnQgcG9zaXRpb24gb2YgdGhlIGhvc3QgZWxlbWVudC4gKi9cbiAgICBzZXRTY3JvbGxMZWZ0KHNjcm9sbExlZnQ6IG51bWJlciwgZW1pdEV2ZW50OiBib29sZWFuKTogdm9pZDtcblxuICAgIC8qKiBTY3JvbGxzIHRvIG92ZXJsYXBwZWQgY2VsbC4gKi9cbiAgICBzY3JvbGxUb092ZXJsYXBwZWRDZWxsKHJ0bDogYm9vbGVhbiwgZnJlZXphYmxlQ29sdW1uc1NpemU6IG51bWJlciwgZnJlZXphYmxlRW5kQ29sdW1uU2l6ZTogbnVtYmVyKTogdm9pZDtcblxuICAgIC8qKiBTZXQgU2Nyb2xsIFBvc2l0aW9uIGR1cmluZyBjb21wb25lbnQgaW5pdGlhbGl6YXRpb24uICovXG4gICAgaW5pdGlhbGl6ZVNjcm9sbFRvcChzY3JvbGxUb3A6IG51bWJlcik6IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBUQUJMRV9TQ1JPTExBQkxFID0gbmV3IEluamVjdGlvblRva2VuPFRhYmxlU2Nyb2xsYWJsZT4oJ1RhYmxlIFNjcm9sbGFibGUnKTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRhYmxlU2Nyb2xsRGlzcGF0Y2hlclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2Nyb2xsU3ViamVjdDogU3ViamVjdDxUYWJsZVNjcm9sbGFibGU+ID0gbmV3IFN1YmplY3QoKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ZlcnRpY2FsU2Nyb2xsU3ViamVjdDogU3ViamVjdDxUYWJsZVNjcm9sbGFibGU+ID0gbmV3IFN1YmplY3QoKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hvcml6b250YWxTY3JvbGxTdWJqZWN0OiBTdWJqZWN0PFRhYmxlU2Nyb2xsYWJsZT4gPSBuZXcgU3ViamVjdCgpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2Nyb2xsYWJsZVN1YnNjcmlwdGlvbnNNYXA6IE1hcDxUYWJsZVNjcm9sbGFibGUsIFN1YnNjcmlwdGlvbj4gPSBuZXcgTWFwKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlZ2lzdGVyKHNjcm9sbGFibGU6IFRhYmxlU2Nyb2xsYWJsZSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fc2Nyb2xsYWJsZVN1YnNjcmlwdGlvbnNNYXAuaGFzKHNjcm9sbGFibGUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdWIgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgICAgIHN1Yi5hZGQoc2Nyb2xsYWJsZS5nZXRTY3JvbGxTdHJlYW0oKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fc2Nyb2xsU3ViamVjdC5uZXh0KHNjcm9sbGFibGUpKSk7XG4gICAgICAgIHN1Yi5hZGQoc2Nyb2xsYWJsZS5nZXRIb3Jpem9udGFsU2Nyb2xsU3RyZWFtKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2hvcml6b250YWxTY3JvbGxTdWJqZWN0Lm5leHQoc2Nyb2xsYWJsZSkpKTtcbiAgICAgICAgc3ViLmFkZChzY3JvbGxhYmxlLmdldFZlcnRpY2FsU2Nyb2xsU3RyZWFtKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3ZlcnRpY2FsU2Nyb2xsU3ViamVjdC5uZXh0KHNjcm9sbGFibGUpKSk7XG5cbiAgICAgICAgdGhpcy5fc2Nyb2xsYWJsZVN1YnNjcmlwdGlvbnNNYXAuc2V0KHNjcm9sbGFibGUsIHN1Yik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBkZXJlZ2lzdGVyKHNjcm9sbGFibGU6IFRhYmxlU2Nyb2xsYWJsZSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3Njcm9sbGFibGVTdWJzY3JpcHRpb25zTWFwLmhhcyhzY3JvbGxhYmxlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc2Nyb2xsYWJsZVN1YnNjcmlwdGlvbnNNYXAuZ2V0KHNjcm9sbGFibGUpPy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBTY3JvbGwgc3RyZWFtICovXG4gICAgc2Nyb2xsZWQoKTogT2JzZXJ2YWJsZTxUYWJsZVNjcm9sbGFibGU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Njcm9sbFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqIEhvcml6b250YWwgc2Nyb2xsIHN0cmVhbSAqL1xuICAgIGhvcml6b250YWxseVNjcm9sbGVkKCk6IE9ic2VydmFibGU8VGFibGVTY3JvbGxhYmxlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ob3Jpem9udGFsU2Nyb2xsU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvKiogVmVydGljYWwgc2Nyb2xsIHN0cmVhbSAqL1xuICAgIHZlcnRpY2FsbHlTY3JvbGxlZCgpOiBPYnNlcnZhYmxlPFRhYmxlU2Nyb2xsYWJsZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmVydGljYWxTY3JvbGxTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIEFycmF5LmZyb20odGhpcy5fc2Nyb2xsYWJsZVN1YnNjcmlwdGlvbnNNYXAudmFsdWVzKCkpLmZvckVhY2goKHN1YnNjcmlwdGlvbikgPT4gc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xuXG4gICAgICAgIHRoaXMuX3Njcm9sbGFibGVTdWJzY3JpcHRpb25zTWFwLmNsZWFyKCk7XG4gICAgfVxufVxuIl19","import { DestroyRef, Injectable, Optional, computed, inject, signal } from '@angular/core';\nimport { BehaviorSubject, Subject, Subscription, fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { RtlService } from '@fundamental-ngx/cdk/utils';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TableScrollDispatcherService } from './table-scroll-dispatcher.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./table-scroll-dispatcher.service\";\nimport * as i2 from \"@fundamental-ngx/cdk/utils\";\nexport const TABLE_RESIZER_BORDER_WIDTH = 3;\n/**\n * Service to handle all things related to column resizing:\n * - Setting resizer\n * - Processing resize\n * - Calculating the real columns width\n */\nexport class TableColumnResizeService {\n /** Indicate if resizing process in progress. */\n get resizeInProgress() {\n return this._resizeInProgress;\n }\n /** Current column resizer position. */\n get resizerPosition() {\n return this._resizerPosition ?? 0;\n }\n /** Observable to notify to run CD */\n get markForCheck() {\n return this._markForCheck.asObservable();\n }\n /** table has fixed width if all of it's columns are fixed */\n get fixedWidth() {\n return this._fixedColumnsWidthMap.size === this._visibleColumnNames.length;\n }\n /** @hidden */\n constructor(_tableScrollDispatcherService, _rtlService) {\n this._tableScrollDispatcherService = _tableScrollDispatcherService;\n this._rtlService = _rtlService;\n /** Subject that emits new map of fixed columns and their respective width. */\n this.fixedColumsWidthChange = new BehaviorSubject(new Map());\n /** Resize progress stream. */\n this.resizeInProgress$ = new BehaviorSubject(false);\n /** Whether cell mock should be visible. */\n this.cellMockVisible$ = signal(false, ...(ngDevMode ? [{ debugName: \"cellMockVisible$\" }] : []));\n /** Resizer position stream. */\n this.resizerPosition$ = new BehaviorSubject(0);\n /** @hidden */\n this._fixedColumnsWidthMap = new Map();\n /** @hidden */\n this._columnsCellMap = new Map();\n /** @hidden */\n this._visibleColumnNames = [];\n /** @hidden */\n this._visibleColumnLeftNeighbourMap = new Map();\n /** @hidden */\n this._visibleColumnRightNeighbourMap = new Map();\n /** @hidden */\n this._visibleColumnLeftOffsetPxMap = new Map();\n /** @hidden */\n this._visibleColumnRightOffsetPxMap = new Map();\n /** @hidden */\n this._startX = null;\n /** @hidden */\n this._clientStartX = null;\n /** @hidden */\n this._resizeInProgress = this.resizeInProgress$.value;\n /** @hidden */\n this._resizerPosition = null;\n /** @hidden */\n this._scrollLeft = 0;\n /** @hidden */\n this._markForCheck = new Subject();\n /** @hidden */\n this._destroyed = inject(DestroyRef);\n /** @hidden */\n this._resizerMoveSubscription = new Subscription();\n /** @hidden */\n this._rtl$ = computed(() => !!this._rtlService?.rtlSignal(), ...(ngDevMode ? [{ debugName: \"_rtl$\" }] : []));\n this._tableScrollDispatcherService\n ?.horizontallyScrolled()\n .pipe(takeUntilDestroyed(this._destroyed))\n .subscribe((scrollable) => {\n this.resizerPosition$.next(0);\n this._scrollLeft = scrollable.getScrollLeft();\n });\n }\n /** @hidden */\n ngOnDestroy() {\n this._resizeInProgress = false;\n this.resizeInProgress$.next(false);\n this._resizerMoveSubscription.unsubscribe();\n }\n /** @hidden */\n setTableRef(ref) {\n this._tableRef = ref;\n }\n /** @hidden initializes service with data, trigger columns width calculation. */\n setColumnNames(visibleColumnNames) {\n this._visibleColumnLeftNeighbourMap.clear();\n this._visibleColumnRightNeighbourMap.clear();\n visibleColumnNames.forEach((column, index) => {\n this._visibleColumnLeftNeighbourMap.set(column, visibleColumnNames[index - 1]);\n });\n visibleColumnNames.reverse().forEach((column, index) => {\n this._visibleColumnRightNeighbourMap.set(column, visibleColumnNames[index - 1]);\n });\n this._visibleColumnNames = [...visibleColumnNames];\n this.updateFrozenColumnsWidth();\n }\n /** @hidden */\n updateFrozenColumnsWidth() {\n let allPreviousWidths = 0, allNextWidths = 0;\n for (const [column, prevColumn] of this._visibleColumnLeftNeighbourMap.entries()) {\n allPreviousWidths +=\n this._columnsCellMap.get(prevColumn)?.[0]?.nativeElement.getBoundingClientRect().width ?? 0;\n this._visibleColumnLeftOffsetPxMap.set(column, allPreviousWidths);\n }\n for (const [column, nextColumn] of this._visibleColumnRightNeighbourMap.entries()) {\n allNextWidths +=\n this._columnsCellMap.get(nextColumn)?.[0]?.nativeElement.getBoundingClientRect().width ?? 0;\n this._visibleColumnRightOffsetPxMap.set(column, allNextWidths);\n }\n }\n /** @hidden */\n updateFrozenColumnsWidthAfterResize(columnName, diffX) {\n let found = false;\n for (const [column, width] of this._visibleColumnLeftOffsetPxMap.entries()) {\n if (column === columnName) {\n found = true;\n }\n else if (found) {\n this._visibleColumnLeftOffsetPxMap.set(column, width + diffX);\n }\n }\n }\n /** Retrieves custom column value or returns `unset` */\n getColumnWidthStyle(columnName) {\n const calculatedWidth = this._fixedColumnsWidthMap.get(columnName);\n return calculatedWidth || 'unset';\n }\n /** Previous column name */\n getPreviousColumnName(columnName) {\n return this._visibleColumnLeftNeighbourMap.get(columnName);\n }\n /** Previous column name */\n getNextColumnName(columnName) {\n return this._visibleColumnRightNeighbourMap.get(columnName);\n }\n /** Overall previous columns width. Used to calculate offset for the absolute positioned cells. */\n getPrevColumnsWidth(columnName) {\n return this._visibleColumnLeftOffsetPxMap.get(columnName) ?? 0;\n }\n /** Overall next columns width. Used to calculate offset for the absolute positioned cells. */\n getNextColumnsWidth(columnName) {\n return this._visibleColumnRightOffsetPxMap.get(columnName) ?? 0;\n }\n /** Register column's cell to get its dimensions in further. */\n registerColumnCell(columnName, cellElRef) {\n const columnCells = this._columnsCellMap.get(columnName) || [];\n this._columnsCellMap.set(columnName, [cellElRef, ...columnCells]);\n }\n /** Unregister column's cell. */\n unregisterColumnCell(columnName, cellElRef) {\n const columnCells = this._columnsCellMap.get(columnName) || [];\n const elmIndex = columnCells.findIndex((e) => e.nativeElement === cellElRef.nativeElement);\n if (elmIndex === -1) {\n return;\n }\n columnCells.splice(elmIndex, 1);\n this._columnsCellMap.set(columnName, columnCells);\n }\n /** Register the value of column width that changed from input */\n setCustomWidth(columnName, value) {\n this._fixedColumnsWidthMap.set(columnName, value);\n this.fixedColumsWidthChange.next(this._fixedColumnsWidthMap);\n }\n /** Set the appropriate column resizer position. */\n setInitialResizerPosition(resizerPosition, resizedColumn) {\n if (this.resizeInProgress) {\n return;\n }\n this._resizedColumn = resizedColumn;\n this._resizerPosition = null;\n this.resizerPosition$.next(this.resizerPosition);\n if (resizerPosition != null) {\n const scrollLeftOffset = this._scrollLeft * (this._rtl$() ? 1 : -1);\n this._resizerPosition = resizerPosition - TABLE_RESIZER_BORDER_WIDTH + scrollLeftOffset;\n this.resizerPosition$.next(this.resizerPosition);\n }\n this._markForCheck.next();\n }\n /** Hide the column resizer. */\n hideResizer() {\n if (this._resizeInProgress) {\n return;\n }\n this._resizerPosition = null;\n this.resizerPosition$.next(this.resizerPosition);\n this._markForCheck.next();\n }\n /** Handle start resizing. */\n startResize(event) {\n this._startX = this.resizerPosition;\n this._clientStartX = event.clientX;\n this._updateResizerPositionOnMouseMove();\n this._resizeInProgress = true;\n this.resizeInProgress$.next(true);\n }\n /** Handle end resizing. */\n finishResize(event) {\n this._resizerMoveSubscription.unsubscribe();\n this._resizeInProgress = false;\n this.resizeInProgress$.next(false);\n this._resizerPosition = null;\n this.resizerPosition$.next(this.resizerPosition);\n if (this._startX != null) {\n const clientStartX = this._clientStartX ?? 0;\n const diffX = this._rtl$() ? clientStartX - event.clientX : event.clientX - clientStartX;\n this._processResize(diffX);\n }\n this._startX = null;\n this._clientStartX = null;\n this._markForCheck.next();\n }\n /** Update columns width after resizing, prevent from having too small columns. */\n _processResize(diffX) {\n const resizedElement = this._columnsCellMap.get(this._resizedColumn)?.[0]?.nativeElement;\n const columnWidth = resizedElement?.getBoundingClientRect().width;\n if (!columnWidth || !resizedElement) {\n return;\n }\n if (diffX < 0 && columnWidth + diffX < this._tableRef.minimumColumnWidth) {\n diffX = this._tableRef.minimumColumnWidth - columnWidth;\n }\n if (!this.fixedWidth) {\n for (const [columnName, cells] of this._columnsCellMap.entries()) {\n if (cells.length) {\n this._fixedColumnsWidthMap.set(columnName, cells[0].nativeElement.getBoundingClientRect().width + 'px');\n }\n }\n this.fixedColumsWidthChange.next(this._fixedColumnsWidthMap);\n }\n /**\n * In case \"_resizedColumn\" is freezable, make sure the overall width of freezable columns does not exceed the width of the table.\n * If it does, columns will be made unfrozen.\n */\n if (diffX > 0 &&\n (this._tableRef._freezableColumns.has(this._resizedColumn) ||\n this._tableRef._freezableEndColumns?.has(this._resizedColumn))) {\n let actualWidth = this.getPrevColumnsWidth(this._resizedColumn) + columnWidth;\n if (this._tableRef._freezableEndColumns?.has(this._resizedColumn)) {\n actualWidth = this.getNextColumnsWidth(this._resizedColumn) + columnWidth;\n }\n const newWidth = actualWidth + diffX;\n const maxWidth = this._tableRef.getMaxAllowedFreezableColumnsWidth();\n if (newWidth >= maxWidth) {\n this._tableRef._freezableColumns.forEach((column) => {\n this._tableRef.unfreeze(column.toString());\n });\n }\n }\n const updatedWidth = columnWidth + diffX;\n this._fixedColumnsWidthMap.set(this._resizedColumn, updatedWidth + 'px');\n this.fixedColumsWidthChange.next(this._fixedColumnsWidthMap);\n this.updateFrozenColumnsWidthAfterResize(this._resizedColumn, diffX);\n const computedStyles = window.getComputedStyle(resizedElement);\n const padding = parseInt(computedStyles.paddingLeft, 10) + parseInt(computedStyles.paddingRight, 10);\n this._updateHeaderOverflowState(updatedWidth - padding);\n this._markForCheck.next();\n }\n /** Update column resizer position. */\n _updateResizerPositionOnMouseMove() {\n this._resizerMoveSubscription = fromEvent(document, 'mousemove')\n .pipe(debounceTime(10))\n .subscribe((event) => {\n const clientStartX = this._clientStartX ?? 0;\n const diffX = this._rtl$() ? clientStartX - event.clientX : event.clientX - clientStartX;\n this._resizerPosition = (this._startX ?? 0) + diffX;\n this.resizerPosition$.next(this.resizerPosition);\n this._markForCheck.next();\n });\n }\n /**\n * Check if the header text length goes over the column width. In such case applies text truncation with\n * ellipsis and make sure we also show a tooltip.\n *\n * @private\n */\n _updateHeaderOverflowState(updatedWidth) {\n const element = this._columnsCellMap\n .get(this._resizedColumn)\n ?.find((c) => c?.nativeElement.tagName === 'TH')?.nativeElement;\n const visibleColumn = this._tableRef.getVisibleTableColumns().find((c) => c.name === this._resizedColumn);\n const headerTextElem = element?.querySelector(`#${this._tableRef.id}-header-cell-${this._resizedColumn}`);\n if (!headerTextElem || !visibleColumn) {\n return;\n }\n visibleColumn.headerOverflows = headerTextElem.scrollWidth > updatedWidth;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableColumnResizeService, deps: [{ token: i1.TableScrollDispatcherService }, { token: i2.RtlService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableColumnResizeService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableColumnResizeService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.TableScrollDispatcherService }, { type: i2.RtlService, decorators: [{\n type: Optional\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLXJlc2l6ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzL3NlcnZpY2VzL3RhYmxlLWNvbHVtbi1yZXNpemUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFjLFVBQVUsRUFBYSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEgsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXhELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7O0FBRWpGLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLENBQUMsQ0FBQztBQUU1Qzs7Ozs7R0FLRztBQUVILE1BQU0sT0FBTyx3QkFBd0I7SUFHakMsZ0RBQWdEO0lBQ2hELElBQUksZ0JBQWdCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2xDLENBQUM7SUFRRCx1Q0FBdUM7SUFDdkMsSUFBSSxlQUFlO1FBQ2YsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFLRCxxQ0FBcUM7SUFDckMsSUFBSSxZQUFZO1FBQ1osT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFRCw2REFBNkQ7SUFDN0QsSUFBSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMs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QWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUVqRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssMEJBQTBCLENBQUMsWUFBb0I7UUFDbkQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWU7YUFDL0IsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7WUFDekIsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxFQUFFLGFBQWEsQ0FBQztRQUNwRSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLHNCQUFzQixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMxRyxNQUFNLGNBQWMsR0FBRyxPQUFPLEVBQUUsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLGdCQUFnQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUUxRyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDcEMsT0FBTztRQUNYLENBQUM7UUFDRCxhQUFhLENBQUMsZUFBZSxHQUFHLGNBQWMsQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDO0lBQzlFLENBQUM7OEdBeFdRLHdCQUF3QjtrSEFBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQURwQyxVQUFVOzswQkEwRkYsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIEVsZW1lbnRSZWYsIEluamVjdGFibGUsIE9uRGVzdHJveSwgT3B0aW9uYWwsIGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBSdGxTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJy4uL3RhYmxlJztcbmltcG9ydCB7IFRhYmxlU2Nyb2xsRGlzcGF0Y2hlclNlcnZpY2UgfSBmcm9tICcuL3RhYmxlLXNjcm9sbC1kaXNwYXRjaGVyLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgVEFCTEVfUkVTSVpFUl9CT1JERVJfV0lEVEggPSAzO1xuXG4vKipcbiAqIFNlcnZpY2UgdG8gaGFuZGxlIGFsbCB0aGluZ3MgcmVsYXRlZCB0byBjb2x1bW4gcmVzaXppbmc6XG4gKiAtIFNldHRpbmcgcmVzaXplclxuICogLSBQcm9jZXNzaW5nIHJlc2l6ZVxuICogLSBDYWxjdWxhdGluZyB0aGUgcmVhbCBjb2x1bW5zIHdpZHRoXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbHVtblJlc2l6ZVNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIC8qKiBTdWJqZWN0IHRoYXQgZW1pdHMgbmV3IG1hcCBvZiBmaXhlZCBjb2x1bW5zIGFuZCB0aGVpciByZXNwZWN0aXZlIHdpZHRoLiAqL1xuICAgIHJlYWRvbmx5IGZpeGVkQ29sdW1zV2lkdGhDaGFuZ2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hcDxzdHJpbmcsIHN0cmluZz4+KG5ldyBNYXAoKSk7XG4gICAgLyoqIEluZGljYXRlIGlmIHJlc2l6aW5nIHByb2Nlc3MgaW4gcHJvZ3Jlc3MuICovXG4gICAgZ2V0IHJlc2l6ZUluUHJvZ3Jlc3MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNpemVJblByb2dyZXNzO1xuICAgIH1cblxuICAgIC8qKiBSZXNpemUgcHJvZ3Jlc3Mgc3RyZWFtLiAqL1xuICAgIHJlYWRvbmx5IHJlc2l6ZUluUHJvZ3Jlc3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgICAvKiogV2hldGhlciBjZWxsIG1vY2sgc2hvdWxkIGJlIHZpc2libGUuICovXG4gICAgcmVhZG9ubHkgY2VsbE1vY2tWaXNpYmxlJCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICAvKiogQ3VycmVudCBjb2x1bW4gcmVzaXplciBwb3NpdGlvbi4gKi9cbiAgICBnZXQgcmVzaXplclBvc2l0aW9uKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNpemVyUG9zaXRpb24gPz8gMDtcbiAgICB9XG5cbiAgICAvKiogUmVzaXplciBwb3NpdGlvbiBzdHJlYW0uICovXG4gICAgcmVhZG9ubHkgcmVzaXplclBvc2l0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcblxuICAgIC8qKiBPYnNlcnZhYmxlIHRvIG5vdGlmeSB0byBydW4gQ0QgKi9cbiAgICBnZXQgbWFya0ZvckNoZWNrKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWFya0ZvckNoZWNrLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKiB0YWJsZSBoYXMgZml4ZWQgd2lkdGggaWYgYWxsIG9mIGl0J3MgY29sdW1ucyBhcmUgZml4ZWQgKi9cbiAgICBnZXQgZml4ZWRXaWR0aCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpeGVkQ29sdW1uc1dpZHRoTWFwLnNpemUgPT09IHRoaXMuX3Zpc2libGVDb2x1bW5OYW1lcy5sZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9maXhlZENvbHVtbnNXaWR0aE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbHVtbnNDZWxsTWFwID0gbmV3IE1hcDxzdHJpbmcsIEVsZW1lbnRSZWY8SFRNTFRhYmxlRGF0YUNlbGxFbGVtZW50PltdPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF92aXNpYmxlQ29sdW1uTmFtZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Zpc2libGVDb2x1bW5MZWZ0TmVpZ2hib3VyTWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdmlzaWJsZUNvbHVtblJpZ2h0TmVpZ2hib3VyTWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdmlzaWJsZUNvbHVtbkxlZnRPZmZzZXRQeE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Zpc2libGVDb2x1bW5SaWdodE9mZnNldFB4TWFwID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3RhcnRYOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2xpZW50U3RhcnRYOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzaXplSW5Qcm9ncmVzcyA9IHRoaXMucmVzaXplSW5Qcm9ncmVzcyQudmFsdWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Jlc2l6ZWRDb2x1bW46IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzaXplclBvc2l0aW9uOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2Nyb2xsTGVmdCA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX21hcmtGb3JDaGVjayA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Rlc3Ryb3llZCA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzaXplck1vdmVTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RhYmxlUmVmOiBUYWJsZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcnRsJCA9IGNvbXB1dGVkKCgpID0+ICEhdGhpcy5fcnRsU2VydmljZT8ucnRsU2lnbmFsKCkpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfdGFibGVTY3JvbGxEaXNwYXRjaGVyU2VydmljZTogVGFibGVTY3JvbGxEaXNwYXRjaGVyU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfcnRsU2VydmljZTogUnRsU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLl90YWJsZVNjcm9sbERpc3BhdGNoZXJTZXJ2aWNlXG4gICAgICAgICAgICA/Lmhvcml6b250YWxseVNjcm9sbGVkKClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95ZWQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc2Nyb2xsYWJsZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzaXplclBvc2l0aW9uJC5uZXh0KDApO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Njcm9sbExlZnQgPSBzY3JvbGxhYmxlLmdldFNjcm9sbExlZnQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Jlc2l6ZUluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yZXNpemVJblByb2dyZXNzJC5uZXh0KGZhbHNlKTtcblxuICAgICAgICB0aGlzLl9yZXNpemVyTW92ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0VGFibGVSZWYocmVmOiBUYWJsZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJsZVJlZiA9IHJlZjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBpbml0aWFsaXplcyBzZXJ2aWNlIHdpdGggZGF0YSwgdHJpZ2dlciBjb2x1bW5zIHdpZHRoIGNhbGN1bGF0aW9uLiAqL1xuICAgIHNldENvbHVtbk5hbWVzKHZpc2libGVDb2x1bW5OYW1lczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmlzaWJsZUNvbHVtbkxlZnROZWlnaGJvdXJNYXAuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5fdmlzaWJsZUNvbHVtblJpZ2h0TmVpZ2hib3VyTWFwLmNsZWFyKCk7XG4gICAgICAgIHZpc2libGVDb2x1bW5OYW1lcy5mb3JFYWNoKChjb2x1bW4sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl92aXNpYmxlQ29sdW1uTGVmdE5laWdoYm91ck1hcC5zZXQoY29sdW1uLCB2aXNpYmxlQ29sdW1uTmFtZXNbaW5kZXggLSAxXSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2aXNpYmxlQ29sdW1uTmFtZXMucmV2ZXJzZSgpLmZvckVhY2goKGNvbHVtbiwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3Zpc2libGVDb2x1bW5SaWdodE5laWdoYm91ck1hcC5zZXQoY29sdW1uLCB2aXNpYmxlQ29sdW1uTmFtZXNbaW5kZXggLSAxXSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl92aXNpYmxlQ29sdW1uTmFtZXMgPSBbLi4udmlzaWJsZUNvbHVtbk5hbWVzXTtcbiAgICAgICAgdGhpcy51cGRhdGVGcm96ZW5Db2x1bW5zV2lkdGgoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHVwZGF0ZUZyb3plbkNvbHVtbnNXaWR0aCgpOiB2b2lkIHtcbiAgICAgICAgbGV0IGFsbFByZXZpb3VzV2lkdGhzID0gMCxcbiAgICAgICAgICAgIGFsbE5leHRXaWR0aHMgPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IFtjb2x1bW4sIHByZXZDb2x1bW5dIG9mIHRoaXMuX3Zpc2libGVDb2x1bW5MZWZ0TmVpZ2hib3VyTWFwLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgYWxsUHJldmlvdXNXaWR0aHMgKz1cbiAgICAgICAgICAgICAgICB0aGlzLl9jb2x1bW5zQ2VsbE1hcC5nZXQocHJldkNvbHVtbiBhcyBzdHJpbmcpPy5bMF0/Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPz8gMDtcbiAgICAgICAgICAgIHRoaXMuX3Zpc2libGVDb2x1bW5MZWZ0T2Zmc2V0UHhNYXAuc2V0KGNvbHVtbiwgYWxsUHJldmlvdXNXaWR0aHMpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgW2NvbHVtbiwgbmV4dENvbHVtbl0gb2YgdGhpcy5fdmlzaWJsZUNvbHVtblJpZ2h0TmVpZ2hib3VyTWFwLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgYWxsTmV4dFdpZHRocyArPVxuICAgICAgICAgICAgICAgIHRoaXMuX2NvbHVtbnNDZWxsTWFwLmdldChuZXh0Q29sdW1uIGFzIHN0cmluZyk/LlswXT8ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCA/PyAwO1xuICAgICAgICAgICAgdGhpcy5fdmlzaWJsZUNvbHVtblJpZ2h0T2Zmc2V0UHhNYXAuc2V0KGNvbHVtbiwgYWxsTmV4dFdpZHRocyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHVwZGF0ZUZyb3plbkNvbHVtbnNXaWR0aEFmdGVyUmVzaXplKGNvbHVtbk5hbWU6IHN0cmluZywgZGlmZlg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgICAgICAgZm9yIChjb25zdCBbY29sdW1uLCB3aWR0aF0gb2YgdGhpcy5fdmlzaWJsZUNvbHVtbkxlZnRPZmZzZXRQeE1hcC5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgIGlmIChjb2x1bW4gPT09IGNvbHVtbk5hbWUpIHtcbiAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdmlzaWJsZUNvbHVtbkxlZnRPZmZzZXRQeE1hcC5zZXQoY29sdW1uLCB3aWR0aCArIGRpZmZYKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBSZXRyaWV2ZXMgY3VzdG9tIGNvbHVtbiB2YWx1ZSBvciByZXR1cm5zIGB1bnNldGAgKi9cbiAgICBnZXRDb2x1bW5XaWR0aFN0eWxlKGNvbHVtbk5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGNhbGN1bGF0ZWRXaWR0aCA9IHRoaXMuX2ZpeGVkQ29sdW1uc1dpZHRoTWFwLmdldChjb2x1bW5OYW1lKTtcbiAgICAgICAgcmV0dXJuIGNhbGN1bGF0ZWRXaWR0aCB8fCAndW5zZXQnO1xuICAgIH1cblxuICAgIC8qKiBQcmV2aW91cyBjb2x1bW4gbmFtZSAqL1xuICAgIGdldFByZXZpb3VzQ29sdW1uTmFtZShjb2x1bW5OYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZUNvbHVtbkxlZnROZWlnaGJvdXJNYXAuZ2V0KGNvbHVtbk5hbWUpO1xuICAgIH1cblxuICAgIC8qKiBQcmV2aW91cyBjb2x1bW4gbmFtZSAqL1xuICAgIGdldE5leHRDb2x1bW5OYW1lKGNvbHVtbk5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl92aXNpYmxlQ29sdW1uUmlnaHROZWlnaGJvdXJNYXAuZ2V0KGNvbHVtbk5hbWUpO1xuICAgIH1cblxuICAgIC8qKiBPdmVyYWxsIHByZXZpb3VzIGNvbHVtbnMgd2lkdGguIFVzZWQgdG8gY2FsY3VsYXRlIG9mZnNldCBmb3IgdGhlIGFic29sdXRlIHBvc2l0aW9uZWQgY2VsbHMuICovXG4gICAgZ2V0UHJldkNvbHVtbnNXaWR0aChjb2x1bW5OYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZUNvbHVtbkxlZnRPZmZzZXRQeE1hcC5nZXQoY29sdW1uTmFtZSkgPz8gMDtcbiAgICB9XG5cbiAgICAvKiogT3ZlcmFsbCBuZXh0IGNvbHVtbnMgd2lkdGguIFVzZWQgdG8gY2FsY3VsYXRlIG9mZnNldCBmb3IgdGhlIGFic29sdXRlIHBvc2l0aW9uZWQgY2VsbHMuICovXG4gICAgZ2V0TmV4dENvbHVtbnNXaWR0aChjb2x1bW5OYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZUNvbHVtblJpZ2h0T2Zmc2V0UHhNYXAuZ2V0KGNvbHVtbk5hbWUpID8/IDA7XG4gICAgfVxuXG4gICAgLyoqIFJlZ2lzdGVyIGNvbHVtbidzIGNlbGwgdG8gZ2V0IGl0cyBkaW1lbnNpb25zIGluIGZ1cnRoZXIuICovXG4gICAgcmVnaXN0ZXJDb2x1bW5DZWxsKGNvbHVtbk5hbWU6IHN0cmluZywgY2VsbEVsUmVmOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbHVtbkNlbGxzID0gdGhpcy5fY29sdW1uc0NlbGxNYXAuZ2V0KGNvbHVtbk5hbWUpIHx8IFtdO1xuICAgICAgICB0aGlzLl9jb2x1bW5zQ2VsbE1hcC5zZXQoY29sdW1uTmFtZSwgW2NlbGxFbFJlZiwgLi4uY29sdW1uQ2VsbHNdKTtcbiAgICB9XG5cbiAgICAvKiogVW5yZWdpc3RlciBjb2x1bW4ncyBjZWxsLiAqL1xuICAgIHVucmVnaXN0ZXJDb2x1bW5DZWxsKGNvbHVtbk5hbWU6IHN0cmluZywgY2VsbEVsUmVmOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbHVtbkNlbGxzID0gdGhpcy5fY29sdW1uc0NlbGxNYXAuZ2V0KGNvbHVtbk5hbWUpIHx8IFtdO1xuICAgICAgICBjb25zdCBlbG1JbmRleCA9IGNvbHVtbkNlbGxzLmZpbmRJbmRleCgoZSkgPT4gZS5uYXRpdmVFbGVtZW50ID09PSBjZWxsRWxSZWYubmF0aXZlRWxlbWVudCk7XG5cbiAgICAgICAgaWYgKGVsbUluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29sdW1uQ2VsbHMuc3BsaWNlKGVsbUluZGV4LCAxKTtcblxuICAgICAgICB0aGlzLl9jb2x1bW5zQ2VsbE1hcC5zZXQoY29sdW1uTmFtZSwgY29sdW1uQ2VsbHMpO1xuICAgIH1cblxuICAgIC8qKiBSZWdpc3RlciB0aGUgdmFsdWUgb2YgY29sdW1uIHdpZHRoIHRoYXQgY2hhbmdlZCBmcm9tICBpbnB1dCAqL1xuICAgIHNldEN1c3RvbVdpZHRoKGNvbHVtbk5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9maXhlZENvbHVtbnNXaWR0aE1hcC5zZXQoY29sdW1uTmFtZSwgdmFsdWUpO1xuICAgICAgICB0aGlzLmZpeGVkQ29sdW1zV2lkdGhDaGFuZ2UubmV4dCh0aGlzLl9maXhlZENvbHVtbnNXaWR0aE1hcCk7XG4gICAgfVxuXG4gICAgLyoqIFNldCB0aGUgYXBwcm9wcmlhdGUgY29sdW1uIHJlc2l6ZXIgcG9zaXRpb24uICovXG4gICAgc2V0SW5pdGlhbFJlc2l6ZXJQb3NpdGlvbihyZXNpemVyUG9zaXRpb246IG51bWJlciwgcmVzaXplZENvbHVtbjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJlc2l6ZUluUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3Jlc2l6ZWRDb2x1bW4gPSByZXNpemVkQ29sdW1uO1xuICAgICAgICB0aGlzLl9yZXNpemVyUG9zaXRpb24gPSBudWxsO1xuICAgICAgICB0aGlzLnJlc2l6ZXJQb3NpdGlvbiQubmV4dCh0aGlzLnJlc2l6ZXJQb3NpdGlvbik7XG5cbiAgICAgICAgaWYgKHJlc2l6ZXJQb3NpdGlvbiAhPSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCBzY3JvbGxMZWZ0T2Zmc2V0ID0gdGhpcy5fc2Nyb2xsTGVmdCAqICh0aGlzLl9ydGwkKCkgPyAxIDogLTEpO1xuICAgICAgICAgICAgdGhpcy5fcmVzaXplclBvc2l0aW9uID0gcmVzaXplclBvc2l0aW9uIC0gVEFCTEVfUkVTSVpFUl9CT1JERVJfV0lEVEggKyBzY3JvbGxMZWZ0T2Zmc2V0O1xuICAgICAgICAgICAgdGhpcy5yZXNpemVyUG9zaXRpb24kLm5leHQodGhpcy5yZXNpemVyUG9zaXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbWFya0ZvckNoZWNrLm5leHQoKTtcbiAgICB9XG5cbiAgICAvKiogSGlkZSB0aGUgY29sdW1uIHJlc2l6ZXIuICovXG4gICAgaGlkZVJlc2l6ZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9yZXNpemVJblByb2dyZXNzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9yZXNpemVyUG9zaXRpb24gPSBudWxsO1xuICAgICAgICB0aGlzLnJlc2l6ZXJQb3NpdGlvbiQubmV4dCh0aGlzLnJlc2l6ZXJQb3NpdGlvbik7XG4gICAgICAgIHRoaXMuX21hcmtGb3JDaGVjay5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqIEhhbmRsZSBzdGFydCByZXNpemluZy4gKi9cbiAgICBzdGFydFJlc2l6ZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdGFydFggPSB0aGlzLnJlc2l6ZXJQb3NpdGlvbjtcbiAgICAgICAgdGhpcy5fY2xpZW50U3RhcnRYID0gZXZlbnQuY2xpZW50WDtcblxuICAgICAgICB0aGlzLl91cGRhdGVSZXNpemVyUG9zaXRpb25Pbk1vdXNlTW92ZSgpO1xuXG4gICAgICAgIHRoaXMuX3Jlc2l6ZUluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgICAgICB0aGlzLnJlc2l6ZUluUHJvZ3Jlc3MkLm5leHQodHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEhhbmRsZSBlbmQgcmVzaXppbmcuICovXG4gICAgZmluaXNoUmVzaXplKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Jlc2l6ZXJNb3ZlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgdGhpcy5fcmVzaXplSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlc2l6ZUluUHJvZ3Jlc3MkLm5leHQoZmFsc2UpO1xuICAgICAgICB0aGlzLl9yZXNpemVyUG9zaXRpb24gPSBudWxsO1xuICAgICAgICB0aGlzLnJlc2l6ZXJQb3NpdGlvbiQubmV4dCh0aGlzLnJlc2l6ZXJQb3NpdGlvbik7XG5cbiAgICAgICAgaWYgKHRoaXMuX3N0YXJ0WCAhPSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCBjbGllbnRTdGFydFggPSB0aGlzLl9jbGllbnRTdGFydFggPz8gMDtcbiAgICAgICAgICAgIGNvbnN0IGRpZmZYID0gdGhpcy5fcnRsJCgpID8gY2xpZW50U3RhcnRYIC0gZXZlbnQuY2xpZW50WCA6IGV2ZW50LmNsaWVudFggLSBjbGllbnRTdGFydFg7XG5cbiAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NSZXNpemUoZGlmZlgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc3RhcnRYID0gbnVsbDtcbiAgICAgICAgdGhpcy5fY2xpZW50U3RhcnRYID0gbnVsbDtcblxuICAgICAgICB0aGlzLl9tYXJrRm9yQ2hlY2submV4dCgpO1xuICAgIH1cblxuICAgIC8qKiBVcGRhdGUgY29sdW1ucyB3aWR0aCBhZnRlciByZXNpemluZywgcHJldmVudCBmcm9tIGhhdmluZyB0b28gc21hbGwgY29sdW1ucy4gKi9cbiAgICBfcHJvY2Vzc1Jlc2l6ZShkaWZmWDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlc2l6ZWRFbGVtZW50ID0gdGhpcy5fY29sdW1uc0NlbGxNYXAuZ2V0KHRoaXMuX3Jlc2l6ZWRDb2x1bW4pPy5bMF0/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGNvbHVtbldpZHRoID0gcmVzaXplZEVsZW1lbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuXG4gICAgICAgIGlmICghY29sdW1uV2lkdGggfHwgIXJlc2l6ZWRFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGlmZlggPCAwICYmIGNvbHVtbldpZHRoICsgZGlmZlggPCB0aGlzLl90YWJsZVJlZi5taW5pbXVtQ29sdW1uV2lkdGgpIHtcbiAgICAgICAgICAgIGRpZmZYID0gdGhpcy5fdGFibGVSZWYubWluaW11bUNvbHVtbldpZHRoIC0gY29sdW1uV2lkdGg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuZml4ZWRXaWR0aCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBbY29sdW1uTmFtZSwgY2VsbHNdIG9mIHRoaXMuX2NvbHVtbnNDZWxsTWFwLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgICAgIGlmIChjZWxscy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZml4ZWRDb2x1bW5zV2lkdGhNYXAuc2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxzWzBdLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggKyAncHgnXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5maXhlZENvbHVtc1dpZHRoQ2hhbmdlLm5leHQodGhpcy5fZml4ZWRDb2x1bW5zV2lkdGhNYXApO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEluIGNhc2UgXCJfcmVzaXplZENvbHVtblwiIGlzIGZyZWV6YWJsZSwgbWFrZSBzdXJlIHRoZSBvdmVyYWxsIHdpZHRoIG9mIGZyZWV6YWJsZSBjb2x1bW5zIGRvZXMgbm90IGV4Y2VlZCB0aGUgd2lkdGggb2YgdGhlIHRhYmxlLlxuICAgICAgICAgKiBJZiBpdCBkb2VzLCBjb2x1bW5zIHdpbGwgYmUgbWFkZSB1bmZyb3plbi5cbiAgICAgICAgICovXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGRpZmZYID4gMCAmJlxuICAgICAgICAgICAgKHRoaXMuX3RhYmxlUmVmLl9mcmVlemFibGVDb2x1bW5zLmhhcyh0aGlzLl9yZXNpemVkQ29sdW1uKSB8fFxuICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlUmVmLl9mcmVlemFibGVFbmRDb2x1bW5zPy5oYXModGhpcy5fcmVzaXplZENvbHVtbikpXG4gICAgICAgICkge1xuICAgICAgICAgICAgbGV0IGFjdHVhbFdpZHRoID0gdGhpcy5nZXRQcmV2Q29sdW1uc1dpZHRoKHRoaXMuX3Jlc2l6ZWRDb2x1bW4pICsgY29sdW1uV2lkdGg7XG4gICAgICAgICAgICBpZiAodGhpcy5fdGFibGVSZWYuX2ZyZWV6YWJsZUVuZENvbHVtbnM/Lmhhcyh0aGlzLl9yZXNpemVkQ29sdW1uKSkge1xuICAgICAgICAgICAgICAgIGFjdHVhbFdpZHRoID0gdGhpcy5nZXROZXh0Q29sdW1uc1dpZHRoKHRoaXMuX3Jlc2l6ZWRDb2x1bW4pICsgY29sdW1uV2lkdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBuZXdXaWR0aCA9IGFjdHVhbFdpZHRoICsgZGlmZlg7XG4gICAgICAgICAgICBjb25zdCBtYXhXaWR0aCA9IHRoaXMuX3RhYmxlUmVmLmdldE1heEFsbG93ZWRGcmVlemFibGVDb2x1bW5zV2lkdGgoKTtcbiAgICAgICAgICAgIGlmIChuZXdXaWR0aCA+PSBtYXhXaWR0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlUmVmLl9mcmVlemFibGVDb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90YWJsZVJlZi51bmZyZWV6ZShjb2x1bW4udG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1cGRhdGVkV2lkdGggPSBjb2x1bW5XaWR0aCArIGRpZmZYO1xuICAgICAgICB0aGlzLl9maXhlZENvbHVtbnNXaWR0aE1hcC5zZXQodGhpcy5fcmVzaXplZENvbHVtbiwgdXBkYXRlZFdpZHRoICsgJ3B4Jyk7XG4gICAgICAgIHRoaXMuZml4ZWRDb2x1bXNXaWR0aENoYW5nZS5uZXh0KHRoaXMuX2ZpeGVkQ29sdW1uc1dpZHRoTWFwKTtcbiAgICAgICAgdGhpcy51cGRhdGVGcm96ZW5Db2x1bW5zV2lkdGhBZnRlclJlc2l6ZSh0aGlzLl9yZXNpemVkQ29sdW1uLCBkaWZmWCk7XG5cbiAgICAgICAgY29uc3QgY29tcHV0ZWRTdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShyZXNpemVkRWxlbWVudCk7XG4gICAgICAgIGNvbnN0IHBhZGRpbmcgPSBwYXJzZUludChjb21wdXRlZFN0eWxlcy5wYWRkaW5nTGVmdCwgMTApICsgcGFyc2VJbnQoY29tcHV0ZWRTdHlsZXMucGFkZGluZ1JpZ2h0LCAxMCk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUhlYWRlck92ZXJmbG93U3RhdGUodXBkYXRlZFdpZHRoIC0gcGFkZGluZyk7XG4gICAgICAgIHRoaXMuX21hcmtGb3JDaGVjay5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqIFVwZGF0ZSBjb2x1bW4gcmVzaXplciBwb3NpdGlvbi4gKi9cbiAgICBwcml2YXRlIF91cGRhdGVSZXNpemVyUG9zaXRpb25Pbk1vdXNlTW92ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVzaXplck1vdmVTdWJzY3JpcHRpb24gPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsICdtb3VzZW1vdmUnKVxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2xpZW50U3RhcnRYID0gdGhpcy5fY2xpZW50U3RhcnRYID8/IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlmZlggPSB0aGlzLl9ydGwkKCkgPyBjbGllbnRTdGFydFggLSBldmVudC5jbGllbnRYIDogZXZlbnQuY2xpZW50WCAtIGNsaWVudFN0YXJ0WDtcblxuICAgICAgICAgICAgICAgIHRoaXMuX3Jlc2l6ZXJQb3NpdGlvbiA9ICh0aGlzLl9zdGFydFggPz8gMCkgKyBkaWZmWDtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZXJQb3NpdGlvbiQubmV4dCh0aGlzLnJlc2l6ZXJQb3NpdGlvbik7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9tYXJrRm9yQ2hlY2submV4dCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIGhlYWRlciB0ZXh0IGxlbmd0aCBnb2VzIG92ZXIgdGhlIGNvbHVtbiB3aWR0aC4gSW4gc3VjaCBjYXNlIGFwcGxpZXMgdGV4dCB0cnVuY2F0aW9uIHdpdGhcbiAgICAgKiBlbGxpcHNpcyBhbmQgbWFrZSBzdXJlIHdlIGFsc28gc2hvdyBhIHRvb2x0aXAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZUhlYWRlck92ZXJmbG93U3RhdGUodXBkYXRlZFdpZHRoOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX2NvbHVtbnNDZWxsTWFwXG4gICAgICAgICAgICAuZ2V0KHRoaXMuX3Jlc2l6ZWRDb2x1bW4pXG4gICAgICAgICAgICA/LmZpbmQoKGMpID0+IGM/Lm5hdGl2ZUVsZW1lbnQudGFnTmFtZSA9PT0gJ1RIJyk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHZpc2libGVDb2x1bW4gPSB0aGlzLl90YWJsZVJlZi5nZXRWaXNpYmxlVGFibGVDb2x1bW5zKCkuZmluZCgoYykgPT4gYy5uYW1lID09PSB0aGlzLl9yZXNpemVkQ29sdW1uKTtcbiAgICAgICAgY29uc3QgaGVhZGVyVGV4dEVsZW0gPSBlbGVtZW50Py5xdWVyeVNlbGVjdG9yKGAjJHt0aGlzLl90YWJsZVJlZi5pZH0taGVhZGVyLWNlbGwtJHt0aGlzLl9yZXNpemVkQ29sdW1ufWApO1xuXG4gICAgICAgIGlmICghaGVhZGVyVGV4dEVsZW0gfHwgIXZpc2libGVDb2x1bW4pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2aXNpYmxlQ29sdW1uLmhlYWRlck92ZXJmbG93cyA9IGhlYWRlclRleHRFbGVtLnNjcm9sbFdpZHRoID4gdXBkYXRlZFdpZHRoO1xuICAgIH1cbn1cbiJdfQ==","import { computed, Directive, inject, Input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FDK_FOCUSABLE_ITEM_DIRECTIVE, FocusableItemDirective, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { TableCellDirective } from '@fundamental-ngx/core/table';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime, filter, map } from 'rxjs/operators';\nimport { TableColumnResizeService } from '../services/table-column-resize.service';\nimport * as i0 from \"@angular/core\";\nexport const TABLE_CELL_RESIZABLE_THRESHOLD_PX = 4;\n/**\n * Tracks mouse movement over the cell if the mouse pointer near the side of the cell, informs resize service.\n */\nexport class PlatformTableCellResizableDirective extends TableCellDirective {\n constructor() {\n super(...arguments);\n /** @hidden */\n this._resizableSide = 'both';\n /** @hidden */\n this._rtl$ = computed(() => !!this._rtlService?.rtlSignal(), ...(ngDevMode ? [{ debugName: \"_rtl$\" }] : []));\n /** @hidden */\n this._tableColumnResizeService = inject(TableColumnResizeService);\n /** @hidden */\n this._rtlService = inject(RtlService, {\n optional: true\n });\n }\n /** First column can be resized only by its end */\n set resizableSide(value) {\n if (!value) {\n return;\n }\n this._resizableSide = value;\n }\n /** @hidden */\n ngOnInit() {\n this._zone.runOutsideAngular(() => {\n fromEvent(this.elementRef.nativeElement, 'mousemove')\n .pipe(filter(() => this._tableColumnResizeService?.resizeInProgress !== true), debounceTime(5), map((event) => this._getResizer(event) || { resizerPosition: 0, resizedColumn: this.columnName }), takeUntilDestroyed(this._destroyRef))\n .subscribe((data) => {\n this._tableColumnResizeService.setInitialResizerPosition(data.resizerPosition, data.resizedColumn);\n });\n fromEvent(this.elementRef.nativeElement, 'focus')\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._tableColumnResizeService.setInitialResizerPosition(0, this.columnName);\n });\n });\n }\n /** @hidden */\n ngAfterViewInit() {\n if (this.columnName == null) {\n return;\n }\n this._tableColumnResizeService?.registerColumnCell(this.columnName, this.elementRef);\n }\n /** @hidden */\n ngOnDestroy() {\n this._tableColumnResizeService?.unregisterColumnCell(this.columnName, this.elementRef);\n }\n /** @hidden */\n _getResizer(event) {\n const el = this.elementRef.nativeElement;\n const elPosition = el.getBoundingClientRect();\n // check if mouse is within 5px of cell border\n if (event.clientX > elPosition.x + elPosition.width - 5 || event.clientX < elPosition.x + 5) {\n let resizerPosition;\n let resizedColumn;\n const pointerOnLeft = this._rtl$()\n ? elPosition.right - event.clientX < TABLE_CELL_RESIZABLE_THRESHOLD_PX\n : event.clientX - elPosition.left < TABLE_CELL_RESIZABLE_THRESHOLD_PX;\n if (pointerOnLeft && this._resizableSide !== 'end') {\n resizerPosition = this._rtl$()\n ? el.parentElement.offsetWidth - (el.offsetLeft + el.offsetWidth)\n : el.offsetLeft;\n resizedColumn = this._tableColumnResizeService.getPreviousColumnName(this.columnName);\n }\n const pointerOnRight = this._rtl$()\n ? event.clientX - elPosition.left < TABLE_CELL_RESIZABLE_THRESHOLD_PX\n : elPosition.right - event.clientX < TABLE_CELL_RESIZABLE_THRESHOLD_PX;\n if (pointerOnRight && this._resizableSide !== 'start') {\n resizerPosition = this._rtl$()\n ? el.parentElement.offsetWidth - el.offsetLeft\n : el.offsetLeft + el.offsetWidth;\n resizedColumn = this.columnName;\n }\n if (!resizedColumn) {\n return null;\n }\n return { resizerPosition: resizerPosition, resizedColumn };\n }\n else {\n return null;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformTableCellResizableDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: PlatformTableCellResizableDirective, isStandalone: true, selector: \"[fdpTableCellResizable]\", inputs: { resizableSide: [\"fdpTableCellResizable\", \"resizableSide\"], columnName: \"columnName\" }, providers: [\n {\n provide: FDK_FOCUSABLE_ITEM_DIRECTIVE,\n useExisting: PlatformTableCellResizableDirective\n },\n {\n provide: FocusableItemDirective,\n useExisting: PlatformTableCellResizableDirective\n },\n {\n provide: TableCellDirective,\n useExisting: PlatformTableCellResizableDirective\n }\n ], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformTableCellResizableDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdpTableCellResizable]',\n standalone: true,\n providers: [\n {\n provide: FDK_FOCUSABLE_ITEM_DIRECTIVE,\n useExisting: PlatformTableCellResizableDirective\n },\n {\n provide: FocusableItemDirective,\n useExisting: PlatformTableCellResizableDirective\n },\n {\n provide: TableCellDirective,\n useExisting: PlatformTableCellResizableDirective\n }\n ]\n }]\n }], propDecorators: { resizableSide: [{\n type: Input,\n args: ['fdpTableCellResizable']\n }], columnName: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC1yZXNpemFibGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzL2RpcmVjdGl2ZXMvdGFibGUtY2VsbC1yZXNpemFibGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUVyRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7QUFJbkYsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQUcsQ0FBQyxDQUFDO0FBRW5EOztHQUVHO0FBbUJILE1BQU0sT0FBTyxtQ0FDVCxTQUFRLGtCQUFrQjtJQW5COUI7O1FBb0NJLGNBQWM7UUFDTixtQkFBYyxHQUE2QixNQUFNLENBQUM7UUFFMUQsY0FBYztRQUNHLFVBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLGlEQUFDLENBQUM7UUFFekUsY0FBYztRQUNHLDhCQUF5QixHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBRTlFLGNBQWM7UUFDRyxnQkFBVyxHQUFHLE1B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QUksQ0FBQztRQUNoQixDQUFDO0lBQ0wsQ0FBQzs4R0E1R1EsbUNBQW1DO2tHQUFuQyxtQ0FBbUMsdUtBZmpDO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLDRCQUE0QjtnQkFDckMsV0FBVyxFQUFFLG1DQUFtQzthQUNuRDtZQUNEO2dCQUNJLE9BQU8sRUFBRSxzQkFBc0I7Z0JBQy9CLFdBQVcsRUFBRSxtQ0FBbUM7YUFDbkQ7WUFDRDtnQkFDSSxPQUFPLEVBQUUsa0JBQWtCO2dCQUMzQixXQUFXLEVBQUUsbUNBQW1DO2FBQ25EO1NBQ0o7OzJGQUVRLG1DQUFtQztrQkFsQi9DLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsNEJBQTRCOzRCQUNyQyxXQUFXLHFDQUFxQzt5QkFDbkQ7d0JBQ0Q7NEJBQ0ksT0FBTyxFQUFFLHNCQUFzQjs0QkFDL0IsV0FBVyxxQ0FBcUM7eUJBQ25EO3dCQUNEOzRCQUNJLE9BQU8sRUFBRSxrQkFBa0I7NEJBQzNCLFdBQVcscUNBQXFDO3lCQUNuRDtxQkFDSjtpQkFDSjs4QkFPTyxhQUFhO3NCQURoQixLQUFLO3VCQUFDLHVCQUF1QjtnQkFXOUIsVUFBVTtzQkFEVCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgY29tcHV0ZWQsIERpcmVjdGl2ZSwgaW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRkRLX0ZPQ1VTQUJMRV9JVEVNX0RJUkVDVElWRSwgRm9jdXNhYmxlSXRlbURpcmVjdGl2ZSwgUnRsU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IFRhYmxlQ2VsbERpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90YWJsZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUYWJsZUNvbHVtblJlc2l6ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90YWJsZS1jb2x1bW4tcmVzaXplLnNlcnZpY2UnO1xuXG5leHBvcnQgdHlwZSBUYWJsZUNvbHVtblJlc2l6YWJsZVNpZGUgPSAnc3RhcnQnIHwgJ2VuZCcgfCAnYm90aCc7XG5cbmV4cG9ydCBjb25zdCBUQUJMRV9DRUxMX1JFU0laQUJMRV9USFJFU0hPTERfUFggPSA0O1xuXG4vKipcbiAqIFRyYWNrcyBtb3VzZSBtb3ZlbWVudCBvdmVyIHRoZSBjZWxsIGlmIHRoZSBtb3VzZSBwb2ludGVyIG5lYXIgdGhlIHNpZGUgb2YgdGhlIGNlbGwsIGluZm9ybXMgcmVzaXplIHNlcnZpY2UuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2ZkcFRhYmxlQ2VsbFJlc2l6YWJsZV0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZES19GT0NVU0FCTEVfSVRFTV9ESVJFQ1RJVkUsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogUGxhdGZvcm1UYWJsZUNlbGxSZXNpemFibGVEaXJlY3RpdmVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRm9jdXNhYmxlSXRlbURpcmVjdGl2ZSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBQbGF0Zm9ybVRhYmxlQ2VsbFJlc2l6YWJsZURpcmVjdGl2ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBUYWJsZUNlbGxEaXJlY3RpdmUsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogUGxhdGZvcm1UYWJsZUNlbGxSZXNpemFibGVEaXJlY3RpdmVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgUGxhdGZvcm1UYWJsZUNlbGxSZXNpemFibGVEaXJlY3RpdmVcbiAgICBleHRlbmRzIFRhYmxlQ2VsbERpcmVjdGl2ZVxuICAgIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgICAvKiogRmlyc3QgY29sdW1uIGNhbiBiZSByZXNpemVkIG9ubHkgYnkgaXRzIGVuZCAqL1xuICAgIEBJbnB1dCgnZmRwVGFibGVDZWxsUmVzaXphYmxlJylcbiAgICBzZXQgcmVzaXphYmxlU2lkZSh2YWx1ZTogVGFibGVDb2x1bW5SZXNpemFibGVTaWRlKSB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3Jlc2l6YWJsZVNpZGUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQ29sdW1uIG5hbWUgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbHVtbk5hbWU6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzaXphYmxlU2lkZTogVGFibGVDb2x1bW5SZXNpemFibGVTaWRlID0gJ2JvdGgnO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ydGwkID0gY29tcHV0ZWQoKCkgPT4gISF0aGlzLl9ydGxTZXJ2aWNlPy5ydGxTaWduYWwoKSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RhYmxlQ29sdW1uUmVzaXplU2VydmljZSA9IGluamVjdChUYWJsZUNvbHVtblJlc2l6ZVNlcnZpY2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ydGxTZXJ2aWNlID0gaW5qZWN0KFJ0bFNlcnZpY2UsIHtcbiAgICAgICAgb3B0aW9uYWw6IHRydWVcbiAgICB9KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnbW91c2Vtb3ZlJylcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuX3RhYmxlQ29sdW1uUmVzaXplU2VydmljZT8ucmVzaXplSW5Qcm9ncmVzcyAhPT0gdHJ1ZSksXG4gICAgICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSg1KSxcbiAgICAgICAgICAgICAgICAgICAgbWFwKChldmVudCkgPT4gdGhpcy5fZ2V0UmVzaXplcihldmVudCkgfHwgeyByZXNpemVyUG9zaXRpb246IDAsIHJlc2l6ZWRDb2x1bW46IHRoaXMuY29sdW1uTmFtZSB9KSxcbiAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGFibGVDb2x1bW5SZXNpemVTZXJ2aWNlLnNldEluaXRpYWxSZXNpemVyUG9zaXRpb24oZGF0YS5yZXNpemVyUG9zaXRpb24sIGRhdGEucmVzaXplZENvbHVtbik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBmcm9tRXZlbnQ8Rm9jdXNFdmVudD4odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdmb2N1cycpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90YWJsZUNvbHVtblJlc2l6ZVNlcnZpY2Uuc2V0SW5pdGlhbFJlc2l6ZXJQb3NpdGlvbigwLCB0aGlzLmNvbHVtbk5hbWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY29sdW1uTmFtZSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl90YWJsZUNvbHVtblJlc2l6ZVNlcnZpY2U/LnJlZ2lzdGVyQ29sdW1uQ2VsbCh0aGlzLmNvbHVtbk5hbWUsIHRoaXMuZWxlbWVudFJlZik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFibGVDb2x1bW5SZXNpemVTZXJ2aWNlPy51bnJlZ2lzdGVyQ29sdW1uQ2VsbCh0aGlzLmNvbHVtbk5hbWUsIHRoaXMuZWxlbWVudFJlZik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRSZXNpemVyKGV2ZW50OiBNb3VzZUV2ZW50KTogeyByZXNpemVyUG9zaXRpb246IG51bWJlcjsgcmVzaXplZENvbHVtbjogc3RyaW5nIH0gfCBudWxsIHtcbiAgICAgICAgY29uc3QgZWwgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgZWxQb3NpdGlvbiA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAvLyBjaGVjayBpZiBtb3VzZSBpcyB3aXRoaW4gNXB4IG9mIGNlbGwgYm9yZGVyXG4gICAgICAgIGlmIChldmVudC5jbGllbnRYID4gZWxQb3NpdGlvbi54ICsgZWxQb3NpdGlvbi53aWR0aCAtIDUgfHwgZXZlbnQuY2xpZW50WCA8IGVsUG9zaXRpb24ueCArIDUpIHtcbiAgICAgICAgICAgIGxldCByZXNpemVyUG9zaXRpb246IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGxldCByZXNpemVkQ29sdW1uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIGNvbnN0IHBvaW50ZXJPbkxlZnQgPSB0aGlzLl9ydGwkKClcbiAgICAgICAgICAgICAgICA/IGVsUG9zaXRpb24ucmlnaHQgLSBldmVudC5jbGllbnRYIDwgVEFCTEVfQ0VMTF9SRVNJWkFCTEVfVEhSRVNIT0xEX1BYXG4gICAgICAgICAgICAgICAgOiBldmVudC5jbGllbnRYIC0gZWxQb3NpdGlvbi5sZWZ0IDwgVEFCTEVfQ0VMTF9SRVNJWkFCTEVfVEhSRVNIT0xEX1BYO1xuXG4gICAgICAgICAgICBpZiAocG9pbnRlck9uTGVmdCAmJiB0aGlzLl9yZXNpemFibGVTaWRlICE9PSAnZW5kJykge1xuICAgICAgICAgICAgICAgIHJlc2l6ZXJQb3NpdGlvbiA9IHRoaXMuX3J0bCQoKVxuICAgICAgICAgICAgICAgICAgICA/IGVsLnBhcmVudEVsZW1lbnQhLm9mZnNldFdpZHRoIC0gKGVsLm9mZnNldExlZnQgKyBlbC5vZmZzZXRXaWR0aClcbiAgICAgICAgICAgICAgICAgICAgOiBlbC5vZmZzZXRMZWZ0O1xuXG4gICAgICAgICAgICAgICAgcmVzaXplZENvbHVtbiA9IHRoaXMuX3RhYmxlQ29sdW1uUmVzaXplU2VydmljZS5nZXRQcmV2aW91c0NvbHVtbk5hbWUodGhpcy5jb2x1bW5OYW1lKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcG9pbnRlck9uUmlnaHQgPSB0aGlzLl9ydGwkKClcbiAgICAgICAgICAgICAgICA/IGV2ZW50LmNsaWVudFggLSBlbFBvc2l0aW9uLmxlZnQgPCBUQUJMRV9DRUxMX1JFU0laQUJMRV9USFJFU0hPTERfUFhcbiAgICAgICAgICAgICAgICA6IGVsUG9zaXRpb24ucmlnaHQgLSBldmVudC5jbGllbnRYIDwgVEFCTEVfQ0VMTF9SRVNJWkFCTEVfVEhSRVNIT0xEX1BYO1xuXG4gICAgICAgICAgICBpZiAocG9pbnRlck9uUmlnaHQgJiYgdGhpcy5fcmVzaXphYmxlU2lkZSAhPT0gJ3N0YXJ0Jykge1xuICAgICAgICAgICAgICAgIHJlc2l6ZXJQb3NpdGlvbiA9IHRoaXMuX3J0bCQoKVxuICAgICAgICAgICAgICAgICAgICA/IGVsLnBhcmVudEVsZW1lbnQhLm9mZnNldFdpZHRoIC0gZWwub2Zmc2V0TGVmdFxuICAgICAgICAgICAgICAgICAgICA6IGVsLm9mZnNldExlZnQgKyBlbC5vZmZzZXRXaWR0aDtcblxuICAgICAgICAgICAgICAgIHJlc2l6ZWRDb2x1bW4gPSB0aGlzLmNvbHVtbk5hbWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghcmVzaXplZENvbHVtbikge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4geyByZXNpemVyUG9zaXRpb246IHJlc2l6ZXJQb3NpdGlvbiEsIHJlc2l6ZWRDb2x1bW4gfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19","export class EditableTableCell {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy90YWJsZS1jZWxsLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBZ0IsaUJBQWlCO0NBRXRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRWRpdGFibGVUYWJsZUNlbGwge1xuICAgIGFic3RyYWN0IGZvcm06IE5nRm9ybTtcbn1cbiJdfQ==","import { Directive, Input, TemplateRef } from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { EditableTableCell } from '../table-cell.class';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\n/** Column cell container. */\n// eslint-disable-next-line @angular-eslint/directive-selector\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class FdpTableCell {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdpTableCell, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: FdpTableCell, isStandalone: true, selector: \"fdp-table-cell\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdpTableCell, decorators: [{\n type: Directive,\n args: [{ selector: 'fdp-table-cell', standalone: true }]\n }] });\n/**\n * Cell definition for a platform table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class FdpCellDef {\n /** @hidden */\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n /** @hidden */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdpCellDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: FdpCellDef, isStandalone: true, selector: \"[fdpCellDef]\", inputs: { fdpCellDefAs: \"fdpCellDefAs\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdpCellDef, decorators: [{\n type: Directive,\n args: [{ selector: '[fdpCellDef]', standalone: true }]\n }], ctorParameters: () => [{ type: i0.TemplateRef }], propDecorators: { fdpCellDefAs: [{\n type: Input\n }] } });\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class FdpEditableCellDef {\n /** @hidden */\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdpEditableCellDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: FdpEditableCellDef, isStandalone: true, selector: \"[fdpEditableCellDef]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdpEditableCellDef, decorators: [{\n type: Directive,\n args: [{ selector: '[fdpEditableCellDef]', standalone: true }]\n }], ctorParameters: () => [{ type: i0.TemplateRef }] });\nexport class FdpEditableCellFormDirective {\n /** @hidden */\n constructor(form) {\n this.form = form;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdpEditableCellFormDirective, deps: [{ token: i1.NgForm }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: FdpEditableCellFormDirective, isStandalone: true, selector: \"[fdpEditableCellForm]\", providers: [{ provide: EditableTableCell, useExisting: FdpEditableCellFormDirective }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdpEditableCellFormDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdpEditableCellForm]',\n standalone: true,\n providers: [{ provide: EditableTableCell, useExisting: FdpEditableCellFormDirective }]\n }]\n }], ctorParameters: () => [{ type: i1.NgForm }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvZGlyZWN0aXZlcy90YWJsZS1jZWxsLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFReEQsNkJBQTZCO0FBQzdCLDhEQUE4RDtBQUU5RCxrRUFBa0U7QUFDbEUsTUFBTSxPQUFPLFlBQVk7OEdBQVosWUFBWTtrR0FBWixZQUFZOzsyRkFBWixZQUFZO2tCQUZ4QixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7O0FBSTNEOzs7R0FHRztBQUVILGtFQUFrRTtBQUNsRSxNQUFNLE9BQU8sVUFBVTtJQUluQixjQUFjO0lBQ2QsWUFBbUIsV0FBOEM7UUFBOUMsZ0JBQVcsR0FBWCxXQUFXLENBQW1DO0lBQUcsQ0FBQztJQUVyRSxjQUFjO0lBQ2QsTUFBTSxDQUFDLHNCQUFzQixDQUFJLEdBQWtCLEVBQUUsR0FBc0I7UUFDdkUsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzs4R0FWUSxVQUFVO2tHQUFWLFVBQVU7OzJGQUFWLFVBQVU7a0JBRnRCLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7Z0ZBS3JELFlBQVk7c0JBRFgsS0FBSzs7QUFZVixrRUFBa0U7QUFDbEUsTUFBTSxPQUFPLGtCQUFrQjtJQUMzQixjQUFjO0lBQ2QsWUFBbUIsV0FBNkI7UUFBN0IsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO0lBQUcsQ0FBQzs4R0FGM0Msa0JBQWtCO2tHQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBRjlCLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTs7QUFZakUsTUFBTSxPQUFPLDRCQUE0QjtJQUNyQyxjQUFjO0lBQ2QsWUFBbUIsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7SUFBRyxDQUFDOzhHQUYxQiw0QkFBNEI7a0dBQTVCLDRCQUE0QixvRUFGMUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsNEJBQTRCLEVBQUUsQ0FBQzs7MkZBRTdFLDRCQUE0QjtrQkFMeEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyw4QkFBOEIsRUFBRSxDQUFDO2lCQUN6RiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBFZGl0YWJsZVRhYmxlQ2VsbCB9IGZyb20gJy4uL3RhYmxlLWNlbGwuY2xhc3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZkcENlbGxEZWZDb250ZXh0PFQgPSBhbnk+IHtcbiAgICAkaW1wbGljaXQ6IFQ7XG4gICAgcG9wcGluZzogYm9vbGVhbjtcbiAgICByb3dJbmRleDogbnVtYmVyO1xufVxuXG4vKiogQ29sdW1uIGNlbGwgY29udGFpbmVyLiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2ZkcC10YWJsZS1jZWxsJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgY2xhc3MgRmRwVGFibGVDZWxsIHt9XG5cbi8qKlxuICogQ2VsbCBkZWZpbml0aW9uIGZvciBhIHBsYXRmb3JtIHRhYmxlLlxuICogQ2FwdHVyZXMgdGhlIHRlbXBsYXRlIG9mIGEgY29sdW1uJ3MgZGF0YSByb3cgY2VsbCBhcyB3ZWxsIGFzIGNlbGwtc3BlY2lmaWMgcHJvcGVydGllcy5cbiAqL1xuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2ZkcENlbGxEZWZdJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgY2xhc3MgRmRwQ2VsbERlZjxUID0gYW55PiB7XG4gICAgLyoqIFByb3BlcnR5IHRvIHN1cHBvcnQgdHlwaW5ncy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGZkcENlbGxEZWZBczogVDtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8RmRwQ2VsbERlZkNvbnRleHQ8VD4+KSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZDxUPihkaXI6IEZkcENlbGxEZWY8VD4sIGN0eDogRmRwQ2VsbERlZkNvbnRleHQpOiBjdHggaXMgRmRwQ2VsbERlZkNvbnRleHQ8VD4ge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tmZHBFZGl0YWJsZUNlbGxEZWZdJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgY2xhc3MgRmRwRWRpdGFibGVDZWxsRGVmIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Pikge31cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRwRWRpdGFibGVDZWxsRm9ybV0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBFZGl0YWJsZVRhYmxlQ2VsbCwgdXNlRXhpc3Rpbmc6IEZkcEVkaXRhYmxlQ2VsbEZvcm1EaXJlY3RpdmUgfV1cbn0pXG5leHBvcnQgY2xhc3MgRmRwRWRpdGFibGVDZWxsRm9ybURpcmVjdGl2ZSBpbXBsZW1lbnRzIEVkaXRhYmxlVGFibGVDZWxsIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBmb3JtOiBOZ0Zvcm0pIHt9XG59XG4iXX0=","export var FilterType;\n(function (FilterType) {\n FilterType[\"INPUT\"] = \"input\";\n FilterType[\"SINGLE\"] = \"single-select\";\n FilterType[\"MULTI\"] = \"multi-select\";\n FilterType[\"CATEGORY\"] = \"category\";\n FilterType[\"CUSTOM\"] = \"custom\";\n})(FilterType || (FilterType = {}));\nexport var FilterableColumnDataType;\n(function (FilterableColumnDataType) {\n FilterableColumnDataType[\"STRING\"] = \"string\";\n FilterableColumnDataType[\"NUMBER\"] = \"number\";\n FilterableColumnDataType[\"BOOLEAN\"] = \"boolean\";\n FilterableColumnDataType[\"DATE\"] = \"date\";\n})(FilterableColumnDataType || (FilterableColumnDataType = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXR5cGUuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9lbnVtcy9maWx0ZXItdHlwZS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLFVBTVg7QUFORCxXQUFZLFVBQVU7SUFDbEIsNkJBQWUsQ0FBQTtJQUNmLHNDQUF3QixDQUFBO0lBQ3hCLG9DQUFzQixDQUFBO0lBQ3RCLG1DQUFxQixDQUFBO0lBQ3JCLCtCQUFpQixDQUFBO0FBQ3JCLENBQUMsRUFOVyxVQUFVLEtBQVYsVUFBVSxRQU1yQjtBQUVELE1BQU0sQ0FBTixJQUFZLHdCQUtYO0FBTEQsV0FBWSx3QkFBd0I7SUFDaEMsNkNBQWlCLENBQUE7SUFDakIsNkNBQWlCLENBQUE7SUFDakIsK0NBQW1CLENBQUE7SUFDbkIseUNBQWEsQ0FBQTtBQUNqQixDQUFDLEVBTFcsd0JBQXdCLEtBQXhCLHdCQUF3QixRQUtuQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEZpbHRlclR5cGUge1xuICAgIElOUFVUID0gJ2lucHV0JyxcbiAgICBTSU5HTEUgPSAnc2luZ2xlLXNlbGVjdCcsXG4gICAgTVVMVEkgPSAnbXVsdGktc2VsZWN0JyxcbiAgICBDQVRFR09SWSA9ICdjYXRlZ29yeScsXG4gICAgQ1VTVE9NID0gJ2N1c3RvbSdcbn1cblxuZXhwb3J0IGVudW0gRmlsdGVyYWJsZUNvbHVtbkRhdGFUeXBlIHtcbiAgICBTVFJJTkcgPSAnc3RyaW5nJyxcbiAgICBOVU1CRVIgPSAnbnVtYmVyJyxcbiAgICBCT09MRUFOID0gJ2Jvb2xlYW4nLFxuICAgIERBVEUgPSAnZGF0ZSdcbn1cbiJdfQ==","import { FilterableColumnDataType } from './filter-type.enum';\n/** All possible strategies */\nexport const FILTER_STRATEGY = {\n EQ: 'equalTo',\n CONTAINS: 'contains',\n BETWEEN: 'between',\n BEGINS_WITH: 'beginsWith',\n ENDS_WITH: 'endsWith',\n GT: 'greaterThan',\n GTE: 'greaterThanOrEqualTo',\n LT: 'lessThan',\n LTE: 'lessThanOrEqualTo',\n AFTER: 'after',\n ON_OR_AFTER: 'onOrAfter',\n BEFORE: 'before',\n BEFORE_OR_ON: 'beforeOrOn'\n};\nexport const FILTER_STRATEGY_LABEL = {\n equalTo: 'platformTable.P13FilterStrategyLabelEqualTo',\n contains: 'platformTable.P13FilterStrategyLabelContains',\n between: 'platformTable.P13FilterStrategyLabelBetween',\n beginsWith: 'platformTable.P13FilterStrategyLabelBeginsWith',\n endsWith: 'platformTable.P13FilterStrategyLabelEndsWith',\n greaterThan: 'platformTable.P13FilterStrategyLabelGreaterThan',\n greaterThanOrEqualTo: 'platformTable.P13FilterStrategyLabelGreaterThanOrEqualTo',\n lessThan: 'platformTable.P13FilterStrategyLabelLessThan',\n lessThanOrEqualTo: 'platformTable.P13FilterStrategyLabelLessThanOrEqualTo',\n after: 'platformTable.P13FilterStrategyLabelAfter',\n onOrAfter: 'platformTable.P13FilterStrategyLabelOnOrAfter',\n before: 'platformTable.P13FilterStrategyLabelBefore',\n beforeOrOn: 'platformTable.P13FilterStrategyLabelBeforeOrOn'\n};\n/** Date Filter Strategies */\nexport const FILTER_DATE_STRATEGY = {\n EQ: 'equalTo',\n BETWEEN: 'between',\n AFTER: 'after',\n ON_OR_AFTER: 'onOrAfter',\n BEFORE: 'before',\n BEFORE_OR_ON: 'beforeOrOn'\n};\nexport const FILTER_DATE_STRATEGIES = Object.values(FILTER_DATE_STRATEGY);\n/** Number Filter Strategies */\nexport const FILTER_NUMBER_STRATEGY = {\n EQ: 'equalTo',\n BETWEEN: 'between',\n GT: 'greaterThan',\n GTE: 'greaterThanOrEqualTo',\n LT: 'lessThan',\n LTE: 'lessThanOrEqualTo'\n};\nexport const FILTER_NUMBER_STRATEGIES = Object.values(FILTER_NUMBER_STRATEGY);\n/** String Filter Strategies */\nexport const FILTER_STRING_STRATEGY = {\n CONTAINS: 'contains',\n EQ: 'equalTo',\n BEGINS_WITH: 'beginsWith',\n BETWEEN: 'between',\n ENDS_WITH: 'endsWith',\n GT: 'greaterThan',\n GTE: 'greaterThanOrEqualTo',\n LT: 'lessThan',\n LTE: 'lessThanOrEqualTo'\n};\nexport const FILTER_STRING_STRATEGIES = Object.values(FILTER_STRING_STRATEGY);\n/** Boolean Filter Strategies */\nexport const FILTER_BOOLEAN_STRATEGY = {\n EQ: 'equalTo'\n};\nexport const FILTER_BOOLEAN_STRATEGIES = Object.values(FILTER_BOOLEAN_STRATEGY);\n/** Default Filter Strategies for undefined data type */\nexport const FILTER_DEFAULT_STRATEGY = {\n EQ: 'equalTo'\n};\nexport const FILTER_DEFAULT_STRATEGIES = Object.values(FILTER_DEFAULT_STRATEGY);\n// Get Possible strategies based on data type\nexport const getFilterStrategiesBasedOnDataType = (dataType) => {\n switch (dataType) {\n case FilterableColumnDataType.STRING:\n return FILTER_STRING_STRATEGIES;\n case FilterableColumnDataType.NUMBER:\n return FILTER_NUMBER_STRATEGIES;\n case FilterableColumnDataType.DATE:\n return FILTER_DATE_STRATEGIES;\n case FilterableColumnDataType.BOOLEAN:\n return FILTER_BOOLEAN_STRATEGIES;\n default:\n return FILTER_DEFAULT_STRATEGIES;\n }\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi1maWx0ZXIuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9lbnVtcy9jb2xsZWN0aW9uLWZpbHRlci5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlELDhCQUE4QjtBQUM5QixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUc7SUFDM0IsRUFBRSxFQUFFLFNBQVM7SUFDYixRQUFRLEVBQUUsVUFBVTtJQUNwQixPQUFPLEVBQUUsU0FBUztJQUNsQixXQUFXLEVBQUUsWUFBWTtJQUN6QixTQUFTLEVBQUUsVUFBVTtJQUNyQixFQUFFLEVBQUUsYUFBYTtJQUNqQixHQUFHLEVBQUUsc0JBQXNCO0lBQzNCLEVBQUUsRUFBRSxVQUFVO0lBQ2QsR0FBRyxFQUFFLG1CQUFtQjtJQUN4QixLQUFLLEVBQUUsT0FBTztJQUNkLFdBQVcsRUFBRSxXQUFXO0lBQ3hCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFlBQVksRUFBRSxZQUFZO0NBQ3BCLENBQUM7QUFNWCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBb0Q7SUFDbEYsT0FBTyxFQUFFLDZDQUE2QztJQUN0RCxRQUFRLEVBQUUsOENBQThDO0lBQ3hELE9BQU8sRUFBRSw2Q0FBNkM7SUFDdEQsVUFBVSxFQUFFLGdEQUFnRDtJQUM1RCxRQUFRLEVBQUUsOENBQThDO0lBQ3hELFdBQVcsRUFBRSxpREFBaUQ7SUFDOUQsb0JBQW9CLEVBQUUsMERBQTBEO0lBQ2hGLFFBQVEsRUFBRSw4Q0FBOEM7SUFDeEQsaUJBQWlCLEVBQUUsdURBQXVEO0lBQzFFLEtBQUssRUFBRSwyQ0FBMkM7SUFDbEQsU0FBUyxFQUFFLCtDQUErQztJQUMxRCxNQUFNLEVBQUUsNENBQTRDO0lBQ3BELFVBQVUsRUFBRSxnREFBZ0Q7Q0FDL0QsQ0FBQztBQUVGLDZCQUE2QjtBQUM3QixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FHN0I7SUFDQSxFQUFFLEVBQUUsU0FBUztJQUNiLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLEtBQUssRUFBRSxPQUFPO0lBQ2QsV0FBVyxFQUFFLFdBQVc7SUFDeEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsWUFBWSxFQUFFLFlBQVk7Q0FDN0IsQ0FBQztBQUlGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFzQyxNQUFNLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFFN0csK0JBQStCO0FBQy9CLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUE2RTtJQUM1RyxFQUFFLEVBQUUsU0FBUztJQUNiLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLEVBQUUsRUFBRSxhQUFhO0lBQ2pCLEdBQUcsRUFBRSxzQkFBc0I7SUFDM0IsRUFBRSxFQUFFLFVBQVU7SUFDZCxHQUFHLEVBQUUsbUJBQW1CO0NBQzNCLENBQUM7QUFJRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBd0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBRW5ILCtCQUErQjtBQUMvQixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FHL0I7SUFDQSxRQUFRLEVBQUUsVUFBVTtJQUNwQixFQUFFLEVBQUUsU0FBUztJQUNiLFdBQVcsRUFBRSxZQUFZO0lBQ3pCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFNBQVMsRUFBRSxVQUFVO0lBQ3JCLEVBQUUsRUFBRSxhQUFhO0lBQ2pCLEdBQUcsRUFBRSxzQkFBc0I7SUFDM0IsRUFBRSxFQUFFLFVBQVU7SUFDZCxHQUFHLEVBQUUsbUJBQW1CO0NBQzNCLENBQUM7QUFNRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBd0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBRW5ILGdDQUFnQztBQUNoQyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBbUM7SUFDbkUsRUFBRSxFQUFFLFNBQVM7Q0FDaEIsQ0FBQztBQUlGLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUF3QyxNQUFNLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7QUFFckgsd0RBQXdEO0FBQ3hELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFtQztJQUNuRSxFQUFFLEVBQUUsU0FBUztDQUNoQixDQUFDO0FBSUYsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQXdDLE1BQU0sQ0FBQyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUVySCw2Q0FBNkM7QUFDN0MsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsQ0FDOUMsUUFBa0MsRUFDNkIsRUFBRTtJQUNqRSxRQUFRLFFBQVEsRUFBRSxDQUFDO1FBQ2YsS0FBSyx3QkFBd0IsQ0FBQyxNQUFNO1lBQ2hDLE9BQU8sd0JBQXdCLENBQUM7UUFDcEMsS0FBSyx3QkFBd0IsQ0FBQyxNQUFNO1lBQ2hDLE9BQU8sd0JBQXdCLENBQUM7UUFDcEMsS0FBSyx3QkFBd0IsQ0FBQyxJQUFJO1lBQzlCLE9BQU8sc0JBQXNCLENBQUM7UUFDbEMsS0FBSyx3QkFBd0IsQ0FBQyxPQUFPO1lBQ2pDLE9BQU8seUJBQXlCLENBQUM7UUFFckM7WUFDSSxPQUFPLHlCQUF5QixDQUFDO0lBQ3pDLENBQUM7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGZExhbmd1YWdlS2V5SWRlbnRpZmllciB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBGaWx0ZXJhYmxlQ29sdW1uRGF0YVR5cGUgfSBmcm9tICcuL2ZpbHRlci10eXBlLmVudW0nO1xuXG4vKiogQWxsIHBvc3NpYmxlIHN0cmF0ZWdpZXMgKi9cbmV4cG9ydCBjb25zdCBGSUxURVJfU1RSQVRFR1kgPSB7XG4gICAgRVE6ICdlcXVhbFRvJyxcbiAgICBDT05UQUlOUzogJ2NvbnRhaW5zJyxcbiAgICBCRVRXRUVOOiAnYmV0d2VlbicsXG4gICAgQkVHSU5TX1dJVEg6ICdiZWdpbnNXaXRoJyxcbiAgICBFTkRTX1dJVEg6ICdlbmRzV2l0aCcsXG4gICAgR1Q6ICdncmVhdGVyVGhhbicsXG4gICAgR1RFOiAnZ3JlYXRlclRoYW5PckVxdWFsVG8nLFxuICAgIExUOiAnbGVzc1RoYW4nLFxuICAgIExURTogJ2xlc3NUaGFuT3JFcXVhbFRvJyxcbiAgICBBRlRFUjogJ2FmdGVyJyxcbiAgICBPTl9PUl9BRlRFUjogJ29uT3JBZnRlcicsXG4gICAgQkVGT1JFOiAnYmVmb3JlJyxcbiAgICBCRUZPUkVfT1JfT046ICdiZWZvcmVPck9uJ1xufSBhcyBjb25zdDtcblxudHlwZSBGaWx0ZXJTdHJhdGVneVR5cGUgPSB0eXBlb2YgRklMVEVSX1NUUkFURUdZO1xuXG5leHBvcnQgdHlwZSBGaWx0ZXJTdHJhdGVneSA9IEZpbHRlclN0cmF0ZWd5VHlwZVtrZXlvZiBGaWx0ZXJTdHJhdGVneVR5cGVdO1xuXG5leHBvcnQgY29uc3QgRklMVEVSX1NUUkFURUdZX0xBQkVMOiBSZWNvcmQ8RmlsdGVyU3RyYXRlZ3ksIEZkTGFuZ3VhZ2VLZXlJZGVudGlmaWVyPiA9IHtcbiAgICBlcXVhbFRvOiAncGxhdGZvcm1UYWJsZS5QMTNGaWx0ZXJTdHJhdGVneUxhYmVsRXF1YWxUbycsXG4gICAgY29udGFpbnM6ICdwbGF0Zm9ybVRhYmxlLlAxM0ZpbHRlclN0cmF0ZWd5TGFiZWxDb250YWlucycsXG4gICAgYmV0d2VlbjogJ3BsYXRmb3JtVGFibGUuUDEzRmlsdGVyU3RyYXRlZ3lMYWJlbEJldHdlZW4nLFxuICAgIGJlZ2luc1dpdGg6ICdwbGF0Zm9ybVRhYmxlLlAxM0ZpbHRlclN0cmF0ZWd5TGFiZWxCZWdpbnNXaXRoJyxcbiAgICBlbmRzV2l0aDogJ3BsYXRmb3JtVGFibGUuUDEzRmlsdGVyU3RyYXRlZ3lMYWJlbEVuZHNXaXRoJyxcbiAgICBncmVhdGVyVGhhbjogJ3BsYXRmb3JtVGFibGUuUDEzRmlsdGVyU3RyYXRlZ3lMYWJlbEdyZWF0ZXJUaGFuJyxcbiAgICBncmVhdGVyVGhhbk9yRXF1YWxUbzogJ3BsYXRmb3JtVGFibGUuUDEzRmlsdGVyU3RyYXRlZ3lMYWJlbEdyZWF0ZXJUaGFuT3JFcXVhbFRvJyxcbiAgICBsZXNzVGhhbjogJ3BsYXRmb3JtVGFibGUuUDEzRmlsdGVyU3RyYXRlZ3lMYWJlbExlc3NUaGFuJyxcbiAgICBsZXNzVGhhbk9yRXF1YWxUbzogJ3BsYXRmb3JtVGFibGUuUDEzRmlsdGVyU3RyYXRlZ3lMYWJlbExlc3NUaGFuT3JFcXVhbFRvJyxcbiAgICBhZnRlcjogJ3BsYXRmb3JtVGFibGUuUDEzRmlsdGVyU3RyYXRlZ3lMYWJlbEFmdGVyJyxcbiAgICBvbk9yQWZ0ZXI6ICdwbGF0Zm9ybVRhYmxlLlAxM0ZpbHRlclN0cmF0ZWd5TGFiZWxPbk9yQWZ0ZXInLFxuICAgIGJlZm9yZTogJ3BsYXRmb3JtVGFibGUuUDEzRmlsdGVyU3RyYXRlZ3lMYWJlbEJlZm9yZScsXG4gICAgYmVmb3JlT3JPbjogJ3BsYXRmb3JtVGFibGUuUDEzRmlsdGVyU3RyYXRlZ3lMYWJlbEJlZm9yZU9yT24nXG59O1xuXG4vKiogRGF0ZSBGaWx0ZXIgU3RyYXRlZ2llcyAqL1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9EQVRFX1NUUkFURUdZOiBQaWNrPFxuICAgIEZpbHRlclN0cmF0ZWd5VHlwZSxcbiAgICAnQkVUV0VFTicgfCAnRVEnIHwgJ0FGVEVSJyB8ICdPTl9PUl9BRlRFUicgfCAnQkVGT1JFJyB8ICdCRUZPUkVfT1JfT04nXG4+ID0ge1xuICAgIEVROiAnZXF1YWxUbycsXG4gICAgQkVUV0VFTjogJ2JldHdlZW4nLFxuICAgIEFGVEVSOiAnYWZ0ZXInLFxuICAgIE9OX09SX0FGVEVSOiAnb25PckFmdGVyJyxcbiAgICBCRUZPUkU6ICdiZWZvcmUnLFxuICAgIEJFRk9SRV9PUl9PTjogJ2JlZm9yZU9yT24nXG59O1xuXG5leHBvcnQgdHlwZSBGaWx0ZXJEYXRlU3RyYXRlZ3kgPSAodHlwZW9mIEZJTFRFUl9EQVRFX1NUUkFURUdZKVtrZXlvZiB0eXBlb2YgRklMVEVSX0RBVEVfU1RSQVRFR1ldO1xuXG5leHBvcnQgY29uc3QgRklMVEVSX0RBVEVfU1RSQVRFR0lFUzogUmVhZG9ubHlBcnJheTxGaWx0ZXJEYXRlU3RyYXRlZ3k+ID0gT2JqZWN0LnZhbHVlcyhGSUxURVJfREFURV9TVFJBVEVHWSk7XG5cbi8qKiBOdW1iZXIgRmlsdGVyIFN0cmF0ZWdpZXMgKi9cbmV4cG9ydCBjb25zdCBGSUxURVJfTlVNQkVSX1NUUkFURUdZOiBQaWNrPEZpbHRlclN0cmF0ZWd5VHlwZSwgJ0JFVFdFRU4nIHwgJ0VRJyB8ICdHVCcgfCAnR1RFJyB8ICdMVCcgfCAnTFRFJz4gPSB7XG4gICAgRVE6ICdlcXVhbFRvJyxcbiAgICBCRVRXRUVOOiAnYmV0d2VlbicsXG4gICAgR1Q6ICdncmVhdGVyVGhhbicsXG4gICAgR1RFOiAnZ3JlYXRlclRoYW5PckVxdWFsVG8nLFxuICAgIExUOiAnbGVzc1RoYW4nLFxuICAgIExURTogJ2xlc3NUaGFuT3JFcXVhbFRvJ1xufTtcblxuZXhwb3J0IHR5cGUgRmlsdGVyTnVtYmVyU3RyYXRlZ3kgPSAodHlwZW9mIEZJTFRFUl9OVU1CRVJfU1RSQVRFR1kpW2tleW9mIHR5cGVvZiBGSUxURVJfTlVNQkVSX1NUUkFURUdZXTtcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9OVU1CRVJfU1RSQVRFR0lFUzogUmVhZG9ubHlBcnJheTxGaWx0ZXJOdW1iZXJTdHJhdGVneT4gPSBPYmplY3QudmFsdWVzKEZJTFRFUl9OVU1CRVJfU1RSQVRFR1kpO1xuXG4vKiogU3RyaW5nIEZpbHRlciBTdHJhdGVnaWVzICovXG5leHBvcnQgY29uc3QgRklMVEVSX1NUUklOR19TVFJBVEVHWTogUGljazxcbiAgICBGaWx0ZXJTdHJhdGVneVR5cGUsXG4gICAgJ0JFVFdFRU4nIHwgJ0NPTlRBSU5TJyB8ICdFUScgfCAnQkVHSU5TX1dJVEgnIHwgJ0VORFNfV0lUSCcgfCAnR1QnIHwgJ0dURScgfCAnTFQnIHwgJ0xURSdcbj4gPSB7XG4gICAgQ09OVEFJTlM6ICdjb250YWlucycsXG4gICAgRVE6ICdlcXVhbFRvJyxcbiAgICBCRUdJTlNfV0lUSDogJ2JlZ2luc1dpdGgnLFxuICAgIEJFVFdFRU46ICdiZXR3ZWVuJyxcbiAgICBFTkRTX1dJVEg6ICdlbmRzV2l0aCcsXG4gICAgR1Q6ICdncmVhdGVyVGhhbicsXG4gICAgR1RFOiAnZ3JlYXRlclRoYW5PckVxdWFsVG8nLFxuICAgIExUOiAnbGVzc1RoYW4nLFxuICAgIExURTogJ2xlc3NUaGFuT3JFcXVhbFRvJ1xufTtcblxuZXhwb3J0IHR5cGUgRmlsdGVyQWxsU3RyYXRlZ3kgPSAodHlwZW9mIEZJTFRFUl9TVFJBVEVHWSlba2V5b2YgdHlwZW9mIEZJTFRFUl9TVFJBVEVHWV07XG5cbmV4cG9ydCB0eXBlIEZpbHRlclN0cmluZ1N0cmF0ZWd5ID0gKHR5cGVvZiBGSUxURVJfU1RSSU5HX1NUUkFURUdZKVtrZXlvZiB0eXBlb2YgRklMVEVSX1NUUklOR19TVFJBVEVHWV07XG5cbmV4cG9ydCBjb25zdCBGSUxURVJfU1RSSU5HX1NUUkFURUdJRVM6IFJlYWRvbmx5QXJyYXk8RmlsdGVyU3RyaW5nU3RyYXRlZ3k+ID0gT2JqZWN0LnZhbHVlcyhGSUxURVJfU1RSSU5HX1NUUkFURUdZKTtcblxuLyoqIEJvb2xlYW4gRmlsdGVyIFN0cmF0ZWdpZXMgKi9cbmV4cG9ydCBjb25zdCBGSUxURVJfQk9PTEVBTl9TVFJBVEVHWTogUGljazxGaWx0ZXJTdHJhdGVneVR5cGUsICdFUSc+ID0ge1xuICAgIEVROiAnZXF1YWxUbydcbn07XG5cbmV4cG9ydCB0eXBlIEZpbHRlckJvb2xlYW5TdHJhdGVneSA9ICh0eXBlb2YgRklMVEVSX0JPT0xFQU5fU1RSQVRFR1kpW2tleW9mIHR5cGVvZiBGSUxURVJfQk9PTEVBTl9TVFJBVEVHWV07XG5cbmV4cG9ydCBjb25zdCBGSUxURVJfQk9PTEVBTl9TVFJBVEVHSUVTOiBSZWFkb25seUFycmF5PEZpbHRlclN0cmluZ1N0cmF0ZWd5PiA9IE9iamVjdC52YWx1ZXMoRklMVEVSX0JPT0xFQU5fU1RSQVRFR1kpO1xuXG4vKiogRGVmYXVsdCBGaWx0ZXIgU3RyYXRlZ2llcyBmb3IgdW5kZWZpbmVkIGRhdGEgdHlwZSAqL1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9ERUZBVUxUX1NUUkFURUdZOiBQaWNrPEZpbHRlclN0cmF0ZWd5VHlwZSwgJ0VRJz4gPSB7XG4gICAgRVE6ICdlcXVhbFRvJ1xufTtcblxuZXhwb3J0IHR5cGUgRmlsdGVyRGVmYXVsdFN0cmF0ZWd5ID0gKHR5cGVvZiBGSUxURVJfREVGQVVMVF9TVFJBVEVHWSlba2V5b2YgdHlwZW9mIEZJTFRFUl9ERUZBVUxUX1NUUkFURUdZXTtcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9ERUZBVUxUX1NUUkFURUdJRVM6IFJlYWRvbmx5QXJyYXk8RmlsdGVyU3RyaW5nU3RyYXRlZ3k+ID0gT2JqZWN0LnZhbHVlcyhGSUxURVJfREVGQVVMVF9TVFJBVEVHWSk7XG5cbi8vIEdldCBQb3NzaWJsZSBzdHJhdGVnaWVzIGJhc2VkIG9uIGRhdGEgdHlwZVxuZXhwb3J0IGNvbnN0IGdldEZpbHRlclN0cmF0ZWdpZXNCYXNlZE9uRGF0YVR5cGUgPSAoXG4gICAgZGF0YVR5cGU6IEZpbHRlcmFibGVDb2x1bW5EYXRhVHlwZVxuKTogcmVhZG9ubHkgRmlsdGVyU3RyaW5nU3RyYXRlZ3lbXSB8IHJlYWRvbmx5IEZpbHRlckRhdGVTdHJhdGVneVtdID0+IHtcbiAgICBzd2l0Y2ggKGRhdGFUeXBlKSB7XG4gICAgICAgIGNhc2UgRmlsdGVyYWJsZUNvbHVtbkRhdGFUeXBlLlNUUklORzpcbiAgICAgICAgICAgIHJldHVybiBGSUxURVJfU1RSSU5HX1NUUkFURUdJRVM7XG4gICAgICAgIGNhc2UgRmlsdGVyYWJsZUNvbHVtbkRhdGFUeXBlLk5VTUJFUjpcbiAgICAgICAgICAgIHJldHVybiBGSUxURVJfTlVNQkVSX1NUUkFURUdJRVM7XG4gICAgICAgIGNhc2UgRmlsdGVyYWJsZUNvbHVtbkRhdGFUeXBlLkRBVEU6XG4gICAgICAgICAgICByZXR1cm4gRklMVEVSX0RBVEVfU1RSQVRFR0lFUztcbiAgICAgICAgY2FzZSBGaWx0ZXJhYmxlQ29sdW1uRGF0YVR5cGUuQk9PTEVBTjpcbiAgICAgICAgICAgIHJldHVybiBGSUxURVJfQk9PTEVBTl9TVFJBVEVHSUVTO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gRklMVEVSX0RFRkFVTFRfU1RSQVRFR0lFUztcbiAgICB9XG59O1xuIl19","export var ColumnAlign;\n(function (ColumnAlign) {\n ColumnAlign[\"START\"] = \"start\";\n ColumnAlign[\"CENTER\"] = \"center\";\n ColumnAlign[\"END\"] = \"end\";\n})(ColumnAlign || (ColumnAlign = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWFsaWduLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvZW51bXMvY29sdW1uLWFsaWduLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksV0FJWDtBQUpELFdBQVksV0FBVztJQUNuQiw4QkFBZSxDQUFBO0lBQ2YsZ0NBQWlCLENBQUE7SUFDakIsMEJBQVcsQ0FBQTtBQUNmLENBQUMsRUFKVyxXQUFXLEtBQVgsV0FBVyxRQUl0QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIENvbHVtbkFsaWduIHtcbiAgICBTVEFSVCA9ICdzdGFydCcsXG4gICAgQ0VOVEVSID0gJ2NlbnRlcicsXG4gICAgRU5EID0gJ2VuZCdcbn1cblxuZXhwb3J0IHR5cGUgQ29sdW1uQWxpZ25WYWx1ZSA9ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnO1xuIl19","export var TableRowType;\n(function (TableRowType) {\n TableRowType[\"ITEM\"] = \"item\";\n TableRowType[\"GROUP\"] = \"group\";\n TableRowType[\"TREE\"] = \"tree\";\n})(TableRowType || (TableRowType = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LXR5cGUuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9lbnVtcy9yb3ctdHlwZS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLFlBSVg7QUFKRCxXQUFZLFlBQVk7SUFDcEIsNkJBQWEsQ0FBQTtJQUNiLCtCQUFlLENBQUE7SUFDZiw2QkFBYSxDQUFBO0FBQ2pCLENBQUMsRUFKVyxZQUFZLEtBQVosWUFBWSxRQUl2QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFRhYmxlUm93VHlwZSB7XG4gICAgSVRFTSA9ICdpdGVtJyxcbiAgICBHUk9VUCA9ICdncm91cCcsXG4gICAgVFJFRSA9ICd0cmVlJ1xufVxuIl19","export var SelectionMode;\n(function (SelectionMode) {\n SelectionMode[\"SINGLE\"] = \"single\";\n SelectionMode[\"MULTIPLE\"] = \"multiple\";\n SelectionMode[\"NONE\"] = \"none\";\n})(SelectionMode || (SelectionMode = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLW1vZGUuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9lbnVtcy9zZWxlY3Rpb24tbW9kZS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDckIsa0NBQWlCLENBQUE7SUFDakIsc0NBQXFCLENBQUE7SUFDckIsOEJBQWEsQ0FBQTtBQUNqQixDQUFDLEVBSlcsYUFBYSxLQUFiLGFBQWEsUUFJeEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBTZWxlY3Rpb25Nb2RlIHtcbiAgICBTSU5HTEUgPSAnc2luZ2xlJyxcbiAgICBNVUxUSVBMRSA9ICdtdWx0aXBsZScsXG4gICAgTk9ORSA9ICdub25lJ1xufVxuXG5leHBvcnQgdHlwZSBTZWxlY3Rpb25Nb2RlVmFsdWUgPSAnc2luZ2xlJyB8ICdtdWx0aXBsZScgfCAnbm9uZSc7XG4iXX0=","export var SortDirection;\n(function (SortDirection) {\n SortDirection[\"NONE\"] = \"none\";\n SortDirection[\"ASC\"] = \"asc\";\n SortDirection[\"DESC\"] = \"desc\";\n})(SortDirection || (SortDirection = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1kaXJlY3Rpb24uZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9lbnVtcy9zb3J0LWRpcmVjdGlvbi5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDckIsOEJBQWEsQ0FBQTtJQUNiLDRCQUFXLENBQUE7SUFDWCw4QkFBYSxDQUFBO0FBQ2pCLENBQUMsRUFKVyxhQUFhLEtBQWIsYUFBYSxRQUl4QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFNvcnREaXJlY3Rpb24ge1xuICAgIE5PTkUgPSAnbm9uZScsXG4gICAgQVNDID0gJ2FzYycsXG4gICAgREVTQyA9ICdkZXNjJ1xufVxuIl19","import { get } from 'lodash-es';\nimport { FILTER_DATE_STRATEGY, FILTER_NUMBER_STRATEGY, FILTER_STRING_STRATEGY } from './enums';\nexport const filterByString = (rows, filter) => {\n const filterValue = filter.value && filter.value.toLocaleLowerCase();\n const filterValue2 = (filter.value2 && filter.value2.toLocaleLowerCase()) || '';\n switch (filter.strategy) {\n case FILTER_STRING_STRATEGY.EQ:\n return rows.filter((r) => get(r.value, filter.field).toLocaleLowerCase() === filterValue);\n case FILTER_STRING_STRATEGY.GT:\n return rows.filter((r) => get(r.value, filter.field).toLocaleLowerCase() > filterValue);\n case FILTER_STRING_STRATEGY.GTE:\n return rows.filter((r) => get(r.value, filter.field).toLocaleLowerCase() >= filterValue);\n case FILTER_STRING_STRATEGY.LT:\n return rows.filter((r) => get(r.value, filter.field).toLocaleLowerCase() < filterValue);\n case FILTER_STRING_STRATEGY.LTE:\n return rows.filter((r) => get(r.value, filter.field).toLocaleLowerCase() <= filterValue);\n case FILTER_STRING_STRATEGY.BETWEEN:\n return rows.filter((r) => {\n const rowValue = get(r.value, filter.field).toLocaleLowerCase();\n return rowValue >= filterValue && rowValue <= filterValue2;\n });\n case FILTER_STRING_STRATEGY.BEGINS_WITH:\n return rows.filter((r) => get(r.value, filter.field).toLocaleLowerCase().startsWith(filterValue));\n case FILTER_STRING_STRATEGY.ENDS_WITH:\n return rows.filter((r) => get(r.value, filter.field).toLocaleLowerCase().endsWith(filterValue));\n case FILTER_STRING_STRATEGY.CONTAINS:\n default:\n return rows.filter((r) => {\n let rowValue = get(r.value, filter.field);\n if (typeof rowValue === 'number') {\n rowValue = rowValue.toString();\n }\n return rowValue.toLocaleLowerCase().includes(filterValue);\n });\n }\n};\nexport const filterByNumber = (rows, filter) => {\n const filterValue = filter.value;\n const filterValue2 = filter.value2 || 0;\n switch (filter.strategy) {\n case FILTER_NUMBER_STRATEGY.EQ:\n return rows.filter((r) => get(r.value, filter.field) === filterValue);\n case FILTER_NUMBER_STRATEGY.GT:\n return rows.filter((r) => get(r.value, filter.field) > filterValue);\n case FILTER_NUMBER_STRATEGY.GTE:\n return rows.filter((r) => get(r.value, filter.field) >= filterValue);\n case FILTER_NUMBER_STRATEGY.LT:\n return rows.filter((r) => get(r.value, filter.field) < filterValue);\n case FILTER_NUMBER_STRATEGY.LTE:\n return rows.filter((r) => get(r.value, filter.field) <= filterValue);\n case FILTER_NUMBER_STRATEGY.BETWEEN:\n return rows.filter((r) => {\n const rowValue = get(r.value, filter.field);\n return rowValue >= filterValue && rowValue <= filterValue2;\n });\n default:\n return rows.filter((r) => get(r.value, filter.field).toString().includes(filterValue));\n }\n};\nexport const filterByDate = (rows, filter, adapter) => {\n const filterValue = filter.value;\n const filterValue2 = filter.value2;\n switch (filter.strategy) {\n case FILTER_DATE_STRATEGY.AFTER:\n return rows.filter((r) => adapter.compareDate(get(r.value, filter.field), filterValue) > 0);\n case FILTER_DATE_STRATEGY.ON_OR_AFTER:\n return rows.filter((r) => adapter.compareDate(get(r.value, filter.field), filterValue) >= 0);\n case FILTER_DATE_STRATEGY.BEFORE:\n return rows.filter((r) => adapter.compareDate(get(r.value, filter.field), filterValue) < 0);\n case FILTER_DATE_STRATEGY.BEFORE_OR_ON:\n return rows.filter((r) => adapter.compareDate(get(r.value, filter.field), filterValue) <= 0);\n case FILTER_DATE_STRATEGY.BETWEEN:\n return rows.filter((r) => adapter.isBetween(get(r.value, filter.field), filterValue, filterValue2));\n case FILTER_DATE_STRATEGY.EQ:\n default:\n return rows.filter((r) => adapter.dateTimesEqual(get(r.value, filter.field), filterValue));\n }\n};\nexport const filterByBoolean = (rows, filter) => rows.filter((r) => get(r.value, filter.field) === filter.value);\nexport const getUniqueListValuesByKey = (list, key) => Array.from(list\n .reduce((map, item) => {\n map.delete(item[key]);\n map.set(item[key], item);\n return map;\n}, new Map())\n .values());\nexport const getScrollBarWidth = (document) => {\n const div = document.createElement('div');\n div.textContent = 'W';\n div.style.position = 'absolute';\n div.style.visibility = 'hidden';\n div.style.overflowY = 'scroll';\n document.body.appendChild(div);\n const scrollbarWidth = div.offsetWidth - div.clientWidth;\n document.body.removeChild(div);\n return scrollbarWidth;\n};\n/** @hidden */\nexport function isCollectionFilter(item) {\n return item.type !== undefined && item.strategy !== undefined && item.value !== undefined;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFVL0YsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsSUFBZ0IsRUFBRSxNQUE4QixFQUFjLEVBQUU7SUFDM0YsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDckUsTUFBTSxZQUFZLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUVoRixRQUFRLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN0QixLQUFLLHNCQUFzQixDQUFDLEVBQUU7WUFDMUIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxXQUFXLENBQUMsQ0FBQztRQUM5RixLQUFLLHNCQUFzQixDQUFDLEVBQUU7WUFDMUIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxXQUFXLENBQUMsQ0FBQztRQUM1RixLQUFLLHNCQUFzQixDQUFDLEdBQUc7WUFDM0IsT0FBTyxJ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bWVBZGFwdGVyIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RhdGV0aW1lJztcbmltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBGSUxURVJfREFURV9TVFJBVEVHWSwgRklMVEVSX05VTUJFUl9TVFJBVEVHWSwgRklMVEVSX1NUUklOR19TVFJBVEVHWSB9IGZyb20gJy4vZW51bXMnO1xuaW1wb3J0IHtcbiAgICBDb2xsZWN0aW9uQm9vbGVhbkZpbHRlcixcbiAgICBDb2xsZWN0aW9uRGF0ZUZpbHRlcixcbiAgICBDb2xsZWN0aW9uRmlsdGVyLFxuICAgIENvbGxlY3Rpb25OdW1iZXJGaWx0ZXIsXG4gICAgQ29sbGVjdGlvblN0cmluZ0ZpbHRlclxufSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVGFibGVSb3cgfSBmcm9tICcuL21vZGVscy90YWJsZS1yb3cubW9kZWwnO1xuXG5leHBvcnQgY29uc3QgZmlsdGVyQnlTdHJpbmcgPSAocm93czogVGFibGVSb3dbXSwgZmlsdGVyOiBDb2xsZWN0aW9uU3RyaW5nRmlsdGVyKTogVGFibGVSb3dbXSA9PiB7XG4gICAgY29uc3QgZmlsdGVyVmFsdWUgPSBmaWx0ZXIudmFsdWUgJiYgZmlsdGVyLnZhbHVlLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgZmlsdGVyVmFsdWUyID0gKGZpbHRlci52YWx1ZTIgJiYgZmlsdGVyLnZhbHVlMi50b0xvY2FsZUxvd2VyQ2FzZSgpKSB8fCAnJztcblxuICAgIHN3aXRjaCAoZmlsdGVyLnN0cmF0ZWd5KSB7XG4gICAgICAgIGNhc2UgRklMVEVSX1NUUklOR19TVFJBVEVHWS5FUTpcbiAgICAgICAgICAgIHJldHVybiByb3dzLmZpbHRlcigocikgPT4gZ2V0KHIudmFsdWUsIGZpbHRlci5maWVsZCkudG9Mb2NhbGVMb3dlckNhc2UoKSA9PT0gZmlsdGVyVmFsdWUpO1xuICAgICAgICBjYXNlIEZJTFRFUl9TVFJJTkdfU1RSQVRFR1kuR1Q6XG4gICAgICAgICAgICByZXR1cm4gcm93cy5maWx0ZXIoKHIpID0+IGdldChyLnZhbHVlLCBmaWx0ZXIuZmllbGQpLnRvTG9jYWxlTG93ZXJDYXNlKCkgPiBmaWx0ZXJWYWx1ZSk7XG4gICAgICAgIGNhc2UgRklMVEVSX1NUUklOR19TVFJBVEVHWS5HVEU6XG4gICAgICAgICAgICByZXR1cm4gcm93cy5maWx0ZXIoKHIpID0+IGdldChyLnZhbHVlLCBmaWx0ZXIuZmllbGQpLnRvTG9jYWxlTG93ZXJDYXNlKCkgPj0gZmlsdGVyVmFsdWUpO1xuICAgICAgICBjYXNlIEZJTFRFUl9TVFJJTkdfU1RSQVRFR1kuTFQ6XG4gICAgICAgICAgICByZXR1cm4gcm93cy5maWx0ZXIoKHIpID0+IGdldChyLnZhbHVlLCBmaWx0ZXIuZmllbGQpLnRvTG9jYWxlTG93ZXJDYXNlKCkgPCBmaWx0ZXJWYWx1ZSk7XG4gICAgICAgIGNhc2UgRklMVEVSX1NUUklOR19TVFJBVEVHWS5MVEU6XG4gICAgICAgICAgICByZXR1cm4gcm93cy5maWx0ZXIoKHIpID0+IGdldChyLnZhbHVlLCBmaWx0ZXIuZmllbGQpLnRvTG9jYWxlTG93ZXJDYXNlKCkgPD0gZmlsdGVyVmFsdWUpO1xuICAgICAgICBjYXNlIEZJTFRFUl9TVFJJTkdfU1RSQVRFR1kuQkVUV0VFTjpcbiAgICAgICAgICAgIHJldHVybiByb3dzLmZpbHRlcigocikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvd1ZhbHVlID0gZ2V0KHIudmFsdWUsIGZpbHRlci5maWVsZCkudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm93VmFsdWUgPj0gZmlsdGVyVmFsdWUgJiYgcm93VmFsdWUgPD0gZmlsdGVyVmFsdWUyO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIGNhc2UgRklMVEVSX1NUUklOR19TVFJBVEVHWS5CRUdJTlNfV0lUSDpcbiAgICAgICAgICAgIHJldHVybiByb3dzLmZpbHRlcigocikgPT4gZ2V0KHIudmFsdWUsIGZpbHRlci5maWVsZCkudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGZpbHRlclZhbHVlKSk7XG4gICAgICAgIGNhc2UgRklMVEVSX1NUUklOR19TVFJBVEVHWS5FTkRTX1dJVEg6XG4gICAgICAgICAgICByZXR1cm4gcm93cy5maWx0ZXIoKHIpID0+IGdldChyLnZhbHVlLCBmaWx0ZXIuZmllbGQpLnRvTG9jYWxlTG93ZXJDYXNlKCkuZW5kc1dpdGgoZmlsdGVyVmFsdWUpKTtcbiAgICAgICAgY2FzZSBGSUxURVJfU1RSSU5HX1NUUkFURUdZLkNPTlRBSU5TOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIHJvd3MuZmlsdGVyKChyKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHJvd1ZhbHVlID0gZ2V0KHIudmFsdWUsIGZpbHRlci5maWVsZCk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByb3dWYWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgcm93VmFsdWUgPSByb3dWYWx1ZS50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiByb3dWYWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJCeU51bWJlciA9IChyb3dzOiBUYWJsZVJvd1tdLCBmaWx0ZXI6IENvbGxlY3Rpb25OdW1iZXJGaWx0ZXIpOiBUYWJsZVJvd1tdID0+IHtcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IGZpbHRlci52YWx1ZTtcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZTIgPSBmaWx0ZXIudmFsdWUyIHx8IDA7XG5cbiAgICBzd2l0Y2ggKGZpbHRlci5zdHJhdGVneSkge1xuICAgICAgICBjYXNlIEZJTFRFUl9OVU1CRVJfU1RSQVRFR1kuRVE6XG4gICAgICAgICAgICByZXR1cm4gcm93cy5maWx0ZXIoKHIpID0+IGdldChyLnZhbHVlLCBmaWx0ZXIuZmllbGQpID09PSBmaWx0ZXJWYWx1ZSk7XG4gICAgICAgIGNhc2UgRklMVEVSX05VTUJFUl9TVFJBVEVHWS5HVDpcbiAgICAgICAgICAgIHJldHVybiByb3dzLmZpbHRlcigocikgPT4gZ2V0KHIudmFsdWUsIGZpbHRlci5maWVsZCkgPiBmaWx0ZXJWYWx1ZSk7XG4gICAgICAgIGNhc2UgRklMVEVSX05VTUJFUl9TVFJBVEVHWS5HVEU6XG4gICAgICAgICAgICByZXR1cm4gcm93cy5maWx0ZXIoKHIpID0+IGdldChyLnZhbHVlLCBmaWx0ZXIuZmllbGQpID49IGZpbHRlclZhbHVlKTtcbiAgICAgICAgY2FzZSBGSUxURVJfTlVNQkVSX1NUUkFURUdZLkxUOlxuICAgICAgICAgICAgcmV0dXJuIHJvd3MuZmlsdGVyKChyKSA9PiBnZXQoci52YWx1ZSwgZmlsdGVyLmZpZWxkKSA8IGZpbHRlclZhbHVlKTtcbiAgICAgICAgY2FzZSBGSUxURVJfTlVNQkVSX1NUUkFURUdZLkxURTpcbiAgICAgICAgICAgIHJldHVybiByb3dzLmZpbHRlcigocikgPT4gZ2V0KHIudmFsdWUsIGZpbHRlci5maWVsZCkgPD0gZmlsdGVyVmFsdWUpO1xuICAgICAgICBjYXNlIEZJTFRFUl9OVU1CRVJfU1RSQVRFR1kuQkVUV0VFTjpcbiAgICAgICAgICAgIHJldHVybiByb3dzLmZpbHRlcigocikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvd1ZhbHVlID0gZ2V0KHIudmFsdWUsIGZpbHRlci5maWVsZCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvd1ZhbHVlID49IGZpbHRlclZhbHVlICYmIHJvd1ZhbHVlIDw9IGZpbHRlclZhbHVlMjtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIHJvd3MuZmlsdGVyKChyKSA9PiBnZXQoci52YWx1ZSwgZmlsdGVyLmZpZWxkKS50b1N0cmluZygpLmluY2x1ZGVzKGZpbHRlclZhbHVlKSk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGZpbHRlckJ5RGF0ZSA9IDxEID0gYW55PihcbiAgICByb3dzOiBUYWJsZVJvd1tdLFxuICAgIGZpbHRlcjogQ29sbGVjdGlvbkRhdGVGaWx0ZXIsXG4gICAgYWRhcHRlcjogRGF0ZXRpbWVBZGFwdGVyPEQ+XG4pOiBUYWJsZVJvd1tdID0+IHtcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IGZpbHRlci52YWx1ZTtcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZTIgPSBmaWx0ZXIudmFsdWUyO1xuXG4gICAgc3dpdGNoIChmaWx0ZXIuc3RyYXRlZ3kpIHtcbiAgICAgICAgY2FzZSBGSUxURVJfREFURV9TVFJBVEVHWS5BRlRFUjpcbiAgICAgICAgICAgIHJldHVybiByb3dzLmZpbHRlcigocikgPT4gYWRhcHRlci5jb21wYXJlRGF0ZShnZXQoci52YWx1ZSwgZmlsdGVyLmZpZWxkKSwgZmlsdGVyVmFsdWUpID4gMCk7XG4gICAgICAgIGNhc2UgRklMVEVSX0RBVEVfU1RSQVRFR1kuT05fT1JfQUZURVI6XG4gICAgICAgICAgICByZXR1cm4gcm93cy5maWx0ZXIoKHIpID0+IGFkYXB0ZXIuY29tcGFyZURhdGUoZ2V0KHIudmFsdWUsIGZpbHRlci5maWVsZCksIGZpbHRlclZhbHVlKSA+PSAwKTtcbiAgICAgICAgY2FzZSBGSUxURVJfREFURV9TVFJBVEVHWS5CRUZPUkU6XG4gICAgICAgICAgICByZXR1cm4gcm93cy5maWx0ZXIoKHIpID0+IGFkYXB0ZXIuY29tcGFyZURhdGUoZ2V0KHIudmFsdWUsIGZpbHRlci5maWVsZCksIGZpbHRlclZhbHVlKSA8IDApO1xuICAgICAgICBjYXNlIEZJTFRFUl9EQVRFX1NUUkFURUdZLkJFRk9SRV9PUl9PTjpcbiAgICAgICAgICAgIHJldHVybiByb3dzLmZpbHRlcigocikgPT4gYWRhcHRlci5jb21wYXJlRGF0ZShnZXQoci52YWx1ZSwgZmlsdGVyLmZpZWxkKSwgZmlsdGVyVmFsdWUpIDw9IDApO1xuICAgICAgICBjYXNlIEZJTFRFUl9EQVRFX1NUUkFURUdZLkJFVFdFRU46XG4gICAgICAgICAgICByZXR1cm4gcm93cy5maWx0ZXIoKHIpID0+IGFkYXB0ZXIuaXNCZXR3ZWVuKGdldChyLnZhbHVlLCBmaWx0ZXIuZmllbGQpLCBmaWx0ZXJWYWx1ZSwgZmlsdGVyVmFsdWUyKSk7XG4gICAgICAgIGNhc2UgRklMVEVSX0RBVEVfU1RSQVRFR1kuRVE6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gcm93cy5maWx0ZXIoKHIpID0+IGFkYXB0ZXIuZGF0ZVRpbWVzRXF1YWwoZ2V0KHIudmFsdWUsIGZpbHRlci5maWVsZCksIGZpbHRlclZhbHVlKSk7XG4gICAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGZpbHRlckJ5Qm9vbGVhbiA9IChyb3dzOiBUYWJsZVJvd1tdLCBmaWx0ZXI6IENvbGxlY3Rpb25Cb29sZWFuRmlsdGVyKTogVGFibGVSb3dbXSA9PlxuICAgIHJvd3MuZmlsdGVyKChyKSA9PiBnZXQoci52YWx1ZSwgZmlsdGVyLmZpZWxkKSA9PT0gZmlsdGVyLnZhbHVlKTtcblxuZXhwb3J0IGNvbnN0IGdldFVuaXF1ZUxpc3RWYWx1ZXNCeUtleSA9IDxULCBLIGV4dGVuZHMga2V5b2YgVD4obGlzdDogVFtdLCBrZXk6IEspOiBUW10gPT5cbiAgICBBcnJheS5mcm9tKFxuICAgICAgICBsaXN0XG4gICAgICAgICAgICAucmVkdWNlKChtYXAsIGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBtYXAuZGVsZXRlKGl0ZW1ba2V5XSk7XG4gICAgICAgICAgICAgICAgbWFwLnNldChpdGVtW2tleV0sIGl0ZW0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBtYXA7XG4gICAgICAgICAgICB9LCBuZXcgTWFwPFRbS10sIFQ+KCkpXG4gICAgICAgICAgICAudmFsdWVzKClcbiAgICApO1xuXG5leHBvcnQgY29uc3QgZ2V0U2Nyb2xsQmFyV2lkdGggPSAoZG9jdW1lbnQ6IERvY3VtZW50KTogbnVtYmVyID0+IHtcbiAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBkaXYudGV4dENvbnRlbnQgPSAnVyc7XG4gICAgZGl2LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICBkaXYuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xuICAgIGRpdi5zdHlsZS5vdmVyZmxvd1kgPSAnc2Nyb2xsJztcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7XG4gICAgY29uc3Qgc2Nyb2xsYmFyV2lkdGggPSBkaXYub2Zmc2V0V2lkdGggLSBkaXYuY2xpZW50V2lkdGg7XG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkaXYpO1xuICAgIHJldHVybiBzY3JvbGxiYXJXaWR0aDtcbn07XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDb2xsZWN0aW9uRmlsdGVyKGl0ZW06IGFueSk6IGl0ZW0gaXMgQ29sbGVjdGlvbkZpbHRlciB7XG4gICAgcmV0dXJuIGl0ZW0udHlwZSAhPT0gdW5kZWZpbmVkICYmIGl0ZW0uc3RyYXRlZ3kgIT09IHVuZGVmaW5lZCAmJiBpdGVtLnZhbHVlICE9PSB1bmRlZmluZWQ7XG59XG4iXX0=","import { isSelectItem } from '@fundamental-ngx/platform/shared';\nimport { Subject } from 'rxjs';\nimport { map, take, takeUntil } from 'rxjs/operators';\nimport { get } from 'lodash-es';\nimport { isCollectionFilter } from '../utils';\nexport class BaseTableDataProvider {\n constructor() {\n /** @hidden */\n this._destroy$ = new Subject();\n }\n /**\n * Method for setting external filtering conditions.\n * @param filterBy Set of column filters.\n * @param searchInput Search condition from search field.\n */\n setFilters(filterBy, searchInput) {\n this.filterBy = filterBy;\n this.searchInput = searchInput;\n }\n /**\n * Method for filtering the data.\n * @param items Array of data source items.\n * @param filters Set of column filters.\n * @returns Array of filtered items.\n */\n applyFiltering(items, filters) {\n items = items.filter((i) => this.getFilteringStrategy(i, filters));\n return items;\n }\n /** @hidden */\n getSelectItemValue(item) {\n return isSelectItem(item) ? item.value : item;\n }\n /**\n * Method which selects appropriate filtering strategy of the field depending on the filter type.\n * Developers can override this method to extend the filtering functionality.\n * @param item item of the data source.\n * @param filters Set of column filters.\n * @returns Whether or not item should be included in data array.\n */\n getFilteringStrategy(item, filters) {\n return filters\n .filter((condition) => condition.field)\n .every((filter) => {\n if (isCollectionFilter(filter)) {\n return this.collectionFilterStrategy(item, filter);\n }\n return this.collectionFilterGroupStrategy(item, filter);\n });\n }\n /**\n * Method which filters item depending on applied condition result.\n * Developers can override this method to extend its functionality\n * @param item Item to apply conditions to.\n * @param filter Column filter.\n * @returns {boolean} Whether this item should be present in filtered array of items.\n */\n collectionFilterStrategy(item, filter) {\n let result;\n switch (filter.type) {\n case 'boolean':\n result = this.filterBoolean(item, filter);\n break;\n case 'number':\n result = this.filterNumber(item, filter);\n break;\n case 'date': {\n result = this.filterDate(item, filter, this.dateTimeAdapter);\n break;\n }\n case 'string':\n default:\n result = Array.isArray(filter.value)\n ? this.filterArray(item, filter)\n : this.filterString(item, filter);\n break;\n }\n return result;\n }\n /**\n * Method which applies group filtering conditions for the item.\n * @param item Item to apply conditions to.\n * @param filter Filter group.\n * @returns {boolean} Whether this item should be present in filtered items array.\n */\n collectionFilterGroupStrategy(item, filter) {\n return filter.strategy === 'and'\n ? filter.filters.every((f) => this.collectionFilterStrategy(item, f))\n : filter.filters.some((f) => this.collectionFilterStrategy(item, f));\n }\n /**\n * Applies search of the search term for visible table columns.\n * Developers can override this method to extend the filtering functionality.\n * @param items data source items array.\n * @param tableState @see TableState Set of table parameters.\n * @returns filtered data source items array.\n */\n search(items, { searchInput, columnKeys }) {\n const searchText = searchInput?.text || '';\n const keysToSearchBy = columnKeys;\n if (searchText.trim() === '' || keysToSearchBy.length === 0) {\n return items;\n }\n items = items.filter((item) => {\n const valuesForSearch = keysToSearchBy.map((key) => get(item, key));\n return valuesForSearch\n .filter((value) => !!value)\n .map((value) => value.toString())\n .some((value) => value.toLocaleLowerCase().includes(searchText.toLocaleLowerCase()));\n });\n return items;\n }\n /**\n * String filtering strategy\n * @param item data source array item.\n * @param filter filter object\n * @returns whether or not item should be included in data source array.\n */\n filterString(item, filter) {\n const filterValue = filter.value && filter.value.toLocaleLowerCase();\n const filterValue2 = (filter.value2 && filter.value2.toLocaleLowerCase()) || '';\n let itemValue = get(item, filter.field);\n itemValue = itemValue ? itemValue.toLocaleLowerCase() : itemValue;\n let result;\n switch (filter.strategy) {\n case 'equalTo':\n result = itemValue === filterValue;\n break;\n case 'greaterThan':\n result = itemValue > filterValue;\n break;\n case 'greaterThanOrEqualTo':\n result = itemValue >= filterValue;\n break;\n case 'lessThan':\n result = itemValue < filterValue;\n break;\n case 'lessThanOrEqualTo':\n result = itemValue <= filterValue;\n break;\n case 'between':\n result = itemValue >= filterValue && itemValue <= filterValue2;\n break;\n case 'beginsWith':\n result = itemValue.startsWith(filterValue);\n break;\n case 'endsWith':\n result = itemValue.endsWith(filterValue);\n break;\n case 'contains':\n default:\n result = itemValue ? itemValue.includes(filterValue) : itemValue === filterValue;\n }\n return filter.exclude ? !result : result;\n }\n /**\n * Number filtering strategy\n * @param item data source array item.\n * @param filter filter object\n * @returns whether or not item should be included in data source array.\n */\n filterNumber(item, filter) {\n const filterValue = Number.parseFloat(filter.value);\n const filterValue2 = Number.parseFloat(filter.value2) || 0;\n const itemValue = Number.parseFloat(get(item, filter.field));\n let result;\n switch (filter.strategy) {\n case 'greaterThan':\n result = itemValue > filterValue;\n break;\n case 'greaterThanOrEqualTo':\n result = itemValue >= filterValue;\n break;\n case 'lessThan':\n result = itemValue < filterValue;\n break;\n case 'lessThanOrEqualTo':\n result = itemValue <= filterValue;\n break;\n case 'between':\n result = itemValue >= filterValue && itemValue <= filterValue2;\n break;\n case 'equalTo':\n default:\n result = itemValue === filterValue;\n }\n return filter.exclude ? !result : result;\n }\n /**\n * Date filtering strategy\n * @param item data source array item.\n * @param filter filter object\n * @param adapter\n * @returns whether or not item should be included in data source array.\n */\n filterDate(item, filter, adapter) {\n if (!adapter) {\n throw new Error('In order to filter date columns, please provide DateTime adapter in your TableDataProvider constructor.');\n }\n const filterValue = filter.value;\n const filterValue2 = filter.value2;\n const itemValue = get(item, filter.field);\n const diff = adapter.compareDate(itemValue, filterValue);\n let result;\n switch (filter.strategy) {\n case 'after':\n result = diff > 0;\n break;\n case 'onOrAfter':\n result = diff >= 0;\n break;\n case 'before':\n result = diff < 0;\n break;\n case 'beforeOrOn':\n result = diff <= 0;\n break;\n case 'between':\n result = adapter.isBetween(itemValue, filterValue, filterValue2);\n break;\n case 'equalTo':\n default:\n result = adapter.dateTimesEqual(itemValue, filterValue);\n }\n return filter.exclude ? !result : result;\n }\n /**\n * Boolean filtering strategy\n * @param item data source array item.\n * @param filter filter object\n * @returns whether or not item should be included in data source array.\n */\n filterBoolean(item, filter) {\n const filterValue = filter.value;\n const itemValue = get(item, filter.field);\n let result;\n switch (filter.strategy) {\n case 'equalTo':\n default:\n result = itemValue === filterValue;\n }\n return filter.exclude ? !result : result;\n }\n /**\n * Array filtering strategy\n * @param item data source array item.\n * @param filter filter object\n * @returns whether or not item should be included in data source array.\n */\n filterArray(item, filter) {\n const filterValues = filter.value.map((v) => this.getSelectItemValue(v));\n const itemValue = get(item, filter.field);\n let result;\n switch (filter.strategy) {\n case 'equalTo':\n default:\n result = filterValues.includes(itemValue);\n }\n return !filterValues.length || filter.exclude ? !result : result;\n }\n /** @hidden */\n unsubscribe() {\n this._destroy$.next();\n this._destroy$.complete();\n }\n}\nexport class TableDataProvider extends BaseTableDataProvider {\n /**\n * Method for retrieving the data.\n * @param tableState @see TableState Set of table parameters.\n * @returns Observable with data.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n fetch(tableState) {\n throw new Error('fetch method should be implemented by developers for custom data providers.');\n }\n /**\n * Method for applying filtering and retrieving the data.\n * @param state @see TableState Set of table parameters.\n * @returns Observable with filtered data.\n */\n fetchData(state) {\n return this.fetch(state).pipe(map((items) => {\n if (this.searchInput) {\n items = this.search(items, { ...state, ...{ searchInput: this.searchInput } });\n }\n if (this.filterBy) {\n items = this.applyFiltering(items, this.filterBy);\n }\n return items;\n }), takeUntil(this._destroy$));\n }\n /**\n * Method for getting all possible options for particular field.\n * Used for creating select options.\n * Developers can override this method to extend the filtering functionality.\n * @param field key of the data item.\n * @returns Observable with select items.\n */\n getFieldOptions(field) {\n return this.fetch().pipe(take(1), map((data) => {\n const options = data.map((item) => ({\n label: get(item, field),\n value: get(item, field)\n }));\n return options;\n }));\n }\n}\nexport class TableChildrenDataProvider extends BaseTableDataProvider {\n /**\n * Method for retrieving the data.\n * @param tableState @see TableState Set of table parameters.\n * @param parentRows\n * @returns Observable with data.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n fetch(tableState, parentRows) {\n throw new Error('fetch method should be implemented by developers for custom data providers.');\n }\n /**\n * Method for applying filtering and retrieving the data.\n * @param state @see TableState Set of table parameters.\n * @param tableRows\n * @returns Observable with filtered data.\n */\n fetchData(state, tableRows) {\n return this.fetch(state, tableRows).pipe(map((items) => {\n items.forEach((rowItems, row) => {\n if (this.searchInput) {\n rowItems = this.search(rowItems, { ...state, ...{ searchInput: this.searchInput } });\n }\n if (this.filterBy) {\n rowItems = this.applyFiltering(rowItems, this.filterBy);\n }\n if (rowItems.length === 0) {\n items.delete(row);\n }\n else {\n items.set(row, rowItems);\n }\n });\n return items;\n }), takeUntil(this._destroy$));\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9kb21haW4vdGFibGUtZGF0YS1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQWMsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDNUUsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVl0RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBR2hDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUU5QyxNQUFNLE9BQWdCLHFCQUFxQjtJQUEzQztRQWlCSSxjQUFjO1FBQ0osY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFvUzlDLENBQUM7SUFsU0c7Ozs7T0FJRztJQUNILFVBQVUsQ0FBQyxRQUFvQyxFQUFFLFdBQXlCO1FBQ3RFLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGNBQWMsQ0FBQyxLQUFVLEVBQUUsT0FBbUM7UUFDMUQsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNuRSxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsY0FBYztJQUNkLGtCQUFrQixDQUFDLElBQVM7UUFDeEIsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxL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IEZkRGF0ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kYXRldGltZSc7XG5pbXBvcnQgeyBTZWFyY2hJbnB1dCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2VhcmNoLWZpZWxkJztcbmltcG9ydCB7IFNlbGVjdEl0ZW0sIGlzU2VsZWN0SXRlbSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgICBDb2xsZWN0aW9uQm9vbGVhbkZpbHRlcixcbiAgICBDb2xsZWN0aW9uRGF0ZUZpbHRlcixcbiAgICBDb2xsZWN0aW9uRmlsdGVyLFxuICAgIENvbGxlY3Rpb25GaWx0ZXJBbmRHcm91cCxcbiAgICBDb2xsZWN0aW9uRmlsdGVyR3JvdXAsXG4gICAgQ29sbGVjdGlvbk51bWJlckZpbHRlcixcbiAgICBDb2xsZWN0aW9uU2VsZWN0RmlsdGVyLFxuICAgIENvbGxlY3Rpb25TdHJpbmdGaWx0ZXJcbn0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb2xsZWN0aW9uLWZpbHRlci5pbnRlcmZhY2UnO1xuXG5pbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgVGFibGVTdGF0ZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvdGFibGUtc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IFRhYmxlUm93IH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IGlzQ29sbGVjdGlvbkZpbHRlciB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VUYWJsZURhdGFQcm92aWRlcjxULCBQID0gVFtdPiB7XG4gICAgYWJzdHJhY3QgZmV0Y2goc3RhdGU/OiBUYWJsZVN0YXRlLCBwYXJlbnRSb3dzPzogVGFibGVSb3c8VD5bXSk6IE9ic2VydmFibGU8UD47XG5cbiAgICBhYnN0cmFjdCBmZXRjaERhdGEoc3RhdGU6IFRhYmxlU3RhdGUsIHBhcmVudFJvd3M/OiBUYWJsZVJvdzxUPltdKTogT2JzZXJ2YWJsZTxQPjtcbiAgICAvKiogVG90YWwgaXRlbXMgY291bnQuICovXG4gICAgdG90YWxJdGVtczogbnVtYmVyO1xuICAgIC8qKiBBcnJheSBvZiBpdGVtcy4gKi9cbiAgICBpdGVtczogUDtcblxuICAgIC8qKiBEYXRlIHRpbWUgYWRhcHRlciBmb3IgZGF0ZSBmaWVsZCBmaWx0ZXJpbmcuICovXG4gICAgZGF0ZVRpbWVBZGFwdGVyPzogRGF0ZXRpbWVBZGFwdGVyPGFueT47XG4gICAgLyoqIEFkZGl0aW9uYWwgc2V0IG9mIGZpbHRlcnMgcHJvdmlkZWQgYnkgb3V0c2lkZSBjb21wb25lbnQuICovXG4gICAgcHJvdGVjdGVkIGZpbHRlckJ5OiBDb2xsZWN0aW9uRmlsdGVyQW5kR3JvdXBbXTtcblxuICAgIC8qKiBBZGRpdGlvbmFsIHNlYXJjaCBxdWVyeSBwcm92aWRlZCBieSBvdXRzaWRlIGNvbXBvbmVudC4gKi9cbiAgICBwcm90ZWN0ZWQgc2VhcmNoSW5wdXQ/OiBTZWFyY2hJbnB1dDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgZm9yIHNldHRpbmcgZXh0ZXJuYWwgZmlsdGVyaW5nIGNvbmRpdGlvbnMuXG4gICAgICogQHBhcmFtIGZpbHRlckJ5IFNldCBvZiBjb2x1bW4gZmlsdGVycy5cbiAgICAgKiBAcGFyYW0gc2VhcmNoSW5wdXQgU2VhcmNoIGNvbmRpdGlvbiBmcm9tIHNlYXJjaCBmaWVsZC5cbiAgICAgKi9cbiAgICBzZXRGaWx0ZXJzKGZpbHRlckJ5OiBDb2xsZWN0aW9uRmlsdGVyQW5kR3JvdXBbXSwgc2VhcmNoSW5wdXQ/OiBTZWFyY2hJbnB1dCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlckJ5ID0gZmlsdGVyQnk7XG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXQgPSBzZWFyY2hJbnB1dDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgZm9yIGZpbHRlcmluZyB0aGUgZGF0YS5cbiAgICAgKiBAcGFyYW0gaXRlbXMgQXJyYXkgb2YgZGF0YSBzb3VyY2UgaXRlbXMuXG4gICAgICogQHBhcmFtIGZpbHRlcnMgU2V0IG9mIGNvbHVtbiBmaWx0ZXJzLlxuICAgICAqIEByZXR1cm5zIEFycmF5IG9mIGZpbHRlcmVkIGl0ZW1zLlxuICAgICAqL1xuICAgIGFwcGx5RmlsdGVyaW5nKGl0ZW1zOiBUW10sIGZpbHRlcnM6IENvbGxlY3Rpb25GaWx0ZXJBbmRHcm91cFtdKTogVFtdIHtcbiAgICAgICAgaXRlbXMgPSBpdGVtcy5maWx0ZXIoKGkpID0+IHRoaXMuZ2V0RmlsdGVyaW5nU3RyYXRlZ3koaSwgZmlsdGVycykpO1xuICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXRTZWxlY3RJdGVtVmFsdWUoaXRlbTogYW55KTogYW55IHtcbiAgICAgICAgcmV0dXJuIGlzU2VsZWN0SXRlbShpdGVtKSA/IGl0ZW0udmFsdWUgOiBpdGVtO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCB3aGljaCBzZWxlY3RzIGFwcHJvcHJpYXRlIGZpbHRlcmluZyBzdHJhdGVneSBvZiB0aGUgZmllbGQgZGVwZW5kaW5nIG9uIHRoZSBmaWx0ZXIgdHlwZS5cbiAgICAgKiBEZXZlbG9wZXJzIGNhbiBvdmVycmlkZSB0aGlzIG1ldGhvZCB0byBleHRlbmQgdGhlIGZpbHRlcmluZyBmdW5jdGlvbmFsaXR5LlxuICAgICAqIEBwYXJhbSBpdGVtIGl0ZW0gb2YgdGhlIGRhdGEgc291cmNlLlxuICAgICAqIEBwYXJhbSBmaWx0ZXJzIFNldCBvZiBjb2x1bW4gZmlsdGVycy5cbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIG9yIG5vdCBpdGVtIHNob3VsZCBiZSBpbmNsdWRlZCBpbiBkYXRhIGFycmF5LlxuICAgICAqL1xuICAgIGdldEZpbHRlcmluZ1N0cmF0ZWd5KGl0ZW06IFQsIGZpbHRlcnM6IENvbGxlY3Rpb25GaWx0ZXJBbmRHcm91cFtdKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBmaWx0ZXJzXG4gICAgICAgICAgICAuZmlsdGVyKChjb25kaXRpb24pID0+IGNvbmRpdGlvbi5maWVsZClcbiAgICAgICAgICAgIC5ldmVyeSgoZmlsdGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGlzQ29sbGVjdGlvbkZpbHRlcihmaWx0ZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb25GaWx0ZXJTdHJhdGVneShpdGVtLCBmaWx0ZXIpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb25GaWx0ZXJHcm91cFN0cmF0ZWd5KGl0ZW0sIGZpbHRlcik7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2Qgd2hpY2ggZmlsdGVycyBpdGVtIGRlcGVuZGluZyBvbiBhcHBsaWVkIGNvbmRpdGlvbiByZXN1bHQuXG4gICAgICogRGV2ZWxvcGVycyBjYW4gb3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gZXh0ZW5kIGl0cyBmdW5jdGlvbmFsaXR5XG4gICAgICogQHBhcmFtIGl0ZW0gSXRlbSB0byBhcHBseSBjb25kaXRpb25zIHRvLlxuICAgICAqIEBwYXJhbSBmaWx0ZXIgQ29sdW1uIGZpbHRlci5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciB0aGlzIGl0ZW0gc2hvdWxkIGJlIHByZXNlbnQgaW4gZmlsdGVyZWQgYXJyYXkgb2YgaXRlbXMuXG4gICAgICovXG4gICAgY29sbGVjdGlvbkZpbHRlclN0cmF0ZWd5KGl0ZW06IFQsIGZpbHRlcjogQ29sbGVjdGlvbkZpbHRlcik6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgcmVzdWx0OiBib29sZWFuO1xuXG4gICAgICAgIHN3aXRjaCAoZmlsdGVyLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMuZmlsdGVyQm9vbGVhbihpdGVtLCBmaWx0ZXIgYXMgQ29sbGVjdGlvbkJvb2xlYW5GaWx0ZXIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSB0aGlzLmZpbHRlck51bWJlcihpdGVtLCBmaWx0ZXIgYXMgQ29sbGVjdGlvbk51bWJlckZpbHRlcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdkYXRlJzoge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMuZmlsdGVyRGF0ZShpdGVtLCBmaWx0ZXIgYXMgQ29sbGVjdGlvbkRhdGVGaWx0ZXIsIHRoaXMuZGF0ZVRpbWVBZGFwdGVyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IEFycmF5LmlzQXJyYXkoZmlsdGVyLnZhbHVlKVxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuZmlsdGVyQXJyYXkoaXRlbSwgZmlsdGVyIGFzIENvbGxlY3Rpb25TZWxlY3RGaWx0ZXIpXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5maWx0ZXJTdHJpbmcoaXRlbSwgZmlsdGVyIGFzIENvbGxlY3Rpb25TdHJpbmdGaWx0ZXIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2Qgd2hpY2ggYXBwbGllcyBncm91cCBmaWx0ZXJpbmcgY29uZGl0aW9ucyBmb3IgdGhlIGl0ZW0uXG4gICAgICogQHBhcmFtIGl0ZW0gSXRlbSB0byBhcHBseSBjb25kaXRpb25zIHRvLlxuICAgICAqIEBwYXJhbSBmaWx0ZXIgRmlsdGVyIGdyb3VwLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBXaGV0aGVyIHRoaXMgaXRlbSBzaG91bGQgYmUgcHJlc2VudCBpbiBmaWx0ZXJlZCBpdGVtcyBhcnJheS5cbiAgICAgKi9cbiAgICBjb2xsZWN0aW9uRmlsdGVyR3JvdXBTdHJhdGVneShpdGVtOiBULCBmaWx0ZXI6IENvbGxlY3Rpb25GaWx0ZXJHcm91cCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZmlsdGVyLnN0cmF0ZWd5ID09PSAnYW5kJ1xuICAgICAgICAgICAgPyBmaWx0ZXIuZmlsdGVycy5ldmVyeSgoZikgPT4gdGhpcy5jb2xsZWN0aW9uRmlsdGVyU3RyYXRlZ3koaXRlbSwgZikpXG4gICAgICAgICAgICA6IGZpbHRlci5maWx0ZXJzLnNvbWUoKGYpID0+IHRoaXMuY29sbGVjdGlvbkZpbHRlclN0cmF0ZWd5KGl0ZW0sIGYpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBcHBsaWVzIHNlYXJjaCBvZiB0aGUgc2VhcmNoIHRlcm0gZm9yIHZpc2libGUgdGFibGUgY29sdW1ucy5cbiAgICAgKiBEZXZlbG9wZXJzIGNhbiBvdmVycmlkZSB0aGlzIG1ldGhvZCB0byBleHRlbmQgdGhlIGZpbHRlcmluZyBmdW5jdGlvbmFsaXR5LlxuICAgICAqIEBwYXJhbSBpdGVtcyBkYXRhIHNvdXJjZSBpdGVtcyBhcnJheS5cbiAgICAgKiBAcGFyYW0gdGFibGVTdGF0ZSBAc2VlIFRhYmxlU3RhdGUgU2V0IG9mIHRhYmxlIHBhcmFtZXRlcnMuXG4gICAgICogQHJldHVybnMgZmlsdGVyZWQgZGF0YSBzb3VyY2UgaXRlbXMgYXJyYXkuXG4gICAgICovXG4gICAgc2VhcmNoKGl0ZW1zOiBUW10sIHsgc2VhcmNoSW5wdXQsIGNvbHVtbktleXMgfTogVGFibGVTdGF0ZSk6IFRbXSB7XG4gICAgICAgIGNvbnN0IHNlYXJjaFRleHQgPSBzZWFyY2hJbnB1dD8udGV4dCB8fCAnJztcbiAgICAgICAgY29uc3Qga2V5c1RvU2VhcmNoQnkgPSBjb2x1bW5LZXlzO1xuXG4gICAgICAgIGlmIChzZWFyY2hUZXh0LnRyaW0oKSA9PT0gJycgfHwga2V5c1RvU2VhcmNoQnkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgICAgIH1cblxuICAgICAgICBpdGVtcyA9IGl0ZW1zLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVzRm9yU2VhcmNoID0ga2V5c1RvU2VhcmNoQnkubWFwKChrZXkpID0+IGdldChpdGVtLCBrZXkpKTtcblxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlc0ZvclNlYXJjaFxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHZhbHVlKSA9PiAhIXZhbHVlKVxuICAgICAgICAgICAgICAgIC5tYXAoKHZhbHVlKTogc3RyaW5nID0+IHZhbHVlLnRvU3RyaW5nKCkpXG4gICAgICAgICAgICAgICAgLnNvbWUoKHZhbHVlKSA9PiB2YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRleHQudG9Mb2NhbGVMb3dlckNhc2UoKSkpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3RyaW5nIGZpbHRlcmluZyBzdHJhdGVneVxuICAgICAqIEBwYXJhbSBpdGVtIGRhdGEgc291cmNlIGFycmF5IGl0ZW0uXG4gICAgICogQHBhcmFtIGZpbHRlciBmaWx0ZXIgb2JqZWN0XG4gICAgICogQHJldHVybnMgd2hldGhlciBvciBub3QgaXRlbSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gZGF0YSBzb3VyY2UgYXJyYXkuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGZpbHRlclN0cmluZyhpdGVtOiBULCBmaWx0ZXI6IENvbGxlY3Rpb25TdHJpbmdGaWx0ZXIpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSBmaWx0ZXIudmFsdWUgJiYgZmlsdGVyLnZhbHVlLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgIGNvbnN0IGZpbHRlclZhbHVlMiA9IChmaWx0ZXIudmFsdWUyICYmIGZpbHRlci52YWx1ZTIudG9Mb2NhbGVMb3dlckNhc2UoKSkgfHwgJyc7XG4gICAgICAgIGxldCBpdGVtVmFsdWUgPSBnZXQoaXRlbSwgZmlsdGVyLmZpZWxkKTtcblxuICAgICAgICBpdGVtVmFsdWUgPSBpdGVtVmFsdWUgPyBpdGVtVmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKSA6IGl0ZW1WYWx1ZTtcblxuICAgICAgICBsZXQgcmVzdWx0OiBib29sZWFuO1xuXG4gICAgICAgIHN3aXRjaCAoZmlsdGVyLnN0cmF0ZWd5KSB7XG4gICAgICAgICAgICBjYXNlICdlcXVhbFRvJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpdGVtVmFsdWUgPT09IGZpbHRlclZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZ3JlYXRlclRoYW4nOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGl0ZW1WYWx1ZSA+IGZpbHRlclZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZ3JlYXRlclRoYW5PckVxdWFsVG8nOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGl0ZW1WYWx1ZSA+PSBmaWx0ZXJWYWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2xlc3NUaGFuJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpdGVtVmFsdWUgPCBmaWx0ZXJWYWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2xlc3NUaGFuT3JFcXVhbFRvJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpdGVtVmFsdWUgPD0gZmlsdGVyVmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdiZXR3ZWVuJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpdGVtVmFsdWUgPj0gZmlsdGVyVmFsdWUgJiYgaXRlbVZhbHVlIDw9IGZpbHRlclZhbHVlMjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2JlZ2luc1dpdGgnOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGl0ZW1WYWx1ZS5zdGFydHNXaXRoKGZpbHRlclZhbHVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2VuZHNXaXRoJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpdGVtVmFsdWUuZW5kc1dpdGgoZmlsdGVyVmFsdWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY29udGFpbnMnOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpdGVtVmFsdWUgPyBpdGVtVmFsdWUuaW5jbHVkZXMoZmlsdGVyVmFsdWUpIDogaXRlbVZhbHVlID09PSBmaWx0ZXJWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWx0ZXIuZXhjbHVkZSA/ICFyZXN1bHQgOiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTnVtYmVyIGZpbHRlcmluZyBzdHJhdGVneVxuICAgICAqIEBwYXJhbSBpdGVtIGRhdGEgc291cmNlIGFycmF5IGl0ZW0uXG4gICAgICogQHBhcmFtIGZpbHRlciBmaWx0ZXIgb2JqZWN0XG4gICAgICogQHJldHVybnMgd2hldGhlciBvciBub3QgaXRlbSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gZGF0YSBzb3VyY2UgYXJyYXkuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGZpbHRlck51bWJlcihpdGVtOiBULCBmaWx0ZXI6IENvbGxlY3Rpb25OdW1iZXJGaWx0ZXIpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSBOdW1iZXIucGFyc2VGbG9hdChmaWx0ZXIudmFsdWUgYXMgdW5rbm93biBhcyBzdHJpbmcpO1xuICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZTIgPSBOdW1iZXIucGFyc2VGbG9hdChmaWx0ZXIudmFsdWUyIGFzIHVua25vd24gYXMgc3RyaW5nKSB8fCAwO1xuICAgICAgICBjb25zdCBpdGVtVmFsdWUgPSBOdW1iZXIucGFyc2VGbG9hdChnZXQoaXRlbSwgZmlsdGVyLmZpZWxkKSk7XG4gICAgICAgIGxldCByZXN1bHQ6IGJvb2xlYW47XG5cbiAgICAgICAgc3dpdGNoIChmaWx0ZXIuc3RyYXRlZ3kpIHtcbiAgICAgICAgICAgIGNhc2UgJ2dyZWF0ZXJUaGFuJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpdGVtVmFsdWUgPiBmaWx0ZXJWYWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2dyZWF0ZXJUaGFuT3JFcXVhbFRvJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpdGVtVmFsdWUgPj0gZmlsdGVyVmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdsZXNzVGhhbic6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXRlbVZhbHVlIDwgZmlsdGVyVmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdsZXNzVGhhbk9yRXF1YWxUbyc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXRlbVZhbHVlIDw9IGZpbHRlclZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYmV0d2Vlbic6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXRlbVZhbHVlID49IGZpbHRlclZhbHVlICYmIGl0ZW1WYWx1ZSA8PSBmaWx0ZXJWYWx1ZTI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdlcXVhbFRvJzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXRlbVZhbHVlID09PSBmaWx0ZXJWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWx0ZXIuZXhjbHVkZSA/ICFyZXN1bHQgOiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGF0ZSBmaWx0ZXJpbmcgc3RyYXRlZ3lcbiAgICAgKiBAcGFyYW0gaXRlbSBkYXRhIHNvdXJjZSBhcnJheSBpdGVtLlxuICAgICAqIEBwYXJhbSBmaWx0ZXIgZmlsdGVyIG9iamVjdFxuICAgICAqIEBwYXJhbSBhZGFwdGVyXG4gICAgICogQHJldHVybnMgd2hldGhlciBvciBub3QgaXRlbSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gZGF0YSBzb3VyY2UgYXJyYXkuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGZpbHRlckRhdGU8RCA9IEZkRGF0ZT4oaXRlbTogVCwgZmlsdGVyOiBDb2xsZWN0aW9uRGF0ZUZpbHRlciwgYWRhcHRlcj86IERhdGV0aW1lQWRhcHRlcjxEPik6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIWFkYXB0ZXIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAnSW4gb3JkZXIgdG8gZmlsdGVyIGRhdGUgY29sdW1ucywgcGxlYXNlIHByb3ZpZGUgRGF0ZVRpbWUgYWRhcHRlciBpbiB5b3VyIFRhYmxlRGF0YVByb3ZpZGVyIGNvbnN0cnVjdG9yLidcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IGZpbHRlci52YWx1ZTtcbiAgICAgICAgY29uc3QgZmlsdGVyVmFsdWUyID0gZmlsdGVyLnZhbHVlMjtcbiAgICAgICAgY29uc3QgaXRlbVZhbHVlID0gZ2V0KGl0ZW0sIGZpbHRlci5maWVsZCk7XG4gICAgICAgIGNvbnN0IGRpZmYgPSBhZGFwdGVyLmNvbXBhcmVEYXRlKGl0ZW1WYWx1ZSwgZmlsdGVyVmFsdWUpO1xuICAgICAgICBsZXQgcmVzdWx0OiBib29sZWFuO1xuXG4gICAgICAgIHN3aXRjaCAoZmlsdGVyLnN0cmF0ZWd5KSB7XG4gICAgICAgICAgICBjYXNlICdhZnRlcic6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gZGlmZiA+IDA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdvbk9yQWZ0ZXInOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRpZmYgPj0gMDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2JlZm9yZSc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gZGlmZiA8IDA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdiZWZvcmVPck9uJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBkaWZmIDw9IDA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdiZXR3ZWVuJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBhZGFwdGVyLmlzQmV0d2VlbihpdGVtVmFsdWUsIGZpbHRlclZhbHVlLCBmaWx0ZXJWYWx1ZTIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdlcXVhbFRvJzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gYWRhcHRlci5kYXRlVGltZXNFcXVhbChpdGVtVmFsdWUsIGZpbHRlclZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWx0ZXIuZXhjbHVkZSA/ICFyZXN1bHQgOiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQm9vbGVhbiBmaWx0ZXJpbmcgc3RyYXRlZ3lcbiAgICAgKiBAcGFyYW0gaXRlbSBkYXRhIHNvdXJjZSBhcnJheSBpdGVtLlxuICAgICAqIEBwYXJhbSBmaWx0ZXIgZmlsdGVyIG9iamVjdFxuICAgICAqIEByZXR1cm5zIHdoZXRoZXIgb3Igbm90IGl0ZW0gc2hvdWxkIGJlIGluY2x1ZGVkIGluIGRhdGEgc291cmNlIGFycmF5LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBmaWx0ZXJCb29sZWFuKGl0ZW06IFQsIGZpbHRlcjogQ29sbGVjdGlvbkJvb2xlYW5GaWx0ZXIpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSBmaWx0ZXIudmFsdWU7XG4gICAgICAgIGNvbnN0IGl0ZW1WYWx1ZSA9IGdldChpdGVtLCBmaWx0ZXIuZmllbGQpO1xuICAgICAgICBsZXQgcmVzdWx0OiBib29sZWFuO1xuXG4gICAgICAgIHN3aXRjaCAoZmlsdGVyLnN0cmF0ZWd5KSB7XG4gICAgICAgICAgICBjYXNlICdlcXVhbFRvJzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXRlbVZhbHVlID09PSBmaWx0ZXJWYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWx0ZXIuZXhjbHVkZSA/ICFyZXN1bHQgOiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXJyYXkgZmlsdGVyaW5nIHN0cmF0ZWd5XG4gICAgICogQHBhcmFtIGl0ZW0gZGF0YSBzb3VyY2UgYXJyYXkgaXRlbS5cbiAgICAgKiBAcGFyYW0gZmlsdGVyIGZpbHRlciBvYmplY3RcbiAgICAgKiBAcmV0dXJucyB3aGV0aGVyIG9yIG5vdCBpdGVtIHNob3VsZCBiZSBpbmNsdWRlZCBpbiBkYXRhIHNvdXJjZSBhcnJheS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZmlsdGVyQXJyYXkoaXRlbTogVCwgZmlsdGVyOiBDb2xsZWN0aW9uU2VsZWN0RmlsdGVyKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGZpbHRlclZhbHVlcyA9IGZpbHRlci52YWx1ZS5tYXAoKHYpID0+IHRoaXMuZ2V0U2VsZWN0SXRlbVZhbHVlKHYpKTtcbiAgICAgICAgY29uc3QgaXRlbVZhbHVlID0gZ2V0KGl0ZW0sIGZpbHRlci5maWVsZCk7XG4gICAgICAgIGxldCByZXN1bHQ6IGJvb2xlYW47XG5cbiAgICAgICAgc3dpdGNoIChmaWx0ZXIuc3RyYXRlZ3kpIHtcbiAgICAgICAgICAgIGNhc2UgJ2VxdWFsVG8nOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBmaWx0ZXJWYWx1ZXMuaW5jbHVkZXMoaXRlbVZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAhZmlsdGVyVmFsdWVzLmxlbmd0aCB8fCBmaWx0ZXIuZXhjbHVkZSA/ICFyZXN1bHQgOiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgdW5zdWJzY3JpYmUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZURhdGFQcm92aWRlcjxUPiBleHRlbmRzIEJhc2VUYWJsZURhdGFQcm92aWRlcjxUPiB7XG4gICAgLyoqXG4gICAgICogTWV0aG9kIGZvciByZXRyaWV2aW5nIHRoZSBkYXRhLlxuICAgICAqIEBwYXJhbSB0YWJsZVN0YXRlIEBzZWUgVGFibGVTdGF0ZSBTZXQgb2YgdGFibGUgcGFyYW1ldGVycy5cbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHdpdGggZGF0YS5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgZmV0Y2godGFibGVTdGF0ZT86IFRhYmxlU3RhdGUpOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ZldGNoIG1ldGhvZCBzaG91bGQgYmUgaW1wbGVtZW50ZWQgYnkgZGV2ZWxvcGVycyBmb3IgY3VzdG9tIGRhdGEgcHJvdmlkZXJzLicpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCBmb3IgYXBwbHlpbmcgZmlsdGVyaW5nIGFuZCByZXRyaWV2aW5nIHRoZSBkYXRhLlxuICAgICAqIEBwYXJhbSBzdGF0ZSBAc2VlIFRhYmxlU3RhdGUgU2V0IG9mIHRhYmxlIHBhcmFtZXRlcnMuXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZSB3aXRoIGZpbHRlcmVkIGRhdGEuXG4gICAgICovXG4gICAgZmV0Y2hEYXRhKHN0YXRlOiBUYWJsZVN0YXRlKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2goc3RhdGUpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGl0ZW1zKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbXMgPSB0aGlzLnNlYXJjaChpdGVtcywgeyAuLi5zdGF0ZSwgLi4ueyBzZWFyY2hJbnB1dDogdGhpcy5zZWFyY2hJbnB1dCB9IH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlckJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zID0gdGhpcy5hcHBseUZpbHRlcmluZyhpdGVtcywgdGhpcy5maWx0ZXJCeSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIGZvciBnZXR0aW5nIGFsbCBwb3NzaWJsZSBvcHRpb25zIGZvciBwYXJ0aWN1bGFyIGZpZWxkLlxuICAgICAqIFVzZWQgZm9yIGNyZWF0aW5nIHNlbGVjdCBvcHRpb25zLlxuICAgICAqIERldmVsb3BlcnMgY2FuIG92ZXJyaWRlIHRoaXMgbWV0aG9kIHRvIGV4dGVuZCB0aGUgZmlsdGVyaW5nIGZ1bmN0aW9uYWxpdHkuXG4gICAgICogQHBhcmFtIGZpZWxkIGtleSBvZiB0aGUgZGF0YSBpdGVtLlxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGUgd2l0aCBzZWxlY3QgaXRlbXMuXG4gICAgICovXG4gICAgZ2V0RmllbGRPcHRpb25zKGZpZWxkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNlbGVjdEl0ZW1bXT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mZXRjaCgpLnBpcGUoXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgbWFwKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uczogU2VsZWN0SXRlbVtdID0gZGF0YS5tYXAoKGl0ZW0pID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBnZXQoaXRlbSwgZmllbGQpLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZ2V0KGl0ZW0sIGZpZWxkKVxuICAgICAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUYWJsZUNoaWxkcmVuRGF0YVByb3ZpZGVyPFQ+IGV4dGVuZHMgQmFzZVRhYmxlRGF0YVByb3ZpZGVyPFQsIE1hcDxUYWJsZVJvdzxUPiwgVFtdPj4ge1xuICAgIC8qKlxuICAgICAqIE1ldGhvZCBmb3IgcmV0cmlldmluZyB0aGUgYW1vdW50IG9mIGNoaWxkIGl0ZW1mIG9yIGEgZGVmaW5lZCByb3cuXG4gICAgICogQHBhcmFtIHJvd1xuICAgICAqIEBwYXJhbSBzdGF0ZVxuICAgICAqL1xuICAgIGFic3RyYWN0IHJvd0NoaWxkcmVuQ291bnQocm93OiBUYWJsZVJvdzxUPiwgc3RhdGU6IFRhYmxlU3RhdGUpOiBPYnNlcnZhYmxlPG51bWJlcj47XG4gICAgLyoqXG4gICAgICogTWV0aG9kIGZvciByZXRyaWV2aW5nIHRoZSBkYXRhLlxuICAgICAqIEBwYXJhbSB0YWJsZVN0YXRlIEBzZWUgVGFibGVTdGF0ZSBTZXQgb2YgdGFibGUgcGFyYW1ldGVycy5cbiAgICAgKiBAcGFyYW0gcGFyZW50Um93c1xuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGUgd2l0aCBkYXRhLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICBmZXRjaCh0YWJsZVN0YXRlPzogVGFibGVTdGF0ZSwgcGFyZW50Um93cz86IFRhYmxlUm93PFQ+W10pOiBPYnNlcnZhYmxlPE1hcDxUYWJsZVJvdzxUPiwgVFtdPj4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ZldGNoIG1ldGhvZCBzaG91bGQgYmUgaW1wbGVtZW50ZWQgYnkgZGV2ZWxvcGVycyBmb3IgY3VzdG9tIGRhdGEgcHJvdmlkZXJzLicpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCBmb3IgYXBwbHlpbmcgZmlsdGVyaW5nIGFuZCByZXRyaWV2aW5nIHRoZSBkYXRhLlxuICAgICAqIEBwYXJhbSBzdGF0ZSBAc2VlIFRhYmxlU3RhdGUgU2V0IG9mIHRhYmxlIHBhcmFtZXRlcnMuXG4gICAgICogQHBhcmFtIHRhYmxlUm93c1xuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGUgd2l0aCBmaWx0ZXJlZCBkYXRhLlxuICAgICAqL1xuICAgIGZldGNoRGF0YShzdGF0ZTogVGFibGVTdGF0ZSwgdGFibGVSb3dzPzogVGFibGVSb3c8VD5bXSk6IE9ic2VydmFibGU8TWFwPFRhYmxlUm93PFQ+LCBUW10+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZldGNoKHN0YXRlLCB0YWJsZVJvd3MpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGl0ZW1zKSA9PiB7XG4gICAgICAgICAgICAgICAgaXRlbXMuZm9yRWFjaCgocm93SXRlbXMsIHJvdykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hJbnB1dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcm93SXRlbXMgPSB0aGlzLnNlYXJjaChyb3dJdGVtcywgeyAuLi5zdGF0ZSwgLi4ueyBzZWFyY2hJbnB1dDogdGhpcy5zZWFyY2hJbnB1dCB9IH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsdGVyQnkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd0l0ZW1zID0gdGhpcy5hcHBseUZpbHRlcmluZyhyb3dJdGVtcywgdGhpcy5maWx0ZXJCeSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAocm93SXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy5kZWxldGUocm93KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLnNldChyb3csIHJvd0l0ZW1zKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtcztcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==","import { BehaviorSubject, Subject } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\nexport class BaseTableDataSource {\n /** @hidden */\n constructor() {\n /** @hidden */\n this._dataChanges$ = new BehaviorSubject([]);\n /** @hidden */\n this._onDataRequested$ = new Subject();\n /** @hidden */\n this._onDataReceived$ = new Subject();\n /** @hidden */\n this._destroy$ = new Subject();\n this._dataLoading$ = new BehaviorSubject(this._dataLoading);\n }\n /**\n * Emitted when new data has been requested.\n * @returns Observable\n */\n get dataRequested() {\n return this._onDataRequested$.asObservable();\n }\n /**\n * Emitted when new data has been received.\n * @returns Observable\n */\n get dataReceived() {\n return this._onDataReceived$.asObservable();\n }\n /**\n * Emitted when loading state has been changed.\n * @returns Observable.\n */\n get dataLoading() {\n return this._dataLoading$.asObservable();\n }\n /**\n * Emits when the data from the provider has been changed.\n * @returns Observable of data source objects.\n */\n get dataChanges() {\n return this._dataChanges$.asObservable().pipe(takeUntil(this._destroy$));\n }\n /** @hidden */\n get isDataLoading() {\n return this._dataLoading;\n }\n /** @hidden */\n get data() {\n return this._dataChanges$.value;\n }\n /** @hidden */\n open() {\n return this._dataChanges$.asObservable();\n }\n /** @hidden */\n onDataRequested() {\n return this._onDataRequested$.asObservable().pipe(map(() => void 0));\n }\n /** @hidden */\n onDataReceived() {\n return this._onDataReceived$.asObservable().pipe(map(() => void 0));\n }\n /** @hidden */\n close() { }\n /**\n * Closes the stream\n */\n unsubscribe() {\n this._destroy$.next();\n this._destroy$.complete();\n }\n}\nexport class TableDataSource extends BaseTableDataSource {\n /**\n * @hidden\n */\n constructor(dataProvider) {\n super();\n this.dataProvider = dataProvider;\n }\n /**\n * Method for retrieving the data of the provided data source.\n * @param tableState @see TableState Set of table parameters.\n */\n fetch(tableState) {\n this._onDataRequested$.next(true);\n this._dataLoading$.next(true);\n this._dataLoading = true;\n this.dataProvider.fetchData(tableState).subscribe({\n next: (items) => {\n this._onDataReceived$.next(true);\n this._dataLoading = false;\n this._dataLoading$.next(false);\n this._dataChanges$.next(items);\n },\n error: (error) => {\n this._onDataReceived$.next(false);\n this._dataLoading = false;\n this._dataChanges$.error(error);\n }\n });\n }\n}\nexport class ChildTableDataSource extends BaseTableDataSource {\n /**\n * @hidden\n */\n constructor(dataProvider) {\n super();\n this.dataProvider = dataProvider;\n }\n /**\n * Method responsible for retrieving the items from the data provider.\n * Additionaly, it sets the loading state along with the dataLoading and dataChanges streams.\n * @param tableState\n * @param parentRows\n */\n fetch(tableState, parentRows) {\n this._onDataRequested$.next(true);\n const loadingState = parentRows?.map((row) => ({ row, loading: true })) || [];\n const finishedLoadingState = loadingState.map(({ row }) => ({ row, loading: false }));\n this._dataLoading$.next(loadingState);\n this._dataLoading = loadingState;\n this.dataProvider.fetchData(tableState, parentRows).subscribe({\n next: (items) => {\n this._onDataReceived$.next(true);\n this._dataLoading = finishedLoadingState;\n this._dataLoading$.next(finishedLoadingState);\n this._dataChanges$.next(items);\n },\n error: (error) => {\n this._onDataReceived$.next(false);\n this._dataLoading = finishedLoadingState;\n this._dataLoading$.next(finishedLoadingState);\n this._dataChanges$.error(error);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS1zb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvZG9tYWluL3RhYmxlLWRhdGEtc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzVELE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFNaEQsTUFBTSxPQUFnQixtQkFBbUI7SUF3QnJDLGNBQWM7SUFDZDtRQWxCQSxjQUFjO1FBQ0ssa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBSSxFQUFTLENBQUMsQ0FBQztRQUNyRSxjQUFjO1FBQ0ssc0JBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUU5RCxjQUFjO1FBQ0sscUJBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQVE3RCxjQUFjO1FBQ0ssY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFJL0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLFlBQVk7UUFDWixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMs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Y2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBUYWJsZVN0YXRlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90YWJsZS1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGFibGVSb3cgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgVGFibGVDaGlsZHJlbkRhdGFQcm92aWRlciwgVGFibGVEYXRhUHJvdmlkZXIgfSBmcm9tICcuL3RhYmxlLWRhdGEtcHJvdmlkZXInO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVRhYmxlRGF0YVNvdXJjZTxULCBQID0gVFtdLCBMID0gYm9vbGVhbj4gaW1wbGVtZW50cyBEYXRhU291cmNlPFQsIFAsIEw+IHtcbiAgICAvKipcbiAgICAgKiBNZXRob2QgZm9yIHJldHJpZXZpbmcgdGhlIGRhdGEgb2YgdGhlIHByb3ZpZGVkIGRhdGEgc291cmNlLlxuICAgICAqIEBwYXJhbSB0YWJsZVN0YXRlIEBzZWUgVGFibGVTdGF0ZSBTZXQgb2YgdGFibGUgcGFyYW1ldGVycy5cbiAgICAgKiBAcGFyYW0gcGFyZW50Um93c1xuICAgICAqL1xuICAgIGFic3RyYWN0IGZldGNoKHRhYmxlU3RhdGU6IFRhYmxlU3RhdGUsIHBhcmVudFJvd3M/OiBUYWJsZVJvdzxUPltdKTogdm9pZDtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfZGF0YUNoYW5nZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQPihbXSBhcyBhbnkpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9vbkRhdGFSZXF1ZXN0ZWQkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9vbkRhdGFSZWNlaXZlZCQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2RhdGFMb2FkaW5nOiBMO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2RhdGFMb2FkaW5nJDogQmVoYXZpb3JTdWJqZWN0PEw+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLl9kYXRhTG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMuX2RhdGFMb2FkaW5nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gbmV3IGRhdGEgaGFzIGJlZW4gcmVxdWVzdGVkLlxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGVcbiAgICAgKi9cbiAgICBnZXQgZGF0YVJlcXVlc3RlZCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29uRGF0YVJlcXVlc3RlZCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIG5ldyBkYXRhIGhhcyBiZWVuIHJlY2VpdmVkLlxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGVcbiAgICAgKi9cbiAgICBnZXQgZGF0YVJlY2VpdmVkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fb25EYXRhUmVjZWl2ZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgd2hlbiBsb2FkaW5nIHN0YXRlIGhhcyBiZWVuIGNoYW5nZWQuXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZS5cbiAgICAgKi9cbiAgICBnZXQgZGF0YUxvYWRpbmcoKTogT2JzZXJ2YWJsZTxMPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhTG9hZGluZyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW1pdHMgd2hlbiB0aGUgZGF0YSBmcm9tIHRoZSBwcm92aWRlciBoYXMgYmVlbiBjaGFuZ2VkLlxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGUgb2YgZGF0YSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKi9cbiAgICBnZXQgZGF0YUNoYW5nZXMoKTogT2JzZXJ2YWJsZTxQPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhQ2hhbmdlcyQuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBpc0RhdGFMb2FkaW5nKCk6IEwge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YUxvYWRpbmc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgZGF0YSgpOiBQIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFDaGFuZ2VzJC52YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9wZW4oKTogT2JzZXJ2YWJsZTxQPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhQ2hhbmdlcyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvbkRhdGFSZXF1ZXN0ZWQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vbkRhdGFSZXF1ZXN0ZWQkLmFzT2JzZXJ2YWJsZSgpLnBpcGUobWFwKCgpID0+IHZvaWQgMCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25EYXRhUmVjZWl2ZWQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vbkRhdGFSZWNlaXZlZCQuYXNPYnNlcnZhYmxlKCkucGlwZShtYXAoKCkgPT4gdm9pZCAwKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjbG9zZSgpOiB2b2lkIHt9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZXMgdGhlIHN0cmVhbVxuICAgICAqL1xuICAgIHVuc3Vic2NyaWJlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGFibGVEYXRhU291cmNlPFQ+IGV4dGVuZHMgQmFzZVRhYmxlRGF0YVNvdXJjZTxUPiB7XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGRhdGFQcm92aWRlcjogVGFibGVEYXRhUHJvdmlkZXI8VD4pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgZm9yIHJldHJpZXZpbmcgdGhlIGRhdGEgb2YgdGhlIHByb3ZpZGVkIGRhdGEgc291cmNlLlxuICAgICAqIEBwYXJhbSB0YWJsZVN0YXRlIEBzZWUgVGFibGVTdGF0ZSBTZXQgb2YgdGFibGUgcGFyYW1ldGVycy5cbiAgICAgKi9cbiAgICBmZXRjaCh0YWJsZVN0YXRlOiBUYWJsZVN0YXRlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uRGF0YVJlcXVlc3RlZCQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5fZGF0YUxvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuX2RhdGFMb2FkaW5nID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLmRhdGFQcm92aWRlci5mZXRjaERhdGEodGFibGVTdGF0ZSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IChpdGVtcykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX29uRGF0YVJlY2VpdmVkJC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0YUxvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFDaGFuZ2VzJC5uZXh0KGl0ZW1zKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb25EYXRhUmVjZWl2ZWQkLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0YUNoYW5nZXMkLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2hpbGRUYWJsZURhdGFTb3VyY2U8VD4gZXh0ZW5kcyBCYXNlVGFibGVEYXRhU291cmNlPFxuICAgIFQsXG4gICAgTWFwPFRhYmxlUm93PFQ+LCBUW10+LFxuICAgIHsgcm93PzogVGFibGVSb3c8VD47IGxvYWRpbmc6IGJvb2xlYW4gfVtdXG4+IHtcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgZGF0YVByb3ZpZGVyOiBUYWJsZUNoaWxkcmVuRGF0YVByb3ZpZGVyPFQ+KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHJlc3BvbnNpYmxlIGZvciByZXRyaWV2aW5nIHRoZSBpdGVtcyBmcm9tIHRoZSBkYXRhIHByb3ZpZGVyLlxuICAgICAqIEFkZGl0aW9uYWx5LCBpdCBzZXRzIHRoZSBsb2FkaW5nIHN0YXRlIGFsb25nIHdpdGggdGhlIGRhdGFMb2FkaW5nIGFuZCBkYXRhQ2hhbmdlcyBzdHJlYW1zLlxuICAgICAqIEBwYXJhbSB0YWJsZVN0YXRlXG4gICAgICogQHBhcmFtIHBhcmVudFJvd3NcbiAgICAgKi9cbiAgICBmZXRjaCh0YWJsZVN0YXRlOiBUYWJsZVN0YXRlLCBwYXJlbnRSb3dzPzogVGFibGVSb3c8VD5bXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkRhdGFSZXF1ZXN0ZWQkLm5leHQodHJ1ZSk7XG4gICAgICAgIGNvbnN0IGxvYWRpbmdTdGF0ZSA9IHBhcmVudFJvd3M/Lm1hcCgocm93KSA9PiAoeyByb3csIGxvYWRpbmc6IHRydWUgfSkpIHx8IFtdO1xuICAgICAgICBjb25zdCBmaW5pc2hlZExvYWRpbmdTdGF0ZSA9IGxvYWRpbmdTdGF0ZS5tYXAoKHsgcm93IH0pID0+ICh7IHJvdywgbG9hZGluZzogZmFsc2UgfSkpO1xuICAgICAgICB0aGlzLl9kYXRhTG9hZGluZyQubmV4dChsb2FkaW5nU3RhdGUpO1xuICAgICAgICB0aGlzLl9kYXRhTG9hZGluZyA9IGxvYWRpbmdTdGF0ZTtcblxuICAgICAgICB0aGlzLmRhdGFQcm92aWRlci5mZXRjaERhdGEodGFibGVTdGF0ZSwgcGFyZW50Um93cykuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IChpdGVtcykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX29uRGF0YVJlY2VpdmVkJC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFMb2FkaW5nID0gZmluaXNoZWRMb2FkaW5nU3RhdGU7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0YUxvYWRpbmckLm5leHQoZmluaXNoZWRMb2FkaW5nU3RhdGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFDaGFuZ2VzJC5uZXh0KGl0ZW1zKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb25EYXRhUmVjZWl2ZWQkLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFMb2FkaW5nID0gZmluaXNoZWRMb2FkaW5nU3RhdGU7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0YUxvYWRpbmckLm5leHQoZmluaXNoZWRMb2FkaW5nU3RhdGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFDaGFuZ2VzJC5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==","import { BehaviorSubject } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { TableDataProvider } from './table-data-provider';\nimport { TableDataSource } from './table-data-source';\n/**\n * Table Data Provider based on an array.\n *\n * Used to convert array source to the TableDataProvider interface.\n *\n */\nexport class ArrayTableDataProvider extends TableDataProvider {\n /** @hidden */\n constructor(items, dateTimeAdapter) {\n super();\n /** @hidden */\n this.items$ = new BehaviorSubject([]);\n this.items = items;\n this.totalItems = this.items.length;\n this.items$.next(this.items);\n this.dateTimeAdapter = dateTimeAdapter;\n }\n /**\n * Method for retrieving the data.\n * @param tableState @see TableState Set of table parameters.\n * @returns Observable with data.\n */\n fetch(state) {\n return this.items$.asObservable().pipe(map((items) => {\n if (state?.searchInput) {\n items = this.search(items, state);\n }\n if (state?.filterBy) {\n items = this.applyFiltering(items, state.filterBy);\n }\n this.totalItems = items.length;\n return items;\n }));\n }\n}\nexport class ArrayTableDataSource extends TableDataSource {\n /** @hidden */\n constructor(data, dateTimeAdapter) {\n super(new ArrayTableDataProvider(data, dateTimeAdapter));\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktZGF0YS1zb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvZG9tYWluL2FycmF5LWRhdGEtc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFHbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RDs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxzQkFBMEIsU0FBUSxpQkFBb0I7SUFJL0QsY0FBYztJQUNkLFlBQVksS0FBVSxFQUFFLGVBQXNDO1FBQzFELEtBQUssRUFBRSxDQUFDO1FBTFosY0FBYztRQUNKLFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBTSxFQUFFLENBQUMsQ0FBQztRQUs1QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxLQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUNsQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNWLElBQUksS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDO2dCQUNyQixLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdEMsQ0FBQztZQUVELElBQUksS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDO2dCQUNsQixLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZELENBQUM7WUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFFL0IsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxvQkFBd0IsU0FBUSxlQUFrQjtJQUMzRCxjQUFjO0lBQ2QsWUFBWSxJQUFTLEVBQUUsZUFBc0M7UUFDekQsS0FBSyxDQUFDLElBQUksc0JBQXNCLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IERhdGV0aW1lQWRhcHRlciB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kYXRldGltZSc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUYWJsZVN0YXRlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90YWJsZS1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGFibGVEYXRhUHJvdmlkZXIgfSBmcm9tICcuL3RhYmxlLWRhdGEtcHJvdmlkZXInO1xuaW1wb3J0IHsgVGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi90YWJsZS1kYXRhLXNvdXJjZSc7XG5cbi8qKlxuICogVGFibGUgRGF0YSBQcm92aWRlciBiYXNlZCBvbiBhbiBhcnJheS5cbiAqXG4gKiBVc2VkIHRvIGNvbnZlcnQgYXJyYXkgc291cmNlIHRvIHRoZSBUYWJsZURhdGFQcm92aWRlciBpbnRlcmZhY2UuXG4gKlxuICovXG5leHBvcnQgY2xhc3MgQXJyYXlUYWJsZURhdGFQcm92aWRlcjxUPiBleHRlbmRzIFRhYmxlRGF0YVByb3ZpZGVyPFQ+IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBpdGVtcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRbXT4oW10pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihpdGVtczogVFtdLCBkYXRlVGltZUFkYXB0ZXI/OiBEYXRldGltZUFkYXB0ZXI8YW55Pikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLml0ZW1zID0gaXRlbXM7XG4gICAgICAgIHRoaXMudG90YWxJdGVtcyA9IHRoaXMuaXRlbXMubGVuZ3RoO1xuICAgICAgICB0aGlzLml0ZW1zJC5uZXh0KHRoaXMuaXRlbXMpO1xuICAgICAgICB0aGlzLmRhdGVUaW1lQWRhcHRlciA9IGRhdGVUaW1lQWRhcHRlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgZm9yIHJldHJpZXZpbmcgdGhlIGRhdGEuXG4gICAgICogQHBhcmFtIHRhYmxlU3RhdGUgQHNlZSBUYWJsZVN0YXRlIFNldCBvZiB0YWJsZSBwYXJhbWV0ZXJzLlxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGUgd2l0aCBkYXRhLlxuICAgICAqL1xuICAgIGZldGNoKHN0YXRlPzogVGFibGVTdGF0ZSk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1zJC5hc09ic2VydmFibGUoKS5waXBlKFxuICAgICAgICAgICAgbWFwKChpdGVtcykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdGF0ZT8uc2VhcmNoSW5wdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbXMgPSB0aGlzLnNlYXJjaChpdGVtcywgc3RhdGUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChzdGF0ZT8uZmlsdGVyQnkpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbXMgPSB0aGlzLmFwcGx5RmlsdGVyaW5nKGl0ZW1zLCBzdGF0ZS5maWx0ZXJCeSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gaXRlbXMubGVuZ3RoO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcnJheVRhYmxlRGF0YVNvdXJjZTxUPiBleHRlbmRzIFRhYmxlRGF0YVNvdXJjZTxUPiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBUW10sIGRhdGVUaW1lQWRhcHRlcj86IERhdGV0aW1lQWRhcHRlcjxhbnk+KSB7XG4gICAgICAgIHN1cGVyKG5ldyBBcnJheVRhYmxlRGF0YVByb3ZpZGVyKGRhdGEsIGRhdGVUaW1lQWRhcHRlcikpO1xuICAgIH1cbn1cbiJdfQ==","import { map } from 'rxjs/operators';\nimport { TableDataProvider } from './table-data-provider';\nimport { TableDataSource } from './table-data-source';\n/**\n * Table Data Provider based on an Observable.\n *\n * Used to convert observable source to the TableDataProvider interface.\n *\n */\nexport class ObservableTableDataProvider extends TableDataProvider {\n /** @hidden */\n constructor(items$, dateTimeAdapter) {\n super();\n this.items$ = items$;\n this.dateTimeAdapter = dateTimeAdapter;\n }\n /**\n * Method for retrieving the data.\n * @param tableState @see TableState Set of table parameters.\n * @returns Observable with data.\n */\n fetch(state) {\n return this.items$.pipe(map((items) => {\n this.items = items;\n if (state?.searchInput) {\n items = this.search(items, state);\n }\n if (state?.filterBy) {\n items = this.applyFiltering(items, state.filterBy);\n }\n this.totalItems = items.length;\n return items;\n }));\n }\n}\nexport class ObservableTableDataSource extends TableDataSource {\n /** @hidden */\n constructor(data, dateTimeAdapter) {\n super(new ObservableTableDataProvider(data, dateTimeAdapter));\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJsZS1kYXRhLXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9kb21haW4vb2JzZXJ2YWJsZS1kYXRhLXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXREOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLDJCQUErQixTQUFRLGlCQUFvQjtJQUlwRSxjQUFjO0lBQ2QsWUFBWSxNQUF1QixFQUFFLGVBQXNDO1FBQ3ZFLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsS0FBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDbkIsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDVixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQixJQUFJLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQztnQkFDckIsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3RDLENBQUM7WUFFRCxJQUFJLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQztnQkFDbEIsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN2RCxDQUFDO1lBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBRS9CLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8seUJBQTZCLFNBQVEsZUFBa0I7SUFDaEUsY0FBYztJQUNkLFlBQVksSUFBcUIsRUFBRSxlQUFzQztRQUNyRSxLQUFLLENBQUMsSUFBSSwyQkFBMkIsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IERhdGV0aW1lQWRhcHRlciB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kYXRldGltZSc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUYWJsZVN0YXRlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90YWJsZS1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGFibGVEYXRhUHJvdmlkZXIgfSBmcm9tICcuL3RhYmxlLWRhdGEtcHJvdmlkZXInO1xuaW1wb3J0IHsgVGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi90YWJsZS1kYXRhLXNvdXJjZSc7XG5cbi8qKlxuICogVGFibGUgRGF0YSBQcm92aWRlciBiYXNlZCBvbiBhbiBPYnNlcnZhYmxlLlxuICpcbiAqIFVzZWQgdG8gY29udmVydCBvYnNlcnZhYmxlIHNvdXJjZSB0byB0aGUgVGFibGVEYXRhUHJvdmlkZXIgaW50ZXJmYWNlLlxuICpcbiAqL1xuZXhwb3J0IGNsYXNzIE9ic2VydmFibGVUYWJsZURhdGFQcm92aWRlcjxUPiBleHRlbmRzIFRhYmxlRGF0YVByb3ZpZGVyPFQ+IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBpdGVtcyQ6IE9ic2VydmFibGU8VFtdPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoaXRlbXMkOiBPYnNlcnZhYmxlPFRbXT4sIGRhdGVUaW1lQWRhcHRlcj86IERhdGV0aW1lQWRhcHRlcjxhbnk+KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuaXRlbXMkID0gaXRlbXMkO1xuICAgICAgICB0aGlzLmRhdGVUaW1lQWRhcHRlciA9IGRhdGVUaW1lQWRhcHRlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgZm9yIHJldHJpZXZpbmcgdGhlIGRhdGEuXG4gICAgICogQHBhcmFtIHRhYmxlU3RhdGUgQHNlZSBUYWJsZVN0YXRlIFNldCBvZiB0YWJsZSBwYXJhbWV0ZXJzLlxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGUgd2l0aCBkYXRhLlxuICAgICAqL1xuICAgIGZldGNoKHN0YXRlPzogVGFibGVTdGF0ZSk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1zJC5waXBlKFxuICAgICAgICAgICAgbWFwKChpdGVtcykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMgPSBpdGVtcztcbiAgICAgICAgICAgICAgICBpZiAoc3RhdGU/LnNlYXJjaElucHV0KSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zID0gdGhpcy5zZWFyY2goaXRlbXMsIHN0YXRlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoc3RhdGU/LmZpbHRlckJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zID0gdGhpcy5hcHBseUZpbHRlcmluZyhpdGVtcywgc3RhdGUuZmlsdGVyQnkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudG90YWxJdGVtcyA9IGl0ZW1zLmxlbmd0aDtcblxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtcztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgT2JzZXJ2YWJsZVRhYmxlRGF0YVNvdXJjZTxUPiBleHRlbmRzIFRhYmxlRGF0YVNvdXJjZTxUPiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBPYnNlcnZhYmxlPFRbXT4sIGRhdGVUaW1lQWRhcHRlcj86IERhdGV0aW1lQWRhcHRlcjxhbnk+KSB7XG4gICAgICAgIHN1cGVyKG5ldyBPYnNlcnZhYmxlVGFibGVEYXRhUHJvdmlkZXIoZGF0YSwgZGF0ZVRpbWVBZGFwdGVyKSk7XG4gICAgfVxufVxuIl19","import { isDataSource } from '@fundamental-ngx/cdk/data-source';\nimport { isObservable } from 'rxjs';\nimport { ArrayTableDataSource } from './array-data-source';\nimport { ObservableTableDataSource } from './observable-data-source';\nexport class TableDataSourceParser {\n /** @hidden */\n parse(source) {\n if (isDataSource(source)) {\n return source;\n }\n if (Array.isArray(source)) {\n return new ArrayTableDataSource(source);\n }\n if (isObservable(source)) {\n return new ObservableTableDataSource(source);\n }\n return undefined;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zb3VyY2UtcGFyc2VyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzL2RvbWFpbi9kYXRhLXNvdXJjZS1wYXJzZXIuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQyxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3JFLE1BQU0sT0FBTyxxQkFBcUI7SUFDOUIsY0FBYztJQUNkLEtBQUssQ0FBQyxNQUFxQjtRQUN2QixJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sTUFBNEIsQ0FBQztRQUN4QyxDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDeEIsT0FBTyxJQUFJLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFFRCxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sSUFBSSx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YVNvdXJjZSwgRGF0YVNvdXJjZVBhcnNlciwgaXNEYXRhU291cmNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvZGF0YS1zb3VyY2UnO1xuaW1wb3J0IHsgaXNPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBcnJheVRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJy4vYXJyYXktZGF0YS1zb3VyY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZVRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJy4vb2JzZXJ2YWJsZS1kYXRhLXNvdXJjZSc7XG5pbXBvcnQgeyBUYWJsZURhdGFTb3VyY2UgfSBmcm9tICcuL3RhYmxlLWRhdGEtc291cmNlJztcblxuZXhwb3J0IGNsYXNzIFRhYmxlRGF0YVNvdXJjZVBhcnNlcjxUPiBpbXBsZW1lbnRzIERhdGFTb3VyY2VQYXJzZXI8VCwgVGFibGVEYXRhU291cmNlPFQ+PiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwYXJzZShzb3VyY2U6IERhdGFTb3VyY2U8VD4pOiBUYWJsZURhdGFTb3VyY2U8VD4gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoaXNEYXRhU291cmNlKHNvdXJjZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBzb3VyY2UgYXMgVGFibGVEYXRhU291cmNlPFQ+O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc291cmNlKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBBcnJheVRhYmxlRGF0YVNvdXJjZShzb3VyY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzT2JzZXJ2YWJsZShzb3VyY2UpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGVUYWJsZURhdGFTb3VyY2Uoc291cmNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxufVxuIl19","import { Directive, EventEmitter, inject, Input, Output, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DataSourceDirective, FD_DATA_SOURCE_TRANSFORMER, isDataSource } from '@fundamental-ngx/cdk/data-source';\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\nimport { filter, startWith } from 'rxjs/operators';\nimport { FDP_TABLE_STATE_DIRECTIVE } from '../constants';\nimport { TableDataSourceParser } from '../domain';\nimport { TableService } from '../services/table.service';\nimport * as i0 from \"@angular/core\";\nexport class TableDataSourceDirective extends DataSourceDirective {\n constructor() {\n super(...arguments);\n /** Event emitted when child data source instance being changed. */\n this.childDataSourceChanged = new EventEmitter();\n /** Event emitted when data loading is started. */\n this.onDataRequested = new EventEmitter();\n /** Event emitted when data loading is finished. */\n this.onDataReceived = new EventEmitter();\n /** Total items count stream. */\n this.totalItems$ = signal(0, ...(ngDevMode ? [{ debugName: \"totalItems$\" }] : []));\n /** Items stream. */\n this.items$ = new BehaviorSubject([]);\n /** Child items stream. */\n this.childItems$ = new Subject();\n /** @hidden */\n this._firstLoadingDone = false;\n /** @hidden */\n this._internalLoadingState = false;\n /** @hidden */\n this._internalChildrenLoadingState = false;\n /** @hidden */\n this._childDsSubscription = new Subscription();\n /** @hidden */\n this.initialState = inject(FDP_TABLE_STATE_DIRECTIVE, {\n optional: true\n });\n /** @hidden */\n this._tableService = inject(TableService);\n }\n /**\n * Data source.\n * @param source\n */\n set childDataSource(source) {\n this._childDataSource = source;\n this._initializeChildDataSource();\n this.childDataSourceChanged.next();\n }\n get childDataSource() {\n return this._childDataSource;\n }\n /** @hidden */\n set totalItems(value) {\n this.totalItems$.set(value);\n }\n get totalItems() {\n return this.totalItems$();\n }\n /** @hidden */\n initializeDataSource() {\n this.dataSourceChanged.pipe(startWith(true), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._closeDataSource();\n this._listenToDataSource();\n });\n }\n /** @hidden */\n ngOnDestroy() {\n super.ngOnDestroy();\n this._tableDsSubscription?.unsubscribe();\n }\n /** @hidden */\n setTable(table) {\n this._table = table;\n }\n /**\n * @hidden\n * Initializes the child data source to fetch child rows.\n */\n _initializeChildDataSource() {\n if (isDataSource(this.childDataSource)) {\n this.childDataSource?.unsubscribe();\n this._childDsSubscription?.unsubscribe();\n }\n if (!this.childDataSource) {\n return;\n }\n this._childDsSubscription = new Subscription();\n this._childDsSubscription.add(this.childDataSource.onDataRequested().subscribe(() => {\n this._internalChildrenLoadingState = true;\n this._tableService.setTableLoading(this._table.loadingState);\n }));\n this._childDsSubscription.add(this.childDataSource.onDataReceived().subscribe(() => {\n this._internalChildrenLoadingState = false;\n this._tableService.setTableLoading(this._table.loadingState);\n }));\n this._childDsSubscription.add(this.childDataSource.dataLoading\n .pipe(filter((state) => !!state), takeUntilDestroyed(this._destroyRef))\n .subscribe((loadingStates) => {\n loadingStates.forEach((state) => state.row?.childItemsLoading$.next(state.loading));\n }));\n this._childDsSubscription.add(this.childDataSource.dataChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((data) => {\n this.childItems$.next(data);\n }));\n }\n /**\n * @hidden\n * This is a single point of data entry to the component. We don't want to set data on different\n * places. If any new data comes in, or you do a search, and you want to pass initial data\n * its here.\n */\n _listenToDataSource() {\n this._tableDsSubscription?.unsubscribe();\n this._tableDsSubscription = new Subscription();\n const dataSourceStream = this.dataSourceProvider;\n if (dataSourceStream === undefined) {\n throw new Error(`[TableDataSource] source did not match an Array, Observable, nor DataSource`);\n }\n this._tableDsSubscription.add(this.dataChanged$.subscribe((items) => {\n this.totalItems$.set(dataSourceStream.dataProvider.totalItems);\n this.items$.next(items);\n }));\n this._tableDsSubscription.add(dataSourceStream.onDataRequested().subscribe(() => {\n this.onDataRequested.emit();\n this._internalLoadingState = true;\n this._tableService.setTableLoading(this._table.loadingState);\n }));\n this._tableDsSubscription.add(dataSourceStream.onDataReceived().subscribe(() => {\n this.onDataReceived.emit();\n this._internalLoadingState = false;\n this._firstLoadingDone = true;\n this._tableService.setTableLoading(this._table.loadingState);\n // Restore normal pagination after the first fetch of data.\n if (this._table._loadPreviousPages) {\n const state = this._tableService.getTableState();\n this._tableService.setTableState({\n ...state,\n ...{\n page: {\n currentPage: this.initialState?.initialPage || state.page.currentPage,\n pageSize: this._table.pageSize || state.page.pageSize\n }\n }\n });\n this._table._loadPreviousPages = false;\n }\n }));\n // initial data fetch\n dataSourceStream.fetch(this._tableService.getTableState());\n this._tableDataSource = dataSourceStream;\n }\n /** @hidden */\n _closeDataSource() {\n if (!this._tableDataSource) {\n return;\n }\n this._tableDataSource.close();\n this._tableDsSubscription?.unsubscribe();\n this._tableDsSubscription = null;\n this._table.clearTableRows();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableDataSourceDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: TableDataSourceDirective, isStandalone: true, selector: \"[fdpTableDataSource]\", inputs: { childDataSource: \"childDataSource\" }, outputs: { childDataSourceChanged: \"childDataSourceChanged\", onDataRequested: \"onDataRequested\", onDataReceived: \"onDataReceived\" }, providers: [\n {\n provide: FD_DATA_SOURCE_TRANSFORMER,\n useClass: TableDataSourceParser\n }\n ], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableDataSourceDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdpTableDataSource]',\n standalone: true,\n providers: [\n {\n provide: FD_DATA_SOURCE_TRANSFORMER,\n useClass: TableDataSourceParser\n }\n ]\n }]\n }], propDecorators: { childDataSource: [{\n type: Input\n }], childDataSourceChanged: [{\n type: Output\n }], onDataRequested: [{\n type: Output\n }], onDataReceived: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS1zb3VyY2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzL2RpcmVjdGl2ZXMvdGFibGUtZGF0YS1zb3VyY2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsMEJBQTBCLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakgsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pELE9BQU8sRUFBeUMscUJBQXFCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFekYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQWF6RCxNQUFNLE9BQU8sd0JBQTRCLFNBQVEsbUJBQTBDO0lBVjNGOztRQTBCSSxtRUFBbUU7UUFFbkUsMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVsRCxrREFBa0Q7UUFFekMsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXBELG1EQUFtRDtRQUUxQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFbkQsZ0NBQWdDO1FBQ2hDLGdCQUFXLEdBQUcsTUFBTSxDQUFTLENBQUMsdURBQUMsQ0FBQztRQUVoQyxvQkFB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RSxxQkFBcUI7YUFDbEM7U0FDSjs7MkZBRVEsd0JBQXdCO2tCQVZwQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUU7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLDBCQUEwQjs0QkFDbkMsUUFBUSxFQUFFLHFCQUFxQjt5QkFDbEM7cUJBQ0o7aUJBQ0o7OEJBT08sZUFBZTtzQkFEbEIsS0FBSztnQkFhTixzQkFBc0I7c0JBRHJCLE1BQU07Z0JBS0UsZUFBZTtzQkFEdkIsTUFBTTtnQkFLRSxjQUFjO3NCQUR0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IERhdGFTb3VyY2VEaXJlY3RpdmUsIEZEX0RBVEFfU09VUkNFX1RSQU5TRk9STUVSLCBpc0RhdGFTb3VyY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9kYXRhLXNvdXJjZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGRFBfVEFCTEVfU1RBVEVfRElSRUNUSVZFIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IENoaWxkVGFibGVEYXRhU291cmNlLCBUYWJsZURhdGFTb3VyY2UsIFRhYmxlRGF0YVNvdXJjZVBhcnNlciB9IGZyb20gJy4uL2RvbWFpbic7XG5pbXBvcnQgeyBUYWJsZUluaXRpYWxTdGF0ZSwgVGFibGVSb3cgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdGFibGUuc2VydmljZSc7XG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJy4uL3RhYmxlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRwVGFibGVEYXRhU291cmNlXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRkRfREFUQV9TT1VSQ0VfVFJBTlNGT1JNRVIsXG4gICAgICAgICAgICB1c2VDbGFzczogVGFibGVEYXRhU291cmNlUGFyc2VyXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlRGF0YVNvdXJjZURpcmVjdGl2ZTxUPiBleHRlbmRzIERhdGFTb3VyY2VEaXJlY3RpdmU8VCwgVGFibGVEYXRhU291cmNlPFQ+PiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogRGF0YSBzb3VyY2UuXG4gICAgICogQHBhcmFtIHNvdXJjZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGNoaWxkRGF0YVNvdXJjZShzb3VyY2U6IENoaWxkVGFibGVEYXRhU291cmNlPFQ+IHwgbnVsbCkge1xuICAgICAgICB0aGlzLl9jaGlsZERhdGFTb3VyY2UgPSBzb3VyY2U7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVDaGlsZERhdGFTb3VyY2UoKTtcbiAgICAgICAgdGhpcy5jaGlsZERhdGFTb3VyY2VDaGFuZ2VkLm5leHQoKTtcbiAgICB9XG5cbiAgICBnZXQgY2hpbGREYXRhU291cmNlKCk6IENoaWxkVGFibGVEYXRhU291cmNlPFQ+IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jaGlsZERhdGFTb3VyY2U7XG4gICAgfVxuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBjaGlsZCBkYXRhIHNvdXJjZSBpbnN0YW5jZSBiZWluZyBjaGFuZ2VkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGNoaWxkRGF0YVNvdXJjZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGRhdGEgbG9hZGluZyBpcyBzdGFydGVkLiAqL1xuICAgIEBPdXRwdXQoKSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICByZWFkb25seSBvbkRhdGFSZXF1ZXN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGRhdGEgbG9hZGluZyBpcyBmaW5pc2hlZC4gKi9cbiAgICBAT3V0cHV0KCkgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgcmVhZG9ubHkgb25EYXRhUmVjZWl2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogVG90YWwgaXRlbXMgY291bnQgc3RyZWFtLiAqL1xuICAgIHRvdGFsSXRlbXMkID0gc2lnbmFsPG51bWJlcj4oMCk7XG5cbiAgICAvKiogSXRlbXMgc3RyZWFtLiAqL1xuICAgIGl0ZW1zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VFtdPihbXSk7XG5cbiAgICAvKiogQ2hpbGQgaXRlbXMgc3RyZWFtLiAqL1xuICAgIGNoaWxkSXRlbXMkID0gbmV3IFN1YmplY3Q8TWFwPFRhYmxlUm93PFQ+LCBUW10+PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdGFibGVEYXRhU291cmNlOiBUYWJsZURhdGFTb3VyY2U8VD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9maXJzdExvYWRpbmdEb25lID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pbnRlcm5hbExvYWRpbmdTdGF0ZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaW50ZXJuYWxDaGlsZHJlbkxvYWRpbmdTdGF0ZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jaGlsZERhdGFTb3VyY2U6IENoaWxkVGFibGVEYXRhU291cmNlPFQ+IHwgbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2hpbGREc1N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0IHRvdGFsSXRlbXModmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLnRvdGFsSXRlbXMkLnNldCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IHRvdGFsSXRlbXMoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG90YWxJdGVtcyQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBmb3IgZGF0YSBzb3VyY2UgaGFuZGxpbmcgKi9cbiAgICBwcml2YXRlIF90YWJsZURzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90YWJsZTogVGFibGU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5pdGlhbFN0YXRlID0gaW5qZWN0PFRhYmxlSW5pdGlhbFN0YXRlPihGRFBfVEFCTEVfU1RBVEVfRElSRUNUSVZFLCB7XG4gICAgICAgIG9wdGlvbmFsOiB0cnVlXG4gICAgfSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RhYmxlU2VydmljZSA9IGluamVjdChUYWJsZVNlcnZpY2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBpbml0aWFsaXplRGF0YVNvdXJjZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlQ2hhbmdlZC5waXBlKHN0YXJ0V2l0aCh0cnVlKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2xvc2VEYXRhU291cmNlKCk7XG4gICAgICAgICAgICB0aGlzLl9saXN0ZW5Ub0RhdGFTb3VyY2UoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5fdGFibGVEc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldFRhYmxlKHRhYmxlOiBUYWJsZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJsZSA9IHRhYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBJbml0aWFsaXplcyB0aGUgY2hpbGQgZGF0YSBzb3VyY2UgdG8gZmV0Y2ggY2hpbGQgcm93cy5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9pbml0aWFsaXplQ2hpbGREYXRhU291cmNlKCk6IHZvaWQge1xuICAgICAgICBpZiAoaXNEYXRhU291cmNlKHRoaXMuY2hpbGREYXRhU291cmNlKSkge1xuICAgICAgICAgICAgdGhpcy5jaGlsZERhdGFTb3VyY2U/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgICAgIHRoaXMuX2NoaWxkRHNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmNoaWxkRGF0YVNvdXJjZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2hpbGREc1N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgICAgICB0aGlzLl9jaGlsZERzU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgIHRoaXMuY2hpbGREYXRhU291cmNlLm9uRGF0YVJlcXVlc3RlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5faW50ZXJuYWxDaGlsZHJlbkxvYWRpbmdTdGF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFibGVTZXJ2aWNlLnNldFRhYmxlTG9hZGluZyh0aGlzLl90YWJsZS5sb2FkaW5nU3RhdGUpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9jaGlsZERzU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgIHRoaXMuY2hpbGREYXRhU291cmNlLm9uRGF0YVJlY2VpdmVkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcm5hbENoaWxkcmVuTG9hZGluZ1N0YXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFibGVTZXJ2aWNlLnNldFRhYmxlTG9hZGluZyh0aGlzLl90YWJsZS5sb2FkaW5nU3RhdGUpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9jaGlsZERzU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgIHRoaXMuY2hpbGREYXRhU291cmNlLmRhdGFMb2FkaW5nXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcigoc3RhdGUpID0+ICEhc3RhdGUpLFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgobG9hZGluZ1N0YXRlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nU3RhdGVzLmZvckVhY2goKHN0YXRlKSA9PiBzdGF0ZS5yb3c/LmNoaWxkSXRlbXNMb2FkaW5nJC5uZXh0KHN0YXRlLmxvYWRpbmcpKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX2NoaWxkRHNTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgdGhpcy5jaGlsZERhdGFTb3VyY2UuZGF0YUNoYW5nZXMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hpbGRJdGVtcyQubmV4dChkYXRhKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFRoaXMgaXMgYSBzaW5nbGUgcG9pbnQgb2YgZGF0YSBlbnRyeSB0byB0aGUgY29tcG9uZW50LiBXZSBkb24ndCB3YW50IHRvIHNldCBkYXRhIG9uIGRpZmZlcmVudFxuICAgICAqIHBsYWNlcy4gSWYgYW55IG5ldyBkYXRhIGNvbWVzIGluLCBvciB5b3UgZG8gYSBzZWFyY2gsIGFuZCB5b3Ugd2FudCB0byBwYXNzIGluaXRpYWwgZGF0YVxuICAgICAqIGl0cyBoZXJlLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvRGF0YVNvdXJjZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFibGVEc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fdGFibGVEc1N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgICAgICBjb25zdCBkYXRhU291cmNlU3RyZWFtID0gdGhpcy5kYXRhU291cmNlUHJvdmlkZXI7XG4gICAgICAgIGlmIChkYXRhU291cmNlU3RyZWFtID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgW1RhYmxlRGF0YVNvdXJjZV0gc291cmNlIGRpZCBub3QgbWF0Y2ggYW4gQXJyYXksIE9ic2VydmFibGUsIG5vciBEYXRhU291cmNlYCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl90YWJsZURzU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgIHRoaXMuZGF0YUNoYW5nZWQkLnN1YnNjcmliZSgoaXRlbXMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvdGFsSXRlbXMkLnNldChkYXRhU291cmNlU3RyZWFtLmRhdGFQcm92aWRlci50b3RhbEl0ZW1zKTtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zJC5uZXh0KGl0ZW1zKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fdGFibGVEc1N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICBkYXRhU291cmNlU3RyZWFtLm9uRGF0YVJlcXVlc3RlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkRhdGFSZXF1ZXN0ZWQuZW1pdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2ludGVybmFsTG9hZGluZ1N0YXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLl90YWJsZVNlcnZpY2Uuc2V0VGFibGVMb2FkaW5nKHRoaXMuX3RhYmxlLmxvYWRpbmdTdGF0ZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICB0aGlzLl90YWJsZURzU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgIGRhdGFTb3VyY2VTdHJlYW0ub25EYXRhUmVjZWl2ZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub25EYXRhUmVjZWl2ZWQuZW1pdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2ludGVybmFsTG9hZGluZ1N0YXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fZmlyc3RMb2FkaW5nRG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFibGVTZXJ2aWNlLnNldFRhYmxlTG9hZGluZyh0aGlzLl90YWJsZS5sb2FkaW5nU3RhdGUpO1xuXG4gICAgICAgICAgICAgICAgLy8gUmVzdG9yZSBub3JtYWwgcGFnaW5hdGlvbiBhZnRlciB0aGUgZmlyc3QgZmV0Y2ggb2YgZGF0YS5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdGFibGUuX2xvYWRQcmV2aW91c1BhZ2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5fdGFibGVTZXJ2aWNlLmdldFRhYmxlU3RhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGFibGVTZXJ2aWNlLnNldFRhYmxlU3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi57XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UGFnZTogdGhpcy5pbml0aWFsU3RhdGU/LmluaXRpYWxQYWdlIHx8IHN0YXRlLnBhZ2UuY3VycmVudFBhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VTaXplOiB0aGlzLl90YWJsZS5wYWdlU2l6ZSB8fCBzdGF0ZS5wYWdlLnBhZ2VTaXplXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGFibGUuX2xvYWRQcmV2aW91c1BhZ2VzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBpbml0aWFsIGRhdGEgZmV0Y2hcbiAgICAgICAgZGF0YVNvdXJjZVN0cmVhbS5mZXRjaCh0aGlzLl90YWJsZVNlcnZpY2UuZ2V0VGFibGVTdGF0ZSgpKTtcblxuICAgICAgICB0aGlzLl90YWJsZURhdGFTb3VyY2UgPSBkYXRhU291cmNlU3RyZWFtO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2xvc2VEYXRhU291cmNlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3RhYmxlRGF0YVNvdXJjZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdGFibGVEYXRhU291cmNlLmNsb3NlKCk7XG5cbiAgICAgICAgdGhpcy5fdGFibGVEc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fdGFibGVEc1N1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICAgIHRoaXMuX3RhYmxlLmNsZWFyVGFibGVSb3dzKCk7XG4gICAgfVxufVxuIl19","import { BehaviorSubject } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { TableRowType } from '../enums';\n/** @hidden */\nexport function isTableRow(row) {\n return row && row.type !== undefined && row.value !== undefined && row.index >= 0 && row.state !== undefined;\n}\nexport class TableRowImpl {\n /** @hidden */\n set checked(value) {\n this._checkedSubject.next(value);\n }\n get checked() {\n return this._checkedSubject.value;\n }\n /** @hidden */\n set expanded(value) {\n this._expandedSubject.next(value);\n this.children.forEach((childRow) => {\n childRow.hidden = !value;\n });\n }\n get expanded() {\n return this._expandedSubject.value;\n }\n /** @hidden */\n constructor(row) {\n /** @hidden */\n this.stateChanged$ = new BehaviorSubject(false);\n /** @hidden */\n this.childItemsLoading$ = new BehaviorSubject(false);\n /** @hidden */\n this.forceFetch = false;\n /** @hidden */\n this._expandedSubject = new BehaviorSubject(false);\n /** @hidden */\n this._checkedSubject = new BehaviorSubject(false);\n this.checked$ = this._checkedSubject.asObservable().pipe(map(Boolean));\n this.expanded$ = this._expandedSubject.asObservable().pipe(map(Boolean));\n this.checked = row.checked || false;\n this.children = row.children || [];\n this.expandable = row.expandable || false;\n this.expanded = row.expanded || false;\n this.hidden = row.hidden || false;\n this.index = row.index || 0;\n this.level = row.level || 0;\n this.navigatable = row.navigatable || false;\n this.parent = row.parent || null;\n this.state = row.state || 'readonly';\n this.value = row.value;\n this.setRowType(row.type || TableRowType.ITEM);\n }\n /**\n * Sets the row type and checks whether the row is a tree.\n * @param type Row type.\n */\n setRowType(type) {\n this.type = type;\n this.isTree = this.type === TableRowType.TREE;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcm93Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzL21vZGVscy90YWJsZS1yb3cubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQWlHeEMsY0FBYztBQUNkLE1BQU0sVUFBVSxVQUFVLENBQVUsR0FBZ0I7SUFDaEQsT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksR0FBRyxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUM7QUFDakgsQ0FBQztBQUVELE1BQU0sT0FBTyxZQUFZO0lBQ3JCLGNBQWM7SUFDZCxJQUFJLE9BQU8sQ0FBQyxLQUFxQjtRQUM3QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBQ0QsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQztJQUN0QyxDQUFDO0lBb0JELGNBQWM7SUFDZCxJQUFJLFFBQVEsQ0FBQyxLQUFjO1FBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUMvQixRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQztJQUN2QyxDQUFDO0lBa0NELGNBQWM7SUFDZCxZQUFZLEdBQXNCO1FBMURsQyxjQUFjO1FBQ0wsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUU3RCxjQUFjO1FBQ0wsdUJBQWtCLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFbEUsY0FBYztRQUNkLGVBQVUsR0FBRyxLQUFLLENBQUM7UUE2Q25CLGNBQWM7UUFDRyxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN4RSxjQUFjO1FBQ0csb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBaUIsS0FBSyxDQUFDLENBQUM7UUFJMUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQztRQUNwQyxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUM7UUFDMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQztRQUN0QyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDO1FBQzVDLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxJQUFJLFVBQVUsQ0FBQztRQUNyQyxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsVUFBVSxDQUFDLElBQWtCO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsSUFBSSxDQUFDO0lBQ2xELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi4vZG9tYWluJztcbmltcG9ydCB7IFRhYmxlUm93VHlwZSB9IGZyb20gJy4uL2VudW1zJztcblxuZXhwb3J0IHR5cGUgVGFibGVSb3dTdGF0ZSA9ICdlZGl0YWJsZScgfCAncmVhZG9ubHknO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlUm93S2V5Ym9hcmREcmFnIHtcbiAgICBkaXJlY3Rpb246ICd1cCcgfCAnZG93bic7XG4gICAgZXZlbnQ6IEtleWJvYXJkRXZlbnQ7XG4gICAgbW9kZTogJ2dyb3VwJyB8ICdzaGlmdCc7XG59XG5cbi8qKlxuICogVGFibGUgcm93IGVudGl0eVxuICogVXNlZCB0byByZXByZXNlbnQgdGFibGUgcm93IGluIHRoZSB0ZW1wbGF0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlUm93PFQgPSBhbnk+IHtcbiAgICAvKipcbiAgICAgKiBSb3cgc2VtYW50aWMgdHlwZVxuICAgICAqL1xuICAgIHR5cGU6IFRhYmxlUm93VHlwZS5JVEVNIHwgVGFibGVSb3dUeXBlLkdST1VQIHwgVGFibGVSb3dUeXBlLlRSRUU7XG5cbiAgICAvKipcbiAgICAgKiBJbmRpY2F0ZXMgaWYgcm93IGlzIHNlbGVjdGVkLiBJdCBhbHNvIHN1cHBvcnRzIGludGVybWVkaWF0ZSBzdGF0ZVxuICAgICAqL1xuICAgIGNoZWNrZWQ6IGJvb2xlYW4gfCBudWxsO1xuXG4gICAgY2hlY2tlZCQ/OiBPYnNlcnZhYmxlPFRhYmxlUm93WydjaGVja2VkJ10+O1xuXG4gICAgLyoqXG4gICAgICogSW5kZXggb2YgYSBcInZhbHVlXCIgaW4gZGF0YSBzb3VyY2UgbGlzdFxuICAgICAqL1xuICAgIGluZGV4OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBEYXRhIG1vZGVsIGl0IHJlcHJlc2VudHNcbiAgICAgKi9cbiAgICByZWFkb25seSB2YWx1ZTogVDtcblxuICAgIC8qKlxuICAgICAqIFJlZmVyZW5jZSB0byBhIHBhcmVudCBpZiBhbnlcbiAgICAgKi9cbiAgICBwYXJlbnQ6IFRhYmxlUm93IHwgbnVsbDtcblxuICAgIC8qKlxuICAgICAqIE5lc3RpbmcgbGV2ZWxcbiAgICAgKi9cbiAgICBsZXZlbDogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogRXhwYW5kYWJsZVxuICAgICAqL1xuICAgIGV4cGFuZGFibGU6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBFeHBhbmRlZC9Db2xsYXBzZWRcbiAgICAgKi9cbiAgICBleHBhbmRlZDogYm9vbGVhbjtcblxuICAgIGV4cGFuZGVkJD86IE9ic2VydmFibGU8VGFibGVSb3dbJ2V4cGFuZGVkJ10+O1xuXG4gICAgY2hpbGRJdGVtcyQ6IE9ic2VydmFibGU8VFtdPjtcblxuICAgIGNoaWxkSXRlbXNMb2FkaW5nJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xuXG4gICAgc3RhdGVDaGFuZ2VkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAgIC8qKlxuICAgICAqIElmIGl0ZW0gc2hvdWxkIGJlIGhpZGRlbi4gVXNlZCB0byBza2lwIHJlbmRlcmluZ1xuICAgICAqL1xuICAgIGhpZGRlbjogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIElmIHRoZSByb3cgaXMgbmF2aWdhdGFibGVcbiAgICAgKi9cbiAgICBuYXZpZ2F0YWJsZTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFJvdyBzdGF0ZTogcmVhZG9ubHkgb3IgZWRpdGFibGUuXG4gICAgICovXG4gICAgc3RhdGU6IFRhYmxlUm93U3RhdGU7XG5cbiAgICAvKipcbiAgICAgKiBDaGlsZHJlbiB0YWJsZSByb3dzLlxuICAgICAqL1xuICAgIGNoaWxkcmVuOiBUYWJsZVJvdzxUPltdO1xuXG4gICAgaXNUcmVlOiBib29sZWFuO1xuXG4gICAgc2V0Um93VHlwZTogKHR5cGU6IFRhYmxlUm93VHlwZSkgPT4gdm9pZDtcblxuICAgIGxhc3RDaGlsZD86IFRhYmxlUm93PFQ+O1xuXG4gICAgLyoqIEZsYWcgaW5kaWNhdGluZyB0aGF0IGFsbCBjaGlsZCByb3dzIHNob3VsZCBiZSBmZXRjaGVkIGFnYWluLiAqL1xuICAgIGZvcmNlRmV0Y2g6IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIFRhYmxlUm93Q2xhc3M8VCA9IGFueT4gPSBzdHJpbmcgfCAoKHJvdzogVCkgPT4gc3RyaW5nKTtcblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1RhYmxlUm93PFQgPSBhbnk+KHJvdzogVGFibGVSb3c8VD4pOiByb3cgaXMgVGFibGVSb3c8VD4ge1xuICAgIHJldHVybiByb3cgJiYgcm93LnR5cGUgIT09IHVuZGVmaW5lZCAmJiByb3cudmFsdWUgIT09IHVuZGVmaW5lZCAmJiByb3cuaW5kZXggPj0gMCAmJiByb3cuc3RhdGUgIT09IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGNsYXNzIFRhYmxlUm93SW1wbDxUPiBpbXBsZW1lbnRzIFRhYmxlUm93PFQ+IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldCBjaGVja2VkKHZhbHVlOiBib29sZWFuIHwgbnVsbCkge1xuICAgICAgICB0aGlzLl9jaGVja2VkU3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgICB9XG4gICAgZ2V0IGNoZWNrZWQoKTogYm9vbGVhbiB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hlY2tlZFN1YmplY3QudmFsdWU7XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgY2hlY2tlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBjaGlsZEl0ZW1zJDogT2JzZXJ2YWJsZTxUW10+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBzdGF0ZUNoYW5nZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IGNoaWxkSXRlbXNMb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBmb3JjZUZldGNoID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNoaWxkcmVuOiBUYWJsZVJvdzxUPltdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBleHBhbmRhYmxlOiBib29sZWFuO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0IGV4cGFuZGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2V4cGFuZGVkU3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgICAgICAgdGhpcy5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZFJvdykgPT4ge1xuICAgICAgICAgICAgY2hpbGRSb3cuaGlkZGVuID0gIXZhbHVlO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0IGV4cGFuZGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXhwYW5kZWRTdWJqZWN0LnZhbHVlO1xuICAgIH1cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IGV4cGFuZGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGhpZGRlbjogYm9vbGVhbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgaW5kZXg6IG51bWJlcjtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGxldmVsOiBudW1iZXI7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuYXZpZ2F0YWJsZTogYm9vbGVhbjtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHBhcmVudDogVGFibGVSb3cgfCBudWxsO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc3RhdGU6IFRhYmxlUm93U3RhdGU7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB0eXBlOiBUYWJsZVJvd1R5cGU7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSB2YWx1ZTogVDtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNoaWxkRGF0YVNvdXJjZTogVGFibGVEYXRhU291cmNlPFQ+IHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBpc1RyZWU6IGJvb2xlYW47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGxhc3RDaGlsZD86IFRhYmxlUm93PFQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9leHBhbmRlZFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NoZWNrZWRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuIHwgbnVsbD4oZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3Rvcihyb3c6IFBhcnRpYWw8VGFibGVSb3c+KSB7XG4gICAgICAgIHRoaXMuY2hlY2tlZCQgPSB0aGlzLl9jaGVja2VkU3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKG1hcChCb29sZWFuKSk7XG4gICAgICAgIHRoaXMuZXhwYW5kZWQkID0gdGhpcy5fZXhwYW5kZWRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUobWFwKEJvb2xlYW4pKTtcbiAgICAgICAgdGhpcy5jaGVja2VkID0gcm93LmNoZWNrZWQgfHwgZmFsc2U7XG4gICAgICAgIHRoaXMuY2hpbGRyZW4gPSByb3cuY2hpbGRyZW4gfHwgW107XG4gICAgICAgIHRoaXMuZXhwYW5kYWJsZSA9IHJvdy5leHBhbmRhYmxlIHx8IGZhbHNlO1xuICAgICAgICB0aGlzLmV4cGFuZGVkID0gcm93LmV4cGFuZGVkIHx8IGZhbHNlO1xuICAgICAgICB0aGlzLmhpZGRlbiA9IHJvdy5oaWRkZW4gfHwgZmFsc2U7XG4gICAgICAgIHRoaXMuaW5kZXggPSByb3cuaW5kZXggfHwgMDtcbiAgICAgICAgdGhpcy5sZXZlbCA9IHJvdy5sZXZlbCB8fCAwO1xuICAgICAgICB0aGlzLm5hdmlnYXRhYmxlID0gcm93Lm5hdmlnYXRhYmxlIHx8IGZhbHNlO1xuICAgICAgICB0aGlzLnBhcmVudCA9IHJvdy5wYXJlbnQgfHwgbnVsbDtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHJvdy5zdGF0ZSB8fCAncmVhZG9ubHknO1xuICAgICAgICB0aGlzLnZhbHVlID0gcm93LnZhbHVlO1xuICAgICAgICB0aGlzLnNldFJvd1R5cGUocm93LnR5cGUgfHwgVGFibGVSb3dUeXBlLklURU0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHJvdyB0eXBlIGFuZCBjaGVja3Mgd2hldGhlciB0aGUgcm93IGlzIGEgdHJlZS5cbiAgICAgKiBAcGFyYW0gdHlwZSBSb3cgdHlwZS5cbiAgICAgKi9cbiAgICBzZXRSb3dUeXBlKHR5cGU6IFRhYmxlUm93VHlwZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgICAgICB0aGlzLmlzVHJlZSA9IHRoaXMudHlwZSA9PT0gVGFibGVSb3dUeXBlLlRSRUU7XG4gICAgfVxufVxuIl19","import { dfs, isString } from '@fundamental-ngx/cdk/utils';\nimport { isDataSource } from '@fundamental-ngx/platform/shared';\nimport { cloneDeep, get, set } from 'lodash-es';\nimport { isObservable } from 'rxjs';\nimport { ArrayTableDataSource } from './domain/array-data-source';\nimport { ObservableTableDataSource } from './domain/observable-data-source';\nimport { TableRowType } from './enums/row-type.enum';\nimport { SelectionMode } from './enums/selection-mode.enum';\nimport { SortDirection } from './enums/sort-direction.enum';\nimport { TableRowImpl, isTableRow } from './models/table-row.model';\n/** @hidden */\nexport function newTableRow(row) {\n if (!row.value) {\n throw new Error('Unexpected value. TableRow.value cannot be undefined.');\n }\n return new TableRowImpl({\n type: row.type || TableRowType.ITEM,\n checked: row.checked || false,\n index: row.index || 0,\n value: row.value,\n parent: row.parent || null,\n level: row.level || 0,\n expandable: row.expandable || false,\n expanded: row.expanded || false,\n hidden: row.hidden || false,\n navigatable: row.navigatable || false,\n state: row.state || 'readonly',\n children: row.children || []\n });\n}\n/** @hidden */\nexport function getSelectableRows(rows, selectableKey) {\n return rows.filter((row) => isSelectableRow(row, selectableKey));\n}\n/** @hidden */\nexport function isSelectableRow(row, selectableKey) {\n return (isItemRow(row) || isTreeRow(row)) && row.value[selectableKey] !== false;\n}\n/** @hidden */\nexport function isItemRow(row) {\n return row.type === TableRowType.ITEM;\n}\n/** @hidden */\nexport function isTreeRow(row) {\n return row.type === TableRowType.TREE;\n}\n/**\n * Since we dont work with the tree, we need to convert incoming tree to\n * flat format while maintaining original state.\n *\n * @hidden\n */\nexport function convertTreeTableRowToFlatList(rows, rowNavigatable) {\n let flatList = [];\n for (const item of rows) {\n item.navigatable = isRowNavigatable(item, rowNavigatable);\n flatList.push(item);\n if (Array.isArray(item.children)) {\n item.children.forEach((c) => (c.hidden = !item.expanded));\n flatList = flatList.concat(convertTreeTableRowToFlatList(item.children, rowNavigatable));\n }\n }\n return flatList;\n}\n/** @hidden */\nexport function isRowNavigatable(row, rowNavigatable) {\n if (!row) {\n return false;\n }\n /** If key of the row's item field passed */\n if (isString(rowNavigatable)) {\n return !!row[rowNavigatable];\n }\n return !!rowNavigatable;\n}\n/** @hidden */\nexport function getFreezableColumns(columns, freezeColumnsTo) {\n const columnNames = new Map();\n if (!columns.length || !freezeColumnsTo) {\n return columnNames;\n }\n for (const column of columns) {\n if (!column.name) {\n continue;\n }\n // using columnNames.size as index of a column\n columnNames.set(column.name, columnNames.size);\n if (column.name === freezeColumnsTo) {\n return columnNames;\n }\n }\n return new Map();\n}\n/** @hidden */\nexport function getFreezableEndColumns(columns, freezeEndColumnsTo) {\n const columnNames = new Map();\n if (!columns.length || !freezeEndColumnsTo) {\n return columnNames;\n }\n for (let i = columns.length - 1; i >= 0; i--) {\n // using columnNames.size as index of a column\n columnNames.set(columns[i].name, columnNames.size);\n if (columns[i].name === freezeEndColumnsTo) {\n return columnNames;\n }\n }\n return new Map();\n}\n/** @hidden */\nexport function convertTreeObjectsToTableRows(source, selectionMode, tableRows, rowComparator, relationKey, hasChildrenKey, selectedKey, expandedStateKey, rowNavigatable, enableTristateMode = false) {\n const rows = [];\n const selectedRowsMap = getSelectionStatusByRowValue(source, selectionMode, tableRows, rowComparator);\n source.forEach((item, index) => {\n const hasChildren = Object.prototype.hasOwnProperty.call(item, relationKey) &&\n Array.isArray(item[relationKey]) &&\n item[relationKey].length;\n const row = isTableRow(item)\n ? item\n : newTableRow({\n type: hasChildren || item[hasChildrenKey] === true ? TableRowType.TREE : TableRowType.ITEM,\n checked: item[selectedKey] ?? !!selectedRowsMap.get(item),\n index,\n value: item\n });\n row.expanded =\n expandedStateKey && Object.prototype.hasOwnProperty.call(item, expandedStateKey)\n ? item[expandedStateKey]\n : false;\n row.navigatable = isRowNavigatable(item, rowNavigatable);\n rows.push(row);\n if (hasChildren) {\n const children = convertTreeObjectsToTableRows(item[relationKey], selectionMode, tableRows, rowComparator, relationKey, hasChildrenKey, selectedKey, expandedStateKey, rowNavigatable, enableTristateMode);\n children.forEach((c) => {\n c.parent = c.parent || row;\n c.level = c.parent.level + 1;\n c.hidden = !c.parent.expanded;\n });\n row.children.push(...children);\n rows.push(...children);\n }\n if (row.level === 0 && row.isTree) {\n dfs([row], (r) => {\n const children = r.children || [];\n const selectedChildren = [];\n const indeterminateChildren = [];\n children.forEach((child) => {\n if (child.checked === true) {\n selectedChildren.push(child);\n }\n else if (child.checked === null) {\n indeterminateChildren.push(child);\n }\n });\n const selectedAll = selectedChildren.length === children.length && children.length > 0;\n const selectedSome = selectedChildren.length > 0;\n if (r.checked && selectionMode === SelectionMode.MULTIPLE) {\n applySelectionToChildren(rows, r, [], []);\n return;\n }\n if (!enableTristateMode) {\n return;\n }\n if (selectedAll) {\n r.checked = true;\n return;\n }\n if (selectedSome || indeterminateChildren.length > 0) {\n r.checked = null;\n return;\n }\n });\n }\n });\n return rows;\n}\n/**\n * @hidden\n * Runs `rowComparator` function against checked rows and compares them with the new `source`\n * If matched, creates an association between the source item and checked status of corresponding row.\n *\n * @returns `Map` object with the `checked` status for particular source item\n */\nexport function getSelectionStatusByRowValue(source, selectionMode, tableRows, rowComparator) {\n const rowMap = new Map();\n if ((selectionMode === SelectionMode.SINGLE || selectionMode === SelectionMode.MULTIPLE) &&\n typeof rowComparator === 'function') {\n const checkedRows = tableRows.filter((r) => r.checked);\n checkedRows.forEach((row) => {\n const found = source.find((e) => rowComparator(row.value, e));\n if (found) {\n rowMap.set(found, row.checked);\n }\n });\n }\n return rowMap;\n}\n/** @hidden */\nexport function applySelectionToChildren(allRows, row, addedRows, removedRows) {\n const allChildren = findRowChildren(row, allRows);\n allChildren.forEach((r) => {\n r.checked = row.checked;\n r.checked ? addedRows.push(r) : removedRows.push(r);\n });\n}\n/** @hidden */\nexport function findRowChildren(row, allRows) {\n const rowsLength = allRows.length;\n /**\n * Since we are dealing with a flat list\n * it means all children go next right after the expandable row\n * until the next row has a mutual parent\n */\n let index = allRows.indexOf(row);\n const parents = getRowParents(row);\n const children = [];\n while (index++ < rowsLength) {\n const nextRow = allRows[index];\n if (!nextRow?.parent || parents.includes(nextRow.parent)) {\n break;\n }\n children.push(nextRow);\n }\n return children;\n}\n/**\n * Get row parents path where the first is the direct parent\n * @param row Row which parents we need to find\n * @param untilParent Parent to stop a search on. Default is \"null\" that means look up until the root\n * @returns parents list [direct parent, ..., ancestor]\n * @hidden\n */\nexport function getRowParents(row, untilParent = null) {\n untilParent = untilParent || null; // to avoid \"undefined\"\n const parents = [];\n let parent = row.parent || null; // empty parent should be coerced to \"null\" do not get into infinite loop\n while (parent && parent !== untilParent) {\n parents.push(parent);\n parent = parent.parent || null;\n }\n return parents;\n}\n/** @hidden */\nexport function toDataStream(source) {\n if (isDataSource(source)) {\n return source;\n }\n if (Array.isArray(source)) {\n return new ArrayTableDataSource(source);\n }\n if (isObservable(source)) {\n return new ObservableTableDataSource(source);\n }\n return undefined;\n}\n/**\n * @hidden\n * Creates an empty column skeleton object.\n * @returns Column model.\n */\nexport function buildNewRowSkeleton(editableRowSkeleton, columns) {\n if (editableRowSkeleton) {\n return cloneDeep(editableRowSkeleton);\n }\n let newRow = {};\n columns.forEach((column) => {\n newRow = set(newRow, column.key, undefined);\n });\n return newRow;\n}\n/** @hidden */\nexport function isGroupRow(row) {\n return row.type === TableRowType.GROUP;\n}\n/** @hidden */\nexport function sortTreeLikeGroupedRows(groupedRows, groupRulesMap) {\n if (!groupedRows[0] || !isGroupRow(groupedRows[0])) {\n return groupedRows;\n }\n const treeLikeRows = groupedRows;\n const firstRow = treeLikeRows[0];\n treeLikeRows.forEach((group) => {\n if (group._children) {\n group._children = sortTreeLikeGroupedRows(group._children, groupRulesMap);\n }\n });\n const groupRule = groupRulesMap.get(firstRow.value.field);\n if (!groupRule || groupRule.direction === SortDirection.NONE) {\n return treeLikeRows;\n }\n const direction = groupRule.direction;\n const directionMultiplier = direction === SortDirection.ASC ? 1 : direction === SortDirection.DESC ? -1 : 0;\n return treeLikeRows.slice().sort((a, b) => {\n const aValue = a.value.value;\n const bValue = b.value.value;\n const aNumber = Number.parseFloat(aValue);\n const bNumber = Number.parseFloat(bValue);\n if (!Number.isNaN(aNumber) && !Number.isNaN(bNumber)) {\n return (aNumber - bNumber) * directionMultiplier;\n }\n return (aValue > bValue ? 1 : -1) * directionMultiplier;\n });\n}\n/** @hidden */\nexport function convertTreeLikeToFlatList(treeLikeList) {\n let flatList = [];\n for (const item of treeLikeList) {\n flatList.push(item);\n if (Array.isArray(item._children)) {\n flatList = flatList.concat(convertTreeLikeToFlatList(item._children));\n delete item._children;\n }\n }\n return flatList;\n}\n/**\n * @hidden\n * Group table rows and return tree like rows list.\n * It's intended to be called recursively.\n * @param rules group rules to group by\n * @param rows source table rows\n * @param parent row parent\n * @param level level of nesting\n */\nexport function createGroupedTableRowsTree(rules, rows, parent = null, level = 0) {\n rules = [...rules];\n if (!rules.length) {\n // no rules mean that it's the level of source items\n return rows.map((row) => {\n row.parent = parent;\n row.level = level;\n row.hidden = !!parent && !parent.expanded;\n return row;\n });\n }\n // Retrieve first group rule\n const rule = rules.shift();\n // Build map of unique values for a given group rule\n const valuesHash = rows\n .filter((r) => r.state !== 'editable')\n .reduce((hash, row) => {\n const modelValue = get(row.value, rule.field);\n if (!hash.has(modelValue)) {\n hash.set(modelValue, []);\n }\n hash.get(modelValue)?.push(row);\n return hash;\n }, new Map());\n // Build table rows tree\n let groupedTableRows = [];\n if (rows.some((r) => r.state === 'editable')) {\n groupedTableRows = rows\n .filter((r) => r.state === 'editable')\n .map((row) => {\n row.parent = parent;\n row.level = -1;\n row.hidden = !!parent && !parent.expanded;\n return row;\n });\n }\n for (const [value, values] of Array.from(valuesHash)) {\n const filteredRows = rows.filter((_item) => values.includes(_item));\n if (filteredRows.length === 0) {\n continue;\n }\n const groupTableRow = newTableRow({\n type: TableRowType.GROUP,\n checked: false,\n index: 0,\n value: { field: rule.field, value, count: 0 },\n parent,\n level,\n expandable: true,\n expanded: true,\n hidden: !!parent && !parent.expanded\n });\n // Ads group's children rows\n groupTableRow._children = createGroupedTableRowsTree(rules, filteredRows, groupTableRow, level + 1);\n groupTableRow.value.count = groupTableRow._children?.length;\n groupedTableRows.push(groupTableRow);\n }\n return groupedTableRows;\n}\n/** @hidden */\nexport function convertObjectsToTableRows(source, addedItems, selectedKey, rowNavigatable, selectionMode, rows, rowComparator) {\n const rowItem = source[0];\n if (isTableRow(rowItem)) {\n return source;\n }\n const selectedRowsMap = getSelectionStatusByRowValue(source, selectionMode, rows, rowComparator);\n return source.map((item, index) => {\n const isNewItem = addedItems.includes(item);\n const row = newTableRow({\n type: TableRowType.ITEM,\n checked: item[selectedKey] ?? !!selectedRowsMap.get(item),\n index,\n value: item\n });\n row.navigatable = isRowNavigatable(item, rowNavigatable);\n row.state = isNewItem ? 'editable' : 'readonly';\n return row;\n });\n}\n/** @hidden */\nexport function isTreeRowFirstCell(cellIndex, row, event) {\n return (cellIndex === 0 && isTreeRow(row)) || (!!event && !row.isTree);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTVFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFzQixNQUFNLDZCQUE2QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUk1RCxPQUFPLEVBQVksWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSTlFLGNBQWM7QUFDZCxNQUFNLFVBQVUsV0FBVyxDQUFVLEdBQXlCO0lBQzFELElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixNQUFNLElBQUksS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVELE9BQU8sSUFBSSxZQUFZLENBQUM7UUFDcEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksWUFBWSxDQUFDLElBQUk7UUFDbkMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLElBQUksS0FBSztRQUM3QixLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssSUFBSSxD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Q0FBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztJQUNqRyxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFPLEVBQUUsS0FBYSxFQUFFLEVBQUU7UUFDekMsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUM7WUFDcEIsSUFBSSxFQUFFLFlBQVksQ0FBQyxJQUFJO1lBQ3ZCLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQ3pELEtBQUs7WUFDTCxLQUFLLEVBQUUsSUFBSTtTQUNkLENBQUMsQ0FBQztRQUNILEdBQUcsQ0FBQyxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3pELEdBQUcsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUNoRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVELGNBQWM7QUFDZCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsU0FBaUIsRUFBRSxHQUFhLEVBQUUsS0FBYTtJQUM5RSxPQUFPLENBQUMsU0FBUyxLQUFLLENBQUMsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDM0UsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRmcywgaXNTdHJpbmcgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBpc0RhdGFTb3VyY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGdldCwgc2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXJyYXlUYWJsZURhdGFTb3VyY2UgfSBmcm9tICcuL2RvbWFpbi9hcnJheS1kYXRhLXNvdXJjZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlVGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi9kb21haW4vb2JzZXJ2YWJsZS1kYXRhLXNvdXJjZSc7XG5pbXBvcnQgeyBUYWJsZURhdGFTb3VyY2UgfSBmcm9tICcuL2RvbWFpbi90YWJsZS1kYXRhLXNvdXJjZSc7XG5pbXBvcnQgeyBUYWJsZVJvd1R5cGUgfSBmcm9tICcuL2VudW1zL3Jvdy10eXBlLmVudW0nO1xuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZSwgU2VsZWN0aW9uTW9kZVZhbHVlIH0gZnJvbSAnLi9lbnVtcy9zZWxlY3Rpb24tbW9kZS5lbnVtJztcbmltcG9ydCB7IFNvcnREaXJlY3Rpb24gfSBmcm9tICcuL2VudW1zL3NvcnQtZGlyZWN0aW9uLmVudW0nO1xuaW1wb3J0IHsgQ29sbGVjdGlvbkdyb3VwIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NvbGxlY3Rpb24tZ3JvdXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZkcFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJy4vbW9kZWxzL2RhdGEtc291cmNlLnR5cGUnO1xuaW1wb3J0IHsgUm93Q29tcGFyYXRvciB9IGZyb20gJy4vbW9kZWxzL3Jvdy1jb21wYXJhdG9yLm1vZGVsJztcbmltcG9ydCB7IFRhYmxlUm93LCBUYWJsZVJvd0ltcGwsIGlzVGFibGVSb3cgfSBmcm9tICcuL21vZGVscy90YWJsZS1yb3cubW9kZWwnO1xuaW1wb3J0IHsgR3JvdXBUYWJsZVJvd1ZhbHVlVHlwZSwgVHJlZUxpa2UgfSBmcm9tICcuL21vZGVscy90cmVlLXRhYmxlLm1vZGVsJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi90YWJsZS1jb2x1bW4nO1xuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5ld1RhYmxlUm93PFQgPSBhbnk+KHJvdzogUGFydGlhbDxUYWJsZVJvdzxUPj4pOiBUYWJsZVJvdzxUPiB7XG4gICAgaWYgKCFyb3cudmFsdWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIHZhbHVlLiBUYWJsZVJvdy52YWx1ZSBjYW5ub3QgYmUgdW5kZWZpbmVkLicpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgVGFibGVSb3dJbXBsKHtcbiAgICAgICAgdHlwZTogcm93LnR5cGUgfHwgVGFibGVSb3dUeXBlLklURU0sXG4gICAgICAgIGNoZWNrZWQ6IHJvdy5jaGVja2VkIHx8IGZhbHNlLFxuICAgICAgICBpbmRleDogcm93LmluZGV4IHx8IDAsXG4gICAgICAgIHZhbHVlOiByb3cudmFsdWUsXG4gICAgICAgIHBhcmVudDogcm93LnBhcmVudCB8fCBudWxsLFxuICAgICAgICBsZXZlbDogcm93LmxldmVsIHx8IDAsXG4gICAgICAgIGV4cGFuZGFibGU6IHJvdy5leHBhbmRhYmxlIHx8IGZhbHNlLFxuICAgICAgICBleHBhbmRlZDogcm93LmV4cGFuZGVkIHx8IGZhbHNlLFxuICAgICAgICBoaWRkZW46IHJvdy5oaWRkZW4gfHwgZmFsc2UsXG4gICAgICAgIG5hdmlnYXRhYmxlOiByb3cubmF2aWdhdGFibGUgfHwgZmFsc2UsXG4gICAgICAgIHN0YXRlOiByb3cuc3RhdGUgfHwgJ3JlYWRvbmx5JyxcbiAgICAgICAgY2hpbGRyZW46IHJvdy5jaGlsZHJlbiB8fCBbXVxuICAgIH0pO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNlbGVjdGFibGVSb3dzKHJvd3M6IFRhYmxlUm93W10sIHNlbGVjdGFibGVLZXk6IHN0cmluZyk6IFRhYmxlUm93W10ge1xuICAgIHJldHVybiByb3dzLmZpbHRlcigocm93KSA9PiBpc1NlbGVjdGFibGVSb3cocm93LCBzZWxlY3RhYmxlS2V5KSk7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTZWxlY3RhYmxlUm93KHJvdzogVGFibGVSb3csIHNlbGVjdGFibGVLZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoaXNJdGVtUm93KHJvdykgfHwgaXNUcmVlUm93KHJvdykpICYmIHJvdy52YWx1ZVtzZWxlY3RhYmxlS2V5XSAhPT0gZmFsc2U7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNJdGVtUm93KHJvdzogVGFibGVSb3cpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcm93LnR5cGUgPT09IFRhYmxlUm93VHlwZS5JVEVNO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVHJlZVJvdyhyb3c6IFRhYmxlUm93KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJvdy50eXBlID09PSBUYWJsZVJvd1R5cGUuVFJFRTtcbn1cblxuLyoqXG4gKiBTaW5jZSB3ZSBkb250IHdvcmsgd2l0aCB0aGUgdHJlZSwgd2UgbmVlZCB0byBjb252ZXJ0IGluY29taW5nIHRyZWUgdG9cbiAqIGZsYXQgZm9ybWF0IHdoaWxlIG1haW50YWluaW5nIG9yaWdpbmFsIHN0YXRlLlxuICpcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUcmVlVGFibGVSb3dUb0ZsYXRMaXN0PFQ+KHJvd3M6IFRhYmxlUm93PFQ+W10sIHJvd05hdmlnYXRhYmxlOiBzdHJpbmcgfCBib29sZWFuKTogVGFibGVSb3c8VD5bXSB7XG4gICAgbGV0IGZsYXRMaXN0OiBUYWJsZVJvd1tdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2Ygcm93cykge1xuICAgICAgICBpdGVtLm5hdmlnYXRhYmxlID0gaXNSb3dOYXZpZ2F0YWJsZShpdGVtIGFzIFQsIHJvd05hdmlnYXRhYmxlKTtcbiAgICAgICAgZmxhdExpc3QucHVzaChpdGVtKTtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtLmNoaWxkcmVuKSkge1xuICAgICAgICAgICAgaXRlbS5jaGlsZHJlbi5mb3JFYWNoKChjKSA9PiAoYy5oaWRkZW4gPSAhaXRlbS5leHBhbmRlZCkpO1xuICAgICAgICAgICAgZmxhdExpc3QgPSBmbGF0TGlzdC5jb25jYXQoY29udmVydFRyZWVUYWJsZVJvd1RvRmxhdExpc3QoaXRlbS5jaGlsZHJlbiwgcm93TmF2aWdhdGFibGUpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmxhdExpc3Q7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNSb3dOYXZpZ2F0YWJsZTxUPihyb3c6IFQsIHJvd05hdmlnYXRhYmxlOiBzdHJpbmcgfCBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgaWYgKCFyb3cpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKiBJZiBrZXkgb2YgdGhlIHJvdydzIGl0ZW0gZmllbGQgcGFzc2VkICovXG4gICAgaWYgKGlzU3RyaW5nKHJvd05hdmlnYXRhYmxlKSkge1xuICAgICAgICByZXR1cm4gISFyb3dbcm93TmF2aWdhdGFibGUgYXMgc3RyaW5nXTtcbiAgICB9XG5cbiAgICByZXR1cm4gISFyb3dOYXZpZ2F0YWJsZTtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGcmVlemFibGVDb2x1bW5zKGNvbHVtbnM6IFRhYmxlQ29sdW1uW10sIGZyZWV6ZUNvbHVtbnNUbzogc3RyaW5nKTogTWFwPHN0cmluZywgbnVtYmVyPiB7XG4gICAgY29uc3QgY29sdW1uTmFtZXMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuXG4gICAgaWYgKCFjb2x1bW5zLmxlbmd0aCB8fCAhZnJlZXplQ29sdW1uc1RvKSB7XG4gICAgICAgIHJldHVybiBjb2x1bW5OYW1lcztcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XG4gICAgICAgIGlmICghY29sdW1uLm5hbWUpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdXNpbmcgY29sdW1uTmFtZXMuc2l6ZSBhcyBpbmRleCBvZiBhIGNvbHVtblxuICAgICAgICBjb2x1bW5OYW1lcy5zZXQoY29sdW1uLm5hbWUsIGNvbHVtbk5hbWVzLnNpemUpO1xuXG4gICAgICAgIGlmIChjb2x1bW4ubmFtZSA9PT0gZnJlZXplQ29sdW1uc1RvKSB7XG4gICAgICAgICAgICByZXR1cm4gY29sdW1uTmFtZXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IE1hcCgpO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZyZWV6YWJsZUVuZENvbHVtbnMoY29sdW1uczogVGFibGVDb2x1bW5bXSwgZnJlZXplRW5kQ29sdW1uc1RvOiBzdHJpbmcpOiBNYXA8c3RyaW5nLCBudW1iZXI+IHtcbiAgICBjb25zdCBjb2x1bW5OYW1lcyA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG5cbiAgICBpZiAoIWNvbHVtbnMubGVuZ3RoIHx8ICFmcmVlemVFbmRDb2x1bW5zVG8pIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbk5hbWVzO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSBjb2x1bW5zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIC8vIHVzaW5nIGNvbHVtbk5hbWVzLnNpemUgYXMgaW5kZXggb2YgYSBjb2x1bW5cbiAgICAgICAgY29sdW1uTmFtZXMuc2V0KGNvbHVtbnNbaV0ubmFtZSwgY29sdW1uTmFtZXMuc2l6ZSk7XG5cbiAgICAgICAgaWYgKGNvbHVtbnNbaV0ubmFtZSA9PT0gZnJlZXplRW5kQ29sdW1uc1RvKSB7XG4gICAgICAgICAgICByZXR1cm4gY29sdW1uTmFtZXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IE1hcCgpO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUcmVlT2JqZWN0c1RvVGFibGVSb3dzPFQ+KFxuICAgIHNvdXJjZTogVFtdLFxuICAgIHNlbGVjdGlvbk1vZGU6IFNlbGVjdGlvbk1vZGVWYWx1ZSxcbiAgICB0YWJsZVJvd3M6IFRhYmxlUm93PFQ+W10sXG4gICAgcm93Q29tcGFyYXRvcjogUm93Q29tcGFyYXRvcjxUPixcbiAgICByZWxhdGlvbktleTogc3RyaW5nLFxuICAgIGhhc0NoaWxkcmVuS2V5OiBzdHJpbmcsXG4gICAgc2VsZWN0ZWRLZXk6IHN0cmluZyxcbiAgICBleHBhbmRlZFN0YXRlS2V5OiBzdHJpbmcsXG4gICAgcm93TmF2aWdhdGFibGU6IHN0cmluZyB8IGJvb2xlYW4sXG4gICAgZW5hYmxlVHJpc3RhdGVNb2RlID0gZmFsc2Vcbik6IFRhYmxlUm93PFQ+W10ge1xuICAgIGNvbnN0IHJvd3M6IFRhYmxlUm93PFQ+W10gPSBbXTtcbiAgICBjb25zdCBzZWxlY3RlZFJvd3NNYXAgPSBnZXRTZWxlY3Rpb25TdGF0dXNCeVJvd1ZhbHVlKHNvdXJjZSwgc2VsZWN0aW9uTW9kZSwgdGFibGVSb3dzLCByb3dDb21wYXJhdG9yKTtcblxuICAgIHNvdXJjZS5mb3JFYWNoKChpdGVtOiBULCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGhhc0NoaWxkcmVuID1cbiAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpdGVtLCByZWxhdGlvbktleSkgJiZcbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoaXRlbVtyZWxhdGlvbktleV0pICYmXG4gICAgICAgICAgICBpdGVtW3JlbGF0aW9uS2V5XS5sZW5ndGg7XG5cbiAgICAgICAgY29uc3Qgcm93ID0gaXNUYWJsZVJvdyhpdGVtIGFzIFRhYmxlUm93PFQ+KVxuICAgICAgICAgICAgPyAoaXRlbSBhcyBUYWJsZVJvdzxUPilcbiAgICAgICAgICAgIDogbmV3VGFibGVSb3coe1xuICAgICAgICAgICAgICAgICAgdHlwZTogaGFzQ2hpbGRyZW4gfHwgaXRlbVtoYXNDaGlsZHJlbktleV0gPT09IHRydWUgPyBUYWJsZVJvd1R5cGUuVFJFRSA6IFRhYmxlUm93VHlwZS5JVEVNLFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZDogaXRlbVtzZWxlY3RlZEtleV0gPz8gISFzZWxlY3RlZFJvd3NNYXAuZ2V0KGl0ZW0pLFxuICAgICAgICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogaXRlbVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICByb3cuZXhwYW5kZWQgPVxuICAgICAgICAgICAgZXhwYW5kZWRTdGF0ZUtleSAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaXRlbSwgZXhwYW5kZWRTdGF0ZUtleSlcbiAgICAgICAgICAgICAgICA/IGl0ZW1bZXhwYW5kZWRTdGF0ZUtleV1cbiAgICAgICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICByb3cubmF2aWdhdGFibGUgPSBpc1Jvd05hdmlnYXRhYmxlKGl0ZW0sIHJvd05hdmlnYXRhYmxlKTtcbiAgICAgICAgcm93cy5wdXNoKHJvdyk7XG5cbiAgICAgICAgaWYgKGhhc0NoaWxkcmVuKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGNvbnZlcnRUcmVlT2JqZWN0c1RvVGFibGVSb3dzKFxuICAgICAgICAgICAgICAgIGl0ZW1bcmVsYXRpb25LZXldLFxuICAgICAgICAgICAgICAgIHNlbGVjdGlvbk1vZGUsXG4gICAgICAgICAgICAgICAgdGFibGVSb3dzLFxuICAgICAgICAgICAgICAgIHJvd0NvbXBhcmF0b3IsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25LZXksXG4gICAgICAgICAgICAgICAgaGFzQ2hpbGRyZW5LZXksXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRLZXksXG4gICAgICAgICAgICAgICAgZXhwYW5kZWRTdGF0ZUtleSxcbiAgICAgICAgICAgICAgICByb3dOYXZpZ2F0YWJsZSxcbiAgICAgICAgICAgICAgICBlbmFibGVUcmlzdGF0ZU1vZGVcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNoaWxkcmVuLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgICAgICBjLnBhcmVudCA9IGMucGFyZW50IHx8IHJvdztcbiAgICAgICAgICAgICAgICBjLmxldmVsID0gYy5wYXJlbnQubGV2ZWwgKyAxO1xuICAgICAgICAgICAgICAgIGMuaGlkZGVuID0gIWMucGFyZW50LmV4cGFuZGVkO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByb3cuY2hpbGRyZW4ucHVzaCguLi5jaGlsZHJlbik7XG5cbiAgICAgICAgICAgIHJvd3MucHVzaCguLi5jaGlsZHJlbik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJvdy5sZXZlbCA9PT0gMCAmJiByb3cuaXNUcmVlKSB7XG4gICAgICAgICAgICBkZnMoW3Jvd10sIChyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSByLmNoaWxkcmVuIHx8IFtdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkQ2hpbGRyZW46IFRhYmxlUm93PFQ+W10gPSBbXTtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRldGVybWluYXRlQ2hpbGRyZW46IFRhYmxlUm93PFQ+W10gPSBbXTtcbiAgICAgICAgICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQuY2hlY2tlZCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaGlsZC5jaGVja2VkID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRldGVybWluYXRlQ2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkQWxsID0gc2VsZWN0ZWRDaGlsZHJlbi5sZW5ndGggPT09IGNoaWxkcmVuLmxlbmd0aCAmJiBjaGlsZHJlbi5sZW5ndGggPiAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkU29tZSA9IHNlbGVjdGVkQ2hpbGRyZW4ubGVuZ3RoID4gMDtcbiAgICAgICAgICAgICAgICBpZiAoci5jaGVja2VkICYmIHNlbGVjdGlvbk1vZGUgPT09IFNlbGVjdGlvbk1vZGUuTVVMVElQTEUpIHtcbiAgICAgICAgICAgICAgICAgICAgYXBwbHlTZWxlY3Rpb25Ub0NoaWxkcmVuKHJvd3MsIHIsIFtdLCBbXSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFlbmFibGVUcmlzdGF0ZU1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRBbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgci5jaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRTb21lIHx8IGluZGV0ZXJtaW5hdGVDaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHIuY2hlY2tlZCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJvd3M7XG59XG5cbi8qKlxuICogQGhpZGRlblxuICogUnVucyBgcm93Q29tcGFyYXRvcmAgZnVuY3Rpb24gYWdhaW5zdCBjaGVja2VkIHJvd3MgYW5kIGNvbXBhcmVzIHRoZW0gd2l0aCB0aGUgbmV3IGBzb3VyY2VgXG4gKiBJZiBtYXRjaGVkLCBjcmVhdGVzIGFuIGFzc29jaWF0aW9uIGJldHdlZW4gdGhlIHNvdXJjZSBpdGVtIGFuZCBjaGVja2VkIHN0YXR1cyBvZiBjb3JyZXNwb25kaW5nIHJvdy5cbiAqXG4gKiBAcmV0dXJucyBgTWFwYCBvYmplY3Qgd2l0aCB0aGUgYGNoZWNrZWRgIHN0YXR1cyBmb3IgcGFydGljdWxhciBzb3VyY2UgaXRlbVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VsZWN0aW9uU3RhdHVzQnlSb3dWYWx1ZTxUPihcbiAgICBzb3VyY2U6IFRbXSxcbiAgICBzZWxlY3Rpb25Nb2RlOiBTZWxlY3Rpb25Nb2RlVmFsdWUsXG4gICAgdGFibGVSb3dzOiBUYWJsZVJvd1tdLFxuICAgIHJvd0NvbXBhcmF0b3I6IFJvd0NvbXBhcmF0b3I8VD5cbik6IE1hcDxULCBib29sZWFuIHwgbnVsbD4ge1xuICAgIGNvbnN0IHJvd01hcCA9IG5ldyBNYXA8VCwgYm9vbGVhbiB8IG51bGw+KCk7XG4gICAgaWYgKFxuICAgICAgICAoc2VsZWN0aW9uTW9kZSA9PT0gU2VsZWN0aW9uTW9kZS5TSU5HTEUgfHwgc2VsZWN0aW9uTW9kZSA9PT0gU2VsZWN0aW9uTW9kZS5NVUxUSVBMRSkgJiZcbiAgICAgICAgdHlwZW9mIHJvd0NvbXBhcmF0b3IgPT09ICdmdW5jdGlvbidcbiAgICApIHtcbiAgICAgICAgY29uc3QgY2hlY2tlZFJvd3MgPSB0YWJsZVJvd3MuZmlsdGVyKChyKSA9PiByLmNoZWNrZWQpO1xuICAgICAgICBjaGVja2VkUm93cy5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZvdW5kID0gc291cmNlLmZpbmQoKGUpID0+IHJvd0NvbXBhcmF0b3Iocm93LnZhbHVlLCBlKSk7XG4gICAgICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAgICAgICByb3dNYXAuc2V0KGZvdW5kLCByb3cuY2hlY2tlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcm93TWFwO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5U2VsZWN0aW9uVG9DaGlsZHJlbjxUPihcbiAgICBhbGxSb3dzOiBBcnJheTxUYWJsZVJvdzxUPj4sXG4gICAgcm93OiBUYWJsZVJvdyxcbiAgICBhZGRlZFJvd3M6IFRhYmxlUm93PFQ+W10sXG4gICAgcmVtb3ZlZFJvd3M6IFRhYmxlUm93PFQ+W11cbik6IHZvaWQge1xuICAgIGNvbnN0IGFsbENoaWxkcmVuID0gZmluZFJvd0NoaWxkcmVuKHJvdywgYWxsUm93cyk7XG5cbiAgICBhbGxDaGlsZHJlbi5mb3JFYWNoKChyKSA9PiB7XG4gICAgICAgIHIuY2hlY2tlZCA9IHJvdy5jaGVja2VkO1xuICAgICAgICByLmNoZWNrZWQgPyBhZGRlZFJvd3MucHVzaChyKSA6IHJlbW92ZWRSb3dzLnB1c2gocik7XG4gICAgfSk7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFJvd0NoaWxkcmVuPFQ+KHJvdzogVGFibGVSb3c8VD4sIGFsbFJvd3M6IFRhYmxlUm93PFQ+W10pOiBUYWJsZVJvdzxUPltdIHtcbiAgICBjb25zdCByb3dzTGVuZ3RoID0gYWxsUm93cy5sZW5ndGg7XG5cbiAgICAvKipcbiAgICAgKiBTaW5jZSB3ZSBhcmUgZGVhbGluZyB3aXRoIGEgZmxhdCBsaXN0XG4gICAgICogaXQgbWVhbnMgYWxsIGNoaWxkcmVuIGdvIG5leHQgcmlnaHQgYWZ0ZXIgdGhlIGV4cGFuZGFibGUgcm93XG4gICAgICogdW50aWwgdGhlIG5leHQgcm93IGhhcyBhIG11dHVhbCBwYXJlbnRcbiAgICAgKi9cblxuICAgIGxldCBpbmRleCA9IGFsbFJvd3MuaW5kZXhPZihyb3cpO1xuICAgIGNvbnN0IHBhcmVudHMgPSBnZXRSb3dQYXJlbnRzKHJvdyk7XG4gICAgY29uc3QgY2hpbGRyZW46IFRhYmxlUm93PFQ+W10gPSBbXTtcblxuICAgIHdoaWxlIChpbmRleCsrIDwgcm93c0xlbmd0aCkge1xuICAgICAgICBjb25zdCBuZXh0Um93ID0gYWxsUm93c1tpbmRleF07XG4gICAgICAgIGlmICghbmV4dFJvdz8ucGFyZW50IHx8IHBhcmVudHMuaW5jbHVkZXMobmV4dFJvdy5wYXJlbnQpKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjaGlsZHJlbi5wdXNoKG5leHRSb3cpO1xuICAgIH1cblxuICAgIHJldHVybiBjaGlsZHJlbjtcbn1cblxuLyoqXG4gKiBHZXQgcm93IHBhcmVudHMgcGF0aCB3aGVyZSB0aGUgZmlyc3QgaXMgdGhlIGRpcmVjdCBwYXJlbnRcbiAqIEBwYXJhbSByb3cgUm93IHdoaWNoIHBhcmVudHMgd2UgbmVlZCB0byBmaW5kXG4gKiBAcGFyYW0gdW50aWxQYXJlbnQgUGFyZW50IHRvIHN0b3AgYSBzZWFyY2ggb24uIERlZmF1bHQgaXMgXCJudWxsXCIgdGhhdCBtZWFucyBsb29rIHVwIHVudGlsIHRoZSByb290XG4gKiBAcmV0dXJucyBwYXJlbnRzIGxpc3QgW2RpcmVjdCBwYXJlbnQsIC4uLiwgYW5jZXN0b3JdXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb3dQYXJlbnRzPFQ+KHJvdzogVGFibGVSb3c8VD4sIHVudGlsUGFyZW50OiBUYWJsZVJvdzxUPiB8IG51bGwgPSBudWxsKTogVGFibGVSb3c8VD5bXSB7XG4gICAgdW50aWxQYXJlbnQgPSB1bnRpbFBhcmVudCB8fCBudWxsOyAvLyB0byBhdm9pZCBcInVuZGVmaW5lZFwiXG4gICAgY29uc3QgcGFyZW50czogVGFibGVSb3c8VD5bXSA9IFtdO1xuICAgIGxldCBwYXJlbnQgPSByb3cucGFyZW50IHx8IG51bGw7IC8vIGVtcHR5IHBhcmVudCBzaG91bGQgYmUgY29lcmNlZCB0byBcIm51bGxcIiBkbyBub3QgZ2V0IGludG8gaW5maW5pdGUgbG9vcFxuICAgIHdoaWxlIChwYXJlbnQgJiYgcGFyZW50ICE9PSB1bnRpbFBhcmVudCkge1xuICAgICAgICBwYXJlbnRzLnB1c2gocGFyZW50KTtcbiAgICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudCB8fCBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gcGFyZW50cztcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGFTdHJlYW08VD4oc291cmNlOiBGZHBUYWJsZURhdGFTb3VyY2U8VD4pOiBUYWJsZURhdGFTb3VyY2U8VD4gfCB1bmRlZmluZWQge1xuICAgIGlmIChpc0RhdGFTb3VyY2Uoc291cmNlKSkge1xuICAgICAgICByZXR1cm4gc291cmNlIGFzIFRhYmxlRGF0YVNvdXJjZTxUPjtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2UpKSB7XG4gICAgICAgIHJldHVybiBuZXcgQXJyYXlUYWJsZURhdGFTb3VyY2Uoc291cmNlKTtcbiAgICB9XG5cbiAgICBpZiAoaXNPYnNlcnZhYmxlKHNvdXJjZSkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlVGFibGVEYXRhU291cmNlKHNvdXJjZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbi8qKlxuICogQGhpZGRlblxuICogQ3JlYXRlcyBhbiBlbXB0eSBjb2x1bW4gc2tlbGV0b24gb2JqZWN0LlxuICogQHJldHVybnMgQ29sdW1uIG1vZGVsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGROZXdSb3dTa2VsZXRvbjxUPihlZGl0YWJsZVJvd1NrZWxldG9uOiBULCBjb2x1bW5zOiBUYWJsZUNvbHVtbltdKTogVCB7XG4gICAgaWYgKGVkaXRhYmxlUm93U2tlbGV0b24pIHtcbiAgICAgICAgcmV0dXJuIGNsb25lRGVlcChlZGl0YWJsZVJvd1NrZWxldG9uKTtcbiAgICB9XG5cbiAgICBsZXQgbmV3Um93ID0ge307XG4gICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgbmV3Um93ID0gc2V0KG5ld1JvdywgY29sdW1uLmtleSwgdW5kZWZpbmVkKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBuZXdSb3cgYXMgVDtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0dyb3VwUm93KHJvdzogVGFibGVSb3cpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcm93LnR5cGUgPT09IFRhYmxlUm93VHlwZS5HUk9VUDtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzb3J0VHJlZUxpa2VHcm91cGVkUm93cyhcbiAgICBncm91cGVkUm93czogVHJlZUxpa2U8VGFibGVSb3c+W10sXG4gICAgZ3JvdXBSdWxlc01hcDogTWFwPHN0cmluZywgQ29sbGVjdGlvbkdyb3VwPlxuKTogVHJlZUxpa2U8VGFibGVSb3c+W10ge1xuICAgIGlmICghZ3JvdXBlZFJvd3NbMF0gfHwgIWlzR3JvdXBSb3coZ3JvdXBlZFJvd3NbMF0pKSB7XG4gICAgICAgIHJldHVybiBncm91cGVkUm93cztcbiAgICB9XG5cbiAgICBjb25zdCB0cmVlTGlrZVJvd3MgPSBncm91cGVkUm93cyBhcyBUcmVlTGlrZTxUYWJsZVJvdzxHcm91cFRhYmxlUm93VmFsdWVUeXBlPj5bXTtcbiAgICBjb25zdCBmaXJzdFJvdyA9IHRyZWVMaWtlUm93c1swXTtcblxuICAgIHRyZWVMaWtlUm93cy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICBpZiAoZ3JvdXAuX2NoaWxkcmVuKSB7XG4gICAgICAgICAgICBncm91cC5fY2hpbGRyZW4gPSBzb3J0VHJlZUxpa2VHcm91cGVkUm93cyhncm91cC5fY2hpbGRyZW4sIGdyb3VwUnVsZXNNYXApO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBncm91cFJ1bGUgPSBncm91cFJ1bGVzTWFwLmdldChmaXJzdFJvdy52YWx1ZS5maWVsZCk7XG5cbiAgICBpZiAoIWdyb3VwUnVsZSB8fCBncm91cFJ1bGUuZGlyZWN0aW9uID09PSBTb3J0RGlyZWN0aW9uLk5PTkUpIHtcbiAgICAgICAgcmV0dXJuIHRyZWVMaWtlUm93cztcbiAgICB9XG5cbiAgICBjb25zdCBkaXJlY3Rpb24gPSBncm91cFJ1bGUuZGlyZWN0aW9uO1xuICAgIGNvbnN0IGRpcmVjdGlvbk11bHRpcGxpZXIgPSBkaXJlY3Rpb24gPT09IFNvcnREaXJlY3Rpb24uQVNDID8gMSA6IGRpcmVjdGlvbiA9PT0gU29ydERpcmVjdGlvbi5ERVNDID8gLTEgOiAwO1xuXG4gICAgcmV0dXJuIHRyZWVMaWtlUm93cy5zbGljZSgpLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYVZhbHVlID0gYS52YWx1ZS52YWx1ZSBhcyBhbnk7XG4gICAgICAgIGNvbnN0IGJWYWx1ZSA9IGIudmFsdWUudmFsdWUgYXMgYW55O1xuXG4gICAgICAgIGNvbnN0IGFOdW1iZXIgPSBOdW1iZXIucGFyc2VGbG9hdChhVmFsdWUpO1xuICAgICAgICBjb25zdCBiTnVtYmVyID0gTnVtYmVyLnBhcnNlRmxvYXQoYlZhbHVlKTtcbiAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4oYU51bWJlcikgJiYgIU51bWJlci5pc05hTihiTnVtYmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuIChhTnVtYmVyIC0gYk51bWJlcikgKiBkaXJlY3Rpb25NdWx0aXBsaWVyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChhVmFsdWUgPiBiVmFsdWUgPyAxIDogLTEpICogZGlyZWN0aW9uTXVsdGlwbGllcjtcbiAgICB9KTtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VHJlZUxpa2VUb0ZsYXRMaXN0PEs+KHRyZWVMaWtlTGlzdDogVHJlZUxpa2U8Sz5bXSk6IEtbXSB7XG4gICAgbGV0IGZsYXRMaXN0OiBLW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0cmVlTGlrZUxpc3QpIHtcbiAgICAgICAgZmxhdExpc3QucHVzaChpdGVtKTtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtLl9jaGlsZHJlbikpIHtcbiAgICAgICAgICAgIGZsYXRMaXN0ID0gZmxhdExpc3QuY29uY2F0KGNvbnZlcnRUcmVlTGlrZVRvRmxhdExpc3QoaXRlbS5fY2hpbGRyZW4pKTtcbiAgICAgICAgICAgIGRlbGV0ZSBpdGVtLl9jaGlsZHJlbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmbGF0TGlzdDtcbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBHcm91cCB0YWJsZSByb3dzIGFuZCByZXR1cm4gdHJlZSBsaWtlIHJvd3MgbGlzdC5cbiAqIEl0J3MgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIHJlY3Vyc2l2ZWx5LlxuICogQHBhcmFtIHJ1bGVzIGdyb3VwIHJ1bGVzIHRvIGdyb3VwIGJ5XG4gKiBAcGFyYW0gcm93cyBzb3VyY2UgdGFibGUgcm93c1xuICogQHBhcmFtIHBhcmVudCByb3cgcGFyZW50XG4gKiBAcGFyYW0gbGV2ZWwgbGV2ZWwgb2YgbmVzdGluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3JvdXBlZFRhYmxlUm93c1RyZWUoXG4gICAgcnVsZXM6IENvbGxlY3Rpb25Hcm91cFtdLFxuICAgIHJvd3M6IFRhYmxlUm93W10sXG4gICAgcGFyZW50OiBUYWJsZVJvdyB8IG51bGwgPSBudWxsLFxuICAgIGxldmVsID0gMFxuKTogVHJlZUxpa2U8VGFibGVSb3c+W10ge1xuICAgIHJ1bGVzID0gWy4uLnJ1bGVzXTtcblxuICAgIGlmICghcnVsZXMubGVuZ3RoKSB7XG4gICAgICAgIC8vIG5vIHJ1bGVzIG1lYW4gdGhhdCBpdCdzIHRoZSBsZXZlbCBvZiBzb3VyY2UgaXRlbXNcbiAgICAgICAgcmV0dXJuIHJvd3MubWFwKChyb3cpID0+IHtcbiAgICAgICAgICAgIHJvdy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgICAgICByb3cubGV2ZWwgPSBsZXZlbDtcbiAgICAgICAgICAgIHJvdy5oaWRkZW4gPSAhIXBhcmVudCAmJiAhcGFyZW50LmV4cGFuZGVkO1xuICAgICAgICAgICAgcmV0dXJuIHJvdztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gUmV0cmlldmUgZmlyc3QgZ3JvdXAgcnVsZVxuICAgIGNvbnN0IHJ1bGUgPSBydWxlcy5zaGlmdCgpITtcblxuICAgIC8vIEJ1aWxkIG1hcCBvZiB1bmlxdWUgdmFsdWVzIGZvciBhIGdpdmVuIGdyb3VwIHJ1bGVcbiAgICBjb25zdCB2YWx1ZXNIYXNoID0gcm93c1xuICAgICAgICAuZmlsdGVyKChyKSA9PiByLnN0YXRlICE9PSAnZWRpdGFibGUnKVxuICAgICAgICAucmVkdWNlKChoYXNoLCByb3cpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1vZGVsVmFsdWUgPSBnZXQocm93LnZhbHVlLCBydWxlLmZpZWxkKTtcblxuICAgICAgICAgICAgaWYgKCFoYXNoLmhhcyhtb2RlbFZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGhhc2guc2V0KG1vZGVsVmFsdWUsIFtdKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaGFzaC5nZXQobW9kZWxWYWx1ZSk/LnB1c2gocm93KTtcblxuICAgICAgICAgICAgcmV0dXJuIGhhc2g7XG4gICAgICAgIH0sIG5ldyBNYXA8dW5rbm93biwgVGFibGVSb3dbXT4oKSk7XG5cbiAgICAvLyBCdWlsZCB0YWJsZSByb3dzIHRyZWVcbiAgICBsZXQgZ3JvdXBlZFRhYmxlUm93czogVHJlZUxpa2U8VGFibGVSb3c+W10gPSBbXTtcblxuICAgIGlmIChyb3dzLnNvbWUoKHIpID0+IHIuc3RhdGUgPT09ICdlZGl0YWJsZScpKSB7XG4gICAgICAgIGdyb3VwZWRUYWJsZVJvd3MgPSByb3dzXG4gICAgICAgICAgICAuZmlsdGVyKChyKSA9PiByLnN0YXRlID09PSAnZWRpdGFibGUnKVxuICAgICAgICAgICAgLm1hcCgocm93KSA9PiB7XG4gICAgICAgICAgICAgICAgcm93LnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgICAgICAgICByb3cubGV2ZWwgPSAtMTtcbiAgICAgICAgICAgICAgICByb3cuaGlkZGVuID0gISFwYXJlbnQgJiYgIXBhcmVudC5leHBhbmRlZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm93O1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbdmFsdWUsIHZhbHVlc10gb2YgQXJyYXkuZnJvbSh2YWx1ZXNIYXNoKSkge1xuICAgICAgICBjb25zdCBmaWx0ZXJlZFJvd3MgPSByb3dzLmZpbHRlcigoX2l0ZW0pID0+IHZhbHVlcy5pbmNsdWRlcyhfaXRlbSkpO1xuXG4gICAgICAgIGlmIChmaWx0ZXJlZFJvd3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGdyb3VwVGFibGVSb3c6IFRyZWVMaWtlPFRhYmxlUm93PEdyb3VwVGFibGVSb3dWYWx1ZVR5cGU+PiA9IG5ld1RhYmxlUm93PEdyb3VwVGFibGVSb3dWYWx1ZVR5cGU+KHtcbiAgICAgICAgICAgIHR5cGU6IFRhYmxlUm93VHlwZS5HUk9VUCxcbiAgICAgICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICAgICAgaW5kZXg6IDAsXG4gICAgICAgICAgICB2YWx1ZTogeyBmaWVsZDogcnVsZS5maWVsZCwgdmFsdWUsIGNvdW50OiAwIH0sXG4gICAgICAgICAgICBwYXJlbnQsXG4gICAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICAgIGV4cGFuZGFibGU6IHRydWUsXG4gICAgICAgICAgICBleHBhbmRlZDogdHJ1ZSxcbiAgICAgICAgICAgIGhpZGRlbjogISFwYXJlbnQgJiYgIXBhcmVudC5leHBhbmRlZFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBBZHMgZ3JvdXAncyBjaGlsZHJlbiByb3dzXG4gICAgICAgIGdyb3VwVGFibGVSb3cuX2NoaWxkcmVuID0gY3JlYXRlR3JvdXBlZFRhYmxlUm93c1RyZWUocnVsZXMsIGZpbHRlcmVkUm93cywgZ3JvdXBUYWJsZVJvdywgbGV2ZWwgKyAxKTtcblxuICAgICAgICBncm91cFRhYmxlUm93LnZhbHVlLmNvdW50ID0gZ3JvdXBUYWJsZVJvdy5fY2hpbGRyZW4/Lmxlbmd0aDtcblxuICAgICAgICBncm91cGVkVGFibGVSb3dzLnB1c2goZ3JvdXBUYWJsZVJvdyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdyb3VwZWRUYWJsZVJvd3M7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydE9iamVjdHNUb1RhYmxlUm93czxUPihcbiAgICBzb3VyY2U6IFRbXSxcbiAgICBhZGRlZEl0ZW1zOiBUW10sXG4gICAgc2VsZWN0ZWRLZXk6IHN0cmluZyxcbiAgICByb3dOYXZpZ2F0YWJsZTogYm9vbGVhbiB8IHN0cmluZyxcbiAgICBzZWxlY3Rpb25Nb2RlOiBTZWxlY3Rpb25Nb2RlVmFsdWUsXG4gICAgcm93czogVGFibGVSb3dbXSxcbiAgICByb3dDb21wYXJhdG9yOiBSb3dDb21wYXJhdG9yXG4pOiBUYWJsZVJvdzxUPltdIHtcbiAgICBjb25zdCByb3dJdGVtID0gc291cmNlWzBdIGFzIGFueTtcblxuICAgIGlmIChpc1RhYmxlUm93KHJvd0l0ZW0pKSB7XG4gICAgICAgIHJldHVybiBzb3VyY2UgYXMgVGFibGVSb3dbXTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3RlZFJvd3NNYXAgPSBnZXRTZWxlY3Rpb25TdGF0dXNCeVJvd1ZhbHVlKHNvdXJjZSwgc2VsZWN0aW9uTW9kZSwgcm93cywgcm93Q29tcGFyYXRvcik7XG4gICAgcmV0dXJuIHNvdXJjZS5tYXAoKGl0ZW06IFQsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgY29uc3QgaXNOZXdJdGVtID0gYWRkZWRJdGVtcy5pbmNsdWRlcyhpdGVtKTtcbiAgICAgICAgY29uc3Qgcm93ID0gbmV3VGFibGVSb3coe1xuICAgICAgICAgICAgdHlwZTogVGFibGVSb3dUeXBlLklURU0sXG4gICAgICAgICAgICBjaGVja2VkOiBpdGVtW3NlbGVjdGVkS2V5XSA/PyAhIXNlbGVjdGVkUm93c01hcC5nZXQoaXRlbSksXG4gICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgIHZhbHVlOiBpdGVtXG4gICAgICAgIH0pO1xuICAgICAgICByb3cubmF2aWdhdGFibGUgPSBpc1Jvd05hdmlnYXRhYmxlKGl0ZW0sIHJvd05hdmlnYXRhYmxlKTtcbiAgICAgICAgcm93LnN0YXRlID0gaXNOZXdJdGVtID8gJ2VkaXRhYmxlJyA6ICdyZWFkb25seSc7XG4gICAgICAgIHJldHVybiByb3c7XG4gICAgfSk7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNUcmVlUm93Rmlyc3RDZWxsKGNlbGxJbmRleDogbnVtYmVyLCByb3c6IFRhYmxlUm93LCBldmVudD86IEV2ZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChjZWxsSW5kZXggPT09IDAgJiYgaXNUcmVlUm93KHJvdykpIHx8ICghIWV2ZW50ICYmICFyb3cuaXNUcmVlKTtcbn1cbiJdfQ==","export class TableColumnFreezeEvent {\n /**\n * Table column freeze event\n * @param source Table component\n * @param current Current freezeTo column\n * @param previous Previous freezeTo column\n */\n constructor(source, current, previous) {\n this.source = source;\n this.current = current;\n this.previous = previous;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWZyZWV6ZS1ldmVudC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9tb2RlbHMvY29sdW1uLWZyZWV6ZS1ldmVudC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFjQSxNQUFNLE9BQU8sc0JBQXNCO0lBQy9COzs7OztPQUtHO0lBQ0gsWUFDVyxNQUFhLEVBQ2IsT0FBc0IsRUFDdEIsUUFBdUI7UUFGdkIsV0FBTSxHQUFOLE1BQU0sQ0FBTztRQUNiLFlBQU8sR0FBUCxPQUFPLENBQWU7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBZTtJQUMvQixDQUFDO0NBQ1AiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYWJsZSB9IGZyb20gJy4uL3RhYmxlJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vdGFibGUtY29sdW1uJztcblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUNvbHVtbkZyZWV6ZUludGVybmFsRXZlbnQge1xuICAgIG5hbWU6IFRhYmxlQ29sdW1uWyduYW1lJ107XG4gICAgZW5kRnJlZXphYmxlOiBUYWJsZUNvbHVtblsnZW5kRnJlZXphYmxlJ107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnJlZXplQ2hhbmdlIHtcbiAgICBjdXJyZW50OiBzdHJpbmcgfCBudWxsO1xuICAgIHByZXZpb3VzOiBzdHJpbmcgfCBudWxsO1xuICAgIGVuZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZUNvbHVtbkZyZWV6ZUV2ZW50IHtcbiAgICAvKipcbiAgICAgKiBUYWJsZSBjb2x1bW4gZnJlZXplIGV2ZW50XG4gICAgICogQHBhcmFtIHNvdXJjZSBUYWJsZSBjb21wb25lbnRcbiAgICAgKiBAcGFyYW0gY3VycmVudCBDdXJyZW50IGZyZWV6ZVRvIGNvbHVtblxuICAgICAqIEBwYXJhbSBwcmV2aW91cyBQcmV2aW91cyBmcmVlemVUbyBjb2x1bW5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHNvdXJjZTogVGFibGUsXG4gICAgICAgIHB1YmxpYyBjdXJyZW50OiBzdHJpbmcgfCBudWxsLFxuICAgICAgICBwdWJsaWMgcHJldmlvdXM6IHN0cmluZyB8IG51bGxcbiAgICApIHt9XG59XG4iXX0=","export class ColumnsChange {\n /**\n * Columns change event\n * @param current Current columns\n * @param previous Previous columns\n */\n constructor(current, previous) {\n this.current = current;\n this.previous = previous;\n }\n}\nexport class TableColumnsChangeEvent extends ColumnsChange {\n /**\n * Table columns change event\n * @param source Table component\n * @param current Current columns\n * @param previous Previous columns\n */\n constructor(source, current, previous) {\n super(current, previous);\n this.source = source;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1ucy1jaGFuZ2UtZXZlbnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvbW9kZWxzL2NvbHVtbnMtY2hhbmdlLWV2ZW50Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxhQUFhO0lBQ3RCOzs7O09BSUc7SUFDSCxZQUNXLE9BQWlCLEVBQ2pCLFFBQWtCO1FBRGxCLFlBQU8sR0FBUCxPQUFPLENBQVU7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUMxQixDQUFDO0NBQ1A7QUFFRCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsYUFBYTtJQUN0RDs7Ozs7T0FLRztJQUNILFlBQ1csTUFBYSxFQUNwQixPQUFpQixFQUNqQixRQUFrQjtRQUVsQixLQUFLLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBSmxCLFdBQU0sR0FBTixNQUFNLENBQU87SUFLeEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGFibGUgfSBmcm9tICcuLi90YWJsZSc7XG5cbmV4cG9ydCBjbGFzcyBDb2x1bW5zQ2hhbmdlIHtcbiAgICAvKipcbiAgICAgKiBDb2x1bW5zIGNoYW5nZSBldmVudFxuICAgICAqIEBwYXJhbSBjdXJyZW50IEN1cnJlbnQgY29sdW1uc1xuICAgICAqIEBwYXJhbSBwcmV2aW91cyBQcmV2aW91cyBjb2x1bW5zXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBjdXJyZW50OiBzdHJpbmdbXSxcbiAgICAgICAgcHVibGljIHByZXZpb3VzOiBzdHJpbmdbXVxuICAgICkge31cbn1cblxuZXhwb3J0IGNsYXNzIFRhYmxlQ29sdW1uc0NoYW5nZUV2ZW50IGV4dGVuZHMgQ29sdW1uc0NoYW5nZSB7XG4gICAgLyoqXG4gICAgICogVGFibGUgY29sdW1ucyBjaGFuZ2UgZXZlbnRcbiAgICAgKiBAcGFyYW0gc291cmNlIFRhYmxlIGNvbXBvbmVudFxuICAgICAqIEBwYXJhbSBjdXJyZW50IEN1cnJlbnQgY29sdW1uc1xuICAgICAqIEBwYXJhbSBwcmV2aW91cyBQcmV2aW91cyBjb2x1bW5zXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBzb3VyY2U6IFRhYmxlLFxuICAgICAgICBjdXJyZW50OiBzdHJpbmdbXSxcbiAgICAgICAgcHJldmlvdXM6IHN0cmluZ1tdXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGN1cnJlbnQsIHByZXZpb3VzKTtcbiAgICB9XG59XG4iXX0=","export class TableDraggable {\n}\nexport class TableInitialState {\n}\nexport class TableVirtualScroll {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9tb2RlbHMvZGlyZWN0aXZlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxNQUFNLE9BQWdCLGNBQWM7Q0FhbkM7QUFFRCxNQUFNLE9BQWdCLGlCQUFpQjtDQVN0QztBQUVELE1BQU0sT0FBZ0Isa0JBQWtCO0NBU3ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEcmFnb3ZlclByZWRpY2F0ZSwgRHJvcFByZWRpY2F0ZSwgRmREbmREcm9wVHlwZSwgRmREcm9wRXZlbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uRmlsdGVyLCBDb2xsZWN0aW9uR3JvdXAsIENvbGxlY3Rpb25Tb3J0LCBUYWJsZVN0YXRlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJy4uL3RhYmxlJztcbmltcG9ydCB7IFRhYmxlUm93IH0gZnJvbSAnLi90YWJsZS1yb3cubW9kZWwnO1xuaW1wb3J0IHsgVGFibGVSb3dzUmVhcnJhbmdlRXZlbnQgfSBmcm9tICcuL3RhYmxlLXJvd3MtcmVhcnJhbmdlLWV2ZW50Lm1vZGVsJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRhYmxlRHJhZ2dhYmxlPFQgPSBhbnk+IHtcbiAgICBhYnN0cmFjdCBkcmFnRHJvcEluUHJvZ3Jlc3M6IGJvb2xlYW47XG4gICAgYWJzdHJhY3QgZW5hYmxlUm93UmVvcmRlcmluZzogYm9vbGVhbjtcbiAgICBhYnN0cmFjdCBpc1RyZWVUYWJsZTogYm9vbGVhbjtcbiAgICBhYnN0cmFjdCBkcm9wTW9kZTogRmREbmREcm9wVHlwZTtcbiAgICBhYnN0cmFjdCBkcm9wUHJlZGljYXRlOiBEcm9wUHJlZGljYXRlPFRhYmxlUm93PFQ+PjtcbiAgICBhYnN0cmFjdCBkcmFnb3ZlclByZWRpY2F0ZTogRHJhZ292ZXJQcmVkaWNhdGU8VGFibGVSb3c8VD4+O1xuICAgIGFic3RyYWN0IHJvd3NSZWFycmFuZ2U6IEV2ZW50RW1pdHRlcjxUYWJsZVJvd3NSZWFycmFuZ2VFdmVudDxUPj47XG4gICAgYWJzdHJhY3QgZHJhZ1Jvd0Zyb21LZXlib2FyZChkaXI6IHN0cmluZywgZXZlbnQ6IEV2ZW50LCBjdXJyZW50Um93SW5kZXg6IG51bWJlciwgbW9kZTogJ3NoaWZ0JyB8ICdncm91cCcpOiB2b2lkO1xuICAgIGFic3RyYWN0IGRyYWdEcm9wSXRlbURyb3AoZXZlbnQ6IEZkRHJvcEV2ZW50PFRhYmxlUm93Pik6IHZvaWQ7XG4gICAgYWJzdHJhY3QgZHJhZ0Ryb3BTdGFydCgpOiB2b2lkO1xuICAgIGFic3RyYWN0IHNldFRhYmxlKHRhYmxlOiBUYWJsZSk6IHZvaWQ7XG4gICAgYWJzdHJhY3QgZHJvcENhbmNlbGxlZCgpOiB2b2lkO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGFibGVJbml0aWFsU3RhdGUge1xuICAgIGFic3RyYWN0IGluaXRpYWxTb3J0Qnk6IENvbGxlY3Rpb25Tb3J0W107XG4gICAgYWJzdHJhY3QgaW5pdGlhbFZpc2libGVDb2x1bW5zOiBzdHJpbmdbXTtcbiAgICBhYnN0cmFjdCBpbml0aWFsRmlsdGVyQnk6IENvbGxlY3Rpb25GaWx0ZXJbXTtcbiAgICBhYnN0cmFjdCBpbml0aWFsR3JvdXBCeTogQ29sbGVjdGlvbkdyb3VwW107XG4gICAgYWJzdHJhY3QgaW5pdGlhbFBhZ2U6IG51bWJlcjtcbiAgICBhYnN0cmFjdCBzdGF0ZTogVGFibGVTdGF0ZTtcbiAgICBhYnN0cmFjdCBzZXRUYWJsZSh0YWJsZTogVGFibGUpOiB2b2lkO1xuICAgIGFic3RyYWN0IHNldEluaXRpYWxTdGF0ZSgpOiB2b2lkO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGFibGVWaXJ0dWFsU2Nyb2xsIHtcbiAgICBhYnN0cmFjdCByb3dIZWlnaHQ6IG51bWJlcjtcbiAgICBhYnN0cmFjdCBzZWNvbmRhcnlSb3dIZWlnaHQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBhYnN0cmFjdCB2aXJ0dWFsU2Nyb2xsVHJhbnNmb3JtJDogT2JzZXJ2YWJsZTxudW1iZXI+O1xuICAgIGFic3RyYWN0IHZpcnR1YWxTY3JvbGw6IGJvb2xlYW47XG4gICAgYWJzdHJhY3QgdmlydHVhbFNjcm9sbFRvdGFsSGVpZ2h0OiBudW1iZXI7XG4gICAgYWJzdHJhY3Qgc2V0VGFibGUodGFibGU6IFRhYmxlKTogdm9pZDtcbiAgICBhYnN0cmFjdCBsaXN0ZW5PblZpcnR1YWxTY3JvbGwoKTogdm9pZDtcbiAgICBhYnN0cmFjdCBjYWxjdWxhdGVWaXJ0dWFsU2Nyb2xsUm93cygpOiB2b2lkO1xufVxuIl19","export class TableFilterChangeEvent {\n /**\n * Table filter change event\n * @param source Table component\n * @param current Current filters\n * @param previous Previous filters\n */\n constructor(source, current, previous) {\n this.source = source;\n this.current = current;\n this.previous = previous;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWNoYW5nZS1ldmVudC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9tb2RlbHMvZmlsdGVyLWNoYW5nZS1ldmVudC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxNQUFNLE9BQU8sc0JBQXNCO0lBQy9COzs7OztPQUtHO0lBQ0gsWUFDVyxNQUFhLEVBQ2IsT0FBMkIsRUFDM0IsUUFBNEI7UUFGNUIsV0FBTSxHQUFOLE1BQU0sQ0FBTztRQUNiLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBQzNCLGFBQVEsR0FBUixRQUFRLENBQW9CO0lBQ3BDLENBQUM7Q0FDUCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbGxlY3Rpb25GaWx0ZXIgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSAnLi4vdGFibGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlckNoYW5nZSB7XG4gICAgY3VycmVudDogQ29sbGVjdGlvbkZpbHRlcltdO1xuICAgIHByZXZpb3VzOiBDb2xsZWN0aW9uRmlsdGVyW107XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZUZpbHRlckNoYW5nZUV2ZW50IHtcbiAgICAvKipcbiAgICAgKiBUYWJsZSBmaWx0ZXIgY2hhbmdlIGV2ZW50XG4gICAgICogQHBhcmFtIHNvdXJjZSBUYWJsZSBjb21wb25lbnRcbiAgICAgKiBAcGFyYW0gY3VycmVudCBDdXJyZW50IGZpbHRlcnNcbiAgICAgKiBAcGFyYW0gcHJldmlvdXMgUHJldmlvdXMgZmlsdGVyc1xuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgc291cmNlOiBUYWJsZSxcbiAgICAgICAgcHVibGljIGN1cnJlbnQ6IENvbGxlY3Rpb25GaWx0ZXJbXSxcbiAgICAgICAgcHVibGljIHByZXZpb3VzOiBDb2xsZWN0aW9uRmlsdGVyW11cbiAgICApIHt9XG59XG4iXX0=","export class TableGroupChangeEvent {\n /**\n * Table group change event\n * @param source Table component\n * @param current Current groups\n * @param previous Previous groups\n */\n constructor(source, current, previous) {\n this.source = source;\n this.current = current;\n this.previous = previous;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtY2hhbmdlLWV2ZW50Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzL21vZGVscy9ncm91cC1jaGFuZ2UtZXZlbnQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsTUFBTSxPQUFPLHFCQUFxQjtJQUM5Qjs7Ozs7T0FLRztJQUNILFlBQ1csTUFBYSxFQUNiLE9BQTBCLEVBQzFCLFFBQTJCO1FBRjNCLFdBQU0sR0FBTixNQUFNLENBQU87UUFDYixZQUFPLEdBQVAsT0FBTyxDQUFtQjtRQUMxQixhQUFRLEdBQVIsUUFBUSxDQUFtQjtJQUNuQyxDQUFDO0NBQ1AiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xsZWN0aW9uR3JvdXAgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSAnLi4vdGFibGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdyb3VwQ2hhbmdlIHtcbiAgICBjdXJyZW50OiBDb2xsZWN0aW9uR3JvdXBbXTtcbiAgICBwcmV2aW91czogQ29sbGVjdGlvbkdyb3VwW107XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZUdyb3VwQ2hhbmdlRXZlbnQge1xuICAgIC8qKlxuICAgICAqIFRhYmxlIGdyb3VwIGNoYW5nZSBldmVudFxuICAgICAqIEBwYXJhbSBzb3VyY2UgVGFibGUgY29tcG9uZW50XG4gICAgICogQHBhcmFtIGN1cnJlbnQgQ3VycmVudCBncm91cHNcbiAgICAgKiBAcGFyYW0gcHJldmlvdXMgUHJldmlvdXMgZ3JvdXBzXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBzb3VyY2U6IFRhYmxlLFxuICAgICAgICBwdWJsaWMgY3VycmVudDogQ29sbGVjdGlvbkdyb3VwW10sXG4gICAgICAgIHB1YmxpYyBwcmV2aW91czogQ29sbGVjdGlvbkdyb3VwW11cbiAgICApIHt9XG59XG4iXX0=","export class PageChange {\n /**\n * Page change event\n * @param current Current page\n * @param previous Previous page\n */\n constructor(current, previous) {\n this.current = current;\n this.previous = previous;\n }\n}\nexport class TablePageChangeEvent extends PageChange {\n /**\n * Table page change event\n * @param source Table component\n * @param current Current page\n * @param previous Previous page\n */\n constructor(source, current, previous) {\n super(current, previous);\n this.source = source;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1jaGFuZ2UtZXZlbnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvbW9kZWxzL3BhZ2UtY2hhbmdlLWV2ZW50Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxVQUFVO0lBQ25COzs7O09BSUc7SUFDSCxZQUNXLE9BQXVCLEVBQ3ZCLFFBQXdCO1FBRHhCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLGFBQVEsR0FBUixRQUFRLENBQWdCO0lBQ2hDLENBQUM7Q0FDUDtBQUVELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxVQUFVO0lBQ2hEOzs7OztPQUtHO0lBQ0gsWUFDVyxNQUFhLEVBQ3BCLE9BQXVCLEVBQ3ZCLFFBQXdCO1FBRXhCLEtBQUssQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFKbEIsV0FBTSxHQUFOLE1BQU0sQ0FBTztJQUt4QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xsZWN0aW9uUGFnZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tICcuLi90YWJsZSc7XG5cbmV4cG9ydCBjbGFzcyBQYWdlQ2hhbmdlIHtcbiAgICAvKipcbiAgICAgKiBQYWdlIGNoYW5nZSBldmVudFxuICAgICAqIEBwYXJhbSBjdXJyZW50IEN1cnJlbnQgcGFnZVxuICAgICAqIEBwYXJhbSBwcmV2aW91cyBQcmV2aW91cyBwYWdlXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBjdXJyZW50OiBDb2xsZWN0aW9uUGFnZSxcbiAgICAgICAgcHVibGljIHByZXZpb3VzOiBDb2xsZWN0aW9uUGFnZVxuICAgICkge31cbn1cblxuZXhwb3J0IGNsYXNzIFRhYmxlUGFnZUNoYW5nZUV2ZW50IGV4dGVuZHMgUGFnZUNoYW5nZSB7XG4gICAgLyoqXG4gICAgICogVGFibGUgcGFnZSBjaGFuZ2UgZXZlbnRcbiAgICAgKiBAcGFyYW0gc291cmNlIFRhYmxlIGNvbXBvbmVudFxuICAgICAqIEBwYXJhbSBjdXJyZW50IEN1cnJlbnQgcGFnZVxuICAgICAqIEBwYXJhbSBwcmV2aW91cyBQcmV2aW91cyBwYWdlXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBzb3VyY2U6IFRhYmxlLFxuICAgICAgICBjdXJyZW50OiBDb2xsZWN0aW9uUGFnZSxcbiAgICAgICAgcHJldmlvdXM6IENvbGxlY3Rpb25QYWdlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGN1cnJlbnQsIHByZXZpb3VzKTtcbiAgICB9XG59XG4iXX0=","export class SaveRowsEvent {\n /**\n * Table save rows event\n * @param done Callback function. Call it when newly added items has been saved and new data source fetch is needed.\n * @param items Array of newly created items.\n */\n constructor(done, items) {\n this.done = done;\n this.items = items;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZS1yb3dzLWV2ZW50LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9tb2RlbHMvc2F2ZS1yb3dzLWV2ZW50LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sYUFBYTtJQUN0Qjs7OztPQUlHO0lBQ0gsWUFDVyxJQUFnQixFQUNoQixLQUFVO1FBRFYsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixVQUFLLEdBQUwsS0FBSyxDQUFLO0lBQ2xCLENBQUM7Q0FDUCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBTYXZlUm93c0V2ZW50PFQ+IHtcbiAgICAvKipcbiAgICAgKiBUYWJsZSBzYXZlIHJvd3MgZXZlbnRcbiAgICAgKiBAcGFyYW0gZG9uZSBDYWxsYmFjayBmdW5jdGlvbi4gQ2FsbCBpdCB3aGVuIG5ld2x5IGFkZGVkIGl0ZW1zIGhhcyBiZWVuIHNhdmVkIGFuZCBuZXcgZGF0YSBzb3VyY2UgZmV0Y2ggaXMgbmVlZGVkLlxuICAgICAqIEBwYXJhbSBpdGVtcyBBcnJheSBvZiBuZXdseSBjcmVhdGVkIGl0ZW1zLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZG9uZTogKCkgPT4gdm9pZCxcbiAgICAgICAgcHVibGljIGl0ZW1zOiBUW11cbiAgICApIHt9XG59XG4iXX0=","export class TableSearchChangeEvent {\n /**\n * Table search change event\n * @param source Table component\n * @param current Current search (fields, directions)\n * @param previous Previous search (fields, directions)\n */\n constructor(source, current, previous) {\n this.source = source;\n this.current = current;\n this.previous = previous;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWNoYW5nZS1ldmVudC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9tb2RlbHMvc2VhcmNoLWNoYW5nZS1ldmVudC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxNQUFNLE9BQU8sc0JBQXNCO0lBQy9COzs7OztPQUtHO0lBQ0gsWUFDVyxNQUFhLEVBQ2IsT0FBb0IsRUFDcEIsUUFBcUI7UUFGckIsV0FBTSxHQUFOLE1BQU0sQ0FBTztRQUNiLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFDcEIsYUFBUSxHQUFSLFFBQVEsQ0FBYTtJQUM3QixDQUFDO0NBQ1AiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWFyY2hJbnB1dCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2VhcmNoLWZpZWxkJztcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSAnLi4vdGFibGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaENoYW5nZSB7XG4gICAgY3VycmVudDogU2VhcmNoSW5wdXQ7XG4gICAgcHJldmlvdXM6IFNlYXJjaElucHV0O1xufVxuXG5leHBvcnQgY2xhc3MgVGFibGVTZWFyY2hDaGFuZ2VFdmVudCB7XG4gICAgLyoqXG4gICAgICogVGFibGUgc2VhcmNoIGNoYW5nZSBldmVudFxuICAgICAqIEBwYXJhbSBzb3VyY2UgVGFibGUgY29tcG9uZW50XG4gICAgICogQHBhcmFtIGN1cnJlbnQgQ3VycmVudCBzZWFyY2ggKGZpZWxkcywgZGlyZWN0aW9ucylcbiAgICAgKiBAcGFyYW0gcHJldmlvdXMgUHJldmlvdXMgc2VhcmNoIChmaWVsZHMsIGRpcmVjdGlvbnMpXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBzb3VyY2U6IFRhYmxlLFxuICAgICAgICBwdWJsaWMgY3VycmVudDogU2VhcmNoSW5wdXQsXG4gICAgICAgIHB1YmxpYyBwcmV2aW91czogU2VhcmNoSW5wdXRcbiAgICApIHt9XG59XG4iXX0=","export class TableSelectionChangeEvent {\n}\nexport class TableRowSelectionChangeEvent extends TableSelectionChangeEvent {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWNoYW5nZS1ldmVudC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9tb2RlbHMvc2VsZWN0aW9uLWNoYW5nZS1ldmVudC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8seUJBQXlCO0NBV3JDO0FBRUQsTUFBTSxPQUFPLDRCQUFnQyxTQUFRLHlCQUE0QjtDQUdoRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhYmxlIH0gZnJvbSAnLi4vdGFibGUnO1xuXG5leHBvcnQgY2xhc3MgVGFibGVTZWxlY3Rpb25DaGFuZ2VFdmVudDxUPiB7XG4gICAgLyoqIGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtcyAqL1xuICAgIHNlbGVjdGlvbjogVFtdO1xuICAgIC8qKiBJdGVtcyBhZGRlZCAqL1xuICAgIGFkZGVkOiBUW107IC8vXG4gICAgLyoqIEl0ZW1zIHJlbW92ZWQgKi9cbiAgICByZW1vdmVkOiBUW107XG4gICAgLyoqIEluZGV4ZXMgbG9jYXRpb24gb2YgYWRkaXRpb25zIG9yIHJlbW92YWxzICovXG4gICAgaW5kZXg6IG51bWJlcltdO1xuICAgIC8qKiBXaGV0aGVyIGBDaGVjay9VbmNoZWNrYCBhbGwgY2hlY2tib3ggd2FzIHByZXNzZWQuICovXG4gICAgYWxsPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFRhYmxlUm93U2VsZWN0aW9uQ2hhbmdlRXZlbnQ8VD4gZXh0ZW5kcyBUYWJsZVNlbGVjdGlvbkNoYW5nZUV2ZW50PFQ+IHtcbiAgICAvKiogVGFibGUgY29tcG9uZW50ICovXG4gICAgc291cmNlOiBUYWJsZTtcbn1cbiJdfQ==","export class TableSortChangeEvent {\n /**\n * Table sort change event\n * @param source Table component\n * @param current Current sort (fields, directions)\n * @param previous Previous sort (fields, directions)\n */\n constructor(source, current, previous) {\n this.source = source;\n this.current = current;\n this.previous = previous;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1jaGFuZ2UtZXZlbnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvbW9kZWxzL3NvcnQtY2hhbmdlLWV2ZW50Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE1BQU0sT0FBTyxvQkFBb0I7SUFDN0I7Ozs7O09BS0c7SUFDSCxZQUNXLE1BQWEsRUFDYixPQUF5QixFQUN6QixRQUEwQjtRQUYxQixXQUFNLEdBQU4sTUFBTSxDQUFPO1FBQ2IsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFDekIsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7SUFDbEMsQ0FBQztDQUNQIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sbGVjdGlvblNvcnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSAnLi4vdGFibGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNvcnRDaGFuZ2Uge1xuICAgIGN1cnJlbnQ6IENvbGxlY3Rpb25Tb3J0W107XG4gICAgcHJldmlvdXM6IENvbGxlY3Rpb25Tb3J0W107XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZVNvcnRDaGFuZ2VFdmVudCB7XG4gICAgLyoqXG4gICAgICogVGFibGUgc29ydCBjaGFuZ2UgZXZlbnRcbiAgICAgKiBAcGFyYW0gc291cmNlIFRhYmxlIGNvbXBvbmVudFxuICAgICAqIEBwYXJhbSBjdXJyZW50IEN1cnJlbnQgc29ydCAoZmllbGRzLCBkaXJlY3Rpb25zKVxuICAgICAqIEBwYXJhbSBwcmV2aW91cyBQcmV2aW91cyBzb3J0IChmaWVsZHMsIGRpcmVjdGlvbnMpXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBzb3VyY2U6IFRhYmxlLFxuICAgICAgICBwdWJsaWMgY3VycmVudDogQ29sbGVjdGlvblNvcnRbXSxcbiAgICAgICAgcHVibGljIHByZXZpb3VzOiBDb2xsZWN0aW9uU29ydFtdXG4gICAgKSB7fVxufVxuIl19","export class TableCellActivateEvent {\n /**\n * Table cell activate event\n * @param columnIndex Index of the clicked column\n * @param row Row that was activated\n */\n constructor(columnIndex, row) {\n this.columnIndex = columnIndex;\n this.row = row;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC1hY3RpdmF0ZS1ldmVudC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9tb2RlbHMvdGFibGUtY2VsbC1hY3RpdmF0ZS1ldmVudC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sc0JBQXNCO0lBQy9COzs7O09BSUc7SUFDSCxZQUNXLFdBQW1CLEVBQ25CLEdBQU07UUFETixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUNuQixRQUFHLEdBQUgsR0FBRyxDQUFHO0lBQ2QsQ0FBQztDQUNQIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFRhYmxlQ2VsbEFjdGl2YXRlRXZlbnQ8VD4ge1xuICAgIC8qKlxuICAgICAqIFRhYmxlIGNlbGwgYWN0aXZhdGUgZXZlbnRcbiAgICAgKiBAcGFyYW0gY29sdW1uSW5kZXggSW5kZXggb2YgdGhlIGNsaWNrZWQgY29sdW1uXG4gICAgICogQHBhcmFtIHJvdyBSb3cgdGhhdCB3YXMgYWN0aXZhdGVkXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBjb2x1bW5JbmRleDogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgcm93OiBUXG4gICAgKSB7fVxufVxuIl19","/** Common properties for table dialogs */\nexport {};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGlhbG9nLWNvbW1vbi1kYXRhLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzL21vZGVscy90YWJsZS1kaWFsb2ctY29tbW9uLWRhdGEubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMENBQTBDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIENvbW1vbiBwcm9wZXJ0aWVzIGZvciB0YWJsZSBkaWFsb2dzICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVEaWFsb2dDb21tb25EYXRhIHtcbiAgICAvLyBub3RoaW5nIGhlcmUgeWV0IC0gcGxhY2Vob2xkZXIgZm9yIHRzbGludFxuICAgIF9wbGFjZWhvbGRlcj86IHVua25vd247XG59XG4iXX0=","export class TableRowActivateEvent {\n /**\n * Table row activate event\n * @param index Index of the activated row\n * @param ctrlKey Whether control/command key was pressed during the mouse/keyboard event\n * @param row Row that was activated\n */\n constructor(index, ctrlKey, row) {\n this.index = index;\n this.ctrlKey = ctrlKey;\n this.row = row;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcm93LWFjdGl2YXRlLWV2ZW50Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzL21vZGVscy90YWJsZS1yb3ctYWN0aXZhdGUtZXZlbnQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLHFCQUFxQjtJQUM5Qjs7Ozs7T0FLRztJQUNILFlBQ1csS0FBYSxFQUNiLE9BQWdCLEVBQ2hCLEdBQU07UUFGTixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixRQUFHLEdBQUgsR0FBRyxDQUFHO0lBQ2QsQ0FBQztDQUNQIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFRhYmxlUm93QWN0aXZhdGVFdmVudDxUPiB7XG4gICAgLyoqXG4gICAgICogVGFibGUgcm93IGFjdGl2YXRlIGV2ZW50XG4gICAgICogQHBhcmFtIGluZGV4IEluZGV4IG9mIHRoZSBhY3RpdmF0ZWQgcm93XG4gICAgICogQHBhcmFtIGN0cmxLZXkgV2hldGhlciBjb250cm9sL2NvbW1hbmQga2V5IHdhcyBwcmVzc2VkIGR1cmluZyB0aGUgbW91c2Uva2V5Ym9hcmQgZXZlbnRcbiAgICAgKiBAcGFyYW0gcm93IFJvdyB0aGF0IHdhcyBhY3RpdmF0ZWRcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGluZGV4OiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyBjdHJsS2V5OiBib29sZWFuLFxuICAgICAgICBwdWJsaWMgcm93OiBUXG4gICAgKSB7fVxufVxuIl19","export class TableRowToggleOpenStateEvent {\n /**\n * Table row toggle open state event\n * @param index Index of the row\n * @param row Row that was toggled\n * @param expanded Expanded state of the row\n */\n constructor(index, row, expanded) {\n this.index = index;\n this.row = row;\n this.expanded = expanded;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcm93LXRvZ2dsZS1vcGVuLXN0YXRlLWV2ZW50Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzL21vZGVscy90YWJsZS1yb3ctdG9nZ2xlLW9wZW4tc3RhdGUtZXZlbnQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLDRCQUE0QjtJQUNyQzs7Ozs7T0FLRztJQUNILFlBQ1csS0FBYSxFQUNiLEdBQU0sRUFDTixRQUFpQjtRQUZqQixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsUUFBRyxHQUFILEdBQUcsQ0FBRztRQUNOLGFBQVEsR0FBUixRQUFRLENBQVM7SUFDekIsQ0FBQztDQUNQIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFRhYmxlUm93VG9nZ2xlT3BlblN0YXRlRXZlbnQ8VD4ge1xuICAgIC8qKlxuICAgICAqIFRhYmxlIHJvdyB0b2dnbGUgb3BlbiBzdGF0ZSBldmVudFxuICAgICAqIEBwYXJhbSBpbmRleCBJbmRleCBvZiB0aGUgcm93XG4gICAgICogQHBhcmFtIHJvdyBSb3cgdGhhdCB3YXMgdG9nZ2xlZFxuICAgICAqIEBwYXJhbSBleHBhbmRlZCBFeHBhbmRlZCBzdGF0ZSBvZiB0aGUgcm93XG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBpbmRleDogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgcm93OiBULFxuICAgICAgICBwdWJsaWMgZXhwYW5kZWQ6IGJvb2xlYW5cbiAgICApIHt9XG59XG4iXX0=","export class TableRowsRearrangeEvent {\n /**\n * Table rows rearrange event\n * @param row Row that was rearranged\n * @param dropRow Row where the dragged item has been dropped\n * @param previousIndex Previous index of the row\n * @param newIndex New index of the row\n * @param insertAt Whether dragged the row was inserted before or after the dropped row\n * @param mode Whether the dropped element shifts other items or is grouped with them\n * @param rows All rows of the table in the state they exist on the datasource\n */\n constructor(row, dropRow, previousIndex, newIndex, insertAt, mode, rows) {\n this.row = row;\n this.dropRow = dropRow;\n this.previousIndex = previousIndex;\n this.newIndex = newIndex;\n this.insertAt = insertAt;\n this.mode = mode;\n this.rows = rows;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcm93cy1yZWFycmFuZ2UtZXZlbnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvbW9kZWxzL3RhYmxlLXJvd3MtcmVhcnJhbmdlLWV2ZW50Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyx1QkFBdUI7SUFDaEM7Ozs7Ozs7OztPQVNHO0lBQ0gsWUFDVyxHQUFNLEVBQ04sT0FBVSxFQUNWLGFBQXFCLEVBQ3JCLFFBQWdCLEVBQ2hCLFFBQW1DLEVBQ25DLElBQXdCLEVBQ3hCLElBQVM7UUFOVCxRQUFHLEdBQUgsR0FBRyxDQUFHO1FBQ04sWUFBTyxHQUFQLE9BQU8sQ0FBRztRQUNWLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBQ3JCLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsYUFBUSxHQUFSLFFBQVEsQ0FBMkI7UUFDbkMsU0FBSSxHQUFKLElBQUksQ0FBb0I7UUFDeEIsU0FBSSxHQUFKLElBQUksQ0FBSztJQUNqQixDQUFDO0NBQ1AiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGZERuZERyb3BFdmVudE1vZGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBUYWJsZVJvd3NSZWFycmFuZ2VFdmVudDxUPiB7XG4gICAgLyoqXG4gICAgICogVGFibGUgcm93cyByZWFycmFuZ2UgZXZlbnRcbiAgICAgKiBAcGFyYW0gcm93IFJvdyB0aGF0IHdhcyByZWFycmFuZ2VkXG4gICAgICogQHBhcmFtIGRyb3BSb3cgUm93IHdoZXJlIHRoZSBkcmFnZ2VkIGl0ZW0gaGFzIGJlZW4gZHJvcHBlZFxuICAgICAqIEBwYXJhbSBwcmV2aW91c0luZGV4IFByZXZpb3VzIGluZGV4IG9mIHRoZSByb3dcbiAgICAgKiBAcGFyYW0gbmV3SW5kZXggTmV3IGluZGV4IG9mIHRoZSByb3dcbiAgICAgKiBAcGFyYW0gaW5zZXJ0QXQgV2hldGhlciBkcmFnZ2VkIHRoZSByb3cgd2FzIGluc2VydGVkIGJlZm9yZSBvciBhZnRlciB0aGUgZHJvcHBlZCByb3dcbiAgICAgKiBAcGFyYW0gbW9kZSBXaGV0aGVyIHRoZSBkcm9wcGVkIGVsZW1lbnQgc2hpZnRzIG90aGVyIGl0ZW1zIG9yIGlzIGdyb3VwZWQgd2l0aCB0aGVtXG4gICAgICogQHBhcmFtIHJvd3MgQWxsIHJvd3Mgb2YgdGhlIHRhYmxlIGluIHRoZSBzdGF0ZSB0aGV5IGV4aXN0IG9uIHRoZSBkYXRhc291cmNlXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByb3c6IFQsXG4gICAgICAgIHB1YmxpYyBkcm9wUm93OiBULFxuICAgICAgICBwdWJsaWMgcHJldmlvdXNJbmRleDogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgbmV3SW5kZXg6IG51bWJlcixcbiAgICAgICAgcHVibGljIGluc2VydEF0OiAnYmVmb3JlJyB8ICdhZnRlcicgfCBudWxsLFxuICAgICAgICBwdWJsaWMgbW9kZTogRmREbmREcm9wRXZlbnRNb2RlLFxuICAgICAgICBwdWJsaWMgcm93czogVFtdXG4gICAgKSB7fVxufVxuIl19","import { DOWN_ARROW, END, HOME, LEFT_ARROW, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { ChangeDetectorRef, Directive, EventEmitter, forwardRef, HostBinding, inject, Input, NgZone, Output } from '@angular/core';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { take } from 'rxjs/operators';\nimport { FDP_TABLE_DRAGGABLE_DIRECTIVE } from '../constants';\nimport { TableRowType } from '../enums';\nimport { findRowChildren, getRowParents } from '../helpers';\nimport { TableRowsRearrangeEvent } from '../models';\nimport { TableDraggable } from '../models/directives';\nimport * as i0 from \"@angular/core\";\nexport class TableDraggableDirective extends TableDraggable {\n constructor() {\n super(...arguments);\n /** Whether to allow for row reordering on tree tables via drag and drop. */\n this.enableRowReordering = true;\n /** Whether tree mode is enabled. */\n this.isTreeTable = false;\n /**\n * Row drop mode.\n */\n this.dropMode = 'auto';\n /** Event fired when tree rows rearranged through drag & drop. Consider that rows rearranged with their children rows. */\n this.rowsRearrange = new EventEmitter();\n /** @hidden */\n this.dragDropInProgress = false;\n /** @hidden */\n this._ngZone = inject(NgZone);\n /** @hidden */\n this._cdr = inject(ChangeDetectorRef, {\n host: true\n });\n }\n /** @hidden */\n get _rowsDraggable() {\n return this.isTreeTable && this.enableRowReordering;\n }\n /** @hidden */\n ngOnDestroy() {\n this._setDragInProgress(false);\n }\n /** Sets table reference. */\n setTable(table) {\n this._table = table;\n }\n /**\n * Initiates drag&drop sequence.\n */\n dragDropStart() {\n this._setDragInProgress(true);\n }\n /** Method called when dnd performed with the keyboard. */\n dragRowFromKeyboard(dir, event, currentRowIndex, mode) {\n if (!this._rowsDraggable) {\n return;\n }\n event.preventDefault();\n let replacedIndex;\n dir === 'up' ? (replacedIndex = currentRowIndex - 1) : (replacedIndex = currentRowIndex + 1);\n if (this._table._tableRowsVisible[replacedIndex]) {\n const dragDropEvent = {\n items: this._table._tableRowsVisible,\n draggedItemIndex: currentRowIndex,\n replacedItemIndex: replacedIndex,\n insertAt: dir === 'down' ? 'after' : 'before',\n mode\n };\n this.dragDropItemDrop(dragDropEvent);\n setTimeout(() => {\n event.target.focus();\n });\n }\n }\n /** Method called when drag&drop event being cancelled. */\n dropCancelled() {\n /** After timeout to make click event handled first */\n this._ngZone.runOutsideAngular(() => {\n setTimeout(() => this._setDragInProgress(false));\n });\n }\n /** Method called when dragged item being dropped. */\n dragDropItemDrop(event) {\n /** After timeout to make click event handled first */\n this._ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n this._setDragInProgress(false);\n });\n });\n this._onZoneFree(() => {\n if (this.isTreeTable && event.draggedItemIndex !== event.replacedItemIndex) {\n event.draggedItemIndex = this._table._tableCurrentlyRenderedRowsPlaceholder[event.draggedItemIndex];\n event.replacedItemIndex = this._table._tableCurrentlyRenderedRowsPlaceholder[event.replacedItemIndex];\n const dragRow = this._table._tableRows.find((row) => row === this._table._tableRowsVisible[event.draggedItemIndex]);\n const dropRow = this._table._tableRows.find((row) => row === this._table._tableRowsVisible[event.replacedItemIndex]);\n if (!dragRow || !dropRow || this._isDroppedInsideItself(dropRow, dragRow)) {\n return;\n }\n this._dragDropUpdateDragParentRowAttributes(dragRow);\n this._dragDropRearrangeTreeRows(dragRow, dropRow, event);\n this._dragDropUpdateDropRowAttributes(dragRow, dropRow, event.mode);\n if (!dropRow.expanded && event.mode === 'group') {\n this._table.toggleExpandableTableRow(dropRow, true);\n }\n else {\n this._table.onTableRowsChanged();\n }\n this._cdr.detectChanges();\n this._emitRowsRearrangeEvent(dragRow, dropRow, event);\n this._table.refreshDndList();\n }\n });\n }\n /**\n * @hidden\n * Create table rows rearrange event\n */\n _emitRowsRearrangeEvent(row, dropRow, event) {\n const rows = [];\n this._table._tableRows.forEach((r, index) => {\n r.index = index;\n rows.push(r.value);\n });\n this.rowsRearrange.emit(new TableRowsRearrangeEvent(row.value, dropRow.value, event.draggedItemIndex, event.replacedItemIndex, event.insertAt, event.mode, rows));\n }\n /** @hidden */\n _setDragInProgress(dragging) {\n this.dragDropInProgress = dragging;\n dragging ? this._blockScrolling() : this._enableScrolling();\n }\n /** @hidden */\n _isDroppedInsideItself(dropRow, dragRow) {\n const dropRowParents = getRowParents(dropRow);\n return !!dropRowParents.find((row) => row === dragRow);\n }\n /** @hidden */\n _dragDropUpdateDragParentRowAttributes(dragRow) {\n const parentRow = dragRow.parent;\n if (!parentRow) {\n return;\n }\n const parentRowChildren = findRowChildren(parentRow, this._table._tableRows);\n const dragRowChildren = findRowChildren(dragRow, this._table._tableRows);\n if (parentRowChildren.length - (dragRowChildren.length + 1) === 0) {\n parentRow.setRowType(TableRowType.ITEM);\n }\n }\n /** @hidden */\n _dragDropUpdateDropRowAttributes(dragRow, dropRow, mode) {\n if (dragRow.parent) {\n // Remove child row from previous parent row.\n dragRow.parent.children.splice(dragRow.parent.children.indexOf(dragRow), 1);\n }\n dragRow.level = dropRow.level + (mode === 'group' ? 1 : 0);\n if (mode === 'group') {\n dragRow.parent = dropRow;\n if (!dropRow.isTree) {\n dropRow.setRowType(TableRowType.TREE);\n }\n dropRow.children.push(dragRow);\n dropRow.lastChild = dragRow;\n }\n else {\n dragRow.parent = dropRow.parent;\n dropRow.parent?.children.push(dragRow);\n if (dropRow.parent) {\n dropRow.parent.lastChild = dragRow;\n }\n }\n const children = findRowChildren(dragRow, this._table._tableRows);\n children.forEach((row) => {\n row.level = getRowParents(row).length;\n });\n }\n /** @hidden */\n _dragDropRearrangeTreeRows(dragRow, dropRow, event) {\n if (event.mode === 'shift') {\n this._handleShiftDropAction(dragRow, dropRow, event);\n }\n else {\n this._handleReplaceDropAction(dragRow, dropRow);\n }\n }\n /** @hidden */\n _getNewDragDropRowsPosition(dragRow, dropRow) {\n const allRows = this._table._tableRows;\n const dragRowIndex = allRows.findIndex((row) => row === dragRow);\n const dragRowChildren = findRowChildren(dragRow, this._table._tableRows);\n const rowsToMove = allRows.splice(dragRowIndex, dragRowChildren.length + 1);\n const dropRowIndex = allRows.findIndex((row) => row === dropRow);\n const dropRowChildren = findRowChildren(dropRow, this._table._tableRows);\n const dropRowItemsLength = dropRowChildren.length + 1;\n const rowsAfterDropRow = allRows.splice(dropRowIndex + dropRowItemsLength, allRows.length + dropRowItemsLength);\n const dropRowItems = allRows.splice(dropRowIndex, dropRowItemsLength);\n return {\n allRows,\n rowsToMove,\n rowsAfterDropRow,\n dropRowItems\n };\n }\n /** @hidden */\n _handleShiftDropAction(dragRow, dropRow, event) {\n const { allRows, rowsToMove, rowsAfterDropRow, dropRowItems } = this._getNewDragDropRowsPosition(dragRow, dropRow);\n this._table._tableRows = [\n ...allRows,\n ...(event.insertAt === 'after' ? dropRowItems : []),\n ...rowsToMove,\n ...(event.insertAt === 'after' ? [] : dropRowItems),\n ...rowsAfterDropRow\n ];\n }\n /** @hidden */\n _handleReplaceDropAction(dragRow, dropRow) {\n const { allRows, rowsToMove, rowsAfterDropRow, dropRowItems } = this._getNewDragDropRowsPosition(dragRow, dropRow);\n this._table._tableRows = [...allRows, ...dropRowItems, ...rowsToMove, ...rowsAfterDropRow];\n }\n /** @hidden */\n _onZoneFree(callback) {\n this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(() => {\n callback();\n });\n }\n /** @hidden */\n _blockScrolling() {\n this._table._focusableGrid._preventKeydown = true;\n this._table.tableContainer.nativeElement.addEventListener('DOMMouseScroll', preventDefault, false);\n this._table.tableContainer.nativeElement.addEventListener('wheel', preventDefault, { passive: false });\n this._table.tableContainer.nativeElement.addEventListener('mousewheel', preventDefault, { passive: false });\n this._table.tableContainer.nativeElement.addEventListener('touchmove', preventDefault, { passive: false });\n this._table.tableContainer.nativeElement.addEventListener('keydown', preventDefaultForScrollKeys, false);\n }\n /** @hidden */\n _enableScrolling() {\n this._table._focusableGrid._preventKeydown = false;\n this._table.tableContainer.nativeElement.removeEventListener('DOMMouseScroll', preventDefault, false);\n this._table.tableContainer.nativeElement.removeEventListener('wheel', preventDefault);\n this._table.tableContainer.nativeElement.removeEventListener('mousewheel', preventDefault);\n this._table.tableContainer.nativeElement.removeEventListener('touchmove', preventDefault);\n this._table.tableContainer.nativeElement.removeEventListener('keydown', preventDefaultForScrollKeys, false);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableDraggableDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: TableDraggableDirective, isStandalone: true, selector: \"fdp-table[isTreeTable], fdp-table[enableRowReordering]\", inputs: { enableRowReordering: \"enableRowReordering\", isTreeTable: \"isTreeTable\", dropMode: \"dropMode\", dropPredicate: \"dropPredicate\", dragoverPredicate: \"dragoverPredicate\" }, outputs: { rowsRearrange: \"rowsRearrange\" }, host: { properties: { \"class.fd-table--tree\": \"this.isTreeTable\" } }, providers: [\n {\n provide: FDP_TABLE_DRAGGABLE_DIRECTIVE,\n useExisting: forwardRef(() => TableDraggableDirective)\n }\n ], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableDraggableDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fdp-table[isTreeTable], fdp-table[enableRowReordering]',\n standalone: true,\n providers: [\n {\n provide: FDP_TABLE_DRAGGABLE_DIRECTIVE,\n useExisting: forwardRef(() => TableDraggableDirective)\n }\n ]\n }]\n }], propDecorators: { enableRowReordering: [{\n type: Input\n }], isTreeTable: [{\n type: HostBinding,\n args: ['class.fd-table--tree']\n }, {\n type: Input\n }], dropMode: [{\n type: Input\n }], dropPredicate: [{\n type: Input\n }], dragoverPredicate: [{\n type: Input\n }], rowsRearrange: [{\n type: Output\n }] } });\nfunction preventDefault(event) {\n event.preventDefault();\n}\nfunction preventDefaultForScrollKeys(event) {\n if (!event.altKey &&\n KeyUtil.isKeyCode(event, [LEFT_ARROW, RIGHT_ARROW, UP_ARROW, DOWN_ARROW, SPACE, PAGE_DOWN, PAGE_UP, END, HOME])) {\n preventDefault(event);\n return false;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZHJhZ2dhYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9kaXJlY3RpdmVzL3RhYmxlLWRyYWdnYWJsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFVBQVUsRUFDVixHQUFHLEVBQ0gsSUFBSSxFQUNKLFVBQVUsRUFDVixTQUFTLEVBQ1QsT0FBTyxFQUNQLFdBQVcsRUFDWCxLQUFLLEVBQ0wsUUFBUSxFQUNYLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUNILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBRU4sTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFNSCxPQUFPLEVBQ1YsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDeEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDNUQsT0FBTyxFQUFZLHVCQUF1QixFQUEwQixNQUFNLFdBQVcsQ0FBQztBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBY3RELE1BQU0sT0FBTyx1QkFBaUMsU0FBUSxjQUFpQjtJQVh2RTs7UUFZSSw0RUFBNEU7UUFFNUUsd0JBQW1CLEdBQUcsSUFBSSxDQUFDO1FBRTNCLG9DQUFvQztRQUdwQyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVwQjs7V0FFRztRQUVILGFBQVEsR0FBa0IsTUFBTSxD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RCxTQUFTLDJCQUEyQixDQUFDLEtBQW9CO0lBQ3JELElBQ0ksQ0FBQyxLQUFLLENBQUMsTUFBTTtRQUNiLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUNqSCxDQUFDO1FBQ0MsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBET1dOX0FSUk9XLFxuICAgIEVORCxcbiAgICBIT01FLFxuICAgIExFRlRfQVJST1csXG4gICAgUEFHRV9ET1dOLFxuICAgIFBBR0VfVVAsXG4gICAgUklHSFRfQVJST1csXG4gICAgU1BBQ0UsXG4gICAgVVBfQVJST1dcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgRHJhZ292ZXJQcmVkaWNhdGUsXG4gICAgRHJvcFByZWRpY2F0ZSxcbiAgICBGZERuZERyb3BFdmVudE1vZGUsXG4gICAgRmREbmREcm9wVHlwZSxcbiAgICBGZERyb3BFdmVudCxcbiAgICBLZXlVdGlsXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGRFBfVEFCTEVfRFJBR0dBQkxFX0RJUkVDVElWRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUYWJsZVJvd1R5cGUgfSBmcm9tICcuLi9lbnVtcyc7XG5pbXBvcnQgeyBmaW5kUm93Q2hpbGRyZW4sIGdldFJvd1BhcmVudHMgfSBmcm9tICcuLi9oZWxwZXJzJztcbmltcG9ydCB7IFRhYmxlUm93LCBUYWJsZVJvd3NSZWFycmFuZ2VFdmVudCwgVXBkYXRlZERuZFJvd3NQb3NpdGlvbiB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBUYWJsZURyYWdnYWJsZSB9IGZyb20gJy4uL21vZGVscy9kaXJlY3RpdmVzJztcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSAnLi4vdGFibGUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnZmRwLXRhYmxlW2lzVHJlZVRhYmxlXSwgZmRwLXRhYmxlW2VuYWJsZVJvd1Jlb3JkZXJpbmddJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRFBfVEFCTEVfRFJBR0dBQkxFX0RJUkVDVElWRSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRhYmxlRHJhZ2dhYmxlRGlyZWN0aXZlKVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZURyYWdnYWJsZURpcmVjdGl2ZTxUID0gYW55PiBleHRlbmRzIFRhYmxlRHJhZ2dhYmxlPFQ+IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICAvKiogV2hldGhlciB0byBhbGxvdyBmb3Igcm93IHJlb3JkZXJpbmcgb24gdHJlZSB0YWJsZXMgdmlhIGRyYWcgYW5kIGRyb3AuICovXG4gICAgQElucHV0KClcbiAgICBlbmFibGVSb3dSZW9yZGVyaW5nID0gdHJ1ZTtcblxuICAgIC8qKiBXaGV0aGVyIHRyZWUgbW9kZSBpcyBlbmFibGVkLiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtdGFibGUtLXRyZWUnKVxuICAgIEBJbnB1dCgpXG4gICAgaXNUcmVlVGFibGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFJvdyBkcm9wIG1vZGUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBkcm9wTW9kZTogRmREbmREcm9wVHlwZSA9ICdhdXRvJztcblxuICAgIC8qKiBQcmVkaWNhdGUgZnVuY3Rpb24gdGhhdCBjaGVja3Mgd2hldGhlciB0aGUgaXRlbSBjYW4gYmUgZHJvcHBlZCBvdmVyIGFub3RoZXIgaXRlbS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRyb3BQcmVkaWNhdGU6IERyb3BQcmVkaWNhdGU8VGFibGVSb3c8VD4+O1xuXG4gICAgLyoqXG4gICAgICogUHJlZGljYXRlIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIHdoZXRoZXIgdGhlIGl0ZW0gY2FuIGJlIGRyYWdnZWQgb3ZlciBhbm90aGVyIGl0ZW0uXG4gICAgICogSWYgdGhlIGZ1bmN0aW9uIHJldHVybnMgYGZhbHNlYCwgZHJhZ2dlZCBvdmVyIGl0ZW0gd2lsbCBub3QgYmUgaGlnaGxpZ2h0ZWQsIGFuZCBkcm9wIGV2ZW50IHdpbGwgYmUgY2FuY2VsZWQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBkcmFnb3ZlclByZWRpY2F0ZTogRHJhZ292ZXJQcmVkaWNhdGU8VGFibGVSb3c8VD4+O1xuXG4gICAgLyoqIEV2ZW50IGZpcmVkIHdoZW4gdHJlZSByb3dzIHJlYXJyYW5nZWQgdGhyb3VnaCBkcmFnICYgZHJvcC4gQ29uc2lkZXIgdGhhdCByb3dzIHJlYXJyYW5nZWQgd2l0aCB0aGVpciBjaGlsZHJlbiByb3dzLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IHJvd3NSZWFycmFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlUm93c1JlYXJyYW5nZUV2ZW50PFQ+PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX3Jvd3NEcmFnZ2FibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVHJlZVRhYmxlICYmIHRoaXMuZW5hYmxlUm93UmVvcmRlcmluZztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGRyYWdEcm9wSW5Qcm9ncmVzcyA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90YWJsZTogVGFibGU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX25nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYsIHtcbiAgICAgICAgaG9zdDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0RHJhZ0luUHJvZ3Jlc3MoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBTZXRzIHRhYmxlIHJlZmVyZW5jZS4gKi9cbiAgICBzZXRUYWJsZSh0YWJsZTogVGFibGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFibGUgPSB0YWJsZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWF0ZXMgZHJhZyZkcm9wIHNlcXVlbmNlLlxuICAgICAqL1xuICAgIGRyYWdEcm9wU3RhcnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NldERyYWdJblByb2dyZXNzKHRydWUpO1xuICAgIH1cblxuICAgIC8qKiBNZXRob2QgY2FsbGVkIHdoZW4gZG5kIHBlcmZvcm1lZCB3aXRoIHRoZSBrZXlib2FyZC4gKi9cbiAgICBkcmFnUm93RnJvbUtleWJvYXJkKGRpcjogc3RyaW5nLCBldmVudDogRXZlbnQsIGN1cnJlbnRSb3dJbmRleDogbnVtYmVyLCBtb2RlOiAnc2hpZnQnIHwgJ2dyb3VwJyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3Jvd3NEcmFnZ2FibGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBsZXQgcmVwbGFjZWRJbmRleDtcbiAgICAgICAgZGlyID09PSAndXAnID8gKHJlcGxhY2VkSW5kZXggPSBjdXJyZW50Um93SW5kZXggLSAxKSA6IChyZXBsYWNlZEluZGV4ID0gY3VycmVudFJvd0luZGV4ICsgMSk7XG5cbiAgICAgICAgaWYgKHRoaXMuX3RhYmxlLl90YWJsZVJvd3NWaXNpYmxlW3JlcGxhY2VkSW5kZXhdKSB7XG4gICAgICAgICAgICBjb25zdCBkcmFnRHJvcEV2ZW50OiBGZERyb3BFdmVudDxUYWJsZVJvdzxUPj4gPSB7XG4gICAgICAgICAgICAgICAgaXRlbXM6IHRoaXMuX3RhYmxlLl90YWJsZVJvd3NWaXNpYmxlLFxuICAgICAgICAgICAgICAgIGRyYWdnZWRJdGVtSW5kZXg6IGN1cnJlbnRSb3dJbmRleCxcbiAgICAgICAgICAgICAgICByZXBsYWNlZEl0ZW1JbmRleDogcmVwbGFjZWRJbmRleCxcbiAgICAgICAgICAgICAgICBpbnNlcnRBdDogZGlyID09PSAnZG93bicgPyAnYWZ0ZXInIDogJ2JlZm9yZScsXG4gICAgICAgICAgICAgICAgbW9kZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuZHJhZ0Ryb3BJdGVtRHJvcChkcmFnRHJvcEV2ZW50KTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmZvY3VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBNZXRob2QgY2FsbGVkIHdoZW4gZHJhZyZkcm9wIGV2ZW50IGJlaW5nIGNhbmNlbGxlZC4gKi9cbiAgICBkcm9wQ2FuY2VsbGVkKCk6IHZvaWQge1xuICAgICAgICAvKiogQWZ0ZXIgdGltZW91dCB0byBtYWtlIGNsaWNrIGV2ZW50IGhhbmRsZWQgZmlyc3QgKi9cbiAgICAgICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fc2V0RHJhZ0luUHJvZ3Jlc3MoZmFsc2UpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCBjYWxsZWQgd2hlbiBkcmFnZ2VkIGl0ZW0gYmVpbmcgZHJvcHBlZC4gKi9cbiAgICBkcmFnRHJvcEl0ZW1Ecm9wKGV2ZW50OiBGZERyb3BFdmVudDxUYWJsZVJvdz4pOiB2b2lkIHtcbiAgICAgICAgLyoqIEFmdGVyIHRpbWVvdXQgdG8gbWFrZSBjbGljayBldmVudCBoYW5kbGVkIGZpcnN0ICovXG4gICAgICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXREcmFnSW5Qcm9ncmVzcyhmYWxzZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fb25ab25lRnJlZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1RyZWVUYWJsZSAmJiBldmVudC5kcmFnZ2VkSXRlbUluZGV4ICE9PSBldmVudC5yZXBsYWNlZEl0ZW1JbmRleCkge1xuICAgICAgICAgICAgICAgIGV2ZW50LmRyYWdnZWRJdGVtSW5kZXggPSB0aGlzLl90YWJsZS5fdGFibGVDdXJyZW50bHlSZW5kZXJlZFJvd3NQbGFjZWhvbGRlcltldmVudC5kcmFnZ2VkSXRlbUluZGV4XTtcbiAgICAgICAgICAgICAgICBldmVudC5yZXBsYWNlZEl0ZW1JbmRleCA9IHRoaXMuX3RhYmxlLl90YWJsZUN1cnJlbnRseVJlbmRlcmVkUm93c1BsYWNlaG9sZGVyW2V2ZW50LnJlcGxhY2VkSXRlbUluZGV4XTtcbiAgICAgICAgICAgICAgICBjb25zdCBkcmFnUm93ID0gdGhpcy5fdGFibGUuX3RhYmxlUm93cy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAocm93KSA9PiByb3cgPT09IHRoaXMuX3RhYmxlLl90YWJsZVJvd3NWaXNpYmxlW2V2ZW50LmRyYWdnZWRJdGVtSW5kZXhdXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkcm9wUm93ID0gdGhpcy5fdGFibGUuX3RhYmxlUm93cy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAocm93KSA9PiByb3cgPT09IHRoaXMuX3RhYmxlLl90YWJsZVJvd3NWaXNpYmxlW2V2ZW50LnJlcGxhY2VkSXRlbUluZGV4XVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWRyYWdSb3cgfHwgIWRyb3BSb3cgfHwgdGhpcy5faXNEcm9wcGVkSW5zaWRlSXRzZWxmKGRyb3BSb3csIGRyYWdSb3cpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5fZHJhZ0Ryb3BVcGRhdGVEcmFnUGFyZW50Um93QXR0cmlidXRlcyhkcmFnUm93KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9kcmFnRHJvcFJlYXJyYW5nZVRyZWVSb3dzKGRyYWdSb3csIGRyb3BSb3csIGV2ZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9kcmFnRHJvcFVwZGF0ZURyb3BSb3dBdHRyaWJ1dGVzKGRyYWdSb3csIGRyb3BSb3csIGV2ZW50Lm1vZGUpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFkcm9wUm93LmV4cGFuZGVkICYmIGV2ZW50Lm1vZGUgPT09ICdncm91cCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGFibGUudG9nZ2xlRXhwYW5kYWJsZVRhYmxlUm93KGRyb3BSb3csIHRydWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlLm9uVGFibGVSb3dzQ2hhbmdlZCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdFJvd3NSZWFycmFuZ2VFdmVudChkcmFnUm93LCBkcm9wUm93LCBldmVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFibGUucmVmcmVzaERuZExpc3QoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIENyZWF0ZSB0YWJsZSByb3dzIHJlYXJyYW5nZSBldmVudFxuICAgICAqL1xuICAgIF9lbWl0Um93c1JlYXJyYW5nZUV2ZW50KHJvdzogVGFibGVSb3csIGRyb3BSb3c6IFRhYmxlUm93LCBldmVudDogRmREcm9wRXZlbnQ8VGFibGVSb3c+KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJvd3M6IGFueVtdID0gW107XG5cbiAgICAgICAgdGhpcy5fdGFibGUuX3RhYmxlUm93cy5mb3JFYWNoKChyLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgci5pbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgcm93cy5wdXNoKHIudmFsdWUpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnJvd3NSZWFycmFuZ2UuZW1pdChcbiAgICAgICAgICAgIG5ldyBUYWJsZVJvd3NSZWFycmFuZ2VFdmVudChcbiAgICAgICAgICAgICAgICByb3cudmFsdWUsXG4gICAgICAgICAgICAgICAgZHJvcFJvdy52YWx1ZSxcbiAgICAgICAgICAgICAgICBldmVudC5kcmFnZ2VkSXRlbUluZGV4LFxuICAgICAgICAgICAgICAgIGV2ZW50LnJlcGxhY2VkSXRlbUluZGV4LFxuICAgICAgICAgICAgICAgIGV2ZW50Lmluc2VydEF0LFxuICAgICAgICAgICAgICAgIGV2ZW50Lm1vZGUsXG4gICAgICAgICAgICAgICAgcm93c1xuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0RHJhZ0luUHJvZ3Jlc3MoZHJhZ2dpbmc6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kcmFnRHJvcEluUHJvZ3Jlc3MgPSBkcmFnZ2luZztcbiAgICAgICAgZHJhZ2dpbmcgPyB0aGlzLl9ibG9ja1Njcm9sbGluZygpIDogdGhpcy5fZW5hYmxlU2Nyb2xsaW5nKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc0Ryb3BwZWRJbnNpZGVJdHNlbGYoZHJvcFJvdzogVGFibGVSb3csIGRyYWdSb3c6IFRhYmxlUm93KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGRyb3BSb3dQYXJlbnRzID0gZ2V0Um93UGFyZW50cyhkcm9wUm93KTtcbiAgICAgICAgcmV0dXJuICEhZHJvcFJvd1BhcmVudHMuZmluZCgocm93KSA9PiByb3cgPT09IGRyYWdSb3cpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZHJhZ0Ryb3BVcGRhdGVEcmFnUGFyZW50Um93QXR0cmlidXRlcyhkcmFnUm93OiBUYWJsZVJvdyk6IHZvaWQge1xuICAgICAgICBjb25zdCBwYXJlbnRSb3cgPSBkcmFnUm93LnBhcmVudDtcblxuICAgICAgICBpZiAoIXBhcmVudFJvdykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFyZW50Um93Q2hpbGRyZW4gPSBmaW5kUm93Q2hpbGRyZW4ocGFyZW50Um93LCB0aGlzLl90YWJsZS5fdGFibGVSb3dzKTtcbiAgICAgICAgY29uc3QgZHJhZ1Jvd0NoaWxkcmVuID0gZmluZFJvd0NoaWxkcmVuKGRyYWdSb3csIHRoaXMuX3RhYmxlLl90YWJsZVJvd3MpO1xuXG4gICAgICAgIGlmIChwYXJlbnRSb3dDaGlsZHJlbi5sZW5ndGggLSAoZHJhZ1Jvd0NoaWxkcmVuLmxlbmd0aCArIDEpID09PSAwKSB7XG4gICAgICAgICAgICBwYXJlbnRSb3cuc2V0Um93VHlwZShUYWJsZVJvd1R5cGUuSVRFTSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RyYWdEcm9wVXBkYXRlRHJvcFJvd0F0dHJpYnV0ZXMoZHJhZ1JvdzogVGFibGVSb3csIGRyb3BSb3c6IFRhYmxlUm93LCBtb2RlOiBGZERuZERyb3BFdmVudE1vZGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKGRyYWdSb3cucGFyZW50KSB7XG4gICAgICAgICAgICAvLyBSZW1vdmUgY2hpbGQgcm93IGZyb20gcHJldmlvdXMgcGFyZW50IHJvdy5cbiAgICAgICAgICAgIGRyYWdSb3cucGFyZW50LmNoaWxkcmVuLnNwbGljZShkcmFnUm93LnBhcmVudC5jaGlsZHJlbi5pbmRleE9mKGRyYWdSb3cpLCAxKTtcbiAgICAgICAgfVxuICAgICAgICBkcmFnUm93LmxldmVsID0gZHJvcFJvdy5sZXZlbCArIChtb2RlID09PSAnZ3JvdXAnID8gMSA6IDApO1xuXG4gICAgICAgIGlmIChtb2RlID09PSAnZ3JvdXAnKSB7XG4gICAgICAgICAgICBkcmFnUm93LnBhcmVudCA9IGRyb3BSb3c7XG4gICAgICAgICAgICBpZiAoIWRyb3BSb3cuaXNUcmVlKSB7XG4gICAgICAgICAgICAgICAgZHJvcFJvdy5zZXRSb3dUeXBlKFRhYmxlUm93VHlwZS5UUkVFKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZHJvcFJvdy5jaGlsZHJlbi5wdXNoKGRyYWdSb3cpO1xuICAgICAgICAgICAgZHJvcFJvdy5sYXN0Q2hpbGQgPSBkcmFnUm93O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZHJhZ1Jvdy5wYXJlbnQgPSBkcm9wUm93LnBhcmVudDtcbiAgICAgICAgICAgIGRyb3BSb3cucGFyZW50Py5jaGlsZHJlbi5wdXNoKGRyYWdSb3cpO1xuICAgICAgICAgICAgaWYgKGRyb3BSb3cucGFyZW50KSB7XG4gICAgICAgICAgICAgICAgZHJvcFJvdy5wYXJlbnQubGFzdENoaWxkID0gZHJhZ1JvdztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gZmluZFJvd0NoaWxkcmVuKGRyYWdSb3csIHRoaXMuX3RhYmxlLl90YWJsZVJvd3MpO1xuICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICAgIHJvdy5sZXZlbCA9IGdldFJvd1BhcmVudHMocm93KS5sZW5ndGg7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZHJhZ0Ryb3BSZWFycmFuZ2VUcmVlUm93cyhkcmFnUm93OiBUYWJsZVJvdywgZHJvcFJvdzogVGFibGVSb3csIGV2ZW50OiBGZERyb3BFdmVudDxUYWJsZVJvdz4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50Lm1vZGUgPT09ICdzaGlmdCcpIHtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZVNoaWZ0RHJvcEFjdGlvbihkcmFnUm93LCBkcm9wUm93LCBldmVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVSZXBsYWNlRHJvcEFjdGlvbihkcmFnUm93LCBkcm9wUm93KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0TmV3RHJhZ0Ryb3BSb3dzUG9zaXRpb24oZHJhZ1JvdzogVGFibGVSb3csIGRyb3BSb3c6IFRhYmxlUm93KTogVXBkYXRlZERuZFJvd3NQb3NpdGlvbiB7XG4gICAgICAgIGNvbnN0IGFsbFJvd3MgPSB0aGlzLl90YWJsZS5fdGFibGVSb3dzO1xuXG4gICAgICAgIGNvbnN0IGRyYWdSb3dJbmRleCA9IGFsbFJvd3MuZmluZEluZGV4KChyb3cpID0+IHJvdyA9PT0gZHJhZ1Jvdyk7XG4gICAgICAgIGNvbnN0IGRyYWdSb3dDaGlsZHJlbiA9IGZpbmRSb3dDaGlsZHJlbihkcmFnUm93LCB0aGlzLl90YWJsZS5fdGFibGVSb3dzKTtcblxuICAgICAgICBjb25zdCByb3dzVG9Nb3ZlID0gYWxsUm93cy5zcGxpY2UoZHJhZ1Jvd0luZGV4LCBkcmFnUm93Q2hpbGRyZW4ubGVuZ3RoICsgMSk7XG5cbiAgICAgICAgY29uc3QgZHJvcFJvd0luZGV4ID0gYWxsUm93cy5maW5kSW5kZXgoKHJvdykgPT4gcm93ID09PSBkcm9wUm93KTtcbiAgICAgICAgY29uc3QgZHJvcFJvd0NoaWxkcmVuID0gZmluZFJvd0NoaWxkcmVuKGRyb3BSb3csIHRoaXMuX3RhYmxlLl90YWJsZVJvd3MpO1xuXG4gICAgICAgIGNvbnN0IGRyb3BSb3dJdGVtc0xlbmd0aCA9IGRyb3BSb3dDaGlsZHJlbi5sZW5ndGggKyAxO1xuXG4gICAgICAgIGNvbnN0IHJvd3NBZnRlckRyb3BSb3cgPSBhbGxSb3dzLnNwbGljZShkcm9wUm93SW5kZXggKyBkcm9wUm93SXRlbXNMZW5ndGgsIGFsbFJvd3MubGVuZ3RoICsgZHJvcFJvd0l0ZW1zTGVuZ3RoKTtcbiAgICAgICAgY29uc3QgZHJvcFJvd0l0ZW1zID0gYWxsUm93cy5zcGxpY2UoZHJvcFJvd0luZGV4LCBkcm9wUm93SXRlbXNMZW5ndGgpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhbGxSb3dzLFxuICAgICAgICAgICAgcm93c1RvTW92ZSxcbiAgICAgICAgICAgIHJvd3NBZnRlckRyb3BSb3csXG4gICAgICAgICAgICBkcm9wUm93SXRlbXNcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hhbmRsZVNoaWZ0RHJvcEFjdGlvbihkcmFnUm93OiBUYWJsZVJvdywgZHJvcFJvdzogVGFibGVSb3csIGV2ZW50OiBGZERyb3BFdmVudDxUYWJsZVJvdz4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBhbGxSb3dzLCByb3dzVG9Nb3ZlLCByb3dzQWZ0ZXJEcm9wUm93LCBkcm9wUm93SXRlbXMgfSA9IHRoaXMuX2dldE5ld0RyYWdEcm9wUm93c1Bvc2l0aW9uKFxuICAgICAgICAgICAgZHJhZ1JvdyxcbiAgICAgICAgICAgIGRyb3BSb3dcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl90YWJsZS5fdGFibGVSb3dzID0gW1xuICAgICAgICAgICAgLi4uYWxsUm93cyxcbiAgICAgICAgICAgIC4uLihldmVudC5pbnNlcnRBdCA9PT0gJ2FmdGVyJyA/IGRyb3BSb3dJdGVtcyA6IFtdKSxcbiAgICAgICAgICAgIC4uLnJvd3NUb01vdmUsXG4gICAgICAgICAgICAuLi4oZXZlbnQuaW5zZXJ0QXQgPT09ICdhZnRlcicgPyBbXSA6IGRyb3BSb3dJdGVtcyksXG4gICAgICAgICAgICAuLi5yb3dzQWZ0ZXJEcm9wUm93XG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oYW5kbGVSZXBsYWNlRHJvcEFjdGlvbihkcmFnUm93OiBUYWJsZVJvdywgZHJvcFJvdzogVGFibGVSb3cpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBhbGxSb3dzLCByb3dzVG9Nb3ZlLCByb3dzQWZ0ZXJEcm9wUm93LCBkcm9wUm93SXRlbXMgfSA9IHRoaXMuX2dldE5ld0RyYWdEcm9wUm93c1Bvc2l0aW9uKFxuICAgICAgICAgICAgZHJhZ1JvdyxcbiAgICAgICAgICAgIGRyb3BSb3dcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl90YWJsZS5fdGFibGVSb3dzID0gWy4uLmFsbFJvd3MsIC4uLmRyb3BSb3dJdGVtcywgLi4ucm93c1RvTW92ZSwgLi4ucm93c0FmdGVyRHJvcFJvd107XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9vblpvbmVGcmVlKGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX25nWm9uZS5vbk1pY3JvdGFza0VtcHR5LnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYmxvY2tTY3JvbGxpbmcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYmxlLl9mb2N1c2FibGVHcmlkLl9wcmV2ZW50S2V5ZG93biA9IHRydWU7XG4gICAgICAgIHRoaXMuX3RhYmxlLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NTW91c2VTY3JvbGwnLCBwcmV2ZW50RGVmYXVsdCwgZmFsc2UpO1xuICAgICAgICB0aGlzLl90YWJsZS50YWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3doZWVsJywgcHJldmVudERlZmF1bHQsIHsgcGFzc2l2ZTogZmFsc2UgfSk7XG4gICAgICAgIHRoaXMuX3RhYmxlLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V3aGVlbCcsIHByZXZlbnREZWZhdWx0LCB7IHBhc3NpdmU6IGZhbHNlIH0pO1xuICAgICAgICB0aGlzLl90YWJsZS50YWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHByZXZlbnREZWZhdWx0LCB7IHBhc3NpdmU6IGZhbHNlIH0pO1xuICAgICAgICB0aGlzLl90YWJsZS50YWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBwcmV2ZW50RGVmYXVsdEZvclNjcm9sbEtleXMsIGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2VuYWJsZVNjcm9sbGluZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFibGUuX2ZvY3VzYWJsZUdyaWQuX3ByZXZlbnRLZXlkb3duID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3RhYmxlLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignRE9NTW91c2VTY3JvbGwnLCBwcmV2ZW50RGVmYXVsdCwgZmFsc2UpO1xuICAgICAgICB0aGlzLl90YWJsZS50YWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3doZWVsJywgcHJldmVudERlZmF1bHQpO1xuICAgICAgICB0aGlzLl90YWJsZS50YWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNld2hlZWwnLCBwcmV2ZW50RGVmYXVsdCk7XG4gICAgICAgIHRoaXMuX3RhYmxlLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgcHJldmVudERlZmF1bHQpO1xuICAgICAgICB0aGlzLl90YWJsZS50YWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBwcmV2ZW50RGVmYXVsdEZvclNjcm9sbEtleXMsIGZhbHNlKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHByZXZlbnREZWZhdWx0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG59XG5cbmZ1bmN0aW9uIHByZXZlbnREZWZhdWx0Rm9yU2Nyb2xsS2V5cyhldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIGlmIChcbiAgICAgICAgIWV2ZW50LmFsdEtleSAmJlxuICAgICAgICBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0xFRlRfQVJST1csIFJJR0hUX0FSUk9XLCBVUF9BUlJPVywgRE9XTl9BUlJPVywgU1BBQ0UsIFBBR0VfRE9XTiwgUEFHRV9VUCwgRU5ELCBIT01FXSlcbiAgICApIHtcbiAgICAgICAgcHJldmVudERlZmF1bHQoZXZlbnQpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { convertTreeLikeToFlatList, createGroupedTableRowsTree, sortTreeLikeGroupedRows } from '../helpers';\nimport * as i0 from \"@angular/core\";\nexport class TableRowService {\n /** @hidden */\n constructor() {\n /** Editable cells map. */\n this.editableCells = new Map();\n /** @hidden */\n this.childRowsAdded$ = new Subject();\n /** Stream to load child items for a particular rows. */\n this.loadChildRows$ = new Subject();\n /** @hidden */\n this._toggleRowSubject = new Subject();\n /** @hidden */\n this._scrollToOverlappedCellSubject = new Subject();\n /** @hidden */\n this._cellClickedSubject = new Subject();\n /** @hidden */\n this._cellActivateSubject = new Subject();\n /** @hidden */\n this._cellFocusedSubject = new Subject();\n /** @hidden */\n this._toggleAllSelectableRowsSubject = new Subject();\n this.toggleAllSelectableRows$ = this._toggleAllSelectableRowsSubject.asObservable();\n this.cellClicked$ = this._cellClickedSubject.asObservable();\n this.scrollToOverlappedCell$ = this._scrollToOverlappedCellSubject.asObservable();\n this.cellFocused$ = this._cellFocusedSubject.asObservable();\n this.cellActivate$ = this._cellActivateSubject.asObservable();\n this.toggleRow$ = this._toggleRowSubject.asObservable();\n }\n /** `toggleRow$` stream trigger. */\n toggleRow(evt) {\n this._toggleRowSubject.next(evt);\n }\n /** `scrollToOverlappedCell$` stream trigger. */\n scrollToOverlappedCell() {\n this._scrollToOverlappedCellSubject.next();\n }\n /** `cellClicked$` stream trigger. */\n cellClicked(evt) {\n this._cellClickedSubject.next(evt);\n }\n /** @hidden */\n cellActivate(columnIndex, row) {\n this._cellActivateSubject.next({ columnIndex, row: row.value });\n }\n /** `cellFocused$` stream trigger. */\n cellFocused(evt) {\n this._cellFocusedSubject.next(evt);\n }\n /** `toggleAllSelectableRows$` stream trigger. */\n toggleAllSelectableRows(selectAll) {\n this._toggleAllSelectableRowsSubject.next(selectAll);\n }\n /** Groups the table rows. */\n groupTableRows(sourceRows, groups, groupRulesMap) {\n const groupRules = Array.from(groups);\n if (!groupRules.length) {\n /**\n * In case if previously we had groups with collapsed items\n * but now we don't have it we need to reset row.hidden flag\n * in order to avoid empty table after groups settings removing\n */\n sourceRows.forEach((row) => {\n row.hidden = false;\n });\n return sourceRows;\n }\n // Build tree like groups\n const treeLikeGroupedRows = createGroupedTableRowsTree(groupRules, sourceRows);\n // Sort tree like groups\n const sortedTreeLikeGroupedRows = sortTreeLikeGroupedRows(treeLikeGroupedRows, groupRulesMap);\n // Convert tree like list to a flat list\n return convertTreeLikeToFlatList(sortedTreeLikeGroupedRows);\n }\n /** Sets editable cells for particular row. */\n updateEditableCells(row, cells) {\n this.editableCells.set(row, cells);\n }\n /** Removes editable cells of particular row. */\n removeEditableCells(row) {\n this.editableCells.delete(row);\n }\n /** Triggers stream to load child items for a particular rows. */\n loadChildRows(rows) {\n const expandableRows = [];\n if (Array.isArray(rows)) {\n expandableRows.push(...rows.filter((r) => !r.childItemsLoading$.value));\n }\n else {\n if (rows.childItemsLoading$.value) {\n return;\n }\n expandableRows.push(rows);\n }\n this.loadChildRows$.next(expandableRows);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableRowService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableRowService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableRowService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcm93LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvc2VydmljZXMvdGFibGUtcm93LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSwwQkFBMEIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUEyQjVHLE1BQU0sT0FBTyxlQUFlO0lBOEN4QixjQUFjO0lBQ2Q7UUE1QkEsMEJBQTBCO1FBQ2pCLGtCQUFhLEdBQUcsSUFBSSxHQUFHLEVBQXNDLENBQUM7UUFFdkUsY0FBYztRQUNMLG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQW1ELENBQUM7UUFFMUYsd0RBQXdEO1FBQy9DLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQWlCLENBQUM7UUFFdkQsY0FBYztRQUNHLHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUFrQixDQUFDO1FBRW5FLGNBQWM7UUFDRyxtQ0FBOEIsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRXRFLGNBQWM7UUFDRyx3QkFBbUIsR0FBRyxJQUFJLE9BQU8sRUFBb0IsQ0FBQztRQUV2RSxjQUFjO1FBQ0cseUJBQW9CLEdBQUcsSUFBSSxPQUFPLEVBQStCLENBQUM7UUFFbkYsY0FBYztRQUNHLHdCQUFtQixHQUFHLElBQUksT0FBTyxFQUF5QixDQUFDO1FBRTVFLGNBQWM7UUFDRyxvQ0FBK0IsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBSXRFLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsK0JBQStCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEYsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENB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TUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzVFLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2hDLE9BQU87WUFDWCxDQUFDO1lBQ0QsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDN0MsQ0FBQzs4R0ExSVEsZUFBZTtrSEFBZixlQUFlOzsyRkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9jdXNhYmxlSXRlbVBvc2l0aW9uIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY29udmVydFRyZWVMaWtlVG9GbGF0TGlzdCwgY3JlYXRlR3JvdXBlZFRhYmxlUm93c1RyZWUsIHNvcnRUcmVlTGlrZUdyb3VwZWRSb3dzIH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uR3JvdXAgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFRhYmxlUm93IH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IFRhYmxlQ2VsbEFjdGl2YXRlRXZlbnQgfSBmcm9tICcuLi9tb2RlbHMvdGFibGUtY2VsbC1hY3RpdmF0ZS1ldmVudC5tb2RlbCc7XG5pbXBvcnQgeyBFZGl0YWJsZVRhYmxlQ2VsbCB9IGZyb20gJy4uL3RhYmxlLWNlbGwuY2xhc3MnO1xuXG5leHBvcnQgdHlwZSBUb2dnbGVSb3dNb2RlbCA9XG4gICAgfCB7XG4gICAgICAgICAgdHlwZTogJ3RvZ2dsZVJvdyc7XG4gICAgICAgICAgcm93OiBUYWJsZVJvdztcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgICB0eXBlOiAndG9nZ2xlU2luZ2xlU2VsZWN0YWJsZVJvdyc7XG4gICAgICAgICAgcm93OiBUYWJsZVJvdztcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgICB0eXBlOiAndG9nZ2xlTXVsdGlTZWxlY3RSb3cnO1xuICAgICAgICAgIHJvdzogVGFibGVSb3c7XG4gICAgICAgICAgZXZlbnQ/OiBFdmVudDtcbiAgICAgIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2VsbENsaWNrZWRNb2RlbCB7XG4gICAgaW5kZXg6IG51bWJlcjtcbiAgICByb3c6IFRhYmxlUm93O1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGFibGVSb3dTZXJ2aWNlPFQgPSBhbnk+IHtcbiAgICAvKiogU3RyZWFtIHRoYXQgZW1pdHMgd2hlbiB0b2dnbGluZyBhbGwgc2VsZWN0YWJsZSByb3dzIGlzIG5lZWRlZC4gKi9cbiAgICByZWFkb25seSB0b2dnbGVBbGxTZWxlY3RhYmxlUm93cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICAvKiogU3RyZWFtIHRoYXQgZW1pdHMgd2hlbiB0YWJsZSBjZWxsIGJlaW5nIGNsaWNrZWQuICovXG4gICAgcmVhZG9ubHkgY2VsbENsaWNrZWQkOiBPYnNlcnZhYmxlPENlbGxDbGlja2VkTW9kZWw+O1xuXG4gICAgLyoqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW4gc2Nyb2xsaW5nIHRvIG92ZXJsYXBwZWQgY2VsbCBpcyBuZWVkZWQuICovXG4gICAgcmVhZG9ubHkgc2Nyb2xsVG9PdmVybGFwcGVkQ2VsbCQ6IE9ic2VydmFibGU8dm9pZD47XG5cbiAgICAvKiogU3RyZWFtIHRoYXQgZW1pdHMgd2hlbiB0aGUgdGFibGUgY2VsbCBiZWluZyBmb2N1c2VkLiAqL1xuICAgIHJlYWRvbmx5IGNlbGxGb2N1c2VkJDogT2JzZXJ2YWJsZTxGb2N1c2FibGVJdGVtUG9zaXRpb24+O1xuXG4gICAgLyoqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW4gdGhlIHRhYmxlIGNlbGwgYmVpbmcgZm9jdXNlZC4gKi9cbiAgICByZWFkb25seSBjZWxsQWN0aXZhdGUkOiBPYnNlcnZhYmxlPFRhYmxlQ2VsbEFjdGl2YXRlRXZlbnQ8YW55Pj47XG5cbiAgICAvKiogVG9nZ2xlIHJvdyBzdHJlYW0uICovXG4gICAgcmVhZG9ubHkgdG9nZ2xlUm93JDogT2JzZXJ2YWJsZTxUb2dnbGVSb3dNb2RlbD47XG5cbiAgICAvKiogRWRpdGFibGUgY2VsbHMgbWFwLiAqL1xuICAgIHJlYWRvbmx5IGVkaXRhYmxlQ2VsbHMgPSBuZXcgTWFwPFRhYmxlUm93PGFueT4sIEVkaXRhYmxlVGFibGVDZWxsW10+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IGNoaWxkUm93c0FkZGVkJCA9IG5ldyBTdWJqZWN0PHsgcm93OiBUYWJsZVJvdzsgcm93SW5kZXg6IG51bWJlcjsgaXRlbXM6IFRbXSB9PigpO1xuXG4gICAgLyoqIFN0cmVhbSB0byBsb2FkIGNoaWxkIGl0ZW1zIGZvciBhIHBhcnRpY3VsYXIgcm93cy4gKi9cbiAgICByZWFkb25seSBsb2FkQ2hpbGRSb3dzJCA9IG5ldyBTdWJqZWN0PFRhYmxlUm93PFQ+W10+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RvZ2dsZVJvd1N1YmplY3QgPSBuZXcgU3ViamVjdDxUb2dnbGVSb3dNb2RlbD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfc2Nyb2xsVG9PdmVybGFwcGVkQ2VsbFN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jZWxsQ2xpY2tlZFN1YmplY3QgPSBuZXcgU3ViamVjdDxDZWxsQ2xpY2tlZE1vZGVsPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jZWxsQWN0aXZhdGVTdWJqZWN0ID0gbmV3IFN1YmplY3Q8VGFibGVDZWxsQWN0aXZhdGVFdmVudDxhbnk+PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jZWxsRm9jdXNlZFN1YmplY3QgPSBuZXcgU3ViamVjdDxGb2N1c2FibGVJdGVtUG9zaXRpb24+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RvZ2dsZUFsbFNlbGVjdGFibGVSb3dzU3ViamVjdCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnRvZ2dsZUFsbFNlbGVjdGFibGVSb3dzJCA9IHRoaXMuX3RvZ2dsZUFsbFNlbGVjdGFibGVSb3dzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICAgICAgdGhpcy5jZWxsQ2xpY2tlZCQgPSB0aGlzLl9jZWxsQ2xpY2tlZFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG9PdmVybGFwcGVkQ2VsbCQgPSB0aGlzLl9zY3JvbGxUb092ZXJsYXBwZWRDZWxsU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICAgICAgdGhpcy5jZWxsRm9jdXNlZCQgPSB0aGlzLl9jZWxsRm9jdXNlZFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgICAgIHRoaXMuY2VsbEFjdGl2YXRlJCA9IHRoaXMuX2NlbGxBY3RpdmF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgICAgIHRoaXMudG9nZ2xlUm93JCA9IHRoaXMuX3RvZ2dsZVJvd1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqIGB0b2dnbGVSb3ckYCBzdHJlYW0gdHJpZ2dlci4gKi9cbiAgICB0b2dnbGVSb3coZXZ0OiBUb2dnbGVSb3dNb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90b2dnbGVSb3dTdWJqZWN0Lm5leHQoZXZ0KTtcbiAgICB9XG5cbiAgICAvKiogYHNjcm9sbFRvT3ZlcmxhcHBlZENlbGwkYCBzdHJlYW0gdHJpZ2dlci4gKi9cbiAgICBzY3JvbGxUb092ZXJsYXBwZWRDZWxsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zY3JvbGxUb092ZXJsYXBwZWRDZWxsU3ViamVjdC5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqIGBjZWxsQ2xpY2tlZCRgIHN0cmVhbSB0cmlnZ2VyLiAqL1xuICAgIGNlbGxDbGlja2VkKGV2dDogQ2VsbENsaWNrZWRNb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jZWxsQ2xpY2tlZFN1YmplY3QubmV4dChldnQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY2VsbEFjdGl2YXRlKGNvbHVtbkluZGV4OiBudW1iZXIsIHJvdzogVGFibGVSb3cpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2VsbEFjdGl2YXRlU3ViamVjdC5uZXh0KHsgY29sdW1uSW5kZXgsIHJvdzogcm93LnZhbHVlIH0pO1xuICAgIH1cblxuICAgIC8qKiBgY2VsbEZvY3VzZWQkYCBzdHJlYW0gdHJpZ2dlci4gKi9cbiAgICBjZWxsRm9jdXNlZChldnQ6IEZvY3VzYWJsZUl0ZW1Qb3NpdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9jZWxsRm9jdXNlZFN1YmplY3QubmV4dChldnQpO1xuICAgIH1cblxuICAgIC8qKiBgdG9nZ2xlQWxsU2VsZWN0YWJsZVJvd3MkYCBzdHJlYW0gdHJpZ2dlci4gKi9cbiAgICB0b2dnbGVBbGxTZWxlY3RhYmxlUm93cyhzZWxlY3RBbGw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdG9nZ2xlQWxsU2VsZWN0YWJsZVJvd3NTdWJqZWN0Lm5leHQoc2VsZWN0QWxsKTtcbiAgICB9XG5cbiAgICAvKiogR3JvdXBzIHRoZSB0YWJsZSByb3dzLiAqL1xuICAgIGdyb3VwVGFibGVSb3dzKFxuICAgICAgICBzb3VyY2VSb3dzOiBUYWJsZVJvd1tdLFxuICAgICAgICBncm91cHM6IEl0ZXJhYmxlPENvbGxlY3Rpb25Hcm91cD4sXG4gICAgICAgIGdyb3VwUnVsZXNNYXA6IE1hcDxzdHJpbmcsIENvbGxlY3Rpb25Hcm91cD5cbiAgICApOiBUYWJsZVJvd1tdIHtcbiAgICAgICAgY29uc3QgZ3JvdXBSdWxlcyA9IEFycmF5LmZyb20oZ3JvdXBzKTtcblxuICAgICAgICBpZiAoIWdyb3VwUnVsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEluIGNhc2UgaWYgcHJldmlvdXNseSB3ZSBoYWQgZ3JvdXBzIHdpdGggY29sbGFwc2VkIGl0ZW1zXG4gICAgICAgICAgICAgKiBidXQgbm93IHdlIGRvbid0IGhhdmUgaXQgd2UgbmVlZCB0byByZXNldCByb3cuaGlkZGVuIGZsYWdcbiAgICAgICAgICAgICAqIGluIG9yZGVyIHRvIGF2b2lkIGVtcHR5IHRhYmxlIGFmdGVyIGdyb3VwcyBzZXR0aW5ncyByZW1vdmluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzb3VyY2VSb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgICAgICAgIHJvdy5oaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHNvdXJjZVJvd3M7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCdWlsZCB0cmVlIGxpa2UgZ3JvdXBzXG4gICAgICAgIGNvbnN0IHRyZWVMaWtlR3JvdXBlZFJvd3MgPSBjcmVhdGVHcm91cGVkVGFibGVSb3dzVHJlZShncm91cFJ1bGVzLCBzb3VyY2VSb3dzKTtcblxuICAgICAgICAvLyBTb3J0IHRyZWUgbGlrZSBncm91cHNcbiAgICAgICAgY29uc3Qgc29ydGVkVHJlZUxpa2VHcm91cGVkUm93cyA9IHNvcnRUcmVlTGlrZUdyb3VwZWRSb3dzKHRyZWVMaWtlR3JvdXBlZFJvd3MsIGdyb3VwUnVsZXNNYXApO1xuXG4gICAgICAgIC8vIENvbnZlcnQgdHJlZSBsaWtlIGxpc3QgdG8gYSBmbGF0IGxpc3RcbiAgICAgICAgcmV0dXJuIGNvbnZlcnRUcmVlTGlrZVRvRmxhdExpc3Qoc29ydGVkVHJlZUxpa2VHcm91cGVkUm93cyk7XG4gICAgfVxuXG4gICAgLyoqIFNldHMgZWRpdGFibGUgY2VsbHMgZm9yIHBhcnRpY3VsYXIgcm93LiAqL1xuICAgIHVwZGF0ZUVkaXRhYmxlQ2VsbHMocm93OiBUYWJsZVJvdywgY2VsbHM6IEVkaXRhYmxlVGFibGVDZWxsW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lZGl0YWJsZUNlbGxzLnNldChyb3csIGNlbGxzKTtcbiAgICB9XG5cbiAgICAvKiogUmVtb3ZlcyBlZGl0YWJsZSBjZWxscyBvZiBwYXJ0aWN1bGFyIHJvdy4gKi9cbiAgICByZW1vdmVFZGl0YWJsZUNlbGxzKHJvdzogVGFibGVSb3cpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lZGl0YWJsZUNlbGxzLmRlbGV0ZShyb3cpO1xuICAgIH1cblxuICAgIC8qKiBUcmlnZ2VycyBzdHJlYW0gdG8gbG9hZCBjaGlsZCBpdGVtcyBmb3IgYSBwYXJ0aWN1bGFyIHJvd3MuICovXG4gICAgbG9hZENoaWxkUm93cyhyb3dzOiBUYWJsZVJvdzxUPiB8IFRhYmxlUm93PFQ+W10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZXhwYW5kYWJsZVJvd3M6IFRhYmxlUm93PFQ+W10gPSBbXTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm93cykpIHtcbiAgICAgICAgICAgIGV4cGFuZGFibGVSb3dzLnB1c2goLi4ucm93cy5maWx0ZXIoKHIpID0+ICFyLmNoaWxkSXRlbXNMb2FkaW5nJC52YWx1ZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHJvd3MuY2hpbGRJdGVtc0xvYWRpbmckLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXhwYW5kYWJsZVJvd3MucHVzaChyb3dzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvYWRDaGlsZFJvd3MkLm5leHQoZXhwYW5kYWJsZVJvd3MpO1xuICAgIH1cbn1cbiJdfQ==","import { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { DOCUMENT, DestroyRef, Directive, ElementRef, NgZone, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { fromEvent } from 'rxjs';\nimport { TableColumnResizeService } from '../services/table-column-resize.service';\nimport { TableRowService } from '../services/table-row.service';\nimport * as i0 from \"@angular/core\";\nexport class TableHeaderResizerDirective {\n constructor() {\n /** @hidden */\n this._destroyRef = inject(DestroyRef);\n /** @hidden */\n this._rtl = inject(RtlService, {\n optional: true\n });\n /** @hidden */\n this._elmRef = inject(ElementRef);\n /** @hidden */\n this._tableColumnResizeService = inject(TableColumnResizeService);\n /** @hidden */\n this._tableRowService = inject(TableRowService);\n /** @hidden */\n this._zone = inject(NgZone);\n /** @hidden */\n this._document = inject(DOCUMENT);\n }\n /** @hidden */\n get _headerCellFocused() {\n return this._document.activeElement?.tagName.toLowerCase() === 'th';\n }\n /** @hidden */\n ngOnInit() {\n this._zone.runOutsideAngular(() => {\n fromEvent(this._elmRef.nativeElement, 'keydown')\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((event) => {\n if ((KeyUtil.isKeyCode(event, LEFT_ARROW) ||\n (this._rtl?.rtl.value && KeyUtil.isKeyCode(event, RIGHT_ARROW))) &&\n event.shiftKey &&\n this._headerCellFocused) {\n this._tableColumnResizeService._processResize(-32);\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n else if ((KeyUtil.isKeyCode(event, RIGHT_ARROW) ||\n (this._rtl?.rtl.value && KeyUtil.isKeyCode(event, LEFT_ARROW))) &&\n event.shiftKey &&\n this._headerCellFocused) {\n this._tableColumnResizeService._processResize(32);\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n });\n fromEvent(this._elmRef.nativeElement, 'focusin')\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n if (!this._focusinTimerId) {\n return;\n }\n clearTimeout(this._focusinTimerId);\n this._focusinTimerId = null;\n });\n fromEvent(this._elmRef.nativeElement, 'focusout')\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._focusinTimerId = setTimeout(() => {\n this.focusedCellPosition = null;\n });\n });\n });\n this._tableRowService.cellFocused$.subscribe((evt) => {\n this._onCellFocused(evt);\n });\n }\n /** @hidden */\n _onCellFocused(position) {\n this.focusedCellPosition = { rowIndex: position.rowIndex, colIndex: position.colIndex };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableHeaderResizerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: TableHeaderResizerDirective, isStandalone: true, selector: \"[fdpTableHeaderResizer]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableHeaderResizerDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdpTableHeaderResizer]',\n standalone: true\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaGVhZGVyLXJlc2l6ZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzL2RpcmVjdGl2ZXMvdGFibGUtaGVhZGVyLXJlc2l6ZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFHSCxPQUFPLEVBRVAsVUFBVSxFQUNiLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNuRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBTWhFLE1BQU0sT0FBTywyQkFBMkI7SUFKeEM7UUFRSSxjQUFjO1FBQ0csZ0JBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFbEQsY0FBYztRQUNHLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFO1lBQ3ZDLFFBQVEsRUFBRSxJQUFJO1NBQ2pCLENBQUMsQ0FBQztRQUVILGNBQWM7UUFDRyxZQUFPLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTlDLGNBQWM7UUFDRyw4QkFBeUIsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUU5RSxjQUFjO1FBQ0cscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTVELGNB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RCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGNBQWM7SUFDTixjQUFjLENBQUMsUUFBK0I7UUFDbEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1RixDQUFDOzhHQXhGUSwyQkFBMkI7a0dBQTNCLDJCQUEyQjs7MkZBQTNCLDJCQUEyQjtrQkFKdkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxVQUFVLEVBQUUsSUFBSTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMRUZUX0FSUk9XLCBSSUdIVF9BUlJPVyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5cbmltcG9ydCB7IERPQ1VNRU5ULCBEZXN0cm95UmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE5nWm9uZSwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7XG4gICAgRm9jdXNhYmxlQ2VsbFBvc2l0aW9uLFxuICAgIEZvY3VzYWJsZUl0ZW1Qb3NpdGlvbixcbiAgICBLZXlVdGlsLFxuICAgIE51bGxhYmxlLFxuICAgIFJ0bFNlcnZpY2Vcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUYWJsZUNvbHVtblJlc2l6ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90YWJsZS1jb2x1bW4tcmVzaXplLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGVSb3dTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdGFibGUtcm93LnNlcnZpY2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZHBUYWJsZUhlYWRlclJlc2l6ZXJdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlSGVhZGVyUmVzaXplckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBmb2N1c2VkQ2VsbFBvc2l0aW9uOiBOdWxsYWJsZTxGb2N1c2FibGVDZWxsUG9zaXRpb24+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ydGwgPSBpbmplY3QoUnRsU2VydmljZSwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lbG1SZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RhYmxlQ29sdW1uUmVzaXplU2VydmljZSA9IGluamVjdChUYWJsZUNvbHVtblJlc2l6ZVNlcnZpY2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF90YWJsZVJvd1NlcnZpY2UgPSBpbmplY3QoVGFibGVSb3dTZXJ2aWNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfem9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ZvY3VzaW5UaW1lcklkOiBhbnk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgZ2V0IF9oZWFkZXJDZWxsRm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ/LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ3RoJztcbiAgICB9XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4odGhpcy5fZWxtUmVmLm5hdGl2ZUVsZW1lbnQsICdrZXlkb3duJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBMRUZUX0FSUk9XKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLl9ydGw/LnJ0bC52YWx1ZSAmJiBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgUklHSFRfQVJST1cpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnNoaWZ0S2V5ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9oZWFkZXJDZWxsRm9jdXNlZFxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlQ29sdW1uUmVzaXplU2VydmljZS5fcHJvY2Vzc1Jlc2l6ZSgtMzIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBSSUdIVF9BUlJPVykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5fcnRsPy5ydGwudmFsdWUgJiYgS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIExFRlRfQVJST1cpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnNoaWZ0S2V5ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9oZWFkZXJDZWxsRm9jdXNlZFxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlQ29sdW1uUmVzaXplU2VydmljZS5fcHJvY2Vzc1Jlc2l6ZSgzMik7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZnJvbUV2ZW50KHRoaXMuX2VsbVJlZi5uYXRpdmVFbGVtZW50LCAnZm9jdXNpbicpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2ZvY3VzaW5UaW1lcklkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2ZvY3VzaW5UaW1lcklkKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZm9jdXNpblRpbWVySWQgPSBudWxsO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBmcm9tRXZlbnQodGhpcy5fZWxtUmVmLm5hdGl2ZUVsZW1lbnQsICdmb2N1c291dCcpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9mb2N1c2luVGltZXJJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c2VkQ2VsbFBvc2l0aW9uID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3RhYmxlUm93U2VydmljZS5jZWxsRm9jdXNlZCQuc3Vic2NyaWJlKChldnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX29uQ2VsbEZvY3VzZWQoZXZ0KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9vbkNlbGxGb2N1c2VkKHBvc2l0aW9uOiBGb2N1c2FibGVJdGVtUG9zaXRpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkQ2VsbFBvc2l0aW9uID0geyByb3dJbmRleDogcG9zaXRpb24ucm93SW5kZXgsIGNvbEluZGV4OiBwb3NpdGlvbi5jb2xJbmRleCB9O1xuICAgIH1cbn1cbiJdfQ==","import { Directive, TemplateRef } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/** Column header container. */\n// eslint-disable-next-line @angular-eslint/directive-selector\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class FdpTableHeader {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdpTableHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: FdpTableHeader, isStandalone: true, selector: \"fdp-table-header\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdpTableHeader, decorators: [{\n type: Directive,\n args: [{ selector: 'fdp-table-header', standalone: true }]\n }] });\n/**\n * Header cell definition for a platform table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class FdpHeaderCellDef {\n /** @hidden */\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n /** @hidden */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdpHeaderCellDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: FdpHeaderCellDef, isStandalone: true, selector: \"[fdpHeaderCellDef]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdpHeaderCellDef, decorators: [{\n type: Directive,\n args: [{ selector: '[fdpHeaderCellDef]', standalone: true }]\n }], ctorParameters: () => [{ type: i0.TemplateRef }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaGVhZGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9kaXJlY3RpdmVzL3RhYmxlLWhlYWRlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBT3ZELCtCQUErQjtBQUMvQiw4REFBOEQ7QUFFOUQsa0VBQWtFO0FBQ2xFLE1BQU0sT0FBTyxjQUFjOzhHQUFkLGNBQWM7a0dBQWQsY0FBYzs7MkZBQWQsY0FBYztrQkFGMUIsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFOztBQUk3RDs7O0dBR0c7QUFFSCxrRUFBa0U7QUFDbEUsTUFBTSxPQUFPLGdCQUFnQjtJQUN6QixjQUFjO0lBQ2QsWUFBbUIsV0FBOEM7UUFBOUMsZ0JBQVcsR0FBWCxXQUFXLENBQW1DO0lBQUcsQ0FBQztJQUVyRSxjQUFjO0lBQ2QsTUFBTSxDQUFDLHNCQUFzQixDQUFDLEdBQXFCLEVBQUUsR0FBNEI7UUFDN0UsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzs4R0FQUSxnQkFBZ0I7a0dBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFGNUIsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmRwQ2VsbERlZkNvbnRleHQgfSBmcm9tICcuL3RhYmxlLWNlbGwuZGlyZWN0aXZlJztcblxuZXhwb3J0IGludGVyZmFjZSBGZHBIZWFkZXJDZWxsRGVmQ29udGV4dDxUID0gYW55PiB7XG4gICAgJGltcGxpY2l0OiBUO1xufVxuXG4vKiogQ29sdW1uIGhlYWRlciBjb250YWluZXIuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnZmRwLXRhYmxlLWhlYWRlcicsIHN0YW5kYWxvbmU6IHRydWUgfSlcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGNsYXNzIEZkcFRhYmxlSGVhZGVyIHt9XG5cbi8qKlxuICogSGVhZGVyIGNlbGwgZGVmaW5pdGlvbiBmb3IgYSBwbGF0Zm9ybSB0YWJsZS5cbiAqIENhcHR1cmVzIHRoZSB0ZW1wbGF0ZSBvZiBhIGNvbHVtbidzIGRhdGEgcm93IGNlbGwgYXMgd2VsbCBhcyBjZWxsLXNwZWNpZmljIHByb3BlcnRpZXMuXG4gKi9cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tmZHBIZWFkZXJDZWxsRGVmXScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGNsYXNzIEZkcEhlYWRlckNlbGxEZWY8VCA9IGFueT4ge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxGZHBDZWxsRGVmQ29udGV4dDxUPj4pIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKGRpcjogRmRwSGVhZGVyQ2VsbERlZiwgY3R4OiBGZHBIZWFkZXJDZWxsRGVmQ29udGV4dCk6IGN0eCBpcyBGZHBIZWFkZXJDZWxsRGVmQ29udGV4dCB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbn1cbiJdfQ==","import { Directive, inject, Input } from '@angular/core';\nimport { DEFAULT_TABLE_STATE, FDP_TABLE_STATE_DIRECTIVE } from '../constants';\nimport { TableInitialState } from '../models';\nimport { TableService } from '../services/table.service';\nimport * as i0 from \"@angular/core\";\nexport class TableInitialStateDirective extends TableInitialState {\n constructor() {\n super(...arguments);\n /** Initial sort options. */\n this.initialSortBy = [];\n /** Initial filter options. */\n this.initialFilterBy = [];\n /** Initial group options. */\n this.initialGroupBy = [];\n /** Initial page. */\n this.initialPage = 1;\n /** @hidden */\n this._tableService = inject(TableService);\n }\n /**\n * Initial state of table.\n */\n set state(value) {\n this.setTableState(value || DEFAULT_TABLE_STATE);\n }\n get state() {\n return this.getTableState();\n }\n /** @hidden */\n setTable(table) {\n this._table = table;\n }\n /** @hidden */\n setInitialState() {\n const prevState = this.getTableState();\n const columns = this._table.getTableColumns();\n const page = prevState.page;\n const visibleColumns = this.initialVisibleColumns ||\n (prevState.columns.length ? prevState.columns : columns.filter((c) => c.visible).map(({ name }) => name));\n const directiveInitialPage = this.initialPage ?? 1;\n this._table._loadPreviousPages =\n this._table.pageScrolling && this._table.loadPagesBefore && directiveInitialPage > 1;\n const initialPage = this._table._loadPreviousPages\n ? 1\n : directiveInitialPage < page.currentPage\n ? page.currentPage\n : directiveInitialPage;\n const initialPageSize = (this._table._loadPreviousPages ? directiveInitialPage : initialPage) *\n (this._table.pageSize || page.pageSize);\n this.setTableState({\n ...prevState,\n columns: visibleColumns,\n columnKeys: columns.filter((c) => visibleColumns.includes(c.name)).map((c) => c.key),\n sortBy: this.initialSortBy || prevState.sortBy,\n filterBy: this.initialFilterBy || prevState.filterBy,\n groupBy: this.initialGroupBy || prevState.groupBy,\n freezeToColumn: this._table.freezeColumnsTo || prevState.freezeToColumn,\n freezeToEndColumn: this._table.freezeEndColumnsTo || prevState.freezeToEndColumn,\n page: {\n currentPage: initialPage,\n pageSize: initialPageSize\n }\n });\n }\n /** Get current state/settings of the Table. */\n getTableState() {\n return this._tableService.getTableState();\n }\n /** Set current state/settings of the Table. */\n setTableState(state) {\n this._tableService.setTableState(state);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableInitialStateDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: TableInitialStateDirective, isStandalone: true, selector: \"[fdpTableInitialState],\\n fdp-table\", inputs: { initialVisibleColumns: \"initialVisibleColumns\", initialSortBy: \"initialSortBy\", initialFilterBy: \"initialFilterBy\", initialGroupBy: \"initialGroupBy\", initialPage: \"initialPage\", state: \"state\" }, providers: [\n {\n provide: FDP_TABLE_STATE_DIRECTIVE,\n useExisting: TableInitialStateDirective\n }\n ], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableInitialStateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: `[fdpTableInitialState],\n fdp-table`,\n standalone: true,\n providers: [\n {\n provide: FDP_TABLE_STATE_DIRECTIVE,\n useExisting: TableInitialStateDirective\n }\n ]\n }]\n }], propDecorators: { initialVisibleColumns: [{\n type: Input\n }], initialSortBy: [{\n type: Input\n }], initialFilterBy: [{\n type: Input\n }], initialGroupBy: [{\n type: Input\n }], initialPage: [{\n type: Input\n }], state: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaW5pdGlhbC1zdGF0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvZGlyZWN0aXZlcy90YWJsZS1pbml0aWFsLXN0YXRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBY3pELE1BQU0sT0FBTywwQkFBMkIsU0FBUSxpQkFBaUI7SUFYakU7O1FBZ0JJLDRCQUE0QjtRQUU1QixrQkFBYSxHQUFxQixFQUFFLENBQUM7UUFFckMsOEJBQThCO1FBRTlCLG9CQUFlLEdBQXVCLEVBQUUsQ0FBQztRQUV6Qyw2QkFBNkI7UUFFN0IsbUJBQWMsR0FBc0IsRUFBRSxDQUFDO1FBRXZDLG9CQUFvQjtRQUVwQixnQkFBVyxHQUFHLENBQUMsQ0FBQztRQWlCaEIsY0FBYztRQUNHLGtCQUFhLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0tBd0R6RDtJQXhFRzs7T0FFRztJQUNILElBQ0ksS0FBSyxDQUFDLEtBQWlCO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxJQUFJLG1CQUFtQixDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFRRCxjQUFjO0lBQ2QsUUFBUSxDQUFDLEtBQVk7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDeEIs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O1NBQ0o7OzJGQUVRLDBCQUEwQjtrQkFYdEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUU7Y0FDQTtvQkFDVixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSx5QkFBeUI7NEJBQ2xDLFdBQVcsNEJBQTRCO3lCQUMxQztxQkFDSjtpQkFDSjs4QkFJRyxxQkFBcUI7c0JBRHBCLEtBQUs7Z0JBS04sYUFBYTtzQkFEWixLQUFLO2dCQUtOLGVBQWU7c0JBRGQsS0FBSztnQkFLTixjQUFjO3NCQURiLEtBQUs7Z0JBS04sV0FBVztzQkFEVixLQUFLO2dCQU9GLEtBQUs7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgaW5qZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgREVGQVVMVF9UQUJMRV9TVEFURSwgRkRQX1RBQkxFX1NUQVRFX0RJUkVDVElWRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uRmlsdGVyLCBDb2xsZWN0aW9uR3JvdXAsIENvbGxlY3Rpb25Tb3J0LCBUYWJsZVN0YXRlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUYWJsZUluaXRpYWxTdGF0ZSB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBUYWJsZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90YWJsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSAnLi4vdGFibGUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogYFtmZHBUYWJsZUluaXRpYWxTdGF0ZV0sXG4gICAgZmRwLXRhYmxlYCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRFBfVEFCTEVfU1RBVEVfRElSRUNUSVZFLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFRhYmxlSW5pdGlhbFN0YXRlRGlyZWN0aXZlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlSW5pdGlhbFN0YXRlRGlyZWN0aXZlIGV4dGVuZHMgVGFibGVJbml0aWFsU3RhdGUge1xuICAgIC8qKiBJbml0aWFsIHZpc2libGUgY29sdW1ucy4gQ29uc2lzdCBvZiBhIGxpc3Qgb2YgdW5pcXVlIGNvbHVtbiBuYW1lcyAqL1xuICAgIEBJbnB1dCgpXG4gICAgaW5pdGlhbFZpc2libGVDb2x1bW5zOiBzdHJpbmdbXTtcblxuICAgIC8qKiBJbml0aWFsIHNvcnQgb3B0aW9ucy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGluaXRpYWxTb3J0Qnk6IENvbGxlY3Rpb25Tb3J0W10gPSBbXTtcblxuICAgIC8qKiBJbml0aWFsIGZpbHRlciBvcHRpb25zLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaW5pdGlhbEZpbHRlckJ5OiBDb2xsZWN0aW9uRmlsdGVyW10gPSBbXTtcblxuICAgIC8qKiBJbml0aWFsIGdyb3VwIG9wdGlvbnMuICovXG4gICAgQElucHV0KClcbiAgICBpbml0aWFsR3JvdXBCeTogQ29sbGVjdGlvbkdyb3VwW10gPSBbXTtcblxuICAgIC8qKiBJbml0aWFsIHBhZ2UuICovXG4gICAgQElucHV0KClcbiAgICBpbml0aWFsUGFnZSA9IDE7XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsIHN0YXRlIG9mIHRhYmxlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHN0YXRlKHZhbHVlOiBUYWJsZVN0YXRlKSB7XG4gICAgICAgIHRoaXMuc2V0VGFibGVTdGF0ZSh2YWx1ZSB8fCBERUZBVUxUX1RBQkxFX1NUQVRFKTtcbiAgICB9XG5cbiAgICBnZXQgc3RhdGUoKTogVGFibGVTdGF0ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRhYmxlU3RhdGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RhYmxlOiBUYWJsZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGFibGVTZXJ2aWNlID0gaW5qZWN0KFRhYmxlU2VydmljZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldFRhYmxlKHRhYmxlOiBUYWJsZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJsZSA9IHRhYmxlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0SW5pdGlhbFN0YXRlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLmdldFRhYmxlU3RhdGUoKTtcbiAgICAgICAgY29uc3QgY29sdW1ucyA9IHRoaXMuX3RhYmxlLmdldFRhYmxlQ29sdW1ucygpO1xuICAgICAgICBjb25zdCBwYWdlID0gcHJldlN0YXRlLnBhZ2U7XG4gICAgICAgIGNvbnN0IHZpc2libGVDb2x1bW5zID1cbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbFZpc2libGVDb2x1bW5zIHx8XG4gICAgICAgICAgICAocHJldlN0YXRlLmNvbHVtbnMubGVuZ3RoID8gcHJldlN0YXRlLmNvbHVtbnMgOiBjb2x1bW5zLmZpbHRlcigoYykgPT4gYy52aXNpYmxlKS5tYXAoKHsgbmFtZSB9KSA9PiBuYW1lKSk7XG5cbiAgICAgICAgY29uc3QgZGlyZWN0aXZlSW5pdGlhbFBhZ2UgPSB0aGlzLmluaXRpYWxQYWdlID8/IDE7XG5cbiAgICAgICAgdGhpcy5fdGFibGUuX2xvYWRQcmV2aW91c1BhZ2VzID1cbiAgICAgICAgICAgIHRoaXMuX3RhYmxlLnBhZ2VTY3JvbGxpbmcgJiYgdGhpcy5fdGFibGUubG9hZFBhZ2VzQmVmb3JlICYmIGRpcmVjdGl2ZUluaXRpYWxQYWdlID4gMTtcblxuICAgICAgICBjb25zdCBpbml0aWFsUGFnZSA9IHRoaXMuX3RhYmxlLl9sb2FkUHJldmlvdXNQYWdlc1xuICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICA6IGRpcmVjdGl2ZUluaXRpYWxQYWdlIDwgcGFnZS5jdXJyZW50UGFnZVxuICAgICAgICAgICAgICA/IHBhZ2UuY3VycmVudFBhZ2VcbiAgICAgICAgICAgICAgOiBkaXJlY3RpdmVJbml0aWFsUGFnZTtcblxuICAgICAgICBjb25zdCBpbml0aWFsUGFnZVNpemUgPVxuICAgICAgICAgICAgKHRoaXMuX3RhYmxlLl9sb2FkUHJldmlvdXNQYWdlcyA/IGRpcmVjdGl2ZUluaXRpYWxQYWdlIDogaW5pdGlhbFBhZ2UpICpcbiAgICAgICAgICAgICh0aGlzLl90YWJsZS5wYWdlU2l6ZSB8fCBwYWdlLnBhZ2VTaXplKTtcblxuICAgICAgICB0aGlzLnNldFRhYmxlU3RhdGUoe1xuICAgICAgICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgICAgICAgY29sdW1uczogdmlzaWJsZUNvbHVtbnMsXG4gICAgICAgICAgICBjb2x1bW5LZXlzOiBjb2x1bW5zLmZpbHRlcigoYykgPT4gdmlzaWJsZUNvbHVtbnMuaW5jbHVkZXMoYy5uYW1lKSkubWFwKChjKSA9PiBjLmtleSksXG4gICAgICAgICAgICBzb3J0Qnk6IHRoaXMuaW5pdGlhbFNvcnRCeSB8fCBwcmV2U3RhdGUuc29ydEJ5LFxuICAgICAgICAgICAgZmlsdGVyQnk6IHRoaXMuaW5pdGlhbEZpbHRlckJ5IHx8IHByZXZTdGF0ZS5maWx0ZXJCeSxcbiAgICAgICAgICAgIGdyb3VwQnk6IHRoaXMuaW5pdGlhbEdyb3VwQnkgfHwgcHJldlN0YXRlLmdyb3VwQnksXG4gICAgICAgICAgICBmcmVlemVUb0NvbHVtbjogdGhpcy5fdGFibGUuZnJlZXplQ29sdW1uc1RvIHx8IHByZXZTdGF0ZS5mcmVlemVUb0NvbHVtbixcbiAgICAgICAgICAgIGZyZWV6ZVRvRW5kQ29sdW1uOiB0aGlzLl90YWJsZS5mcmVlemVFbmRDb2x1bW5zVG8gfHwgcHJldlN0YXRlLmZyZWV6ZVRvRW5kQ29sdW1uLFxuICAgICAgICAgICAgcGFnZToge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlOiBpbml0aWFsUGFnZSxcbiAgICAgICAgICAgICAgICBwYWdlU2l6ZTogaW5pdGlhbFBhZ2VTaXplXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBHZXQgY3VycmVudCBzdGF0ZS9zZXR0aW5ncyBvZiB0aGUgVGFibGUuICovXG4gICAgZ2V0VGFibGVTdGF0ZSgpOiBUYWJsZVN0YXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlU2VydmljZS5nZXRUYWJsZVN0YXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIFNldCBjdXJyZW50IHN0YXRlL3NldHRpbmdzIG9mIHRoZSBUYWJsZS4gKi9cbiAgICBzZXRUYWJsZVN0YXRlKHN0YXRlOiBUYWJsZVN0YXRlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYmxlU2VydmljZS5zZXRUYWJsZVN0YXRlKHN0YXRlKTtcbiAgICB9XG59XG4iXX0=","import { DestroyRef, Directive, DOCUMENT, ElementRef, forwardRef, inject, NgZone } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent, Observable } from 'rxjs';\nimport { filter, share, tap } from 'rxjs/operators';\nimport { TABLE_SCROLLABLE, TableScrollDispatcherService } from '../services/table-scroll-dispatcher.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../services/table-scroll-dispatcher.service\";\n/**\n * Table Scrollable.\n * That directive should be assigned to table scrollable area.\n * It registers itself in table scroll dispatcher\n * and notify once element scrolled.\n *\n * For internal usage.\n */\nexport class TableScrollableDirective {\n /** @hidden */\n constructor(elementRef, scrollDispatcher, ngZone) {\n this.elementRef = elementRef;\n this.scrollDispatcher = scrollDispatcher;\n this.ngZone = ngZone;\n /** @hidden */\n this._skipEvent = false;\n /** @hidden */\n this._prevScrollTop = 0;\n /** @hidden */\n this._prevScrollLeft = 0;\n /** @hidden */\n this._destroyRef = inject(DestroyRef);\n /** @hidden */\n this._document = inject(DOCUMENT);\n /** Scroll events stream */\n this._elementScrollStream = new Observable((observer) => {\n const subscription = this.ngZone.runOutsideAngular(() => fromEvent(this.elementRef.nativeElement, 'scroll').subscribe(observer));\n return () => subscription.unsubscribe();\n }).pipe(filter(() => {\n if (this._skipEvent) {\n this._skipEvent = false;\n return false;\n }\n return true;\n }), takeUntilDestroyed(this._destroyRef), share());\n /** Vertical scroll stream */\n this._elementVerticalScrollStream = this._elementScrollStream.pipe(filter(() => this._prevScrollTop !== this.getScrollTop()), tap(() => (this._prevScrollTop = this.getScrollTop())));\n /** Horizontal scroll stream */\n this._elementHorizontalScrollStream = this._elementScrollStream.pipe(filter(() => this._prevScrollLeft !== this.getScrollLeft()), tap(() => (this._prevScrollLeft = this.getScrollLeft())));\n }\n /** @hidden */\n ngOnInit() {\n this.scrollDispatcher.register(this);\n }\n /** @hidden */\n ngOnDestroy() {\n this.scrollDispatcher.deregister(this);\n }\n /** Returns observable that emits when a scroll event is fired on the host element. */\n getScrollStream() {\n return this._elementScrollStream;\n }\n /** Returns observable that emits when a vertical scroll event is happened on the host element. */\n getVerticalScrollStream() {\n return this._elementVerticalScrollStream;\n }\n /** Returns observable that emits when a horizontal scroll event is happened on the host element. */\n getHorizontalScrollStream() {\n return this._elementHorizontalScrollStream;\n }\n /** Returns scrollTop position of the host element. */\n getScrollTop() {\n return this.elementRef.nativeElement?.scrollTop;\n }\n /** Returns scrollLeft position of the host element. */\n getScrollLeft() {\n return this.elementRef.nativeElement?.scrollLeft;\n }\n /** Set scrollTop position of the host element. */\n setScrollTop(scrollTop, emitEvent = true) {\n if (!this.elementRef.nativeElement || this.elementRef.nativeElement.scrollTop === scrollTop) {\n return;\n }\n this._skipEvent = !emitEvent;\n this.elementRef.nativeElement.scrollTop = scrollTop;\n }\n /** Set scrollLeft position of the host element. */\n setScrollLeft(scrollLeft, emitEvent = true) {\n if (!this.elementRef.nativeElement || this.elementRef.nativeElement.scrollLeft === scrollLeft) {\n return;\n }\n this._skipEvent = !emitEvent;\n this.elementRef.nativeElement.scrollLeft = scrollLeft;\n }\n /** Scrolls to overlapped cell. */\n scrollToOverlappedCell(rtl, freezableColumnsSize, freezableEndColumnSize) {\n const tableScrollableEl = this.elementRef.nativeElement;\n const isRtl = rtl;\n if ((freezableColumnsSize || freezableEndColumnSize) &&\n tableScrollableEl.scrollWidth > tableScrollableEl.clientWidth) {\n const activeEl = this._document.activeElement;\n if (activeEl &&\n !(activeEl.classList.contains('fd-table__cell--fixed') ||\n activeEl.classList.contains('fd-table__cell--fixed-end'))) {\n if (freezableColumnsSize && !freezableEndColumnSize) {\n activeEl.scrollIntoView({ block: 'nearest', inline: 'end' });\n }\n else if (!freezableColumnsSize && freezableEndColumnSize) {\n activeEl.scrollIntoView({ block: 'nearest', inline: 'center' });\n }\n else if (freezableColumnsSize && freezableEndColumnSize) {\n // check to see if another element obstructs the active element\n const activeElmRect = activeEl.getBoundingClientRect();\n const activeElLeft = activeElmRect.left;\n const activeElTop = activeElmRect.top;\n const activeElWidth = activeElmRect.width;\n const topElementFromLeft = this._document.elementFromPoint(activeElLeft, activeElTop);\n // if the activeEl is overlapped\n if (topElementFromLeft &&\n !activeEl.isSameNode(topElementFromLeft) &&\n topElementFromLeft.classList.contains('fd-table__cell--fixed-end')) {\n const topElementX = topElementFromLeft.getBoundingClientRect().left;\n const leftVal = isRtl\n ? (activeElLeft + activeElWidth - topElementX) * -1\n : activeElLeft + activeElWidth - topElementX;\n tableScrollableEl.scrollBy({ top: 0, left: leftVal });\n }\n else if (topElementFromLeft &&\n !activeEl.isSameNode(topElementFromLeft) &&\n topElementFromLeft.classList.contains('fd-table__cell--fixed')) {\n const topElementX = topElementFromLeft.getBoundingClientRect().right;\n const leftVal = isRtl\n ? (activeElLeft - activeElWidth - topElementX) * -1\n : activeElLeft - activeElWidth - topElementX;\n tableScrollableEl.scrollBy({ top: 0, left: leftVal });\n }\n }\n }\n }\n }\n /** Set Scroll Position during component initialization. */\n initializeScrollTop(scrollTop) {\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n this.setScrollTop(scrollTop, false);\n });\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableScrollableDirective, deps: [{ token: i0.ElementRef }, { token: i1.TableScrollDispatcherService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: TableScrollableDirective, isStandalone: true, selector: \"[fdpTableScrollable]\", providers: [{ provide: TABLE_SCROLLABLE, useExisting: forwardRef(() => TableScrollableDirective) }], exportAs: [\"tableScrollable\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableScrollableDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdpTableScrollable]',\n exportAs: 'tableScrollable',\n standalone: true,\n providers: [{ provide: TABLE_SCROLLABLE, useExisting: forwardRef(() => TableScrollableDirective) }]\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.TableScrollDispatcherService }, { type: i0.NgZone }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc2Nyb2xsYWJsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvZGlyZWN0aXZlcy90YWJsZS1zY3JvbGxhYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsVUFBVSxFQUNWLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLFVBQVUsRUFDVixNQUFNLEVBQ04sTUFBTSxFQUdULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFZLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFDSCxnQkFBZ0IsRUFFaEIsNEJBQTRCLEVBQy9CLE1BQU0sNkNBQTZDLENBQUM7OztBQUVyRDs7Ozs7OztHQU9HO0FBT0gsTUFBTSxPQUFPLHdCQUF3QjtJQThDakMsY0FBYztJQUNkLFlBQ1csVUFBbUMsRUFDaEMsZ0JBQThDLEVBQzlDLE1BQWM7UUFGakIsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFDaEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUE4QjtRQUM5QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBakQ1QixjQUFjO1FBQ04sZUFBVSxHQUFHLEtBQUssQ0FBQztRQUUzQixjQUFjO1FBQ04sbUJBQWMsR0FBRyxDQUFDLENBQUM7UUFFM0IsY0FBYztRQUNOLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO1FBRTVCLGNBQWM7UUFDRyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVsRCxjQUFjO1FBQ0csY0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FB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QixFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHlCQUF5QixDQUFDLEVBQUUsQ0FBQztpQkFDdEciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIERlc3Ryb3lSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIERPQ1VNRU5ULFxuICAgIEVsZW1lbnRSZWYsXG4gICAgZm9yd2FyZFJlZixcbiAgICBpbmplY3QsXG4gICAgTmdab25lLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIE9ic2VydmFibGUsIE9ic2VydmVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHNoYXJlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICAgIFRBQkxFX1NDUk9MTEFCTEUsXG4gICAgVGFibGVTY3JvbGxhYmxlLFxuICAgIFRhYmxlU2Nyb2xsRGlzcGF0Y2hlclNlcnZpY2Vcbn0gZnJvbSAnLi4vc2VydmljZXMvdGFibGUtc2Nyb2xsLWRpc3BhdGNoZXIuc2VydmljZSc7XG5cbi8qKlxuICogVGFibGUgU2Nyb2xsYWJsZS5cbiAqIFRoYXQgZGlyZWN0aXZlIHNob3VsZCBiZSBhc3NpZ25lZCB0byB0YWJsZSBzY3JvbGxhYmxlIGFyZWEuXG4gKiBJdCByZWdpc3RlcnMgaXRzZWxmIGluIHRhYmxlIHNjcm9sbCBkaXNwYXRjaGVyXG4gKiBhbmQgbm90aWZ5IG9uY2UgZWxlbWVudCBzY3JvbGxlZC5cbiAqXG4gKiBGb3IgaW50ZXJuYWwgdXNhZ2UuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2ZkcFRhYmxlU2Nyb2xsYWJsZV0nLFxuICAgIGV4cG9ydEFzOiAndGFibGVTY3JvbGxhYmxlJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogVEFCTEVfU0NST0xMQUJMRSwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGFibGVTY3JvbGxhYmxlRGlyZWN0aXZlKSB9XVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZVNjcm9sbGFibGVEaXJlY3RpdmUgaW1wbGVtZW50cyBUYWJsZVNjcm9sbGFibGUsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NraXBFdmVudCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wcmV2U2Nyb2xsVG9wID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJldlNjcm9sbExlZnQgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG5cbiAgICAvKiogU2Nyb2xsIGV2ZW50cyBzdHJlYW0gKi9cbiAgICBwcml2YXRlIF9lbGVtZW50U2Nyb2xsU3RyZWFtOiBPYnNlcnZhYmxlPEV2ZW50PiA9IG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcjogT2JzZXJ2ZXI8RXZlbnQ+KSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+XG4gICAgICAgICAgICBmcm9tRXZlbnQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdzY3JvbGwnKS5zdWJzY3JpYmUob2JzZXJ2ZXIpXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiAoKSA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9KS5waXBlKFxuICAgICAgICBmaWx0ZXIoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3NraXBFdmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NraXBFdmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpLFxuICAgICAgICBzaGFyZSgpXG4gICAgKTtcblxuICAgIC8qKiBWZXJ0aWNhbCBzY3JvbGwgc3RyZWFtICovXG4gICAgcHJpdmF0ZSBfZWxlbWVudFZlcnRpY2FsU2Nyb2xsU3RyZWFtOiBPYnNlcnZhYmxlPEV2ZW50PiA9IHRoaXMuX2VsZW1lbnRTY3JvbGxTdHJlYW0ucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuX3ByZXZTY3JvbGxUb3AgIT09IHRoaXMuZ2V0U2Nyb2xsVG9wKCkpLFxuICAgICAgICB0YXAoKCkgPT4gKHRoaXMuX3ByZXZTY3JvbGxUb3AgPSB0aGlzLmdldFNjcm9sbFRvcCgpKSlcbiAgICApO1xuXG4gICAgLyoqIEhvcml6b250YWwgc2Nyb2xsIHN0cmVhbSAqL1xuICAgIHByaXZhdGUgX2VsZW1lbnRIb3Jpem9udGFsU2Nyb2xsU3RyZWFtOiBPYnNlcnZhYmxlPEV2ZW50PiA9IHRoaXMuX2VsZW1lbnRTY3JvbGxTdHJlYW0ucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuX3ByZXZTY3JvbGxMZWZ0ICE9PSB0aGlzLmdldFNjcm9sbExlZnQoKSksXG4gICAgICAgIHRhcCgoKSA9PiAodGhpcy5fcHJldlNjcm9sbExlZnQgPSB0aGlzLmdldFNjcm9sbExlZnQoKSkpXG4gICAgKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcHJvdGVjdGVkIHNjcm9sbERpc3BhdGNoZXI6IFRhYmxlU2Nyb2xsRGlzcGF0Y2hlclNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBuZ1pvbmU6IE5nWm9uZVxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2Nyb2xsRGlzcGF0Y2hlci5yZWdpc3Rlcih0aGlzKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNjcm9sbERpc3BhdGNoZXIuZGVyZWdpc3Rlcih0aGlzKTtcbiAgICB9XG5cbiAgICAvKiogUmV0dXJucyBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgd2hlbiBhIHNjcm9sbCBldmVudCBpcyBmaXJlZCBvbiB0aGUgaG9zdCBlbGVtZW50LiAqL1xuICAgIGdldFNjcm9sbFN0cmVhbSgpOiBPYnNlcnZhYmxlPEV2ZW50PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50U2Nyb2xsU3RyZWFtO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIG9ic2VydmFibGUgdGhhdCBlbWl0cyB3aGVuIGEgdmVydGljYWwgc2Nyb2xsIGV2ZW50IGlzIGhhcHBlbmVkIG9uIHRoZSBob3N0IGVsZW1lbnQuICovXG4gICAgZ2V0VmVydGljYWxTY3JvbGxTdHJlYW0oKTogT2JzZXJ2YWJsZTxFdmVudD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudFZlcnRpY2FsU2Nyb2xsU3RyZWFtO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIG9ic2VydmFibGUgdGhhdCBlbWl0cyB3aGVuIGEgaG9yaXpvbnRhbCBzY3JvbGwgZXZlbnQgaXMgaGFwcGVuZWQgb24gdGhlIGhvc3QgZWxlbWVudC4gKi9cbiAgICBnZXRIb3Jpem9udGFsU2Nyb2xsU3RyZWFtKCk6IE9ic2VydmFibGU8RXZlbnQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRIb3Jpem9udGFsU2Nyb2xsU3RyZWFtO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIHNjcm9sbFRvcCBwb3NpdGlvbiBvZiB0aGUgaG9zdCBlbGVtZW50LiAqL1xuICAgIGdldFNjcm9sbFRvcCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ/LnNjcm9sbFRvcDtcbiAgICB9XG5cbiAgICAvKiogUmV0dXJucyBzY3JvbGxMZWZ0IHBvc2l0aW9uIG9mIHRoZSBob3N0IGVsZW1lbnQuICovXG4gICAgZ2V0U2Nyb2xsTGVmdCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ/LnNjcm9sbExlZnQ7XG4gICAgfVxuXG4gICAgLyoqIFNldCBzY3JvbGxUb3AgcG9zaXRpb24gb2YgdGhlIGhvc3QgZWxlbWVudC4gKi9cbiAgICBzZXRTY3JvbGxUb3Aoc2Nyb2xsVG9wOiBudW1iZXIsIGVtaXRFdmVudCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCB8fCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPT09IHNjcm9sbFRvcCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NraXBFdmVudCA9ICFlbWl0RXZlbnQ7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcbiAgICB9XG5cbiAgICAvKiogU2V0IHNjcm9sbExlZnQgcG9zaXRpb24gb2YgdGhlIGhvc3QgZWxlbWVudC4gKi9cbiAgICBzZXRTY3JvbGxMZWZ0KHNjcm9sbExlZnQ6IG51bWJlciwgZW1pdEV2ZW50ID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IHx8IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPT09IHNjcm9sbExlZnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9za2lwRXZlbnQgPSAhZW1pdEV2ZW50O1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gc2Nyb2xsTGVmdDtcbiAgICB9XG5cbiAgICAvKiogU2Nyb2xscyB0byBvdmVybGFwcGVkIGNlbGwuICovXG4gICAgc2Nyb2xsVG9PdmVybGFwcGVkQ2VsbChydGw6IGJvb2xlYW4sIGZyZWV6YWJsZUNvbHVtbnNTaXplOiBudW1iZXIsIGZyZWV6YWJsZUVuZENvbHVtblNpemU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCB0YWJsZVNjcm9sbGFibGVFbCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBpc1J0bCA9IHJ0bDtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAoZnJlZXphYmxlQ29sdW1uc1NpemUgfHwgZnJlZXphYmxlRW5kQ29sdW1uU2l6ZSkgJiZcbiAgICAgICAgICAgIHRhYmxlU2Nyb2xsYWJsZUVsLnNjcm9sbFdpZHRoID4gdGFibGVTY3JvbGxhYmxlRWwuY2xpZW50V2lkdGhcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBhY3RpdmVFbCA9IHRoaXMuX2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgYWN0aXZlRWwgJiZcbiAgICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmVFbC5jbGFzc0xpc3QuY29udGFpbnMoJ2ZkLXRhYmxlX19jZWxsLS1maXhlZCcpIHx8XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZUVsLmNsYXNzTGlzdC5jb250YWlucygnZmQtdGFibGVfX2NlbGwtLWZpeGVkLWVuZCcpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZyZWV6YWJsZUNvbHVtbnNTaXplICYmICFmcmVlemFibGVFbmRDb2x1bW5TaXplKSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZUVsLnNjcm9sbEludG9WaWV3KHsgYmxvY2s6ICduZWFyZXN0JywgaW5saW5lOiAnZW5kJyB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFmcmVlemFibGVDb2x1bW5zU2l6ZSAmJiBmcmVlemFibGVFbmRDb2x1bW5TaXplKSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZUVsLnNjcm9sbEludG9WaWV3KHsgYmxvY2s6ICduZWFyZXN0JywgaW5saW5lOiAnY2VudGVyJyB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZyZWV6YWJsZUNvbHVtbnNTaXplICYmIGZyZWV6YWJsZUVuZENvbHVtblNpemUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgdG8gc2VlIGlmIGFub3RoZXIgZWxlbWVudCBvYnN0cnVjdHMgdGhlIGFjdGl2ZSBlbGVtZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUVsbVJlY3QgPSBhY3RpdmVFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlRWxMZWZ0ID0gYWN0aXZlRWxtUmVjdC5sZWZ0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmVFbFRvcCA9IGFjdGl2ZUVsbVJlY3QudG9wO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmVFbFdpZHRoID0gYWN0aXZlRWxtUmVjdC53aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9wRWxlbWVudEZyb21MZWZ0ID0gdGhpcy5fZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChhY3RpdmVFbExlZnQsIGFjdGl2ZUVsVG9wKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIGFjdGl2ZUVsIGlzIG92ZXJsYXBwZWRcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgdG9wRWxlbWVudEZyb21MZWZ0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhYWN0aXZlRWwuaXNTYW1lTm9kZSh0b3BFbGVtZW50RnJvbUxlZnQpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3BFbGVtZW50RnJvbUxlZnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdmZC10YWJsZV9fY2VsbC0tZml4ZWQtZW5kJylcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0b3BFbGVtZW50WCA9IHRvcEVsZW1lbnRGcm9tTGVmdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGVmdFZhbCA9IGlzUnRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAoYWN0aXZlRWxMZWZ0ICsgYWN0aXZlRWxXaWR0aCAtIHRvcEVsZW1lbnRYKSAqIC0xXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBhY3RpdmVFbExlZnQgKyBhY3RpdmVFbFdpZHRoIC0gdG9wRWxlbWVudFg7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJsZVNjcm9sbGFibGVFbC5zY3JvbGxCeSh7IHRvcDogMCwgbGVmdDogbGVmdFZhbCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcEVsZW1lbnRGcm9tTGVmdCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIWFjdGl2ZUVsLmlzU2FtZU5vZGUodG9wRWxlbWVudEZyb21MZWZ0KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdG9wRWxlbWVudEZyb21MZWZ0LmNsYXNzTGlzdC5jb250YWlucygnZmQtdGFibGVfX2NlbGwtLWZpeGVkJylcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0b3BFbGVtZW50WCA9IHRvcEVsZW1lbnRGcm9tTGVmdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5yaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxlZnRWYWwgPSBpc1J0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKGFjdGl2ZUVsTGVmdCAtIGFjdGl2ZUVsV2lkdGggLSB0b3BFbGVtZW50WCkgKiAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYWN0aXZlRWxMZWZ0IC0gYWN0aXZlRWxXaWR0aCAtIHRvcEVsZW1lbnRYO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVTY3JvbGxhYmxlRWwuc2Nyb2xsQnkoeyB0b3A6IDAsIGxlZnQ6IGxlZnRWYWwgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogU2V0IFNjcm9sbCBQb3NpdGlvbiBkdXJpbmcgY29tcG9uZW50IGluaXRpYWxpemF0aW9uLiAqL1xuICAgIGluaXRpYWxpemVTY3JvbGxUb3Aoc2Nyb2xsVG9wOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTY3JvbGxUb3Aoc2Nyb2xsVG9wLCBmYWxzZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19","import { Directive, TemplateRef } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class FdpViewSettingsFilterCustomDef {\n /** @hidden */\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n /** @hidden */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdpViewSettingsFilterCustomDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: FdpViewSettingsFilterCustomDef, isStandalone: true, selector: \"[fdpViewSettingsFilterCustomDef]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdpViewSettingsFilterCustomDef, decorators: [{\n type: Directive,\n args: [{ selector: '[fdpViewSettingsFilterCustomDef]', standalone: true }]\n }], ctorParameters: () => [{ type: i0.TemplateRef }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdmlldy1zZXR0aW5ncy1maWx0ZXItY3VzdG9tLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9kaXJlY3RpdmVzL3RhYmxlLXZpZXctc2V0dGluZ3MtZmlsdGVyLWN1c3RvbS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVVyRSxrRUFBa0U7QUFDbEUsTUFBTSxPQUFPLDhCQUE4QjtJQUN2QyxjQUFjO0lBQ2QsWUFBbUIsV0FBK0Q7UUFBL0QsZ0JBQVcsR0FBWCxXQUFXLENBQW9EO0lBQUcsQ0FBQztJQUV0RixjQUFjO0lBQ2QsTUFBTSxDQUFDLHNCQUFzQixDQUN6QixHQUFtQyxFQUNuQyxHQUEwQztRQUUxQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOzhHQVZRLDhCQUE4QjtrR0FBOUIsOEJBQThCOzsyRkFBOUIsOEJBQThCO2tCQUYxQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLGtDQUFrQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5TW9kZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZkcFZpZXdTZXR0aW5nc0ZpbHRlckN1c3RvbURlZkNvbnRleHQge1xuICAgICRpbXBsaWNpdDogYW55O1xuICAgIHZhbHVlQ2hhbmdlRW1pdHRlcjogRXZlbnRFbWl0dGVyPHVua25vd24+O1xuICAgIGNvbnRlbnREZW5zaXR5OiBDb250ZW50RGVuc2l0eU1vZGU7XG59XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tmZHBWaWV3U2V0dGluZ3NGaWx0ZXJDdXN0b21EZWZdJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgY2xhc3MgRmRwVmlld1NldHRpbmdzRmlsdGVyQ3VzdG9tRGVmIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8RmRwVmlld1NldHRpbmdzRmlsdGVyQ3VzdG9tRGVmQ29udGV4dD4pIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKFxuICAgICAgICBkaXI6IEZkcFZpZXdTZXR0aW5nc0ZpbHRlckN1c3RvbURlZixcbiAgICAgICAgY3R4OiBGZHBWaWV3U2V0dGluZ3NGaWx0ZXJDdXN0b21EZWZDb250ZXh0XG4gICAgKTogY3R4IGlzIEZkcFZpZXdTZXR0aW5nc0ZpbHRlckN1c3RvbURlZkNvbnRleHQge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG4iXX0=","import { DestroyRef, Directive, inject, Input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ContentDensityMode } from '@fundamental-ngx/core/content-density';\nimport { BehaviorSubject, filter } from 'rxjs';\nimport { FDP_TABLE_DRAGGABLE_DIRECTIVE, FDP_TABLE_VIRTUAL_SCROLL_DIRECTIVE, ROW_HEIGHT } from '../constants';\nimport { TableVirtualScroll } from '../models';\nimport { TableScrollDispatcherService } from '../services/table-scroll-dispatcher.service';\nimport { TableService } from '../services/table.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../services/table.service\";\nexport class TableVirtualScrollDirective extends TableVirtualScroll {\n /** @hidden */\n constructor(_tableService) {\n super();\n this._tableService = _tableService;\n /** Whether to show only visible rows in matter of performance\n * false by default, when true setting bodyHeight and rowHeight is required.\n */\n this.virtualScroll = false;\n /** Cache size for the virtualScroll, default is 40 in each direction */\n this.renderAhead = 40;\n /**\n * Minimum height of the row, required for the virtualScroll,\n * default is 44px in cozy, 32px in compact and 24px in condensed (set automatically)\n */\n this.rowHeight = ROW_HEIGHT.get(ContentDensityMode.COZY);\n /** @hidden */\n this.virtualScrollTotalHeight = 0;\n /** @hidden */\n this.virtualScrollTransform$ = new BehaviorSubject(0);\n /** @hidden */\n this._virtualScrollCache = { startNodeIndex: -1, visibleNodeCount: -1, totalNodeCount: -1 };\n /** @hidden */\n this._tableScrollDispatcher = inject(TableScrollDispatcherService);\n /** @hidden */\n this._dndTableDirective = inject(FDP_TABLE_DRAGGABLE_DIRECTIVE, {\n optional: true\n });\n /** @hidden */\n this._destroyRef = inject(DestroyRef);\n }\n /** @hidden */\n ngOnChanges(changes) {\n if (!this._table.tableScrollable) {\n return;\n }\n if (this.virtualScroll && (changes['rowHeight'] || changes['virtualScroll'] || changes['renderAhead'])) {\n this.calculateVirtualScrollRows();\n }\n }\n /** Sets table reference. */\n setTable(table) {\n this._table = table;\n }\n /**\n * Calculates rows to be rendered in the table.\n */\n calculateVirtualScrollRows() {\n if (!this.virtualScroll || !this.bodyHeight || this._dndTableDirective?.dragDropInProgress) {\n return;\n }\n let rowHeight = this.rowHeight + 1;\n const tableContainerEl = this._table.tableContainer.nativeElement;\n if (this._tableService.poppingColumns$().length > 0) {\n const secondaryRows = tableContainerEl.getElementsByClassName('fd-table__row--secondary');\n if (secondaryRows[0]) {\n rowHeight = rowHeight + secondaryRows[0].clientHeight;\n }\n }\n const rowsVisible = this._table._tableRowsVisible;\n const currentlyRenderedRows = this._table.getCurrentlyRenderedRows();\n const totalNodeCount = rowsVisible.length;\n const scrollTop = this._table.tableScrollable.getScrollTop();\n let startNodeIndex = Math.floor(scrollTop / rowHeight) - this.renderAhead;\n startNodeIndex = Math.max(0, startNodeIndex);\n let visibleNodeCount = Math.ceil(tableContainerEl.clientHeight / rowHeight) + 2 * this.renderAhead;\n visibleNodeCount = Math.min(totalNodeCount - startNodeIndex, visibleNodeCount);\n this.virtualScrollTransform$.next(startNodeIndex * rowHeight);\n // Simple caching to avoid unnecessary re-renderings\n const isCached = startNodeIndex === this._virtualScrollCache.startNodeIndex &&\n visibleNodeCount === this._virtualScrollCache.visibleNodeCount &&\n totalNodeCount === this._virtualScrollCache.totalNodeCount &&\n // On rows change, even if the total number of rows is the same, the row object will be different\n startNodeIndex === currentlyRenderedRows[0];\n if (isCached) {\n return;\n }\n this._virtualScrollCache = { startNodeIndex, visibleNodeCount, totalNodeCount };\n this.virtualScrollTotalHeight = totalNodeCount * rowHeight - visibleNodeCount * rowHeight;\n this._table.setCurrentlyRenderedRows(startNodeIndex, rowsVisible.slice(startNodeIndex, startNodeIndex + visibleNodeCount).length);\n }\n /**\n * Initialises scroll listener.\n */\n listenOnVirtualScroll() {\n this._tableScrollDispatcher\n .verticallyScrolled()\n .pipe(filter(() => this.virtualScroll && !!this.bodyHeight), takeUntilDestroyed(this._destroyRef))\n .subscribe((scrollable) => {\n this.calculateVirtualScrollRows();\n this._table.setTableState({\n ...this._table.getTableState(),\n scrollTopPosition: scrollable.getScrollTop()\n });\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableVirtualScrollDirective, deps: [{ token: i1.TableService }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: TableVirtualScrollDirective, isStandalone: true, selector: \"fdp-table[virtualScroll]\", inputs: { virtualScroll: \"virtualScroll\", renderAhead: \"renderAhead\", bodyHeight: \"bodyHeight\", rowHeight: \"rowHeight\", secondaryRowHeight: \"secondaryRowHeight\" }, providers: [\n {\n provide: FDP_TABLE_VIRTUAL_SCROLL_DIRECTIVE,\n useExisting: TableVirtualScrollDirective\n }\n ], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableVirtualScrollDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fdp-table[virtualScroll]',\n standalone: true,\n providers: [\n {\n provide: FDP_TABLE_VIRTUAL_SCROLL_DIRECTIVE,\n useExisting: TableVirtualScrollDirective\n }\n ]\n }]\n }], ctorParameters: () => [{ type: i1.TableService }], propDecorators: { virtualScroll: [{\n type: Input\n }], renderAhead: [{\n type: Input\n }], bodyHeight: [{\n type: Input\n }], rowHeight: [{\n type: Input\n }], secondaryRowHeight: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdmlydHVhbC1zY3JvbGwuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzL2RpcmVjdGl2ZXMvdGFibGUtdmlydHVhbC1zY3JvbGwuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxrQ0FBa0MsRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0csT0FBTyxFQUFrQixrQkFBa0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMvRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUMzRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQWN6RCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsa0JBQWtCO0lBbUQvRCxjQUFjO0lBQ2QsWUFBcUIsYUFBMkI7UUFDNUMsS0FBSyxFQUFFLENBQUM7UUFEUyxrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQW5EaEQ7O1dBRUc7UUFFSCxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUV0Qix3RUFBd0U7UUFFeEUsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFNakI7OztXQUdHO1FBRUgsY0FBUyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFFLENBQUM7UUFRckQsY0FBYztRQUNkLDZCQUF3QixHQUFHLENBQUMsQ0FBQztRQUU3QixjQUFjO1FBQ2QsNEJBQXVCLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFLekQsY0FBYztRQUNOLHdCQUFtQixHQUFHLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRS9GLGNBQWM7UUFDRywyQkFBc0IsR0FBRyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUUvRSxjQUFjO1FBQ0csdUJBQWtCLEdBQUcsTUFBTSxDQUFpQiw2QkFBNkIsRUFBRTtZQUN4RixRQUFRLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7UUFFSCxjQUFjO1FBQ0csZ0JBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFLbEQsQ0FBQztJQUVELGNBQWM7SUFDZCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDL0IsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDckcsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDdEMsQ0FBQztJQUNMLENBQUM7SUFFRCw0QkFBNEI7SUFDNUIsUUFBUSxDQUFDLEtBQVk7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsMEJBQTBCO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztZQUN6RixPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBRW5DLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDO1FBRWxFLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEQsTUFBTSxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsMEJBQTBCLENBQUMsQ0FBQztZQUMxRixJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNuQixTQUFTLEdBQUcsU0FBUyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7WUFDMUQsQ0FBQztRQUNMLENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDO1FBQ2xELE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ3JFLE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7UUFDMUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFN0QsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUMxRSxjQUFjLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFN0MsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNuRyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsR0FBRyxjQUFjLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUUvRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUU5RCxvREFBb0Q7UUFDcEQsTUFBTSxRQUFRLEdBQ1YsY0FBYyxLQUFLLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjO1lBQzFELGdCQUFnQixLQUFLLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0I7WUFDOUQsY0FBYyxLQUFLLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjO1lBQzFELGlHQUFpRztZQUNqRyxjQUFjLEtBQUsscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFaEQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNYLE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxDQUFDO1FBQ2hGLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxjQUFjLEdBQUcsU0FBUyxHQUFHLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztRQUMxRixJQUFJLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUNoQyxjQUFjLEVBQ2QsV0FBVyxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsY0FBYyxHQUFHLGdCQUFnQixDQUFDLENBQUMsTUFBTSxDQUM5RSxDQUFDO0lBQ04sQ0FBQztJQUVEOztPQUVHO0lBQ0gscUJBQXFCO1FBQ2pCLElBQUksQ0FBQyxzQkFBc0I7YUFDdEIsa0JBQWtCLEVBQUU7YUFDcEIsSUFBSSxDQUNELE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQ3JELGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FDdkM7YUFDQSxTQUFTLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUN0QixJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQztnQkFDdEIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRTtnQkFDOUIsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLFlBQVksRUFBRTthQUMvQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7OEdBNUlRLDJCQUEyQjtrR0FBM0IsMkJBQTJCLDJPQVB6QjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxrQ0FBa0M7Z0JBQzNDLFdBQVcsRUFBRSwyQkFBMkI7YUFDM0M7U0FDSjs7MkZBRVEsMkJBQTJCO2tCQVh2QyxTQUFTO21CQUFDO29CQUNQLDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsa0NBQWtDOzRCQUMzQyxXQUFXLDZCQUE2Qjt5QkFDM0M7cUJBQ0o7aUJBQ0o7aUZBTUcsYUFBYTtzQkFEWixLQUFLO2dCQUtOLFdBQVc7c0JBRFYsS0FBSztnQkFLTixVQUFVO3NCQURULEtBQUs7Z0JBUU4sU0FBUztzQkFEUixLQUFLO2dCQU9OLGtCQUFrQjtzQkFEakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIERpcmVjdGl2ZSwgaW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eU1vZGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlsdGVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGRFBfVEFCTEVfRFJBR0dBQkxFX0RJUkVDVElWRSwgRkRQX1RBQkxFX1ZJUlRVQUxfU0NST0xMX0RJUkVDVElWRSwgUk9XX0hFSUdIVCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUYWJsZURyYWdnYWJsZSwgVGFibGVWaXJ0dWFsU2Nyb2xsIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IFRhYmxlU2Nyb2xsRGlzcGF0Y2hlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90YWJsZS1zY3JvbGwtZGlzcGF0Y2hlci5zZXJ2aWNlJztcbmltcG9ydCB7IFRhYmxlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RhYmxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tICcuLi90YWJsZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdmZHAtdGFibGVbdmlydHVhbFNjcm9sbF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEUF9UQUJMRV9WSVJUVUFMX1NDUk9MTF9ESVJFQ1RJVkUsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogVGFibGVWaXJ0dWFsU2Nyb2xsRGlyZWN0aXZlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlVmlydHVhbFNjcm9sbERpcmVjdGl2ZSBleHRlbmRzIFRhYmxlVmlydHVhbFNjcm9sbCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgLyoqIFdoZXRoZXIgdG8gc2hvdyBvbmx5IHZpc2libGUgcm93cyBpbiBtYXR0ZXIgb2YgcGVyZm9ybWFuY2VcbiAgICAgKiBmYWxzZSBieSBkZWZhdWx0LCB3aGVuIHRydWUgc2V0dGluZyBib2R5SGVpZ2h0IGFuZCByb3dIZWlnaHQgaXMgcmVxdWlyZWQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB2aXJ0dWFsU2Nyb2xsID0gZmFsc2U7XG5cbiAgICAvKiogQ2FjaGUgc2l6ZSBmb3IgdGhlIHZpcnR1YWxTY3JvbGwsIGRlZmF1bHQgaXMgNDAgaW4gZWFjaCBkaXJlY3Rpb24gKi9cbiAgICBASW5wdXQoKVxuICAgIHJlbmRlckFoZWFkID0gNDA7XG5cbiAgICAvKiogQm9keSBoZWlnaHQuICovXG4gICAgQElucHV0KClcbiAgICBib2R5SGVpZ2h0OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBNaW5pbXVtIGhlaWdodCBvZiB0aGUgcm93LCByZXF1aXJlZCBmb3IgdGhlIHZpcnR1YWxTY3JvbGwsXG4gICAgICogZGVmYXVsdCBpcyA0NHB4IGluIGNvenksIDMycHggaW4gY29tcGFjdCBhbmQgMjRweCBpbiBjb25kZW5zZWQgKHNldCBhdXRvbWF0aWNhbGx5KVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcm93SGVpZ2h0ID0gUk9XX0hFSUdIVC5nZXQoQ29udGVudERlbnNpdHlNb2RlLkNPWlkpITtcblxuICAgIC8qKlxuICAgICAqIE1pbmltdW0gaGVpZ2h0IG9mIHRoZSBwb3BwaW5nIGNvbHVtbiB3aGVuIGRpc3BsYXllZCBpbiBwb3AtaW4gbW9kZS4gUmVxdWlyZWQgd2hlbiB1c2luZyBwb3BwaW5nIGNvbHVtbnMgYW5kIHZpcnR1YWwgc2Nyb2xsLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2Vjb25kYXJ5Um93SGVpZ2h0OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHZpcnR1YWxTY3JvbGxUb3RhbEhlaWdodCA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHZpcnR1YWxTY3JvbGxUcmFuc2Zvcm0kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90YWJsZTogVGFibGU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ZpcnR1YWxTY3JvbGxDYWNoZSA9IHsgc3RhcnROb2RlSW5kZXg6IC0xLCB2aXNpYmxlTm9kZUNvdW50OiAtMSwgdG90YWxOb2RlQ291bnQ6IC0xIH07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RhYmxlU2Nyb2xsRGlzcGF0Y2hlciA9IGluamVjdChUYWJsZVNjcm9sbERpc3BhdGNoZXJTZXJ2aWNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZG5kVGFibGVEaXJlY3RpdmUgPSBpbmplY3Q8VGFibGVEcmFnZ2FibGU+KEZEUF9UQUJMRV9EUkFHR0FCTEVfRElSRUNUSVZFLCB7XG4gICAgICAgIG9wdGlvbmFsOiB0cnVlXG4gICAgfSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IF90YWJsZVNlcnZpY2U6IFRhYmxlU2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3RhYmxlLnRhYmxlU2Nyb2xsYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnZpcnR1YWxTY3JvbGwgJiYgKGNoYW5nZXNbJ3Jvd0hlaWdodCddIHx8IGNoYW5nZXNbJ3ZpcnR1YWxTY3JvbGwnXSB8fCBjaGFuZ2VzWydyZW5kZXJBaGVhZCddKSkge1xuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVWaXJ0dWFsU2Nyb2xsUm93cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFNldHMgdGFibGUgcmVmZXJlbmNlLiAqL1xuICAgIHNldFRhYmxlKHRhYmxlOiBUYWJsZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJsZSA9IHRhYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgcm93cyB0byBiZSByZW5kZXJlZCBpbiB0aGUgdGFibGUuXG4gICAgICovXG4gICAgY2FsY3VsYXRlVmlydHVhbFNjcm9sbFJvd3MoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy52aXJ0dWFsU2Nyb2xsIHx8ICF0aGlzLmJvZHlIZWlnaHQgfHwgdGhpcy5fZG5kVGFibGVEaXJlY3RpdmU/LmRyYWdEcm9wSW5Qcm9ncmVzcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJvd0hlaWdodCA9IHRoaXMucm93SGVpZ2h0ICsgMTtcblxuICAgICAgICBjb25zdCB0YWJsZUNvbnRhaW5lckVsID0gdGhpcy5fdGFibGUudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudDtcblxuICAgICAgICBpZiAodGhpcy5fdGFibGVTZXJ2aWNlLnBvcHBpbmdDb2x1bW5zJCgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHNlY29uZGFyeVJvd3MgPSB0YWJsZUNvbnRhaW5lckVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2ZkLXRhYmxlX19yb3ctLXNlY29uZGFyeScpO1xuICAgICAgICAgICAgaWYgKHNlY29uZGFyeVJvd3NbMF0pIHtcbiAgICAgICAgICAgICAgICByb3dIZWlnaHQgPSByb3dIZWlnaHQgKyBzZWNvbmRhcnlSb3dzWzBdLmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJvd3NWaXNpYmxlID0gdGhpcy5fdGFibGUuX3RhYmxlUm93c1Zpc2libGU7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRseVJlbmRlcmVkUm93cyA9IHRoaXMuX3RhYmxlLmdldEN1cnJlbnRseVJlbmRlcmVkUm93cygpO1xuICAgICAgICBjb25zdCB0b3RhbE5vZGVDb3VudCA9IHJvd3NWaXNpYmxlLmxlbmd0aDtcbiAgICAgICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5fdGFibGUudGFibGVTY3JvbGxhYmxlLmdldFNjcm9sbFRvcCgpO1xuXG4gICAgICAgIGxldCBzdGFydE5vZGVJbmRleCA9IE1hdGguZmxvb3Ioc2Nyb2xsVG9wIC8gcm93SGVpZ2h0KSAtIHRoaXMucmVuZGVyQWhlYWQ7XG4gICAgICAgIHN0YXJ0Tm9kZUluZGV4ID0gTWF0aC5tYXgoMCwgc3RhcnROb2RlSW5kZXgpO1xuXG4gICAgICAgIGxldCB2aXNpYmxlTm9kZUNvdW50ID0gTWF0aC5jZWlsKHRhYmxlQ29udGFpbmVyRWwuY2xpZW50SGVpZ2h0IC8gcm93SGVpZ2h0KSArIDIgKiB0aGlzLnJlbmRlckFoZWFkO1xuICAgICAgICB2aXNpYmxlTm9kZUNvdW50ID0gTWF0aC5taW4odG90YWxOb2RlQ291bnQgLSBzdGFydE5vZGVJbmRleCwgdmlzaWJsZU5vZGVDb3VudCk7XG5cbiAgICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsVHJhbnNmb3JtJC5uZXh0KHN0YXJ0Tm9kZUluZGV4ICogcm93SGVpZ2h0KTtcblxuICAgICAgICAvLyBTaW1wbGUgY2FjaGluZyB0byBhdm9pZCB1bm5lY2Vzc2FyeSByZS1yZW5kZXJpbmdzXG4gICAgICAgIGNvbnN0IGlzQ2FjaGVkID1cbiAgICAgICAgICAgIHN0YXJ0Tm9kZUluZGV4ID09PSB0aGlzLl92aXJ0dWFsU2Nyb2xsQ2FjaGUuc3RhcnROb2RlSW5kZXggJiZcbiAgICAgICAgICAgIHZpc2libGVOb2RlQ291bnQgPT09IHRoaXMuX3ZpcnR1YWxTY3JvbGxDYWNoZS52aXNpYmxlTm9kZUNvdW50ICYmXG4gICAgICAgICAgICB0b3RhbE5vZGVDb3VudCA9PT0gdGhpcy5fdmlydHVhbFNjcm9sbENhY2hlLnRvdGFsTm9kZUNvdW50ICYmXG4gICAgICAgICAgICAvLyBPbiByb3dzIGNoYW5nZSwgZXZlbiBpZiB0aGUgdG90YWwgbnVtYmVyIG9mIHJvd3MgaXMgdGhlIHNhbWUsIHRoZSByb3cgb2JqZWN0IHdpbGwgYmUgZGlmZmVyZW50XG4gICAgICAgICAgICBzdGFydE5vZGVJbmRleCA9PT0gY3VycmVudGx5UmVuZGVyZWRSb3dzWzBdO1xuXG4gICAgICAgIGlmIChpc0NhY2hlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdmlydHVhbFNjcm9sbENhY2hlID0geyBzdGFydE5vZGVJbmRleCwgdmlzaWJsZU5vZGVDb3VudCwgdG90YWxOb2RlQ291bnQgfTtcbiAgICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsVG90YWxIZWlnaHQgPSB0b3RhbE5vZGVDb3VudCAqIHJvd0hlaWdodCAtIHZpc2libGVOb2RlQ291bnQgKiByb3dIZWlnaHQ7XG4gICAgICAgIHRoaXMuX3RhYmxlLnNldEN1cnJlbnRseVJlbmRlcmVkUm93cyhcbiAgICAgICAgICAgIHN0YXJ0Tm9kZUluZGV4LFxuICAgICAgICAgICAgcm93c1Zpc2libGUuc2xpY2Uoc3RhcnROb2RlSW5kZXgsIHN0YXJ0Tm9kZUluZGV4ICsgdmlzaWJsZU5vZGVDb3VudCkubGVuZ3RoXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGlzZXMgc2Nyb2xsIGxpc3RlbmVyLlxuICAgICAqL1xuICAgIGxpc3Rlbk9uVmlydHVhbFNjcm9sbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFibGVTY3JvbGxEaXNwYXRjaGVyXG4gICAgICAgICAgICAudmVydGljYWxseVNjcm9sbGVkKClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLnZpcnR1YWxTY3JvbGwgJiYgISF0aGlzLmJvZHlIZWlnaHQpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc2Nyb2xsYWJsZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlVmlydHVhbFNjcm9sbFJvd3MoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl90YWJsZS5zZXRUYWJsZVN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5fdGFibGUuZ2V0VGFibGVTdGF0ZSgpLFxuICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb3BQb3NpdGlvbjogc2Nyb2xsYWJsZS5nZXRTY3JvbGxUb3AoKVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxufVxuIl19","import { Pipe } from '@angular/core';\nimport { ColumnAlign } from '../enums/column-align.enum';\nimport * as i0 from \"@angular/core\";\nexport class TableCellStylesPipe {\n /** @hidden */\n transform(column, isRtl, semanticHighlightingColumnWidth, selectionColumnWidth, isFrozenColumn, isFrozenEndColumn, prevColumnWidthPx, columnWidth, nextColumnWidthPx, noBorders, noHorizontalBorders, noVerticalBorders) {\n const styles = {};\n if (isFrozenColumn) {\n const key = isRtl ? 'right.px' : 'left.px';\n styles[key] =\n (semanticHighlightingColumnWidth || 0) + (selectionColumnWidth || 0) + (prevColumnWidthPx || 0);\n }\n if (isFrozenEndColumn) {\n const key = isRtl ? 'left.px' : 'right.px';\n styles[key] = (nextColumnWidthPx || 0).toString();\n }\n if (noHorizontalBorders) {\n styles['border-top'] = 'none';\n styles['border-bottom'] = 'none';\n }\n if (noVerticalBorders) {\n styles['border-left'] = 'none';\n styles['border-right'] = 'none';\n }\n if (noBorders) {\n styles['border'] = 'none';\n }\n else {\n styles['min-width'] = columnWidth;\n styles['max-width'] = columnWidth;\n styles['width'] = columnWidth;\n }\n // The \"start\" value does align left when you are using a LTR browser.\n // In RTL browsers, the \"start\" value aligns right.\n // Since we want to dynamically apply alignment only depending on the service value, we are using \"left\"/\"right\" as values instead\n switch (column.align) {\n case ColumnAlign.START:\n styles['text-align'] = isRtl ? 'right' : 'left';\n break;\n case ColumnAlign.END:\n styles['text-align'] = isRtl ? 'left' : 'right';\n break;\n default:\n styles['text-align'] = 'center';\n break;\n }\n return styles;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableCellStylesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: TableCellStylesPipe, isStandalone: true, name: \"tableCellStyles\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableCellStylesPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'tableCellStyles', standalone: true }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC1zdHlsZXMucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9waXBlcy9jZWxsLXN0eWxlcy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFJekQsTUFBTSxPQUFPLG1CQUFtQjtJQUM1QixjQUFjO0lBQ2QsU0FBUyxDQUNMLE1BQW1CLEVBQ25CLEtBQWMsRUFDZCwrQkFBOEMsRUFDOUMsb0JBQW1DLEVBQ25DLGNBQXVCLEVBQ3ZCLGlCQUEwQixFQUMxQixpQkFBZ0MsRUFDaEMsV0FBbUIsRUFDbkIsaUJBQWdDLEVBQ2hDLFNBQW1CLEVBQ25CLG1CQUE2QixFQUM3QixpQkFBMkI7UUFFM0IsTUFBTSxNQUFNLEdBQTRDLEVBQUUsQ0FBQztRQUUzRCxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDM0MsTUFBTSxDQUFDLEdBQUcsQ0FBQztnQkFDUCxDQUFDLCtCQUErQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN4RyxDQUFDO1FBRUQsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7WUFDM0MsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEQsQ0FBQztRQUVELElBQUksbUJBQW1CLEVBQUUsQ0FBQztZQUN0QixNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsTUFBTSxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDckMsQ0FBQztRQUVELElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUNwQixNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsTUFBTSxDQUFDO1lBQy9CLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDcEMsQ0FBQztRQUVELElBQUksU0FBUyxFQUFFLENBQUM7WUFDWixNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQzlCLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFdBQVcsQ0FBQztZQUNsQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsV0FBVyxDQUFDO1lBQ2xDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxXQUFXLENBQUM7UUFDbEMsQ0FBQztRQUVELHNFQUFzRTtRQUN0RSxtREFBbUQ7UUFDbkQsa0lBQWtJO1FBQ2xJLFFBQVEsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25CLEtBQUssV0FBVyxDQUFDLEtBQUs7Z0JBQ2xCLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO2dCQUNoRCxNQUFNO1lBQ1YsS0FBSyxXQUFXLENBQUMsR0FBRztnQkFDaEIsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7Z0JBQ2hELE1BQU07WUFDVjtnQkFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsUUFBUSxDQUFDO2dCQUNoQyxNQUFNO1FBQ2QsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7OEdBL0RRLG1CQUFtQjs0R0FBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUQvQixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb2x1bW5BbGlnbiB9IGZyb20gJy4uL2VudW1zL2NvbHVtbi1hbGlnbi5lbnVtJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vdGFibGUtY29sdW1uJztcblxuQFBpcGUoeyBuYW1lOiAndGFibGVDZWxsU3R5bGVzJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ2VsbFN0eWxlc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHRyYW5zZm9ybShcbiAgICAgICAgY29sdW1uOiBUYWJsZUNvbHVtbixcbiAgICAgICAgaXNSdGw6IGJvb2xlYW4sXG4gICAgICAgIHNlbWFudGljSGlnaGxpZ2h0aW5nQ29sdW1uV2lkdGg6IG51bWJlciB8IG51bGwsXG4gICAgICAgIHNlbGVjdGlvbkNvbHVtbldpZHRoOiBudW1iZXIgfCBudWxsLFxuICAgICAgICBpc0Zyb3plbkNvbHVtbjogYm9vbGVhbixcbiAgICAgICAgaXNGcm96ZW5FbmRDb2x1bW46IGJvb2xlYW4sXG4gICAgICAgIHByZXZDb2x1bW5XaWR0aFB4OiBudW1iZXIgfCBudWxsLFxuICAgICAgICBjb2x1bW5XaWR0aDogc3RyaW5nLFxuICAgICAgICBuZXh0Q29sdW1uV2lkdGhQeDogbnVtYmVyIHwgbnVsbCxcbiAgICAgICAgbm9Cb3JkZXJzPzogYm9vbGVhbixcbiAgICAgICAgbm9Ib3Jpem9udGFsQm9yZGVycz86IGJvb2xlYW4sXG4gICAgICAgIG5vVmVydGljYWxCb3JkZXJzPzogYm9vbGVhblxuICAgICk6IFJlY29yZDxzdHJpbmcsIG51bWJlciB8IHN0cmluZz4ge1xuICAgICAgICBjb25zdCBzdHlsZXM6IHsgW3Byb3BlcnR5OiBzdHJpbmddOiBudW1iZXIgfCBzdHJpbmcgfSA9IHt9O1xuXG4gICAgICAgIGlmIChpc0Zyb3plbkNvbHVtbikge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gaXNSdGwgPyAncmlnaHQucHgnIDogJ2xlZnQucHgnO1xuICAgICAgICAgICAgc3R5bGVzW2tleV0gPVxuICAgICAgICAgICAgICAgIChzZW1hbnRpY0hpZ2hsaWdodGluZ0NvbHVtbldpZHRoIHx8IDApICsgKHNlbGVjdGlvbkNvbHVtbldpZHRoIHx8IDApICsgKHByZXZDb2x1bW5XaWR0aFB4IHx8IDApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzRnJvemVuRW5kQ29sdW1uKSB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBpc1J0bCA/ICdsZWZ0LnB4JyA6ICdyaWdodC5weCc7XG4gICAgICAgICAgICBzdHlsZXNba2V5XSA9IChuZXh0Q29sdW1uV2lkdGhQeCB8fCAwKS50b1N0cmluZygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5vSG9yaXpvbnRhbEJvcmRlcnMpIHtcbiAgICAgICAgICAgIHN0eWxlc1snYm9yZGVyLXRvcCddID0gJ25vbmUnO1xuICAgICAgICAgICAgc3R5bGVzWydib3JkZXItYm90dG9tJ10gPSAnbm9uZSc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9WZXJ0aWNhbEJvcmRlcnMpIHtcbiAgICAgICAgICAgIHN0eWxlc1snYm9yZGVyLWxlZnQnXSA9ICdub25lJztcbiAgICAgICAgICAgIHN0eWxlc1snYm9yZGVyLXJpZ2h0J10gPSAnbm9uZSc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9Cb3JkZXJzKSB7XG4gICAgICAgICAgICBzdHlsZXNbJ2JvcmRlciddID0gJ25vbmUnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3R5bGVzWydtaW4td2lkdGgnXSA9IGNvbHVtbldpZHRoO1xuICAgICAgICAgICAgc3R5bGVzWydtYXgtd2lkdGgnXSA9IGNvbHVtbldpZHRoO1xuICAgICAgICAgICAgc3R5bGVzWyd3aWR0aCddID0gY29sdW1uV2lkdGg7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGUgXCJzdGFydFwiIHZhbHVlIGRvZXMgYWxpZ24gbGVmdCB3aGVuIHlvdSBhcmUgdXNpbmcgYSBMVFIgYnJvd3Nlci5cbiAgICAgICAgLy8gSW4gUlRMIGJyb3dzZXJzLCB0aGUgXCJzdGFydFwiIHZhbHVlIGFsaWducyByaWdodC5cbiAgICAgICAgLy8gU2luY2Ugd2Ugd2FudCB0byBkeW5hbWljYWxseSBhcHBseSBhbGlnbm1lbnQgb25seSBkZXBlbmRpbmcgb24gdGhlIHNlcnZpY2UgdmFsdWUsIHdlIGFyZSB1c2luZyBcImxlZnRcIi9cInJpZ2h0XCIgYXMgdmFsdWVzIGluc3RlYWRcbiAgICAgICAgc3dpdGNoIChjb2x1bW4uYWxpZ24pIHtcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uQWxpZ24uU1RBUlQ6XG4gICAgICAgICAgICAgICAgc3R5bGVzWyd0ZXh0LWFsaWduJ10gPSBpc1J0bCA/ICdyaWdodCcgOiAnbGVmdCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIENvbHVtbkFsaWduLkVORDpcbiAgICAgICAgICAgICAgICBzdHlsZXNbJ3RleHQtYWxpZ24nXSA9IGlzUnRsID8gJ2xlZnQnIDogJ3JpZ2h0JztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgc3R5bGVzWyd0ZXh0LWFsaWduJ10gPSAnY2VudGVyJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdHlsZXM7XG4gICAgfVxufVxuIl19","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class ColumnResizableSidePipe {\n /** @hidden */\n transform(columnIndex, visibleColumnsLength, navigationColumnShown) {\n if (columnIndex === 0) {\n return 'end';\n }\n const isLastColumn = columnIndex === visibleColumnsLength - 1;\n if (isLastColumn && navigationColumnShown) {\n return 'start';\n }\n return 'both';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ColumnResizableSidePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: ColumnResizableSidePipe, isStandalone: true, name: \"columnResizableSide\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ColumnResizableSidePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'columnResizableSide', standalone: true }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXJlc2l6YWJsZS1zaWRlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvcGlwZXMvY29sdW1uLXJlc2l6YWJsZS1zaWRlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBSXBELE1BQU0sT0FBTyx1QkFBdUI7SUFDaEMsY0FBYztJQUNkLFNBQVMsQ0FDTCxXQUFtQixFQUNuQixvQkFBNEIsRUFDNUIscUJBQXFDO1FBRXJDLElBQUksV0FBVyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7UUFFRCxNQUFNLFlBQVksR0FBRyxXQUFXLEtBQUssb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO1FBRTlELElBQUksWUFBWSxJQUFJLHFCQUFxQixFQUFFLENBQUM7WUFDeEMsT0FBTyxPQUFPLENBQUM7UUFDbkIsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7OEdBbEJRLHVCQUF1Qjs0R0FBdkIsdUJBQXVCOzsyRkFBdkIsdUJBQXVCO2tCQURuQyxJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUYWJsZUNvbHVtblJlc2l6YWJsZVNpZGUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3RhYmxlLWNlbGwtcmVzaXphYmxlLmRpcmVjdGl2ZSc7XG5cbkBQaXBlKHsgbmFtZTogJ2NvbHVtblJlc2l6YWJsZVNpZGUnLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgQ29sdW1uUmVzaXphYmxlU2lkZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHRyYW5zZm9ybShcbiAgICAgICAgY29sdW1uSW5kZXg6IG51bWJlcixcbiAgICAgICAgdmlzaWJsZUNvbHVtbnNMZW5ndGg6IG51bWJlcixcbiAgICAgICAgbmF2aWdhdGlvbkNvbHVtblNob3duOiBib29sZWFuIHwgbnVsbFxuICAgICk6IFRhYmxlQ29sdW1uUmVzaXphYmxlU2lkZSB7XG4gICAgICAgIGlmIChjb2x1bW5JbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuICdlbmQnO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNMYXN0Q29sdW1uID0gY29sdW1uSW5kZXggPT09IHZpc2libGVDb2x1bW5zTGVuZ3RoIC0gMTtcblxuICAgICAgICBpZiAoaXNMYXN0Q29sdW1uICYmIG5hdmlnYXRpb25Db2x1bW5TaG93bikge1xuICAgICAgICAgICAgcmV0dXJuICdzdGFydCc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJ2JvdGgnO1xuICAgIH1cbn1cbiJdfQ==","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport const ARIA_SORT = {\n none: 'none',\n asc: 'ascending',\n desc: 'descending'\n};\nexport class TableColumnSortingDirectionPipe {\n /** @hidden */\n transform(sorting) {\n if (!sorting) {\n return 'none';\n }\n return ARIA_SORT[sorting.direction];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableColumnSortingDirectionPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: TableColumnSortingDirectionPipe, isStandalone: true, name: \"fdpTableColumnSortingDirection\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableColumnSortingDirectionPipe, decorators: [{\n type: Pipe,\n args: [{\n pure: true,\n standalone: true,\n name: 'fdpTableColumnSortingDirection'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXNvcnRpbmctZGlyZWN0aW9uLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvcGlwZXMvY29sdW1uLXNvcnRpbmctZGlyZWN0aW9uLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBS3BELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBdUM7SUFDekQsSUFBSSxFQUFFLE1BQU07SUFDWixHQUFHLEVBQUUsV0FBVztJQUNoQixJQUFJLEVBQUUsWUFBWTtDQUNyQixDQUFDO0FBT0YsTUFBTSxPQUFPLCtCQUErQjtJQUN4QyxjQUFjO0lBQ2QsU0FBUyxDQUFDLE9BQWlDO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNYLE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEMsQ0FBQzs4R0FSUSwrQkFBK0I7NEdBQS9CLCtCQUErQjs7MkZBQS9CLCtCQUErQjtrQkFMM0MsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsSUFBSTtvQkFDVixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFLGdDQUFnQztpQkFDekMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IFNvcnREaXJlY3Rpb24gfSBmcm9tICcuLi9lbnVtcyc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uU29ydCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgY29uc3QgQVJJQV9TT1JUOiBSZWNvcmQ8YCR7U29ydERpcmVjdGlvbn1gLCBzdHJpbmc+ID0ge1xuICAgIG5vbmU6ICdub25lJyxcbiAgICBhc2M6ICdhc2NlbmRpbmcnLFxuICAgIGRlc2M6ICdkZXNjZW5kaW5nJ1xufTtcblxuQFBpcGUoe1xuICAgIHB1cmU6IHRydWUsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAnZmRwVGFibGVDb2x1bW5Tb3J0aW5nRGlyZWN0aW9uJ1xufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbHVtblNvcnRpbmdEaXJlY3Rpb25QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB0cmFuc2Zvcm0oc29ydGluZzogTnVsbGFibGU8Q29sbGVjdGlvblNvcnQ+KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFzb3J0aW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gJ25vbmUnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIEFSSUFfU09SVFtzb3J0aW5nLmRpcmVjdGlvbl07XG4gICAgfVxufVxuIl19","import { Pipe } from '@angular/core';\nimport { isFunction, isString } from '@fundamental-ngx/platform/shared';\nimport { TableRowType } from '../enums/row-type.enum';\nimport * as i0 from \"@angular/core\";\nexport class RowClassesPipe {\n /** @hidden */\n transform(row, rowsClass) {\n const treeRowClass = row.type === TableRowType.TREE ? 'fdp-table__row--tree' : '';\n const rowClasses = this._getRowCustomCssClasses(row, rowsClass);\n return rowClasses.concat(' ', treeRowClass).trim();\n }\n /** @hidden */\n _getRowCustomCssClasses(row, rowsClass) {\n if (!rowsClass) {\n return '';\n }\n let rowClasses = '';\n if (isString(rowsClass)) {\n rowClasses = rowsClass;\n }\n if (isFunction(rowsClass)) {\n rowClasses = rowsClass(row.value) || '';\n }\n return rowClasses.trim();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: RowClassesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: RowClassesPipe, isStandalone: true, name: \"rowClasses\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: RowClassesPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'rowClasses', standalone: true }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWNsYXNzZXMucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9waXBlcy9yb3ctY2xhc3Nlcy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUl0RCxNQUFNLE9BQU8sY0FBYztJQUN2QixjQUFjO0lBQ2QsU0FBUyxDQUFDLEdBQWEsRUFBRSxTQUF3QjtRQUM3QyxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDbEYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUVoRSxPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFRCxjQUFjO0lBQ04sdUJBQXVCLENBQUMsR0FBYSxFQUFFLFNBQXdCO1FBQ25FLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNiLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUVwQixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3RCLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDM0IsQ0FBQztRQUVELElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDeEIsVUFBVSxHQUFJLFNBQWlCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyRCxDQUFDO1FBRUQsT0FBTyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0IsQ0FBQzs4R0ExQlEsY0FBYzs0R0FBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiwgaXNTdHJpbmcgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBUYWJsZVJvd1R5cGUgfSBmcm9tICcuLi9lbnVtcy9yb3ctdHlwZS5lbnVtJztcbmltcG9ydCB7IFRhYmxlUm93LCBUYWJsZVJvd0NsYXNzIH0gZnJvbSAnLi4vbW9kZWxzJztcblxuQFBpcGUoeyBuYW1lOiAncm93Q2xhc3NlcycsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBSb3dDbGFzc2VzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgdHJhbnNmb3JtKHJvdzogVGFibGVSb3csIHJvd3NDbGFzczogVGFibGVSb3dDbGFzcyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHRyZWVSb3dDbGFzcyA9IHJvdy50eXBlID09PSBUYWJsZVJvd1R5cGUuVFJFRSA/ICdmZHAtdGFibGVfX3Jvdy0tdHJlZScgOiAnJztcbiAgICAgICAgY29uc3Qgcm93Q2xhc3NlcyA9IHRoaXMuX2dldFJvd0N1c3RvbUNzc0NsYXNzZXMocm93LCByb3dzQ2xhc3MpO1xuXG4gICAgICAgIHJldHVybiByb3dDbGFzc2VzLmNvbmNhdCgnICcsIHRyZWVSb3dDbGFzcykudHJpbSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0Um93Q3VzdG9tQ3NzQ2xhc3Nlcyhyb3c6IFRhYmxlUm93LCByb3dzQ2xhc3M6IFRhYmxlUm93Q2xhc3MpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXJvd3NDbGFzcykge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJvd0NsYXNzZXMgPSAnJztcblxuICAgICAgICBpZiAoaXNTdHJpbmcocm93c0NsYXNzKSkge1xuICAgICAgICAgICAgcm93Q2xhc3NlcyA9IHJvd3NDbGFzcztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKHJvd3NDbGFzcykpIHtcbiAgICAgICAgICAgIHJvd0NsYXNzZXMgPSAocm93c0NsYXNzIGFzIGFueSkocm93LnZhbHVlKSB8fCAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByb3dDbGFzc2VzLnRyaW0oKTtcbiAgICB9XG59XG4iXX0=","import { Pipe } from '@angular/core';\nimport { ContentDensityMode } from '@fundamental-ngx/core/content-density';\nimport { SELECTION_COLUMN_WIDTH } from '../constants';\nimport * as i0 from \"@angular/core\";\nexport class SelectionCellStylesPipe {\n /** @hidden */\n transform(contentDensity, rtl, semanticHighlightingColumnWidth) {\n if (!contentDensity) {\n contentDensity = ContentDensityMode.COZY;\n }\n const rtlKey = rtl ? 'right' : 'left';\n const selectionColumnWidth = SELECTION_COLUMN_WIDTH.get(contentDensity) + 'px';\n return {\n [rtlKey]: (semanticHighlightingColumnWidth || 0) + 'px',\n 'min-width': selectionColumnWidth,\n 'max-width': selectionColumnWidth\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SelectionCellStylesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: SelectionCellStylesPipe, isStandalone: true, name: \"selectionCellStyles\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SelectionCellStylesPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'selectionCellStyles', standalone: true }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWNlbGwtc3R5bGVzLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvcGlwZXMvc2VsZWN0aW9uLWNlbGwtc3R5bGVzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFcEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUd0RCxNQUFNLE9BQU8sdUJBQXVCO0lBQ2hDLGNBQWM7SUFDZCxTQUFTLENBQ0wsY0FBNEMsRUFDNUMsR0FBWSxFQUNaLCtCQUE4QztRQUU5QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDbEIsY0FBYyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQztRQUM3QyxDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUN0QyxNQUFNLG9CQUFvQixHQUFHLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsR0FBRyxJQUFJLENBQUM7UUFFL0UsT0FBTztZQUNILENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQywrQkFBK0IsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJO1lBQ3ZELFdBQVcsRUFBRSxvQkFBb0I7WUFDakMsV0FBVyxFQUFFLG9CQUFvQjtTQUNwQyxDQUFDO0lBQ04sQ0FBQzs4R0FsQlEsdUJBQXVCOzRHQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBRG5DLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlNb2RlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBTRUxFQ1RJT05fQ09MVU1OX1dJRFRIIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuQFBpcGUoeyBuYW1lOiAnc2VsZWN0aW9uQ2VsbFN0eWxlcycsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBTZWxlY3Rpb25DZWxsU3R5bGVzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgdHJhbnNmb3JtKFxuICAgICAgICBjb250ZW50RGVuc2l0eTogTnVsbGFibGU8Q29udGVudERlbnNpdHlNb2RlPixcbiAgICAgICAgcnRsOiBib29sZWFuLFxuICAgICAgICBzZW1hbnRpY0hpZ2hsaWdodGluZ0NvbHVtbldpZHRoOiBudW1iZXIgfCBudWxsXG4gICAgKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIGlmICghY29udGVudERlbnNpdHkpIHtcbiAgICAgICAgICAgIGNvbnRlbnREZW5zaXR5ID0gQ29udGVudERlbnNpdHlNb2RlLkNPWlk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcnRsS2V5ID0gcnRsID8gJ3JpZ2h0JyA6ICdsZWZ0JztcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uQ29sdW1uV2lkdGggPSBTRUxFQ1RJT05fQ09MVU1OX1dJRFRILmdldChjb250ZW50RGVuc2l0eSkgKyAncHgnO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBbcnRsS2V5XTogKHNlbWFudGljSGlnaGxpZ2h0aW5nQ29sdW1uV2lkdGggfHwgMCkgKyAncHgnLFxuICAgICAgICAgICAgJ21pbi13aWR0aCc6IHNlbGVjdGlvbkNvbHVtbldpZHRoLFxuICAgICAgICAgICAgJ21heC13aWR0aCc6IHNlbGVjdGlvbkNvbHVtbldpZHRoXG4gICAgICAgIH07XG4gICAgfVxufVxuIl19","import { NgModule } from '@angular/core';\nimport { FdpCellDef, FdpEditableCellDef, FdpEditableCellFormDirective, FdpHeaderCellDef, FdpTableCell, FdpTableHeader, FdpViewSettingsFilterCustomDef, PlatformTableCellResizableDirective, PlatformTableColumnResponsiveDirective, TableCellHeaderPopoverDirective, TableDataSourceDirective, TableDraggableDirective, TableHeaderResizerDirective, TableInitialStateDirective, TableScrollableDirective, TableVirtualScrollDirective } from './directives';\nimport { ColumnResizableSidePipe, RowClassesPipe, SelectionCellStylesPipe, TableCellStylesPipe } from './pipes';\nimport * as i0 from \"@angular/core\";\nconst importExports = [\n TableInitialStateDirective,\n TableDraggableDirective,\n TableVirtualScrollDirective,\n PlatformTableColumnResponsiveDirective,\n FdpTableCell,\n TableCellHeaderPopoverDirective,\n PlatformTableCellResizableDirective,\n TableDataSourceDirective,\n TableDraggableDirective,\n FdpTableHeader,\n TableHeaderResizerDirective,\n TableInitialStateDirective,\n TableScrollableDirective,\n FdpCellDef,\n FdpEditableCellDef,\n FdpEditableCellFormDirective,\n FdpViewSettingsFilterCustomDef,\n TableVirtualScrollDirective,\n FdpHeaderCellDef,\n SelectionCellStylesPipe,\n TableCellStylesPipe,\n ColumnResizableSidePipe,\n RowClassesPipe\n];\nexport class TableHelpersModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableHelpersModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: TableHelpersModule, imports: [TableInitialStateDirective,\n TableDraggableDirective,\n TableVirtualScrollDirective,\n PlatformTableColumnResponsiveDirective,\n FdpTableCell,\n TableCellHeaderPopoverDirective,\n PlatformTableCellResizableDirective,\n TableDataSourceDirective,\n TableDraggableDirective,\n FdpTableHeader,\n TableHeaderResizerDirective,\n TableInitialStateDirective,\n TableScrollableDirective,\n FdpCellDef,\n FdpEditableCellDef,\n FdpEditableCellFormDirective,\n FdpViewSettingsFilterCustomDef,\n TableVirtualScrollDirective,\n FdpHeaderCellDef,\n SelectionCellStylesPipe,\n TableCellStylesPipe,\n ColumnResizableSidePipe,\n RowClassesPipe], exports: [TableInitialStateDirective,\n TableDraggableDirective,\n TableVirtualScrollDirective,\n PlatformTableColumnResponsiveDirective,\n FdpTableCell,\n TableCellHeaderPopoverDirective,\n PlatformTableCellResizableDirective,\n TableDataSourceDirective,\n TableDraggableDirective,\n FdpTableHeader,\n TableHeaderResizerDirective,\n TableInitialStateDirective,\n TableScrollableDirective,\n FdpCellDef,\n FdpEditableCellDef,\n FdpEditableCellFormDirective,\n FdpViewSettingsFilterCustomDef,\n TableVirtualScrollDirective,\n FdpHeaderCellDef,\n SelectionCellStylesPipe,\n TableCellStylesPipe,\n ColumnResizableSidePipe,\n RowClassesPipe] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableHelpersModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableHelpersModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [...importExports],\n exports: [...importExports]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaGVscGVycy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvdGFibGUtaGVscGVycy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQ0gsVUFBVSxFQUNWLGtCQUFrQixFQUNsQiw0QkFBNEIsRUFDNUIsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixjQUFjLEVBQ2QsOEJBQThCLEVBQzlCLG1DQUFtQyxFQUNuQyxzQ0FBc0MsRUFDdEMsK0JBQStCLEVBQy9CLHdCQUF3QixFQUN4Qix1QkFBdUIsRUFDdkIsMkJBQTJCLEVBQzNCLDBCQUEwQixFQUMxQix3QkFBd0IsRUFDeEIsMkJBQTJCLEVBQzlCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxjQUFjLEVBQUUsdUJBQXVCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBRWhILE1BQU0sYUFBYSxHQUFHO0lBQ2xCLDBCQUEwQjtJQUMxQix1QkFBdUI7SUFDdkIsMkJBQTJCO0lBQzNCLHNDQUFzQztJQUN0QyxZQUFZO0lBQ1osK0JBQStCO0lBQy9CLG1DQUFtQztJQUNuQyx3QkFBd0I7SUFDeEIsdUJBQXVCO0lBQ3ZCLGNBQWM7SUFDZCwyQkFBMkI7SUFDM0IsMEJBQTBCO0lBQzFCLHdCQUF3QjtJQUN4QixVQUFVO0lBQ1Ysa0JBQWtCO0lBQ2xCLDRCQUE0QjtJQUM1Qiw4QkFBOEI7SUFDOUIsMkJBQTJCO0lBQzNCLGdCQUFnQjtJQUNoQix1QkFBdUI7SUFDdkIsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2QixjQUFjO0NBQ2pCLENBQUM7QUFNRixNQUFNLE9BQU8sa0JBQWtCOzhHQUFsQixrQkFBa0I7K0dBQWxCLGtCQUFrQixZQTdCM0IsMEJBQTBCO1lBQzFCLHVCQUF1QjtZQUN2QiwyQkFBMkI7WUFDM0Isc0NBQXNDO1lBQ3RDLFlBQVk7WUFDWiwrQkFBK0I7WUFDL0IsbUNBQW1DO1lBQ25DLHdCQUF3QjtZQUN4Qix1QkFBdUI7WUFDdkIsY0FBYztZQUNkLDJCQUEyQjtZQUMzQiwwQkFBMEI7WUFDMUIsd0JBQXdCO1lBQ3hCLFVBQVU7WUFDVixrQkFBa0I7WUFDbEIsNEJBQTRCO1lBQzVCLDhCQUE4QjtZQUM5QiwyQkFBMkI7WUFDM0IsZ0JBQWdCO1lBQ2hCLHVCQUF1QjtZQUN2QixtQkFBbUI7WUFDbkIsdUJBQXVCO1lBQ3ZCLGNBQWMsYUF0QmQsMEJBQTBCO1lBQzFCLHVCQUF1QjtZQUN2QiwyQkFBMkI7WUFDM0Isc0NBQXNDO1lBQ3RDLFlBQVk7WUFDWiwrQkFBK0I7WUFDL0IsbUNBQW1DO1lBQ25DLHdCQUF3QjtZQUN4Qix1QkFBdUI7WUFDdkIsY0FBYztZQUNkLDJCQUEyQjtZQUMzQiwwQkFBMEI7WUFDMUIsd0JBQXdCO1lBQ3hCLFVBQVU7WUFDVixrQkFBa0I7WUFDbEIsNEJBQTRCO1lBQzVCLDhCQUE4QjtZQUM5QiwyQkFBMkI7WUFDM0IsZ0JBQWdCO1lBQ2hCLHVCQUF1QjtZQUN2QixtQkFBbUI7WUFDbkIsdUJBQXVCO1lBQ3ZCLGNBQWM7K0dBT0wsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUo5QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDO29CQUMzQixPQUFPLEVBQUUsQ0FBQyxHQUFHLGFBQWEsQ0FBQztpQkFDOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBGZHBDZWxsRGVmLFxuICAgIEZkcEVkaXRhYmxlQ2VsbERlZixcbiAgICBGZHBFZGl0YWJsZUNlbGxGb3JtRGlyZWN0aXZlLFxuICAgIEZkcEhlYWRlckNlbGxEZWYsXG4gICAgRmRwVGFibGVDZWxsLFxuICAgIEZkcFRhYmxlSGVhZGVyLFxuICAgIEZkcFZpZXdTZXR0aW5nc0ZpbHRlckN1c3RvbURlZixcbiAgICBQbGF0Zm9ybVRhYmxlQ2VsbFJlc2l6YWJsZURpcmVjdGl2ZSxcbiAgICBQbGF0Zm9ybVRhYmxlQ29sdW1uUmVzcG9uc2l2ZURpcmVjdGl2ZSxcbiAgICBUYWJsZUNlbGxIZWFkZXJQb3BvdmVyRGlyZWN0aXZlLFxuICAgIFRhYmxlRGF0YVNvdXJjZURpcmVjdGl2ZSxcbiAgICBUYWJsZURyYWdnYWJsZURpcmVjdGl2ZSxcbiAgICBUYWJsZUhlYWRlclJlc2l6ZXJEaXJlY3RpdmUsXG4gICAgVGFibGVJbml0aWFsU3RhdGVEaXJlY3RpdmUsXG4gICAgVGFibGVTY3JvbGxhYmxlRGlyZWN0aXZlLFxuICAgIFRhYmxlVmlydHVhbFNjcm9sbERpcmVjdGl2ZVxufSBmcm9tICcuL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgQ29sdW1uUmVzaXphYmxlU2lkZVBpcGUsIFJvd0NsYXNzZXNQaXBlLCBTZWxlY3Rpb25DZWxsU3R5bGVzUGlwZSwgVGFibGVDZWxsU3R5bGVzUGlwZSB9IGZyb20gJy4vcGlwZXMnO1xuXG5jb25zdCBpbXBvcnRFeHBvcnRzID0gW1xuICAgIFRhYmxlSW5pdGlhbFN0YXRlRGlyZWN0aXZlLFxuICAgIFRhYmxlRHJhZ2dhYmxlRGlyZWN0aXZlLFxuICAgIFRhYmxlVmlydHVhbFNjcm9sbERpcmVjdGl2ZSxcbiAgICBQbGF0Zm9ybVRhYmxlQ29sdW1uUmVzcG9uc2l2ZURpcmVjdGl2ZSxcbiAgICBGZHBUYWJsZUNlbGwsXG4gICAgVGFibGVDZWxsSGVhZGVyUG9wb3ZlckRpcmVjdGl2ZSxcbiAgICBQbGF0Zm9ybVRhYmxlQ2VsbFJlc2l6YWJsZURpcmVjdGl2ZSxcbiAgICBUYWJsZURhdGFTb3VyY2VEaXJlY3RpdmUsXG4gICAgVGFibGVEcmFnZ2FibGVEaXJlY3RpdmUsXG4gICAgRmRwVGFibGVIZWFkZXIsXG4gICAgVGFibGVIZWFkZXJSZXNpemVyRGlyZWN0aXZlLFxuICAgIFRhYmxlSW5pdGlhbFN0YXRlRGlyZWN0aXZlLFxuICAgIFRhYmxlU2Nyb2xsYWJsZURpcmVjdGl2ZSxcbiAgICBGZHBDZWxsRGVmLFxuICAgIEZkcEVkaXRhYmxlQ2VsbERlZixcbiAgICBGZHBFZGl0YWJsZUNlbGxGb3JtRGlyZWN0aXZlLFxuICAgIEZkcFZpZXdTZXR0aW5nc0ZpbHRlckN1c3RvbURlZixcbiAgICBUYWJsZVZpcnR1YWxTY3JvbGxEaXJlY3RpdmUsXG4gICAgRmRwSGVhZGVyQ2VsbERlZixcbiAgICBTZWxlY3Rpb25DZWxsU3R5bGVzUGlwZSxcbiAgICBUYWJsZUNlbGxTdHlsZXNQaXBlLFxuICAgIENvbHVtblJlc2l6YWJsZVNpZGVQaXBlLFxuICAgIFJvd0NsYXNzZXNQaXBlXG5dO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFsuLi5pbXBvcnRFeHBvcnRzXSxcbiAgICBleHBvcnRzOiBbLi4uaW1wb3J0RXhwb3J0c11cbn0pXG5leHBvcnQgY2xhc3MgVGFibGVIZWxwZXJzTW9kdWxlIHt9XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuZGFtZW50YWwtbmd4LXBsYXRmb3JtLXRhYmxlLWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvZnVuZGFtZW50YWwtbmd4LXBsYXRmb3JtLXRhYmxlLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":["i1.TableService","i2.Table","i1.TableResponsiveService","i2.TableColumn","i1.TableScrollDispatcherService","isDataSource","filter","isString"],"mappings":";;;;;;;;;;;;;;;;AACO,MAAM,KAAK,CAAC;AACnB,IAAI,WAAW,GAAG;AAClB;AACA,QAAQ,IAAI,CAAC,qBAAqB,GAAG,IAAI,YAAY,EAAE;AACvD;AACA,QAAQ,IAAI,CAAC,uBAAuB,GAAG,IAAI,YAAY,EAAE;AACzD;AACA,QAAQ,IAAI,CAAC,sBAAsB,GAAG,IAAI,YAAY,EAAE;AACxD;AACA,QAAQ,IAAI,CAAC,uBAAuB,GAAG,IAAI,YAAY,EAAE;AACzD;AACA,QAAQ,IAAI,CAAC,uBAAuB,GAAG,IAAI,YAAY,EAAE;AACzD,IAAI;AACJ;;ACbY,MAAC,6BAA6B,GAAG,IAAI,cAAc,CAAC,4BAA4B;AAChF,MAAC,yBAAyB,GAAG,IAAI,cAAc,CAAC,wBAAwB;AACxE,MAAC,kCAAkC,GAAG,IAAI,cAAc,CAAC,gCAAgC;;ACDzF,MAAC,kBAAkB,GAAG;AAClC,IAAI,QAAQ,EAAE,CAAC;AACf,IAAI,WAAW,EAAE;AACjB;AACY,MAAC,0BAA0B,GAAG;AAC1C,IAAI,IAAI,EAAE,EAAE;AACZ,IAAI,QAAQ,EAAE;AACd;AACY,MAAC,mBAAmB,GAAG;AACnC,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,QAAQ,EAAE,EAAE;AAChB,IAAI,OAAO,EAAE,EAAE;AACf,IAAI,IAAI,EAAE,kBAAkB;AAC5B,IAAI,OAAO,EAAE,EAAE;AACf,IAAI,UAAU,EAAE,EAAE;AAClB,IAAI,cAAc,EAAE,IAAI;AACxB,IAAI,iBAAiB,EAAE,IAAI;AAC3B,IAAI,WAAW,EAAE,0BAA0B;AAC3C,IAAI,iBAAiB,EAAE;AACvB;AACY,MAAC,wBAAwB,GAAG;AAC5B,MAAC,2BAA2B,GAAG;AAC/B,MAAC,kCAAkC,GAAG;AACtC,MAAC,sBAAsB,GAAG,IAAI,GAAG,CAAC;AAC9C,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC;AACjC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,CAAC;AACpC,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,EAAE;AACrC,CAAC;AACW,MAAC,sBAAsB,GAAG;AAC1B,MAAC,UAAU,GAAG,IAAI,GAAG,CAAC;AAClC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC;AACjC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,CAAC;AACpC,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,EAAE;AACrC,CAAC;;AC5BM,MAAM,YAAY,CAAC;AAC1B,IAAI,WAAW,GAAG;AAClB;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,eAAe,CAAC,mBAAmB,CAAC;AACnE;AACA,QAAQ,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,wBAAwB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACjH;AACA,QAAQ,IAAI,CAAC,+BAA+B,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,iCAAiC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACtI;AACA,QAAQ,IAAI,CAAC,yBAAyB,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,2BAA2B,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1H;AACA,QAAQ,IAAI,CAAC,iCAAiC,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,mCAAmC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACtI;AACA,QAAQ,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACnG;AACA,QAAQ,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,sBAAsB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAChJ;AACA,QAAQ,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACnG;AACA,QAAQ,IAAI,CAAC,qBAAqB,GAAG,CAAC;AACtC;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC;AACpD;AACA,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChE;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,EAAE;AAC1C;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,OAAO,EAAE;AACxC;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,EAAE;AAC1C;AACA,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,EAAE;AACzC;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,EAAE;AAC1C;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,OAAO,EAAE;AAC3C;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,OAAO,EAAE;AACxC;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,OAAO,EAAE;AACvC;AACA,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,EAAE;AACzC;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;AACvD;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,EAAE;AAC1C;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,OAAO,EAAE;AAC3C;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAChG;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACpG;AACA;AACA;AACA,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,eAAe,CAAC,IAAI,GAAG,EAAE,CAAC;AAC/D;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAC3D,IAAI;AACJ;AACA,IAAI,aAAa,GAAG;AACpB,QAAQ,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;AAC1C,IAAI;AACJ;AACA,IAAI,aAAa,CAAC,KAAK,EAAE;AACzB,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AACpC,IAAI;AACJ;AACA,IAAI,eAAe,CAAC,SAAS,EAAE;AAC/B,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;AAC1C,IAAI;AACJ;AACA,IAAI,YAAY,GAAG;AACnB,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AACjC,IAAI;AACJ;AACA,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AAClC,IAAI;AACJ;AACA,IAAI,MAAM,CAAC,WAAW,EAAE;AACxB,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;AAC9C,QAAQ,MAAM,KAAK,GAAG,EAAE,GAAG,SAAS,EAAE,WAAW,EAAE;AACnD,QAAQ,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC3D,QAAQ,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,WAAW,EAAE;AAC7E,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AAC9B,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAC9D,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;AACpC,IAAI;AACJ;AACA,IAAI,OAAO,CAAC,SAAS,EAAE;AACvB,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;AAC9C,QAAQ,MAAM,aAAa,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,EAAE;AACnE,QAAQ,MAAM,YAAY,GAAG,SAAS,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,EAAE;AAC5D,QAAQ,MAAM,KAAK,GAAG,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE;AAC5D,QAAQ,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE;AACjD,YAAY,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/D,YAAY,IAAI,CAAC,iBAAiB,EAAE;AACpC,YAAY,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE;AAC1E,YAAY,IAAI,CAAC,iBAAiB,EAAE;AACpC,YAAY,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AAClC,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAChE,YAAY,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;AACtC,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,OAAO,CAAC,SAAS,EAAE;AACvB,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;AAC9C,QAAQ,MAAM,aAAa,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,EAAE;AACnE,QAAQ,MAAM,YAAY,GAAG;AAC7B,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3G,YAAY,GAAG;AACf,SAAS;AACT,QAAQ,MAAM,KAAK,GAAG,EAAE,GAAG,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE;AAC5D,QAAQ,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE;AACjD,YAAY,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/D,YAAY,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE;AAC1E,YAAY,IAAI,CAAC,iBAAiB,EAAE;AACpC,YAAY,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AAClC,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAChE,YAAY,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;AACtC,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,UAAU,CAAC,WAAW,EAAE;AAC5B,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;AAC9C,QAAQ,MAAM,eAAe,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,QAAQ,KAAK,EAAE;AACvE,QAAQ,MAAM,cAAc,GAAG;AAC/B,cAAc,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AACzC,gBAAgB,GAAG,IAAI;AACvB,gBAAgB,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS;AACxE,aAAa,CAAC;AACd,cAAc,EAAE;AAChB,QAAQ,MAAM,KAAK,GAAG,EAAE,GAAG,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE;AAChE,QAAQ,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE;AACrD,YAAY,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/D,YAAY,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE;AAC9E,YAAY,IAAI,CAAC,mBAAmB,EAAE;AACtC,YAAY,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AAClC,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAClE,YAAY,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;AACxC,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,UAAU,CAAC,UAAU,EAAE;AAC3B,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;AAC9C,QAAQ,MAAM,eAAe,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,QAAQ,KAAK,EAAE;AACvE,QAAQ,MAAM,cAAc,GAAG;AAC/B,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9G,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AACzC,gBAAgB,GAAG,IAAI;AACvB,gBAAgB,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS;AACxE,aAAa,CAAC;AACd,SAAS;AACT,QAAQ,MAAM,KAAK,GAAG,EAAE,GAAG,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE;AAChE,QAAQ,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE;AACrD,YAAY,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/D,YAAY,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE;AAC9E,YAAY,IAAI,CAAC,mBAAmB,EAAE;AACtC,YAAY,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AAClC,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAClE,YAAY,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;AACxC,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,aAAa,CAAC,MAAM,EAAE;AAC1B,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;AAC9C,QAAQ,MAAM,eAAe,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,QAAQ,KAAK,EAAE;AACvE,QAAQ,MAAM,cAAc,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACrG,QAAQ,MAAM,KAAK,GAAG,EAAE,GAAG,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE;AAChE,QAAQ,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC3D,QAAQ,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE;AAC1E,QAAQ,IAAI,CAAC,mBAAmB,EAAE;AAClC,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AAC9B,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAC9D,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;AACpC,IAAI;AACJ;AACA,IAAI,SAAS,CAAC,MAAM,EAAE;AACtB,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;AAC9C,QAAQ,MAAM,UAAU,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,OAAO,KAAK,EAAE;AACjE,QAAQ,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE;AACnD,QAAQ,MAAM,KAAK,GAAG,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE;AAC1D,QAAQ,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;AAC/C,YAAY,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AACrC,YAAY,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE;AACxE,YAAY,IAAI,CAAC,kBAAkB,EAAE;AACrC,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACjE,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;AACvC,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,SAAS,CAAC,WAAW,EAAE;AAC3B,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;AAC9C,QAAQ,MAAM,UAAU,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,OAAO,KAAK,EAAE;AACjE,QAAQ,MAAM,SAAS,GAAG;AAC1B,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC1G,YAAY,GAAG;AACf,SAAS;AACT,QAAQ,MAAM,KAAK,GAAG,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE;AAC1D,QAAQ,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;AAC/C,YAAY,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AACrC,YAAY,IAAI,CAAC,kBAAkB,EAAE;AACrC,YAAY,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE;AACxE,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACjE,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;AACvC,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;AAC9B,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;AAC9C,QAAQ,IAAI,CAAC,GAAG,EAAE;AAClB,YAAY,IAAI,CAAC,aAAa,CAAC,EAAE,GAAG,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;AAC5E,QAAQ;AACR,aAAa;AACb,YAAY,IAAI,CAAC,aAAa,CAAC,EAAE,GAAG,SAAS,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;AAC/E,QAAQ;AACR,QAAQ,MAAM,GAAG,GAAG;AACpB,YAAY,OAAO,EAAE,UAAU;AAC/B,YAAY,QAAQ,EAAE,GAAG,GAAG,SAAS,CAAC,iBAAiB,GAAG,SAAS,CAAC;AACpE,SAAS;AACT,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAC9D,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;AACpC,IAAI;AACJ;AACA,IAAI,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE;AAC9B,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;AAC9C,QAAQ,MAAM,WAAW,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,OAAO,KAAK,EAAE;AAClE,QAAQ,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,CAAC;AACvC,QAAQ,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC;AACvC,QAAQ,MAAM,KAAK,GAAG,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE;AACtF,QAAQ,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;AAChD,YAAY,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AACrC,YAAY,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE;AACzE,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACnE,YAAY,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;AACzC,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,cAAc,CAAC,WAAW,EAAE;AAChC,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;AAC9C,QAAQ,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI;AAC5C,QAAQ,IAAI,aAAa,CAAC,WAAW,KAAK,WAAW,EAAE;AACvD,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,KAAK,GAAG,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC;AACnE,QAAQ,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AACjC,QAAQ,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE;AACpE,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AAC9B,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAC5D,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;AAClC,IAAI;AACJ;AACA,IAAI,eAAe,CAAC,YAAY,EAAE,eAAe,GAAG,IAAI,EAAE;AAC1D,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;AAC9C,QAAQ,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI;AAC5C,QAAQ,IAAI,aAAa,CAAC,QAAQ,KAAK,YAAY,EAAE;AACrD,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,KAAK,GAAG,kBAAkB,CAAC,SAAS,EAAE,YAAY,CAAC;AAC/D,QAAQ,IAAI,eAAe,EAAE;AAC7B,YAAY,KAAK,GAAG,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC;AACnD,QAAQ;AACR,QAAQ,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AACjC,QAAQ,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE;AACpE,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AAC9B,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAC5D,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;AAClC,IAAI;AACJ;AACA,IAAI,eAAe,GAAG;AACtB,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;AAC/C,QAAQ,OAAO;AACf,YAAY,UAAU,EAAE,UAAU,CAAC,UAAU;AAC7C,YAAY,MAAM,EAAE,EAAE;AACtB,YAAY,QAAQ,EAAE,EAAE;AACxB,YAAY,OAAO,EAAE,EAAE;AACvB,YAAY,OAAO,EAAE,UAAU,CAAC,OAAO;AACvC,YAAY,WAAW,EAAE;AACzB,gBAAgB,QAAQ,EAAE,IAAI;AAC9B,gBAAgB,IAAI,EAAE;AACtB,aAAa;AACb,YAAY,cAAc,EAAE,IAAI;AAChC,YAAY,iBAAiB,EAAE,IAAI;AACnC,YAAY,IAAI,EAAE;AAClB,gBAAgB,QAAQ,EAAE,CAAC;AAC3B,gBAAgB,WAAW,EAAE;AAC7B,aAAa;AACb,YAAY,iBAAiB,EAAE;AAC/B,SAAS;AACT,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,iBAAiB,CAAC,OAAO,EAAE;AAC/B,QAAQ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;AACzC,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,iBAAiB,CAAC,OAAO,EAAE;AAC/B,QAAQ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;AACzC,QAAQ,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,MAAM;AACnD,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,kBAAkB,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE;AACrD,QAAQ,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AACjF,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7C,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,iBAAiB,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE;AACpD,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACjH,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,mBAAmB,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE;AACtD,QAAQ,MAAM,yBAAyB,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AACxE,YAAY,GAAG,IAAI;AACnB,YAAY,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS;AACpE,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK;AAC/E,YAAY,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK;AAClC,YAAY,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAChC,gBAAgB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC;AACjC,YAAY;AACZ,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;AACrC,YAAY,OAAO,IAAI;AACvB,QAAQ,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;AACtB,QAAQ,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE;AACpF,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAC9D,IAAI;AACJ;AACA,IAAI,YAAY,GAAG;AACnB,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;AAC9C,QAAQ,MAAM,eAAe,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,QAAQ,KAAK,EAAE;AACvE,QAAQ,MAAM,cAAc,GAAG,EAAE;AACjC,QAAQ,MAAM,KAAK,GAAG,EAAE,GAAG,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE;AAChE,QAAQ,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE;AACrD,YAAY,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC/D,YAAY,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE;AAC9E,YAAY,IAAI,CAAC,mBAAmB,EAAE;AACtC,YAAY,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AAClC,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAClE,YAAY,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;AACxC,QAAQ;AACR,IAAI;AACJ;AACA;AACA;AACA,IAAI,sBAAsB,GAAG;AAC7B,QAAQ,IAAI,CAAC,kBAAkB,EAAE;AACjC,QAAQ,IAAI,CAAC,iBAAiB,EAAE;AAChC,QAAQ,IAAI,CAAC,mBAAmB,EAAE;AAClC,IAAI;AACJ;AACA,IAAI,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE;AACpC,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,KAAK,CAAC;AACrF,QAAQ,OAAO,MAAM,GAAG,MAAM,CAAC,IAAI,IAAI,SAAS,IAAI,KAAK,CAAC;AAC1D,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAC/K,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;AAClI;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;AACtH,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,CAAC;AACb;AACA,SAAS,qBAAqB,CAAC,KAAK,EAAE,WAAW,EAAE;AACnD,IAAI,MAAM,YAAY,GAAG,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE;AACvD,IAAI,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE;AAC3C;AACA;AACA,SAAS,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC7C,IAAI,MAAM,YAAY,GAAG,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE;AACpD,IAAI,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE;AAC3C;;ACjYO,MAAM,sBAAsB,CAAC;AACpC;AACA,IAAI,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE;AAChD,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM;AAC5B,QAAQ,IAAI,CAAC,aAAa,GAAG,aAAa;AAC1C,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;AAC9B;AACA,QAAQ,IAAI,CAAC,sBAAsB,GAAG,IAAI,GAAG,EAAE;AAC/C;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAC7C,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,wBAAwB,CAAC,MAAM,EAAE,WAAW,EAAE;AAClD,QAAQ,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;AACxF,QAAQ,IAAI,CAAC,oBAAoB,EAAE;AACnC,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,qBAAqB,CAAC,WAAW,EAAE;AACvC,QAAQ,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW;AACzD,aAAa,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC;AACvC,aAAa,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAClC,QAAQ,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK;AACzF,YAAY,MAAM,CAAC,IAAI,CAAC;AACxB,gBAAgB,GAAG,EAAE,KAAK;AAC1B,gBAAgB,GAAG,EAAE,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,QAAQ;AAC/E,gBAAgB,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE;AACxD,aAAa,CAAC;AACd,YAAY,OAAO,MAAM;AACzB,QAAQ,CAAC,EAAE,EAAE,CAAC;AACd,QAAQ,OAAO,cAAc;AAC7B,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,oBAAoB,GAAG;AAC3B,QAAQ,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE;AAC/C,QAAQ,IAAI,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa;AAC9E,aAAa,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACxE,aAAa,SAAS,CAAC,MAAM;AAC7B,YAAY,IAAI,CAAC,yBAAyB,EAAE;AAC5C,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA,IAAI,yBAAyB,GAAG;AAChC,QAAQ,IAAI,YAAY,GAAG,KAAK;AAChC,QAAQ,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,qBAAqB,EAAE;AAC5E,QAAQ,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,IAAI,KAAK;AACnE,YAAY,MAAM,iBAAiB,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,GAAG,IAAI,KAAK,IAAI,UAAU,CAAC,GAAG,IAAI,KAAK,CAAC;AAC1H,YAAY,IAAI,iBAAiB,EAAE;AACnC,gBAAgB,YAAY,GAAG,YAAY,IAAI,IAAI,CAAC,eAAe,KAAK,iBAAiB,CAAC,UAAU;AACpG,gBAAgB,IAAI,CAAC,eAAe,GAAG,iBAAiB,CAAC,UAAU;AACnE,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV;AACA,QAAQ,IAAI,CAAC,YAAY,EAAE;AAC3B,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC;AACrG,QAAQ,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC;AAC7C,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,KAAK,EAAE,EAAE,QAAQ,EAAE,mBAAmB,EAAE,OAAO,EAAE,mBAAmB;AAChF,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAC/G,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAEA,YAAe,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAC/P,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC,CAAC;AAC5I;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,UAAU,EAAE,CAAC;AAChI,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAEC,KAAQ,EAAE,UAAU,EAAE,CAAC;AAClE,oBAAoB,IAAI,EAAE,MAAM;AAChC,oBAAoB,IAAI,EAAE,CAAC,KAAK;AAChC,iBAAiB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAED,YAAe,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;;ACzFrE,MAAM,WAAW,CAAC;AACzB;;ACMO,MAAM,sCAAsC,CAAC;AACpD;AACA;AACA;AACA;AACA,IAAI,IAAI,WAAW,CAAC,KAAK,EAAE;AAC3B,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC9D,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,YAAY,GAAG,KAAK;AACjC,QAAQ,IAAI,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC;AAC9F,IAAI;AACJ,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,YAAY;AAChC,IAAI;AACJ;AACA,IAAI,WAAW,CAAC,uBAAuB,EAAE,OAAO,EAAE;AAClD,QAAQ,IAAI,CAAC,uBAAuB,GAAG,uBAAuB;AAC9D,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;AAC9B;AACA,QAAQ,IAAI,CAAC,YAAY,GAAG,EAAE;AAC9B,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,sCAAsC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAEE,sBAAyB,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACpR,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,sCAAsC,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,4BAA4B,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,0BAA0B,EAAE,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AAC5R;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,sCAAsC,EAAE,UAAU,EAAE,CAAC;AAChJ,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,QAAQ,EAAE,4BAA4B;AAC1D,oBAAoB,UAAU,EAAE;AAChC,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAEA,sBAAyB,EAAE,EAAE,EAAE,IAAI,EAAEC,WAAc,EAAE,UAAU,EAAE,CAAC;AAC7G,oBAAoB,IAAI,EAAE;AAC1B,iBAAiB,EAAE;AACnB,oBAAoB,IAAI,EAAE,MAAM;AAChC,oBAAoB,IAAI,EAAE,CAAC,WAAW;AACtC,iBAAiB,CAAC,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,WAAW,EAAE,CAAC;AACvD,gBAAgB,IAAI,EAAE,KAAK;AAC3B,gBAAgB,IAAI,EAAE,CAAC,0BAA0B;AACjD,aAAa,CAAC,EAAE,EAAE,CAAC;;AC5CZ,MAAM,+BAA+B,CAAC;AAC7C;AACA,IAAI,WAAW,CAAC,WAAW,EAAE;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW;AACtC,IAAI;AACJ;AACA,IAAI,OAAO,sBAAsB,CAAC,SAAS,EAAE,OAAO,EAAE;AACtD,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAC1N,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,+BAA+B,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,6BAA6B,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AAChN;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE,UAAU,EAAE,CAAC;AACzI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,QAAQ,EAAE,6BAA6B;AAC3D,oBAAoB,UAAU,EAAE;AAChC,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;;ACjBnD,MAAC,gBAAgB,GAAG,IAAI,cAAc,CAAC,kBAAkB;AAC9D,MAAM,4BAA4B,CAAC;AAC1C,IAAI,WAAW,GAAG;AAClB;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,OAAO,EAAE;AAC3C;AACA,QAAQ,IAAI,CAAC,sBAAsB,GAAG,IAAI,OAAO,EAAE;AACnD;AACA,QAAQ,IAAI,CAAC,wBAAwB,GAAG,IAAI,OAAO,EAAE;AACrD;AACA,QAAQ,IAAI,CAAC,2BAA2B,GAAG,IAAI,GAAG,EAAE;AACpD,IAAI;AACJ;AACA,IAAI,QAAQ,CAAC,UAAU,EAAE;AACzB,QAAQ,IAAI,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AAC9D,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,GAAG,GAAG,IAAI,YAAY,EAAE;AACtC,QAAQ,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACnG,QAAQ,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,yBAAyB,EAAE,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACvH,QAAQ,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,uBAAuB,EAAE,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACnH,QAAQ,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC;AAC7D,IAAI;AACJ;AACA,IAAI,UAAU,CAAC,UAAU,EAAE;AAC3B,QAAQ,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AAC/D,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE;AACvE,IAAI;AACJ;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;AACjD,IAAI;AACJ;AACA,IAAI,oBAAoB,GAAG;AAC3B,QAAQ,OAAO,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE;AAC3D,IAAI;AACJ;AACA,IAAI,kBAAkB,GAAG;AACzB,QAAQ,OAAO,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE;AACzD,IAAI;AACJ;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,WAAW,EAAE,CAAC;AACnH,QAAQ,IAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE;AAChD,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAC/L,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC,CAAC;AAClJ;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,UAAU,EAAE,CAAC;AACtI,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,CAAC;;AC9CD,MAAC,0BAA0B,GAAG;AAC1C;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,wBAAwB,CAAC;AACtC;AACA,IAAI,IAAI,gBAAgB,GAAG;AAC3B,QAAQ,OAAO,IAAI,CAAC,iBAAiB;AACrC,IAAI;AACJ;AACA,IAAI,IAAI,eAAe,GAAG;AAC1B,QAAQ,OAAO,IAAI,CAAC,gBAAgB,IAAI,CAAC;AACzC,IAAI;AACJ;AACA,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;AAChD,IAAI;AACJ;AACA,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,KAAK,IAAI,CAAC,mBAAmB,CAAC,MAAM;AAClF,IAAI;AACJ;AACA,IAAI,WAAW,CAAC,6BAA6B,EAAE,WAAW,EAAE;AAC5D,QAAQ,IAAI,CAAC,6BAA6B,GAAG,6BAA6B;AAC1E,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW;AACtC;AACA,QAAQ,IAAI,CAAC,sBAAsB,GAAG,IAAI,eAAe,CAAC,IAAI,GAAG,EAAE,CAAC;AACpE;AACA,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;AAC3D;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACxG;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,eAAe,CAAC,CAAC,CAAC;AACtD;AACA,QAAQ,IAAI,CAAC,qBAAqB,GAAG,IAAI,GAAG,EAAE;AAC9C;AACA,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE;AACxC;AACA,QAAQ,IAAI,CAAC,mBAAmB,GAAG,EAAE;AACrC;AACA,QAAQ,IAAI,CAAC,8BAA8B,GAAG,IAAI,GAAG,EAAE;AACvD;AACA,QAAQ,IAAI,CAAC,+BAA+B,GAAG,IAAI,GAAG,EAAE;AACxD;AACA,QAAQ,IAAI,CAAC,6BAA6B,GAAG,IAAI,GAAG,EAAE;AACtD;AACA,QAAQ,IAAI,CAAC,8BAA8B,GAAG,IAAI,GAAG,EAAE;AACvD;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI;AAC3B;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI;AACjC;AACA,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK;AAC7D;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI;AACpC;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,CAAC;AAC5B;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,EAAE;AAC1C;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC5C;AACA,QAAQ,IAAI,CAAC,wBAAwB,GAAG,IAAI,YAAY,EAAE;AAC1D;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACpH,QAAQ,IAAI,CAAC;AACb,cAAc,oBAAoB;AAClC,aAAa,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACrD,aAAa,SAAS,CAAC,CAAC,UAAU,KAAK;AACvC,YAAY,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AACzC,YAAY,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,aAAa,EAAE;AACzD,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,iBAAiB,GAAG,KAAK;AACtC,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1C,QAAQ,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE;AACnD,IAAI;AACJ;AACA,IAAI,WAAW,CAAC,GAAG,EAAE;AACrB,QAAQ,IAAI,CAAC,SAAS,GAAG,GAAG;AAC5B,IAAI;AACJ;AACA,IAAI,cAAc,CAAC,kBAAkB,EAAE;AACvC,QAAQ,IAAI,CAAC,8BAA8B,CAAC,KAAK,EAAE;AACnD,QAAQ,IAAI,CAAC,+BAA+B,CAAC,KAAK,EAAE;AACpD,QAAQ,kBAAkB,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,KAAK;AACtD,YAAY,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC1F,QAAQ,CAAC,CAAC;AACV,QAAQ,kBAAkB,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,KAAK;AAChE,YAAY,IAAI,CAAC,+BAA+B,CAAC,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC3F,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,mBAAmB,GAAG,CAAC,GAAG,kBAAkB,CAAC;AAC1D,QAAQ,IAAI,CAAC,wBAAwB,EAAE;AACvC,IAAI;AACJ;AACA,IAAI,wBAAwB,GAAG;AAC/B,QAAQ,IAAI,iBAAiB,GAAG,CAAC,EAAE,aAAa,GAAG,CAAC;AACpD,QAAQ,KAAK,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,8BAA8B,CAAC,OAAO,EAAE,EAAE;AAC1F,YAAY,iBAAiB;AAC7B,gBAAgB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,IAAI,CAAC;AAC3G,YAAY,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC;AAC7E,QAAQ;AACR,QAAQ,KAAK,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,+BAA+B,CAAC,OAAO,EAAE,EAAE;AAC3F,YAAY,aAAa;AACzB,gBAAgB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,IAAI,CAAC;AAC3G,YAAY,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC;AAC1E,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,mCAAmC,CAAC,UAAU,EAAE,KAAK,EAAE;AAC3D,QAAQ,IAAI,KAAK,GAAG,KAAK;AACzB,QAAQ,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,6BAA6B,CAAC,OAAO,EAAE,EAAE;AACpF,YAAY,IAAI,MAAM,KAAK,UAAU,EAAE;AACvC,gBAAgB,KAAK,GAAG,IAAI;AAC5B,YAAY;AACZ,iBAAiB,IAAI,KAAK,EAAE;AAC5B,gBAAgB,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK,CAAC;AAC7E,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,mBAAmB,CAAC,UAAU,EAAE;AACpC,QAAQ,MAAM,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC;AAC1E,QAAQ,OAAO,eAAe,IAAI,OAAO;AACzC,IAAI;AACJ;AACA,IAAI,qBAAqB,CAAC,UAAU,EAAE;AACtC,QAAQ,OAAO,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,UAAU,CAAC;AAClE,IAAI;AACJ;AACA,IAAI,iBAAiB,CAAC,UAAU,EAAE;AAClC,QAAQ,OAAO,IAAI,CAAC,+BAA+B,CAAC,GAAG,CAAC,UAAU,CAAC;AACnE,IAAI;AACJ;AACA,IAAI,mBAAmB,CAAC,UAAU,EAAE;AACpC,QAAQ,OAAO,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;AACtE,IAAI;AACJ;AACA,IAAI,mBAAmB,CAAC,UAAU,EAAE;AACpC,QAAQ,OAAO,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;AACvE,IAAI;AACJ;AACA,IAAI,kBAAkB,CAAC,UAAU,EAAE,SAAS,EAAE;AAC9C,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE;AACtE,QAAQ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,GAAG,WAAW,CAAC,CAAC;AACzE,IAAI;AACJ;AACA,IAAI,oBAAoB,CAAC,UAAU,EAAE,SAAS,EAAE;AAChD,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE;AACtE,QAAQ,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,KAAK,SAAS,CAAC,aAAa,CAAC;AAClG,QAAQ,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE;AAC7B,YAAY;AACZ,QAAQ;AACR,QAAQ,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvC,QAAQ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC;AACzD,IAAI;AACJ;AACA,IAAI,cAAc,CAAC,UAAU,EAAE,KAAK,EAAE;AACtC,QAAQ,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC;AACzD,QAAQ,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC;AACpE,IAAI;AACJ;AACA,IAAI,yBAAyB,CAAC,eAAe,EAAE,aAAa,EAAE;AAC9D,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACnC,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,cAAc,GAAG,aAAa;AAC3C,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI;AACpC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACxD,QAAQ,IAAI,eAAe,IAAI,IAAI,EAAE;AACrC,YAAY,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/E,YAAY,IAAI,CAAC,gBAAgB,GAAG,eAAe,GAAG,0BAA0B,GAAG,gBAAgB;AACnG,YAAY,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AAC5D,QAAQ;AACR,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AACjC,IAAI;AACJ;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACpC,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI;AACpC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACxD,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AACjC,IAAI;AACJ;AACA,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe;AAC3C,QAAQ,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,OAAO;AAC1C,QAAQ,IAAI,CAAC,iCAAiC,EAAE;AAChD,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI;AACrC,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;AACzC,IAAI;AACJ;AACA,IAAI,YAAY,CAAC,KAAK,EAAE;AACxB,QAAQ,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE;AACnD,QAAQ,IAAI,CAAC,iBAAiB,GAAG,KAAK;AACtC,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1C,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI;AACpC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AACxD,QAAQ,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE;AAClC,YAAY,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC;AACxD,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,YAAY,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,YAAY;AACpG,YAAY,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AACtC,QAAQ;AACR,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI;AAC3B,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI;AACjC,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AACjC,IAAI;AACJ;AACA,IAAI,cAAc,CAAC,KAAK,EAAE;AAC1B,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa;AAChG,QAAQ,MAAM,WAAW,GAAG,cAAc,EAAE,qBAAqB,EAAE,CAAC,KAAK;AACzE,QAAQ,IAAI,CAAC,WAAW,IAAI,CAAC,cAAc,EAAE;AAC7C,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,KAAK,GAAG,CAAC,IAAI,WAAW,GAAG,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE;AAClF,YAAY,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,GAAG,WAAW;AACnE,QAAQ;AACR,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AAC9B,YAAY,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE;AAC9E,gBAAgB,IAAI,KAAK,CAAC,MAAM,EAAE;AAClC,oBAAoB,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC;AAC3H,gBAAgB;AAChB,YAAY;AACZ,YAAY,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC;AACxE,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ,IAAI,KAAK,GAAG,CAAC;AACrB,aAAa,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;AACtE,gBAAgB,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE;AAChF,YAAY,IAAI,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,WAAW;AACzF,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;AAC/E,gBAAgB,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,WAAW;AACzF,YAAY;AACZ,YAAY,MAAM,QAAQ,GAAG,WAAW,GAAG,KAAK;AAChD,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,kCAAkC,EAAE;AAChF,YAAY,IAAI,QAAQ,IAAI,QAAQ,EAAE;AACtC,gBAAgB,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AACrE,oBAAoB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC9D,gBAAgB,CAAC,CAAC;AAClB,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,YAAY,GAAG,WAAW,GAAG,KAAK;AAChD,QAAQ,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,YAAY,GAAG,IAAI,CAAC;AAChF,QAAQ,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC;AACpE,QAAQ,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC;AAC5E,QAAQ,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,cAAc,CAAC;AACtE,QAAQ,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,WAAW,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,EAAE,CAAC;AAC5G,QAAQ,IAAI,CAAC,0BAA0B,CAAC,YAAY,GAAG,OAAO,CAAC;AAC/D,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AACjC,IAAI;AACJ;AACA,IAAI,iCAAiC,GAAG;AACxC,QAAQ,IAAI,CAAC,wBAAwB,GAAG,SAAS,CAAC,QAAQ,EAAE,WAAW;AACvE,aAAa,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;AAClC,aAAa,SAAS,CAAC,CAAC,KAAK,KAAK;AAClC,YAAY,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC;AACxD,YAAY,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,YAAY,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,YAAY;AACpG,YAAY,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,KAAK;AAC/D,YAAY,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;AAC5D,YAAY,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AACrC,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,0BAA0B,CAAC,YAAY,EAAE;AAC7C,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC;AAC7B,aAAa,GAAG,CAAC,IAAI,CAAC,cAAc;AACpC,cAAc,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,KAAK,IAAI,CAAC,EAAE,aAAa;AAC3E,QAAQ,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC;AACjH,QAAQ,MAAM,cAAc,GAAG,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;AACjH,QAAQ,IAAI,CAAC,cAAc,IAAI,CAAC,aAAa,EAAE;AAC/C,YAAY;AACZ,QAAQ;AACR,QAAQ,aAAa,CAAC,eAAe,GAAG,cAAc,CAAC,WAAW,GAAG,YAAY;AACjF,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAEC,4BAA+B,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAC/Q,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC;AAC9I;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,UAAU,EAAE,CAAC;AAClI,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAEA,4BAA+B,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC;AAClH,oBAAoB,IAAI,EAAE;AAC1B,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC;;ACzSZ,MAAC,iCAAiC,GAAG;AACjD;AACA;AACA;AACO,MAAM,mCAAmC,SAAS,kBAAkB,CAAC;AAC5E,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,MAAM;AACpC;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AACpH;AACA,QAAQ,IAAI,CAAC,yBAAyB,GAAG,MAAM,CAAC,wBAAwB,CAAC;AACzE;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE;AAC9C,YAAY,QAAQ,EAAE;AACtB,SAAS,CAAC;AACV,IAAI;AACJ;AACA,IAAI,IAAI,aAAa,CAAC,KAAK,EAAE;AAC7B,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,cAAc,GAAG,KAAK;AACnC,IAAI;AACJ;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM;AAC3C,YAAY,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,WAAW;AAChE,iBAAiB,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,gBAAgB,KAAK,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,eAAe,EAAE,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACvP,iBAAiB,SAAS,CAAC,CAAC,IAAI,KAAK;AACrC,gBAAgB,IAAI,CAAC,yBAAyB,CAAC,yBAAyB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC;AAClH,YAAY,CAAC,CAAC;AACd,YAAY,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO;AAC5D,iBAAiB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAC1D,iBAAiB,SAAS,CAAC,MAAM;AACjC,gBAAgB,IAAI,CAAC,yBAAyB,CAAC,yBAAyB,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;AAC5F,YAAY,CAAC,CAAC;AACd,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE;AACrC,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,yBAAyB,EAAE,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC;AAC5F,IAAI;AACJ;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,yBAAyB,EAAE,oBAAoB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC;AAC9F,IAAI;AACJ;AACA,IAAI,WAAW,CAAC,KAAK,EAAE;AACvB,QAAQ,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AAChD,QAAQ,MAAM,UAAU,GAAG,EAAE,CAAC,qBAAqB,EAAE;AACrD;AACA,QAAQ,IAAI,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE;AACrG,YAAY,IAAI,eAAe;AAC/B,YAAY,IAAI,aAAa;AAC7B,YAAY,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK;AAC5C,kBAAkB,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG;AACrD,kBAAkB,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,IAAI,GAAG,iCAAiC;AACrF,YAAY,IAAI,aAAa,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK,EAAE;AAChE,gBAAgB,eAAe,GAAG,IAAI,CAAC,KAAK;AAC5C,sBAAsB,EAAE,CAAC,aAAa,CAAC,WAAW,IAAI,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,WAAW;AACpF,sBAAsB,EAAE,CAAC,UAAU;AACnC,gBAAgB,aAAa,GAAG,IAAI,CAAC,yBAAyB,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC;AACrG,YAAY;AACZ,YAAY,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK;AAC7C,kBAAkB,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC,IAAI,GAAG;AACpD,kBAAkB,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,iCAAiC;AACtF,YAAY,IAAI,cAAc,IAAI,IAAI,CAAC,cAAc,KAAK,OAAO,EAAE;AACnE,gBAAgB,eAAe,GAAG,IAAI,CAAC,KAAK;AAC5C,sBAAsB,EAAE,CAAC,aAAa,CAAC,WAAW,GAAG,EAAE,CAAC;AACxD,sBAAsB,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,WAAW;AACpD,gBAAgB,aAAa,GAAG,IAAI,CAAC,UAAU;AAC/C,YAAY;AACZ,YAAY,IAAI,CAAC,aAAa,EAAE;AAChC,gBAAgB,OAAO,IAAI;AAC3B,YAAY;AACZ,YAAY,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE;AACtE,QAAQ;AACR,aAAa;AACb,YAAY,OAAO,IAAI;AACvB,QAAQ;AACR,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mCAAmC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACvM,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,mCAAmC,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,yBAAyB,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,CAAC,uBAAuB,EAAE,eAAe,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE;AAC5S,YAAY;AACZ,gBAAgB,OAAO,EAAE,4BAA4B;AACrD,gBAAgB,WAAW,EAAE;AAC7B,aAAa;AACb,YAAY;AACZ,gBAAgB,OAAO,EAAE,sBAAsB;AAC/C,gBAAgB,WAAW,EAAE;AAC7B,aAAa;AACb,YAAY;AACZ,gBAAgB,OAAO,EAAE,kBAAkB;AAC3C,gBAAgB,WAAW,EAAE;AAC7B;AACA,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AAClD;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mCAAmC,EAAE,UAAU,EAAE,CAAC;AAC7I,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,QAAQ,EAAE,yBAAyB;AACvD,oBAAoB,UAAU,EAAE,IAAI;AACpC,oBAAoB,SAAS,EAAE;AAC/B,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,4BAA4B;AACjE,4BAA4B,WAAW,EAAE;AACzC,yBAAyB;AACzB,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,sBAAsB;AAC3D,4BAA4B,WAAW,EAAE;AACzC,yBAAyB;AACzB,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,kBAAkB;AACvD,4BAA4B,WAAW,EAAE;AACzC;AACA;AACA,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,EAAE,aAAa,EAAE,CAAC;AAC9C,gBAAgB,IAAI,EAAE,KAAK;AAC3B,gBAAgB,IAAI,EAAE,CAAC,uBAAuB;AAC9C,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;AAC7B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,EAAE,CAAC;;ACvIZ,MAAM,iBAAiB,CAAC;AAC/B;;ACIA;AACA;AACA;AACO,MAAM,YAAY,CAAC;AAC1B,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAC9K,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AAChL;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;AACtH,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,IAAI,EAAE;AACnE,SAAS,CAAC,EAAE,CAAC;AACb;AACA;AACA;AACA;AACA;AACO,MAAM,UAAU,CAAC;AACxB;AACA,IAAI,WAAW,CAAC,WAAW,EAAE;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW;AACtC,IAAI;AACJ;AACA,IAAI,OAAO,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE;AAC5C,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACrM,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AACtN;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AACpH,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE;AACjE,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,YAAY,EAAE,CAAC;AAC/F,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,EAAE,CAAC;AACnB;AACO,MAAM,kBAAkB,CAAC;AAChC;AACA,IAAI,WAAW,CAAC,WAAW,EAAE;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW;AACtC,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAC7M,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,kBAAkB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,sBAAsB,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AAC5L;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,CAAC;AAC5H,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE;AACzE,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;AACxD,MAAM,4BAA4B,CAAC;AAC1C;AACA,IAAI,WAAW,CAAC,IAAI,EAAE;AACtB,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAClN,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,4BAA4B,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,uBAAuB,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,4BAA4B,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AAC/R;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,UAAU,EAAE,CAAC;AACtI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,QAAQ,EAAE,uBAAuB;AACrD,oBAAoB,UAAU,EAAE,IAAI;AACpC,oBAAoB,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,4BAA4B,EAAE;AACzG,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;;ACnEhD,IAAC;AACX,CAAC,UAAU,UAAU,EAAE;AACvB,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,OAAO;AACjC,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,eAAe;AAC1C,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,cAAc;AACxC,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,UAAU;AACvC,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,QAAQ;AACnC,CAAC,EAAE,UAAU,KAAK,UAAU,GAAG,EAAE,CAAC,CAAC;AACzB,IAAC;AACX,CAAC,UAAU,wBAAwB,EAAE;AACrC,IAAI,wBAAwB,CAAC,QAAQ,CAAC,GAAG,QAAQ;AACjD,IAAI,wBAAwB,CAAC,QAAQ,CAAC,GAAG,QAAQ;AACjD,IAAI,wBAAwB,CAAC,SAAS,CAAC,GAAG,SAAS;AACnD,IAAI,wBAAwB,CAAC,MAAM,CAAC,GAAG,MAAM;AAC7C,CAAC,EAAE,wBAAwB,KAAK,wBAAwB,GAAG,EAAE,CAAC,CAAC;;ACb/D;AACY,MAAC,eAAe,GAAG;AAC/B,IAAI,EAAE,EAAE,SAAS;AACjB,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,WAAW,EAAE,YAAY;AAC7B,IAAI,SAAS,EAAE,UAAU;AACzB,IAAI,EAAE,EAAE,aAAa;AACrB,IAAI,GAAG,EAAE,sBAAsB;AAC/B,IAAI,EAAE,EAAE,UAAU;AAClB,IAAI,GAAG,EAAE,mBAAmB;AAC5B,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,WAAW,EAAE,WAAW;AAC5B,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,YAAY,EAAE;AAClB;AACY,MAAC,qBAAqB,GAAG;AACrC,IAAI,OAAO,EAAE,6CAA6C;AAC1D,IAAI,QAAQ,EAAE,8CAA8C;AAC5D,IAAI,OAAO,EAAE,6CAA6C;AAC1D,IAAI,UAAU,EAAE,gDAAgD;AAChE,IAAI,QAAQ,EAAE,8CAA8C;AAC5D,IAAI,WAAW,EAAE,iDAAiD;AAClE,IAAI,oBAAoB,EAAE,0DAA0D;AACpF,IAAI,QAAQ,EAAE,8CAA8C;AAC5D,IAAI,iBAAiB,EAAE,uDAAuD;AAC9E,IAAI,KAAK,EAAE,2CAA2C;AACtD,IAAI,SAAS,EAAE,+CAA+C;AAC9D,IAAI,MAAM,EAAE,4CAA4C;AACxD,IAAI,UAAU,EAAE;AAChB;AACA;AACY,MAAC,oBAAoB,GAAG;AACpC,IAAI,EAAE,EAAE,SAAS;AACjB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,WAAW,EAAE,WAAW;AAC5B,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,YAAY,EAAE;AAClB;AACY,MAAC,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC,oBAAoB;AACxE;AACY,MAAC,sBAAsB,GAAG;AACtC,IAAI,EAAE,EAAE,SAAS;AACjB,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,EAAE,EAAE,aAAa;AACrB,IAAI,GAAG,EAAE,sBAAsB;AAC/B,IAAI,EAAE,EAAE,UAAU;AAClB,IAAI,GAAG,EAAE;AACT;AACY,MAAC,wBAAwB,GAAG,MAAM,CAAC,MAAM,CAAC,sBAAsB;AAC5E;AACY,MAAC,sBAAsB,GAAG;AACtC,IAAI,QAAQ,EAAE,UAAU;AACxB,IAAI,EAAE,EAAE,SAAS;AACjB,IAAI,WAAW,EAAE,YAAY;AAC7B,IAAI,OAAO,EAAE,SAAS;AACtB,IAAI,SAAS,EAAE,UAAU;AACzB,IAAI,EAAE,EAAE,aAAa;AACrB,IAAI,GAAG,EAAE,sBAAsB;AAC/B,IAAI,EAAE,EAAE,UAAU;AAClB,IAAI,GAAG,EAAE;AACT;AACY,MAAC,wBAAwB,GAAG,MAAM,CAAC,MAAM,CAAC,sBAAsB;AAC5E;AACY,MAAC,uBAAuB,GAAG;AACvC,IAAI,EAAE,EAAE;AACR;AACY,MAAC,yBAAyB,GAAG,MAAM,CAAC,MAAM,CAAC,uBAAuB;AAC9E;AACY,MAAC,uBAAuB,GAAG;AACvC,IAAI,EAAE,EAAE;AACR;AACY,MAAC,yBAAyB,GAAG,MAAM,CAAC,MAAM,CAAC,uBAAuB;AAC9E;AACY,MAAC,kCAAkC,GAAG,CAAC,QAAQ,KAAK;AAChE,IAAI,QAAQ,QAAQ;AACpB,QAAQ,KAAK,wBAAwB,CAAC,MAAM;AAC5C,YAAY,OAAO,wBAAwB;AAC3C,QAAQ,KAAK,wBAAwB,CAAC,MAAM;AAC5C,YAAY,OAAO,wBAAwB;AAC3C,QAAQ,KAAK,wBAAwB,CAAC,IAAI;AAC1C,YAAY,OAAO,sBAAsB;AACzC,QAAQ,KAAK,wBAAwB,CAAC,OAAO;AAC7C,YAAY,OAAO,yBAAyB;AAC5C,QAAQ;AACR,YAAY,OAAO,yBAAyB;AAC5C;AACA;;ACzFU,IAAC;AACX,CAAC,UAAU,WAAW,EAAE;AACxB,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,OAAO;AAClC,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,QAAQ;AACpC,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,KAAK;AAC9B,CAAC,EAAE,WAAW,KAAK,WAAW,GAAG,EAAE,CAAC,CAAC;;ACL3B,IAAC;AACX,CAAC,UAAU,YAAY,EAAE;AACzB,IAAI,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM;AACjC,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,OAAO;AACnC,IAAI,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM;AACjC,CAAC,EAAE,YAAY,KAAK,YAAY,GAAG,EAAE,CAAC,CAAC;;ACL7B,IAAC;AACX,CAAC,UAAU,aAAa,EAAE;AAC1B,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,QAAQ;AACtC,IAAI,aAAa,CAAC,UAAU,CAAC,GAAG,UAAU;AAC1C,IAAI,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM;AAClC,CAAC,EAAE,aAAa,KAAK,aAAa,GAAG,EAAE,CAAC,CAAC;;ACL/B,IAAC;AACX,CAAC,UAAU,aAAa,EAAE;AAC1B,IAAI,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM;AAClC,IAAI,aAAa,CAAC,KAAK,CAAC,GAAG,KAAK;AAChC,IAAI,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM;AAClC,CAAC,EAAE,aAAa,KAAK,aAAa,GAAG,EAAE,CAAC,CAAC;;ACH7B,MAAC,cAAc,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK;AAChD,IAAI,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE;AACxE,IAAI,MAAM,YAAY,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,KAAK,EAAE;AACnF,IAAI,QAAQ,MAAM,CAAC,QAAQ;AAC3B,QAAQ,KAAK,sBAAsB,CAAC,EAAE;AACtC,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE,KAAK,WAAW,CAAC;AACrG,QAAQ,KAAK,sBAAsB,CAAC,EAAE;AACtC,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE,GAAG,WAAW,CAAC;AACnG,QAAQ,KAAK,sBAAsB,CAAC,GAAG;AACvC,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE,IAAI,WAAW,CAAC;AACpG,QAAQ,KAAK,sBAAsB,CAAC,EAAE;AACtC,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE,GAAG,WAAW,CAAC;AACnG,QAAQ,KAAK,sBAAsB,CAAC,GAAG;AACvC,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE,IAAI,WAAW,CAAC;AACpG,QAAQ,KAAK,sBAAsB,CAAC,OAAO;AAC3C,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;AACtC,gBAAgB,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE;AAC/E,gBAAgB,OAAO,QAAQ,IAAI,WAAW,IAAI,QAAQ,IAAI,YAAY;AAC1E,YAAY,CAAC,CAAC;AACd,QAAQ,KAAK,sBAAsB,CAAC,WAAW;AAC/C,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAC7G,QAAQ,KAAK,sBAAsB,CAAC,SAAS;AAC7C,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC3G,QAAQ,KAAK,sBAAsB,CAAC,QAAQ;AAC5C,QAAQ;AACR,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;AACtC,gBAAgB,IAAI,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;AACzD,gBAAgB,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAClD,oBAAoB,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE;AAClD,gBAAgB;AAChB,gBAAgB,OAAO,QAAQ,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;AACzE,YAAY,CAAC,CAAC;AACd;AACA;AACY,MAAC,cAAc,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK;AAChD,IAAI,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK;AACpC,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC;AAC3C,IAAI,QAAQ,MAAM,CAAC,QAAQ;AAC3B,QAAQ,KAAK,sBAAsB,CAAC,EAAE;AACtC,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,WAAW,CAAC;AACjF,QAAQ,KAAK,sBAAsB,CAAC,EAAE;AACtC,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC;AAC/E,QAAQ,KAAK,sBAAsB,CAAC,GAAG;AACvC,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC;AAChF,QAAQ,KAAK,sBAAsB,CAAC,EAAE;AACtC,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC;AAC/E,QAAQ,KAAK,sBAAsB,CAAC,GAAG;AACvC,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC;AAChF,QAAQ,KAAK,sBAAsB,CAAC,OAAO;AAC3C,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK;AACtC,gBAAgB,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;AAC3D,gBAAgB,OAAO,QAAQ,IAAI,WAAW,IAAI,QAAQ,IAAI,YAAY;AAC1E,YAAY,CAAC,CAAC;AACd,QAAQ;AACR,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAClG;AACA;AACY,MAAC,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,KAAK;AACvD,IAAI,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK;AACpC,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM;AACtC,IAAI,QAAQ,MAAM,CAAC,QAAQ;AAC3B,QAAQ,KAAK,oBAAoB,CAAC,KAAK;AACvC,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;AACvG,QAAQ,KAAK,oBAAoB,CAAC,WAAW;AAC7C,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;AACxG,QAAQ,KAAK,oBAAoB,CAAC,MAAM;AACxC,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;AACvG,QAAQ,KAAK,oBAAoB,CAAC,YAAY;AAC9C,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;AACxG,QAAQ,KAAK,oBAAoB,CAAC,OAAO;AACzC,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AAC/G,QAAQ,KAAK,oBAAoB,CAAC,EAAE;AACpC,QAAQ;AACR,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;AACtG;AACA;AACY,MAAC,eAAe,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,KAAK;AACnG,MAAC,wBAAwB,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,KAAK,CAAC,IAAI,CAAC;AAClE,KAAK,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK;AAC3B,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;AAC5B,IAAI,OAAO,GAAG;AACd,CAAC,EAAE,IAAI,GAAG,EAAE;AACZ,KAAK,MAAM,EAAE;AACD,MAAC,iBAAiB,GAAG,CAAC,QAAQ,KAAK;AAC/C,IAAI,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC7C,IAAI,GAAG,CAAC,WAAW,GAAG,GAAG;AACzB,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;AACnC,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ;AACnC,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ;AAClC,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AAClC,IAAI,MAAM,cAAc,GAAG,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW;AAC5D,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AAClC,IAAI,OAAO,cAAc;AACzB;AACA;AACO,SAAS,kBAAkB,CAAC,IAAI,EAAE;AACzC,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;AAC7F;;AC/FO,MAAM,qBAAqB,CAAC;AACnC,IAAI,WAAW,GAAG;AAClB;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,OAAO,EAAE;AACtC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,QAAQ,EAAE,WAAW,EAAE;AACtC,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAChC,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW;AACtC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE;AACnC,QAAQ,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC1E,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ;AACA,IAAI,kBAAkB,CAAC,IAAI,EAAE;AAC7B,QAAQ,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI;AACrD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE;AACxC,QAAQ,OAAO;AACf,aAAa,MAAM,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,KAAK;AAClD,aAAa,KAAK,CAAC,CAAC,MAAM,KAAK;AAC/B,YAAY,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE;AAC5C,gBAAgB,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC;AAClE,YAAY;AACZ,YAAY,OAAO,IAAI,CAAC,6BAA6B,CAAC,IAAI,EAAE,MAAM,CAAC;AACnE,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE;AAC3C,QAAQ,IAAI,MAAM;AAClB,QAAQ,QAAQ,MAAM,CAAC,IAAI;AAC3B,YAAY,KAAK,SAAS;AAC1B,gBAAgB,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC;AACzD,gBAAgB;AAChB,YAAY,KAAK,QAAQ;AACzB,gBAAgB,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;AACxD,gBAAgB;AAChB,YAAY,KAAK,MAAM,EAAE;AACzB,gBAAgB,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC;AAC5E,gBAAgB;AAChB,YAAY;AACZ,YAAY,KAAK,QAAQ;AACzB,YAAY;AACZ,gBAAgB,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;AACnD,sBAAsB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM;AACnD,sBAAsB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;AACrD,gBAAgB;AAChB;AACA,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,6BAA6B,CAAC,IAAI,EAAE,MAAM,EAAE;AAChD,QAAQ,OAAO,MAAM,CAAC,QAAQ,KAAK;AACnC,cAAc,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC,CAAC;AAChF,cAAc,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAChF,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE;AAC/C,QAAQ,MAAM,UAAU,GAAG,WAAW,EAAE,IAAI,IAAI,EAAE;AAClD,QAAQ,MAAM,cAAc,GAAG,UAAU;AACzC,QAAQ,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;AACrE,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,QAAQ,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK;AACvC,YAAY,MAAM,eAAe,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC/E,YAAY,OAAO;AACnB,iBAAiB,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;AAC1C,iBAAiB,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ,EAAE;AAChD,iBAAiB,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACpG,QAAQ,CAAC,CAAC;AACV,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE;AAC/B,QAAQ,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE;AAC5E,QAAQ,MAAM,YAAY,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,KAAK,EAAE;AACvF,QAAQ,IAAI,SAAS,GAAG,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC;AAC/C,QAAQ,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC,iBAAiB,EAAE,GAAG,SAAS;AACzE,QAAQ,IAAI,MAAM;AAClB,QAAQ,QAAQ,MAAM,CAAC,QAAQ;AAC/B,YAAY,KAAK,SAAS;AAC1B,gBAAgB,MAAM,GAAG,SAAS,KAAK,WAAW;AAClD,gBAAgB;AAChB,YAAY,KAAK,aAAa;AAC9B,gBAAgB,MAAM,GAAG,SAAS,GAAG,WAAW;AAChD,gBAAgB;AAChB,YAAY,KAAK,sBAAsB;AACvC,gBAAgB,MAAM,GAAG,SAAS,IAAI,WAAW;AACjD,gBAAgB;AAChB,YAAY,KAAK,UAAU;AAC3B,gBAAgB,MAAM,GAAG,SAAS,GAAG,WAAW;AAChD,gBAAgB;AAChB,YAAY,KAAK,mBAAmB;AACpC,gBAAgB,MAAM,GAAG,SAAS,IAAI,WAAW;AACjD,gBAAgB;AAChB,YAAY,KAAK,SAAS;AAC1B,gBAAgB,MAAM,GAAG,SAAS,IAAI,WAAW,IAAI,SAAS,IAAI,YAAY;AAC9E,gBAAgB;AAChB,YAAY,KAAK,YAAY;AAC7B,gBAAgB,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC;AAC1D,gBAAgB;AAChB,YAAY,KAAK,UAAU;AAC3B,gBAAgB,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC;AACxD,gBAAgB;AAChB,YAAY,KAAK,UAAU;AAC3B,YAAY;AACZ,gBAAgB,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,SAAS,KAAK,WAAW;AAChG;AACA,QAAQ,OAAO,MAAM,CAAC,OAAO,GAAG,CAAC,MAAM,GAAG,MAAM;AAChD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE;AAC/B,QAAQ,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC;AAC3D,QAAQ,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AAClE,QAAQ,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AACpE,QAAQ,IAAI,MAAM;AAClB,QAAQ,QAAQ,MAAM,CAAC,QAAQ;AAC/B,YAAY,KAAK,aAAa;AAC9B,gBAAgB,MAAM,GAAG,SAAS,GAAG,WAAW;AAChD,gBAAgB;AAChB,YAAY,KAAK,sBAAsB;AACvC,gBAAgB,MAAM,GAAG,SAAS,IAAI,WAAW;AACjD,gBAAgB;AAChB,YAAY,KAAK,UAAU;AAC3B,gBAAgB,MAAM,GAAG,SAAS,GAAG,WAAW;AAChD,gBAAgB;AAChB,YAAY,KAAK,mBAAmB;AACpC,gBAAgB,MAAM,GAAG,SAAS,IAAI,WAAW;AACjD,gBAAgB;AAChB,YAAY,KAAK,SAAS;AAC1B,gBAAgB,MAAM,GAAG,SAAS,IAAI,WAAW,IAAI,SAAS,IAAI,YAAY;AAC9E,gBAAgB;AAChB,YAAY,KAAK,SAAS;AAC1B,YAAY;AACZ,gBAAgB,MAAM,GAAG,SAAS,KAAK,WAAW;AAClD;AACA,QAAQ,OAAO,MAAM,CAAC,OAAO,GAAG,CAAC,MAAM,GAAG,MAAM;AAChD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;AACtC,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,YAAY,MAAM,IAAI,KAAK,CAAC,yGAAyG,CAAC;AACtI,QAAQ;AACR,QAAQ,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK;AACxC,QAAQ,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM;AAC1C,QAAQ,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC;AACjD,QAAQ,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC;AAChE,QAAQ,IAAI,MAAM;AAClB,QAAQ,QAAQ,MAAM,CAAC,QAAQ;AAC/B,YAAY,KAAK,OAAO;AACxB,gBAAgB,MAAM,GAAG,IAAI,GAAG,CAAC;AACjC,gBAAgB;AAChB,YAAY,KAAK,WAAW;AAC5B,gBAAgB,MAAM,GAAG,IAAI,IAAI,CAAC;AAClC,gBAAgB;AAChB,YAAY,KAAK,QAAQ;AACzB,gBAAgB,MAAM,GAAG,IAAI,GAAG,CAAC;AACjC,gBAAgB;AAChB,YAAY,KAAK,YAAY;AAC7B,gBAAgB,MAAM,GAAG,IAAI,IAAI,CAAC;AAClC,gBAAgB;AAChB,YAAY,KAAK,SAAS;AAC1B,gBAAgB,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,WAAW,EAAE,YAAY,CAAC;AAChF,gBAAgB;AAChB,YAAY,KAAK,SAAS;AAC1B,YAAY;AACZ,gBAAgB,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC;AACvE;AACA,QAAQ,OAAO,MAAM,CAAC,OAAO,GAAG,CAAC,MAAM,GAAG,MAAM;AAChD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE;AAChC,QAAQ,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK;AACxC,QAAQ,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC;AACjD,QAAQ,IAAI,MAAM;AAClB,QAAQ,QAAQ,MAAM,CAAC,QAAQ;AAC/B,YAAY,KAAK,SAAS;AAC1B,YAAY;AACZ,gBAAgB,MAAM,GAAG,SAAS,KAAK,WAAW;AAClD;AACA,QAAQ,OAAO,MAAM,CAAC,OAAO,GAAG,CAAC,MAAM,GAAG,MAAM;AAChD,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE;AAC9B,QAAQ,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAChF,QAAQ,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC;AACjD,QAAQ,IAAI,MAAM;AAClB,QAAQ,QAAQ,MAAM,CAAC,QAAQ;AAC/B,YAAY,KAAK,SAAS;AAC1B,YAAY;AACZ,gBAAgB,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;AACzD;AACA,QAAQ,OAAO,CAAC,YAAY,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC,MAAM,GAAG,MAAM;AACxE,IAAI;AACJ;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AAC7B,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACjC,IAAI;AACJ;AACO,MAAM,iBAAiB,SAAS,qBAAqB,CAAC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,UAAU,EAAE;AACtB,QAAQ,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC;AACtG,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK;AACrD,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE;AAClC,gBAAgB,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;AAC9F,YAAY;AACZ,YAAY,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC/B,gBAAgB,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;AACjE,YAAY;AACZ,YAAY,OAAO,KAAK;AACxB,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACtC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,eAAe,CAAC,KAAK,EAAE;AAC3B,QAAQ,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,KAAK;AACxD,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AAChD,gBAAgB,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC;AACvC,gBAAgB,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK;AACtC,aAAa,CAAC,CAAC;AACf,YAAY,OAAO,OAAO;AAC1B,QAAQ,CAAC,CAAC,CAAC;AACX,IAAI;AACJ;AACO,MAAM,yBAAyB,SAAS,qBAAqB,CAAC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE;AAClC,QAAQ,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC;AACtG,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE;AAChC,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK;AAChE,YAAY,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,GAAG,KAAK;AAC7C,gBAAgB,IAAI,IAAI,CAAC,WAAW,EAAE;AACtC,oBAAoB,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;AACxG,gBAAgB;AAChB,gBAAgB,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnC,oBAAoB,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC;AAC3E,gBAAgB;AAChB,gBAAgB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3C,oBAAoB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;AACrC,gBAAgB;AAChB,qBAAqB;AACrB,oBAAoB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC;AAC5C,gBAAgB;AAChB,YAAY,CAAC,CAAC;AACd,YAAY,OAAO,KAAK;AACxB,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACtC,IAAI;AACJ;;ACvVO,MAAM,mBAAmB,CAAC;AACjC;AACA,IAAI,WAAW,GAAG;AAClB;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC;AACpD;AACA,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,OAAO,EAAE;AAC9C;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,OAAO,EAAE;AAC7C;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,OAAO,EAAE;AACtC,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;AACnE,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACpD,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,IAAI,YAAY,GAAG;AACvB,QAAQ,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;AACnD,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;AAChD,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,IAAI,WAAW,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAChF,IAAI;AACJ;AACA,IAAI,IAAI,aAAa,GAAG;AACxB,QAAQ,OAAO,IAAI,CAAC,YAAY;AAChC,IAAI;AACJ;AACA,IAAI,IAAI,IAAI,GAAG;AACf,QAAQ,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK;AACvC,IAAI;AACJ;AACA,IAAI,IAAI,GAAG;AACX,QAAQ,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;AAChD,IAAI;AACJ;AACA,IAAI,eAAe,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;AAC5E,IAAI;AACJ;AACA,IAAI,cAAc,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;AAC3E,IAAI;AACJ;AACA,IAAI,KAAK,GAAG,EAAE;AACd;AACA;AACA;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AAC7B,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACjC,IAAI;AACJ;AACO,MAAM,eAAe,SAAS,mBAAmB,CAAC;AACzD;AACA;AACA;AACA,IAAI,WAAW,CAAC,YAAY,EAAE;AAC9B,QAAQ,KAAK,EAAE;AACf,QAAQ,IAAI,CAAC,YAAY,GAAG,YAAY;AACxC,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,UAAU,EAAE;AACtB,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;AACzC,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;AACrC,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI;AAChC,QAAQ,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC;AAC1D,YAAY,IAAI,EAAE,CAAC,KAAK,KAAK;AAC7B,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAChD,gBAAgB,IAAI,CAAC,YAAY,GAAG,KAAK;AACzC,gBAAgB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9C,gBAAgB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9C,YAAY,CAAC;AACb,YAAY,KAAK,EAAE,CAAC,KAAK,KAAK;AAC9B,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;AACjD,gBAAgB,IAAI,CAAC,YAAY,GAAG,KAAK;AACzC,gBAAgB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;AAC/C,YAAY;AACZ,SAAS,CAAC;AACV,IAAI;AACJ;AACO,MAAM,oBAAoB,SAAS,mBAAmB,CAAC;AAC9D;AACA;AACA;AACA,IAAI,WAAW,CAAC,YAAY,EAAE;AAC9B,QAAQ,KAAK,EAAE;AACf,QAAQ,IAAI,CAAC,YAAY,GAAG,YAAY;AACxC,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE;AAClC,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;AACzC,QAAQ,MAAM,YAAY,GAAG,UAAU,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AACrF,QAAQ,MAAM,oBAAoB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AAC7F,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC;AAC7C,QAAQ,IAAI,CAAC,YAAY,GAAG,YAAY;AACxC,QAAQ,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,SAAS,CAAC;AACtE,YAAY,IAAI,EAAE,CAAC,KAAK,KAAK;AAC7B,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;AAChD,gBAAgB,IAAI,CAAC,YAAY,GAAG,oBAAoB;AACxD,gBAAgB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC;AAC7D,gBAAgB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9C,YAAY,CAAC;AACb,YAAY,KAAK,EAAE,CAAC,KAAK,KAAK;AAC9B,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;AACjD,gBAAgB,IAAI,CAAC,YAAY,GAAG,oBAAoB;AACxD,gBAAgB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC;AAC7D,gBAAgB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;AAC/C,YAAY;AACZ,SAAS,CAAC;AACV,IAAI;AACJ;;ACvIA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,sBAAsB,SAAS,iBAAiB,CAAC;AAC9D;AACA,IAAI,WAAW,CAAC,KAAK,EAAE,eAAe,EAAE;AACxC,QAAQ,KAAK,EAAE;AACf;AACA,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC;AAC7C,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;AAC3C,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AACpC,QAAQ,IAAI,CAAC,eAAe,GAAG,eAAe;AAC9C,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,KAAK,EAAE;AACjB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK;AAC9D,YAAY,IAAI,KAAK,EAAE,WAAW,EAAE;AACpC,gBAAgB,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;AACjD,YAAY;AACZ,YAAY,IAAI,KAAK,EAAE,QAAQ,EAAE;AACjC,gBAAgB,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC;AAClE,YAAY;AACZ,YAAY,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM;AAC1C,YAAY,OAAO,KAAK;AACxB,QAAQ,CAAC,CAAC,CAAC;AACX,IAAI;AACJ;AACO,MAAM,oBAAoB,SAAS,eAAe,CAAC;AAC1D;AACA,IAAI,WAAW,CAAC,IAAI,EAAE,eAAe,EAAE;AACvC,QAAQ,KAAK,CAAC,IAAI,sBAAsB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;AAChE,IAAI;AACJ;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,2BAA2B,SAAS,iBAAiB,CAAC;AACnE;AACA,IAAI,WAAW,CAAC,MAAM,EAAE,eAAe,EAAE;AACzC,QAAQ,KAAK,EAAE;AACf,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM;AAC5B,QAAQ,IAAI,CAAC,eAAe,GAAG,eAAe;AAC9C,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,CAAC,KAAK,EAAE;AACjB,QAAQ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK;AAC/C,YAAY,IAAI,CAAC,KAAK,GAAG,KAAK;AAC9B,YAAY,IAAI,KAAK,EAAE,WAAW,EAAE;AACpC,gBAAgB,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;AACjD,YAAY;AACZ,YAAY,IAAI,KAAK,EAAE,QAAQ,EAAE;AACjC,gBAAgB,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC;AAClE,YAAY;AACZ,YAAY,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM;AAC1C,YAAY,OAAO,KAAK;AACxB,QAAQ,CAAC,CAAC,CAAC;AACX,IAAI;AACJ;AACO,MAAM,yBAAyB,SAAS,eAAe,CAAC;AAC/D;AACA,IAAI,WAAW,CAAC,IAAI,EAAE,eAAe,EAAE;AACvC,QAAQ,KAAK,CAAC,IAAI,2BAA2B,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;AACrE,IAAI;AACJ;;ACpCO,MAAM,qBAAqB,CAAC;AACnC;AACA,IAAI,KAAK,CAAC,MAAM,EAAE;AAClB,QAAQ,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE;AAClC,YAAY,OAAO,MAAM;AACzB,QAAQ;AACR,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACnC,YAAY,OAAO,IAAI,oBAAoB,CAAC,MAAM,CAAC;AACnD,QAAQ;AACR,QAAQ,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE;AAClC,YAAY,OAAO,IAAI,yBAAyB,CAAC,MAAM,CAAC;AACxD,QAAQ;AACR,QAAQ,OAAO,SAAS;AACxB,IAAI;AACJ;;ACTO,MAAM,wBAAwB,SAAS,mBAAmB,CAAC;AAClE,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B;AACA,QAAQ,IAAI,CAAC,sBAAsB,GAAG,IAAI,YAAY,EAAE;AACxD;AACA,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,YAAY,EAAE;AACjD;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,YAAY,EAAE;AAChD;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1F;AACA,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC;AAC7C;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,IAAI,OAAO,EAAE;AACxC;AACA,QAAQ,IAAI,CAAC,iBAAiB,GAAG,KAAK;AACtC;AACA,QAAQ,IAAI,CAAC,qBAAqB,GAAG,KAAK;AAC1C;AACA,QAAQ,IAAI,CAAC,6BAA6B,GAAG,KAAK;AAClD;AACA,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,YAAY,EAAE;AACtD;AACA,QAAQ,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,yBAAyB,EAAE;AAC9D,YAAY,QAAQ,EAAE;AACtB,SAAS,CAAC;AACV;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC;AACjD,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,IAAI,eAAe,CAAC,MAAM,EAAE;AAChC,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAM;AACtC,QAAQ,IAAI,CAAC,0BAA0B,EAAE;AACzC,QAAQ,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE;AAC1C,IAAI;AACJ,IAAI,IAAI,eAAe,GAAG;AAC1B,QAAQ,OAAO,IAAI,CAAC,gBAAgB;AACpC,IAAI;AACJ;AACA,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE;AAC1B,QAAQ,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;AACnC,IAAI;AACJ,IAAI,IAAI,UAAU,GAAG;AACrB,QAAQ,OAAO,IAAI,CAAC,WAAW,EAAE;AACjC,IAAI;AACJ;AACA,IAAI,oBAAoB,GAAG;AAC3B,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM;AAC3G,YAAY,IAAI,CAAC,gBAAgB,EAAE;AACnC,YAAY,IAAI,CAAC,mBAAmB,EAAE;AACtC,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,WAAW,EAAE;AAC3B,QAAQ,IAAI,CAAC,oBAAoB,EAAE,WAAW,EAAE;AAChD,IAAI;AACJ;AACA,IAAI,QAAQ,CAAC,KAAK,EAAE;AACpB,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK;AAC3B,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,0BAA0B,GAAG;AACjC,QAAQ,IAAI,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;AAChD,YAAY,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE;AAC/C,YAAY,IAAI,CAAC,oBAAoB,EAAE,WAAW,EAAE;AACpD,QAAQ;AACR,QAAQ,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACnC,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,YAAY,EAAE;AACtD,QAAQ,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,MAAM;AAC7F,YAAY,IAAI,CAAC,6BAA6B,GAAG,IAAI;AACrD,YAAY,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;AACxE,QAAQ,CAAC,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,MAAM;AAC5F,YAAY,IAAI,CAAC,6BAA6B,GAAG,KAAK;AACtD,YAAY,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;AACxE,QAAQ,CAAC,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;AAC3D,aAAa,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAClF,aAAa,SAAS,CAAC,CAAC,aAAa,KAAK;AAC1C,YAAY,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC/F,QAAQ,CAAC,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK;AACtI,YAAY,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AACvC,QAAQ,CAAC,CAAC,CAAC;AACX,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mBAAmB,GAAG;AAC1B,QAAQ,IAAI,CAAC,oBAAoB,EAAE,WAAW,EAAE;AAChD,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,YAAY,EAAE;AACtD,QAAQ,MAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB;AACxD,QAAQ,IAAI,gBAAgB,KAAK,SAAS,EAAE;AAC5C,YAAY,MAAM,IAAI,KAAK,CAAC,CAAC,2EAA2E,CAAC,CAAC;AAC1G,QAAQ;AACR,QAAQ,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK;AAC7E,YAAY,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,gBAAgB,CAAC,YAAY,CAAC,UAAU,CAAC;AAC1E,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACnC,QAAQ,CAAC,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,MAAM;AACzF,YAAY,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE;AACvC,YAAY,IAAI,CAAC,qBAAqB,GAAG,IAAI;AAC7C,YAAY,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;AACxE,QAAQ,CAAC,CAAC,CAAC;AACX,QAAQ,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,MAAM;AACxF,YAAY,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AACtC,YAAY,IAAI,CAAC,qBAAqB,GAAG,KAAK;AAC9C,YAAY,IAAI,CAAC,iBAAiB,GAAG,IAAI;AACzC,YAAY,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;AACxE;AACA,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE;AAChD,gBAAgB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE;AAChE,gBAAgB,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;AACjD,oBAAoB,GAAG,KAAK;AAC5B,oBAAoB,GAAG;AACvB,wBAAwB,IAAI,EAAE;AAC9B,4BAA4B,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW;AACjG,4BAA4B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC;AACzE;AACA;AACA,iBAAiB,CAAC;AAClB,gBAAgB,IAAI,CAAC,MAAM,CAAC,kBAAkB,GAAG,KAAK;AACtD,YAAY;AACZ,QAAQ,CAAC,CAAC,CAAC;AACX;AACA,QAAQ,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;AAClE,QAAQ,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AAChD,IAAI;AACJ;AACA,IAAI,gBAAgB,GAAG;AACvB,QAAQ,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACpC,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;AACrC,QAAQ,IAAI,CAAC,oBAAoB,EAAE,WAAW,EAAE;AAChD,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI;AACxC,QAAQ,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;AACpC,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAC5L,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,wBAAwB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,EAAE,EAAE,eAAe,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,EAAE,SAAS,EAAE;AAClX,YAAY;AACZ,gBAAgB,OAAO,EAAE,0BAA0B;AACnD,gBAAgB,QAAQ,EAAE;AAC1B;AACA,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AAClD;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,UAAU,EAAE,CAAC;AAClI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,QAAQ,EAAE,sBAAsB;AACpD,oBAAoB,UAAU,EAAE,IAAI;AACpC,oBAAoB,SAAS,EAAE;AAC/B,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,0BAA0B;AAC/D,4BAA4B,QAAQ,EAAE;AACtC;AACA;AACA,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,EAAE,eAAe,EAAE,CAAC;AAChD,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,sBAAsB,EAAE,CAAC;AACzC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,eAAe,EAAE,CAAC;AAClC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC;AACjC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,EAAE,CAAC;;ACzLnB;AACO,SAAS,UAAU,CAAC,GAAG,EAAE;AAChC,IAAI,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;AAChH;AACO,MAAM,YAAY,CAAC;AAC1B;AACA,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE;AACvB,QAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;AACxC,IAAI;AACJ,IAAI,IAAI,OAAO,GAAG;AAClB,QAAQ,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK;AACzC,IAAI;AACJ;AACA,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE;AACxB,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;AACzC,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK;AAC5C,YAAY,QAAQ,CAAC,MAAM,GAAG,CAAC,KAAK;AACpC,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,IAAI,QAAQ,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK;AAC1C,IAAI;AACJ;AACA,IAAI,WAAW,CAAC,GAAG,EAAE;AACrB;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;AACvD;AACA,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;AAC5D;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,KAAK;AAC/B;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;AAC1D;AACA,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;AACzD,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC9E,QAAQ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAChF,QAAQ,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,KAAK;AAC3C,QAAQ,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,EAAE;AAC1C,QAAQ,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,KAAK;AACjD,QAAQ,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,KAAK;AAC7C,QAAQ,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK;AACzC,QAAQ,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,CAAC;AACnC,QAAQ,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,CAAC;AACnC,QAAQ,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,IAAI,KAAK;AACnD,QAAQ,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,IAAI;AACxC,QAAQ,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,UAAU;AAC5C,QAAQ,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK;AAC9B,QAAQ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC;AACtD,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,UAAU,CAAC,IAAI,EAAE;AACrB,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI;AACrD,IAAI;AACJ;;AClDA;AACO,SAAS,WAAW,CAAC,GAAG,EAAE;AACjC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;AACpB,QAAQ,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC;AAChF,IAAI;AACJ,IAAI,OAAO,IAAI,YAAY,CAAC;AAC5B,QAAQ,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI;AAC3C,QAAQ,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,KAAK;AACrC,QAAQ,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;AAC7B,QAAQ,KAAK,EAAE,GAAG,CAAC,KAAK;AACxB,QAAQ,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,IAAI;AAClC,QAAQ,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;AAC7B,QAAQ,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,KAAK;AAC3C,QAAQ,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,KAAK;AACvC,QAAQ,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,KAAK;AACnC,QAAQ,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,KAAK;AAC7C,QAAQ,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,UAAU;AACtC,QAAQ,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI;AAClC,KAAK,CAAC;AACN;AACA;AACO,SAAS,iBAAiB,CAAC,IAAI,EAAE,aAAa,EAAE;AACvD,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,eAAe,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;AACpE;AACA;AACO,SAAS,eAAe,CAAC,GAAG,EAAE,aAAa,EAAE;AACpD,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,KAAK;AACnF;AACA;AACO,SAAS,SAAS,CAAC,GAAG,EAAE;AAC/B,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI;AACzC;AACA;AACO,SAAS,SAAS,CAAC,GAAG,EAAE;AAC/B,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,6BAA6B,CAAC,IAAI,EAAE,cAAc,EAAE;AACpE,IAAI,IAAI,QAAQ,GAAG,EAAE;AACrB,IAAI,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC,IAAI,EAAE,cAAc,CAAC;AACjE,QAAQ,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAC1C,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACrE,YAAY,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,6BAA6B,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AACpG,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,QAAQ;AACnB;AACA;AACO,SAAS,gBAAgB,CAAC,GAAG,EAAE,cAAc,EAAE;AACtD,IAAI,IAAI,CAAC,GAAG,EAAE;AACd,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ;AACA,IAAI,IAAI,QAAQ,CAAC,cAAc,CAAC,EAAE;AAClC,QAAQ,OAAO,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC;AACpC,IAAI;AACJ,IAAI,OAAO,CAAC,CAAC,cAAc;AAC3B;AACA;AACO,SAAS,mBAAmB,CAAC,OAAO,EAAE,eAAe,EAAE;AAC9D,IAAI,MAAM,WAAW,GAAG,IAAI,GAAG,EAAE;AACjC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE;AAC7C,QAAQ,OAAO,WAAW;AAC1B,IAAI;AACJ,IAAI,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAClC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AAC1B,YAAY;AACZ,QAAQ;AACR;AACA,QAAQ,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;AACtD,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE;AAC7C,YAAY,OAAO,WAAW;AAC9B,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,IAAI,GAAG,EAAE;AACpB;AACA;AACO,SAAS,sBAAsB,CAAC,OAAO,EAAE,kBAAkB,EAAE;AACpE,IAAI,MAAM,WAAW,GAAG,IAAI,GAAG,EAAE;AACjC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE;AAChD,QAAQ,OAAO,WAAW;AAC1B,IAAI;AACJ,IAAI,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAClD;AACA,QAAQ,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;AAC1D,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,EAAE;AACpD,YAAY,OAAO,WAAW;AAC9B,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,IAAI,GAAG,EAAE;AACpB;AACA;AACO,SAAS,6BAA6B,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,GAAG,KAAK,EAAE;AACvM,IAAI,MAAM,IAAI,GAAG,EAAE;AACnB,IAAI,MAAM,eAAe,GAAG,4BAA4B,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,CAAC;AACzG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK;AACpC,QAAQ,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;AACnF,YAAY,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC5C,YAAY,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM;AACpC,QAAQ,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI;AACnC,cAAc;AACd,cAAc,WAAW,CAAC;AAC1B,gBAAgB,IAAI,EAAE,WAAW,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,IAAI,GAAG,YAAY,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI;AAC1G,gBAAgB,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;AACzE,gBAAgB,KAAK;AACrB,gBAAgB,KAAK,EAAE;AACvB,aAAa,CAAC;AACd,QAAQ,GAAG,CAAC,QAAQ;AACpB,YAAY,gBAAgB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB;AAC3F,kBAAkB,IAAI,CAAC,gBAAgB;AACvC,kBAAkB,KAAK;AACvB,QAAQ,GAAG,CAAC,WAAW,GAAG,gBAAgB,CAAC,IAAI,EAAE,cAAc,CAAC;AAChE,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACtB,QAAQ,IAAI,WAAW,EAAE;AACzB,YAAY,MAAM,QAAQ,GAAG,6BAA6B,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,CAAC;AACtN,YAAY,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;AACpC,gBAAgB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,GAAG;AAC1C,gBAAgB,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC;AAC5C,gBAAgB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ;AAC7C,YAAY,CAAC,CAAC;AACd,YAAY,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;AAC1C,YAAY,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;AAClC,QAAQ;AACR,QAAQ,IAAI,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE;AAC3C,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK;AAC9B,gBAAgB,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,IAAI,EAAE;AACjD,gBAAgB,MAAM,gBAAgB,GAAG,EAAE;AAC3C,gBAAgB,MAAM,qBAAqB,GAAG,EAAE;AAChD,gBAAgB,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AAC5C,oBAAoB,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE;AAChD,wBAAwB,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;AACpD,oBAAoB;AACpB,yBAAyB,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE;AACrD,wBAAwB,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC;AACzD,oBAAoB;AACpB,gBAAgB,CAAC,CAAC;AAClB,gBAAgB,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;AACtG,gBAAgB,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC;AAChE,gBAAgB,IAAI,CAAC,CAAC,OAAO,IAAI,aAAa,KAAK,aAAa,CAAC,QAAQ,EAAE;AAC3E,oBAAoB,wBAAwB,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;AAC7D,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,IAAI,CAAC,kBAAkB,EAAE;AACzC,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,IAAI,WAAW,EAAE;AACjC,oBAAoB,CAAC,CAAC,OAAO,GAAG,IAAI;AACpC,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,IAAI,YAAY,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE;AACtE,oBAAoB,CAAC,CAAC,OAAO,GAAG,IAAI;AACpC,oBAAoB;AACpB,gBAAgB;AAChB,YAAY,CAAC,CAAC;AACd,QAAQ;AACR,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,IAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,4BAA4B,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE;AAC9F,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAE;AAC5B,IAAI,IAAI,CAAC,aAAa,KAAK,aAAa,CAAC,MAAM,IAAI,aAAa,KAAK,aAAa,CAAC,QAAQ;AAC3F,QAAQ,OAAO,aAAa,KAAK,UAAU,EAAE;AAC7C,QAAQ,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;AAC9D,QAAQ,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACrC,YAAY,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACzE,YAAY,IAAI,KAAK,EAAE;AACvB,gBAAgB,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC;AAC9C,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,OAAO,MAAM;AACjB;AACA;AACO,SAAS,wBAAwB,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE;AAC/E,IAAI,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC;AACrD,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;AAC/B,QAAQ,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO;AAC/B,QAAQ,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,IAAI,CAAC,CAAC;AACN;AACA;AACO,SAAS,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE;AAC9C,IAAI,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM;AACrC;AACA;AACA;AACA;AACA;AACA,IAAI,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;AACpC,IAAI,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC;AACtC,IAAI,MAAM,QAAQ,GAAG,EAAE;AACvB,IAAI,OAAO,KAAK,EAAE,GAAG,UAAU,EAAE;AACjC,QAAQ,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;AACtC,QAAQ,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAClE,YAAY;AACZ,QAAQ;AACR,QAAQ,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AAC9B,IAAI;AACJ,IAAI,OAAO,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,EAAE;AACvD,IAAI,WAAW,GAAG,WAAW,IAAI,IAAI,CAAC;AACtC,IAAI,MAAM,OAAO,GAAG,EAAE;AACtB,IAAI,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC;AACpC,IAAI,OAAO,MAAM,IAAI,MAAM,KAAK,WAAW,EAAE;AAC7C,QAAQ,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5B,QAAQ,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI;AACtC,IAAI;AACJ,IAAI,OAAO,OAAO;AAClB;AACA;AACO,SAAS,YAAY,CAAC,MAAM,EAAE;AACrC,IAAI,IAAIC,cAAY,CAAC,MAAM,CAAC,EAAE;AAC9B,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC/B,QAAQ,OAAO,IAAI,oBAAoB,CAAC,MAAM,CAAC;AAC/C,IAAI;AACJ,IAAI,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE;AAC9B,QAAQ,OAAO,IAAI,yBAAyB,CAAC,MAAM,CAAC;AACpD,IAAI;AACJ,IAAI,OAAO,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,mBAAmB,CAAC,mBAAmB,EAAE,OAAO,EAAE;AAClE,IAAI,IAAI,mBAAmB,EAAE;AAC7B,QAAQ,OAAO,SAAS,CAAC,mBAAmB,CAAC;AAC7C,IAAI;AACJ,IAAI,IAAI,MAAM,GAAG,EAAE;AACnB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK;AAChC,QAAQ,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC;AACnD,IAAI,CAAC,CAAC;AACN,IAAI,OAAO,MAAM;AACjB;AACA;AACO,SAAS,UAAU,CAAC,GAAG,EAAE;AAChC,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC,KAAK;AAC1C;AACA;AACO,SAAS,uBAAuB,CAAC,WAAW,EAAE,aAAa,EAAE;AACpE,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;AACxD,QAAQ,OAAO,WAAW;AAC1B,IAAI;AACJ,IAAI,MAAM,YAAY,GAAG,WAAW;AACpC,IAAI,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC;AACpC,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK;AACpC,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE;AAC7B,YAAY,KAAK,CAAC,SAAS,GAAG,uBAAuB,CAAC,KAAK,CAAC,SAAS,EAAE,aAAa,CAAC;AACrF,QAAQ;AACR,IAAI,CAAC,CAAC;AACN,IAAI,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;AAC7D,IAAI,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,SAAS,KAAK,aAAa,CAAC,IAAI,EAAE;AAClE,QAAQ,OAAO,YAAY;AAC3B,IAAI;AACJ,IAAI,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS;AACzC,IAAI,MAAM,mBAAmB,GAAG,SAAS,KAAK,aAAa,CAAC,GAAG,GAAG,CAAC,GAAG,SAAS,KAAK,aAAa,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC;AAC/G,IAAI,OAAO,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AAC/C,QAAQ,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK;AACpC,QAAQ,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK;AACpC,QAAQ,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;AACjD,QAAQ,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;AACjD,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AAC9D,YAAY,OAAO,CAAC,OAAO,GAAG,OAAO,IAAI,mBAAmB;AAC5D,QAAQ;AACR,QAAQ,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,mBAAmB;AAC/D,IAAI,CAAC,CAAC;AACN;AACA;AACO,SAAS,yBAAyB,CAAC,YAAY,EAAE;AACxD,IAAI,IAAI,QAAQ,GAAG,EAAE;AACrB,IAAI,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE;AACrC,QAAQ,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AAC3C,YAAY,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACjF,YAAY,OAAO,IAAI,CAAC,SAAS;AACjC,QAAQ;AACR,IAAI;AACJ,IAAI,OAAO,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,0BAA0B,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE;AAClF,IAAI,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC;AACtB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACvB;AACA,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK;AACjC,YAAY,GAAG,CAAC,MAAM,GAAG,MAAM;AAC/B,YAAY,GAAG,CAAC,KAAK,GAAG,KAAK;AAC7B,YAAY,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ;AACrD,YAAY,OAAO,GAAG;AACtB,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA,IAAI,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE;AAC9B;AACA,IAAI,MAAM,UAAU,GAAG;AACvB,SAAS,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,UAAU;AAC7C,SAAS,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK;AAC/B,QAAQ,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC;AACrD,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AACnC,YAAY,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC;AACpC,QAAQ;AACR,QAAQ,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC;AACvC,QAAQ,OAAO,IAAI;AACnB,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC;AACjB;AACA,IAAI,IAAI,gBAAgB,GAAG,EAAE;AAC7B,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,EAAE;AAClD,QAAQ,gBAAgB,GAAG;AAC3B,aAAa,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,UAAU;AACjD,aAAa,GAAG,CAAC,CAAC,GAAG,KAAK;AAC1B,YAAY,GAAG,CAAC,MAAM,GAAG,MAAM;AAC/B,YAAY,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;AAC1B,YAAY,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ;AACrD,YAAY,OAAO,GAAG;AACtB,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAC1D,QAAQ,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3E,QAAQ,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AACvC,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,aAAa,GAAG,WAAW,CAAC;AAC1C,YAAY,IAAI,EAAE,YAAY,CAAC,KAAK;AACpC,YAAY,OAAO,EAAE,KAAK;AAC1B,YAAY,KAAK,EAAE,CAAC;AACpB,YAAY,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;AACzD,YAAY,MAAM;AAClB,YAAY,KAAK;AACjB,YAAY,UAAU,EAAE,IAAI;AAC5B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC;AACxC,SAAS,CAAC;AACV;AACA,QAAQ,aAAa,CAAC,SAAS,GAAG,0BAA0B,CAAC,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,GAAG,CAAC,CAAC;AAC3G,QAAQ,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,aAAa,CAAC,SAAS,EAAE,MAAM;AACnE,QAAQ,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC;AAC5C,IAAI;AACJ,IAAI,OAAO,gBAAgB;AAC3B;AACA;AACO,SAAS,yBAAyB,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE;AAC/H,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;AAC7B,IAAI,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE;AAC7B,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ,IAAI,MAAM,eAAe,GAAG,4BAA4B,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,CAAC;AACpG,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK;AACvC,QAAQ,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC;AACnD,QAAQ,MAAM,GAAG,GAAG,WAAW,CAAC;AAChC,YAAY,IAAI,EAAE,YAAY,CAAC,IAAI;AACnC,YAAY,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;AACrE,YAAY,KAAK;AACjB,YAAY,KAAK,EAAE;AACnB,SAAS,CAAC;AACV,QAAQ,GAAG,CAAC,WAAW,GAAG,gBAAgB,CAAC,IAAI,EAAE,cAAc,CAAC;AAChE,QAAQ,GAAG,CAAC,KAAK,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU;AACvD,QAAQ,OAAO,GAAG;AAClB,IAAI,CAAC,CAAC;AACN;AACA;AACO,SAAS,kBAAkB,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE;AAC1D,IAAI,OAAO,CAAC,SAAS,KAAK,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AAC1E;;ACrZO,MAAM,sBAAsB,CAAC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;AAC3C,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM;AAC5B,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;AAC9B,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAChC,IAAI;AACJ;;ACZO,MAAM,aAAa,CAAC;AAC3B;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE;AACnC,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;AAC9B,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAChC,IAAI;AACJ;AACO,MAAM,uBAAuB,SAAS,aAAa,CAAC;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;AAC3C,QAAQ,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC;AAChC,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM;AAC5B,IAAI;AACJ;;ACtBO,MAAM,cAAc,CAAC;AAC5B;AACO,MAAM,iBAAiB,CAAC;AAC/B;AACO,MAAM,kBAAkB,CAAC;AAChC;;ACLO,MAAM,sBAAsB,CAAC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;AAC3C,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM;AAC5B,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;AAC9B,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAChC,IAAI;AACJ;;ACZO,MAAM,qBAAqB,CAAC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;AAC3C,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM;AAC5B,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;AAC9B,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAChC,IAAI;AACJ;;ACZO,MAAM,UAAU,CAAC;AACxB;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE;AACnC,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;AAC9B,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAChC,IAAI;AACJ;AACO,MAAM,oBAAoB,SAAS,UAAU,CAAC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;AAC3C,QAAQ,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC;AAChC,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM;AAC5B,IAAI;AACJ;;ACtBO,MAAM,aAAa,CAAC;AAC3B;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;AAC7B,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B,IAAI;AACJ;;ACVO,MAAM,sBAAsB,CAAC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;AAC3C,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM;AAC5B,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;AAC9B,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAChC,IAAI;AACJ;;ACZO,MAAM,yBAAyB,CAAC;AACvC;AACO,MAAM,4BAA4B,SAAS,yBAAyB,CAAC;AAC5E;;ACHO,MAAM,oBAAoB,CAAC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE;AAC3C,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM;AAC5B,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;AAC9B,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAChC,IAAI;AACJ;;ACZO,MAAM,sBAAsB,CAAC;AACpC;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,WAAW,EAAE,GAAG,EAAE;AAClC,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW;AACtC,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG;AACtB,IAAI;AACJ;;ACVA;;ACAO,MAAM,qBAAqB,CAAC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE;AACrC,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;AAC9B,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG;AACtB,IAAI;AACJ;;ACZO,MAAM,4BAA4B,CAAC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE;AACtC,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK;AAC1B,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG;AACtB,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAChC,IAAI;AACJ;;ACZO,MAAM,uBAAuB,CAAC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;AAC7E,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG;AACtB,QAAQ,IAAI,CAAC,OAAO,GAAG,OAAO;AAC9B,QAAQ,IAAI,CAAC,aAAa,GAAG,aAAa;AAC1C,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAChC,QAAQ,IAAI,CAAC,QAAQ,GAAG,QAAQ;AAChC,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI;AACxB,IAAI;AACJ;;ACVO,MAAM,uBAAuB,SAAS,cAAc,CAAC;AAC5D,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B;AACA,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI;AACvC;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,KAAK;AAChC;AACA;AACA;AACA,QAAQ,IAAI,CAAC,QAAQ,GAAG,MAAM;AAC9B;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,YAAY,EAAE;AAC/C;AACA,QAAQ,IAAI,CAAC,kBAAkB,GAAG,KAAK;AACvC;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AACrC;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,iBAAiB,EAAE;AAC9C,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC;AACV,IAAI;AACJ;AACA,IAAI,IAAI,cAAc,GAAG;AACzB,QAAQ,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,mBAAmB;AAC3D,IAAI;AACJ;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AACtC,IAAI;AACJ;AACA,IAAI,QAAQ,CAAC,KAAK,EAAE;AACpB,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK;AAC3B,IAAI;AACJ;AACA;AACA;AACA,IAAI,aAAa,GAAG;AACpB,QAAQ,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;AACrC,IAAI;AACJ;AACA,IAAI,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE;AAC3D,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAClC,YAAY;AACZ,QAAQ;AACR,QAAQ,KAAK,CAAC,cAAc,EAAE;AAC9B,QAAQ,IAAI,aAAa;AACzB,QAAQ,GAAG,KAAK,IAAI,IAAI,aAAa,GAAG,eAAe,GAAG,CAAC,KAAK,aAAa,GAAG,eAAe,GAAG,CAAC,CAAC;AACpG,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE;AAC1D,YAAY,MAAM,aAAa,GAAG;AAClC,gBAAgB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB;AACpD,gBAAgB,gBAAgB,EAAE,eAAe;AACjD,gBAAgB,iBAAiB,EAAE,aAAa;AAChD,gBAAgB,QAAQ,EAAE,GAAG,KAAK,MAAM,GAAG,OAAO,GAAG,QAAQ;AAC7D,gBAAgB;AAChB,aAAa;AACb,YAAY,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;AAChD,YAAY,UAAU,CAAC,MAAM;AAC7B,gBAAgB,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE;AACpC,YAAY,CAAC,CAAC;AACd,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,aAAa,GAAG;AACpB;AACA,QAAQ,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM;AAC7C,YAAY,UAAU,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC5D,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA,IAAI,gBAAgB,CAAC,KAAK,EAAE;AAC5B;AACA,QAAQ,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM;AAC7C,YAAY,UAAU,CAAC,MAAM;AAC7B,gBAAgB,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AAC9C,YAAY,CAAC,CAAC;AACd,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,WAAW,CAAC,MAAM;AAC/B,YAAY,IAAI,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,gBAAgB,KAAK,KAAK,CAAC,iBAAiB,EAAE;AACxF,gBAAgB,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,sCAAsC,CAAC,KAAK,CAAC,gBAAgB,CAAC;AACnH,gBAAgB,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,sCAAsC,CAAC,KAAK,CAAC,iBAAiB,CAAC;AACrH,gBAAgB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AACnI,gBAAgB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACpI,gBAAgB,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;AAC3F,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,IAAI,CAAC,sCAAsC,CAAC,OAAO,CAAC;AACpE,gBAAgB,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC;AACxE,gBAAgB,IAAI,CAAC,gCAAgC,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC;AACnF,gBAAgB,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;AACjE,oBAAoB,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,IAAI,CAAC;AACvE,gBAAgB;AAChB,qBAAqB;AACrB,oBAAoB,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE;AACpD,gBAAgB;AAChB,gBAAgB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACzC,gBAAgB,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC;AACrE,gBAAgB,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;AAC5C,YAAY;AACZ,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;AACjD,QAAQ,MAAM,IAAI,GAAG,EAAE;AACvB,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK;AACrD,YAAY,CAAC,CAAC,KAAK,GAAG,KAAK;AAC3B,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AAC9B,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACzK,IAAI;AACJ;AACA,IAAI,kBAAkB,CAAC,QAAQ,EAAE;AACjC,QAAQ,IAAI,CAAC,kBAAkB,GAAG,QAAQ;AAC1C,QAAQ,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACnE,IAAI;AACJ;AACA,IAAI,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE;AAC7C,QAAQ,MAAM,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC;AACrD,QAAQ,OAAO,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,OAAO,CAAC;AAC9D,IAAI;AACJ;AACA,IAAI,sCAAsC,CAAC,OAAO,EAAE;AACpD,QAAQ,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM;AACxC,QAAQ,IAAI,CAAC,SAAS,EAAE;AACxB,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,iBAAiB,GAAG,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;AACpF,QAAQ,MAAM,eAAe,GAAG,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;AAChF,QAAQ,IAAI,iBAAiB,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;AAC3E,YAAY,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC;AACnD,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,gCAAgC,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;AAC7D,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE;AAC5B;AACA,YAAY,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACvF,QAAQ;AACR,QAAQ,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,KAAK,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;AAClE,QAAQ,IAAI,IAAI,KAAK,OAAO,EAAE;AAC9B,YAAY,OAAO,CAAC,MAAM,GAAG,OAAO;AACpC,YAAY,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACjC,gBAAgB,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC;AACrD,YAAY;AACZ,YAAY,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AAC1C,YAAY,OAAO,CAAC,SAAS,GAAG,OAAO;AACvC,QAAQ;AACR,aAAa;AACb,YAAY,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;AAC3C,YAAY,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AAClD,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE;AAChC,gBAAgB,OAAO,CAAC,MAAM,CAAC,SAAS,GAAG,OAAO;AAClD,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;AACzE,QAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAClC,YAAY,GAAG,CAAC,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM;AACjD,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA,IAAI,0BAA0B,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;AACxD,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;AACpC,YAAY,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC;AAChE,QAAQ;AACR,aAAa;AACb,YAAY,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,OAAO,CAAC;AAC3D,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,2BAA2B,CAAC,OAAO,EAAE,OAAO,EAAE;AAClD,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU;AAC9C,QAAQ,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,OAAO,CAAC;AACxE,QAAQ,MAAM,eAAe,GAAG,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;AAChF,QAAQ,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;AACnF,QAAQ,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,OAAO,CAAC;AACxE,QAAQ,MAAM,eAAe,GAAG,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;AAChF,QAAQ,MAAM,kBAAkB,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC;AAC7D,QAAQ,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,GAAG,kBAAkB,EAAE,OAAO,CAAC,MAAM,GAAG,kBAAkB,CAAC;AACvH,QAAQ,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,kBAAkB,CAAC;AAC7E,QAAQ,OAAO;AACf,YAAY,OAAO;AACnB,YAAY,UAAU;AACtB,YAAY,gBAAgB;AAC5B,YAAY;AACZ,SAAS;AACT,IAAI;AACJ;AACA,IAAI,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;AACpD,QAAQ,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,OAAO,CAAC;AAC1H,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG;AACjC,YAAY,GAAG,OAAO;AACtB,YAAY,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,GAAG,YAAY,GAAG,EAAE,CAAC;AAC/D,YAAY,GAAG,UAAU;AACzB,YAAY,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,GAAG,EAAE,GAAG,YAAY,CAAC;AAC/D,YAAY,GAAG;AACf,SAAS;AACT,IAAI;AACJ;AACA,IAAI,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE;AAC/C,QAAQ,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,OAAO,CAAC;AAC1H,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,GAAG,OAAO,EAAE,GAAG,YAAY,EAAE,GAAG,UAAU,EAAE,GAAG,gBAAgB,CAAC;AAClG,IAAI;AACJ;AACA,IAAI,WAAW,CAAC,QAAQ,EAAE;AAC1B,QAAQ,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM;AACpE,YAAY,QAAQ,EAAE;AACtB,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,eAAe,GAAG,IAAI;AACzD,QAAQ,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,cAAc,EAAE,KAAK,CAAC;AAC1G,QAAQ,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC9G,QAAQ,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,gBAAgB,CAAC,YAAY,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACnH,QAAQ,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,gBAAgB,CAAC,WAAW,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAClH,QAAQ,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,2BAA2B,EAAE,KAAK,CAAC;AAChH,IAAI;AACJ;AACA,IAAI,gBAAgB,GAAG;AACvB,QAAQ,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,eAAe,GAAG,KAAK;AAC1D,QAAQ,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,cAAc,EAAE,KAAK,CAAC;AAC7G,QAAQ,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,mBAAmB,CAAC,OAAO,EAAE,cAAc,CAAC;AAC7F,QAAQ,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,mBAAmB,CAAC,YAAY,EAAE,cAAc,CAAC;AAClG,QAAQ,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,mBAAmB,CAAC,WAAW,EAAE,cAAc,CAAC;AACjG,QAAQ,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,mBAAmB,CAAC,SAAS,EAAE,2BAA2B,EAAE,KAAK,CAAC;AACnH,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAC3L,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,uBAAuB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,wDAAwD,EAAE,MAAM,EAAE,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,EAAE,EAAE,SAAS,EAAE;AACngB,YAAY;AACZ,gBAAgB,OAAO,EAAE,6BAA6B;AACtD,gBAAgB,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAuB;AACrE;AACA,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AAClD;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,CAAC;AACjI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC;AACnB;AACA,oBAAoB,QAAQ,EAAE,wDAAwD;AACtF,oBAAoB,UAAU,EAAE,IAAI;AACpC,oBAAoB,SAAS,EAAE;AAC/B,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,6BAA6B;AAClE,4BAA4B,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAuB;AACjF;AACA;AACA,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,EAAE,mBAAmB,EAAE,CAAC;AACpD,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;AAC9B,gBAAgB,IAAI,EAAE,WAAW;AACjC,gBAAgB,IAAI,EAAE,CAAC,sBAAsB;AAC7C,aAAa,EAAE;AACf,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC;AAC3B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;AAChC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,iBAAiB,EAAE,CAAC;AACpC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;AAChC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,EAAE,CAAC;AACnB,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,IAAI,KAAK,CAAC,cAAc,EAAE;AAC1B;AACA,SAAS,2BAA2B,CAAC,KAAK,EAAE;AAC5C,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;AACrB,QAAQ,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE;AACzH,QAAQ,cAAc,CAAC,KAAK,CAAC;AAC7B,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ;;ACzRO,MAAM,eAAe,CAAC;AAC7B;AACA,IAAI,WAAW,GAAG;AAClB;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE;AACtC;AACA,QAAQ,IAAI,CAAC,eAAe,GAAG,IAAI,OAAO,EAAE;AAC5C;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,OAAO,EAAE;AAC3C;AACA,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,OAAO,EAAE;AAC9C;AACA,QAAQ,IAAI,CAAC,8BAA8B,GAAG,IAAI,OAAO,EAAE;AAC3D;AACA,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI,OAAO,EAAE;AAChD;AACA,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,OAAO,EAAE;AACjD;AACA,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI,OAAO,EAAE;AAChD;AACA,QAAQ,IAAI,CAAC,+BAA+B,GAAG,IAAI,OAAO,EAAE;AAC5D,QAAQ,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,+BAA+B,CAAC,YAAY,EAAE;AAC3F,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE;AACnE,QAAQ,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,8BAA8B,CAAC,YAAY,EAAE;AACzF,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE;AACnE,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE;AACrE,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AAC/D,IAAI;AACJ;AACA,IAAI,SAAS,CAAC,GAAG,EAAE;AACnB,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC;AACxC,IAAI;AACJ;AACA,IAAI,sBAAsB,GAAG;AAC7B,QAAQ,IAAI,CAAC,8BAA8B,CAAC,IAAI,EAAE;AAClD,IAAI;AACJ;AACA,IAAI,WAAW,CAAC,GAAG,EAAE;AACrB,QAAQ,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1C,IAAI;AACJ;AACA,IAAI,YAAY,CAAC,WAAW,EAAE,GAAG,EAAE;AACnC,QAAQ,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;AACvE,IAAI;AACJ;AACA,IAAI,WAAW,CAAC,GAAG,EAAE;AACrB,QAAQ,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1C,IAAI;AACJ;AACA,IAAI,uBAAuB,CAAC,SAAS,EAAE;AACvC,QAAQ,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,SAAS,CAAC;AAC5D,IAAI;AACJ;AACA,IAAI,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE;AACtD,QAAQ,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7C,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AAChC;AACA;AACA;AACA;AACA;AACA,YAAY,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACxC,gBAAgB,GAAG,CAAC,MAAM,GAAG,KAAK;AAClC,YAAY,CAAC,CAAC;AACd,YAAY,OAAO,UAAU;AAC7B,QAAQ;AACR;AACA,QAAQ,MAAM,mBAAmB,GAAG,0BAA0B,CAAC,UAAU,EAAE,UAAU,CAAC;AACtF;AACA,QAAQ,MAAM,yBAAyB,GAAG,uBAAuB,CAAC,mBAAmB,EAAE,aAAa,CAAC;AACrG;AACA,QAAQ,OAAO,yBAAyB,CAAC,yBAAyB,CAAC;AACnE,IAAI;AACJ;AACA,IAAI,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE;AACpC,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AAC1C,IAAI;AACJ;AACA,IAAI,mBAAmB,CAAC,GAAG,EAAE;AAC7B,QAAQ,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC;AACtC,IAAI;AACJ;AACA,IAAI,aAAa,CAAC,IAAI,EAAE;AACxB,QAAQ,MAAM,cAAc,GAAG,EAAE;AACjC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACjC,YAAY,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACnF,QAAQ;AACR,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE;AAC/C,gBAAgB;AAChB,YAAY;AACZ,YAAY,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AACrC,QAAQ;AACR,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC;AAChD,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;AAClL,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;AACrI;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC;AACzH,YAAY,IAAI,EAAE;AAClB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC;;AChGhC,MAAM,2BAA2B,CAAC;AACzC,IAAI,WAAW,GAAG;AAClB;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAC7C;AACA,QAAQ,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE;AACvC,YAAY,QAAQ,EAAE;AACtB,SAAS,CAAC;AACV;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;AACzC;AACA,QAAQ,IAAI,CAAC,yBAAyB,GAAG,MAAM,CAAC,wBAAwB,CAAC;AACzE;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,eAAe,CAAC;AACvD;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;AACnC;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AACzC,IAAI;AACJ;AACA,IAAI,IAAI,kBAAkB,GAAG;AAC7B,QAAQ,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,WAAW,EAAE,KAAK,IAAI;AAC3E,IAAI;AACJ;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM;AAC3C,YAAY,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS;AAC3D,iBAAiB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAC1D,iBAAiB,SAAS,CAAC,CAAC,KAAK,KAAK;AACtC,gBAAgB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC;AACzD,qBAAqB,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AACnF,oBAAoB,KAAK,CAAC,QAAQ;AAClC,oBAAoB,IAAI,CAAC,kBAAkB,EAAE;AAC7C,oBAAoB,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;AACtE,oBAAoB,KAAK,CAAC,cAAc,EAAE;AAC1C,oBAAoB,KAAK,CAAC,wBAAwB,EAAE;AACpD,gBAAgB;AAChB,qBAAqB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC;AAC/D,qBAAqB,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AAClF,oBAAoB,KAAK,CAAC,QAAQ;AAClC,oBAAoB,IAAI,CAAC,kBAAkB,EAAE;AAC7C,oBAAoB,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,EAAE,CAAC;AACrE,oBAAoB,KAAK,CAAC,cAAc,EAAE;AAC1C,oBAAoB,KAAK,CAAC,wBAAwB,EAAE;AACpD,gBAAgB;AAChB,YAAY,CAAC,CAAC;AACd,YAAY,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS;AAC3D,iBAAiB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAC1D,iBAAiB,SAAS,CAAC,MAAM;AACjC,gBAAgB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAC3C,oBAAoB;AACpB,gBAAgB;AAChB,gBAAgB,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC;AAClD,gBAAgB,IAAI,CAAC,eAAe,GAAG,IAAI;AAC3C,YAAY,CAAC,CAAC;AACd,YAAY,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU;AAC5D,iBAAiB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAC1D,iBAAiB,SAAS,CAAC,MAAM;AACjC,gBAAgB,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,MAAM;AACxD,oBAAoB,IAAI,CAAC,mBAAmB,GAAG,IAAI;AACnD,gBAAgB,CAAC,CAAC;AAClB,YAAY,CAAC,CAAC;AACd,QAAQ,CAAC,CAAC;AACV,QAAQ,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK;AAC9D,YAAY,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACpC,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ;AACA,IAAI,cAAc,CAAC,QAAQ,EAAE;AAC7B,QAAQ,IAAI,CAAC,mBAAmB,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE;AAC/F,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAC7L,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,2BAA2B,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,yBAAyB,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AACxM;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,UAAU,EAAE,CAAC;AACrI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,QAAQ,EAAE,yBAAyB;AACvD,oBAAoB,UAAU,EAAE;AAChC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;ACtFb;AACA;AACA;AACO,MAAM,cAAc,CAAC;AAC5B,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAChL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AACpL;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;AACxH,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,UAAU,EAAE,IAAI,EAAE;AACrE,SAAS,CAAC,EAAE,CAAC;AACb;AACA;AACA;AACA;AACA;AACO,MAAM,gBAAgB,CAAC;AAC9B;AACA,IAAI,WAAW,CAAC,WAAW,EAAE;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW;AACtC,IAAI;AACJ;AACA,IAAI,OAAO,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE;AAC5C,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAC3M,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AACxL;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC;AAC1H,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,oBAAoB,EAAE,UAAU,EAAE,IAAI,EAAE;AACvE,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;;AC5BxD,MAAM,0BAA0B,SAAS,iBAAiB,CAAC;AAClE,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,EAAE;AAC/B;AACA,QAAQ,IAAI,CAAC,eAAe,GAAG,EAAE;AACjC;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,EAAE;AAChC;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,CAAC;AAC5B;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC;AACjD,IAAI;AACJ;AACA;AACA;AACA,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE;AACrB,QAAQ,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,mBAAmB,CAAC;AACxD,IAAI;AACJ,IAAI,IAAI,KAAK,GAAG;AAChB,QAAQ,OAAO,IAAI,CAAC,aAAa,EAAE;AACnC,IAAI;AACJ;AACA,IAAI,QAAQ,CAAC,KAAK,EAAE;AACpB,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK;AAC3B,IAAI;AACJ;AACA,IAAI,eAAe,GAAG;AACtB,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE;AAC9C,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;AACrD,QAAQ,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI;AACnC,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB;AACzD,aAAa,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC;AACrH,QAAQ,MAAM,oBAAoB,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC;AAC1D,QAAQ,IAAI,CAAC,MAAM,CAAC,kBAAkB;AACtC,YAAY,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,oBAAoB,GAAG,CAAC;AAChG,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;AACxC,cAAc;AACd,cAAc,oBAAoB,GAAG,IAAI,CAAC;AAC1C,kBAAkB,IAAI,CAAC;AACvB,kBAAkB,oBAAoB;AACtC,QAAQ,MAAM,eAAe,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,GAAG,oBAAoB,GAAG,WAAW;AACpG,aAAa,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;AACnD,QAAQ,IAAI,CAAC,aAAa,CAAC;AAC3B,YAAY,GAAG,SAAS;AACxB,YAAY,OAAO,EAAE,cAAc;AACnC,YAAY,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;AAChG,YAAY,MAAM,EAAE,IAAI,CAAC,aAAa,IAAI,SAAS,CAAC,MAAM;AAC1D,YAAY,QAAQ,EAAE,IAAI,CAAC,eAAe,IAAI,SAAS,CAAC,QAAQ;AAChE,YAAY,OAAO,EAAE,IAAI,CAAC,cAAc,IAAI,SAAS,CAAC,OAAO;AAC7D,YAAY,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,SAAS,CAAC,cAAc;AACnF,YAAY,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,SAAS,CAAC,iBAAiB;AAC5F,YAAY,IAAI,EAAE;AAClB,gBAAgB,WAAW,EAAE,WAAW;AACxC,gBAAgB,QAAQ,EAAE;AAC1B;AACA,SAAS,CAAC;AACV,IAAI;AACJ;AACA,IAAI,aAAa,GAAG;AACpB,QAAQ,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE;AACjD,IAAI;AACJ;AACA,IAAI,aAAa,CAAC,KAAK,EAAE;AACzB,QAAQ,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC;AAC/C,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAC9L,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,0BAA0B,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,wCAAwC,EAAE,MAAM,EAAE,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE;AAC/Z,YAAY;AACZ,gBAAgB,OAAO,EAAE,yBAAyB;AAClD,gBAAgB,WAAW,EAAE;AAC7B;AACA,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AAClD;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,UAAU,EAAE,CAAC;AACpI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,QAAQ,EAAE,CAAC;AAC/B,aAAa,CAAC;AACd,oBAAoB,UAAU,EAAE,IAAI;AACpC,oBAAoB,SAAS,EAAE;AAC/B,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,yBAAyB;AAC9D,4BAA4B,WAAW,EAAE;AACzC;AACA;AACA,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,EAAE,qBAAqB,EAAE,CAAC;AACtD,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;AAChC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,eAAe,EAAE,CAAC;AAClC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC;AACjC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;AAC9B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC;AACxB,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,EAAE,CAAC;;AClGnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,wBAAwB,CAAC;AACtC;AACA,IAAI,WAAW,CAAC,UAAU,EAAE,gBAAgB,EAAE,MAAM,EAAE;AACtD,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU;AACpC,QAAQ,IAAI,CAAC,gBAAgB,GAAG,gBAAgB;AAChD,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM;AAC5B;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,KAAK;AAC/B;AACA,QAAQ,IAAI,CAAC,cAAc,GAAG,CAAC;AAC/B;AACA,QAAQ,IAAI,CAAC,eAAe,GAAG,CAAC;AAChC;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAC7C;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC;AACzC;AACA,QAAQ,IAAI,CAAC,oBAAoB,GAAG,IAAI,UAAU,CAAC,CAAC,QAAQ,KAAK;AACjE,YAAY,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC5I,YAAY,OAAO,MAAM,YAAY,CAAC,WAAW,EAAE;AACnD,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;AAC7B,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE;AACjC,gBAAgB,IAAI,CAAC,UAAU,GAAG,KAAK;AACvC,gBAAgB,OAAO,KAAK;AAC5B,YAAY;AACZ,YAAY,OAAO,IAAI;AACvB,QAAQ,CAAC,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC;AAC1D;AACA,QAAQ,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AAC7L;AACA,QAAQ,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;AACnM,IAAI;AACJ;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC5C,IAAI;AACJ;AACA,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC;AAC9C,IAAI;AACJ;AACA,IAAI,eAAe,GAAG;AACtB,QAAQ,OAAO,IAAI,CAAC,oBAAoB;AACxC,IAAI;AACJ;AACA,IAAI,uBAAuB,GAAG;AAC9B,QAAQ,OAAO,IAAI,CAAC,4BAA4B;AAChD,IAAI;AACJ;AACA,IAAI,yBAAyB,GAAG;AAChC,QAAQ,OAAO,IAAI,CAAC,8BAA8B;AAClD,IAAI;AACJ;AACA,IAAI,YAAY,GAAG;AACnB,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,SAAS;AACvD,IAAI;AACJ;AACA,IAAI,aAAa,GAAG;AACpB,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU;AACxD,IAAI;AACJ;AACA,IAAI,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,EAAE;AAC9C,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,KAAK,SAAS,EAAE;AACrG,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,UAAU,GAAG,CAAC,SAAS;AACpC,QAAQ,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,GAAG,SAAS;AAC3D,IAAI;AACJ;AACA,IAAI,aAAa,CAAC,UAAU,EAAE,SAAS,GAAG,IAAI,EAAE;AAChD,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,KAAK,UAAU,EAAE;AACvG,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,UAAU,GAAG,CAAC,SAAS;AACpC,QAAQ,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,GAAG,UAAU;AAC7D,IAAI;AACJ;AACA,IAAI,sBAAsB,CAAC,GAAG,EAAE,oBAAoB,EAAE,sBAAsB,EAAE;AAC9E,QAAQ,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AAC/D,QAAQ,MAAM,KAAK,GAAG,GAAG;AACzB,QAAQ,IAAI,CAAC,oBAAoB,IAAI,sBAAsB;AAC3D,YAAY,iBAAiB,CAAC,WAAW,GAAG,iBAAiB,CAAC,WAAW,EAAE;AAC3E,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa;AACzD,YAAY,IAAI,QAAQ;AACxB,gBAAgB,EAAE,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,uBAAuB,CAAC;AACtE,oBAAoB,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC,EAAE;AAC/E,gBAAgB,IAAI,oBAAoB,IAAI,CAAC,sBAAsB,EAAE;AACrE,oBAAoB,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAChF,gBAAgB;AAChB,qBAAqB,IAAI,CAAC,oBAAoB,IAAI,sBAAsB,EAAE;AAC1E,oBAAoB,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACnF,gBAAgB;AAChB,qBAAqB,IAAI,oBAAoB,IAAI,sBAAsB,EAAE;AACzE;AACA,oBAAoB,MAAM,aAAa,GAAG,QAAQ,CAAC,qBAAqB,EAAE;AAC1E,oBAAoB,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI;AAC3D,oBAAoB,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG;AACzD,oBAAoB,MAAM,aAAa,GAAG,aAAa,CAAC,KAAK;AAC7D,oBAAoB,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,YAAY,EAAE,WAAW,CAAC;AACzG;AACA,oBAAoB,IAAI,kBAAkB;AAC1C,wBAAwB,CAAC,QAAQ,CAAC,UAAU,CAAC,kBAAkB,CAAC;AAChE,wBAAwB,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE;AAC5F,wBAAwB,MAAM,WAAW,GAAG,kBAAkB,CAAC,qBAAqB,EAAE,CAAC,IAAI;AAC3F,wBAAwB,MAAM,OAAO,GAAG;AACxC,8BAA8B,CAAC,YAAY,GAAG,aAAa,GAAG,WAAW,IAAI,CAAC;AAC9E,8BAA8B,YAAY,GAAG,aAAa,GAAG,WAAW;AACxE,wBAAwB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC7E,oBAAoB;AACpB,yBAAyB,IAAI,kBAAkB;AAC/C,wBAAwB,CAAC,QAAQ,CAAC,UAAU,CAAC,kBAAkB,CAAC;AAChE,wBAAwB,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE;AACxF,wBAAwB,MAAM,WAAW,GAAG,kBAAkB,CAAC,qBAAqB,EAAE,CAAC,KAAK;AAC5F,wBAAwB,MAAM,OAAO,GAAG;AACxC,8BAA8B,CAAC,YAAY,GAAG,aAAa,GAAG,WAAW,IAAI,CAAC;AAC9E,8BAA8B,YAAY,GAAG,aAAa,GAAG,WAAW;AACxE,wBAAwB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC7E,oBAAoB;AACpB,gBAAgB;AAChB,YAAY;AACZ,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,mBAAmB,CAAC,SAAS,EAAE;AACnC,QAAQ,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM;AAC5C,YAAY,UAAU,CAAC,MAAM;AAC7B,gBAAgB,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC;AACnD,YAAY,CAAC,CAAC;AACd,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,EAAE,EAAE,EAAE,KAAK,EAAED,4BAA+B,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACpR,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,wBAAwB,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,sBAAsB,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,wBAAwB,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AACtU;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,UAAU,EAAE,CAAC;AAClI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,QAAQ,EAAE,sBAAsB;AACpD,oBAAoB,QAAQ,EAAE,iBAAiB;AAC/C,oBAAoB,UAAU,EAAE,IAAI;AACpC,oBAAoB,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,wBAAwB,CAAC,EAAE;AACtH,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,EAAE,EAAE,EAAE,IAAI,EAAEA,4BAA+B,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;;AC1J9H;AACO,MAAM,8BAA8B,CAAC;AAC5C;AACA,IAAI,WAAW,CAAC,WAAW,EAAE;AAC7B,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW;AACtC,IAAI;AACJ;AACA,IAAI,OAAO,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE;AAC5C,QAAQ,OAAO,IAAI;AACnB,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACzN,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,8BAA8B,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,kCAAkC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AACpN;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,UAAU,EAAE,CAAC;AACxI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,kCAAkC,EAAE,UAAU,EAAE,IAAI,EAAE;AACrF,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;;ACRxD,MAAM,2BAA2B,SAAS,kBAAkB,CAAC;AACpE;AACA,IAAI,WAAW,CAAC,aAAa,EAAE;AAC/B,QAAQ,KAAK,EAAE;AACf,QAAQ,IAAI,CAAC,aAAa,GAAG,aAAa;AAC1C;AACA;AACA;AACA,QAAQ,IAAI,CAAC,aAAa,GAAG,KAAK;AAClC;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,EAAE;AAC7B;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC;AAChE;AACA,QAAQ,IAAI,CAAC,wBAAwB,GAAG,CAAC;AACzC;AACA,QAAQ,IAAI,CAAC,uBAAuB,GAAG,IAAI,eAAe,CAAC,CAAC,CAAC;AAC7D;AACA,QAAQ,IAAI,CAAC,mBAAmB,GAAG,EAAE,cAAc,EAAE,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,EAAE;AACnG;AACA,QAAQ,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC,4BAA4B,CAAC;AAC1E;AACA,QAAQ,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,6BAA6B,EAAE;AACxE,YAAY,QAAQ,EAAE;AACtB,SAAS,CAAC;AACV;AACA,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAC7C,IAAI;AACJ;AACA,IAAI,WAAW,CAAC,OAAO,EAAE;AACzB,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;AAC1C,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,IAAI,CAAC,aAAa,KAAK,OAAO,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC,EAAE;AAChH,YAAY,IAAI,CAAC,0BAA0B,EAAE;AAC7C,QAAQ;AACR,IAAI;AACJ;AACA,IAAI,QAAQ,CAAC,KAAK,EAAE;AACpB,QAAQ,IAAI,CAAC,MAAM,GAAG,KAAK;AAC3B,IAAI;AACJ;AACA;AACA;AACA,IAAI,0BAA0B,GAAG;AACjC,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,kBAAkB,EAAE,kBAAkB,EAAE;AACpG,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC;AAC1C,QAAQ,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,aAAa;AACzE,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7D,YAAY,MAAM,aAAa,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,0BAA0B,CAAC;AACrG,YAAY,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE;AAClC,gBAAgB,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,YAAY;AACrE,YAAY;AACZ,QAAQ;AACR,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB;AACzD,QAAQ,MAAM,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,wBAAwB,EAAE;AAC5E,QAAQ,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM;AACjD,QAAQ,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,YAAY,EAAE;AACpE,QAAQ,IAAI,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,WAAW;AACjF,QAAQ,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC;AACpD,QAAQ,IAAI,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW;AAC1G,QAAQ,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,cAAc,EAAE,gBAAgB,CAAC;AACtF,QAAQ,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;AACrE;AACA,QAAQ,MAAM,QAAQ,GAAG,cAAc,KAAK,IAAI,CAAC,mBAAmB,CAAC,cAAc;AACnF,YAAY,gBAAgB,KAAK,IAAI,CAAC,mBAAmB,CAAC,gBAAgB;AAC1E,YAAY,cAAc,KAAK,IAAI,CAAC,mBAAmB,CAAC,cAAc;AACtE;AACA,YAAY,cAAc,KAAK,qBAAqB,CAAC,CAAC,CAAC;AACvD,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY;AACZ,QAAQ;AACR,QAAQ,IAAI,CAAC,mBAAmB,GAAG,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE;AACvF,QAAQ,IAAI,CAAC,wBAAwB,GAAG,cAAc,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS;AACjG,QAAQ,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,cAAc,EAAE,WAAW,CAAC,KAAK,CAAC,cAAc,EAAE,cAAc,GAAG,gBAAgB,CAAC,CAAC,MAAM,CAAC;AACzI,IAAI;AACJ;AACA;AACA;AACA,IAAI,qBAAqB,GAAG;AAC5B,QAAQ,IAAI,CAAC;AACb,aAAa,kBAAkB;AAC/B,aAAa,IAAI,CAACE,QAAM,CAAC,MAAM,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAC7G,aAAa,SAAS,CAAC,CAAC,UAAU,KAAK;AACvC,YAAY,IAAI,CAAC,0BAA0B,EAAE;AAC7C,YAAY,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;AACtC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;AAC9C,gBAAgB,iBAAiB,EAAE,UAAU,CAAC,YAAY;AAC1D,aAAa,CAAC;AACd,QAAQ,CAAC,CAAC;AACV,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAEN,YAAe,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AACvN,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,2BAA2B,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,0BAA0B,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,EAAE,SAAS,EAAE;AACxW,YAAY;AACZ,gBAAgB,OAAO,EAAE,kCAAkC;AAC3D,gBAAgB,WAAW,EAAE;AAC7B;AACA,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AACvE;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,UAAU,EAAE,CAAC;AACrI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC;AACnB;AACA,oBAAoB,QAAQ,EAAE,0BAA0B;AACxD,oBAAoB,UAAU,EAAE,IAAI;AACpC,oBAAoB,SAAS,EAAE;AAC/B,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,kCAAkC;AACvE,4BAA4B,WAAW,EAAE;AACzC;AACA;AACA,iBAAiB;AACjB,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,EAAEA,YAAe,EAAE,CAAC,EAAE,cAAc,EAAE,EAAE,aAAa,EAAE,CAAC;AACjG,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC;AAC9B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;AAC7B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC;AAC5B,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAC;AACrC,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC,EAAE,EAAE,CAAC;;ACtIZ,MAAM,mBAAmB,CAAC;AACjC;AACA,IAAI,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,+BAA+B,EAAE,oBAAoB,EAAE,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,EAAE,SAAS,EAAE,mBAAmB,EAAE,iBAAiB,EAAE;AAC7N,QAAQ,MAAM,MAAM,GAAG,EAAE;AACzB,QAAQ,IAAI,cAAc,EAAE;AAC5B,YAAY,MAAM,GAAG,GAAG,KAAK,GAAG,UAAU,GAAG,SAAS;AACtD,YAAY,MAAM,CAAC,GAAG,CAAC;AACvB,gBAAgB,CAAC,+BAA+B,IAAI,CAAC,KAAK,oBAAoB,IAAI,CAAC,CAAC,IAAI,iBAAiB,IAAI,CAAC,CAAC;AAC/G,QAAQ;AACR,QAAQ,IAAI,iBAAiB,EAAE;AAC/B,YAAY,MAAM,GAAG,GAAG,KAAK,GAAG,SAAS,GAAG,UAAU;AACtD,YAAY,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,EAAE,QAAQ,EAAE;AAC7D,QAAQ;AACR,QAAQ,IAAI,mBAAmB,EAAE;AACjC,YAAY,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM;AACzC,YAAY,MAAM,CAAC,eAAe,CAAC,GAAG,MAAM;AAC5C,QAAQ;AACR,QAAQ,IAAI,iBAAiB,EAAE;AAC/B,YAAY,MAAM,CAAC,aAAa,CAAC,GAAG,MAAM;AAC1C,YAAY,MAAM,CAAC,cAAc,CAAC,GAAG,MAAM;AAC3C,QAAQ;AACR,QAAQ,IAAI,SAAS,EAAE;AACvB,YAAY,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM;AACrC,QAAQ;AACR,aAAa;AACb,YAAY,MAAM,CAAC,WAAW,CAAC,GAAG,WAAW;AAC7C,YAAY,MAAM,CAAC,WAAW,CAAC,GAAG,WAAW;AAC7C,YAAY,MAAM,CAAC,OAAO,CAAC,GAAG,WAAW;AACzC,QAAQ;AACR;AACA;AACA;AACA,QAAQ,QAAQ,MAAM,CAAC,KAAK;AAC5B,YAAY,KAAK,WAAW,CAAC,KAAK;AAClC,gBAAgB,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM;AAC/D,gBAAgB;AAChB,YAAY,KAAK,WAAW,CAAC,GAAG;AAChC,gBAAgB,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO;AAC/D,gBAAgB;AAChB,YAAY;AACZ,gBAAgB,MAAM,CAAC,YAAY,CAAC,GAAG,QAAQ;AAC/C,gBAAgB;AAChB;AACA,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;AAChL,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;AAChL;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,CAAC;AAC7H,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,IAAI,EAAE;AAChE,SAAS,CAAC,EAAE,CAAC;;ACpDN,MAAM,uBAAuB,CAAC;AACrC;AACA,IAAI,SAAS,CAAC,WAAW,EAAE,oBAAoB,EAAE,qBAAqB,EAAE;AACxE,QAAQ,IAAI,WAAW,KAAK,CAAC,EAAE;AAC/B,YAAY,OAAO,KAAK;AACxB,QAAQ;AACR,QAAQ,MAAM,YAAY,GAAG,WAAW,KAAK,oBAAoB,GAAG,CAAC;AACrE,QAAQ,IAAI,YAAY,IAAI,qBAAqB,EAAE;AACnD,YAAY,OAAO,OAAO;AAC1B,QAAQ;AACR,QAAQ,OAAO,MAAM;AACrB,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;AACpL,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;AACxL;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,CAAC;AACjI,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,UAAU,EAAE,IAAI,EAAE;AACpE,SAAS,CAAC,EAAE,CAAC;;AClBD,MAAC,SAAS,GAAG;AACzB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,GAAG,EAAE,WAAW;AACpB,IAAI,IAAI,EAAE;AACV;AACO,MAAM,+BAA+B,CAAC;AAC7C;AACA,IAAI,SAAS,CAAC,OAAO,EAAE;AACvB,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,YAAY,OAAO,MAAM;AACzB,QAAQ;AACR,QAAQ,OAAO,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC;AAC3C,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5L,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,gCAAgC,EAAE,CAAC,CAAC;AAC3M;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE,UAAU,EAAE,CAAC;AACzI,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,IAAI,EAAE,IAAI;AAC9B,oBAAoB,UAAU,EAAE,IAAI;AACpC,oBAAoB,IAAI,EAAE;AAC1B,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;ACrBN,MAAM,cAAc,CAAC;AAC5B;AACA,IAAI,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE;AAC9B,QAAQ,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,GAAG,sBAAsB,GAAG,EAAE;AACzF,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,SAAS,CAAC;AACvE,QAAQ,OAAO,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,IAAI,EAAE;AAC1D,IAAI;AACJ;AACA,IAAI,uBAAuB,CAAC,GAAG,EAAE,SAAS,EAAE;AAC5C,QAAQ,IAAI,CAAC,SAAS,EAAE;AACxB,YAAY,OAAO,EAAE;AACrB,QAAQ;AACR,QAAQ,IAAI,UAAU,GAAG,EAAE;AAC3B,QAAQ,IAAIO,UAAQ,CAAC,SAAS,CAAC,EAAE;AACjC,YAAY,UAAU,GAAG,SAAS;AAClC,QAAQ;AACR,QAAQ,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE;AACnC,YAAY,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE;AACnD,QAAQ;AACR,QAAQ,OAAO,UAAU,CAAC,IAAI,EAAE;AAChC,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3K,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;AACtK;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;AACxH,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE;AAC3D,SAAS,CAAC,EAAE,CAAC;;AC3BN,MAAM,uBAAuB,CAAC;AACrC;AACA,IAAI,SAAS,CAAC,cAAc,EAAE,GAAG,EAAE,+BAA+B,EAAE;AACpE,QAAQ,IAAI,CAAC,cAAc,EAAE;AAC7B,YAAY,cAAc,GAAG,kBAAkB,CAAC,IAAI;AACpD,QAAQ;AACR,QAAQ,MAAM,MAAM,GAAG,GAAG,GAAG,OAAO,GAAG,MAAM;AAC7C,QAAQ,MAAM,oBAAoB,GAAG,sBAAsB,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,IAAI;AACtF,QAAQ,OAAO;AACf,YAAY,CAAC,MAAM,GAAG,CAAC,+BAA+B,IAAI,CAAC,IAAI,IAAI;AACnE,YAAY,WAAW,EAAE,oBAAoB;AAC7C,YAAY,WAAW,EAAE;AACzB,SAAS;AACT,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;AACpL,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;AACxL;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,CAAC;AACjI,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,UAAU,EAAE,IAAI,EAAE;AACpE,SAAS,CAAC,EAAE,CAAC;;ACpBb,MAAM,aAAa,GAAG;AACtB,IAAI,0BAA0B;AAC9B,IAAI,uBAAuB;AAC3B,IAAI,2BAA2B;AAC/B,IAAI,sCAAsC;AAC1C,IAAI,YAAY;AAChB,IAAI,+BAA+B;AACnC,IAAI,mCAAmC;AACvC,IAAI,wBAAwB;AAC5B,IAAI,uBAAuB;AAC3B,IAAI,cAAc;AAClB,IAAI,2BAA2B;AAC/B,IAAI,0BAA0B;AAC9B,IAAI,wBAAwB;AAC5B,IAAI,UAAU;AACd,IAAI,kBAAkB;AACtB,IAAI,4BAA4B;AAChC,IAAI,8BAA8B;AAClC,IAAI,2BAA2B;AAC/B,IAAI,gBAAgB;AACpB,IAAI,uBAAuB;AAC3B,IAAI,mBAAmB;AACvB,IAAI,uBAAuB;AAC3B,IAAI;AACJ,CAAC;AACM,MAAM,kBAAkB,CAAC;AAChC,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;AACnL,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,0BAA0B;AACvK,YAAY,uBAAuB;AACnC,YAAY,2BAA2B;AACvC,YAAY,sCAAsC;AAClD,YAAY,YAAY;AACxB,YAAY,+BAA+B;AAC3C,YAAY,mCAAmC;AAC/C,YAAY,wBAAwB;AACpC,YAAY,uBAAuB;AACnC,YAAY,cAAc;AAC1B,YAAY,2BAA2B;AACvC,YAAY,0BAA0B;AACtC,YAAY,wBAAwB;AACpC,YAAY,UAAU;AACtB,YAAY,kBAAkB;AAC9B,YAAY,4BAA4B;AACxC,YAAY,8BAA8B;AAC1C,YAAY,2BAA2B;AACvC,YAAY,gBAAgB;AAC5B,YAAY,uBAAuB;AACnC,YAAY,mBAAmB;AAC/B,YAAY,uBAAuB;AACnC,YAAY,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,0BAA0B;AACjE,YAAY,uBAAuB;AACnC,YAAY,2BAA2B;AACvC,YAAY,sCAAsC;AAClD,YAAY,YAAY;AACxB,YAAY,+BAA+B;AAC3C,YAAY,mCAAmC;AAC/C,YAAY,wBAAwB;AACpC,YAAY,uBAAuB;AACnC,YAAY,cAAc;AAC1B,YAAY,2BAA2B;AACvC,YAAY,0BAA0B;AACtC,YAAY,wBAAwB;AACpC,YAAY,UAAU;AACtB,YAAY,kBAAkB;AAC9B,YAAY,4BAA4B;AACxC,YAAY,8BAA8B;AAC1C,YAAY,2BAA2B;AACvC,YAAY,gBAAgB;AAC5B,YAAY,uBAAuB;AACnC,YAAY,mBAAmB;AAC/B,YAAY,uBAAuB;AACnC,YAAY,cAAc,CAAC,EAAE,CAAC,CAAC;AAC/B,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;AACrI;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,CAAC;AAC5H,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,OAAO,EAAE,CAAC,GAAG,aAAa,CAAC;AAC/C,oBAAoB,OAAO,EAAE,CAAC,GAAG,aAAa;AAC9C,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;ACpFb;AACA;AACA;;;;"}
1
+ {"version":3,"file":"fundamental-ngx-platform-table-helpers.mjs","sources":["../tmp-esm2022/table-helpers/table.js","../tmp-esm2022/table-helpers/constants/tokens.js","../tmp-esm2022/table-helpers/constants/index.js","../tmp-esm2022/table-helpers/services/table.service.js","../tmp-esm2022/table-helpers/services/table-responsive.service.js","../tmp-esm2022/table-helpers/table-column.js","../tmp-esm2022/table-helpers/directives/platform-table-column-responsive.directive.js","../tmp-esm2022/table-helpers/directives/table-cell-header-popover.directive.js","../tmp-esm2022/table-helpers/services/table-scroll-dispatcher.service.js","../tmp-esm2022/table-helpers/services/table-column-resize.service.js","../tmp-esm2022/table-helpers/directives/table-cell-resizable.directive.js","../tmp-esm2022/table-helpers/table-cell.class.js","../tmp-esm2022/table-helpers/directives/table-cell.directive.js","../tmp-esm2022/table-helpers/enums/filter-type.enum.js","../tmp-esm2022/table-helpers/enums/collection-filter.enum.js","../tmp-esm2022/table-helpers/enums/column-align.enum.js","../tmp-esm2022/table-helpers/enums/row-type.enum.js","../tmp-esm2022/table-helpers/enums/selection-mode.enum.js","../tmp-esm2022/table-helpers/enums/sort-direction.enum.js","../tmp-esm2022/table-helpers/utils.js","../tmp-esm2022/table-helpers/domain/table-data-provider.js","../tmp-esm2022/table-helpers/domain/table-data-source.js","../tmp-esm2022/table-helpers/domain/array-data-source.js","../tmp-esm2022/table-helpers/domain/observable-data-source.js","../tmp-esm2022/table-helpers/domain/data-source-parser.class.js","../tmp-esm2022/table-helpers/directives/table-data-source.directive.js","../tmp-esm2022/table-helpers/models/table-row.model.js","../tmp-esm2022/table-helpers/helpers.js","../tmp-esm2022/table-helpers/models/column-freeze-event.model.js","../tmp-esm2022/table-helpers/models/columns-change-event.model.js","../tmp-esm2022/table-helpers/models/directives.js","../tmp-esm2022/table-helpers/models/filter-change-event.model.js","../tmp-esm2022/table-helpers/models/group-change-event.model.js","../tmp-esm2022/table-helpers/models/page-change-event.model.js","../tmp-esm2022/table-helpers/models/save-rows-event.interface.js","../tmp-esm2022/table-helpers/models/search-change-event.model.js","../tmp-esm2022/table-helpers/models/selection-change-event.model.js","../tmp-esm2022/table-helpers/models/sort-change-event.model.js","../tmp-esm2022/table-helpers/models/table-cell-activate-event.model.js","../tmp-esm2022/table-helpers/models/table-dialog-common-data.model.js","../tmp-esm2022/table-helpers/models/table-row-activate-event.model.js","../tmp-esm2022/table-helpers/models/table-row-toggle-open-state-event.model.js","../tmp-esm2022/table-helpers/models/table-rows-rearrange-event.model.js","../tmp-esm2022/table-helpers/directives/table-draggable.directive.js","../tmp-esm2022/table-helpers/services/table-row.service.js","../tmp-esm2022/table-helpers/directives/table-header-resizer.directive.js","../tmp-esm2022/table-helpers/directives/table-header.directive.js","../tmp-esm2022/table-helpers/directives/table-initial-state.directive.js","../tmp-esm2022/table-helpers/directives/table-scrollable.directive.js","../tmp-esm2022/table-helpers/directives/table-view-settings-filter-custom.directive.js","../tmp-esm2022/table-helpers/directives/table-virtual-scroll.directive.js","../tmp-esm2022/table-helpers/pipes/cell-styles.pipe.js","../tmp-esm2022/table-helpers/pipes/column-resizable-side.pipe.js","../tmp-esm2022/table-helpers/pipes/column-sorting-direction.pipe.js","../tmp-esm2022/table-helpers/pipes/row-classes.pipe.js","../tmp-esm2022/table-helpers/pipes/selection-cell-styles.pipe.js","../tmp-esm2022/table-helpers/table-helpers.module.js","../tmp-esm2022/table-helpers/fundamental-ngx-platform-table-helpers.js"],"sourcesContent":["import { EventEmitter } from '@angular/core';\nexport class Table {\n constructor() {\n /** Toolbar Sort Settings button click event */\n this.openTableSortSettings = new EventEmitter();\n /** Toolbar Filter Settings button click event */\n this.openTableFilterSettings = new EventEmitter();\n /** Toolbar Group Settings button click event */\n this.openTableGroupSettings = new EventEmitter();\n /** Toolbar Column Settings button click event */\n this.openTableColumnSettings = new EventEmitter();\n /** Event fired when table state changes. */\n this.tableColumnFilterChange = new EventEmitter();\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvdGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFlBQVksRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFlM0UsTUFBTSxPQUFnQixLQUFLO0lBQTNCO1FBd0tJLCtDQUErQztRQUN0QywwQkFBcUIsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUU5RSxpREFBaUQ7UUFDeEMsNEJBQXVCLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFaEYsZ0RBQWdEO1FBQ3ZDLDJCQUFzQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRS9FLGlEQUFpRDtRQUN4Qyw0QkFBdUIsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVoRiw0Q0FBNEM7UUFDbkMsNEJBQXVCLEdBQXNCLElBQUksWUFBWSxFQUFRLENBQUM7SUFVbkYsQ0FBQztDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZWFyY2hJbnB1dCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2VhcmNoLWZpZWxkJztcbmltcG9ydCB7IFByZXNldE1hbmFnZWRDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEZvY3VzYWJsZUdyaWREaXJlY3RpdmUsIE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgVGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi9kb21haW4nO1xuaW1wb3J0IHsgQ29sbGVjdGlvbkZpbHRlciB9IGZyb20gJy4vaW50ZXJmYWNlcy9jb2xsZWN0aW9uLWZpbHRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbkdyb3VwIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NvbGxlY3Rpb24tZ3JvdXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IENvbGxlY3Rpb25Tb3J0IH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NvbGxlY3Rpb24tc29ydC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGFibGVTdGF0ZSB9IGZyb20gJy4vaW50ZXJmYWNlcy90YWJsZS1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUGxhdGZvcm1UYWJsZU1hbmFnZWRQcmVzZXQsIFNhdmVSb3dzRXZlbnQsIFRhYmxlSW5pdGlhbFN0YXRlLCBUYWJsZVJvdyB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IFRhYmxlU2Nyb2xsYWJsZSB9IGZyb20gJy4vc2VydmljZXMvdGFibGUtc2Nyb2xsLWRpc3BhdGNoZXIuc2VydmljZSc7XG5pbXBvcnQgeyBUYWJsZUNvbHVtbiB9IGZyb20gJy4vdGFibGUtY29sdW1uJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRhYmxlPFQgPSBhbnk+IGltcGxlbWVudHMgUHJlc2V0TWFuYWdlZENvbXBvbmVudDxQbGF0Zm9ybVRhYmxlTWFuYWdlZFByZXNldD4ge1xuICAgIGFic3RyYWN0IHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAgIGFic3RyYWN0IHJlYWRvbmx5IGlkOiBzdHJpbmc7XG5cbiAgICBhYnN0cmFjdCBfbG9hZFByZXZpb3VzUGFnZXM6IGJvb2xlYW47XG5cbiAgICBhYnN0cmFjdCBwYWdlU2Nyb2xsaW5nOiBib29sZWFuO1xuXG4gICAgYWJzdHJhY3QgbG9hZFBhZ2VzQmVmb3JlOiBib29sZWFuO1xuXG4gICAgYWJzdHJhY3QgcGFnZVNpemU6IE51bGxhYmxlPG51bWJlcj47XG5cbiAgICBhYnN0cmFjdCBmcmVlemVDb2x1bW5zVG86IHN0cmluZztcblxuICAgIGFic3RyYWN0IGZyZWV6ZUVuZENvbHVtbnNUbzogc3RyaW5nO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBjdXJyZW50IHByZXNldCBjb25maWd1cmF0aW9uIGhhcyBiZWVuIGNoYW5nZWQuICovXG4gICAgYWJzdHJhY3QgcHJlc2V0Q2hhbmdlZDogRXZlbnRFbWl0dGVyPFBsYXRmb3JtVGFibGVNYW5hZ2VkUHJlc2V0PjtcblxuICAgIC8qKiBTdW0gb2Ygd2lkdGhzIG9mIGZpeGVkIGNvbHVtbnMgKHNlbWFudGljIGhpZ2hsaWdodGluZywgc2VsZWN0aW9uKSAqL1xuICAgIGFic3RyYWN0IGdldCBfZml4ZWRDb2x1bW5zUGFkZGluZygpOiBudW1iZXI7XG5cbiAgICAvKiogRnJlZXphYmxlIGNvbHVtbiBuYW1lcyBhbmQgdGhlaXIgcmVzcGVjdGl2ZSBpbmRleGVzICovXG4gICAgYWJzdHJhY3QgZ2V0IF9mcmVlemFibGVDb2x1bW5zKCk6IFJlYWRvbmx5TWFwPHN0cmluZywgbnVtYmVyPjtcblxuICAgIC8qKiBGcmVlemFibGUgY29sdW1uIG5hbWVzIGFuZCB0aGVpciByZXNwZWN0aXZlIGluZGV4ZXMgKi9cbiAgICBhYnN0cmFjdCBnZXQgX2ZyZWV6YWJsZUVuZENvbHVtbnMoKTogUmVhZG9ubHlNYXA8c3RyaW5nLCBudW1iZXI+O1xuXG4gICAgLyoqIFdpZHRoIG9mIHRoZSB0YWJsZSBlbGVtZW50IGluIHB4ICovXG4gICAgYWJzdHJhY3QgZ2V0IF90YWJsZVdpZHRoUHgoKTogbnVtYmVyO1xuXG4gICAgYWJzdHJhY3QgZ2V0IGxvYWRpbmdTdGF0ZSgpOiBib29sZWFuO1xuXG4gICAgYWJzdHJhY3QgaW5pdGlhbFN0YXRlOiBUYWJsZUluaXRpYWxTdGF0ZSB8IG51bGw7XG5cbiAgICAvKiogVGFibGUgY29sdW1ucyBkZWZpbml0aW9uIGxpc3QgKi9cbiAgICBhYnN0cmFjdCByZWFkb25seSB0YWJsZUNvbHVtbnNTdHJlYW06IE9ic2VydmFibGU8VGFibGVDb2x1bW5bXT47XG5cbiAgICBhYnN0cmFjdCByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3I7XG5cbiAgICBhYnN0cmFjdCByZWFkb25seSB0YWJsZUNvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICAgIGFic3RyYWN0IHJlYWRvbmx5IHRhYmxlU2Nyb2xsYWJsZTogVGFibGVTY3JvbGxhYmxlO1xuXG4gICAgYWJzdHJhY3QgX3RhYmxlUm93c1Zpc2libGU6IFRhYmxlUm93PFQ+W107XG5cbiAgICBhYnN0cmFjdCBfdGFibGVSb3dzOiBUYWJsZVJvdzxUPltdO1xuXG4gICAgYWJzdHJhY3QgbG9hZGVkUm93cyQ6IFNpZ25hbDxudW1iZXI+O1xuXG4gICAgYWJzdHJhY3QgX3RhYmxlQ3VycmVudGx5UmVuZGVyZWRSb3dzUGxhY2Vob2xkZXI6IG51bWJlcltdO1xuXG4gICAgYWJzdHJhY3QgbWluaW11bUNvbHVtbldpZHRoOiBudW1iZXI7XG5cbiAgICBhYnN0cmFjdCBfZm9jdXNhYmxlR3JpZDogRm9jdXNhYmxlR3JpZERpcmVjdGl2ZTtcblxuICAgIC8qKiBHZXQgdGFibGUgc3RhdGUgKi9cbiAgICBhYnN0cmFjdCBnZXRUYWJsZVN0YXRlKCk6IFRhYmxlU3RhdGU7XG5cbiAgICAvKiogU2V0IHRhYmxlIHN0YXRlICovXG4gICAgYWJzdHJhY3Qgc2V0VGFibGVTdGF0ZSh0YWJsZVN0YXRlOiBUYWJsZVN0YXRlKTogdm9pZDtcblxuICAgIC8qKiBHZXQgdGFibGUgY29sdW1ucyBkZWZpbml0aW9uIGxpc3QgKi9cbiAgICBhYnN0cmFjdCBnZXRUYWJsZUNvbHVtbnMoKTogVGFibGVDb2x1bW5bXTtcblxuICAgIC8qKiBHZXQgYSBsaXN0IG9mIHZpc2libGUgdGFibGUgY29sdW1ucy4gKi9cbiAgICBhYnN0cmFjdCBnZXRWaXNpYmxlVGFibGVDb2x1bW5zKCk6IFRhYmxlQ29sdW1uW107XG5cbiAgICAvKiogU2V0IFNvcnRpbmcgcnVsZXMgKi9cbiAgICBhYnN0cmFjdCBzb3J0KHNvcnRSdWxlczogQ29sbGVjdGlvblNvcnRbXSk6IHZvaWQ7XG5cbiAgICAvKiogQWRkIFNvcnRpbmcgcnVsZXMgdG8gdGhlIGV4aXN0aW5nIG9uZXMgKi9cbiAgICBhYnN0cmFjdCBhZGRTb3J0KHNvcnRSdWxlczogQ29sbGVjdGlvblNvcnRbXSk6IHZvaWQ7XG5cbiAgICAvKiogU2V0IEZpbHRlcmluZyBydWxlcyAqL1xuICAgIGFic3RyYWN0IGZpbHRlcihmaWx0ZXJSdWxlczogQ29sbGVjdGlvbkZpbHRlcltdKTogdm9pZDtcblxuICAgIC8qKiBBZGQgRmlsdGVyIHJ1bGVzIHRvIHRoZSBleGlzdGluZyBvbmVzICovXG4gICAgYWJzdHJhY3QgYWRkRmlsdGVyKGZpbHRlclJ1bGVzOiBDb2xsZWN0aW9uRmlsdGVyW10pOiB2b2lkO1xuXG4gICAgLyoqIFNldCBncm91cGluZyBydWxlcyAqL1xuICAgIGFic3RyYWN0IGdyb3VwKGdyb3VwUnVsZXM6IENvbGxlY3Rpb25Hcm91cFtdKTogdm9pZDtcblxuICAgIC8qKiBBZGQgR3JvdXAgcnVsZXMgdG8gdGhlIGV4aXN0aW5nIG9uZXMgKi9cbiAgICBhYnN0cmFjdCBhZGRHcm91cChncm91cFJ1bGVzOiBDb2xsZWN0aW9uR3JvdXBbXSk6IHZvaWQ7XG5cbiAgICAvKiogU2V0IHRhYmxlIGNvbHVtbnMgKi9cbiAgICBhYnN0cmFjdCBzZXRDb2x1bW5zKGNvbHVtbnM6IHN0cmluZ1tdKTogdm9pZDtcblxuICAgIC8qKiBUb2dnbGUgcm93IGNoZWNrZWQgc3RhdGUuICovXG4gICAgYWJzdHJhY3QgdG9nZ2xlU2VsZWN0YWJsZVJvdyhyb3dJbmRleDogbnVtYmVyKTogdm9pZDtcblxuICAgIC8qKiBGcmVlemUgdGFibGUgY29sdW1ucyB0byBpbmNsdWRpbmcgKi9cbiAgICBhYnN0cmFjdCBmcmVlemVUb0NvbHVtbihjb2x1bW5LZXk6IHN0cmluZywgZW5kPzogYm9vbGVhbik6IHZvaWQ7XG5cbiAgICAvKiogVW5mcmVlemUgY29sdW1uICovXG4gICAgYWJzdHJhY3QgdW5mcmVlemUoY29sdW1uS2V5OiBzdHJpbmcsIGVuZD86IGJvb2xlYW4pOiB2b2lkO1xuXG4gICAgLyoqIFNlYXJjaCBpbiBhbGwgdGFibGUgY29sdW1ucyAqL1xuICAgIGFic3RyYWN0IHNlYXJjaChzZWFyY2hJbnB1dDogU2VhcmNoSW5wdXQpOiB2b2lkO1xuXG4gICAgLyoqIFRvb2xiYXIgU29ydCBTZXR0aW5ncyBidXR0b24gdmlzaWJpbGl0eSAqL1xuICAgIGFic3RyYWN0IHNob3dTb3J0U2V0dGluZ3NJblRvb2xiYXIoc2hvd1NvcnRTZXR0aW5nczogYm9vbGVhbik6IHZvaWQ7XG5cbiAgICAvKiogVG9vbGJhciBGaWx0ZXIgU2V0dGluZ3MgYnV0dG9uIHZpc2liaWxpdHkgKi9cbiAgICBhYnN0cmFjdCBzaG93RmlsdGVyU2V0dGluZ3NJblRvb2xiYXIoc2hvd0ZpbHRlclNldHRpbmdzOiBib29sZWFuKTogdm9pZDtcblxuICAgIC8qKiBUb29sYmFyIEdyb3VwIFNldHRpbmdzIGJ1dHRvbiB2aXNpYmlsaXR5ICovXG4gICAgYWJzdHJhY3Qgc2hvd0dyb3VwU2V0dGluZ3NJblRvb2xiYXIoc2hvd0dyb3VwU2V0dGluZ3M6IGJvb2xlYW4pOiB2b2lkO1xuXG4gICAgLyoqIFRvb2xiYXIgQ29sdW1ucyBTZXR0aW5ncyBidXR0b24gdmlzaWJpbGl0eSAqL1xuICAgIGFic3RyYWN0IHNob3dDb2x1bW5TZXR0aW5nc0luVG9vbGJhcihzaG93Q29sdW1uU2V0dGluZ3M6IGJvb2xlYW4pOiB2b2lkO1xuXG4gICAgLyoqIFRvb2xiYXIgU2V0dGluZ3MgYnV0dG9uIHZpc2liaWxpdHkgKi9cbiAgICBhYnN0cmFjdCBzaG93U2V0dGluZ3NJblRvb2xiYXIoc2hvd1NldHRpbmdzOiBib29sZWFuKTogdm9pZDtcblxuICAgIC8qKiBEaXNhYmxlIGZpbHRlcmluZyBieSBoZWFkZXIgY29sdW1uIG1lbnUgKi9cbiAgICBhYnN0cmFjdCBzZXRIZWFkZXJDb2x1bW5GaWx0ZXJpbmdEaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQ7XG5cbiAgICAvKiogU2V0IGN1cnJlbnQgcGFnZSAqL1xuICAgIGFic3RyYWN0IHNldEN1cnJlbnRQYWdlKGN1cnJlbnRQYWdlOiBudW1iZXIpOiB2b2lkO1xuXG4gICAgLyoqIEdldHMgdGhlIG1heCBhbGxvd2VkIHdpZHRoIGZvciBhbGwgZnJlZXphYmxlIGNvbHVtbnMgKi9cbiAgICBhYnN0cmFjdCBnZXRNYXhBbGxvd2VkRnJlZXphYmxlQ29sdW1uc1dpZHRoKCk6IG51bWJlcjtcblxuICAgIC8qKiBHZXQgdGFibGUgZGF0YSBzb3VyY2UgKi9cbiAgICBhYnN0cmFjdCBnZXREYXRhU291cmNlKCk6IFRhYmxlRGF0YVNvdXJjZTxUPjtcblxuICAgIC8qKiBNYW51YWxseSB0cmlnZ2VycyBjb2x1bW5zIHdpZHRoIHJlY2FsY3VsYXRpb24gKi9cbiAgICBhYnN0cmFjdCByZWNhbGN1bGF0ZVRhYmxlQ29sdW1uV2lkdGgoKTogdm9pZDtcblxuICAgIC8qKiBGZXRjaCBkYXRhIHNvdXJjZSBkYXRhLiAqL1xuICAgIGFic3RyYWN0IGZldGNoKCk6IHZvaWQ7XG5cbiAgICAvKiogQWRkcyBlbXB0eSByb3cgZm9yIGVkaXRpbmcgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgcm93cyBhcnJheS4gKi9cbiAgICBhYnN0cmFjdCBhZGRSb3coKTogdm9pZDtcblxuICAgIC8qKiBFbWl0cyBzYXZlIGV2ZW50IGFuZCByZXNldHMgZWRpdGFibGUgcm93cyBhcnJheS4gKi9cbiAgICBhYnN0cmFjdCBzYXZlUm93cygpOiB2b2lkO1xuXG4gICAgLyoqIENhbmNlbHMgZWRpdGluZyBhbmQgZGlzY2FyZHMgbmV3bHkgYWRkZWQgcm93cyAqL1xuICAgIGFic3RyYWN0IGNhbmNlbEVkaXRpbmcoKTogdm9pZDtcblxuICAgIC8qKiBFeHBhbmQgYWxsIHRoZSByb3dzIG9mIHRoZSB0YWJsZSAqL1xuICAgIGFic3RyYWN0IGV4cGFuZEFsbCgpOiB2b2lkO1xuXG4gICAgLyoqIENvbGxhcHNlIGFsbCB0aGUgcm93cyBvZiB0aGUgdGFibGUgKi9cbiAgICBhYnN0cmFjdCBjb2xsYXBzZUFsbCgpOiB2b2lkO1xuXG4gICAgLyoqIFNldHMgc2VsZWN0ZWQgcHJlc2V0LiAqL1xuICAgIGFic3RyYWN0IHNldFByZXNldChkYXRhOiBQbGF0Zm9ybVRhYmxlTWFuYWdlZFByZXNldCk6IHZvaWQ7XG5cbiAgICAvKiogUmV0dXJucyBjdXJyZW50IHByZXNldC4gKi9cbiAgICBhYnN0cmFjdCBnZXRDdXJyZW50UHJlc2V0KCk6IFBsYXRmb3JtVGFibGVNYW5hZ2VkUHJlc2V0O1xuXG4gICAgYWJzdHJhY3QgZ2V0Q3VycmVudGx5UmVuZGVyZWRSb3dzKCk6IG51bWJlcltdO1xuXG4gICAgYWJzdHJhY3Qgc2V0Q3VycmVudGx5UmVuZGVyZWRSb3dzKHN0YXJ0SW5kZXg6IG51bWJlciwgbGVuZ3RoOiBudW1iZXIpOiB2b2lkO1xuXG4gICAgYWJzdHJhY3QgdG9nZ2xlRXhwYW5kYWJsZVRhYmxlUm93KHJvdzogVGFibGVSb3c8VD4sIGZvcmNlRmV0Y2g/OiBib29sZWFuKTtcblxuICAgIGFic3RyYWN0IG9uVGFibGVSb3dzQ2hhbmdlZCgpOiB2b2lkO1xuXG4gICAgYWJzdHJhY3QgcmVmcmVzaERuZExpc3QoKTogdm9pZDtcblxuICAgIGFic3RyYWN0IGNsZWFyVGFibGVSb3dzKCk6IHZvaWQ7XG5cbiAgICAvKiogVG9vbGJhciBTb3J0IFNldHRpbmdzIGJ1dHRvbiBjbGljayBldmVudCAqL1xuICAgIHJlYWRvbmx5IG9wZW5UYWJsZVNvcnRTZXR0aW5nczogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIFRvb2xiYXIgRmlsdGVyIFNldHRpbmdzIGJ1dHRvbiBjbGljayBldmVudCAqL1xuICAgIHJlYWRvbmx5IG9wZW5UYWJsZUZpbHRlclNldHRpbmdzOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogVG9vbGJhciBHcm91cCBTZXR0aW5ncyBidXR0b24gY2xpY2sgZXZlbnQgKi9cbiAgICByZWFkb25seSBvcGVuVGFibGVHcm91cFNldHRpbmdzOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogVG9vbGJhciBDb2x1bW4gU2V0dGluZ3MgYnV0dG9uIGNsaWNrIGV2ZW50ICovXG4gICAgcmVhZG9ubHkgb3BlblRhYmxlQ29sdW1uU2V0dGluZ3M6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKiBFdmVudCBmaXJlZCB3aGVuIHRhYmxlIHN0YXRlIGNoYW5nZXMuICovXG4gICAgcmVhZG9ubHkgdGFibGVDb2x1bW5GaWx0ZXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEV2ZW50IGZpcmVkIHdoZW4gZW1wdHkgcm93IGFkZGVkLiAqL1xuICAgIHJlYWRvbmx5IGVtcHR5Um93QWRkZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPjtcblxuICAgIC8qKiBFdmVudCBmaXJlZCB3aGVuIHNhdmUgYnV0dG9uIHByZXNzZWQuICovXG4gICAgcmVhZG9ubHkgc2F2ZTogRXZlbnRFbWl0dGVyPFNhdmVSb3dzRXZlbnQ8VD4+O1xuXG4gICAgLyoqIEV2ZW50IGZpcmVkIHdoZW4gY2FuY2VsIGJ1dHRvbiBwcmVzc2VkLiAqL1xuICAgIHJlYWRvbmx5IGNhbmNlbDogRXZlbnRFbWl0dGVyPHZvaWQ+O1xufVxuIl19","import { InjectionToken } from '@angular/core';\nexport const FDP_TABLE_DRAGGABLE_DIRECTIVE = new InjectionToken('FdpTableDraggableDirective');\nexport const FDP_TABLE_STATE_DIRECTIVE = new InjectionToken('FdpTableStateDirective');\nexport const FDP_TABLE_VIRTUAL_SCROLL_DIRECTIVE = new InjectionToken('FdpTableVirtualScrollDirective');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzL2NvbnN0YW50cy90b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxJQUFJLGNBQWMsQ0FBaUIsNEJBQTRCLENBQUMsQ0FBQztBQUM5RyxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLGNBQWMsQ0FBb0Isd0JBQXdCLENBQUMsQ0FBQztBQUN6RyxNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FBRyxJQUFJLGNBQWMsQ0FDaEUsZ0NBQWdDLENBQ25DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGFibGVEcmFnZ2FibGUsIFRhYmxlSW5pdGlhbFN0YXRlLCBUYWJsZVZpcnR1YWxTY3JvbGwgfSBmcm9tICcuLi9tb2RlbHMnO1xuXG5leHBvcnQgY29uc3QgRkRQX1RBQkxFX0RSQUdHQUJMRV9ESVJFQ1RJVkUgPSBuZXcgSW5qZWN0aW9uVG9rZW48VGFibGVEcmFnZ2FibGU+KCdGZHBUYWJsZURyYWdnYWJsZURpcmVjdGl2ZScpO1xuZXhwb3J0IGNvbnN0IEZEUF9UQUJMRV9TVEFURV9ESVJFQ1RJVkUgPSBuZXcgSW5qZWN0aW9uVG9rZW48VGFibGVJbml0aWFsU3RhdGU+KCdGZHBUYWJsZVN0YXRlRGlyZWN0aXZlJyk7XG5leHBvcnQgY29uc3QgRkRQX1RBQkxFX1ZJUlRVQUxfU0NST0xMX0RJUkVDVElWRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxUYWJsZVZpcnR1YWxTY3JvbGw+KFxuICAgICdGZHBUYWJsZVZpcnR1YWxTY3JvbGxEaXJlY3RpdmUnXG4pO1xuIl19","import { ContentDensityMode } from '@fundamental-ngx/core/content-density';\nexport * from './tokens';\nexport const DEFAULT_TABLE_PAGE = {\n pageSize: 0,\n currentPage: 1\n};\nexport const DEFAULT_TABLE_SEARCH_INPUT = {\n text: '',\n category: ''\n};\nexport const DEFAULT_TABLE_STATE = {\n sortBy: [],\n filterBy: [],\n groupBy: [],\n page: DEFAULT_TABLE_PAGE,\n columns: [],\n columnKeys: [],\n freezeToColumn: null,\n freezeToEndColumn: null,\n searchInput: DEFAULT_TABLE_SEARCH_INPUT,\n scrollTopPosition: 0\n};\nexport const DEFAULT_HIGHLIGHTING_KEY = 'semantic';\nexport const EDITABLE_ROW_SEMANTIC_STATE = 'information';\nexport const SEMANTIC_HIGHLIGHTING_COLUMN_WIDTH = 6;\nexport const SELECTION_COLUMN_WIDTH = new Map([\n [ContentDensityMode.COZY, 44],\n [ContentDensityMode.COMPACT, 32],\n [ContentDensityMode.CONDENSED, 32]\n]);\nexport const TABLE_COLUMN_MIN_WIDTH = 50;\nexport const ROW_HEIGHT = new Map([\n [ContentDensityMode.COZY, 44],\n [ContentDensityMode.COMPACT, 32],\n [ContentDensityMode.CONDENSED, 24]\n]);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvY29uc3RhbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRzNFLGNBQWMsVUFBVSxDQUFDO0FBRXpCLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUE2QjtJQUN4RCxRQUFRLEVBQUUsQ0FBQztJQUNYLFdBQVcsRUFBRSxDQUFDO0NBQ2pCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBMEI7SUFDN0QsSUFBSSxFQUFFLEVBQUU7SUFDUixRQUFRLEVBQUUsRUFBRTtDQUNmLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBeUI7SUFDckQsTUFBTSxFQUFFLEVBQUU7SUFDVixRQUFRLEVBQUUsRUFBRTtJQUNaLE9BQU8sRUFBRSxFQUFFO0lBQ1gsSUFBSSxFQUFFLGtCQUFrQjtJQUN4QixPQUFPLEVBQUUsRUFBRTtJQUNYLFVBQVUsRUFBRSxFQUFFO0lBQ2QsY0FBYyxFQUFFLElBQUk7SUFDcEIsaUJBQWlCLEVBQUUsSUFBSTtJQUN2QixXQUFXLEVBQUUsMEJBQTBCO0lBQ3ZDLGlCQUFpQixFQUFFLENBQUM7Q0FDdkIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLFVBQVUsQ0FBQztBQUVuRCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxhQUFhLENBQUM7QUFFekQsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsQ0FBQyxDQUFDO0FBRXBELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUE0QyxJQUFJLEdBQUcsQ0FBNkI7SUFDL0csQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQzdCLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztJQUNoQyxDQUFDLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7Q0FDckMsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxDQUFDO0FBRXpDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBNEMsSUFBSSxHQUFHLENBQTZCO0lBQ25HLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUM3QixDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7SUFDaEMsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO0NBQ3JDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlYXJjaElucHV0IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zZWFyY2gtZmllbGQnO1xuXG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eU1vZGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IENvbGxlY3Rpb25QYWdlLCBUYWJsZVN0YXRlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vdG9rZW5zJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfVEFCTEVfUEFHRTogUmVhZG9ubHk8Q29sbGVjdGlvblBhZ2U+ID0ge1xuICAgIHBhZ2VTaXplOiAwLFxuICAgIGN1cnJlbnRQYWdlOiAxXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9UQUJMRV9TRUFSQ0hfSU5QVVQ6IFJlYWRvbmx5PFNlYXJjaElucHV0PiA9IHtcbiAgICB0ZXh0OiAnJyxcbiAgICBjYXRlZ29yeTogJydcbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1RBQkxFX1NUQVRFOiBSZWFkb25seTxUYWJsZVN0YXRlPiA9IHtcbiAgICBzb3J0Qnk6IFtdLFxuICAgIGZpbHRlckJ5OiBbXSxcbiAgICBncm91cEJ5OiBbXSxcbiAgICBwYWdlOiBERUZBVUxUX1RBQkxFX1BBR0UsXG4gICAgY29sdW1uczogW10sXG4gICAgY29sdW1uS2V5czogW10sXG4gICAgZnJlZXplVG9Db2x1bW46IG51bGwsXG4gICAgZnJlZXplVG9FbmRDb2x1bW46IG51bGwsXG4gICAgc2VhcmNoSW5wdXQ6IERFRkFVTFRfVEFCTEVfU0VBUkNIX0lOUFVULFxuICAgIHNjcm9sbFRvcFBvc2l0aW9uOiAwXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9ISUdITElHSFRJTkdfS0VZID0gJ3NlbWFudGljJztcblxuZXhwb3J0IGNvbnN0IEVESVRBQkxFX1JPV19TRU1BTlRJQ19TVEFURSA9ICdpbmZvcm1hdGlvbic7XG5cbmV4cG9ydCBjb25zdCBTRU1BTlRJQ19ISUdITElHSFRJTkdfQ09MVU1OX1dJRFRIID0gNjtcblxuZXhwb3J0IGNvbnN0IFNFTEVDVElPTl9DT0xVTU5fV0lEVEg6IFJlYWRvbmx5TWFwPENvbnRlbnREZW5zaXR5TW9kZSwgbnVtYmVyPiA9IG5ldyBNYXA8Q29udGVudERlbnNpdHlNb2RlLCBudW1iZXI+KFtcbiAgICBbQ29udGVudERlbnNpdHlNb2RlLkNPWlksIDQ0XSxcbiAgICBbQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1QsIDMyXSxcbiAgICBbQ29udGVudERlbnNpdHlNb2RlLkNPTkRFTlNFRCwgMzJdXG5dKTtcblxuZXhwb3J0IGNvbnN0IFRBQkxFX0NPTFVNTl9NSU5fV0lEVEggPSA1MDtcblxuZXhwb3J0IGNvbnN0IFJPV19IRUlHSFQ6IFJlYWRvbmx5TWFwPENvbnRlbnREZW5zaXR5TW9kZSwgbnVtYmVyPiA9IG5ldyBNYXA8Q29udGVudERlbnNpdHlNb2RlLCBudW1iZXI+KFtcbiAgICBbQ29udGVudERlbnNpdHlNb2RlLkNPWlksIDQ0XSxcbiAgICBbQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1QsIDMyXSxcbiAgICBbQ29udGVudERlbnNpdHlNb2RlLkNPTkRFTlNFRCwgMjRdXG5dKTtcbiJdfQ==","import { Injectable, computed, signal } from '@angular/core';\nimport equal from 'fast-deep-equal';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { skip } from 'rxjs/operators';\nimport { DEFAULT_TABLE_STATE } from '../constants';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport * as i0 from \"@angular/core\";\nexport class TableService {\n constructor() {\n /** Table state stream. */\n this.tableState$ = new BehaviorSubject(DEFAULT_TABLE_STATE);\n /** @hidden */\n this._semanticHighlighting$ = signal('', ...(ngDevMode ? [{ debugName: \"_semanticHighlighting$\" }] : []));\n /** @hidden */\n this._isFilteringFromHeaderDisabled$ = signal(false, ...(ngDevMode ? [{ debugName: \"_isFilteringFromHeaderDisabled$\" }] : []));\n /** @hidden */\n this._isShownNavigationColumn$ = signal(false, ...(ngDevMode ? [{ debugName: \"_isShownNavigationColumn$\" }] : []));\n /** @hidden */\n this._semanticHighlightingColumnWidth$ = signal(0, ...(ngDevMode ? [{ debugName: \"_semanticHighlightingColumnWidth$\" }] : []));\n /** Visible columns stream. */\n this.visibleColumns$ = signal([], ...(ngDevMode ? [{ debugName: \"visibleColumns$\" }] : []));\n /** Visible columns length. */\n this.visibleColumnsLength = computed(() => this.visibleColumns$().length, ...(ngDevMode ? [{ debugName: \"visibleColumnsLength\" }] : []));\n /** Popping columns stream. */\n this.poppingColumns$ = signal([], ...(ngDevMode ? [{ debugName: \"poppingColumns$\" }] : []));\n /** Popping columns length. */\n this._poppingColumnsLength = 0;\n /** Table columns stream. */\n this.tableColumns$ = new BehaviorSubject([]);\n /** @hidden */\n this.tableStateChanges$ = this.tableState$.pipe(skip(1));\n /** Stream that emits when search state changes. */\n this.searchChange$ = new Subject();\n /** Stream that emits when sort state changes. */\n this.sortChange$ = new Subject();\n /** Stream that emits when filter state changes. */\n this.filterChange$ = new Subject();\n /** Stream that emits when group state changes. */\n this.groupChange$ = new Subject();\n /** Stream that emits when freeze state changes. */\n this.freezeChange$ = new Subject();\n /** Stream that emits when columns state changes. */\n this.columnsChange$ = new Subject();\n /** Stream that emits when page state changes. */\n this.pageChange$ = new Subject();\n /** Stream that emits when new fetch of data is needed. */\n this.needFetch$ = new Subject();\n /** @hidden */\n this.stateChange$ = new Subject();\n /** Stream that emits when loading state changes. */\n this.tableLoading$ = new BehaviorSubject(false);\n /** Listen for soft changes in table subcomponents (mostly table column) */\n this.markForCheck$ = new Subject();\n /** Listen for immediate changes in table subcomponents (mostly table column) */\n this.detectChanges$ = new Subject();\n /** Sort rules stream. */\n this.sortRules$ = signal(new Map(), ...(ngDevMode ? [{ debugName: \"sortRules$\" }] : []));\n /**\n * Filter Rules Map stream. Where key is column key, and value is the associated filter rules.\n * Many filters can be applied to one column.\n */\n this.filterRules$ = signal(new Map(), ...(ngDevMode ? [{ debugName: \"filterRules$\" }] : []));\n /**\n * Group Rules Map stream. Where key is column key and value is associated group rule\n */\n this.groupRulesSubject = new BehaviorSubject(new Map());\n /** Group Rules Map signal. */\n this.groupRules$ = toSignal(this.groupRulesSubject);\n }\n /** Get current state/settings of the Table. */\n getTableState() {\n return this.tableState$.getValue();\n }\n /** Set current state/settings of the Table. */\n setTableState(state) {\n this.tableState$.next(state);\n }\n /** Set current loading state of the Table. */\n setTableLoading(isLoading) {\n this.tableLoading$.next(isLoading);\n }\n /** Notify about changes in table subcomponents (mostly table column) and detect them on next detector check. */\n markForCheck() {\n this.markForCheck$.next();\n }\n /** Notify about changes in table subcomponents (mostly table column) and detect them immediately. */\n detectChanges() {\n this.detectChanges$.next();\n }\n /** Search */\n search(searchInput) {\n const prevState = this.getTableState();\n const state = { ...prevState, searchInput };\n this.setTableState(setCurrentPageToState(state, 1));\n const evt = { current: searchInput, previous: prevState.searchInput };\n this.needFetch$.next();\n this.stateChange$.next({ type: 'search', state: evt });\n this.searchChange$.next(evt);\n }\n /** Set new sort rules */\n setSort(sortRules) {\n const prevState = this.getTableState();\n const prevSortRules = (prevState && prevState.sortBy) || [];\n const newSortRules = sortRules ? [...sortRules] : [];\n const state = { ...prevState, sortBy: newSortRules };\n if (!equal(prevSortRules, state.sortBy)) {\n this.setTableState(setCurrentPageToState(state, 1));\n this.buildSortRulesMap();\n const evt = { current: state.sortBy, previous: prevSortRules };\n this.buildSortRulesMap();\n this.needFetch$.next();\n this.stateChange$.next({ type: 'sort', state: evt });\n this.sortChange$.next(evt);\n }\n }\n /** Add sort rules to the existing ones */\n addSort(sortRules) {\n const prevState = this.getTableState();\n const prevSortRules = (prevState && prevState.sortBy) || [];\n const newSortRules = [\n ...prevSortRules.filter((existing) => !sortRules.find(({ field }) => field === existing.field)),\n ...sortRules\n ];\n const state = { ...prevState, sortBy: newSortRules };\n if (!equal(prevSortRules, state.sortBy)) {\n this.setTableState(setCurrentPageToState(state, 1));\n const evt = { current: state.sortBy, previous: prevSortRules };\n this.buildSortRulesMap();\n this.needFetch$.next();\n this.stateChange$.next({ type: 'sort', state: evt });\n this.sortChange$.next(evt);\n }\n }\n /** Set new filter rules */\n setFilters(filterRules) {\n const prevState = this.getTableState();\n const prevFilterRules = (prevState && prevState.filterBy) || [];\n const newFilterRules = filterRules\n ? filterRules.map((rule) => ({\n ...rule,\n fieldName: this._getFieldName(rule.field, rule.fieldName)\n }))\n : [];\n const state = { ...prevState, filterBy: newFilterRules };\n if (!equal(prevFilterRules, state.filterBy)) {\n this.setTableState(setCurrentPageToState(state, 1));\n const evt = { current: state.filterBy, previous: prevFilterRules };\n this.buildFilterRulesMap();\n this.needFetch$.next();\n this.stateChange$.next({ type: 'filter', state: evt });\n this.filterChange$.next(evt);\n }\n }\n /** Add filter rules to the existing ones */\n addFilters(rulesToAdd) {\n const prevState = this.getTableState();\n const prevFilterRules = (prevState && prevState.filterBy) || [];\n const newFilterRules = [\n ...prevFilterRules.filter((existing) => !rulesToAdd.find(({ field }) => field === existing.field)),\n ...rulesToAdd.map((rule) => ({\n ...rule,\n fieldName: this._getFieldName(rule.field, rule.fieldName)\n }))\n ];\n const state = { ...prevState, filterBy: newFilterRules };\n if (!equal(prevFilterRules, state.filterBy)) {\n this.setTableState(setCurrentPageToState(state, 1));\n const evt = { current: state.filterBy, previous: prevFilterRules };\n this.buildFilterRulesMap();\n this.needFetch$.next();\n this.stateChange$.next({ type: 'filter', state: evt });\n this.filterChange$.next(evt);\n }\n }\n /** Removes filters for the provided fields */\n removeFilters(fields) {\n const prevState = this.getTableState();\n const prevFilterRules = (prevState && prevState.filterBy) || [];\n const newFilterRules = prevFilterRules.filter((existing) => !fields.includes(existing.field));\n const state = { ...prevState, filterBy: newFilterRules };\n this.setTableState(setCurrentPageToState(state, 1));\n const evt = { current: state.filterBy, previous: prevFilterRules };\n this.buildFilterRulesMap();\n this.needFetch$.next();\n this.stateChange$.next({ type: 'filter', state: evt });\n this.filterChange$.next(evt);\n }\n /** Set group rules */\n setGroups(groups) {\n const prevState = this.getTableState();\n const prevGroups = (prevState && prevState.groupBy) || [];\n const newGroups = groups ? [...groups] : [];\n const state = { ...prevState, groupBy: newGroups };\n if (!equal(prevGroups, state.groupBy)) {\n this.setTableState(state);\n const evt = { current: state.groupBy, previous: prevGroups };\n this.buildGroupRulesMap();\n this.stateChange$.next({ type: 'group', state: evt });\n this.groupChange$.next(evt);\n }\n }\n /** Add group rules to the existing ones */\n addGroups(groupsToAdd) {\n const prevState = this.getTableState();\n const prevGroups = (prevState && prevState.groupBy) || [];\n const newGroups = [\n ...prevGroups.filter((existing) => !groupsToAdd.find(({ field }) => field === existing.field)),\n ...groupsToAdd\n ];\n const state = { ...prevState, groupBy: newGroups };\n if (!equal(prevGroups, state.groupBy)) {\n this.setTableState(state);\n this.buildGroupRulesMap();\n const evt = { current: state.groupBy, previous: prevGroups };\n this.stateChange$.next({ type: 'group', state: evt });\n this.groupChange$.next(evt);\n }\n }\n /** Freeze table to column */\n freezeTo(columnName, end) {\n const prevState = this.getTableState();\n if (!end) {\n this.setTableState({ ...prevState, freezeToColumn: columnName });\n }\n else {\n this.setTableState({ ...prevState, freezeToEndColumn: columnName });\n }\n const evt = {\n current: columnName,\n previous: end ? prevState.freezeToEndColumn : prevState.freezeToColumn\n };\n this.stateChange$.next({ type: 'freeze', state: evt });\n this.freezeChange$.next(evt);\n }\n /** Set table columns */\n setColumns(columns, keys) {\n const prevState = this.getTableState();\n const prevColumns = (prevState && prevState.columns) || [];\n const newColumns = [...columns];\n const newColumnKeys = [...keys];\n const state = { ...prevState, columns: newColumns, columnKeys: newColumnKeys };\n if (!equal(prevColumns, state.columns)) {\n this.setTableState(state);\n const evt = { current: state.columns, previous: prevColumns };\n this.stateChange$.next({ type: 'columns', state: evt });\n this.columnsChange$.next(evt);\n }\n }\n /** Set page. */\n setCurrentPage(currentPage) {\n const prevState = this.getTableState();\n const prevPageState = prevState.page;\n if (prevPageState.currentPage === currentPage) {\n return;\n }\n const state = setCurrentPageToState(prevState, currentPage);\n this.setTableState(state);\n const evt = { current: state.page, previous: prevPageState };\n this.needFetch$.next();\n this.stateChange$.next({ type: 'page', state: evt });\n this.pageChange$.next(evt);\n }\n /** Set items per page. */\n setItemsPerPage(itemsPerPage, resetPageNumber = true) {\n const prevState = this.getTableState();\n const prevPageState = prevState.page;\n if (prevPageState.pageSize === itemsPerPage) {\n return;\n }\n let state = setPageSizeToState(prevState, itemsPerPage);\n if (resetPageNumber) {\n state = setCurrentPageToState(state, 1);\n }\n this.setTableState(state);\n const evt = { current: state.page, previous: prevPageState };\n this.needFetch$.next();\n this.stateChange$.next({ type: 'page', state: evt });\n this.pageChange$.next(evt);\n }\n /** Returns default table state. */\n getDefaultState() {\n const tableState = this.getTableState();\n return {\n columnKeys: tableState.columnKeys,\n sortBy: [],\n filterBy: [],\n groupBy: [],\n columns: tableState.columns,\n searchInput: {\n category: null,\n text: ''\n },\n freezeToColumn: null,\n freezeToEndColumn: null,\n page: {\n pageSize: 0,\n currentPage: 1\n },\n scrollTopPosition: 0\n };\n }\n /**\n * Shares visible columns array across listeners.\n * @param columns Visible columns to share.\n */\n setVisibleColumns(columns) {\n this.visibleColumns$.set(columns);\n }\n /**\n * Shares popping columns array across listeners.\n * @param columns Popping columns to share.\n */\n setPoppingColumns(columns) {\n this.poppingColumns$.set(columns);\n this._poppingColumnsLength = columns.length;\n }\n /**\n * Constructs grouping rules based on the table state.\n * @param state Table state.\n */\n buildGroupRulesMap(state = this.getTableState()) {\n const groupMap = new Map(state.groupBy.map((rule) => [rule.field, rule]));\n this.groupRulesSubject.next(groupMap);\n }\n /**\n * Constructs sorting rules based on the table state.\n * @param state Table state\n */\n buildSortRulesMap(state = this.getTableState()) {\n this.sortRules$.set(new Map(state.sortBy.filter((rule) => rule.field).map((rule) => [rule.field, rule])));\n }\n /**\n * Constructs filter rules based on the table state.\n * @param state Table state.\n */\n buildFilterRulesMap(state = this.getTableState()) {\n const filterRulesWithFieldNames = state.filterBy.map((rule) => ({\n ...rule,\n fieldName: this._getFieldName(rule.field, rule.fieldName)\n }));\n this.filterRules$.set(filterRulesWithFieldNames.reduce((hash, rule) => {\n const key = rule.field;\n if (!hash.has(key)) {\n hash.set(key, []);\n }\n hash.get(key)?.push(rule);\n return hash;\n }, new Map()));\n const evt = { current: filterRulesWithFieldNames, previous: state.filterBy };\n this.stateChange$.next({ type: 'filter', state: evt });\n }\n /** Reset all filter rules */\n resetFilters() {\n const prevState = this.getTableState();\n const prevFilterRules = (prevState && prevState.filterBy) || [];\n const newFilterRules = [];\n const state = { ...prevState, filterBy: newFilterRules };\n if (!equal(prevFilterRules, state.filterBy)) {\n this.setTableState(setCurrentPageToState(state, 1));\n const evt = { current: state.filterBy, previous: prevFilterRules };\n this.buildFilterRulesMap();\n this.needFetch$.next();\n this.stateChange$.next({ type: 'filter', state: evt });\n this.filterChange$.next(evt);\n }\n }\n /**\n * Constructs base table config.\n */\n constructTableMetadata() {\n this.buildGroupRulesMap();\n this.buildSortRulesMap();\n this.buildFilterRulesMap();\n }\n /** @hidden */\n _getFieldName(field, fieldName) {\n const column = this.tableColumns$.getValue().find((col) => col.key === field);\n return column ? column.name : (fieldName ?? field);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableService, decorators: [{\n type: Injectable\n }] });\n/** @hidden */\nfunction setCurrentPageToState(state, currentPage) {\n const newPageState = { ...state.page, currentPage };\n return { ...state, page: newPageState };\n}\n/** @hidden */\nfunction setPageSizeToState(state, pageSize) {\n const newPageState = { ...state.page, pageSize };\n return { ...state, page: newPageState };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9zZXJ2aWNlcy90YWJsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEtBQUssTUFBTSxpQkFBaUIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRW5ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFnQ3RELE1BQU0sT0FBTyxZQUFZO0lBRHpCO1FBRUksMEJBQTBCO1FBQ2pCLGdCQUFXLEdBQUcsSUFBSSxlQUFlLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNoRSxjQUFjO1FBQ0wsMkJBQXNCLEdBQUcsTUFBTSxDQUFDLEVBQUUsa0VBQUMsQ0FBQztRQUM3QyxjQUFjO1FBQ0wsb0NBQStCLEdBQUcsTUFBTSxDQUFDLEtBQUssMkVBQUMsQ0FBQztRQUN6RCxjQUFjO1FBQ0wsOEJBQXlCLEdBQUcsTUFBTSxDQUFDLEtBQUsscUVBQUMsQ0FBQztRQUNuRCxjQUFjO1FBQ0wsc0NBQWlDLEdBQUcsTUFBTSxDQUFDLENBQUMsNkVBQUMsQ0FBQztRQUN2RCw4QkFBOEI7UUFDckIsb0JBQWUsR0FBRyxNQUFNLENBQWdCLEVBQUUsMkRBQUMsQ0FBQztRQUNyRCw4QkFBOEI7UUFDOUIseUJBQW9CLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxNQUFNLGdFQUFDLENBQUM7UUFD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U0FBUyxxQkFBcUIsQ0FBQyxLQUFpQixFQUFFLFdBQW1CO0lBQ2pFLE1BQU0sWUFBWSxHQUFtQixFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNwRSxPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFDO0FBQzVDLENBQUM7QUFFRCxjQUFjO0FBQ2QsU0FBUyxrQkFBa0IsQ0FBQyxLQUFpQixFQUFFLFFBQWdCO0lBQzNELE1BQU0sWUFBWSxHQUFtQixFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQztJQUNqRSxPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFDO0FBQzVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBjb21wdXRlZCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZWFyY2hJbnB1dCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2VhcmNoLWZpZWxkJztcbmltcG9ydCBlcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBza2lwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgREVGQVVMVF9UQUJMRV9TVEFURSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uRmlsdGVyLCBDb2xsZWN0aW9uR3JvdXAsIENvbGxlY3Rpb25QYWdlLCBDb2xsZWN0aW9uU29ydCwgVGFibGVTdGF0ZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtcbiAgICBDb2x1bW5zQ2hhbmdlLFxuICAgIEZpbHRlckNoYW5nZSxcbiAgICBGcmVlemVDaGFuZ2UsXG4gICAgR3JvdXBDaGFuZ2UsXG4gICAgUGFnZUNoYW5nZSxcbiAgICBTZWFyY2hDaGFuZ2UsXG4gICAgU29ydENoYW5nZVxufSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgVGFibGVDb2x1bW4gfSBmcm9tICcuLi90YWJsZS1jb2x1bW4nO1xuXG5leHBvcnQgdHlwZSBUYWJsZVN0YXRlQ2hhbmdlID1cbiAgICB8IFRhYmxlU3RhdGVQcm9wZXJ0eTwnc29ydCcsIFNvcnRDaGFuZ2U+XG4gICAgfCBUYWJsZVN0YXRlUHJvcGVydHk8J3BhZ2UnLCBQYWdlQ2hhbmdlPlxuICAgIHwgVGFibGVTdGF0ZVByb3BlcnR5PCdmaWx0ZXInLCBGaWx0ZXJDaGFuZ2U+XG4gICAgfCBUYWJsZVN0YXRlUHJvcGVydHk8J2dyb3VwJywgR3JvdXBDaGFuZ2U+XG4gICAgfCBUYWJsZVN0YXRlUHJvcGVydHk8J2ZyZWV6ZScsIEZyZWV6ZUNoYW5nZT5cbiAgICB8IFRhYmxlU3RhdGVQcm9wZXJ0eTwnY29sdW1ucycsIENvbHVtbnNDaGFuZ2U+XG4gICAgfCBUYWJsZVN0YXRlUHJvcGVydHk8J3NlYXJjaCcsIFNlYXJjaENoYW5nZT47XG5cbmV4cG9ydCB0eXBlIFRhYmxlU3RhdGVQcm9wZXJ0eTxcbiAgICBUID0gJ3NvcnQnIHwgJ3BhZ2UnIHwgJ2ZpbHRlcicgfCAnZ3JvdXAnIHwgJ2ZyZWV6ZScgfCAnY29sdW1ucycgfCAnc2VhcmNoJyxcbiAgICBQID0gU29ydENoYW5nZSB8IFBhZ2VDaGFuZ2UgfCBGaWx0ZXJDaGFuZ2UgfCBHcm91cENoYW5nZSB8IEZyZWV6ZUNoYW5nZSB8IENvbHVtbnNDaGFuZ2Vcbj4gPSB7XG4gICAgdHlwZTogVDtcbiAgICBzdGF0ZTogUDtcbn07XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUYWJsZVNlcnZpY2Uge1xuICAgIC8qKiBUYWJsZSBzdGF0ZSBzdHJlYW0uICovXG4gICAgcmVhZG9ubHkgdGFibGVTdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KERFRkFVTFRfVEFCTEVfU1RBVEUpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX3NlbWFudGljSGlnaGxpZ2h0aW5nJCA9IHNpZ25hbCgnJyk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBfaXNGaWx0ZXJpbmdGcm9tSGVhZGVyRGlzYWJsZWQkID0gc2lnbmFsKGZhbHNlKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IF9pc1Nob3duTmF2aWdhdGlvbkNvbHVtbiQgPSBzaWduYWwoZmFsc2UpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX3NlbWFudGljSGlnaGxpZ2h0aW5nQ29sdW1uV2lkdGgkID0gc2lnbmFsKDApO1xuICAgIC8qKiBWaXNpYmxlIGNvbHVtbnMgc3RyZWFtLiAqL1xuICAgIHJlYWRvbmx5IHZpc2libGVDb2x1bW5zJCA9IHNpZ25hbDxUYWJsZUNvbHVtbltdPihbXSk7XG4gICAgLyoqIFZpc2libGUgY29sdW1ucyBsZW5ndGguICovXG4gICAgdmlzaWJsZUNvbHVtbnNMZW5ndGggPSBjb21wdXRlZCgoKSA9PiB0aGlzLnZpc2libGVDb2x1bW5zJCgpLmxlbmd0aCk7XG4gICAgLyoqIFBvcHBpbmcgY29sdW1ucyBzdHJlYW0uICovXG4gICAgcmVhZG9ubHkgcG9wcGluZ0NvbHVtbnMkID0gc2lnbmFsPFRhYmxlQ29sdW1uW10+KFtdKTtcbiAgICAvKiogUG9wcGluZyBjb2x1bW5zIGxlbmd0aC4gKi9cbiAgICBfcG9wcGluZ0NvbHVtbnNMZW5ndGggPSAwO1xuICAgIC8qKiBUYWJsZSBjb2x1bW5zIHN0cmVhbS4gKi9cbiAgICByZWFkb25seSB0YWJsZUNvbHVtbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUYWJsZUNvbHVtbltdPihbXSk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSB0YWJsZVN0YXRlQ2hhbmdlcyQgPSB0aGlzLnRhYmxlU3RhdGUkLnBpcGUoc2tpcCgxKSk7XG4gICAgLyoqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW4gc2VhcmNoIHN0YXRlIGNoYW5nZXMuICovXG4gICAgcmVhZG9ubHkgc2VhcmNoQ2hhbmdlJCA9IG5ldyBTdWJqZWN0PFNlYXJjaENoYW5nZT4oKTtcbiAgICAvKiogU3RyZWFtIHRoYXQgZW1pdHMgd2hlbiBzb3J0IHN0YXRlIGNoYW5nZXMuICovXG4gICAgcmVhZG9ubHkgc29ydENoYW5nZSQgPSBuZXcgU3ViamVjdDxTb3J0Q2hhbmdlPigpO1xuICAgIC8qKiBTdHJlYW0gdGhhdCBlbWl0cyB3aGVuIGZpbHRlciBzdGF0ZSBjaGFuZ2VzLiAqL1xuICAgIHJlYWRvbmx5IGZpbHRlckNoYW5nZSQgPSBuZXcgU3ViamVjdDxGaWx0ZXJDaGFuZ2U+KCk7XG4gICAgLyoqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW4gZ3JvdXAgc3RhdGUgY2hhbmdlcy4gKi9cbiAgICByZWFkb25seSBncm91cENoYW5nZSQgPSBuZXcgU3ViamVjdDxHcm91cENoYW5nZT4oKTtcbiAgICAvKiogU3RyZWFtIHRoYXQgZW1pdHMgd2hlbiBmcmVlemUgc3RhdGUgY2hhbmdlcy4gKi9cbiAgICByZWFkb25seSBmcmVlemVDaGFuZ2UkID0gbmV3IFN1YmplY3Q8RnJlZXplQ2hhbmdlPigpO1xuICAgIC8qKiBTdHJlYW0gdGhhdCBlbWl0cyB3aGVuIGNvbHVtbnMgc3RhdGUgY2hhbmdlcy4gKi9cbiAgICByZWFkb25seSBjb2x1bW5zQ2hhbmdlJCA9IG5ldyBTdWJqZWN0PENvbHVtbnNDaGFuZ2U+KCk7XG4gICAgLyoqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW4gcGFnZSBzdGF0ZSBjaGFuZ2VzLiAqL1xuICAgIHJlYWRvbmx5IHBhZ2VDaGFuZ2UkID0gbmV3IFN1YmplY3Q8UGFnZUNoYW5nZT4oKTtcbiAgICAvKiogU3RyZWFtIHRoYXQgZW1pdHMgd2hlbiBuZXcgZmV0Y2ggb2YgZGF0YSBpcyBuZWVkZWQuICovXG4gICAgcmVhZG9ubHkgbmVlZEZldGNoJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBzdGF0ZUNoYW5nZSQgPSBuZXcgU3ViamVjdDxUYWJsZVN0YXRlQ2hhbmdlPigpO1xuICAgIC8qKiBTdHJlYW0gdGhhdCBlbWl0cyB3aGVuIGxvYWRpbmcgc3RhdGUgY2hhbmdlcy4gKi9cbiAgICByZWFkb25seSB0YWJsZUxvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgLyoqIExpc3RlbiBmb3Igc29mdCBjaGFuZ2VzIGluIHRhYmxlIHN1YmNvbXBvbmVudHMgKG1vc3RseSB0YWJsZSBjb2x1bW4pICovXG4gICAgcmVhZG9ubHkgbWFya0ZvckNoZWNrJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgLyoqIExpc3RlbiBmb3IgaW1tZWRpYXRlIGNoYW5nZXMgaW4gdGFibGUgc3ViY29tcG9uZW50cyAobW9zdGx5IHRhYmxlIGNvbHVtbikgKi9cbiAgICByZWFkb25seSBkZXRlY3RDaGFuZ2VzJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgLyoqIFNvcnQgcnVsZXMgc3RyZWFtLiAqL1xuICAgIHJlYWRvbmx5IHNvcnRSdWxlcyQgPSBzaWduYWw8TWFwPHN0cmluZywgQ29sbGVjdGlvblNvcnQ+PihuZXcgTWFwKCkpO1xuICAgIC8qKlxuICAgICAqIEZpbHRlciBSdWxlcyBNYXAgc3RyZWFtLiBXaGVyZSBrZXkgaXMgY29sdW1uIGtleSwgYW5kIHZhbHVlIGlzIHRoZSBhc3NvY2lhdGVkIGZpbHRlciBydWxlcy5cbiAgICAgKiBNYW55IGZpbHRlcnMgY2FuIGJlIGFwcGxpZWQgdG8gb25lIGNvbHVtbi5cbiAgICAgKi9cbiAgICByZWFkb25seSBmaWx0ZXJSdWxlcyQgPSBzaWduYWw8TWFwPHN0cmluZywgQ29sbGVjdGlvbkZpbHRlcltdPj4obmV3IE1hcCgpKTtcblxuICAgIC8qKlxuICAgICAqIEdyb3VwIFJ1bGVzIE1hcCBzdHJlYW0uIFdoZXJlIGtleSBpcyBjb2x1bW4ga2V5IGFuZCB2YWx1ZSBpcyBhc3NvY2lhdGVkIGdyb3VwIHJ1bGVcbiAgICAgKi9cbiAgICByZWFkb25seSBncm91cFJ1bGVzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFwPHN0cmluZywgQ29sbGVjdGlvbkdyb3VwPj4obmV3IE1hcCgpKTtcblxuICAgIC8qKiBHcm91cCBSdWxlcyBNYXAgc2lnbmFsLiAqL1xuICAgIHJlYWRvbmx5IGdyb3VwUnVsZXMkID0gdG9TaWduYWwodGhpcy5ncm91cFJ1bGVzU3ViamVjdCk7XG5cbiAgICAvKiogR2V0IGN1cnJlbnQgc3RhdGUvc2V0dGluZ3Mgb2YgdGhlIFRhYmxlLiAqL1xuICAgIGdldFRhYmxlU3RhdGUoKTogVGFibGVTdGF0ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYmxlU3RhdGUkLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqIFNldCBjdXJyZW50IHN0YXRlL3NldHRpbmdzIG9mIHRoZSBUYWJsZS4gKi9cbiAgICBzZXRUYWJsZVN0YXRlKHN0YXRlOiBUYWJsZVN0YXRlKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGFibGVTdGF0ZSQubmV4dChzdGF0ZSk7XG4gICAgfVxuXG4gICAgLyoqIFNldCBjdXJyZW50IGxvYWRpbmcgc3RhdGUgb2YgdGhlIFRhYmxlLiAqL1xuICAgIHNldFRhYmxlTG9hZGluZyhpc0xvYWRpbmc6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy50YWJsZUxvYWRpbmckLm5leHQoaXNMb2FkaW5nKTtcbiAgICB9XG5cbiAgICAvKiogTm90aWZ5IGFib3V0IGNoYW5nZXMgaW4gdGFibGUgc3ViY29tcG9uZW50cyAobW9zdGx5IHRhYmxlIGNvbHVtbikgYW5kIGRldGVjdCB0aGVtIG9uIG5leHQgZGV0ZWN0b3IgY2hlY2suICovXG4gICAgbWFya0ZvckNoZWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1hcmtGb3JDaGVjayQubmV4dCgpO1xuICAgIH1cblxuICAgIC8qKiBOb3RpZnkgYWJvdXQgY2hhbmdlcyBpbiB0YWJsZSBzdWJjb21wb25lbnRzIChtb3N0bHkgdGFibGUgY29sdW1uKSBhbmQgZGV0ZWN0IHRoZW0gaW1tZWRpYXRlbHkuICovXG4gICAgZGV0ZWN0Q2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXRlY3RDaGFuZ2VzJC5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqIFNlYXJjaCAqL1xuICAgIHNlYXJjaChzZWFyY2hJbnB1dDogU2VhcmNoSW5wdXQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy5nZXRUYWJsZVN0YXRlKCk7XG5cbiAgICAgICAgY29uc3Qgc3RhdGU6IFRhYmxlU3RhdGUgPSB7IC4uLnByZXZTdGF0ZSwgc2VhcmNoSW5wdXQgfTtcblxuICAgICAgICB0aGlzLnNldFRhYmxlU3RhdGUoc2V0Q3VycmVudFBhZ2VUb1N0YXRlKHN0YXRlLCAxKSk7XG5cbiAgICAgICAgY29uc3QgZXZ0ID0geyBjdXJyZW50OiBzZWFyY2hJbnB1dCwgcHJldmlvdXM6IHByZXZTdGF0ZS5zZWFyY2hJbnB1dCB9O1xuXG4gICAgICAgIHRoaXMubmVlZEZldGNoJC5uZXh0KCk7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2UkLm5leHQoeyB0eXBlOiAnc2VhcmNoJywgc3RhdGU6IGV2dCB9KTtcbiAgICAgICAgdGhpcy5zZWFyY2hDaGFuZ2UkLm5leHQoZXZ0KTtcbiAgICB9XG5cbiAgICAvKiogU2V0IG5ldyBzb3J0IHJ1bGVzICovXG4gICAgc2V0U29ydChzb3J0UnVsZXM6IENvbGxlY3Rpb25Tb3J0W10gfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy5nZXRUYWJsZVN0YXRlKCk7XG4gICAgICAgIGNvbnN0IHByZXZTb3J0UnVsZXMgPSAocHJldlN0YXRlICYmIHByZXZTdGF0ZS5zb3J0QnkpIHx8IFtdO1xuXG4gICAgICAgIGNvbnN0IG5ld1NvcnRSdWxlczogQ29sbGVjdGlvblNvcnRbXSA9IHNvcnRSdWxlcyA/IFsuLi5zb3J0UnVsZXNdIDogW107XG5cbiAgICAgICAgY29uc3Qgc3RhdGU6IFRhYmxlU3RhdGUgPSB7IC4uLnByZXZTdGF0ZSwgc29ydEJ5OiBuZXdTb3J0UnVsZXMgfTtcblxuICAgICAgICBpZiAoIWVxdWFsKHByZXZTb3J0UnVsZXMsIHN0YXRlLnNvcnRCeSkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VGFibGVTdGF0ZShzZXRDdXJyZW50UGFnZVRvU3RhdGUoc3RhdGUsIDEpKTtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRTb3J0UnVsZXNNYXAoKTtcbiAgICAgICAgICAgIGNvbnN0IGV2dCA9IHsgY3VycmVudDogc3RhdGUuc29ydEJ5LCBwcmV2aW91czogcHJldlNvcnRSdWxlcyB9O1xuICAgICAgICAgICAgdGhpcy5idWlsZFNvcnRSdWxlc01hcCgpO1xuXG4gICAgICAgICAgICB0aGlzLm5lZWRGZXRjaCQubmV4dCgpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZSQubmV4dCh7IHR5cGU6ICdzb3J0Jywgc3RhdGU6IGV2dCB9KTtcbiAgICAgICAgICAgIHRoaXMuc29ydENoYW5nZSQubmV4dChldnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEFkZCBzb3J0IHJ1bGVzIHRvIHRoZSBleGlzdGluZyBvbmVzICovXG4gICAgYWRkU29ydChzb3J0UnVsZXM6IENvbGxlY3Rpb25Tb3J0W10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy5nZXRUYWJsZVN0YXRlKCk7XG4gICAgICAgIGNvbnN0IHByZXZTb3J0UnVsZXMgPSAocHJldlN0YXRlICYmIHByZXZTdGF0ZS5zb3J0QnkpIHx8IFtdO1xuXG4gICAgICAgIGNvbnN0IG5ld1NvcnRSdWxlczogQ29sbGVjdGlvblNvcnRbXSA9IFtcbiAgICAgICAgICAgIC4uLnByZXZTb3J0UnVsZXMuZmlsdGVyKChleGlzdGluZykgPT4gIXNvcnRSdWxlcy5maW5kKCh7IGZpZWxkIH0pID0+IGZpZWxkID09PSBleGlzdGluZy5maWVsZCkpLFxuICAgICAgICAgICAgLi4uc29ydFJ1bGVzXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3Qgc3RhdGU6IFRhYmxlU3RhdGUgPSB7IC4uLnByZXZTdGF0ZSwgc29ydEJ5OiBuZXdTb3J0UnVsZXMgfTtcblxuICAgICAgICBpZiAoIWVxdWFsKHByZXZTb3J0UnVsZXMsIHN0YXRlLnNvcnRCeSkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VGFibGVTdGF0ZShzZXRDdXJyZW50UGFnZVRvU3RhdGUoc3RhdGUsIDEpKTtcbiAgICAgICAgICAgIGNvbnN0IGV2dCA9IHsgY3VycmVudDogc3RhdGUuc29ydEJ5LCBwcmV2aW91czogcHJldlNvcnRSdWxlcyB9O1xuICAgICAgICAgICAgdGhpcy5idWlsZFNvcnRSdWxlc01hcCgpO1xuXG4gICAgICAgICAgICB0aGlzLm5lZWRGZXRjaCQubmV4dCgpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZSQubmV4dCh7IHR5cGU6ICdzb3J0Jywgc3RhdGU6IGV2dCB9KTtcbiAgICAgICAgICAgIHRoaXMuc29ydENoYW5nZSQubmV4dChldnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFNldCBuZXcgZmlsdGVyIHJ1bGVzICovXG4gICAgc2V0RmlsdGVycyhmaWx0ZXJSdWxlczogQ29sbGVjdGlvbkZpbHRlcltdIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHByZXZTdGF0ZSA9IHRoaXMuZ2V0VGFibGVTdGF0ZSgpO1xuICAgICAgICBjb25zdCBwcmV2RmlsdGVyUnVsZXMgPSAocHJldlN0YXRlICYmIHByZXZTdGF0ZS5maWx0ZXJCeSkgfHwgW107XG5cbiAgICAgICAgY29uc3QgbmV3RmlsdGVyUnVsZXM6IENvbGxlY3Rpb25GaWx0ZXJbXSA9IGZpbHRlclJ1bGVzXG4gICAgICAgICAgICA/IGZpbHRlclJ1bGVzLm1hcCgocnVsZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgIC4uLnJ1bGUsXG4gICAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IHRoaXMuX2dldEZpZWxkTmFtZShydWxlLmZpZWxkLCBydWxlLmZpZWxkTmFtZSlcbiAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICA6IFtdO1xuICAgICAgICBjb25zdCBzdGF0ZTogVGFibGVTdGF0ZSA9IHsgLi4ucHJldlN0YXRlLCBmaWx0ZXJCeTogbmV3RmlsdGVyUnVsZXMgfTtcblxuICAgICAgICBpZiAoIWVxdWFsKHByZXZGaWx0ZXJSdWxlcywgc3RhdGUuZmlsdGVyQnkpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFRhYmxlU3RhdGUoc2V0Q3VycmVudFBhZ2VUb1N0YXRlKHN0YXRlLCAxKSk7XG4gICAgICAgICAgICBjb25zdCBldnQgPSB7IGN1cnJlbnQ6IHN0YXRlLmZpbHRlckJ5LCBwcmV2aW91czogcHJldkZpbHRlclJ1bGVzIH07XG5cbiAgICAgICAgICAgIHRoaXMuYnVpbGRGaWx0ZXJSdWxlc01hcCgpO1xuICAgICAgICAgICAgdGhpcy5uZWVkRmV0Y2gkLm5leHQoKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2UkLm5leHQoeyB0eXBlOiAnZmlsdGVyJywgc3RhdGU6IGV2dCB9KTtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyQ2hhbmdlJC5uZXh0KGV2dCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQWRkIGZpbHRlciBydWxlcyB0byB0aGUgZXhpc3Rpbmcgb25lcyAqL1xuICAgIGFkZEZpbHRlcnMocnVsZXNUb0FkZDogQ29sbGVjdGlvbkZpbHRlcltdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHByZXZTdGF0ZSA9IHRoaXMuZ2V0VGFibGVTdGF0ZSgpO1xuICAgICAgICBjb25zdCBwcmV2RmlsdGVyUnVsZXMgPSAocHJldlN0YXRlICYmIHByZXZTdGF0ZS5maWx0ZXJCeSkgfHwgW107XG5cbiAgICAgICAgY29uc3QgbmV3RmlsdGVyUnVsZXM6IENvbGxlY3Rpb25GaWx0ZXJbXSA9IFtcbiAgICAgICAgICAgIC4uLnByZXZGaWx0ZXJSdWxlcy5maWx0ZXIoKGV4aXN0aW5nKSA9PiAhcnVsZXNUb0FkZC5maW5kKCh7IGZpZWxkIH0pID0+IGZpZWxkID09PSBleGlzdGluZy5maWVsZCkpLFxuICAgICAgICAgICAgLi4ucnVsZXNUb0FkZC5tYXAoKHJ1bGUpID0+ICh7XG4gICAgICAgICAgICAgICAgLi4ucnVsZSxcbiAgICAgICAgICAgICAgICBmaWVsZE5hbWU6IHRoaXMuX2dldEZpZWxkTmFtZShydWxlLmZpZWxkLCBydWxlLmZpZWxkTmFtZSlcbiAgICAgICAgICAgIH0pKVxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IHN0YXRlOiBUYWJsZVN0YXRlID0geyAuLi5wcmV2U3RhdGUsIGZpbHRlckJ5OiBuZXdGaWx0ZXJSdWxlcyB9O1xuXG4gICAgICAgIGlmICghZXF1YWwocHJldkZpbHRlclJ1bGVzLCBzdGF0ZS5maWx0ZXJCeSkpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VGFibGVTdGF0ZShzZXRDdXJyZW50UGFnZVRvU3RhdGUoc3RhdGUsIDEpKTtcbiAgICAgICAgICAgIGNvbnN0IGV2dCA9IHsgY3VycmVudDogc3RhdGUuZmlsdGVyQnksIHByZXZpb3VzOiBwcmV2RmlsdGVyUnVsZXMgfTtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRGaWx0ZXJSdWxlc01hcCgpO1xuXG4gICAgICAgICAgICB0aGlzLm5lZWRGZXRjaCQubmV4dCgpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZSQubmV4dCh7IHR5cGU6ICdmaWx0ZXInLCBzdGF0ZTogZXZ0IH0pO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJDaGFuZ2UkLm5leHQoZXZ0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBSZW1vdmVzIGZpbHRlcnMgZm9yIHRoZSBwcm92aWRlZCBmaWVsZHMgKi9cbiAgICByZW1vdmVGaWx0ZXJzKGZpZWxkczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy5nZXRUYWJsZVN0YXRlKCk7XG4gICAgICAgIGNvbnN0IHByZXZGaWx0ZXJSdWxlcyA9IChwcmV2U3RhdGUgJiYgcHJldlN0YXRlLmZpbHRlckJ5KSB8fCBbXTtcblxuICAgICAgICBjb25zdCBuZXdGaWx0ZXJSdWxlczogQ29sbGVjdGlvbkZpbHRlcltdID0gcHJldkZpbHRlclJ1bGVzLmZpbHRlcihcbiAgICAgICAgICAgIChleGlzdGluZykgPT4gIWZpZWxkcy5pbmNsdWRlcyhleGlzdGluZy5maWVsZClcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBzdGF0ZTogVGFibGVTdGF0ZSA9IHsgLi4ucHJldlN0YXRlLCBmaWx0ZXJCeTogbmV3RmlsdGVyUnVsZXMgfTtcblxuICAgICAgICB0aGlzLnNldFRhYmxlU3RhdGUoc2V0Q3VycmVudFBhZ2VUb1N0YXRlKHN0YXRlLCAxKSk7XG4gICAgICAgIGNvbnN0IGV2dCA9IHsgY3VycmVudDogc3RhdGUuZmlsdGVyQnksIHByZXZpb3VzOiBwcmV2RmlsdGVyUnVsZXMgfTtcbiAgICAgICAgdGhpcy5idWlsZEZpbHRlclJ1bGVzTWFwKCk7XG5cbiAgICAgICAgdGhpcy5uZWVkRmV0Y2gkLm5leHQoKTtcbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZSQubmV4dCh7IHR5cGU6ICdmaWx0ZXInLCBzdGF0ZTogZXZ0IH0pO1xuICAgICAgICB0aGlzLmZpbHRlckNoYW5nZSQubmV4dChldnQpO1xuICAgIH1cblxuICAgIC8qKiBTZXQgZ3JvdXAgcnVsZXMgKi9cbiAgICBzZXRHcm91cHMoZ3JvdXBzOiBDb2xsZWN0aW9uR3JvdXBbXSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLmdldFRhYmxlU3RhdGUoKTtcbiAgICAgICAgY29uc3QgcHJldkdyb3VwcyA9IChwcmV2U3RhdGUgJiYgcHJldlN0YXRlLmdyb3VwQnkpIHx8IFtdO1xuXG4gICAgICAgIGNvbnN0IG5ld0dyb3VwczogQ29sbGVjdGlvbkdyb3VwW10gPSBncm91cHMgPyBbLi4uZ3JvdXBzXSA6IFtdO1xuICAgICAgICBjb25zdCBzdGF0ZTogVGFibGVTdGF0ZSA9IHsgLi4ucHJldlN0YXRlLCBncm91cEJ5OiBuZXdHcm91cHMgfTtcblxuICAgICAgICBpZiAoIWVxdWFsKHByZXZHcm91cHMsIHN0YXRlLmdyb3VwQnkpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFRhYmxlU3RhdGUoc3RhdGUpO1xuICAgICAgICAgICAgY29uc3QgZXZ0ID0geyBjdXJyZW50OiBzdGF0ZS5ncm91cEJ5LCBwcmV2aW91czogcHJldkdyb3VwcyB9O1xuICAgICAgICAgICAgdGhpcy5idWlsZEdyb3VwUnVsZXNNYXAoKTtcblxuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZSQubmV4dCh7IHR5cGU6ICdncm91cCcsIHN0YXRlOiBldnQgfSk7XG4gICAgICAgICAgICB0aGlzLmdyb3VwQ2hhbmdlJC5uZXh0KGV2dCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQWRkIGdyb3VwIHJ1bGVzIHRvIHRoZSBleGlzdGluZyBvbmVzICovXG4gICAgYWRkR3JvdXBzKGdyb3Vwc1RvQWRkOiBDb2xsZWN0aW9uR3JvdXBbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLmdldFRhYmxlU3RhdGUoKTtcbiAgICAgICAgY29uc3QgcHJldkdyb3VwcyA9IChwcmV2U3RhdGUgJiYgcHJldlN0YXRlLmdyb3VwQnkpIHx8IFtdO1xuXG4gICAgICAgIGNvbnN0IG5ld0dyb3VwczogQ29sbGVjdGlvbkdyb3VwW10gPSBbXG4gICAgICAgICAgICAuLi5wcmV2R3JvdXBzLmZpbHRlcigoZXhpc3RpbmcpID0+ICFncm91cHNUb0FkZC5maW5kKCh7IGZpZWxkIH0pID0+IGZpZWxkID09PSBleGlzdGluZy5maWVsZCkpLFxuICAgICAgICAgICAgLi4uZ3JvdXBzVG9BZGRcbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBzdGF0ZTogVGFibGVTdGF0ZSA9IHsgLi4ucHJldlN0YXRlLCBncm91cEJ5OiBuZXdHcm91cHMgfTtcblxuICAgICAgICBpZiAoIWVxdWFsKHByZXZHcm91cHMsIHN0YXRlLmdyb3VwQnkpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFRhYmxlU3RhdGUoc3RhdGUpO1xuICAgICAgICAgICAgdGhpcy5idWlsZEdyb3VwUnVsZXNNYXAoKTtcblxuICAgICAgICAgICAgY29uc3QgZXZ0ID0geyBjdXJyZW50OiBzdGF0ZS5ncm91cEJ5LCBwcmV2aW91czogcHJldkdyb3VwcyB9O1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZSQubmV4dCh7IHR5cGU6ICdncm91cCcsIHN0YXRlOiBldnQgfSk7XG4gICAgICAgICAgICB0aGlzLmdyb3VwQ2hhbmdlJC5uZXh0KGV2dCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogRnJlZXplIHRhYmxlIHRvIGNvbHVtbiAqL1xuICAgIGZyZWV6ZVRvKGNvbHVtbk5hbWU6IHN0cmluZyB8IG51bGwsIGVuZD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy5nZXRUYWJsZVN0YXRlKCk7XG5cbiAgICAgICAgaWYgKCFlbmQpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VGFibGVTdGF0ZSh7IC4uLnByZXZTdGF0ZSwgZnJlZXplVG9Db2x1bW46IGNvbHVtbk5hbWUgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldFRhYmxlU3RhdGUoeyAuLi5wcmV2U3RhdGUsIGZyZWV6ZVRvRW5kQ29sdW1uOiBjb2x1bW5OYW1lIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXZ0ID0ge1xuICAgICAgICAgICAgY3VycmVudDogY29sdW1uTmFtZSxcbiAgICAgICAgICAgIHByZXZpb3VzOiBlbmQgPyBwcmV2U3RhdGUuZnJlZXplVG9FbmRDb2x1bW4gOiBwcmV2U3RhdGUuZnJlZXplVG9Db2x1bW5cbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlJC5uZXh0KHsgdHlwZTogJ2ZyZWV6ZScsIHN0YXRlOiBldnQgfSk7XG4gICAgICAgIHRoaXMuZnJlZXplQ2hhbmdlJC5uZXh0KGV2dCk7XG4gICAgfVxuXG4gICAgLyoqIFNldCB0YWJsZSBjb2x1bW5zICovXG4gICAgc2V0Q29sdW1ucyhjb2x1bW5zOiBzdHJpbmdbXSwga2V5czogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy5nZXRUYWJsZVN0YXRlKCk7XG4gICAgICAgIGNvbnN0IHByZXZDb2x1bW5zID0gKHByZXZTdGF0ZSAmJiBwcmV2U3RhdGUuY29sdW1ucykgfHwgW107XG5cbiAgICAgICAgY29uc3QgbmV3Q29sdW1ucyA9IFsuLi5jb2x1bW5zXTtcbiAgICAgICAgY29uc3QgbmV3Q29sdW1uS2V5cyA9IFsuLi5rZXlzXTtcbiAgICAgICAgY29uc3Qgc3RhdGU6IFRhYmxlU3RhdGUgPSB7IC4uLnByZXZTdGF0ZSwgY29sdW1uczogbmV3Q29sdW1ucywgY29sdW1uS2V5czogbmV3Q29sdW1uS2V5cyB9O1xuXG4gICAgICAgIGlmICghZXF1YWwocHJldkNvbHVtbnMsIHN0YXRlLmNvbHVtbnMpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFRhYmxlU3RhdGUoc3RhdGUpO1xuXG4gICAgICAgICAgICBjb25zdCBldnQgPSB7IGN1cnJlbnQ6IHN0YXRlLmNvbHVtbnMsIHByZXZpb3VzOiBwcmV2Q29sdW1ucyB9O1xuICAgICAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZSQubmV4dCh7IHR5cGU6ICdjb2x1bW5zJywgc3RhdGU6IGV2dCB9KTtcbiAgICAgICAgICAgIHRoaXMuY29sdW1uc0NoYW5nZSQubmV4dChldnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFNldCBwYWdlLiAqL1xuICAgIHNldEN1cnJlbnRQYWdlKGN1cnJlbnRQYWdlOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy5nZXRUYWJsZVN0YXRlKCk7XG4gICAgICAgIGNvbnN0IHByZXZQYWdlU3RhdGUgPSBwcmV2U3RhdGUucGFnZTtcblxuICAgICAgICBpZiAocHJldlBhZ2VTdGF0ZS5jdXJyZW50UGFnZSA9PT0gY3VycmVudFBhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN0YXRlOiBUYWJsZVN0YXRlID0gc2V0Q3VycmVudFBhZ2VUb1N0YXRlKHByZXZTdGF0ZSwgY3VycmVudFBhZ2UpO1xuXG4gICAgICAgIHRoaXMuc2V0VGFibGVTdGF0ZShzdGF0ZSk7XG4gICAgICAgIGNvbnN0IGV2dCA9IHsgY3VycmVudDogc3RhdGUucGFnZSwgcHJldmlvdXM6IHByZXZQYWdlU3RhdGUgfTtcblxuICAgICAgICB0aGlzLm5lZWRGZXRjaCQubmV4dCgpO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlJC5uZXh0KHsgdHlwZTogJ3BhZ2UnLCBzdGF0ZTogZXZ0IH0pO1xuICAgICAgICB0aGlzLnBhZ2VDaGFuZ2UkLm5leHQoZXZ0KTtcbiAgICB9XG5cbiAgICAvKiogU2V0IGl0ZW1zIHBlciBwYWdlLiAqL1xuICAgIHNldEl0ZW1zUGVyUGFnZShpdGVtc1BlclBhZ2U6IG51bWJlciwgcmVzZXRQYWdlTnVtYmVyID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLmdldFRhYmxlU3RhdGUoKTtcbiAgICAgICAgY29uc3QgcHJldlBhZ2VTdGF0ZSA9IHByZXZTdGF0ZS5wYWdlO1xuXG4gICAgICAgIGlmIChwcmV2UGFnZVN0YXRlLnBhZ2VTaXplID09PSBpdGVtc1BlclBhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzdGF0ZTogVGFibGVTdGF0ZSA9IHNldFBhZ2VTaXplVG9TdGF0ZShwcmV2U3RhdGUsIGl0ZW1zUGVyUGFnZSk7XG5cbiAgICAgICAgaWYgKHJlc2V0UGFnZU51bWJlcikge1xuICAgICAgICAgICAgc3RhdGUgPSBzZXRDdXJyZW50UGFnZVRvU3RhdGUoc3RhdGUsIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRUYWJsZVN0YXRlKHN0YXRlKTtcbiAgICAgICAgY29uc3QgZXZ0ID0geyBjdXJyZW50OiBzdGF0ZS5wYWdlLCBwcmV2aW91czogcHJldlBhZ2VTdGF0ZSB9O1xuXG4gICAgICAgIHRoaXMubmVlZEZldGNoJC5uZXh0KCk7XG4gICAgICAgIHRoaXMuc3RhdGVDaGFuZ2UkLm5leHQoeyB0eXBlOiAncGFnZScsIHN0YXRlOiBldnQgfSk7XG4gICAgICAgIHRoaXMucGFnZUNoYW5nZSQubmV4dChldnQpO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIGRlZmF1bHQgdGFibGUgc3RhdGUuICovXG4gICAgZ2V0RGVmYXVsdFN0YXRlKCk6IFRhYmxlU3RhdGUge1xuICAgICAgICBjb25zdCB0YWJsZVN0YXRlID0gdGhpcy5nZXRUYWJsZVN0YXRlKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb2x1bW5LZXlzOiB0YWJsZVN0YXRlLmNvbHVtbktleXMsXG4gICAgICAgICAgICBzb3J0Qnk6IFtdLFxuICAgICAgICAgICAgZmlsdGVyQnk6IFtdLFxuICAgICAgICAgICAgZ3JvdXBCeTogW10sXG4gICAgICAgICAgICBjb2x1bW5zOiB0YWJsZVN0YXRlLmNvbHVtbnMsXG4gICAgICAgICAgICBzZWFyY2hJbnB1dDoge1xuICAgICAgICAgICAgICAgIGNhdGVnb3J5OiBudWxsLFxuICAgICAgICAgICAgICAgIHRleHQ6ICcnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZnJlZXplVG9Db2x1bW46IG51bGwsXG4gICAgICAgICAgICBmcmVlemVUb0VuZENvbHVtbjogbnVsbCxcbiAgICAgICAgICAgIHBhZ2U6IHtcbiAgICAgICAgICAgICAgICBwYWdlU2l6ZTogMCxcbiAgICAgICAgICAgICAgICBjdXJyZW50UGFnZTogMVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNjcm9sbFRvcFBvc2l0aW9uOiAwXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2hhcmVzIHZpc2libGUgY29sdW1ucyBhcnJheSBhY3Jvc3MgbGlzdGVuZXJzLlxuICAgICAqIEBwYXJhbSBjb2x1bW5zIFZpc2libGUgY29sdW1ucyB0byBzaGFyZS5cbiAgICAgKi9cbiAgICBzZXRWaXNpYmxlQ29sdW1ucyhjb2x1bW5zOiBUYWJsZUNvbHVtbltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlzaWJsZUNvbHVtbnMkLnNldChjb2x1bW5zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaGFyZXMgcG9wcGluZyBjb2x1bW5zIGFycmF5IGFjcm9zcyBsaXN0ZW5lcnMuXG4gICAgICogQHBhcmFtIGNvbHVtbnMgUG9wcGluZyBjb2x1bW5zIHRvIHNoYXJlLlxuICAgICAqL1xuICAgIHNldFBvcHBpbmdDb2x1bW5zKGNvbHVtbnM6IFRhYmxlQ29sdW1uW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wb3BwaW5nQ29sdW1ucyQuc2V0KGNvbHVtbnMpO1xuICAgICAgICB0aGlzLl9wb3BwaW5nQ29sdW1uc0xlbmd0aCA9IGNvbHVtbnMubGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgZ3JvdXBpbmcgcnVsZXMgYmFzZWQgb24gdGhlIHRhYmxlIHN0YXRlLlxuICAgICAqIEBwYXJhbSBzdGF0ZSBUYWJsZSBzdGF0ZS5cbiAgICAgKi9cbiAgICBidWlsZEdyb3VwUnVsZXNNYXAoc3RhdGUgPSB0aGlzLmdldFRhYmxlU3RhdGUoKSk6IHZvaWQge1xuICAgICAgICBjb25zdCBncm91cE1hcCA9IG5ldyBNYXAoc3RhdGUuZ3JvdXBCeS5tYXAoKHJ1bGUpID0+IFtydWxlLmZpZWxkLCBydWxlXSkpO1xuICAgICAgICB0aGlzLmdyb3VwUnVsZXNTdWJqZWN0Lm5leHQoZ3JvdXBNYXApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgc29ydGluZyBydWxlcyBiYXNlZCBvbiB0aGUgdGFibGUgc3RhdGUuXG4gICAgICogQHBhcmFtIHN0YXRlIFRhYmxlIHN0YXRlXG4gICAgICovXG4gICAgYnVpbGRTb3J0UnVsZXNNYXAoc3RhdGUgPSB0aGlzLmdldFRhYmxlU3RhdGUoKSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNvcnRSdWxlcyQuc2V0KG5ldyBNYXAoc3RhdGUuc29ydEJ5LmZpbHRlcigocnVsZSkgPT4gcnVsZS5maWVsZCkubWFwKChydWxlKSA9PiBbcnVsZS5maWVsZCEsIHJ1bGVdKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgZmlsdGVyIHJ1bGVzIGJhc2VkIG9uIHRoZSB0YWJsZSBzdGF0ZS5cbiAgICAgKiBAcGFyYW0gc3RhdGUgVGFibGUgc3RhdGUuXG4gICAgICovXG4gICAgYnVpbGRGaWx0ZXJSdWxlc01hcChzdGF0ZSA9IHRoaXMuZ2V0VGFibGVTdGF0ZSgpKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZpbHRlclJ1bGVzV2l0aEZpZWxkTmFtZXMgPSBzdGF0ZS5maWx0ZXJCeS5tYXAoKHJ1bGUpID0+ICh7XG4gICAgICAgICAgICAuLi5ydWxlLFxuICAgICAgICAgICAgZmllbGROYW1lOiB0aGlzLl9nZXRGaWVsZE5hbWUocnVsZS5maWVsZCwgcnVsZS5maWVsZE5hbWUpXG4gICAgICAgIH0pKTtcbiAgICAgICAgdGhpcy5maWx0ZXJSdWxlcyQuc2V0KFxuICAgICAgICAgICAgZmlsdGVyUnVsZXNXaXRoRmllbGROYW1lcy5yZWR1Y2UoKGhhc2gsIHJ1bGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBydWxlLmZpZWxkO1xuICAgICAgICAgICAgICAgIGlmICghaGFzaC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICBoYXNoLnNldChrZXksIFtdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaGFzaC5nZXQoa2V5KT8ucHVzaChydWxlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFzaDtcbiAgICAgICAgICAgIH0sIG5ldyBNYXA8c3RyaW5nLCBDb2xsZWN0aW9uRmlsdGVyW10+KCkpXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGV2dCA9IHsgY3VycmVudDogZmlsdGVyUnVsZXNXaXRoRmllbGROYW1lcywgcHJldmlvdXM6IHN0YXRlLmZpbHRlckJ5IH07XG5cbiAgICAgICAgdGhpcy5zdGF0ZUNoYW5nZSQubmV4dCh7IHR5cGU6ICdmaWx0ZXInLCBzdGF0ZTogZXZ0IH0pO1xuICAgIH1cblxuICAgIC8qKiBSZXNldCBhbGwgZmlsdGVyIHJ1bGVzICovXG4gICAgcmVzZXRGaWx0ZXJzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLmdldFRhYmxlU3RhdGUoKTtcbiAgICAgICAgY29uc3QgcHJldkZpbHRlclJ1bGVzID0gKHByZXZTdGF0ZSAmJiBwcmV2U3RhdGUuZmlsdGVyQnkpIHx8IFtdO1xuXG4gICAgICAgIGNvbnN0IG5ld0ZpbHRlclJ1bGVzOiBDb2xsZWN0aW9uRmlsdGVyW10gPSBbXTtcbiAgICAgICAgY29uc3Qgc3RhdGU6IFRhYmxlU3RhdGUgPSB7IC4uLnByZXZTdGF0ZSwgZmlsdGVyQnk6IG5ld0ZpbHRlclJ1bGVzIH07XG5cbiAgICAgICAgaWYgKCFlcXVhbChwcmV2RmlsdGVyUnVsZXMsIHN0YXRlLmZpbHRlckJ5KSkge1xuICAgICAgICAgICAgdGhpcy5zZXRUYWJsZVN0YXRlKHNldEN1cnJlbnRQYWdlVG9TdGF0ZShzdGF0ZSwgMSkpO1xuICAgICAgICAgICAgY29uc3QgZXZ0ID0geyBjdXJyZW50OiBzdGF0ZS5maWx0ZXJCeSwgcHJldmlvdXM6IHByZXZGaWx0ZXJSdWxlcyB9O1xuXG4gICAgICAgICAgICB0aGlzLmJ1aWxkRmlsdGVyUnVsZXNNYXAoKTtcbiAgICAgICAgICAgIHRoaXMubmVlZEZldGNoJC5uZXh0KCk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlJC5uZXh0KHsgdHlwZTogJ2ZpbHRlcicsIHN0YXRlOiBldnQgfSk7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckNoYW5nZSQubmV4dChldnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBiYXNlIHRhYmxlIGNvbmZpZy5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RUYWJsZU1ldGFkYXRhKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1aWxkR3JvdXBSdWxlc01hcCgpO1xuICAgICAgICB0aGlzLmJ1aWxkU29ydFJ1bGVzTWFwKCk7XG4gICAgICAgIHRoaXMuYnVpbGRGaWx0ZXJSdWxlc01hcCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0RmllbGROYW1lKGZpZWxkOiBzdHJpbmcsIGZpZWxkTmFtZTogTnVsbGFibGU8c3RyaW5nPik6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMudGFibGVDb2x1bW5zJC5nZXRWYWx1ZSgpLmZpbmQoKGNvbCkgPT4gY29sLmtleSA9PT0gZmllbGQpO1xuICAgICAgICByZXR1cm4gY29sdW1uID8gY29sdW1uLm5hbWUgOiAoZmllbGROYW1lID8/IGZpZWxkKTtcbiAgICB9XG59XG5cbi8qKiBAaGlkZGVuICovXG5mdW5jdGlvbiBzZXRDdXJyZW50UGFnZVRvU3RhdGUoc3RhdGU6IFRhYmxlU3RhdGUsIGN1cnJlbnRQYWdlOiBudW1iZXIpOiBUYWJsZVN0YXRlIHtcbiAgICBjb25zdCBuZXdQYWdlU3RhdGU6IENvbGxlY3Rpb25QYWdlID0geyAuLi5zdGF0ZS5wYWdlLCBjdXJyZW50UGFnZSB9O1xuICAgIHJldHVybiB7IC4uLnN0YXRlLCBwYWdlOiBuZXdQYWdlU3RhdGUgfTtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmZ1bmN0aW9uIHNldFBhZ2VTaXplVG9TdGF0ZShzdGF0ZTogVGFibGVTdGF0ZSwgcGFnZVNpemU6IG51bWJlcik6IFRhYmxlU3RhdGUge1xuICAgIGNvbnN0IG5ld1BhZ2VTdGF0ZTogQ29sbGVjdGlvblBhZ2UgPSB7IC4uLnN0YXRlLnBhZ2UsIHBhZ2VTaXplIH07XG4gICAgcmV0dXJuIHsgLi4uc3RhdGUsIHBhZ2U6IG5ld1BhZ2VTdGF0ZSB9O1xufVxuIl19","import { DestroyRef, ElementRef, Inject, Injectable, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { resizeObservable } from '@fundamental-ngx/cdk/utils';\nimport { debounceTime } from 'rxjs/operators';\nimport { Table } from '../table';\nimport { TableService } from './table.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./table.service\";\nimport * as i2 from \"../table\";\nexport class TableResponsiveService {\n /** @hidden */\n constructor(_table, _tableService, _elmRef) {\n this._table = _table;\n this._tableService = _tableService;\n this._elmRef = _elmRef;\n /** @hidden */\n this._responsiveBreakpoints = new Map();\n /** @hidden */\n this._destroyRef = inject(DestroyRef);\n }\n /**\n * Registers responsive column with it's breakpoint configuration.\n * @param column Table Column\n * @param breakpoints Breakpoint configuration.\n */\n registerResponsiveColumn(column, breakpoints) {\n this._responsiveBreakpoints.set(column, this._normalizeBreakpoints(breakpoints));\n this._listenToTableResize();\n }\n /**\n * @hidden\n * Transforms plain breakpoints into a list with minimal/maximal element width with it's visibility state.\n */\n _normalizeBreakpoints(breakpoints) {\n const sortedBreakpoints = Object.keys(breakpoints)\n .map((i) => parseInt(i, 10))\n .sort((a, b) => a - b);\n const newBreakpoints = sortedBreakpoints.reduce((result, value, index, array) => {\n result.push({\n min: value,\n max: index + 1 < array.length ? array[index + 1] - 1 : Infinity,\n visibility: breakpoints[value.toString()]\n });\n return result;\n }, []);\n return newBreakpoints;\n }\n /**\n * @hidden\n * Listens to the table element resize and calculates columns visibility based on the current breakpoint.\n */\n _listenToTableResize() {\n this._resizeSubscription?.unsubscribe();\n this._resizeSubscription = resizeObservable(this._elmRef.nativeElement)\n .pipe(debounceTime(20), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._processResponsiveColumns();\n });\n }\n /** @hidden */\n _processResponsiveColumns() {\n let shouldNotify = false;\n const { width } = this._elmRef.nativeElement.getBoundingClientRect();\n this._responsiveBreakpoints.forEach((breakpoints, item) => {\n const fittingBreakpoint = breakpoints.find((breakpoint) => breakpoint.min <= width && breakpoint.max >= width);\n if (fittingBreakpoint) {\n shouldNotify = shouldNotify || item.responsiveState !== fittingBreakpoint.visibility;\n item.responsiveState = fittingBreakpoint.visibility;\n }\n });\n // Notify only when there's actual visibility changes to any of the columns.\n if (!shouldNotify) {\n return;\n }\n const currentTableColumns = this._table.getVisibleTableColumns().map((column) => column.name);\n this._tableService.stateChange$.next({\n type: 'columns',\n state: { previous: currentTableColumns, current: currentTableColumns }\n });\n this._tableService.columnsChange$.next({ previous: currentTableColumns, current: currentTableColumns });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableResponsiveService, deps: [{ token: Table }, { token: i1.TableService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableResponsiveService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableResponsiveService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i2.Table, decorators: [{\n type: Inject,\n args: [Table]\n }] }, { type: i1.TableService }, { type: i0.ElementRef }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcmVzcG9uc2l2ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzL3NlcnZpY2VzL3RhYmxlLXJlc3BvbnNpdmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFTL0MsTUFBTSxPQUFPLHNCQUFzQjtJQVUvQixjQUFjO0lBQ2QsWUFDb0MsTUFBYSxFQUM1QixhQUEyQixFQUMzQixPQUFtQjtRQUZKLFdBQU0sR0FBTixNQUFNLENBQU87UUFDNUIsa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDM0IsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQWJ4QyxjQUFjO1FBQ0csMkJBQXNCLEdBQUcsSUFBSSxHQUFHLEVBQXFDLENBQUM7UUFFdkYsY0FBYztRQUNHLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBVS9DLENBQUM7SUFFSjs7OztPQUlHO0lBQ0gsd0JBQXdCLENBQUMsTUFBbUIsRUFBRSxXQUFxRDtRQUMvRixJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUVqRixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBQ0Q7OztPQUdHO0lBQ0sscUJBQXFCLENBQUMsV0FBcUQ7UUFDL0UsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzthQUM3QyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7YUFDM0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzNCLE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQTRCLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNsRyxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNSLEdBQUcsRUFBRSxLQUFLO2dCQUNWLEdBQUcsRUFBRSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRO2dCQUMvRCxVQUFVLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUM1QyxDQUFDLENBQUM7WUFFSCxPQUFPLE1BQU0sQ0FBQztRQUNsQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFUCxPQUFPLGNBQWMsQ0FBQztJQUMxQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssb0JBQW9CO1FBQ3hCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUV4QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7YUFDbEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDNUQsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELGNBQWM7SUFDTix5QkFBeUI7UUFDN0IsSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBRXJFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDdEQsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUN0QyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxLQUFLLElBQUksVUFBVSxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQ3JFLENBQUM7WUFFRixJQUFJLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3BCLFlBQVksR0FBRyxZQUFZLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxpQkFBaUIsQ0FBQyxVQUFVLENBQUM7Z0JBQ3JGLElBQUksQ0FBQyxlQUFlLEdBQUcsaUJBQWlCLENBQUMsVUFBVSxDQUFDO1lBQ3hELENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILDRFQUE0RTtRQUM1RSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDaEIsT0FBTztRQUNYLENBQUM7UUFFRCxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU5RixJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDakMsSUFBSSxFQUFFLFNBQVM7WUFDZixLQUFLLEVBQUUsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFO1NBQ3pFLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQzVHLENBQUM7OEdBM0ZRLHNCQUFzQixrQkFZbkIsS0FBSztrSEFaUixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVU7OzBCQWFGLE1BQU07MkJBQUMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIEVsZW1lbnRSZWYsIEluamVjdCwgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyByZXNpemVPYnNlcnZhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGZHBDb2x1bW5SZXNwb25zaXZlU3RhdGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbHVtbi1yZXNwb25zaXZlLXN0YXRlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJy4uL3RhYmxlJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vdGFibGUtY29sdW1uJztcbmltcG9ydCB7IFRhYmxlU2VydmljZSB9IGZyb20gJy4vdGFibGUuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmRwVGFibGVCcmVha3BvaW50IHtcbiAgICBtaW46IG51bWJlcjtcbiAgICBtYXg6IG51bWJlcjtcbiAgICB2aXNpYmlsaXR5OiBGZHBDb2x1bW5SZXNwb25zaXZlU3RhdGU7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUYWJsZVJlc3BvbnNpdmVTZXJ2aWNlIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Jlc3BvbnNpdmVCcmVha3BvaW50cyA9IG5ldyBNYXA8VGFibGVDb2x1bW4sIEZkcFRhYmxlQnJlYWtwb2ludFtdPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZXNpemVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoVGFibGUpIHByaXZhdGUgcmVhZG9ubHkgX3RhYmxlOiBUYWJsZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfdGFibGVTZXJ2aWNlOiBUYWJsZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2VsbVJlZjogRWxlbWVudFJlZlxuICAgICkge31cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVycyByZXNwb25zaXZlIGNvbHVtbiB3aXRoIGl0J3MgYnJlYWtwb2ludCBjb25maWd1cmF0aW9uLlxuICAgICAqIEBwYXJhbSBjb2x1bW4gVGFibGUgQ29sdW1uXG4gICAgICogQHBhcmFtIGJyZWFrcG9pbnRzIEJyZWFrcG9pbnQgY29uZmlndXJhdGlvbi5cbiAgICAgKi9cbiAgICByZWdpc3RlclJlc3BvbnNpdmVDb2x1bW4oY29sdW1uOiBUYWJsZUNvbHVtbiwgYnJlYWtwb2ludHM6IFJlY29yZDxzdHJpbmcsIEZkcENvbHVtblJlc3BvbnNpdmVTdGF0ZT4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVzcG9uc2l2ZUJyZWFrcG9pbnRzLnNldChjb2x1bW4sIHRoaXMuX25vcm1hbGl6ZUJyZWFrcG9pbnRzKGJyZWFrcG9pbnRzKSk7XG5cbiAgICAgICAgdGhpcy5fbGlzdGVuVG9UYWJsZVJlc2l6ZSgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogVHJhbnNmb3JtcyBwbGFpbiBicmVha3BvaW50cyBpbnRvIGEgbGlzdCB3aXRoIG1pbmltYWwvbWF4aW1hbCBlbGVtZW50IHdpZHRoIHdpdGggaXQncyB2aXNpYmlsaXR5IHN0YXRlLlxuICAgICAqL1xuICAgIHByaXZhdGUgX25vcm1hbGl6ZUJyZWFrcG9pbnRzKGJyZWFrcG9pbnRzOiBSZWNvcmQ8c3RyaW5nLCBGZHBDb2x1bW5SZXNwb25zaXZlU3RhdGU+KTogRmRwVGFibGVCcmVha3BvaW50W10ge1xuICAgICAgICBjb25zdCBzb3J0ZWRCcmVha3BvaW50cyA9IE9iamVjdC5rZXlzKGJyZWFrcG9pbnRzKVxuICAgICAgICAgICAgLm1hcCgoaSkgPT4gcGFyc2VJbnQoaSwgMTApKVxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcbiAgICAgICAgY29uc3QgbmV3QnJlYWtwb2ludHMgPSBzb3J0ZWRCcmVha3BvaW50cy5yZWR1Y2UoKHJlc3VsdDogRmRwVGFibGVCcmVha3BvaW50W10sIHZhbHVlLCBpbmRleCwgYXJyYXkpID0+IHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICBtaW46IHZhbHVlLFxuICAgICAgICAgICAgICAgIG1heDogaW5kZXggKyAxIDwgYXJyYXkubGVuZ3RoID8gYXJyYXlbaW5kZXggKyAxXSAtIDEgOiBJbmZpbml0eSxcbiAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiBicmVha3BvaW50c1t2YWx1ZS50b1N0cmluZygpXVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0sIFtdKTtcblxuICAgICAgICByZXR1cm4gbmV3QnJlYWtwb2ludHM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIExpc3RlbnMgdG8gdGhlIHRhYmxlIGVsZW1lbnQgcmVzaXplIGFuZCBjYWxjdWxhdGVzIGNvbHVtbnMgdmlzaWJpbGl0eSBiYXNlZCBvbiB0aGUgY3VycmVudCBicmVha3BvaW50LlxuICAgICAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvVGFibGVSZXNpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Jlc2l6ZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcblxuICAgICAgICB0aGlzLl9yZXNpemVTdWJzY3JpcHRpb24gPSByZXNpemVPYnNlcnZhYmxlKHRoaXMuX2VsbVJlZi5uYXRpdmVFbGVtZW50KVxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDIwKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc1Jlc3BvbnNpdmVDb2x1bW5zKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Byb2Nlc3NSZXNwb25zaXZlQ29sdW1ucygpOiB2b2lkIHtcbiAgICAgICAgbGV0IHNob3VsZE5vdGlmeSA9IGZhbHNlO1xuICAgICAgICBjb25zdCB7IHdpZHRoIH0gPSB0aGlzLl9lbG1SZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICB0aGlzLl9yZXNwb25zaXZlQnJlYWtwb2ludHMuZm9yRWFjaCgoYnJlYWtwb2ludHMsIGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpdHRpbmdCcmVha3BvaW50ID0gYnJlYWtwb2ludHMuZmluZChcbiAgICAgICAgICAgICAgICAoYnJlYWtwb2ludCkgPT4gYnJlYWtwb2ludC5taW4gPD0gd2lkdGggJiYgYnJlYWtwb2ludC5tYXggPj0gd2lkdGhcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChmaXR0aW5nQnJlYWtwb2ludCkge1xuICAgICAgICAgICAgICAgIHNob3VsZE5vdGlmeSA9IHNob3VsZE5vdGlmeSB8fCBpdGVtLnJlc3BvbnNpdmVTdGF0ZSAhPT0gZml0dGluZ0JyZWFrcG9pbnQudmlzaWJpbGl0eTtcbiAgICAgICAgICAgICAgICBpdGVtLnJlc3BvbnNpdmVTdGF0ZSA9IGZpdHRpbmdCcmVha3BvaW50LnZpc2liaWxpdHk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIE5vdGlmeSBvbmx5IHdoZW4gdGhlcmUncyBhY3R1YWwgdmlzaWJpbGl0eSBjaGFuZ2VzIHRvIGFueSBvZiB0aGUgY29sdW1ucy5cbiAgICAgICAgaWYgKCFzaG91bGROb3RpZnkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRUYWJsZUNvbHVtbnMgPSB0aGlzLl90YWJsZS5nZXRWaXNpYmxlVGFibGVDb2x1bW5zKCkubWFwKChjb2x1bW4pID0+IGNvbHVtbi5uYW1lKTtcblxuICAgICAgICB0aGlzLl90YWJsZVNlcnZpY2Uuc3RhdGVDaGFuZ2UkLm5leHQoe1xuICAgICAgICAgICAgdHlwZTogJ2NvbHVtbnMnLFxuICAgICAgICAgICAgc3RhdGU6IHsgcHJldmlvdXM6IGN1cnJlbnRUYWJsZUNvbHVtbnMsIGN1cnJlbnQ6IGN1cnJlbnRUYWJsZUNvbHVtbnMgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl90YWJsZVNlcnZpY2UuY29sdW1uc0NoYW5nZSQubmV4dCh7IHByZXZpb3VzOiBjdXJyZW50VGFibGVDb2x1bW5zLCBjdXJyZW50OiBjdXJyZW50VGFibGVDb2x1bW5zIH0pO1xuICAgIH1cbn1cbiJdfQ==","export class TableColumn {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzL3RhYmxlLWNvbHVtbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxNQUFNLE9BQWdCLFdBQVc7Q0E0RmhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2lnbmFsLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbHVtbkFsaWduVmFsdWUsIEZpbHRlcmFibGVDb2x1bW5EYXRhVHlwZSB9IGZyb20gJy4vZW51bXMnO1xuaW1wb3J0IHsgRmRwQ29sdW1uUmVzcG9uc2l2ZVN0YXRlIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRhYmxlQ29sdW1uIHtcbiAgICAvKiogQ29sdW1uIHVuaXF1ZSBpZGVudGlmaWVyLiAqL1xuICAgIGFic3RyYWN0IG5hbWU6IHN0cmluZztcblxuICAgIC8qKiBDb2x1bW4gZGF0YSBhY2Nlc3NvciBrZXkuICovXG4gICAgYWJzdHJhY3Qga2V5OiBzdHJpbmc7XG5cbiAgICAvKiogQ29sdW1uIGhlYWRlciBsYWJlbC4gKi9cbiAgICBhYnN0cmFjdCBsYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIENvbHVtbiBmb290ZXIgbGFiZWwuICovXG4gICAgYWJzdHJhY3QgZm9vdGVyTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBFbWl0cyB3aGVuIHRoZSBsYWJlbCB2YWx1ZSBjaGFuZ2VzLiAqL1xuICAgIGFic3RyYWN0IGxhYmVsVmFsdWVDaGFuZ2VzJDogT2JzZXJ2YWJsZTxOdWxsYWJsZTxzdHJpbmc+PjtcblxuICAgIC8qKiBDZWxsIHRleHQgYWxpZ25tZW50LiAqL1xuICAgIGFic3RyYWN0IGFsaWduOiBDb2x1bW5BbGlnblZhbHVlO1xuXG4gICAgLyoqIFRvZ2dsZXMgc29ydCBmZWF0dXJlIGluIHRoZSBjb2x1bW4gaGVhZGVyLiAqL1xuICAgIGFic3RyYWN0IHNvcnRhYmxlOiBib29sZWFuO1xuXG4gICAgLyoqIFRvZ2dsZXMgZmlsdGVyIGZlYXR1cmUgaW4gdGhlIGNvbHVtbiBoZWFkZXIuICovXG4gICAgYWJzdHJhY3QgZmlsdGVyYWJsZTogYm9vbGVhbjtcblxuICAgIC8qKiBEYXRhIHR5cGUgdGhlIGNvbHVtbiByZXByZXNlbnRzLiAqL1xuICAgIGFic3RyYWN0IGRhdGFUeXBlOiBGaWx0ZXJhYmxlQ29sdW1uRGF0YVR5cGU7XG5cbiAgICAvKipcbiAgICAgKiBPcHRpb25hbCBhcnJheSBvZiBhdmFpbGFibGUgZmlsdGVyIG9wdGlvbnMuXG4gICAgICogUHJvdmlkaW5nIHZhbHVlcyB0byB0aGlzIGlucHV0IHdpbGwgY2F1c2UgdGhlIGZpbHRlciB0byBjaGFuZ2UgZnJvbSBhIHRleHQtdHlwZSBpbnB1dCB0byBhIHNlbGVjdC10eXBlIGlucHV0LlxuICAgICAqICovXG4gICAgYWJzdHJhY3QgZmlsdGVyU2VsZWN0T3B0aW9uczogc3RyaW5nW107XG5cbiAgICAvKiogV2lkdGggb2YgdGhlIGNvbHVtbiBjZWxscy4gKi9cbiAgICBhYnN0cmFjdCB3aWR0aDogc3RyaW5nO1xuXG4gICAgLyoqIFRvZ2dsZXMgZ3JvdXBpbmcgZmVhdHVyZSBpbiB0aGUgY29sdW1uIGhlYWRlci4gKi9cbiAgICBhYnN0cmFjdCBncm91cGFibGU6IGJvb2xlYW47XG5cbiAgICAvKiogVG9nZ2xlcyBmcmVlemUvdW5mcmVlemUgZmVhdHVyZSBpbiB0aGUgY29sdW1uIGhlYWRlci4gKi9cbiAgICBhYnN0cmFjdCBmcmVlemFibGU6IGJvb2xlYW47XG5cbiAgICAvKiogVG9nZ2xlcyBlbmQgY29sdW1uIGZyZWV6ZS91bmZyZWV6ZSBmZWF0dXJlIGluIHRoZSBjb2x1bW4gaGVhZGVyLiAqL1xuICAgIGFic3RyYWN0IGVuZEZyZWV6YWJsZTogYm9vbGVhbjtcblxuICAgIC8qKiAgV2hldGhlciB0aGUgdGFibGUgY2VsbCBpbnNpZGUgdGFibGUgaGVhZGVyIHNob3VsZCBiZSBub24taW50ZXJhY3RpdmUuICovXG4gICAgYWJzdHJhY3Qgbm9uSW50ZXJhY3RpdmU6IGJvb2xlYW47XG5cbiAgICAvKiogSW5pdGlhbCB2aXNpYmlsaXR5IHN0YXRlIG9mIHRoZSBjb2x1bW4uICovXG4gICAgYWJzdHJhY3QgdmlzaWJsZTogYm9vbGVhbjtcblxuICAgIC8qKiBDb2x1bW4gY2VsbCB0ZW1wbGF0ZSBmb3IgcmVhZG9ubHkgbW9kZS4gKi9cbiAgICBhYnN0cmFjdCBjb2x1bW5DZWxsVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgLyoqIENvbHVtbiBjZWxsIHRlbXBsYXRlIGZvciBlZGl0aW5nIG1vZGUuICovXG4gICAgYWJzdHJhY3QgZWRpdGFibGVDb2x1bW5DZWxsVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgLyoqIENvbHVtbiBoZWFkZXIgdGVtcGxhdGUuICovXG4gICAgYWJzdHJhY3QgaGVhZGVyQ2VsbFRlbXBsYXRlOiBOdWxsYWJsZTxUZW1wbGF0ZVJlZjxhbnk+PjtcblxuICAgIC8qKiBDb2x1bW4gaGVhZGVyIHRlbXBsYXRlLiAqL1xuICAgIGFic3RyYWN0IGZvb3RlckNlbGxUZW1wbGF0ZTogTnVsbGFibGU8VGVtcGxhdGVSZWY8YW55Pj47XG5cbiAgICAvKiogQ29sdW1uIGhlYWRlciBwb3BvdmVyIHRlbXBsYXRlLiAqL1xuICAgIGFic3RyYWN0IGhlYWRlckNlbGxQb3BvdmVyVGVtcGxhdGU6IE51bGxhYmxlPFRlbXBsYXRlUmVmPGFueT4+O1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIHRleHQgc2hvdWxkIHdyYXAsIHdoZW4gdGV4dCBpcyB0b28gbG9uZyBmb3IgMSBsaW5lLiAqL1xuICAgIGFic3RyYWN0IG5vV3JhcDogYm9vbGVhbjtcblxuICAgIC8qKiBXaGV0aGVyIHRvIGFwcGx5IGZkLXRhYmxlLXRleHQgKHRleHQtc2hhZG93KSB0byB0aGUgY2VsbCBjb250ZW50LCBpZiBkaXNhYmxlZCBub1dyYXAgaGFzIG5vIGVmZmVjdC4gKi9cbiAgICBhYnN0cmFjdCBhcHBseVRleHQ6IGJvb2xlYW47XG5cbiAgICAvKiogU3RvcmVzIGluZm9ybWF0aW9uIGZvciB0aGUgaGVhZGVyIGNlbGwgaWYgdGhlIGVsbGlwc2lzIGFyZSB2aXNpYmxlIGFmdGVyIHRoZSBjb2x1bW4gcmVzaXplICovXG4gICAgYWJzdHJhY3QgaGVhZGVyT3ZlcmZsb3dzOiBib29sZWFuOyAvLyBOb3QgYmVpbmcgdXNlZCBhbnl3aGVyZSwgaXMgaGVyZSBmb3IgaW5mb3JtYXRpb25cblxuICAgIC8qKiBXaGV0aGVyIHRoaXMgY29sdW1uIGlzIHZpc2libGUgKi9cbiAgICBhYnN0cmFjdCByZXNwb25zaXZlU3RhdGU6IEZkcENvbHVtblJlc3BvbnNpdmVTdGF0ZTtcbiAgICAvKiogQ29sdW1uIHJvbGUgYXR0cmlidXRlLiAqL1xuICAgIGFic3RyYWN0IHJvbGU6ICdjZWxsJyB8ICdyb3doZWFkZXInIHwgJ2dyaWRjZWxsJztcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gYW5ub3VuY2UgYnVpbHQtaW4gZW1wdHkgY2VsbHMgdG8gc2NyZWVuIHJlYWRlcnMgZm9yIGNvbHVtbnMgd2l0aCBjb2x1bW4gdGVtcGxhdGVzLlxuICAgICAqIFRoaXMgcHJvdmlkZXMgb3B0aW9uIHRvIHR1cm4gb2ZmIHRoZSBhbm5vdW5jZW1lbnQgaWYgdGhlIGNvbHVtbiB0ZW1wbGF0ZSBhbHJlYWR5IGluY2x1ZGVzIGl0cyBvd25cbiAgICAgKiAqL1xuICAgIGFic3RyYWN0IGFubm91bmNlRW1wdHlDZWxsOiBTaWduYWw8Ym9vbGVhbj47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGFic3RyYWN0IF9mcmVlemVkOiBib29sZWFuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBhYnN0cmFjdCBfZW5kRnJlZXplZDogYm9vbGVhbjtcbn1cbiJdfQ==","import { Directive, Inject, Input, Optional } from '@angular/core';\nimport equal from 'fast-deep-equal';\nimport { TableResponsiveService } from '../services/table-responsive.service';\nimport { TableColumn } from '../table-column';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../services/table-responsive.service\";\nimport * as i2 from \"../table-column\";\nexport class PlatformTableColumnResponsiveDirective {\n /**\n * Responsive breakpoints configuration.\n * @param value where key is minimal table with and value is a column visibility type.\n */\n set breakpoints(value) {\n if (equal(value, this._breakpoints) || !this._column) {\n return;\n }\n this._breakpoints = value;\n this._responsiveTableService.registerResponsiveColumn(this._column, this._breakpoints);\n }\n get breakpoints() {\n return this._breakpoints;\n }\n /** @hidden */\n constructor(_responsiveTableService, _column) {\n this._responsiveTableService = _responsiveTableService;\n this._column = _column;\n /** @hidden */\n this._breakpoints = {};\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformTableColumnResponsiveDirective, deps: [{ token: i1.TableResponsiveService }, { token: TableColumn, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: PlatformTableColumnResponsiveDirective, isStandalone: true, selector: \"[fdpTableColumnResponsive]\", inputs: { breakpoints: [\"fdpTableColumnResponsive\", \"breakpoints\"] }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformTableColumnResponsiveDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdpTableColumnResponsive]',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i1.TableResponsiveService }, { type: i2.TableColumn, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TableColumn]\n }] }], propDecorators: { breakpoints: [{\n type: Input,\n args: ['fdpTableColumnResponsive']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0tdGFibGUtY29sdW1uLXJlc3BvbnNpdmUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzL2RpcmVjdGl2ZXMvcGxhdGZvcm0tdGFibGUtY29sdW1uLXJlc3BvbnNpdmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxLQUFLLE1BQU0saUJBQWlCLENBQUM7QUFFcEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBTTlDLE1BQU0sT0FBTyxzQ0FBc0M7SUFDL0M7OztPQUdHO0lBQ0gsSUFDSSxXQUFXLENBQUMsS0FBK0M7UUFDM0QsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNuRCxPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLENBQUM7SUFLRCxjQUFjO0lBQ2QsWUFDcUIsdUJBQStDLEVBQ2QsT0FBMkI7UUFENUQsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF3QjtRQUNkLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBTmpGLGNBQWM7UUFDTixpQkFBWSxHQUE2QyxFQUFFLENBQUM7SUFNakUsQ0FBQzs4R0F6Qkssc0NBQXNDLHdEQXdCdkIsV0FBVztrR0F4QjFCLHNDQUFzQzs7MkZBQXRDLHNDQUFzQztrQkFKbEQsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsNEJBQTRCO29CQUN0QyxVQUFVLEVBQUUsSUFBSTtpQkFDbkI7OzBCQXlCUSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLFdBQVc7eUNBbEIvQixXQUFXO3NCQURkLEtBQUs7dUJBQUMsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbmplY3QsIElucHV0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IGVxdWFsIGZyb20gJ2Zhc3QtZGVlcC1lcXVhbCc7XG5pbXBvcnQgeyBGZHBDb2x1bW5SZXNwb25zaXZlU3RhdGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbHVtbi1yZXNwb25zaXZlLXN0YXRlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUYWJsZVJlc3BvbnNpdmVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdGFibGUtcmVzcG9uc2l2ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vdGFibGUtY29sdW1uJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRwVGFibGVDb2x1bW5SZXNwb25zaXZlXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBQbGF0Zm9ybVRhYmxlQ29sdW1uUmVzcG9uc2l2ZURpcmVjdGl2ZSB7XG4gICAgLyoqXG4gICAgICogUmVzcG9uc2l2ZSBicmVha3BvaW50cyBjb25maWd1cmF0aW9uLlxuICAgICAqIEBwYXJhbSB2YWx1ZSB3aGVyZSBrZXkgaXMgbWluaW1hbCB0YWJsZSB3aXRoIGFuZCB2YWx1ZSBpcyBhIGNvbHVtbiB2aXNpYmlsaXR5IHR5cGUuXG4gICAgICovXG4gICAgQElucHV0KCdmZHBUYWJsZUNvbHVtblJlc3BvbnNpdmUnKVxuICAgIHNldCBicmVha3BvaW50cyh2YWx1ZTogUmVjb3JkPHN0cmluZywgRmRwQ29sdW1uUmVzcG9uc2l2ZVN0YXRlPikge1xuICAgICAgICBpZiAoZXF1YWwodmFsdWUsIHRoaXMuX2JyZWFrcG9pbnRzKSB8fCAhdGhpcy5fY29sdW1uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fYnJlYWtwb2ludHMgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fcmVzcG9uc2l2ZVRhYmxlU2VydmljZS5yZWdpc3RlclJlc3BvbnNpdmVDb2x1bW4odGhpcy5fY29sdW1uLCB0aGlzLl9icmVha3BvaW50cyk7XG4gICAgfVxuXG4gICAgZ2V0IGJyZWFrcG9pbnRzKCk6IFJlY29yZDxudW1iZXIsIEZkcENvbHVtblJlc3BvbnNpdmVTdGF0ZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWtwb2ludHM7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9icmVha3BvaW50czogUmVjb3JkPG51bWJlciwgRmRwQ29sdW1uUmVzcG9uc2l2ZVN0YXRlPiA9IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfcmVzcG9uc2l2ZVRhYmxlU2VydmljZTogVGFibGVSZXNwb25zaXZlU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChUYWJsZUNvbHVtbikgcHJpdmF0ZSByZWFkb25seSBfY29sdW1uOiBUYWJsZUNvbHVtbiB8IG51bGxcbiAgICApIHt9XG59XG4iXX0=","import { Directive, TemplateRef } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class TableCellHeaderPopoverDirective {\n /** @hidden */\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n /** @hidden */\n static ngTemplateContextGuard(directive, context) {\n return true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableCellHeaderPopoverDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: TableCellHeaderPopoverDirective, isStandalone: true, selector: \"[fdpTableCellHeaderPopover]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableCellHeaderPopoverDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdpTableCellHeaderPopover]',\n standalone: true\n }]\n }], ctorParameters: () => [{ type: i0.TemplateRef }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC1oZWFkZXItcG9wb3Zlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvZGlyZWN0aXZlcy90YWJsZS1jZWxsLWhlYWRlci1wb3BvdmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFVL0QsTUFBTSxPQUFPLCtCQUErQjtJQUN4QyxjQUFjO0lBQ2QsWUFBbUIsV0FBZ0U7UUFBaEUsZ0JBQVcsR0FBWCxXQUFXLENBQXFEO0lBQUcsQ0FBQztJQUV2RixjQUFjO0lBQ2QsTUFBTSxDQUFDLHNCQUFzQixDQUN6QixTQUEwQyxFQUMxQyxPQUFnQjtRQUVoQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOzhHQVZRLCtCQUErQjtrR0FBL0IsK0JBQStCOzsyRkFBL0IsK0JBQStCO2tCQUozQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLFVBQVUsRUFBRSxJQUFJO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgU2lnbmFsLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQ2VsbEhlYWRlclBvcG92ZXJEaXJlY3RpdmVDb250ZXh0IHtcbiAgICAkaW1wbGljaXQ6IFNpZ25hbDxUZW1wbGF0ZVJlZjxhbnk+W10+O1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZHBUYWJsZUNlbGxIZWFkZXJQb3BvdmVyXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNlbGxIZWFkZXJQb3BvdmVyRGlyZWN0aXZlIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8VGFibGVDZWxsSGVhZGVyUG9wb3ZlckRpcmVjdGl2ZUNvbnRleHQ+KSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZChcbiAgICAgICAgZGlyZWN0aXZlOiBUYWJsZUNlbGxIZWFkZXJQb3BvdmVyRGlyZWN0aXZlLFxuICAgICAgICBjb250ZXh0OiB1bmtub3duXG4gICAgKTogY29udGV4dCBpcyBUYWJsZUNlbGxIZWFkZXJQb3BvdmVyRGlyZWN0aXZlQ29udGV4dCB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbn1cbiJdfQ==","import { Injectable, InjectionToken } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport const TABLE_SCROLLABLE = new InjectionToken('Table Scrollable');\nexport class TableScrollDispatcherService {\n constructor() {\n /** @hidden */\n this._scrollSubject = new Subject();\n /** @hidden */\n this._verticalScrollSubject = new Subject();\n /** @hidden */\n this._horizontalScrollSubject = new Subject();\n /** @hidden */\n this._scrollableSubscriptionsMap = new Map();\n }\n /** @hidden */\n register(scrollable) {\n if (this._scrollableSubscriptionsMap.has(scrollable)) {\n return;\n }\n const sub = new Subscription();\n sub.add(scrollable.getScrollStream().subscribe(() => this._scrollSubject.next(scrollable)));\n sub.add(scrollable.getHorizontalScrollStream().subscribe(() => this._horizontalScrollSubject.next(scrollable)));\n sub.add(scrollable.getVerticalScrollStream().subscribe(() => this._verticalScrollSubject.next(scrollable)));\n this._scrollableSubscriptionsMap.set(scrollable, sub);\n }\n /** @hidden */\n deregister(scrollable) {\n if (!this._scrollableSubscriptionsMap.has(scrollable)) {\n return;\n }\n this._scrollableSubscriptionsMap.get(scrollable)?.unsubscribe();\n }\n /** Scroll stream */\n scrolled() {\n return this._scrollSubject.asObservable();\n }\n /** Horizontal scroll stream */\n horizontallyScrolled() {\n return this._horizontalScrollSubject.asObservable();\n }\n /** Vertical scroll stream */\n verticallyScrolled() {\n return this._verticalScrollSubject.asObservable();\n }\n /** @hidden */\n ngOnDestroy() {\n Array.from(this._scrollableSubscriptionsMap.values()).forEach((subscription) => subscription.unsubscribe());\n this._scrollableSubscriptionsMap.clear();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableScrollDispatcherService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableScrollDispatcherService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableScrollDispatcherService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc2Nyb2xsLWRpc3BhdGNoZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9zZXJ2aWNlcy90YWJsZS1zY3JvbGwtZGlzcGF0Y2hlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsY0FBYyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBYyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQWtDekQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQWtCLGtCQUFrQixDQUFDLENBQUM7QUFHeEYsTUFBTSxPQUFPLDRCQUE0QjtJQUR6QztRQUVJLGNBQWM7UUFDTixtQkFBYyxHQUE2QixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ2pFLGNBQWM7UUFDTiwyQkFBc0IsR0FBNkIsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN6RSxjQUFjO1FBQ04sNkJBQXdCLEdBQTZCLElBQUksT0FBTyxFQUFFLENBQUM7UUFDM0UsY0FBYztRQUNOLGdDQUEyQixHQUF1QyxJQUFJLEdBQUcsRUFBRSxDQUFDO0tBOEN2RjtJQTVDRyxjQUFjO0lBQ2QsUUFBUSxDQUFDLFVBQTJCO1FBQ2hDLElBQUksSUFBSSxDQUFDLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ25ELE9BQU87UUFDWCxDQUFDO1FBRUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMvQixHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVGLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLHlCQUF5QixFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hILEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLHVCQUF1QixFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTVHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxjQUFjO0lBQ2QsVUFBVSxDQUFDLFVBQTJCO1FBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDcEQsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLENBQUMsMkJBQTJCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ3BFLENBQUM7SUFFRCxvQkFBb0I7SUFDcEIsUUFBUTtRQUNKLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsK0JBQStCO0lBQy9CLG9CQUFvQjtRQUNoQixPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4RCxDQUFDO0lBRUQsNkJBQTZCO0lBQzdCLGtCQUFrQjtRQUNkLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFRCxjQUFjO0lBQ2QsV0FBVztRQUNQLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUU1RyxJQUFJLENBQUMsMkJBQTJCLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0MsQ0FBQzs4R0FyRFEsNEJBQTRCO2tIQUE1Qiw0QkFBNEI7OzJGQUE1Qiw0QkFBNEI7a0JBRHhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZVNjcm9sbGFibGUge1xuICAgIC8qKiBHZXQgc2Nyb2xsYWJsZSBFbGVtZW50UmVmIG9mLiAqL1xuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqIFJldHVybnMgb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHdoZW4gYSBzY3JvbGwgZXZlbnQgaXMgZmlyZWQgb24gdGhlIGhvc3QgZWxlbWVudC4gKi9cbiAgICBnZXRTY3JvbGxTdHJlYW0oKTogT2JzZXJ2YWJsZTxFdmVudD47XG5cbiAgICAvKiogUmV0dXJucyBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgd2hlbiBhIHZlcnRpY2FsIHNjcm9sbCBldmVudCBpcyBoYXBwZW5lZCBvbiB0aGUgaG9zdCBlbGVtZW50LiAqL1xuICAgIGdldFZlcnRpY2FsU2Nyb2xsU3RyZWFtKCk6IE9ic2VydmFibGU8RXZlbnQ+O1xuXG4gICAgLyoqIFJldHVybnMgb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHdoZW4gYSBob3Jpem9udGFsIHNjcm9sbCBldmVudCBpcyBoYXBwZW5lZCBvbiB0aGUgaG9zdCBlbGVtZW50LiAqL1xuICAgIGdldEhvcml6b250YWxTY3JvbGxTdHJlYW0oKTogT2JzZXJ2YWJsZTxFdmVudD47XG5cbiAgICAvKiogUmV0dXJucyBzY3JvbGxUb3AgcG9zaXRpb24gb2YgdGhlIGhvc3QgZWxlbWVudC4gKi9cbiAgICBnZXRTY3JvbGxUb3AoKTogbnVtYmVyO1xuXG4gICAgLyoqIFJldHVybnMgc2Nyb2xsTGVmdCBwb3NpdGlvbiBvZiB0aGUgaG9zdCBlbGVtZW50LiAqL1xuICAgIGdldFNjcm9sbExlZnQoKTogbnVtYmVyO1xuXG4gICAgLyoqIFNldCBzY3JvbGxUb3AgcG9zaXRpb24gb2YgdGhlIGhvc3QgZWxlbWVudC4gKi9cbiAgICBzZXRTY3JvbGxUb3Aoc2Nyb2xsVG9wOiBudW1iZXIsIGVtaXRFdmVudDogYm9vbGVhbik6IHZvaWQ7XG5cbiAgICAvKiogU2V0IHNjcm9sbExlZnQgcG9zaXRpb24gb2YgdGhlIGhvc3QgZWxlbWVudC4gKi9cbiAgICBzZXRTY3JvbGxMZWZ0KHNjcm9sbExlZnQ6IG51bWJlciwgZW1pdEV2ZW50OiBib29sZWFuKTogdm9pZDtcblxuICAgIC8qKiBTY3JvbGxzIHRvIG92ZXJsYXBwZWQgY2VsbC4gKi9cbiAgICBzY3JvbGxUb092ZXJsYXBwZWRDZWxsKHJ0bDogYm9vbGVhbiwgZnJlZXphYmxlQ29sdW1uc1NpemU6IG51bWJlciwgZnJlZXphYmxlRW5kQ29sdW1uU2l6ZTogbnVtYmVyKTogdm9pZDtcblxuICAgIC8qKiBTZXQgU2Nyb2xsIFBvc2l0aW9uIGR1cmluZyBjb21wb25lbnQgaW5pdGlhbGl6YXRpb24uICovXG4gICAgaW5pdGlhbGl6ZVNjcm9sbFRvcChzY3JvbGxUb3A6IG51bWJlcik6IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBUQUJMRV9TQ1JPTExBQkxFID0gbmV3IEluamVjdGlvblRva2VuPFRhYmxlU2Nyb2xsYWJsZT4oJ1RhYmxlIFNjcm9sbGFibGUnKTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRhYmxlU2Nyb2xsRGlzcGF0Y2hlclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2Nyb2xsU3ViamVjdDogU3ViamVjdDxUYWJsZVNjcm9sbGFibGU+ID0gbmV3IFN1YmplY3QoKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ZlcnRpY2FsU2Nyb2xsU3ViamVjdDogU3ViamVjdDxUYWJsZVNjcm9sbGFibGU+ID0gbmV3IFN1YmplY3QoKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hvcml6b250YWxTY3JvbGxTdWJqZWN0OiBTdWJqZWN0PFRhYmxlU2Nyb2xsYWJsZT4gPSBuZXcgU3ViamVjdCgpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2Nyb2xsYWJsZVN1YnNjcmlwdGlvbnNNYXA6IE1hcDxUYWJsZVNjcm9sbGFibGUsIFN1YnNjcmlwdGlvbj4gPSBuZXcgTWFwKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlZ2lzdGVyKHNjcm9sbGFibGU6IFRhYmxlU2Nyb2xsYWJsZSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fc2Nyb2xsYWJsZVN1YnNjcmlwdGlvbnNNYXAuaGFzKHNjcm9sbGFibGUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdWIgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gICAgICAgIHN1Yi5hZGQoc2Nyb2xsYWJsZS5nZXRTY3JvbGxTdHJlYW0oKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fc2Nyb2xsU3ViamVjdC5uZXh0KHNjcm9sbGFibGUpKSk7XG4gICAgICAgIHN1Yi5hZGQoc2Nyb2xsYWJsZS5nZXRIb3Jpem9udGFsU2Nyb2xsU3RyZWFtKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2hvcml6b250YWxTY3JvbGxTdWJqZWN0Lm5leHQoc2Nyb2xsYWJsZSkpKTtcbiAgICAgICAgc3ViLmFkZChzY3JvbGxhYmxlLmdldFZlcnRpY2FsU2Nyb2xsU3RyZWFtKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3ZlcnRpY2FsU2Nyb2xsU3ViamVjdC5uZXh0KHNjcm9sbGFibGUpKSk7XG5cbiAgICAgICAgdGhpcy5fc2Nyb2xsYWJsZVN1YnNjcmlwdGlvbnNNYXAuc2V0KHNjcm9sbGFibGUsIHN1Yik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBkZXJlZ2lzdGVyKHNjcm9sbGFibGU6IFRhYmxlU2Nyb2xsYWJsZSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3Njcm9sbGFibGVTdWJzY3JpcHRpb25zTWFwLmhhcyhzY3JvbGxhYmxlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc2Nyb2xsYWJsZVN1YnNjcmlwdGlvbnNNYXAuZ2V0KHNjcm9sbGFibGUpPy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBTY3JvbGwgc3RyZWFtICovXG4gICAgc2Nyb2xsZWQoKTogT2JzZXJ2YWJsZTxUYWJsZVNjcm9sbGFibGU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Njcm9sbFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqIEhvcml6b250YWwgc2Nyb2xsIHN0cmVhbSAqL1xuICAgIGhvcml6b250YWxseVNjcm9sbGVkKCk6IE9ic2VydmFibGU8VGFibGVTY3JvbGxhYmxlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ob3Jpem9udGFsU2Nyb2xsU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvKiogVmVydGljYWwgc2Nyb2xsIHN0cmVhbSAqL1xuICAgIHZlcnRpY2FsbHlTY3JvbGxlZCgpOiBPYnNlcnZhYmxlPFRhYmxlU2Nyb2xsYWJsZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmVydGljYWxTY3JvbGxTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIEFycmF5LmZyb20odGhpcy5fc2Nyb2xsYWJsZVN1YnNjcmlwdGlvbnNNYXAudmFsdWVzKCkpLmZvckVhY2goKHN1YnNjcmlwdGlvbikgPT4gc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xuXG4gICAgICAgIHRoaXMuX3Njcm9sbGFibGVTdWJzY3JpcHRpb25zTWFwLmNsZWFyKCk7XG4gICAgfVxufVxuIl19","import { DestroyRef, Injectable, Optional, computed, inject, signal } from '@angular/core';\nimport { BehaviorSubject, Subject, Subscription, fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { RtlService } from '@fundamental-ngx/cdk/utils';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TableScrollDispatcherService } from './table-scroll-dispatcher.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"./table-scroll-dispatcher.service\";\nimport * as i2 from \"@fundamental-ngx/cdk/utils\";\nexport const TABLE_RESIZER_BORDER_WIDTH = 3;\n/**\n * Service to handle all things related to column resizing:\n * - Setting resizer\n * - Processing resize\n * - Calculating the real columns width\n */\nexport class TableColumnResizeService {\n /** Indicate if resizing process in progress. */\n get resizeInProgress() {\n return this._resizeInProgress;\n }\n /** Current column resizer position. */\n get resizerPosition() {\n return this._resizerPosition ?? 0;\n }\n /** Observable to notify to run CD */\n get markForCheck() {\n return this._markForCheck.asObservable();\n }\n /** table has fixed width if all of it's columns are fixed */\n get fixedWidth() {\n return this._fixedColumnsWidthMap.size === this._visibleColumnNames.length;\n }\n /** @hidden */\n constructor(_tableScrollDispatcherService, _rtlService) {\n this._tableScrollDispatcherService = _tableScrollDispatcherService;\n this._rtlService = _rtlService;\n /** Subject that emits new map of fixed columns and their respective width. */\n this.fixedColumsWidthChange = new BehaviorSubject(new Map());\n /** Resize progress stream. */\n this.resizeInProgress$ = new BehaviorSubject(false);\n /** Whether cell mock should be visible. */\n this.cellMockVisible$ = signal(false, ...(ngDevMode ? [{ debugName: \"cellMockVisible$\" }] : []));\n /** Resizer position stream. */\n this.resizerPosition$ = new BehaviorSubject(0);\n /** @hidden */\n this._fixedColumnsWidthMap = new Map();\n /** @hidden */\n this._columnsCellMap = new Map();\n /** @hidden */\n this._visibleColumnNames = [];\n /** @hidden */\n this._visibleColumnLeftNeighbourMap = new Map();\n /** @hidden */\n this._visibleColumnRightNeighbourMap = new Map();\n /** @hidden */\n this._visibleColumnLeftOffsetPxMap = new Map();\n /** @hidden */\n this._visibleColumnRightOffsetPxMap = new Map();\n /** @hidden */\n this._startX = null;\n /** @hidden */\n this._clientStartX = null;\n /** @hidden */\n this._resizeInProgress = this.resizeInProgress$.value;\n /** @hidden */\n this._resizerPosition = null;\n /** @hidden */\n this._scrollLeft = 0;\n /** @hidden */\n this._markForCheck = new Subject();\n /** @hidden */\n this._destroyed = inject(DestroyRef);\n /** @hidden */\n this._resizerMoveSubscription = new Subscription();\n /** @hidden */\n this._rtl$ = computed(() => !!this._rtlService?.rtlSignal(), ...(ngDevMode ? [{ debugName: \"_rtl$\" }] : []));\n this._tableScrollDispatcherService\n ?.horizontallyScrolled()\n .pipe(takeUntilDestroyed(this._destroyed))\n .subscribe((scrollable) => {\n this.resizerPosition$.next(0);\n this._scrollLeft = scrollable.getScrollLeft();\n });\n }\n /** @hidden */\n ngOnDestroy() {\n this._resizeInProgress = false;\n this.resizeInProgress$.next(false);\n this._resizerMoveSubscription.unsubscribe();\n }\n /** @hidden */\n setTableRef(ref) {\n this._tableRef = ref;\n }\n /** @hidden initializes service with data, trigger columns width calculation. */\n setColumnNames(visibleColumnNames) {\n this._visibleColumnLeftNeighbourMap.clear();\n this._visibleColumnRightNeighbourMap.clear();\n visibleColumnNames.forEach((column, index) => {\n this._visibleColumnLeftNeighbourMap.set(column, visibleColumnNames[index - 1]);\n });\n visibleColumnNames.reverse().forEach((column, index) => {\n this._visibleColumnRightNeighbourMap.set(column, visibleColumnNames[index - 1]);\n });\n this._visibleColumnNames = [...visibleColumnNames];\n this.updateFrozenColumnsWidth();\n }\n /** @hidden */\n updateFrozenColumnsWidth() {\n let allPreviousWidths = 0, allNextWidths = 0;\n for (const [column, prevColumn] of this._visibleColumnLeftNeighbourMap.entries()) {\n allPreviousWidths +=\n this._columnsCellMap.get(prevColumn)?.[0]?.nativeElement.getBoundingClientRect().width ?? 0;\n this._visibleColumnLeftOffsetPxMap.set(column, allPreviousWidths);\n }\n for (const [column, nextColumn] of this._visibleColumnRightNeighbourMap.entries()) {\n allNextWidths +=\n this._columnsCellMap.get(nextColumn)?.[0]?.nativeElement.getBoundingClientRect().width ?? 0;\n this._visibleColumnRightOffsetPxMap.set(column, allNextWidths);\n }\n }\n /** @hidden */\n updateFrozenColumnsWidthAfterResize(columnName, diffX) {\n let found = false;\n for (const [column, width] of this._visibleColumnLeftOffsetPxMap.entries()) {\n if (column === columnName) {\n found = true;\n }\n else if (found) {\n this._visibleColumnLeftOffsetPxMap.set(column, width + diffX);\n }\n }\n }\n /** Retrieves custom column value or returns `unset` */\n getColumnWidthStyle(columnName) {\n const calculatedWidth = this._fixedColumnsWidthMap.get(columnName);\n return calculatedWidth || 'unset';\n }\n /** Previous column name */\n getPreviousColumnName(columnName) {\n return this._visibleColumnLeftNeighbourMap.get(columnName);\n }\n /** Previous column name */\n getNextColumnName(columnName) {\n return this._visibleColumnRightNeighbourMap.get(columnName);\n }\n /** Overall previous columns width. Used to calculate offset for the absolute positioned cells. */\n getPrevColumnsWidth(columnName) {\n return this._visibleColumnLeftOffsetPxMap.get(columnName) ?? 0;\n }\n /** Overall next columns width. Used to calculate offset for the absolute positioned cells. */\n getNextColumnsWidth(columnName) {\n return this._visibleColumnRightOffsetPxMap.get(columnName) ?? 0;\n }\n /** Register column's cell to get its dimensions in further. */\n registerColumnCell(columnName, cellElRef) {\n const columnCells = this._columnsCellMap.get(columnName) || [];\n this._columnsCellMap.set(columnName, [cellElRef, ...columnCells]);\n }\n /** Unregister column's cell. */\n unregisterColumnCell(columnName, cellElRef) {\n const columnCells = this._columnsCellMap.get(columnName) || [];\n const elmIndex = columnCells.findIndex((e) => e.nativeElement === cellElRef.nativeElement);\n if (elmIndex === -1) {\n return;\n }\n columnCells.splice(elmIndex, 1);\n this._columnsCellMap.set(columnName, columnCells);\n }\n /** Register the value of column width that changed from input */\n setCustomWidth(columnName, value) {\n this._fixedColumnsWidthMap.set(columnName, value);\n this.fixedColumsWidthChange.next(this._fixedColumnsWidthMap);\n }\n /** Set the appropriate column resizer position. */\n setInitialResizerPosition(resizerPosition, resizedColumn) {\n if (this.resizeInProgress) {\n return;\n }\n this._resizedColumn = resizedColumn;\n this._resizerPosition = null;\n this.resizerPosition$.next(this.resizerPosition);\n if (resizerPosition != null) {\n const scrollLeftOffset = this._scrollLeft * (this._rtl$() ? 1 : -1);\n this._resizerPosition = resizerPosition - TABLE_RESIZER_BORDER_WIDTH + scrollLeftOffset;\n this.resizerPosition$.next(this.resizerPosition);\n }\n this._markForCheck.next();\n }\n /** Hide the column resizer. */\n hideResizer() {\n if (this._resizeInProgress) {\n return;\n }\n this._resizerPosition = null;\n this.resizerPosition$.next(this.resizerPosition);\n this._markForCheck.next();\n }\n /** Handle start resizing. */\n startResize(event) {\n this._startX = this.resizerPosition;\n this._clientStartX = event.clientX;\n this._updateResizerPositionOnMouseMove();\n this._resizeInProgress = true;\n this.resizeInProgress$.next(true);\n }\n /** Handle end resizing. */\n finishResize(event) {\n this._resizerMoveSubscription.unsubscribe();\n this._resizeInProgress = false;\n this.resizeInProgress$.next(false);\n this._resizerPosition = null;\n this.resizerPosition$.next(this.resizerPosition);\n if (this._startX != null) {\n const clientStartX = this._clientStartX ?? 0;\n const diffX = this._rtl$() ? clientStartX - event.clientX : event.clientX - clientStartX;\n this._processResize(diffX);\n }\n this._startX = null;\n this._clientStartX = null;\n this._markForCheck.next();\n }\n /** Update columns width after resizing, prevent from having too small columns. */\n _processResize(diffX) {\n const resizedElement = this._columnsCellMap.get(this._resizedColumn)?.[0]?.nativeElement;\n const columnWidth = resizedElement?.getBoundingClientRect().width;\n if (!columnWidth || !resizedElement) {\n return;\n }\n if (diffX < 0 && columnWidth + diffX < this._tableRef.minimumColumnWidth) {\n diffX = this._tableRef.minimumColumnWidth - columnWidth;\n }\n if (!this.fixedWidth) {\n for (const [columnName, cells] of this._columnsCellMap.entries()) {\n if (cells.length) {\n this._fixedColumnsWidthMap.set(columnName, cells[0].nativeElement.getBoundingClientRect().width + 'px');\n }\n }\n this.fixedColumsWidthChange.next(this._fixedColumnsWidthMap);\n }\n /**\n * In case \"_resizedColumn\" is freezable, make sure the overall width of freezable columns does not exceed the width of the table.\n * If it does, columns will be made unfrozen.\n */\n if (diffX > 0 &&\n (this._tableRef._freezableColumns.has(this._resizedColumn) ||\n this._tableRef._freezableEndColumns?.has(this._resizedColumn))) {\n let actualWidth = this.getPrevColumnsWidth(this._resizedColumn) + columnWidth;\n if (this._tableRef._freezableEndColumns?.has(this._resizedColumn)) {\n actualWidth = this.getNextColumnsWidth(this._resizedColumn) + columnWidth;\n }\n const newWidth = actualWidth + diffX;\n const maxWidth = this._tableRef.getMaxAllowedFreezableColumnsWidth();\n if (newWidth >= maxWidth) {\n this._tableRef._freezableColumns.forEach((column) => {\n this._tableRef.unfreeze(column.toString());\n });\n }\n }\n const updatedWidth = columnWidth + diffX;\n this._fixedColumnsWidthMap.set(this._resizedColumn, updatedWidth + 'px');\n this.fixedColumsWidthChange.next(this._fixedColumnsWidthMap);\n this.updateFrozenColumnsWidthAfterResize(this._resizedColumn, diffX);\n const computedStyles = window.getComputedStyle(resizedElement);\n const padding = parseInt(computedStyles.paddingLeft, 10) + parseInt(computedStyles.paddingRight, 10);\n this._updateHeaderOverflowState(updatedWidth - padding);\n this._markForCheck.next();\n }\n /** Update column resizer position. */\n _updateResizerPositionOnMouseMove() {\n this._resizerMoveSubscription = fromEvent(document, 'mousemove')\n .pipe(debounceTime(10))\n .subscribe((event) => {\n const clientStartX = this._clientStartX ?? 0;\n const diffX = this._rtl$() ? clientStartX - event.clientX : event.clientX - clientStartX;\n this._resizerPosition = (this._startX ?? 0) + diffX;\n this.resizerPosition$.next(this.resizerPosition);\n this._markForCheck.next();\n });\n }\n /**\n * Check if the header text length goes over the column width. In such case applies text truncation with\n * ellipsis and make sure we also show a tooltip.\n *\n * @private\n */\n _updateHeaderOverflowState(updatedWidth) {\n const element = this._columnsCellMap\n .get(this._resizedColumn)\n ?.find((c) => c?.nativeElement.tagName === 'TH')?.nativeElement;\n const visibleColumn = this._tableRef.getVisibleTableColumns().find((c) => c.name === this._resizedColumn);\n const headerTextElem = element?.querySelector(`#${this._tableRef.id}-header-cell-${this._resizedColumn}`);\n if (!headerTextElem || !visibleColumn) {\n return;\n }\n visibleColumn.headerOverflows = headerTextElem.scrollWidth > updatedWidth;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableColumnResizeService, deps: [{ token: i1.TableScrollDispatcherService }, { token: i2.RtlService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableColumnResizeService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableColumnResizeService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i1.TableScrollDispatcherService }, { type: i2.RtlService, decorators: [{\n type: Optional\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLXJlc2l6ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzL3NlcnZpY2VzL3RhYmxlLWNvbHVtbi1yZXNpemUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFjLFVBQVUsRUFBYSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEgsT0FBTyxFQUFFLGVBQWUsRUFBYyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXhELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7O0FBRWpGLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLENBQUMsQ0FBQztBQUU1Qzs7Ozs7R0FLRztBQUVILE1BQU0sT0FBTyx3QkFBd0I7SUFHakMsZ0RBQWdEO0lBQ2hELElBQUksZ0JBQWdCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2xDLENBQUM7SUFRRCx1Q0FBdUM7SUFDdkMsSUFBSSxlQUFlO1FBQ2YsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFLRCxxQ0FBcUM7SUFDckMsSUFBSSxZQUFZO1FBQ1osT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFRCw2REFBNkQ7SUFDN0QsSUFBSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMs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QWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUVqRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssMEJBQTBCLENBQUMsWUFBb0I7UUFDbkQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWU7YUFDL0IsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7WUFDekIsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxFQUFFLGFBQWEsQ0FBQztRQUNwRSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLHNCQUFzQixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMxRyxNQUFNLGNBQWMsR0FBRyxPQUFPLEVBQUUsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLGdCQUFnQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUUxRyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDcEMsT0FBTztRQUNYLENBQUM7UUFDRCxhQUFhLENBQUMsZUFBZSxHQUFHLGNBQWMsQ0FBQyxXQUFXLEdBQUcsWUFBWSxDQUFDO0lBQzlFLENBQUM7OEdBeFdRLHdCQUF3QjtrSEFBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQURwQyxVQUFVOzswQkEwRkYsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIEVsZW1lbnRSZWYsIEluamVjdGFibGUsIE9uRGVzdHJveSwgT3B0aW9uYWwsIGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBSdGxTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJy4uL3RhYmxlJztcbmltcG9ydCB7IFRhYmxlU2Nyb2xsRGlzcGF0Y2hlclNlcnZpY2UgfSBmcm9tICcuL3RhYmxlLXNjcm9sbC1kaXNwYXRjaGVyLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgVEFCTEVfUkVTSVpFUl9CT1JERVJfV0lEVEggPSAzO1xuXG4vKipcbiAqIFNlcnZpY2UgdG8gaGFuZGxlIGFsbCB0aGluZ3MgcmVsYXRlZCB0byBjb2x1bW4gcmVzaXppbmc6XG4gKiAtIFNldHRpbmcgcmVzaXplclxuICogLSBQcm9jZXNzaW5nIHJlc2l6ZVxuICogLSBDYWxjdWxhdGluZyB0aGUgcmVhbCBjb2x1bW5zIHdpZHRoXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbHVtblJlc2l6ZVNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIC8qKiBTdWJqZWN0IHRoYXQgZW1pdHMgbmV3IG1hcCBvZiBmaXhlZCBjb2x1bW5zIGFuZCB0aGVpciByZXNwZWN0aXZlIHdpZHRoLiAqL1xuICAgIHJlYWRvbmx5IGZpeGVkQ29sdW1zV2lkdGhDaGFuZ2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hcDxzdHJpbmcsIHN0cmluZz4+KG5ldyBNYXAoKSk7XG4gICAgLyoqIEluZGljYXRlIGlmIHJlc2l6aW5nIHByb2Nlc3MgaW4gcHJvZ3Jlc3MuICovXG4gICAgZ2V0IHJlc2l6ZUluUHJvZ3Jlc3MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNpemVJblByb2dyZXNzO1xuICAgIH1cblxuICAgIC8qKiBSZXNpemUgcHJvZ3Jlc3Mgc3RyZWFtLiAqL1xuICAgIHJlYWRvbmx5IHJlc2l6ZUluUHJvZ3Jlc3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgICAvKiogV2hldGhlciBjZWxsIG1vY2sgc2hvdWxkIGJlIHZpc2libGUuICovXG4gICAgcmVhZG9ubHkgY2VsbE1vY2tWaXNpYmxlJCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgICAvKiogQ3VycmVudCBjb2x1bW4gcmVzaXplciBwb3NpdGlvbi4gKi9cbiAgICBnZXQgcmVzaXplclBvc2l0aW9uKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNpemVyUG9zaXRpb24gPz8gMDtcbiAgICB9XG5cbiAgICAvKiogUmVzaXplciBwb3NpdGlvbiBzdHJlYW0uICovXG4gICAgcmVhZG9ubHkgcmVzaXplclBvc2l0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcblxuICAgIC8qKiBPYnNlcnZhYmxlIHRvIG5vdGlmeSB0byBydW4gQ0QgKi9cbiAgICBnZXQgbWFya0ZvckNoZWNrKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWFya0ZvckNoZWNrLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKiB0YWJsZSBoYXMgZml4ZWQgd2lkdGggaWYgYWxsIG9mIGl0J3MgY29sdW1ucyBhcmUgZml4ZWQgKi9cbiAgICBnZXQgZml4ZWRXaWR0aCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpeGVkQ29sdW1uc1dpZHRoTWFwLnNpemUgPT09IHRoaXMuX3Zpc2libGVDb2x1bW5OYW1lcy5sZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9maXhlZENvbHVtbnNXaWR0aE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbHVtbnNDZWxsTWFwID0gbmV3IE1hcDxzdHJpbmcsIEVsZW1lbnRSZWY8SFRNTFRhYmxlRGF0YUNlbGxFbGVtZW50PltdPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF92aXNpYmxlQ29sdW1uTmFtZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Zpc2libGVDb2x1bW5MZWZ0TmVpZ2hib3VyTWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdmlzaWJsZUNvbHVtblJpZ2h0TmVpZ2hib3VyTWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdmlzaWJsZUNvbHVtbkxlZnRPZmZzZXRQeE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Zpc2libGVDb2x1bW5SaWdodE9mZnNldFB4TWFwID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3RhcnRYOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2xpZW50U3RhcnRYOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzaXplSW5Qcm9ncmVzcyA9IHRoaXMucmVzaXplSW5Qcm9ncmVzcyQudmFsdWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Jlc2l6ZWRDb2x1bW46IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzaXplclBvc2l0aW9uOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2Nyb2xsTGVmdCA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX21hcmtGb3JDaGVjayA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Rlc3Ryb3llZCA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzaXplck1vdmVTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RhYmxlUmVmOiBUYWJsZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcnRsJCA9IGNvbXB1dGVkKCgpID0+ICEhdGhpcy5fcnRsU2VydmljZT8ucnRsU2lnbmFsKCkpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfdGFibGVTY3JvbGxEaXNwYXRjaGVyU2VydmljZTogVGFibGVTY3JvbGxEaXNwYXRjaGVyU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfcnRsU2VydmljZTogUnRsU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLl90YWJsZVNjcm9sbERpc3BhdGNoZXJTZXJ2aWNlXG4gICAgICAgICAgICA/Lmhvcml6b250YWxseVNjcm9sbGVkKClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95ZWQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc2Nyb2xsYWJsZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzaXplclBvc2l0aW9uJC5uZXh0KDApO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Njcm9sbExlZnQgPSBzY3JvbGxhYmxlLmdldFNjcm9sbExlZnQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Jlc2l6ZUluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yZXNpemVJblByb2dyZXNzJC5uZXh0KGZhbHNlKTtcblxuICAgICAgICB0aGlzLl9yZXNpemVyTW92ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0VGFibGVSZWYocmVmOiBUYWJsZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJsZVJlZiA9IHJlZjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBpbml0aWFsaXplcyBzZXJ2aWNlIHdpdGggZGF0YSwgdHJpZ2dlciBjb2x1bW5zIHdpZHRoIGNhbGN1bGF0aW9uLiAqL1xuICAgIHNldENvbHVtbk5hbWVzKHZpc2libGVDb2x1bW5OYW1lczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdmlzaWJsZUNvbHVtbkxlZnROZWlnaGJvdXJNYXAuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5fdmlzaWJsZUNvbHVtblJpZ2h0TmVpZ2hib3VyTWFwLmNsZWFyKCk7XG4gICAgICAgIHZpc2libGVDb2x1bW5OYW1lcy5mb3JFYWNoKChjb2x1bW4sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl92aXNpYmxlQ29sdW1uTGVmdE5laWdoYm91ck1hcC5zZXQoY29sdW1uLCB2aXNpYmxlQ29sdW1uTmFtZXNbaW5kZXggLSAxXSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2aXNpYmxlQ29sdW1uTmFtZXMucmV2ZXJzZSgpLmZvckVhY2goKGNvbHVtbiwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3Zpc2libGVDb2x1bW5SaWdodE5laWdoYm91ck1hcC5zZXQoY29sdW1uLCB2aXNpYmxlQ29sdW1uTmFtZXNbaW5kZXggLSAxXSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl92aXNpYmxlQ29sdW1uTmFtZXMgPSBbLi4udmlzaWJsZUNvbHVtbk5hbWVzXTtcbiAgICAgICAgdGhpcy51cGRhdGVGcm96ZW5Db2x1bW5zV2lkdGgoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHVwZGF0ZUZyb3plbkNvbHVtbnNXaWR0aCgpOiB2b2lkIHtcbiAgICAgICAgbGV0IGFsbFByZXZpb3VzV2lkdGhzID0gMCxcbiAgICAgICAgICAgIGFsbE5leHRXaWR0aHMgPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IFtjb2x1bW4sIHByZXZDb2x1bW5dIG9mIHRoaXMuX3Zpc2libGVDb2x1bW5MZWZ0TmVpZ2hib3VyTWFwLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgYWxsUHJldmlvdXNXaWR0aHMgKz1cbiAgICAgICAgICAgICAgICB0aGlzLl9jb2x1bW5zQ2VsbE1hcC5nZXQocHJldkNvbHVtbiBhcyBzdHJpbmcpPy5bMF0/Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPz8gMDtcbiAgICAgICAgICAgIHRoaXMuX3Zpc2libGVDb2x1bW5MZWZ0T2Zmc2V0UHhNYXAuc2V0KGNvbHVtbiwgYWxsUHJldmlvdXNXaWR0aHMpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgW2NvbHVtbiwgbmV4dENvbHVtbl0gb2YgdGhpcy5fdmlzaWJsZUNvbHVtblJpZ2h0TmVpZ2hib3VyTWFwLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgYWxsTmV4dFdpZHRocyArPVxuICAgICAgICAgICAgICAgIHRoaXMuX2NvbHVtbnNDZWxsTWFwLmdldChuZXh0Q29sdW1uIGFzIHN0cmluZyk/LlswXT8ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCA/PyAwO1xuICAgICAgICAgICAgdGhpcy5fdmlzaWJsZUNvbHVtblJpZ2h0T2Zmc2V0UHhNYXAuc2V0KGNvbHVtbiwgYWxsTmV4dFdpZHRocyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHVwZGF0ZUZyb3plbkNvbHVtbnNXaWR0aEFmdGVyUmVzaXplKGNvbHVtbk5hbWU6IHN0cmluZywgZGlmZlg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgICAgICAgZm9yIChjb25zdCBbY29sdW1uLCB3aWR0aF0gb2YgdGhpcy5fdmlzaWJsZUNvbHVtbkxlZnRPZmZzZXRQeE1hcC5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgIGlmIChjb2x1bW4gPT09IGNvbHVtbk5hbWUpIHtcbiAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZvdW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdmlzaWJsZUNvbHVtbkxlZnRPZmZzZXRQeE1hcC5zZXQoY29sdW1uLCB3aWR0aCArIGRpZmZYKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBSZXRyaWV2ZXMgY3VzdG9tIGNvbHVtbiB2YWx1ZSBvciByZXR1cm5zIGB1bnNldGAgKi9cbiAgICBnZXRDb2x1bW5XaWR0aFN0eWxlKGNvbHVtbk5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGNhbGN1bGF0ZWRXaWR0aCA9IHRoaXMuX2ZpeGVkQ29sdW1uc1dpZHRoTWFwLmdldChjb2x1bW5OYW1lKTtcbiAgICAgICAgcmV0dXJuIGNhbGN1bGF0ZWRXaWR0aCB8fCAndW5zZXQnO1xuICAgIH1cblxuICAgIC8qKiBQcmV2aW91cyBjb2x1bW4gbmFtZSAqL1xuICAgIGdldFByZXZpb3VzQ29sdW1uTmFtZShjb2x1bW5OYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZUNvbHVtbkxlZnROZWlnaGJvdXJNYXAuZ2V0KGNvbHVtbk5hbWUpO1xuICAgIH1cblxuICAgIC8qKiBQcmV2aW91cyBjb2x1bW4gbmFtZSAqL1xuICAgIGdldE5leHRDb2x1bW5OYW1lKGNvbHVtbk5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl92aXNpYmxlQ29sdW1uUmlnaHROZWlnaGJvdXJNYXAuZ2V0KGNvbHVtbk5hbWUpO1xuICAgIH1cblxuICAgIC8qKiBPdmVyYWxsIHByZXZpb3VzIGNvbHVtbnMgd2lkdGguIFVzZWQgdG8gY2FsY3VsYXRlIG9mZnNldCBmb3IgdGhlIGFic29sdXRlIHBvc2l0aW9uZWQgY2VsbHMuICovXG4gICAgZ2V0UHJldkNvbHVtbnNXaWR0aChjb2x1bW5OYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZUNvbHVtbkxlZnRPZmZzZXRQeE1hcC5nZXQoY29sdW1uTmFtZSkgPz8gMDtcbiAgICB9XG5cbiAgICAvKiogT3ZlcmFsbCBuZXh0IGNvbHVtbnMgd2lkdGguIFVzZWQgdG8gY2FsY3VsYXRlIG9mZnNldCBmb3IgdGhlIGFic29sdXRlIHBvc2l0aW9uZWQgY2VsbHMuICovXG4gICAgZ2V0TmV4dENvbHVtbnNXaWR0aChjb2x1bW5OYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZUNvbHVtblJpZ2h0T2Zmc2V0UHhNYXAuZ2V0KGNvbHVtbk5hbWUpID8/IDA7XG4gICAgfVxuXG4gICAgLyoqIFJlZ2lzdGVyIGNvbHVtbidzIGNlbGwgdG8gZ2V0IGl0cyBkaW1lbnNpb25zIGluIGZ1cnRoZXIuICovXG4gICAgcmVnaXN0ZXJDb2x1bW5DZWxsKGNvbHVtbk5hbWU6IHN0cmluZywgY2VsbEVsUmVmOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbHVtbkNlbGxzID0gdGhpcy5fY29sdW1uc0NlbGxNYXAuZ2V0KGNvbHVtbk5hbWUpIHx8IFtdO1xuICAgICAgICB0aGlzLl9jb2x1bW5zQ2VsbE1hcC5zZXQoY29sdW1uTmFtZSwgW2NlbGxFbFJlZiwgLi4uY29sdW1uQ2VsbHNdKTtcbiAgICB9XG5cbiAgICAvKiogVW5yZWdpc3RlciBjb2x1bW4ncyBjZWxsLiAqL1xuICAgIHVucmVnaXN0ZXJDb2x1bW5DZWxsKGNvbHVtbk5hbWU6IHN0cmluZywgY2VsbEVsUmVmOiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbHVtbkNlbGxzID0gdGhpcy5fY29sdW1uc0NlbGxNYXAuZ2V0KGNvbHVtbk5hbWUpIHx8IFtdO1xuICAgICAgICBjb25zdCBlbG1JbmRleCA9IGNvbHVtbkNlbGxzLmZpbmRJbmRleCgoZSkgPT4gZS5uYXRpdmVFbGVtZW50ID09PSBjZWxsRWxSZWYubmF0aXZlRWxlbWVudCk7XG5cbiAgICAgICAgaWYgKGVsbUluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29sdW1uQ2VsbHMuc3BsaWNlKGVsbUluZGV4LCAxKTtcblxuICAgICAgICB0aGlzLl9jb2x1bW5zQ2VsbE1hcC5zZXQoY29sdW1uTmFtZSwgY29sdW1uQ2VsbHMpO1xuICAgIH1cblxuICAgIC8qKiBSZWdpc3RlciB0aGUgdmFsdWUgb2YgY29sdW1uIHdpZHRoIHRoYXQgY2hhbmdlZCBmcm9tICBpbnB1dCAqL1xuICAgIHNldEN1c3RvbVdpZHRoKGNvbHVtbk5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9maXhlZENvbHVtbnNXaWR0aE1hcC5zZXQoY29sdW1uTmFtZSwgdmFsdWUpO1xuICAgICAgICB0aGlzLmZpeGVkQ29sdW1zV2lkdGhDaGFuZ2UubmV4dCh0aGlzLl9maXhlZENvbHVtbnNXaWR0aE1hcCk7XG4gICAgfVxuXG4gICAgLyoqIFNldCB0aGUgYXBwcm9wcmlhdGUgY29sdW1uIHJlc2l6ZXIgcG9zaXRpb24uICovXG4gICAgc2V0SW5pdGlhbFJlc2l6ZXJQb3NpdGlvbihyZXNpemVyUG9zaXRpb246IG51bWJlciwgcmVzaXplZENvbHVtbjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJlc2l6ZUluUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3Jlc2l6ZWRDb2x1bW4gPSByZXNpemVkQ29sdW1uO1xuICAgICAgICB0aGlzLl9yZXNpemVyUG9zaXRpb24gPSBudWxsO1xuICAgICAgICB0aGlzLnJlc2l6ZXJQb3NpdGlvbiQubmV4dCh0aGlzLnJlc2l6ZXJQb3NpdGlvbik7XG5cbiAgICAgICAgaWYgKHJlc2l6ZXJQb3NpdGlvbiAhPSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCBzY3JvbGxMZWZ0T2Zmc2V0ID0gdGhpcy5fc2Nyb2xsTGVmdCAqICh0aGlzLl9ydGwkKCkgPyAxIDogLTEpO1xuICAgICAgICAgICAgdGhpcy5fcmVzaXplclBvc2l0aW9uID0gcmVzaXplclBvc2l0aW9uIC0gVEFCTEVfUkVTSVpFUl9CT1JERVJfV0lEVEggKyBzY3JvbGxMZWZ0T2Zmc2V0O1xuICAgICAgICAgICAgdGhpcy5yZXNpemVyUG9zaXRpb24kLm5leHQodGhpcy5yZXNpemVyUG9zaXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbWFya0ZvckNoZWNrLm5leHQoKTtcbiAgICB9XG5cbiAgICAvKiogSGlkZSB0aGUgY29sdW1uIHJlc2l6ZXIuICovXG4gICAgaGlkZVJlc2l6ZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9yZXNpemVJblByb2dyZXNzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9yZXNpemVyUG9zaXRpb24gPSBudWxsO1xuICAgICAgICB0aGlzLnJlc2l6ZXJQb3NpdGlvbiQubmV4dCh0aGlzLnJlc2l6ZXJQb3NpdGlvbik7XG4gICAgICAgIHRoaXMuX21hcmtGb3JDaGVjay5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqIEhhbmRsZSBzdGFydCByZXNpemluZy4gKi9cbiAgICBzdGFydFJlc2l6ZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdGFydFggPSB0aGlzLnJlc2l6ZXJQb3NpdGlvbjtcbiAgICAgICAgdGhpcy5fY2xpZW50U3RhcnRYID0gZXZlbnQuY2xpZW50WDtcblxuICAgICAgICB0aGlzLl91cGRhdGVSZXNpemVyUG9zaXRpb25Pbk1vdXNlTW92ZSgpO1xuXG4gICAgICAgIHRoaXMuX3Jlc2l6ZUluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgICAgICB0aGlzLnJlc2l6ZUluUHJvZ3Jlc3MkLm5leHQodHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEhhbmRsZSBlbmQgcmVzaXppbmcuICovXG4gICAgZmluaXNoUmVzaXplKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Jlc2l6ZXJNb3ZlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgdGhpcy5fcmVzaXplSW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlc2l6ZUluUHJvZ3Jlc3MkLm5leHQoZmFsc2UpO1xuICAgICAgICB0aGlzLl9yZXNpemVyUG9zaXRpb24gPSBudWxsO1xuICAgICAgICB0aGlzLnJlc2l6ZXJQb3NpdGlvbiQubmV4dCh0aGlzLnJlc2l6ZXJQb3NpdGlvbik7XG5cbiAgICAgICAgaWYgKHRoaXMuX3N0YXJ0WCAhPSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCBjbGllbnRTdGFydFggPSB0aGlzLl9jbGllbnRTdGFydFggPz8gMDtcbiAgICAgICAgICAgIGNvbnN0IGRpZmZYID0gdGhpcy5fcnRsJCgpID8gY2xpZW50U3RhcnRYIC0gZXZlbnQuY2xpZW50WCA6IGV2ZW50LmNsaWVudFggLSBjbGllbnRTdGFydFg7XG5cbiAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NSZXNpemUoZGlmZlgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc3RhcnRYID0gbnVsbDtcbiAgICAgICAgdGhpcy5fY2xpZW50U3RhcnRYID0gbnVsbDtcblxuICAgICAgICB0aGlzLl9tYXJrRm9yQ2hlY2submV4dCgpO1xuICAgIH1cblxuICAgIC8qKiBVcGRhdGUgY29sdW1ucyB3aWR0aCBhZnRlciByZXNpemluZywgcHJldmVudCBmcm9tIGhhdmluZyB0b28gc21hbGwgY29sdW1ucy4gKi9cbiAgICBfcHJvY2Vzc1Jlc2l6ZShkaWZmWDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlc2l6ZWRFbGVtZW50ID0gdGhpcy5fY29sdW1uc0NlbGxNYXAuZ2V0KHRoaXMuX3Jlc2l6ZWRDb2x1bW4pPy5bMF0/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGNvbHVtbldpZHRoID0gcmVzaXplZEVsZW1lbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuXG4gICAgICAgIGlmICghY29sdW1uV2lkdGggfHwgIXJlc2l6ZWRFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGlmZlggPCAwICYmIGNvbHVtbldpZHRoICsgZGlmZlggPCB0aGlzLl90YWJsZVJlZi5taW5pbXVtQ29sdW1uV2lkdGgpIHtcbiAgICAgICAgICAgIGRpZmZYID0gdGhpcy5fdGFibGVSZWYubWluaW11bUNvbHVtbldpZHRoIC0gY29sdW1uV2lkdGg7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuZml4ZWRXaWR0aCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBbY29sdW1uTmFtZSwgY2VsbHNdIG9mIHRoaXMuX2NvbHVtbnNDZWxsTWFwLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgICAgIGlmIChjZWxscy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZml4ZWRDb2x1bW5zV2lkdGhNYXAuc2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxzWzBdLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggKyAncHgnXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5maXhlZENvbHVtc1dpZHRoQ2hhbmdlLm5leHQodGhpcy5fZml4ZWRDb2x1bW5zV2lkdGhNYXApO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEluIGNhc2UgXCJfcmVzaXplZENvbHVtblwiIGlzIGZyZWV6YWJsZSwgbWFrZSBzdXJlIHRoZSBvdmVyYWxsIHdpZHRoIG9mIGZyZWV6YWJsZSBjb2x1bW5zIGRvZXMgbm90IGV4Y2VlZCB0aGUgd2lkdGggb2YgdGhlIHRhYmxlLlxuICAgICAgICAgKiBJZiBpdCBkb2VzLCBjb2x1bW5zIHdpbGwgYmUgbWFkZSB1bmZyb3plbi5cbiAgICAgICAgICovXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIGRpZmZYID4gMCAmJlxuICAgICAgICAgICAgKHRoaXMuX3RhYmxlUmVmLl9mcmVlemFibGVDb2x1bW5zLmhhcyh0aGlzLl9yZXNpemVkQ29sdW1uKSB8fFxuICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlUmVmLl9mcmVlemFibGVFbmRDb2x1bW5zPy5oYXModGhpcy5fcmVzaXplZENvbHVtbikpXG4gICAgICAgICkge1xuICAgICAgICAgICAgbGV0IGFjdHVhbFdpZHRoID0gdGhpcy5nZXRQcmV2Q29sdW1uc1dpZHRoKHRoaXMuX3Jlc2l6ZWRDb2x1bW4pICsgY29sdW1uV2lkdGg7XG4gICAgICAgICAgICBpZiAodGhpcy5fdGFibGVSZWYuX2ZyZWV6YWJsZUVuZENvbHVtbnM/Lmhhcyh0aGlzLl9yZXNpemVkQ29sdW1uKSkge1xuICAgICAgICAgICAgICAgIGFjdHVhbFdpZHRoID0gdGhpcy5nZXROZXh0Q29sdW1uc1dpZHRoKHRoaXMuX3Jlc2l6ZWRDb2x1bW4pICsgY29sdW1uV2lkdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBuZXdXaWR0aCA9IGFjdHVhbFdpZHRoICsgZGlmZlg7XG4gICAgICAgICAgICBjb25zdCBtYXhXaWR0aCA9IHRoaXMuX3RhYmxlUmVmLmdldE1heEFsbG93ZWRGcmVlemFibGVDb2x1bW5zV2lkdGgoKTtcbiAgICAgICAgICAgIGlmIChuZXdXaWR0aCA+PSBtYXhXaWR0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlUmVmLl9mcmVlemFibGVDb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90YWJsZVJlZi51bmZyZWV6ZShjb2x1bW4udG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1cGRhdGVkV2lkdGggPSBjb2x1bW5XaWR0aCArIGRpZmZYO1xuICAgICAgICB0aGlzLl9maXhlZENvbHVtbnNXaWR0aE1hcC5zZXQodGhpcy5fcmVzaXplZENvbHVtbiwgdXBkYXRlZFdpZHRoICsgJ3B4Jyk7XG4gICAgICAgIHRoaXMuZml4ZWRDb2x1bXNXaWR0aENoYW5nZS5uZXh0KHRoaXMuX2ZpeGVkQ29sdW1uc1dpZHRoTWFwKTtcbiAgICAgICAgdGhpcy51cGRhdGVGcm96ZW5Db2x1bW5zV2lkdGhBZnRlclJlc2l6ZSh0aGlzLl9yZXNpemVkQ29sdW1uLCBkaWZmWCk7XG5cbiAgICAgICAgY29uc3QgY29tcHV0ZWRTdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShyZXNpemVkRWxlbWVudCk7XG4gICAgICAgIGNvbnN0IHBhZGRpbmcgPSBwYXJzZUludChjb21wdXRlZFN0eWxlcy5wYWRkaW5nTGVmdCwgMTApICsgcGFyc2VJbnQoY29tcHV0ZWRTdHlsZXMucGFkZGluZ1JpZ2h0LCAxMCk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUhlYWRlck92ZXJmbG93U3RhdGUodXBkYXRlZFdpZHRoIC0gcGFkZGluZyk7XG4gICAgICAgIHRoaXMuX21hcmtGb3JDaGVjay5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqIFVwZGF0ZSBjb2x1bW4gcmVzaXplciBwb3NpdGlvbi4gKi9cbiAgICBwcml2YXRlIF91cGRhdGVSZXNpemVyUG9zaXRpb25Pbk1vdXNlTW92ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVzaXplck1vdmVTdWJzY3JpcHRpb24gPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsICdtb3VzZW1vdmUnKVxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2xpZW50U3RhcnRYID0gdGhpcy5fY2xpZW50U3RhcnRYID8/IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlmZlggPSB0aGlzLl9ydGwkKCkgPyBjbGllbnRTdGFydFggLSBldmVudC5jbGllbnRYIDogZXZlbnQuY2xpZW50WCAtIGNsaWVudFN0YXJ0WDtcblxuICAgICAgICAgICAgICAgIHRoaXMuX3Jlc2l6ZXJQb3NpdGlvbiA9ICh0aGlzLl9zdGFydFggPz8gMCkgKyBkaWZmWDtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZXJQb3NpdGlvbiQubmV4dCh0aGlzLnJlc2l6ZXJQb3NpdGlvbik7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9tYXJrRm9yQ2hlY2submV4dCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIGhlYWRlciB0ZXh0IGxlbmd0aCBnb2VzIG92ZXIgdGhlIGNvbHVtbiB3aWR0aC4gSW4gc3VjaCBjYXNlIGFwcGxpZXMgdGV4dCB0cnVuY2F0aW9uIHdpdGhcbiAgICAgKiBlbGxpcHNpcyBhbmQgbWFrZSBzdXJlIHdlIGFsc28gc2hvdyBhIHRvb2x0aXAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZUhlYWRlck92ZXJmbG93U3RhdGUodXBkYXRlZFdpZHRoOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX2NvbHVtbnNDZWxsTWFwXG4gICAgICAgICAgICAuZ2V0KHRoaXMuX3Jlc2l6ZWRDb2x1bW4pXG4gICAgICAgICAgICA/LmZpbmQoKGMpID0+IGM/Lm5hdGl2ZUVsZW1lbnQudGFnTmFtZSA9PT0gJ1RIJyk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHZpc2libGVDb2x1bW4gPSB0aGlzLl90YWJsZVJlZi5nZXRWaXNpYmxlVGFibGVDb2x1bW5zKCkuZmluZCgoYykgPT4gYy5uYW1lID09PSB0aGlzLl9yZXNpemVkQ29sdW1uKTtcbiAgICAgICAgY29uc3QgaGVhZGVyVGV4dEVsZW0gPSBlbGVtZW50Py5xdWVyeVNlbGVjdG9yKGAjJHt0aGlzLl90YWJsZVJlZi5pZH0taGVhZGVyLWNlbGwtJHt0aGlzLl9yZXNpemVkQ29sdW1ufWApO1xuXG4gICAgICAgIGlmICghaGVhZGVyVGV4dEVsZW0gfHwgIXZpc2libGVDb2x1bW4pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2aXNpYmxlQ29sdW1uLmhlYWRlck92ZXJmbG93cyA9IGhlYWRlclRleHRFbGVtLnNjcm9sbFdpZHRoID4gdXBkYXRlZFdpZHRoO1xuICAgIH1cbn1cbiJdfQ==","import { computed, Directive, inject, Input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FDK_FOCUSABLE_ITEM_DIRECTIVE, FocusableItemDirective, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { TableCellDirective } from '@fundamental-ngx/core/table';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime, filter, map } from 'rxjs/operators';\nimport { TableColumnResizeService } from '../services/table-column-resize.service';\nimport * as i0 from \"@angular/core\";\nexport const TABLE_CELL_RESIZABLE_THRESHOLD_PX = 4;\n/**\n * Tracks mouse movement over the cell if the mouse pointer near the side of the cell, informs resize service.\n */\nexport class PlatformTableCellResizableDirective extends TableCellDirective {\n constructor() {\n super(...arguments);\n /** @hidden */\n this._resizableSide = 'both';\n /** @hidden */\n this._rtl$ = computed(() => !!this._rtlService?.rtlSignal(), ...(ngDevMode ? [{ debugName: \"_rtl$\" }] : []));\n /** @hidden */\n this._tableColumnResizeService = inject(TableColumnResizeService);\n /** @hidden */\n this._rtlService = inject(RtlService, {\n optional: true\n });\n }\n /** First column can be resized only by its end */\n set resizableSide(value) {\n if (!value) {\n return;\n }\n this._resizableSide = value;\n }\n /** @hidden */\n ngOnInit() {\n this._zone.runOutsideAngular(() => {\n fromEvent(this.elementRef.nativeElement, 'mousemove')\n .pipe(filter(() => this._tableColumnResizeService?.resizeInProgress !== true), debounceTime(5), map((event) => this._getResizer(event) || { resizerPosition: 0, resizedColumn: this.columnName }), takeUntilDestroyed(this._destroyRef))\n .subscribe((data) => {\n this._tableColumnResizeService.setInitialResizerPosition(data.resizerPosition, data.resizedColumn);\n });\n fromEvent(this.elementRef.nativeElement, 'focus')\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._tableColumnResizeService.setInitialResizerPosition(0, this.columnName);\n });\n });\n }\n /** @hidden */\n ngAfterViewInit() {\n if (this.columnName == null) {\n return;\n }\n this._tableColumnResizeService?.registerColumnCell(this.columnName, this.elementRef);\n }\n /** @hidden */\n ngOnDestroy() {\n this._tableColumnResizeService?.unregisterColumnCell(this.columnName, this.elementRef);\n }\n /** @hidden */\n _getResizer(event) {\n const el = this.elementRef.nativeElement;\n const elPosition = el.getBoundingClientRect();\n // check if mouse is within 5px of cell border\n if (event.clientX > elPosition.x + elPosition.width - 5 || event.clientX < elPosition.x + 5) {\n let resizerPosition;\n let resizedColumn;\n const pointerOnLeft = this._rtl$()\n ? elPosition.right - event.clientX < TABLE_CELL_RESIZABLE_THRESHOLD_PX\n : event.clientX - elPosition.left < TABLE_CELL_RESIZABLE_THRESHOLD_PX;\n if (pointerOnLeft && this._resizableSide !== 'end') {\n resizerPosition = this._rtl$()\n ? el.parentElement.offsetWidth - (el.offsetLeft + el.offsetWidth)\n : el.offsetLeft;\n resizedColumn = this._tableColumnResizeService.getPreviousColumnName(this.columnName);\n }\n const pointerOnRight = this._rtl$()\n ? event.clientX - elPosition.left < TABLE_CELL_RESIZABLE_THRESHOLD_PX\n : elPosition.right - event.clientX < TABLE_CELL_RESIZABLE_THRESHOLD_PX;\n if (pointerOnRight && this._resizableSide !== 'start') {\n resizerPosition = this._rtl$()\n ? el.parentElement.offsetWidth - el.offsetLeft\n : el.offsetLeft + el.offsetWidth;\n resizedColumn = this.columnName;\n }\n if (!resizedColumn) {\n return null;\n }\n return { resizerPosition: resizerPosition, resizedColumn };\n }\n else {\n return null;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformTableCellResizableDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: PlatformTableCellResizableDirective, isStandalone: true, selector: \"[fdpTableCellResizable]\", inputs: { resizableSide: [\"fdpTableCellResizable\", \"resizableSide\"], columnName: \"columnName\" }, providers: [\n {\n provide: FDK_FOCUSABLE_ITEM_DIRECTIVE,\n useExisting: PlatformTableCellResizableDirective\n },\n {\n provide: FocusableItemDirective,\n useExisting: PlatformTableCellResizableDirective\n },\n {\n provide: TableCellDirective,\n useExisting: PlatformTableCellResizableDirective\n }\n ], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: PlatformTableCellResizableDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdpTableCellResizable]',\n standalone: true,\n providers: [\n {\n provide: FDK_FOCUSABLE_ITEM_DIRECTIVE,\n useExisting: PlatformTableCellResizableDirective\n },\n {\n provide: FocusableItemDirective,\n useExisting: PlatformTableCellResizableDirective\n },\n {\n provide: TableCellDirective,\n useExisting: PlatformTableCellResizableDirective\n }\n ]\n }]\n }], propDecorators: { resizableSide: [{\n type: Input,\n args: ['fdpTableCellResizable']\n }], columnName: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC1yZXNpemFibGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzL2RpcmVjdGl2ZXMvdGFibGUtY2VsbC1yZXNpemFibGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUVyRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7QUFJbkYsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQUcsQ0FBQyxDQUFDO0FBRW5EOztHQUVHO0FBbUJILE1BQU0sT0FBTyxtQ0FDVCxTQUFRLGtCQUFrQjtJQW5COUI7O1FBb0NJLGNBQWM7UUFDTixtQkFBYyxHQUE2QixNQUFNLENBQUM7UUFFMUQsY0FBYztRQUNHLFVBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLGlEQUFDLENBQUM7UUFFekUsY0FBYztRQUNHLDhCQUF5QixHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBRTlFLGNBQWM7UUFDRyxnQkFBVyxHQUFHLE1B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QUksQ0FBQztRQUNoQixDQUFDO0lBQ0wsQ0FBQzs4R0E1R1EsbUNBQW1DO2tHQUFuQyxtQ0FBbUMsdUtBZmpDO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLDRCQUE0QjtnQkFDckMsV0FBVyxFQUFFLG1DQUFtQzthQUNuRDtZQUNEO2dCQUNJLE9BQU8sRUFBRSxzQkFBc0I7Z0JBQy9CLFdBQVcsRUFBRSxtQ0FBbUM7YUFDbkQ7WUFDRDtnQkFDSSxPQUFPLEVBQUUsa0JBQWtCO2dCQUMzQixXQUFXLEVBQUUsbUNBQW1DO2FBQ25EO1NBQ0o7OzJGQUVRLG1DQUFtQztrQkFsQi9DLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHlCQUF5QjtvQkFDbkMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsNEJBQTRCOzRCQUNyQyxXQUFXLHFDQUFxQzt5QkFDbkQ7d0JBQ0Q7NEJBQ0ksT0FBTyxFQUFFLHNCQUFzQjs0QkFDL0IsV0FBVyxxQ0FBcUM7eUJBQ25EO3dCQUNEOzRCQUNJLE9BQU8sRUFBRSxrQkFBa0I7NEJBQzNCLFdBQVcscUNBQXFDO3lCQUNuRDtxQkFDSjtpQkFDSjs4QkFPTyxhQUFhO3NCQURoQixLQUFLO3VCQUFDLHVCQUF1QjtnQkFXOUIsVUFBVTtzQkFEVCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgY29tcHV0ZWQsIERpcmVjdGl2ZSwgaW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRkRLX0ZPQ1VTQUJMRV9JVEVNX0RJUkVDVElWRSwgRm9jdXNhYmxlSXRlbURpcmVjdGl2ZSwgUnRsU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IFRhYmxlQ2VsbERpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90YWJsZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUYWJsZUNvbHVtblJlc2l6ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90YWJsZS1jb2x1bW4tcmVzaXplLnNlcnZpY2UnO1xuXG5leHBvcnQgdHlwZSBUYWJsZUNvbHVtblJlc2l6YWJsZVNpZGUgPSAnc3RhcnQnIHwgJ2VuZCcgfCAnYm90aCc7XG5cbmV4cG9ydCBjb25zdCBUQUJMRV9DRUxMX1JFU0laQUJMRV9USFJFU0hPTERfUFggPSA0O1xuXG4vKipcbiAqIFRyYWNrcyBtb3VzZSBtb3ZlbWVudCBvdmVyIHRoZSBjZWxsIGlmIHRoZSBtb3VzZSBwb2ludGVyIG5lYXIgdGhlIHNpZGUgb2YgdGhlIGNlbGwsIGluZm9ybXMgcmVzaXplIHNlcnZpY2UuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2ZkcFRhYmxlQ2VsbFJlc2l6YWJsZV0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZES19GT0NVU0FCTEVfSVRFTV9ESVJFQ1RJVkUsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogUGxhdGZvcm1UYWJsZUNlbGxSZXNpemFibGVEaXJlY3RpdmVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRm9jdXNhYmxlSXRlbURpcmVjdGl2ZSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBQbGF0Zm9ybVRhYmxlQ2VsbFJlc2l6YWJsZURpcmVjdGl2ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBUYWJsZUNlbGxEaXJlY3RpdmUsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogUGxhdGZvcm1UYWJsZUNlbGxSZXNpemFibGVEaXJlY3RpdmVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgUGxhdGZvcm1UYWJsZUNlbGxSZXNpemFibGVEaXJlY3RpdmVcbiAgICBleHRlbmRzIFRhYmxlQ2VsbERpcmVjdGl2ZVxuICAgIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgICAvKiogRmlyc3QgY29sdW1uIGNhbiBiZSByZXNpemVkIG9ubHkgYnkgaXRzIGVuZCAqL1xuICAgIEBJbnB1dCgnZmRwVGFibGVDZWxsUmVzaXphYmxlJylcbiAgICBzZXQgcmVzaXphYmxlU2lkZSh2YWx1ZTogVGFibGVDb2x1bW5SZXNpemFibGVTaWRlKSB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3Jlc2l6YWJsZVNpZGUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQ29sdW1uIG5hbWUgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbHVtbk5hbWU6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzaXphYmxlU2lkZTogVGFibGVDb2x1bW5SZXNpemFibGVTaWRlID0gJ2JvdGgnO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ydGwkID0gY29tcHV0ZWQoKCkgPT4gISF0aGlzLl9ydGxTZXJ2aWNlPy5ydGxTaWduYWwoKSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RhYmxlQ29sdW1uUmVzaXplU2VydmljZSA9IGluamVjdChUYWJsZUNvbHVtblJlc2l6ZVNlcnZpY2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ydGxTZXJ2aWNlID0gaW5qZWN0KFJ0bFNlcnZpY2UsIHtcbiAgICAgICAgb3B0aW9uYWw6IHRydWVcbiAgICB9KTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnbW91c2Vtb3ZlJylcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuX3RhYmxlQ29sdW1uUmVzaXplU2VydmljZT8ucmVzaXplSW5Qcm9ncmVzcyAhPT0gdHJ1ZSksXG4gICAgICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSg1KSxcbiAgICAgICAgICAgICAgICAgICAgbWFwKChldmVudCkgPT4gdGhpcy5fZ2V0UmVzaXplcihldmVudCkgfHwgeyByZXNpemVyUG9zaXRpb246IDAsIHJlc2l6ZWRDb2x1bW46IHRoaXMuY29sdW1uTmFtZSB9KSxcbiAgICAgICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGFibGVDb2x1bW5SZXNpemVTZXJ2aWNlLnNldEluaXRpYWxSZXNpemVyUG9zaXRpb24oZGF0YS5yZXNpemVyUG9zaXRpb24sIGRhdGEucmVzaXplZENvbHVtbik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBmcm9tRXZlbnQ8Rm9jdXNFdmVudD4odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdmb2N1cycpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90YWJsZUNvbHVtblJlc2l6ZVNlcnZpY2Uuc2V0SW5pdGlhbFJlc2l6ZXJQb3NpdGlvbigwLCB0aGlzLmNvbHVtbk5hbWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY29sdW1uTmFtZSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl90YWJsZUNvbHVtblJlc2l6ZVNlcnZpY2U/LnJlZ2lzdGVyQ29sdW1uQ2VsbCh0aGlzLmNvbHVtbk5hbWUsIHRoaXMuZWxlbWVudFJlZik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFibGVDb2x1bW5SZXNpemVTZXJ2aWNlPy51bnJlZ2lzdGVyQ29sdW1uQ2VsbCh0aGlzLmNvbHVtbk5hbWUsIHRoaXMuZWxlbWVudFJlZik7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRSZXNpemVyKGV2ZW50OiBNb3VzZUV2ZW50KTogeyByZXNpemVyUG9zaXRpb246IG51bWJlcjsgcmVzaXplZENvbHVtbjogc3RyaW5nIH0gfCBudWxsIHtcbiAgICAgICAgY29uc3QgZWwgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgZWxQb3NpdGlvbiA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAvLyBjaGVjayBpZiBtb3VzZSBpcyB3aXRoaW4gNXB4IG9mIGNlbGwgYm9yZGVyXG4gICAgICAgIGlmIChldmVudC5jbGllbnRYID4gZWxQb3NpdGlvbi54ICsgZWxQb3NpdGlvbi53aWR0aCAtIDUgfHwgZXZlbnQuY2xpZW50WCA8IGVsUG9zaXRpb24ueCArIDUpIHtcbiAgICAgICAgICAgIGxldCByZXNpemVyUG9zaXRpb246IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGxldCByZXNpemVkQ29sdW1uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgIGNvbnN0IHBvaW50ZXJPbkxlZnQgPSB0aGlzLl9ydGwkKClcbiAgICAgICAgICAgICAgICA/IGVsUG9zaXRpb24ucmlnaHQgLSBldmVudC5jbGllbnRYIDwgVEFCTEVfQ0VMTF9SRVNJWkFCTEVfVEhSRVNIT0xEX1BYXG4gICAgICAgICAgICAgICAgOiBldmVudC5jbGllbnRYIC0gZWxQb3NpdGlvbi5sZWZ0IDwgVEFCTEVfQ0VMTF9SRVNJWkFCTEVfVEhSRVNIT0xEX1BYO1xuXG4gICAgICAgICAgICBpZiAocG9pbnRlck9uTGVmdCAmJiB0aGlzLl9yZXNpemFibGVTaWRlICE9PSAnZW5kJykge1xuICAgICAgICAgICAgICAgIHJlc2l6ZXJQb3NpdGlvbiA9IHRoaXMuX3J0bCQoKVxuICAgICAgICAgICAgICAgICAgICA/IGVsLnBhcmVudEVsZW1lbnQhLm9mZnNldFdpZHRoIC0gKGVsLm9mZnNldExlZnQgKyBlbC5vZmZzZXRXaWR0aClcbiAgICAgICAgICAgICAgICAgICAgOiBlbC5vZmZzZXRMZWZ0O1xuXG4gICAgICAgICAgICAgICAgcmVzaXplZENvbHVtbiA9IHRoaXMuX3RhYmxlQ29sdW1uUmVzaXplU2VydmljZS5nZXRQcmV2aW91c0NvbHVtbk5hbWUodGhpcy5jb2x1bW5OYW1lKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcG9pbnRlck9uUmlnaHQgPSB0aGlzLl9ydGwkKClcbiAgICAgICAgICAgICAgICA/IGV2ZW50LmNsaWVudFggLSBlbFBvc2l0aW9uLmxlZnQgPCBUQUJMRV9DRUxMX1JFU0laQUJMRV9USFJFU0hPTERfUFhcbiAgICAgICAgICAgICAgICA6IGVsUG9zaXRpb24ucmlnaHQgLSBldmVudC5jbGllbnRYIDwgVEFCTEVfQ0VMTF9SRVNJWkFCTEVfVEhSRVNIT0xEX1BYO1xuXG4gICAgICAgICAgICBpZiAocG9pbnRlck9uUmlnaHQgJiYgdGhpcy5fcmVzaXphYmxlU2lkZSAhPT0gJ3N0YXJ0Jykge1xuICAgICAgICAgICAgICAgIHJlc2l6ZXJQb3NpdGlvbiA9IHRoaXMuX3J0bCQoKVxuICAgICAgICAgICAgICAgICAgICA/IGVsLnBhcmVudEVsZW1lbnQhLm9mZnNldFdpZHRoIC0gZWwub2Zmc2V0TGVmdFxuICAgICAgICAgICAgICAgICAgICA6IGVsLm9mZnNldExlZnQgKyBlbC5vZmZzZXRXaWR0aDtcblxuICAgICAgICAgICAgICAgIHJlc2l6ZWRDb2x1bW4gPSB0aGlzLmNvbHVtbk5hbWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghcmVzaXplZENvbHVtbikge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4geyByZXNpemVyUG9zaXRpb246IHJlc2l6ZXJQb3NpdGlvbiEsIHJlc2l6ZWRDb2x1bW4gfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19","export class EditableTableCell {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy90YWJsZS1jZWxsLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBZ0IsaUJBQWlCO0NBRXRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRWRpdGFibGVUYWJsZUNlbGwge1xuICAgIGFic3RyYWN0IGZvcm06IE5nRm9ybTtcbn1cbiJdfQ==","import { Directive, Input, TemplateRef } from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { EditableTableCell } from '../table-cell.class';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\n/** Column cell container. */\n// eslint-disable-next-line @angular-eslint/directive-selector\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class FdpTableCell {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdpTableCell, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: FdpTableCell, isStandalone: true, selector: \"fdp-table-cell\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdpTableCell, decorators: [{\n type: Directive,\n args: [{ selector: 'fdp-table-cell', standalone: true }]\n }] });\n/**\n * Cell definition for a platform table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class FdpCellDef {\n /** @hidden */\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n /** @hidden */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdpCellDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: FdpCellDef, isStandalone: true, selector: \"[fdpCellDef]\", inputs: { fdpCellDefAs: \"fdpCellDefAs\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdpCellDef, decorators: [{\n type: Directive,\n args: [{ selector: '[fdpCellDef]', standalone: true }]\n }], ctorParameters: () => [{ type: i0.TemplateRef }], propDecorators: { fdpCellDefAs: [{\n type: Input\n }] } });\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class FdpEditableCellDef {\n /** @hidden */\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdpEditableCellDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: FdpEditableCellDef, isStandalone: true, selector: \"[fdpEditableCellDef]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdpEditableCellDef, decorators: [{\n type: Directive,\n args: [{ selector: '[fdpEditableCellDef]', standalone: true }]\n }], ctorParameters: () => [{ type: i0.TemplateRef }] });\nexport class FdpEditableCellFormDirective {\n /** @hidden */\n constructor(form) {\n this.form = form;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdpEditableCellFormDirective, deps: [{ token: i1.NgForm }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: FdpEditableCellFormDirective, isStandalone: true, selector: \"[fdpEditableCellForm]\", providers: [{ provide: EditableTableCell, useExisting: FdpEditableCellFormDirective }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdpEditableCellFormDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdpEditableCellForm]',\n standalone: true,\n providers: [{ provide: EditableTableCell, useExisting: FdpEditableCellFormDirective }]\n }]\n }], ctorParameters: () => [{ type: i1.NgForm }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvZGlyZWN0aXZlcy90YWJsZS1jZWxsLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFReEQsNkJBQTZCO0FBQzdCLDhEQUE4RDtBQUU5RCxrRUFBa0U7QUFDbEUsTUFBTSxPQUFPLFlBQVk7OEdBQVosWUFBWTtrR0FBWixZQUFZOzsyRkFBWixZQUFZO2tCQUZ4QixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7O0FBSTNEOzs7R0FHRztBQUVILGtFQUFrRTtBQUNsRSxNQUFNLE9BQU8sVUFBVTtJQUluQixjQUFjO0lBQ2QsWUFBbUIsV0FBOEM7UUFBOUMsZ0JBQVcsR0FBWCxXQUFXLENBQW1DO0lBQUcsQ0FBQztJQUVyRSxjQUFjO0lBQ2QsTUFBTSxDQUFDLHNCQUFzQixDQUFJLEdBQWtCLEVBQUUsR0FBc0I7UUFDdkUsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzs4R0FWUSxVQUFVO2tHQUFWLFVBQVU7OzJGQUFWLFVBQVU7a0JBRnRCLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7Z0ZBS3JELFlBQVk7c0JBRFgsS0FBSzs7QUFZVixrRUFBa0U7QUFDbEUsTUFBTSxPQUFPLGtCQUFrQjtJQUMzQixjQUFjO0lBQ2QsWUFBbUIsV0FBNkI7UUFBN0IsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO0lBQUcsQ0FBQzs4R0FGM0Msa0JBQWtCO2tHQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBRjlCLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTs7QUFZakUsTUFBTSxPQUFPLDRCQUE0QjtJQUNyQyxjQUFjO0lBQ2QsWUFBbUIsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7SUFBRyxDQUFDOzhHQUYxQiw0QkFBNEI7a0dBQTVCLDRCQUE0QixvRUFGMUIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsNEJBQTRCLEVBQUUsQ0FBQzs7MkZBRTdFLDRCQUE0QjtrQkFMeEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyw4QkFBOEIsRUFBRSxDQUFDO2lCQUN6RiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBFZGl0YWJsZVRhYmxlQ2VsbCB9IGZyb20gJy4uL3RhYmxlLWNlbGwuY2xhc3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZkcENlbGxEZWZDb250ZXh0PFQgPSBhbnk+IHtcbiAgICAkaW1wbGljaXQ6IFQ7XG4gICAgcG9wcGluZzogYm9vbGVhbjtcbiAgICByb3dJbmRleDogbnVtYmVyO1xufVxuXG4vKiogQ29sdW1uIGNlbGwgY29udGFpbmVyLiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2ZkcC10YWJsZS1jZWxsJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgY2xhc3MgRmRwVGFibGVDZWxsIHt9XG5cbi8qKlxuICogQ2VsbCBkZWZpbml0aW9uIGZvciBhIHBsYXRmb3JtIHRhYmxlLlxuICogQ2FwdHVyZXMgdGhlIHRlbXBsYXRlIG9mIGEgY29sdW1uJ3MgZGF0YSByb3cgY2VsbCBhcyB3ZWxsIGFzIGNlbGwtc3BlY2lmaWMgcHJvcGVydGllcy5cbiAqL1xuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2ZkcENlbGxEZWZdJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgY2xhc3MgRmRwQ2VsbERlZjxUID0gYW55PiB7XG4gICAgLyoqIFByb3BlcnR5IHRvIHN1cHBvcnQgdHlwaW5ncy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGZkcENlbGxEZWZBczogVDtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8RmRwQ2VsbERlZkNvbnRleHQ8VD4+KSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZDxUPihkaXI6IEZkcENlbGxEZWY8VD4sIGN0eDogRmRwQ2VsbERlZkNvbnRleHQpOiBjdHggaXMgRmRwQ2VsbERlZkNvbnRleHQ8VD4ge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tmZHBFZGl0YWJsZUNlbGxEZWZdJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgY2xhc3MgRmRwRWRpdGFibGVDZWxsRGVmIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Pikge31cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRwRWRpdGFibGVDZWxsRm9ybV0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBFZGl0YWJsZVRhYmxlQ2VsbCwgdXNlRXhpc3Rpbmc6IEZkcEVkaXRhYmxlQ2VsbEZvcm1EaXJlY3RpdmUgfV1cbn0pXG5leHBvcnQgY2xhc3MgRmRwRWRpdGFibGVDZWxsRm9ybURpcmVjdGl2ZSBpbXBsZW1lbnRzIEVkaXRhYmxlVGFibGVDZWxsIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBmb3JtOiBOZ0Zvcm0pIHt9XG59XG4iXX0=","export var FilterType;\n(function (FilterType) {\n FilterType[\"INPUT\"] = \"input\";\n FilterType[\"SINGLE\"] = \"single-select\";\n FilterType[\"MULTI\"] = \"multi-select\";\n FilterType[\"CATEGORY\"] = \"category\";\n FilterType[\"CUSTOM\"] = \"custom\";\n})(FilterType || (FilterType = {}));\nexport var FilterableColumnDataType;\n(function (FilterableColumnDataType) {\n FilterableColumnDataType[\"STRING\"] = \"string\";\n FilterableColumnDataType[\"NUMBER\"] = \"number\";\n FilterableColumnDataType[\"BOOLEAN\"] = \"boolean\";\n FilterableColumnDataType[\"DATE\"] = \"date\";\n})(FilterableColumnDataType || (FilterableColumnDataType = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXR5cGUuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9lbnVtcy9maWx0ZXItdHlwZS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLFVBTVg7QUFORCxXQUFZLFVBQVU7SUFDbEIsNkJBQWUsQ0FBQTtJQUNmLHNDQUF3QixDQUFBO0lBQ3hCLG9DQUFzQixDQUFBO0lBQ3RCLG1DQUFxQixDQUFBO0lBQ3JCLCtCQUFpQixDQUFBO0FBQ3JCLENBQUMsRUFOVyxVQUFVLEtBQVYsVUFBVSxRQU1yQjtBQUVELE1BQU0sQ0FBTixJQUFZLHdCQUtYO0FBTEQsV0FBWSx3QkFBd0I7SUFDaEMsNkNBQWlCLENBQUE7SUFDakIsNkNBQWlCLENBQUE7SUFDakIsK0NBQW1CLENBQUE7SUFDbkIseUNBQWEsQ0FBQTtBQUNqQixDQUFDLEVBTFcsd0JBQXdCLEtBQXhCLHdCQUF3QixRQUtuQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEZpbHRlclR5cGUge1xuICAgIElOUFVUID0gJ2lucHV0JyxcbiAgICBTSU5HTEUgPSAnc2luZ2xlLXNlbGVjdCcsXG4gICAgTVVMVEkgPSAnbXVsdGktc2VsZWN0JyxcbiAgICBDQVRFR09SWSA9ICdjYXRlZ29yeScsXG4gICAgQ1VTVE9NID0gJ2N1c3RvbSdcbn1cblxuZXhwb3J0IGVudW0gRmlsdGVyYWJsZUNvbHVtbkRhdGFUeXBlIHtcbiAgICBTVFJJTkcgPSAnc3RyaW5nJyxcbiAgICBOVU1CRVIgPSAnbnVtYmVyJyxcbiAgICBCT09MRUFOID0gJ2Jvb2xlYW4nLFxuICAgIERBVEUgPSAnZGF0ZSdcbn1cbiJdfQ==","import { FilterableColumnDataType } from './filter-type.enum';\n/** All possible strategies */\nexport const FILTER_STRATEGY = {\n EQ: 'equalTo',\n CONTAINS: 'contains',\n BETWEEN: 'between',\n BEGINS_WITH: 'beginsWith',\n ENDS_WITH: 'endsWith',\n GT: 'greaterThan',\n GTE: 'greaterThanOrEqualTo',\n LT: 'lessThan',\n LTE: 'lessThanOrEqualTo',\n AFTER: 'after',\n ON_OR_AFTER: 'onOrAfter',\n BEFORE: 'before',\n BEFORE_OR_ON: 'beforeOrOn'\n};\nexport const FILTER_STRATEGY_LABEL = {\n equalTo: 'platformTable.P13FilterStrategyLabelEqualTo',\n contains: 'platformTable.P13FilterStrategyLabelContains',\n between: 'platformTable.P13FilterStrategyLabelBetween',\n beginsWith: 'platformTable.P13FilterStrategyLabelBeginsWith',\n endsWith: 'platformTable.P13FilterStrategyLabelEndsWith',\n greaterThan: 'platformTable.P13FilterStrategyLabelGreaterThan',\n greaterThanOrEqualTo: 'platformTable.P13FilterStrategyLabelGreaterThanOrEqualTo',\n lessThan: 'platformTable.P13FilterStrategyLabelLessThan',\n lessThanOrEqualTo: 'platformTable.P13FilterStrategyLabelLessThanOrEqualTo',\n after: 'platformTable.P13FilterStrategyLabelAfter',\n onOrAfter: 'platformTable.P13FilterStrategyLabelOnOrAfter',\n before: 'platformTable.P13FilterStrategyLabelBefore',\n beforeOrOn: 'platformTable.P13FilterStrategyLabelBeforeOrOn'\n};\n/** Date Filter Strategies */\nexport const FILTER_DATE_STRATEGY = {\n EQ: 'equalTo',\n BETWEEN: 'between',\n AFTER: 'after',\n ON_OR_AFTER: 'onOrAfter',\n BEFORE: 'before',\n BEFORE_OR_ON: 'beforeOrOn'\n};\nexport const FILTER_DATE_STRATEGIES = Object.values(FILTER_DATE_STRATEGY);\n/** Number Filter Strategies */\nexport const FILTER_NUMBER_STRATEGY = {\n EQ: 'equalTo',\n BETWEEN: 'between',\n GT: 'greaterThan',\n GTE: 'greaterThanOrEqualTo',\n LT: 'lessThan',\n LTE: 'lessThanOrEqualTo'\n};\nexport const FILTER_NUMBER_STRATEGIES = Object.values(FILTER_NUMBER_STRATEGY);\n/** String Filter Strategies */\nexport const FILTER_STRING_STRATEGY = {\n CONTAINS: 'contains',\n EQ: 'equalTo',\n BEGINS_WITH: 'beginsWith',\n BETWEEN: 'between',\n ENDS_WITH: 'endsWith',\n GT: 'greaterThan',\n GTE: 'greaterThanOrEqualTo',\n LT: 'lessThan',\n LTE: 'lessThanOrEqualTo'\n};\nexport const FILTER_STRING_STRATEGIES = Object.values(FILTER_STRING_STRATEGY);\n/** Boolean Filter Strategies */\nexport const FILTER_BOOLEAN_STRATEGY = {\n EQ: 'equalTo'\n};\nexport const FILTER_BOOLEAN_STRATEGIES = Object.values(FILTER_BOOLEAN_STRATEGY);\n/** Default Filter Strategies for undefined data type */\nexport const FILTER_DEFAULT_STRATEGY = {\n EQ: 'equalTo'\n};\nexport const FILTER_DEFAULT_STRATEGIES = Object.values(FILTER_DEFAULT_STRATEGY);\n// Get Possible strategies based on data type\nexport const getFilterStrategiesBasedOnDataType = (dataType) => {\n switch (dataType) {\n case FilterableColumnDataType.STRING:\n return FILTER_STRING_STRATEGIES;\n case FilterableColumnDataType.NUMBER:\n return FILTER_NUMBER_STRATEGIES;\n case FilterableColumnDataType.DATE:\n return FILTER_DATE_STRATEGIES;\n case FilterableColumnDataType.BOOLEAN:\n return FILTER_BOOLEAN_STRATEGIES;\n default:\n return FILTER_DEFAULT_STRATEGIES;\n }\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi1maWx0ZXIuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9lbnVtcy9jb2xsZWN0aW9uLWZpbHRlci5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlELDhCQUE4QjtBQUM5QixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUc7SUFDM0IsRUFBRSxFQUFFLFNBQVM7SUFDYixRQUFRLEVBQUUsVUFBVTtJQUNwQixPQUFPLEVBQUUsU0FBUztJQUNsQixXQUFXLEVBQUUsWUFBWTtJQUN6QixTQUFTLEVBQUUsVUFBVTtJQUNyQixFQUFFLEVBQUUsYUFBYTtJQUNqQixHQUFHLEVBQUUsc0JBQXNCO0lBQzNCLEVBQUUsRUFBRSxVQUFVO0lBQ2QsR0FBRyxFQUFFLG1CQUFtQjtJQUN4QixLQUFLLEVBQUUsT0FBTztJQUNkLFdBQVcsRUFBRSxXQUFXO0lBQ3hCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFlBQVksRUFBRSxZQUFZO0NBQ3BCLENBQUM7QUFNWCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBb0Q7SUFDbEYsT0FBTyxFQUFFLDZDQUE2QztJQUN0RCxRQUFRLEVBQUUsOENBQThDO0lBQ3hELE9BQU8sRUFBRSw2Q0FBNkM7SUFDdEQsVUFBVSxFQUFFLGdEQUFnRDtJQUM1RCxRQUFRLEVBQUUsOENBQThDO0lBQ3hELFdBQVcsRUFBRSxpREFBaUQ7SUFDOUQsb0JBQW9CLEVBQUUsMERBQTBEO0lBQ2hGLFFBQVEsRUFBRSw4Q0FBOEM7SUFDeEQsaUJBQWlCLEVBQUUsdURBQXVEO0lBQzFFLEtBQUssRUFBRSwyQ0FBMkM7SUFDbEQsU0FBUyxFQUFFLCtDQUErQztJQUMxRCxNQUFNLEVBQUUsNENBQTRDO0lBQ3BELFVBQVUsRUFBRSxnREFBZ0Q7Q0FDL0QsQ0FBQztBQUVGLDZCQUE2QjtBQUM3QixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FHN0I7SUFDQSxFQUFFLEVBQUUsU0FBUztJQUNiLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLEtBQUssRUFBRSxPQUFPO0lBQ2QsV0FBVyxFQUFFLFdBQVc7SUFDeEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsWUFBWSxFQUFFLFlBQVk7Q0FDN0IsQ0FBQztBQUlGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFzQyxNQUFNLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFFN0csK0JBQStCO0FBQy9CLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUE2RTtJQUM1RyxFQUFFLEVBQUUsU0FBUztJQUNiLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLEVBQUUsRUFBRSxhQUFhO0lBQ2pCLEdBQUcsRUFBRSxzQkFBc0I7SUFDM0IsRUFBRSxFQUFFLFVBQVU7SUFDZCxHQUFHLEVBQUUsbUJBQW1CO0NBQzNCLENBQUM7QUFJRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBd0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBRW5ILCtCQUErQjtBQUMvQixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FHL0I7SUFDQSxRQUFRLEVBQUUsVUFBVTtJQUNwQixFQUFFLEVBQUUsU0FBUztJQUNiLFdBQVcsRUFBRSxZQUFZO0lBQ3pCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFNBQVMsRUFBRSxVQUFVO0lBQ3JCLEVBQUUsRUFBRSxhQUFhO0lBQ2pCLEdBQUcsRUFBRSxzQkFBc0I7SUFDM0IsRUFBRSxFQUFFLFVBQVU7SUFDZCxHQUFHLEVBQUUsbUJBQW1CO0NBQzNCLENBQUM7QUFNRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBd0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBRW5ILGdDQUFnQztBQUNoQyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBbUM7SUFDbkUsRUFBRSxFQUFFLFNBQVM7Q0FDaEIsQ0FBQztBQUlGLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUF3QyxNQUFNLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7QUFFckgsd0RBQXdEO0FBQ3hELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFtQztJQUNuRSxFQUFFLEVBQUUsU0FBUztDQUNoQixDQUFDO0FBSUYsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQXdDLE1BQU0sQ0FBQyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUVySCw2Q0FBNkM7QUFDN0MsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsQ0FDOUMsUUFBa0MsRUFDNkIsRUFBRTtJQUNqRSxRQUFRLFFBQVEsRUFBRSxDQUFDO1FBQ2YsS0FBSyx3QkFBd0IsQ0FBQyxNQUFNO1lBQ2hDLE9BQU8sd0JBQXdCLENBQUM7UUFDcEMsS0FBSyx3QkFBd0IsQ0FBQyxNQUFNO1lBQ2hDLE9BQU8sd0JBQXdCLENBQUM7UUFDcEMsS0FBSyx3QkFBd0IsQ0FBQyxJQUFJO1lBQzlCLE9BQU8sc0JBQXNCLENBQUM7UUFDbEMsS0FBSyx3QkFBd0IsQ0FBQyxPQUFPO1lBQ2pDLE9BQU8seUJBQXlCLENBQUM7UUFFckM7WUFDSSxPQUFPLHlCQUF5QixDQUFDO0lBQ3pDLENBQUM7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGZExhbmd1YWdlS2V5SWRlbnRpZmllciB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5pbXBvcnQgeyBGaWx0ZXJhYmxlQ29sdW1uRGF0YVR5cGUgfSBmcm9tICcuL2ZpbHRlci10eXBlLmVudW0nO1xuXG4vKiogQWxsIHBvc3NpYmxlIHN0cmF0ZWdpZXMgKi9cbmV4cG9ydCBjb25zdCBGSUxURVJfU1RSQVRFR1kgPSB7XG4gICAgRVE6ICdlcXVhbFRvJyxcbiAgICBDT05UQUlOUzogJ2NvbnRhaW5zJyxcbiAgICBCRVRXRUVOOiAnYmV0d2VlbicsXG4gICAgQkVHSU5TX1dJVEg6ICdiZWdpbnNXaXRoJyxcbiAgICBFTkRTX1dJVEg6ICdlbmRzV2l0aCcsXG4gICAgR1Q6ICdncmVhdGVyVGhhbicsXG4gICAgR1RFOiAnZ3JlYXRlclRoYW5PckVxdWFsVG8nLFxuICAgIExUOiAnbGVzc1RoYW4nLFxuICAgIExURTogJ2xlc3NUaGFuT3JFcXVhbFRvJyxcbiAgICBBRlRFUjogJ2FmdGVyJyxcbiAgICBPTl9PUl9BRlRFUjogJ29uT3JBZnRlcicsXG4gICAgQkVGT1JFOiAnYmVmb3JlJyxcbiAgICBCRUZPUkVfT1JfT046ICdiZWZvcmVPck9uJ1xufSBhcyBjb25zdDtcblxudHlwZSBGaWx0ZXJTdHJhdGVneVR5cGUgPSB0eXBlb2YgRklMVEVSX1NUUkFURUdZO1xuXG5leHBvcnQgdHlwZSBGaWx0ZXJTdHJhdGVneSA9IEZpbHRlclN0cmF0ZWd5VHlwZVtrZXlvZiBGaWx0ZXJTdHJhdGVneVR5cGVdO1xuXG5leHBvcnQgY29uc3QgRklMVEVSX1NUUkFURUdZX0xBQkVMOiBSZWNvcmQ8RmlsdGVyU3RyYXRlZ3ksIEZkTGFuZ3VhZ2VLZXlJZGVudGlmaWVyPiA9IHtcbiAgICBlcXVhbFRvOiAncGxhdGZvcm1UYWJsZS5QMTNGaWx0ZXJTdHJhdGVneUxhYmVsRXF1YWxUbycsXG4gICAgY29udGFpbnM6ICdwbGF0Zm9ybVRhYmxlLlAxM0ZpbHRlclN0cmF0ZWd5TGFiZWxDb250YWlucycsXG4gICAgYmV0d2VlbjogJ3BsYXRmb3JtVGFibGUuUDEzRmlsdGVyU3RyYXRlZ3lMYWJlbEJldHdlZW4nLFxuICAgIGJlZ2luc1dpdGg6ICdwbGF0Zm9ybVRhYmxlLlAxM0ZpbHRlclN0cmF0ZWd5TGFiZWxCZWdpbnNXaXRoJyxcbiAgICBlbmRzV2l0aDogJ3BsYXRmb3JtVGFibGUuUDEzRmlsdGVyU3RyYXRlZ3lMYWJlbEVuZHNXaXRoJyxcbiAgICBncmVhdGVyVGhhbjogJ3BsYXRmb3JtVGFibGUuUDEzRmlsdGVyU3RyYXRlZ3lMYWJlbEdyZWF0ZXJUaGFuJyxcbiAgICBncmVhdGVyVGhhbk9yRXF1YWxUbzogJ3BsYXRmb3JtVGFibGUuUDEzRmlsdGVyU3RyYXRlZ3lMYWJlbEdyZWF0ZXJUaGFuT3JFcXVhbFRvJyxcbiAgICBsZXNzVGhhbjogJ3BsYXRmb3JtVGFibGUuUDEzRmlsdGVyU3RyYXRlZ3lMYWJlbExlc3NUaGFuJyxcbiAgICBsZXNzVGhhbk9yRXF1YWxUbzogJ3BsYXRmb3JtVGFibGUuUDEzRmlsdGVyU3RyYXRlZ3lMYWJlbExlc3NUaGFuT3JFcXVhbFRvJyxcbiAgICBhZnRlcjogJ3BsYXRmb3JtVGFibGUuUDEzRmlsdGVyU3RyYXRlZ3lMYWJlbEFmdGVyJyxcbiAgICBvbk9yQWZ0ZXI6ICdwbGF0Zm9ybVRhYmxlLlAxM0ZpbHRlclN0cmF0ZWd5TGFiZWxPbk9yQWZ0ZXInLFxuICAgIGJlZm9yZTogJ3BsYXRmb3JtVGFibGUuUDEzRmlsdGVyU3RyYXRlZ3lMYWJlbEJlZm9yZScsXG4gICAgYmVmb3JlT3JPbjogJ3BsYXRmb3JtVGFibGUuUDEzRmlsdGVyU3RyYXRlZ3lMYWJlbEJlZm9yZU9yT24nXG59O1xuXG4vKiogRGF0ZSBGaWx0ZXIgU3RyYXRlZ2llcyAqL1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9EQVRFX1NUUkFURUdZOiBQaWNrPFxuICAgIEZpbHRlclN0cmF0ZWd5VHlwZSxcbiAgICAnQkVUV0VFTicgfCAnRVEnIHwgJ0FGVEVSJyB8ICdPTl9PUl9BRlRFUicgfCAnQkVGT1JFJyB8ICdCRUZPUkVfT1JfT04nXG4+ID0ge1xuICAgIEVROiAnZXF1YWxUbycsXG4gICAgQkVUV0VFTjogJ2JldHdlZW4nLFxuICAgIEFGVEVSOiAnYWZ0ZXInLFxuICAgIE9OX09SX0FGVEVSOiAnb25PckFmdGVyJyxcbiAgICBCRUZPUkU6ICdiZWZvcmUnLFxuICAgIEJFRk9SRV9PUl9PTjogJ2JlZm9yZU9yT24nXG59O1xuXG5leHBvcnQgdHlwZSBGaWx0ZXJEYXRlU3RyYXRlZ3kgPSAodHlwZW9mIEZJTFRFUl9EQVRFX1NUUkFURUdZKVtrZXlvZiB0eXBlb2YgRklMVEVSX0RBVEVfU1RSQVRFR1ldO1xuXG5leHBvcnQgY29uc3QgRklMVEVSX0RBVEVfU1RSQVRFR0lFUzogUmVhZG9ubHlBcnJheTxGaWx0ZXJEYXRlU3RyYXRlZ3k+ID0gT2JqZWN0LnZhbHVlcyhGSUxURVJfREFURV9TVFJBVEVHWSk7XG5cbi8qKiBOdW1iZXIgRmlsdGVyIFN0cmF0ZWdpZXMgKi9cbmV4cG9ydCBjb25zdCBGSUxURVJfTlVNQkVSX1NUUkFURUdZOiBQaWNrPEZpbHRlclN0cmF0ZWd5VHlwZSwgJ0JFVFdFRU4nIHwgJ0VRJyB8ICdHVCcgfCAnR1RFJyB8ICdMVCcgfCAnTFRFJz4gPSB7XG4gICAgRVE6ICdlcXVhbFRvJyxcbiAgICBCRVRXRUVOOiAnYmV0d2VlbicsXG4gICAgR1Q6ICdncmVhdGVyVGhhbicsXG4gICAgR1RFOiAnZ3JlYXRlclRoYW5PckVxdWFsVG8nLFxuICAgIExUOiAnbGVzc1RoYW4nLFxuICAgIExURTogJ2xlc3NUaGFuT3JFcXVhbFRvJ1xufTtcblxuZXhwb3J0IHR5cGUgRmlsdGVyTnVtYmVyU3RyYXRlZ3kgPSAodHlwZW9mIEZJTFRFUl9OVU1CRVJfU1RSQVRFR1kpW2tleW9mIHR5cGVvZiBGSUxURVJfTlVNQkVSX1NUUkFURUdZXTtcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9OVU1CRVJfU1RSQVRFR0lFUzogUmVhZG9ubHlBcnJheTxGaWx0ZXJOdW1iZXJTdHJhdGVneT4gPSBPYmplY3QudmFsdWVzKEZJTFRFUl9OVU1CRVJfU1RSQVRFR1kpO1xuXG4vKiogU3RyaW5nIEZpbHRlciBTdHJhdGVnaWVzICovXG5leHBvcnQgY29uc3QgRklMVEVSX1NUUklOR19TVFJBVEVHWTogUGljazxcbiAgICBGaWx0ZXJTdHJhdGVneVR5cGUsXG4gICAgJ0JFVFdFRU4nIHwgJ0NPTlRBSU5TJyB8ICdFUScgfCAnQkVHSU5TX1dJVEgnIHwgJ0VORFNfV0lUSCcgfCAnR1QnIHwgJ0dURScgfCAnTFQnIHwgJ0xURSdcbj4gPSB7XG4gICAgQ09OVEFJTlM6ICdjb250YWlucycsXG4gICAgRVE6ICdlcXVhbFRvJyxcbiAgICBCRUdJTlNfV0lUSDogJ2JlZ2luc1dpdGgnLFxuICAgIEJFVFdFRU46ICdiZXR3ZWVuJyxcbiAgICBFTkRTX1dJVEg6ICdlbmRzV2l0aCcsXG4gICAgR1Q6ICdncmVhdGVyVGhhbicsXG4gICAgR1RFOiAnZ3JlYXRlclRoYW5PckVxdWFsVG8nLFxuICAgIExUOiAnbGVzc1RoYW4nLFxuICAgIExURTogJ2xlc3NUaGFuT3JFcXVhbFRvJ1xufTtcblxuZXhwb3J0IHR5cGUgRmlsdGVyQWxsU3RyYXRlZ3kgPSAodHlwZW9mIEZJTFRFUl9TVFJBVEVHWSlba2V5b2YgdHlwZW9mIEZJTFRFUl9TVFJBVEVHWV07XG5cbmV4cG9ydCB0eXBlIEZpbHRlclN0cmluZ1N0cmF0ZWd5ID0gKHR5cGVvZiBGSUxURVJfU1RSSU5HX1NUUkFURUdZKVtrZXlvZiB0eXBlb2YgRklMVEVSX1NUUklOR19TVFJBVEVHWV07XG5cbmV4cG9ydCBjb25zdCBGSUxURVJfU1RSSU5HX1NUUkFURUdJRVM6IFJlYWRvbmx5QXJyYXk8RmlsdGVyU3RyaW5nU3RyYXRlZ3k+ID0gT2JqZWN0LnZhbHVlcyhGSUxURVJfU1RSSU5HX1NUUkFURUdZKTtcblxuLyoqIEJvb2xlYW4gRmlsdGVyIFN0cmF0ZWdpZXMgKi9cbmV4cG9ydCBjb25zdCBGSUxURVJfQk9PTEVBTl9TVFJBVEVHWTogUGljazxGaWx0ZXJTdHJhdGVneVR5cGUsICdFUSc+ID0ge1xuICAgIEVROiAnZXF1YWxUbydcbn07XG5cbmV4cG9ydCB0eXBlIEZpbHRlckJvb2xlYW5TdHJhdGVneSA9ICh0eXBlb2YgRklMVEVSX0JPT0xFQU5fU1RSQVRFR1kpW2tleW9mIHR5cGVvZiBGSUxURVJfQk9PTEVBTl9TVFJBVEVHWV07XG5cbmV4cG9ydCBjb25zdCBGSUxURVJfQk9PTEVBTl9TVFJBVEVHSUVTOiBSZWFkb25seUFycmF5PEZpbHRlclN0cmluZ1N0cmF0ZWd5PiA9IE9iamVjdC52YWx1ZXMoRklMVEVSX0JPT0xFQU5fU1RSQVRFR1kpO1xuXG4vKiogRGVmYXVsdCBGaWx0ZXIgU3RyYXRlZ2llcyBmb3IgdW5kZWZpbmVkIGRhdGEgdHlwZSAqL1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9ERUZBVUxUX1NUUkFURUdZOiBQaWNrPEZpbHRlclN0cmF0ZWd5VHlwZSwgJ0VRJz4gPSB7XG4gICAgRVE6ICdlcXVhbFRvJ1xufTtcblxuZXhwb3J0IHR5cGUgRmlsdGVyRGVmYXVsdFN0cmF0ZWd5ID0gKHR5cGVvZiBGSUxURVJfREVGQVVMVF9TVFJBVEVHWSlba2V5b2YgdHlwZW9mIEZJTFRFUl9ERUZBVUxUX1NUUkFURUdZXTtcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9ERUZBVUxUX1NUUkFURUdJRVM6IFJlYWRvbmx5QXJyYXk8RmlsdGVyU3RyaW5nU3RyYXRlZ3k+ID0gT2JqZWN0LnZhbHVlcyhGSUxURVJfREVGQVVMVF9TVFJBVEVHWSk7XG5cbi8vIEdldCBQb3NzaWJsZSBzdHJhdGVnaWVzIGJhc2VkIG9uIGRhdGEgdHlwZVxuZXhwb3J0IGNvbnN0IGdldEZpbHRlclN0cmF0ZWdpZXNCYXNlZE9uRGF0YVR5cGUgPSAoXG4gICAgZGF0YVR5cGU6IEZpbHRlcmFibGVDb2x1bW5EYXRhVHlwZVxuKTogcmVhZG9ubHkgRmlsdGVyU3RyaW5nU3RyYXRlZ3lbXSB8IHJlYWRvbmx5IEZpbHRlckRhdGVTdHJhdGVneVtdID0+IHtcbiAgICBzd2l0Y2ggKGRhdGFUeXBlKSB7XG4gICAgICAgIGNhc2UgRmlsdGVyYWJsZUNvbHVtbkRhdGFUeXBlLlNUUklORzpcbiAgICAgICAgICAgIHJldHVybiBGSUxURVJfU1RSSU5HX1NUUkFURUdJRVM7XG4gICAgICAgIGNhc2UgRmlsdGVyYWJsZUNvbHVtbkRhdGFUeXBlLk5VTUJFUjpcbiAgICAgICAgICAgIHJldHVybiBGSUxURVJfTlVNQkVSX1NUUkFURUdJRVM7XG4gICAgICAgIGNhc2UgRmlsdGVyYWJsZUNvbHVtbkRhdGFUeXBlLkRBVEU6XG4gICAgICAgICAgICByZXR1cm4gRklMVEVSX0RBVEVfU1RSQVRFR0lFUztcbiAgICAgICAgY2FzZSBGaWx0ZXJhYmxlQ29sdW1uRGF0YVR5cGUuQk9PTEVBTjpcbiAgICAgICAgICAgIHJldHVybiBGSUxURVJfQk9PTEVBTl9TVFJBVEVHSUVTO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gRklMVEVSX0RFRkFVTFRfU1RSQVRFR0lFUztcbiAgICB9XG59O1xuIl19","export var ColumnAlign;\n(function (ColumnAlign) {\n ColumnAlign[\"START\"] = \"start\";\n ColumnAlign[\"CENTER\"] = \"center\";\n ColumnAlign[\"END\"] = \"end\";\n})(ColumnAlign || (ColumnAlign = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWFsaWduLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvZW51bXMvY29sdW1uLWFsaWduLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksV0FJWDtBQUpELFdBQVksV0FBVztJQUNuQiw4QkFBZSxDQUFBO0lBQ2YsZ0NBQWlCLENBQUE7SUFDakIsMEJBQVcsQ0FBQTtBQUNmLENBQUMsRUFKVyxXQUFXLEtBQVgsV0FBVyxRQUl0QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIENvbHVtbkFsaWduIHtcbiAgICBTVEFSVCA9ICdzdGFydCcsXG4gICAgQ0VOVEVSID0gJ2NlbnRlcicsXG4gICAgRU5EID0gJ2VuZCdcbn1cblxuZXhwb3J0IHR5cGUgQ29sdW1uQWxpZ25WYWx1ZSA9ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnO1xuIl19","export var TableRowType;\n(function (TableRowType) {\n TableRowType[\"ITEM\"] = \"item\";\n TableRowType[\"GROUP\"] = \"group\";\n TableRowType[\"TREE\"] = \"tree\";\n})(TableRowType || (TableRowType = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LXR5cGUuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9lbnVtcy9yb3ctdHlwZS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLFlBSVg7QUFKRCxXQUFZLFlBQVk7SUFDcEIsNkJBQWEsQ0FBQTtJQUNiLCtCQUFlLENBQUE7SUFDZiw2QkFBYSxDQUFBO0FBQ2pCLENBQUMsRUFKVyxZQUFZLEtBQVosWUFBWSxRQUl2QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFRhYmxlUm93VHlwZSB7XG4gICAgSVRFTSA9ICdpdGVtJyxcbiAgICBHUk9VUCA9ICdncm91cCcsXG4gICAgVFJFRSA9ICd0cmVlJ1xufVxuIl19","export var SelectionMode;\n(function (SelectionMode) {\n SelectionMode[\"SINGLE\"] = \"single\";\n SelectionMode[\"MULTIPLE\"] = \"multiple\";\n SelectionMode[\"NONE\"] = \"none\";\n})(SelectionMode || (SelectionMode = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLW1vZGUuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9lbnVtcy9zZWxlY3Rpb24tbW9kZS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDckIsa0NBQWlCLENBQUE7SUFDakIsc0NBQXFCLENBQUE7SUFDckIsOEJBQWEsQ0FBQTtBQUNqQixDQUFDLEVBSlcsYUFBYSxLQUFiLGFBQWEsUUFJeEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBTZWxlY3Rpb25Nb2RlIHtcbiAgICBTSU5HTEUgPSAnc2luZ2xlJyxcbiAgICBNVUxUSVBMRSA9ICdtdWx0aXBsZScsXG4gICAgTk9ORSA9ICdub25lJ1xufVxuXG5leHBvcnQgdHlwZSBTZWxlY3Rpb25Nb2RlVmFsdWUgPSAnc2luZ2xlJyB8ICdtdWx0aXBsZScgfCAnbm9uZSc7XG4iXX0=","export var SortDirection;\n(function (SortDirection) {\n SortDirection[\"NONE\"] = \"none\";\n SortDirection[\"ASC\"] = \"asc\";\n SortDirection[\"DESC\"] = \"desc\";\n})(SortDirection || (SortDirection = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1kaXJlY3Rpb24uZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9lbnVtcy9zb3J0LWRpcmVjdGlvbi5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDckIsOEJBQWEsQ0FBQTtJQUNiLDRCQUFXLENBQUE7SUFDWCw4QkFBYSxDQUFBO0FBQ2pCLENBQUMsRUFKVyxhQUFhLEtBQWIsYUFBYSxRQUl4QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFNvcnREaXJlY3Rpb24ge1xuICAgIE5PTkUgPSAnbm9uZScsXG4gICAgQVNDID0gJ2FzYycsXG4gICAgREVTQyA9ICdkZXNjJ1xufVxuIl19","import { get } from '@fundamental-ngx/cdk/utils';\nimport { FILTER_DATE_STRATEGY, FILTER_NUMBER_STRATEGY, FILTER_STRING_STRATEGY } from './enums';\nexport const filterByString = (rows, filter) => {\n const filterValue = filter.value && filter.value.toLocaleLowerCase();\n const filterValue2 = (filter.value2 && filter.value2.toLocaleLowerCase()) || '';\n switch (filter.strategy) {\n case FILTER_STRING_STRATEGY.EQ:\n return rows.filter((r) => get(r.value, filter.field).toLocaleLowerCase() === filterValue);\n case FILTER_STRING_STRATEGY.GT:\n return rows.filter((r) => get(r.value, filter.field).toLocaleLowerCase() > filterValue);\n case FILTER_STRING_STRATEGY.GTE:\n return rows.filter((r) => get(r.value, filter.field).toLocaleLowerCase() >= filterValue);\n case FILTER_STRING_STRATEGY.LT:\n return rows.filter((r) => get(r.value, filter.field).toLocaleLowerCase() < filterValue);\n case FILTER_STRING_STRATEGY.LTE:\n return rows.filter((r) => get(r.value, filter.field).toLocaleLowerCase() <= filterValue);\n case FILTER_STRING_STRATEGY.BETWEEN:\n return rows.filter((r) => {\n const rowValue = get(r.value, filter.field).toLocaleLowerCase();\n return rowValue >= filterValue && rowValue <= filterValue2;\n });\n case FILTER_STRING_STRATEGY.BEGINS_WITH:\n return rows.filter((r) => get(r.value, filter.field).toLocaleLowerCase().startsWith(filterValue));\n case FILTER_STRING_STRATEGY.ENDS_WITH:\n return rows.filter((r) => get(r.value, filter.field).toLocaleLowerCase().endsWith(filterValue));\n case FILTER_STRING_STRATEGY.CONTAINS:\n default:\n return rows.filter((r) => {\n let rowValue = get(r.value, filter.field);\n if (typeof rowValue === 'number') {\n rowValue = rowValue.toString();\n }\n return rowValue.toLocaleLowerCase().includes(filterValue);\n });\n }\n};\nexport const filterByNumber = (rows, filter) => {\n const filterValue = filter.value;\n const filterValue2 = filter.value2 || 0;\n switch (filter.strategy) {\n case FILTER_NUMBER_STRATEGY.EQ:\n return rows.filter((r) => get(r.value, filter.field) === filterValue);\n case FILTER_NUMBER_STRATEGY.GT:\n return rows.filter((r) => get(r.value, filter.field) > filterValue);\n case FILTER_NUMBER_STRATEGY.GTE:\n return rows.filter((r) => get(r.value, filter.field) >= filterValue);\n case FILTER_NUMBER_STRATEGY.LT:\n return rows.filter((r) => get(r.value, filter.field) < filterValue);\n case FILTER_NUMBER_STRATEGY.LTE:\n return rows.filter((r) => get(r.value, filter.field) <= filterValue);\n case FILTER_NUMBER_STRATEGY.BETWEEN:\n return rows.filter((r) => {\n const rowValue = get(r.value, filter.field);\n return rowValue >= filterValue && rowValue <= filterValue2;\n });\n default:\n return rows.filter((r) => get(r.value, filter.field).toString().includes(filterValue));\n }\n};\nexport const filterByDate = (rows, filter, adapter) => {\n const filterValue = filter.value;\n const filterValue2 = filter.value2;\n switch (filter.strategy) {\n case FILTER_DATE_STRATEGY.AFTER:\n return rows.filter((r) => adapter.compareDate(get(r.value, filter.field), filterValue) > 0);\n case FILTER_DATE_STRATEGY.ON_OR_AFTER:\n return rows.filter((r) => adapter.compareDate(get(r.value, filter.field), filterValue) >= 0);\n case FILTER_DATE_STRATEGY.BEFORE:\n return rows.filter((r) => adapter.compareDate(get(r.value, filter.field), filterValue) < 0);\n case FILTER_DATE_STRATEGY.BEFORE_OR_ON:\n return rows.filter((r) => adapter.compareDate(get(r.value, filter.field), filterValue) <= 0);\n case FILTER_DATE_STRATEGY.BETWEEN:\n return rows.filter((r) => adapter.isBetween(get(r.value, filter.field), filterValue, filterValue2));\n case FILTER_DATE_STRATEGY.EQ:\n default:\n return rows.filter((r) => adapter.dateTimesEqual(get(r.value, filter.field), filterValue));\n }\n};\nexport const filterByBoolean = (rows, filter) => rows.filter((r) => get(r.value, filter.field) === filter.value);\nexport const getUniqueListValuesByKey = (list, key) => Array.from(list\n .reduce((map, item) => {\n map.delete(item[key]);\n map.set(item[key], item);\n return map;\n}, new Map())\n .values());\nexport const getScrollBarWidth = (document) => {\n const div = document.createElement('div');\n div.textContent = 'W';\n div.style.position = 'absolute';\n div.style.visibility = 'hidden';\n div.style.overflowY = 'scroll';\n document.body.appendChild(div);\n const scrollbarWidth = div.offsetWidth - div.clientWidth;\n document.body.removeChild(div);\n return scrollbarWidth;\n};\n/** @hidden */\nexport function isCollectionFilter(item) {\n return item.type !== undefined && item.strategy !== undefined && item.value !== undefined;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWpELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQVUvRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxJQUFnQixFQUFFLE1BQThCLEVBQWMsRUFBRTtJQUMzRixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUNyRSxNQUFNLFlBQVksR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBRWhGLFFBQVEsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RCLEtBQUssc0JBQXNCLENBQUMsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLFdBQVcsQ0FBQyxDQUFDO1FBQzlGLEtBQUssc0JBQXNCLENBQUMsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLFdBQVcsQ0FBQyxDQUFDO1FBQzVGLEtBQUssc0JBQXNCLENBQUMsR0FBRztZQUMzQixPQUFP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fSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBEYXRldGltZUFkYXB0ZXIgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGF0ZXRpbWUnO1xuaW1wb3J0IHsgRklMVEVSX0RBVEVfU1RSQVRFR1ksIEZJTFRFUl9OVU1CRVJfU1RSQVRFR1ksIEZJTFRFUl9TVFJJTkdfU1RSQVRFR1kgfSBmcm9tICcuL2VudW1zJztcbmltcG9ydCB7XG4gICAgQ29sbGVjdGlvbkJvb2xlYW5GaWx0ZXIsXG4gICAgQ29sbGVjdGlvbkRhdGVGaWx0ZXIsXG4gICAgQ29sbGVjdGlvbkZpbHRlcixcbiAgICBDb2xsZWN0aW9uTnVtYmVyRmlsdGVyLFxuICAgIENvbGxlY3Rpb25TdHJpbmdGaWx0ZXJcbn0gZnJvbSAnLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFRhYmxlUm93IH0gZnJvbSAnLi9tb2RlbHMvdGFibGUtcm93Lm1vZGVsJztcblxuZXhwb3J0IGNvbnN0IGZpbHRlckJ5U3RyaW5nID0gKHJvd3M6IFRhYmxlUm93W10sIGZpbHRlcjogQ29sbGVjdGlvblN0cmluZ0ZpbHRlcik6IFRhYmxlUm93W10gPT4ge1xuICAgIGNvbnN0IGZpbHRlclZhbHVlID0gZmlsdGVyLnZhbHVlICYmIGZpbHRlci52YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGZpbHRlclZhbHVlMiA9IChmaWx0ZXIudmFsdWUyICYmIGZpbHRlci52YWx1ZTIudG9Mb2NhbGVMb3dlckNhc2UoKSkgfHwgJyc7XG5cbiAgICBzd2l0Y2ggKGZpbHRlci5zdHJhdGVneSkge1xuICAgICAgICBjYXNlIEZJTFRFUl9TVFJJTkdfU1RSQVRFR1kuRVE6XG4gICAgICAgICAgICByZXR1cm4gcm93cy5maWx0ZXIoKHIpID0+IGdldChyLnZhbHVlLCBmaWx0ZXIuZmllbGQpLnRvTG9jYWxlTG93ZXJDYXNlKCkgPT09IGZpbHRlclZhbHVlKTtcbiAgICAgICAgY2FzZSBGSUxURVJfU1RSSU5HX1NUUkFURUdZLkdUOlxuICAgICAgICAgICAgcmV0dXJuIHJvd3MuZmlsdGVyKChyKSA9PiBnZXQoci52YWx1ZSwgZmlsdGVyLmZpZWxkKS50b0xvY2FsZUxvd2VyQ2FzZSgpID4gZmlsdGVyVmFsdWUpO1xuICAgICAgICBjYXNlIEZJTFRFUl9TVFJJTkdfU1RSQVRFR1kuR1RFOlxuICAgICAgICAgICAgcmV0dXJuIHJvd3MuZmlsdGVyKChyKSA9PiBnZXQoci52YWx1ZSwgZmlsdGVyLmZpZWxkKS50b0xvY2FsZUxvd2VyQ2FzZSgpID49IGZpbHRlclZhbHVlKTtcbiAgICAgICAgY2FzZSBGSUxURVJfU1RSSU5HX1NUUkFURUdZLkxUOlxuICAgICAgICAgICAgcmV0dXJuIHJvd3MuZmlsdGVyKChyKSA9PiBnZXQoci52YWx1ZSwgZmlsdGVyLmZpZWxkKS50b0xvY2FsZUxvd2VyQ2FzZSgpIDwgZmlsdGVyVmFsdWUpO1xuICAgICAgICBjYXNlIEZJTFRFUl9TVFJJTkdfU1RSQVRFR1kuTFRFOlxuICAgICAgICAgICAgcmV0dXJuIHJvd3MuZmlsdGVyKChyKSA9PiBnZXQoci52YWx1ZSwgZmlsdGVyLmZpZWxkKS50b0xvY2FsZUxvd2VyQ2FzZSgpIDw9IGZpbHRlclZhbHVlKTtcbiAgICAgICAgY2FzZSBGSUxURVJfU1RSSU5HX1NUUkFURUdZLkJFVFdFRU46XG4gICAgICAgICAgICByZXR1cm4gcm93cy5maWx0ZXIoKHIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByb3dWYWx1ZSA9IGdldChyLnZhbHVlLCBmaWx0ZXIuZmllbGQpLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvd1ZhbHVlID49IGZpbHRlclZhbHVlICYmIHJvd1ZhbHVlIDw9IGZpbHRlclZhbHVlMjtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBjYXNlIEZJTFRFUl9TVFJJTkdfU1RSQVRFR1kuQkVHSU5TX1dJVEg6XG4gICAgICAgICAgICByZXR1cm4gcm93cy5maWx0ZXIoKHIpID0+IGdldChyLnZhbHVlLCBmaWx0ZXIuZmllbGQpLnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChmaWx0ZXJWYWx1ZSkpO1xuICAgICAgICBjYXNlIEZJTFRFUl9TVFJJTkdfU1RSQVRFR1kuRU5EU19XSVRIOlxuICAgICAgICAgICAgcmV0dXJuIHJvd3MuZmlsdGVyKChyKSA9PiBnZXQoci52YWx1ZSwgZmlsdGVyLmZpZWxkKS50b0xvY2FsZUxvd2VyQ2FzZSgpLmVuZHNXaXRoKGZpbHRlclZhbHVlKSk7XG4gICAgICAgIGNhc2UgRklMVEVSX1NUUklOR19TVFJBVEVHWS5DT05UQUlOUzpcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiByb3dzLmZpbHRlcigocikgPT4ge1xuICAgICAgICAgICAgICAgIGxldCByb3dWYWx1ZSA9IGdldChyLnZhbHVlLCBmaWx0ZXIuZmllbGQpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygcm93VmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvd1ZhbHVlID0gcm93VmFsdWUudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcm93VmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG59O1xuXG5leHBvcnQgY29uc3QgZmlsdGVyQnlOdW1iZXIgPSAocm93czogVGFibGVSb3dbXSwgZmlsdGVyOiBDb2xsZWN0aW9uTnVtYmVyRmlsdGVyKTogVGFibGVSb3dbXSA9PiB7XG4gICAgY29uc3QgZmlsdGVyVmFsdWUgPSBmaWx0ZXIudmFsdWU7XG4gICAgY29uc3QgZmlsdGVyVmFsdWUyID0gZmlsdGVyLnZhbHVlMiB8fCAwO1xuXG4gICAgc3dpdGNoIChmaWx0ZXIuc3RyYXRlZ3kpIHtcbiAgICAgICAgY2FzZSBGSUxURVJfTlVNQkVSX1NUUkFURUdZLkVROlxuICAgICAgICAgICAgcmV0dXJuIHJvd3MuZmlsdGVyKChyKSA9PiBnZXQoci52YWx1ZSwgZmlsdGVyLmZpZWxkKSA9PT0gZmlsdGVyVmFsdWUpO1xuICAgICAgICBjYXNlIEZJTFRFUl9OVU1CRVJfU1RSQVRFR1kuR1Q6XG4gICAgICAgICAgICByZXR1cm4gcm93cy5maWx0ZXIoKHIpID0+IGdldChyLnZhbHVlLCBmaWx0ZXIuZmllbGQpID4gZmlsdGVyVmFsdWUpO1xuICAgICAgICBjYXNlIEZJTFRFUl9OVU1CRVJfU1RSQVRFR1kuR1RFOlxuICAgICAgICAgICAgcmV0dXJuIHJvd3MuZmlsdGVyKChyKSA9PiBnZXQoci52YWx1ZSwgZmlsdGVyLmZpZWxkKSA+PSBmaWx0ZXJWYWx1ZSk7XG4gICAgICAgIGNhc2UgRklMVEVSX05VTUJFUl9TVFJBVEVHWS5MVDpcbiAgICAgICAgICAgIHJldHVybiByb3dzLmZpbHRlcigocikgPT4gZ2V0KHIudmFsdWUsIGZpbHRlci5maWVsZCkgPCBmaWx0ZXJWYWx1ZSk7XG4gICAgICAgIGNhc2UgRklMVEVSX05VTUJFUl9TVFJBVEVHWS5MVEU6XG4gICAgICAgICAgICByZXR1cm4gcm93cy5maWx0ZXIoKHIpID0+IGdldChyLnZhbHVlLCBmaWx0ZXIuZmllbGQpIDw9IGZpbHRlclZhbHVlKTtcbiAgICAgICAgY2FzZSBGSUxURVJfTlVNQkVSX1NUUkFURUdZLkJFVFdFRU46XG4gICAgICAgICAgICByZXR1cm4gcm93cy5maWx0ZXIoKHIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCByb3dWYWx1ZSA9IGdldChyLnZhbHVlLCBmaWx0ZXIuZmllbGQpO1xuICAgICAgICAgICAgICAgIHJldHVybiByb3dWYWx1ZSA+PSBmaWx0ZXJWYWx1ZSAmJiByb3dWYWx1ZSA8PSBmaWx0ZXJWYWx1ZTI7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiByb3dzLmZpbHRlcigocikgPT4gZ2V0KHIudmFsdWUsIGZpbHRlci5maWVsZCkudG9TdHJpbmcoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJCeURhdGUgPSA8RCA9IGFueT4oXG4gICAgcm93czogVGFibGVSb3dbXSxcbiAgICBmaWx0ZXI6IENvbGxlY3Rpb25EYXRlRmlsdGVyLFxuICAgIGFkYXB0ZXI6IERhdGV0aW1lQWRhcHRlcjxEPlxuKTogVGFibGVSb3dbXSA9PiB7XG4gICAgY29uc3QgZmlsdGVyVmFsdWUgPSBmaWx0ZXIudmFsdWU7XG4gICAgY29uc3QgZmlsdGVyVmFsdWUyID0gZmlsdGVyLnZhbHVlMjtcblxuICAgIHN3aXRjaCAoZmlsdGVyLnN0cmF0ZWd5KSB7XG4gICAgICAgIGNhc2UgRklMVEVSX0RBVEVfU1RSQVRFR1kuQUZURVI6XG4gICAgICAgICAgICByZXR1cm4gcm93cy5maWx0ZXIoKHIpID0+IGFkYXB0ZXIuY29tcGFyZURhdGUoZ2V0KHIudmFsdWUsIGZpbHRlci5maWVsZCksIGZpbHRlclZhbHVlKSA+IDApO1xuICAgICAgICBjYXNlIEZJTFRFUl9EQVRFX1NUUkFURUdZLk9OX09SX0FGVEVSOlxuICAgICAgICAgICAgcmV0dXJuIHJvd3MuZmlsdGVyKChyKSA9PiBhZGFwdGVyLmNvbXBhcmVEYXRlKGdldChyLnZhbHVlLCBmaWx0ZXIuZmllbGQpLCBmaWx0ZXJWYWx1ZSkgPj0gMCk7XG4gICAgICAgIGNhc2UgRklMVEVSX0RBVEVfU1RSQVRFR1kuQkVGT1JFOlxuICAgICAgICAgICAgcmV0dXJuIHJvd3MuZmlsdGVyKChyKSA9PiBhZGFwdGVyLmNvbXBhcmVEYXRlKGdldChyLnZhbHVlLCBmaWx0ZXIuZmllbGQpLCBmaWx0ZXJWYWx1ZSkgPCAwKTtcbiAgICAgICAgY2FzZSBGSUxURVJfREFURV9TVFJBVEVHWS5CRUZPUkVfT1JfT046XG4gICAgICAgICAgICByZXR1cm4gcm93cy5maWx0ZXIoKHIpID0+IGFkYXB0ZXIuY29tcGFyZURhdGUoZ2V0KHIudmFsdWUsIGZpbHRlci5maWVsZCksIGZpbHRlclZhbHVlKSA8PSAwKTtcbiAgICAgICAgY2FzZSBGSUxURVJfREFURV9TVFJBVEVHWS5CRVRXRUVOOlxuICAgICAgICAgICAgcmV0dXJuIHJvd3MuZmlsdGVyKChyKSA9PiBhZGFwdGVyLmlzQmV0d2VlbihnZXQoci52YWx1ZSwgZmlsdGVyLmZpZWxkKSwgZmlsdGVyVmFsdWUsIGZpbHRlclZhbHVlMikpO1xuICAgICAgICBjYXNlIEZJTFRFUl9EQVRFX1NUUkFURUdZLkVROlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIHJvd3MuZmlsdGVyKChyKSA9PiBhZGFwdGVyLmRhdGVUaW1lc0VxdWFsKGdldChyLnZhbHVlLCBmaWx0ZXIuZmllbGQpLCBmaWx0ZXJWYWx1ZSkpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJCeUJvb2xlYW4gPSAocm93czogVGFibGVSb3dbXSwgZmlsdGVyOiBDb2xsZWN0aW9uQm9vbGVhbkZpbHRlcik6IFRhYmxlUm93W10gPT5cbiAgICByb3dzLmZpbHRlcigocikgPT4gZ2V0KHIudmFsdWUsIGZpbHRlci5maWVsZCkgPT09IGZpbHRlci52YWx1ZSk7XG5cbmV4cG9ydCBjb25zdCBnZXRVbmlxdWVMaXN0VmFsdWVzQnlLZXkgPSA8VCwgSyBleHRlbmRzIGtleW9mIFQ+KGxpc3Q6IFRbXSwga2V5OiBLKTogVFtdID0+XG4gICAgQXJyYXkuZnJvbShcbiAgICAgICAgbGlzdFxuICAgICAgICAgICAgLnJlZHVjZSgobWFwLCBpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgbWFwLmRlbGV0ZShpdGVtW2tleV0pO1xuICAgICAgICAgICAgICAgIG1hcC5zZXQoaXRlbVtrZXldLCBpdGVtKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWFwO1xuICAgICAgICAgICAgfSwgbmV3IE1hcDxUW0tdLCBUPigpKVxuICAgICAgICAgICAgLnZhbHVlcygpXG4gICAgKTtcblxuZXhwb3J0IGNvbnN0IGdldFNjcm9sbEJhcldpZHRoID0gKGRvY3VtZW50OiBEb2N1bWVudCk6IG51bWJlciA9PiB7XG4gICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgZGl2LnRleHRDb250ZW50ID0gJ1cnO1xuICAgIGRpdi5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgZGl2LnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICBkaXYuc3R5bGUub3ZlcmZsb3dZID0gJ3Njcm9sbCc7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXYpO1xuICAgIGNvbnN0IHNjcm9sbGJhcldpZHRoID0gZGl2Lm9mZnNldFdpZHRoIC0gZGl2LmNsaWVudFdpZHRoO1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZGl2KTtcbiAgICByZXR1cm4gc2Nyb2xsYmFyV2lkdGg7XG59O1xuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ29sbGVjdGlvbkZpbHRlcihpdGVtOiBhbnkpOiBpdGVtIGlzIENvbGxlY3Rpb25GaWx0ZXIge1xuICAgIHJldHVybiBpdGVtLnR5cGUgIT09IHVuZGVmaW5lZCAmJiBpdGVtLnN0cmF0ZWd5ICE9PSB1bmRlZmluZWQgJiYgaXRlbS52YWx1ZSAhPT0gdW5kZWZpbmVkO1xufVxuIl19","import { isSelectItem } from '@fundamental-ngx/platform/shared';\nimport { Subject } from 'rxjs';\nimport { map, take, takeUntil } from 'rxjs/operators';\nimport { get } from '@fundamental-ngx/cdk/utils';\nimport { isCollectionFilter } from '../utils';\nexport class BaseTableDataProvider {\n constructor() {\n /** @hidden */\n this._destroy$ = new Subject();\n }\n /**\n * Method for setting external filtering conditions.\n * @param filterBy Set of column filters.\n * @param searchInput Search condition from search field.\n */\n setFilters(filterBy, searchInput) {\n this.filterBy = filterBy;\n this.searchInput = searchInput;\n }\n /**\n * Method for filtering the data.\n * @param items Array of data source items.\n * @param filters Set of column filters.\n * @returns Array of filtered items.\n */\n applyFiltering(items, filters) {\n items = items.filter((i) => this.getFilteringStrategy(i, filters));\n return items;\n }\n /** @hidden */\n getSelectItemValue(item) {\n return isSelectItem(item) ? item.value : item;\n }\n /**\n * Method which selects appropriate filtering strategy of the field depending on the filter type.\n * Developers can override this method to extend the filtering functionality.\n * @param item item of the data source.\n * @param filters Set of column filters.\n * @returns Whether or not item should be included in data array.\n */\n getFilteringStrategy(item, filters) {\n return filters\n .filter((condition) => condition.field)\n .every((filter) => {\n if (isCollectionFilter(filter)) {\n return this.collectionFilterStrategy(item, filter);\n }\n return this.collectionFilterGroupStrategy(item, filter);\n });\n }\n /**\n * Method which filters item depending on applied condition result.\n * Developers can override this method to extend its functionality\n * @param item Item to apply conditions to.\n * @param filter Column filter.\n * @returns {boolean} Whether this item should be present in filtered array of items.\n */\n collectionFilterStrategy(item, filter) {\n let result;\n switch (filter.type) {\n case 'boolean':\n result = this.filterBoolean(item, filter);\n break;\n case 'number':\n result = this.filterNumber(item, filter);\n break;\n case 'date': {\n result = this.filterDate(item, filter, this.dateTimeAdapter);\n break;\n }\n case 'string':\n default:\n result = Array.isArray(filter.value)\n ? this.filterArray(item, filter)\n : this.filterString(item, filter);\n break;\n }\n return result;\n }\n /**\n * Method which applies group filtering conditions for the item.\n * @param item Item to apply conditions to.\n * @param filter Filter group.\n * @returns {boolean} Whether this item should be present in filtered items array.\n */\n collectionFilterGroupStrategy(item, filter) {\n return filter.strategy === 'and'\n ? filter.filters.every((f) => this.collectionFilterStrategy(item, f))\n : filter.filters.some((f) => this.collectionFilterStrategy(item, f));\n }\n /**\n * Applies search of the search term for visible table columns.\n * Developers can override this method to extend the filtering functionality.\n * @param items data source items array.\n * @param tableState @see TableState Set of table parameters.\n * @returns filtered data source items array.\n */\n search(items, { searchInput, columnKeys }) {\n const searchText = searchInput?.text || '';\n const keysToSearchBy = columnKeys;\n if (searchText.trim() === '' || keysToSearchBy.length === 0) {\n return items;\n }\n items = items.filter((item) => {\n const valuesForSearch = keysToSearchBy.map((key) => get(item, key));\n return valuesForSearch\n .filter((value) => !!value)\n .map((value) => value.toString())\n .some((value) => value.toLocaleLowerCase().includes(searchText.toLocaleLowerCase()));\n });\n return items;\n }\n /**\n * String filtering strategy\n * @param item data source array item.\n * @param filter filter object\n * @returns whether or not item should be included in data source array.\n */\n filterString(item, filter) {\n const filterValue = filter.value && filter.value.toLocaleLowerCase();\n const filterValue2 = (filter.value2 && filter.value2.toLocaleLowerCase()) || '';\n let itemValue = get(item, filter.field);\n itemValue = itemValue ? itemValue.toLocaleLowerCase() : itemValue;\n let result;\n switch (filter.strategy) {\n case 'equalTo':\n result = itemValue === filterValue;\n break;\n case 'greaterThan':\n result = itemValue > filterValue;\n break;\n case 'greaterThanOrEqualTo':\n result = itemValue >= filterValue;\n break;\n case 'lessThan':\n result = itemValue < filterValue;\n break;\n case 'lessThanOrEqualTo':\n result = itemValue <= filterValue;\n break;\n case 'between':\n result = itemValue >= filterValue && itemValue <= filterValue2;\n break;\n case 'beginsWith':\n result = itemValue.startsWith(filterValue);\n break;\n case 'endsWith':\n result = itemValue.endsWith(filterValue);\n break;\n case 'contains':\n default:\n result = itemValue ? itemValue.includes(filterValue) : itemValue === filterValue;\n }\n return filter.exclude ? !result : result;\n }\n /**\n * Number filtering strategy\n * @param item data source array item.\n * @param filter filter object\n * @returns whether or not item should be included in data source array.\n */\n filterNumber(item, filter) {\n const filterValue = Number.parseFloat(filter.value);\n const filterValue2 = Number.parseFloat(filter.value2) || 0;\n const itemValue = Number.parseFloat(get(item, filter.field));\n let result;\n switch (filter.strategy) {\n case 'greaterThan':\n result = itemValue > filterValue;\n break;\n case 'greaterThanOrEqualTo':\n result = itemValue >= filterValue;\n break;\n case 'lessThan':\n result = itemValue < filterValue;\n break;\n case 'lessThanOrEqualTo':\n result = itemValue <= filterValue;\n break;\n case 'between':\n result = itemValue >= filterValue && itemValue <= filterValue2;\n break;\n case 'equalTo':\n default:\n result = itemValue === filterValue;\n }\n return filter.exclude ? !result : result;\n }\n /**\n * Date filtering strategy\n * @param item data source array item.\n * @param filter filter object\n * @param adapter\n * @returns whether or not item should be included in data source array.\n */\n filterDate(item, filter, adapter) {\n if (!adapter) {\n throw new Error('In order to filter date columns, please provide DateTime adapter in your TableDataProvider constructor.');\n }\n const filterValue = filter.value;\n const filterValue2 = filter.value2;\n const itemValue = get(item, filter.field);\n const diff = adapter.compareDate(itemValue, filterValue);\n let result;\n switch (filter.strategy) {\n case 'after':\n result = diff > 0;\n break;\n case 'onOrAfter':\n result = diff >= 0;\n break;\n case 'before':\n result = diff < 0;\n break;\n case 'beforeOrOn':\n result = diff <= 0;\n break;\n case 'between':\n result = adapter.isBetween(itemValue, filterValue, filterValue2);\n break;\n case 'equalTo':\n default:\n result = adapter.dateTimesEqual(itemValue, filterValue);\n }\n return filter.exclude ? !result : result;\n }\n /**\n * Boolean filtering strategy\n * @param item data source array item.\n * @param filter filter object\n * @returns whether or not item should be included in data source array.\n */\n filterBoolean(item, filter) {\n const filterValue = filter.value;\n const itemValue = get(item, filter.field);\n let result;\n switch (filter.strategy) {\n case 'equalTo':\n default:\n result = itemValue === filterValue;\n }\n return filter.exclude ? !result : result;\n }\n /**\n * Array filtering strategy\n * @param item data source array item.\n * @param filter filter object\n * @returns whether or not item should be included in data source array.\n */\n filterArray(item, filter) {\n const filterValues = filter.value.map((v) => this.getSelectItemValue(v));\n const itemValue = get(item, filter.field);\n let result;\n switch (filter.strategy) {\n case 'equalTo':\n default:\n result = filterValues.includes(itemValue);\n }\n return !filterValues.length || filter.exclude ? !result : result;\n }\n /** @hidden */\n unsubscribe() {\n this._destroy$.next();\n this._destroy$.complete();\n }\n}\nexport class TableDataProvider extends BaseTableDataProvider {\n /**\n * Method for retrieving the data.\n * @param tableState @see TableState Set of table parameters.\n * @returns Observable with data.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n fetch(tableState) {\n throw new Error('fetch method should be implemented by developers for custom data providers.');\n }\n /**\n * Method for applying filtering and retrieving the data.\n * @param state @see TableState Set of table parameters.\n * @returns Observable with filtered data.\n */\n fetchData(state) {\n return this.fetch(state).pipe(map((items) => {\n if (this.searchInput) {\n items = this.search(items, { ...state, ...{ searchInput: this.searchInput } });\n }\n if (this.filterBy) {\n items = this.applyFiltering(items, this.filterBy);\n }\n return items;\n }), takeUntil(this._destroy$));\n }\n /**\n * Method for getting all possible options for particular field.\n * Used for creating select options.\n * Developers can override this method to extend the filtering functionality.\n * @param field key of the data item.\n * @returns Observable with select items.\n */\n getFieldOptions(field) {\n return this.fetch().pipe(take(1), map((data) => {\n const options = data.map((item) => ({\n label: get(item, field),\n value: get(item, field)\n }));\n return options;\n }));\n }\n}\nexport class TableChildrenDataProvider extends BaseTableDataProvider {\n /**\n * Method for retrieving the data.\n * @param tableState @see TableState Set of table parameters.\n * @param parentRows\n * @returns Observable with data.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n fetch(tableState, parentRows) {\n throw new Error('fetch method should be implemented by developers for custom data providers.');\n }\n /**\n * Method for applying filtering and retrieving the data.\n * @param state @see TableState Set of table parameters.\n * @param tableRows\n * @returns Observable with filtered data.\n */\n fetchData(state, tableRows) {\n return this.fetch(state, tableRows).pipe(map((items) => {\n items.forEach((rowItems, row) => {\n if (this.searchInput) {\n rowItems = this.search(rowItems, { ...state, ...{ searchInput: this.searchInput } });\n }\n if (this.filterBy) {\n rowItems = this.applyFiltering(rowItems, this.filterBy);\n }\n if (rowItems.length === 0) {\n items.delete(row);\n }\n else {\n items.set(row, rowItems);\n }\n });\n return items;\n }), takeUntil(this._destroy$));\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9kb21haW4vdGFibGUtZGF0YS1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQWMsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDNUUsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVl0RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTlDLE1BQU0sT0FBZ0IscUJBQXFCO0lBQTNDO1FBaUJJLGNBQWM7UUFDSixjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQW9TOUMsQ0FBQztJQWxTRzs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLFFBQW9DLEVBQUUsV0FBeUI7UUFDdEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsY0FBYyxDQUFDLEtBQVUsRUFBRSxPQUFtQztRQUMxRCxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ25FLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxjQUFjO0lBQ2Qsa0JBQWtCLENBQUMsSUFBUztRQUN4QixPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFD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ciwgRmREYXRlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RhdGV0aW1lJztcbmltcG9ydCB7IFNlYXJjaElucHV0IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zZWFyY2gtZmllbGQnO1xuaW1wb3J0IHsgU2VsZWN0SXRlbSwgaXNTZWxlY3RJdGVtIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9zaGFyZWQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICAgIENvbGxlY3Rpb25Cb29sZWFuRmlsdGVyLFxuICAgIENvbGxlY3Rpb25EYXRlRmlsdGVyLFxuICAgIENvbGxlY3Rpb25GaWx0ZXIsXG4gICAgQ29sbGVjdGlvbkZpbHRlckFuZEdyb3VwLFxuICAgIENvbGxlY3Rpb25GaWx0ZXJHcm91cCxcbiAgICBDb2xsZWN0aW9uTnVtYmVyRmlsdGVyLFxuICAgIENvbGxlY3Rpb25TZWxlY3RGaWx0ZXIsXG4gICAgQ29sbGVjdGlvblN0cmluZ0ZpbHRlclxufSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbGxlY3Rpb24tZmlsdGVyLmludGVyZmFjZSc7XG5cbmltcG9ydCB7IGdldCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IFRhYmxlU3RhdGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3RhYmxlLXN0YXRlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUYWJsZVJvdyB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBpc0NvbGxlY3Rpb25GaWx0ZXIgfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlVGFibGVEYXRhUHJvdmlkZXI8VCwgUCA9IFRbXT4ge1xuICAgIGFic3RyYWN0IGZldGNoKHN0YXRlPzogVGFibGVTdGF0ZSwgcGFyZW50Um93cz86IFRhYmxlUm93PFQ+W10pOiBPYnNlcnZhYmxlPFA+O1xuXG4gICAgYWJzdHJhY3QgZmV0Y2hEYXRhKHN0YXRlOiBUYWJsZVN0YXRlLCBwYXJlbnRSb3dzPzogVGFibGVSb3c8VD5bXSk6IE9ic2VydmFibGU8UD47XG4gICAgLyoqIFRvdGFsIGl0ZW1zIGNvdW50LiAqL1xuICAgIHRvdGFsSXRlbXM6IG51bWJlcjtcbiAgICAvKiogQXJyYXkgb2YgaXRlbXMuICovXG4gICAgaXRlbXM6IFA7XG5cbiAgICAvKiogRGF0ZSB0aW1lIGFkYXB0ZXIgZm9yIGRhdGUgZmllbGQgZmlsdGVyaW5nLiAqL1xuICAgIGRhdGVUaW1lQWRhcHRlcj86IERhdGV0aW1lQWRhcHRlcjxhbnk+O1xuICAgIC8qKiBBZGRpdGlvbmFsIHNldCBvZiBmaWx0ZXJzIHByb3ZpZGVkIGJ5IG91dHNpZGUgY29tcG9uZW50LiAqL1xuICAgIHByb3RlY3RlZCBmaWx0ZXJCeTogQ29sbGVjdGlvbkZpbHRlckFuZEdyb3VwW107XG5cbiAgICAvKiogQWRkaXRpb25hbCBzZWFyY2ggcXVlcnkgcHJvdmlkZWQgYnkgb3V0c2lkZSBjb21wb25lbnQuICovXG4gICAgcHJvdGVjdGVkIHNlYXJjaElucHV0PzogU2VhcmNoSW5wdXQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIGZvciBzZXR0aW5nIGV4dGVybmFsIGZpbHRlcmluZyBjb25kaXRpb25zLlxuICAgICAqIEBwYXJhbSBmaWx0ZXJCeSBTZXQgb2YgY29sdW1uIGZpbHRlcnMuXG4gICAgICogQHBhcmFtIHNlYXJjaElucHV0IFNlYXJjaCBjb25kaXRpb24gZnJvbSBzZWFyY2ggZmllbGQuXG4gICAgICovXG4gICAgc2V0RmlsdGVycyhmaWx0ZXJCeTogQ29sbGVjdGlvbkZpbHRlckFuZEdyb3VwW10sIHNlYXJjaElucHV0PzogU2VhcmNoSW5wdXQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXJCeSA9IGZpbHRlckJ5O1xuICAgICAgICB0aGlzLnNlYXJjaElucHV0ID0gc2VhcmNoSW5wdXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIGZvciBmaWx0ZXJpbmcgdGhlIGRhdGEuXG4gICAgICogQHBhcmFtIGl0ZW1zIEFycmF5IG9mIGRhdGEgc291cmNlIGl0ZW1zLlxuICAgICAqIEBwYXJhbSBmaWx0ZXJzIFNldCBvZiBjb2x1bW4gZmlsdGVycy5cbiAgICAgKiBAcmV0dXJucyBBcnJheSBvZiBmaWx0ZXJlZCBpdGVtcy5cbiAgICAgKi9cbiAgICBhcHBseUZpbHRlcmluZyhpdGVtczogVFtdLCBmaWx0ZXJzOiBDb2xsZWN0aW9uRmlsdGVyQW5kR3JvdXBbXSk6IFRbXSB7XG4gICAgICAgIGl0ZW1zID0gaXRlbXMuZmlsdGVyKChpKSA9PiB0aGlzLmdldEZpbHRlcmluZ1N0cmF0ZWd5KGksIGZpbHRlcnMpKTtcbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0U2VsZWN0SXRlbVZhbHVlKGl0ZW06IGFueSk6IGFueSB7XG4gICAgICAgIHJldHVybiBpc1NlbGVjdEl0ZW0oaXRlbSkgPyBpdGVtLnZhbHVlIDogaXRlbTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2Qgd2hpY2ggc2VsZWN0cyBhcHByb3ByaWF0ZSBmaWx0ZXJpbmcgc3RyYXRlZ3kgb2YgdGhlIGZpZWxkIGRlcGVuZGluZyBvbiB0aGUgZmlsdGVyIHR5cGUuXG4gICAgICogRGV2ZWxvcGVycyBjYW4gb3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gZXh0ZW5kIHRoZSBmaWx0ZXJpbmcgZnVuY3Rpb25hbGl0eS5cbiAgICAgKiBAcGFyYW0gaXRlbSBpdGVtIG9mIHRoZSBkYXRhIHNvdXJjZS5cbiAgICAgKiBAcGFyYW0gZmlsdGVycyBTZXQgb2YgY29sdW1uIGZpbHRlcnMuXG4gICAgICogQHJldHVybnMgV2hldGhlciBvciBub3QgaXRlbSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gZGF0YSBhcnJheS5cbiAgICAgKi9cbiAgICBnZXRGaWx0ZXJpbmdTdHJhdGVneShpdGVtOiBULCBmaWx0ZXJzOiBDb2xsZWN0aW9uRmlsdGVyQW5kR3JvdXBbXSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZmlsdGVyc1xuICAgICAgICAgICAgLmZpbHRlcigoY29uZGl0aW9uKSA9PiBjb25kaXRpb24uZmllbGQpXG4gICAgICAgICAgICAuZXZlcnkoKGZpbHRlcikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpc0NvbGxlY3Rpb25GaWx0ZXIoZmlsdGVyKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uRmlsdGVyU3RyYXRlZ3koaXRlbSwgZmlsdGVyKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uRmlsdGVyR3JvdXBTdHJhdGVneShpdGVtLCBmaWx0ZXIpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHdoaWNoIGZpbHRlcnMgaXRlbSBkZXBlbmRpbmcgb24gYXBwbGllZCBjb25kaXRpb24gcmVzdWx0LlxuICAgICAqIERldmVsb3BlcnMgY2FuIG92ZXJyaWRlIHRoaXMgbWV0aG9kIHRvIGV4dGVuZCBpdHMgZnVuY3Rpb25hbGl0eVxuICAgICAqIEBwYXJhbSBpdGVtIEl0ZW0gdG8gYXBwbHkgY29uZGl0aW9ucyB0by5cbiAgICAgKiBAcGFyYW0gZmlsdGVyIENvbHVtbiBmaWx0ZXIuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhpcyBpdGVtIHNob3VsZCBiZSBwcmVzZW50IGluIGZpbHRlcmVkIGFycmF5IG9mIGl0ZW1zLlxuICAgICAqL1xuICAgIGNvbGxlY3Rpb25GaWx0ZXJTdHJhdGVneShpdGVtOiBULCBmaWx0ZXI6IENvbGxlY3Rpb25GaWx0ZXIpOiBib29sZWFuIHtcbiAgICAgICAgbGV0IHJlc3VsdDogYm9vbGVhbjtcblxuICAgICAgICBzd2l0Y2ggKGZpbHRlci50eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSB0aGlzLmZpbHRlckJvb2xlYW4oaXRlbSwgZmlsdGVyIGFzIENvbGxlY3Rpb25Cb29sZWFuRmlsdGVyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5maWx0ZXJOdW1iZXIoaXRlbSwgZmlsdGVyIGFzIENvbGxlY3Rpb25OdW1iZXJGaWx0ZXIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZGF0ZSc6IHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSB0aGlzLmZpbHRlckRhdGUoaXRlbSwgZmlsdGVyIGFzIENvbGxlY3Rpb25EYXRlRmlsdGVyLCB0aGlzLmRhdGVUaW1lQWRhcHRlcik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBBcnJheS5pc0FycmF5KGZpbHRlci52YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmZpbHRlckFycmF5KGl0ZW0sIGZpbHRlciBhcyBDb2xsZWN0aW9uU2VsZWN0RmlsdGVyKVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuZmlsdGVyU3RyaW5nKGl0ZW0sIGZpbHRlciBhcyBDb2xsZWN0aW9uU3RyaW5nRmlsdGVyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHdoaWNoIGFwcGxpZXMgZ3JvdXAgZmlsdGVyaW5nIGNvbmRpdGlvbnMgZm9yIHRoZSBpdGVtLlxuICAgICAqIEBwYXJhbSBpdGVtIEl0ZW0gdG8gYXBwbHkgY29uZGl0aW9ucyB0by5cbiAgICAgKiBAcGFyYW0gZmlsdGVyIEZpbHRlciBncm91cC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciB0aGlzIGl0ZW0gc2hvdWxkIGJlIHByZXNlbnQgaW4gZmlsdGVyZWQgaXRlbXMgYXJyYXkuXG4gICAgICovXG4gICAgY29sbGVjdGlvbkZpbHRlckdyb3VwU3RyYXRlZ3koaXRlbTogVCwgZmlsdGVyOiBDb2xsZWN0aW9uRmlsdGVyR3JvdXApOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGZpbHRlci5zdHJhdGVneSA9PT0gJ2FuZCdcbiAgICAgICAgICAgID8gZmlsdGVyLmZpbHRlcnMuZXZlcnkoKGYpID0+IHRoaXMuY29sbGVjdGlvbkZpbHRlclN0cmF0ZWd5KGl0ZW0sIGYpKVxuICAgICAgICAgICAgOiBmaWx0ZXIuZmlsdGVycy5zb21lKChmKSA9PiB0aGlzLmNvbGxlY3Rpb25GaWx0ZXJTdHJhdGVneShpdGVtLCBmKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXBwbGllcyBzZWFyY2ggb2YgdGhlIHNlYXJjaCB0ZXJtIGZvciB2aXNpYmxlIHRhYmxlIGNvbHVtbnMuXG4gICAgICogRGV2ZWxvcGVycyBjYW4gb3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gZXh0ZW5kIHRoZSBmaWx0ZXJpbmcgZnVuY3Rpb25hbGl0eS5cbiAgICAgKiBAcGFyYW0gaXRlbXMgZGF0YSBzb3VyY2UgaXRlbXMgYXJyYXkuXG4gICAgICogQHBhcmFtIHRhYmxlU3RhdGUgQHNlZSBUYWJsZVN0YXRlIFNldCBvZiB0YWJsZSBwYXJhbWV0ZXJzLlxuICAgICAqIEByZXR1cm5zIGZpbHRlcmVkIGRhdGEgc291cmNlIGl0ZW1zIGFycmF5LlxuICAgICAqL1xuICAgIHNlYXJjaChpdGVtczogVFtdLCB7IHNlYXJjaElucHV0LCBjb2x1bW5LZXlzIH06IFRhYmxlU3RhdGUpOiBUW10ge1xuICAgICAgICBjb25zdCBzZWFyY2hUZXh0ID0gc2VhcmNoSW5wdXQ/LnRleHQgfHwgJyc7XG4gICAgICAgIGNvbnN0IGtleXNUb1NlYXJjaEJ5ID0gY29sdW1uS2V5cztcblxuICAgICAgICBpZiAoc2VhcmNoVGV4dC50cmltKCkgPT09ICcnIHx8IGtleXNUb1NlYXJjaEJ5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbXMgPSBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlc0ZvclNlYXJjaCA9IGtleXNUb1NlYXJjaEJ5Lm1hcCgoa2V5KSA9PiBnZXQoaXRlbSwga2V5KSk7XG5cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZXNGb3JTZWFyY2hcbiAgICAgICAgICAgICAgICAuZmlsdGVyKCh2YWx1ZSkgPT4gISF2YWx1ZSlcbiAgICAgICAgICAgICAgICAubWFwKCh2YWx1ZSk6IHN0cmluZyA9PiB2YWx1ZS50b1N0cmluZygpKVxuICAgICAgICAgICAgICAgIC5zb21lKCh2YWx1ZSkgPT4gdmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkpKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFN0cmluZyBmaWx0ZXJpbmcgc3RyYXRlZ3lcbiAgICAgKiBAcGFyYW0gaXRlbSBkYXRhIHNvdXJjZSBhcnJheSBpdGVtLlxuICAgICAqIEBwYXJhbSBmaWx0ZXIgZmlsdGVyIG9iamVjdFxuICAgICAqIEByZXR1cm5zIHdoZXRoZXIgb3Igbm90IGl0ZW0gc2hvdWxkIGJlIGluY2x1ZGVkIGluIGRhdGEgc291cmNlIGFycmF5LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBmaWx0ZXJTdHJpbmcoaXRlbTogVCwgZmlsdGVyOiBDb2xsZWN0aW9uU3RyaW5nRmlsdGVyKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGZpbHRlclZhbHVlID0gZmlsdGVyLnZhbHVlICYmIGZpbHRlci52YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZTIgPSAoZmlsdGVyLnZhbHVlMiAmJiBmaWx0ZXIudmFsdWUyLnRvTG9jYWxlTG93ZXJDYXNlKCkpIHx8ICcnO1xuICAgICAgICBsZXQgaXRlbVZhbHVlID0gZ2V0KGl0ZW0sIGZpbHRlci5maWVsZCk7XG5cbiAgICAgICAgaXRlbVZhbHVlID0gaXRlbVZhbHVlID8gaXRlbVZhbHVlLnRvTG9jYWxlTG93ZXJDYXNlKCkgOiBpdGVtVmFsdWU7XG5cbiAgICAgICAgbGV0IHJlc3VsdDogYm9vbGVhbjtcblxuICAgICAgICBzd2l0Y2ggKGZpbHRlci5zdHJhdGVneSkge1xuICAgICAgICAgICAgY2FzZSAnZXF1YWxUbyc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXRlbVZhbHVlID09PSBmaWx0ZXJWYWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2dyZWF0ZXJUaGFuJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpdGVtVmFsdWUgPiBmaWx0ZXJWYWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2dyZWF0ZXJUaGFuT3JFcXVhbFRvJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpdGVtVmFsdWUgPj0gZmlsdGVyVmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdsZXNzVGhhbic6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXRlbVZhbHVlIDwgZmlsdGVyVmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdsZXNzVGhhbk9yRXF1YWxUbyc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXRlbVZhbHVlIDw9IGZpbHRlclZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYmV0d2Vlbic6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXRlbVZhbHVlID49IGZpbHRlclZhbHVlICYmIGl0ZW1WYWx1ZSA8PSBmaWx0ZXJWYWx1ZTI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdiZWdpbnNXaXRoJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBpdGVtVmFsdWUuc3RhcnRzV2l0aChmaWx0ZXJWYWx1ZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdlbmRzV2l0aCc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXRlbVZhbHVlLmVuZHNXaXRoKGZpbHRlclZhbHVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NvbnRhaW5zJzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXRlbVZhbHVlID8gaXRlbVZhbHVlLmluY2x1ZGVzKGZpbHRlclZhbHVlKSA6IGl0ZW1WYWx1ZSA9PT0gZmlsdGVyVmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyLmV4Y2x1ZGUgPyAhcmVzdWx0IDogcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE51bWJlciBmaWx0ZXJpbmcgc3RyYXRlZ3lcbiAgICAgKiBAcGFyYW0gaXRlbSBkYXRhIHNvdXJjZSBhcnJheSBpdGVtLlxuICAgICAqIEBwYXJhbSBmaWx0ZXIgZmlsdGVyIG9iamVjdFxuICAgICAqIEByZXR1cm5zIHdoZXRoZXIgb3Igbm90IGl0ZW0gc2hvdWxkIGJlIGluY2x1ZGVkIGluIGRhdGEgc291cmNlIGFycmF5LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBmaWx0ZXJOdW1iZXIoaXRlbTogVCwgZmlsdGVyOiBDb2xsZWN0aW9uTnVtYmVyRmlsdGVyKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGZpbHRlclZhbHVlID0gTnVtYmVyLnBhcnNlRmxvYXQoZmlsdGVyLnZhbHVlIGFzIHVua25vd24gYXMgc3RyaW5nKTtcbiAgICAgICAgY29uc3QgZmlsdGVyVmFsdWUyID0gTnVtYmVyLnBhcnNlRmxvYXQoZmlsdGVyLnZhbHVlMiBhcyB1bmtub3duIGFzIHN0cmluZykgfHwgMDtcbiAgICAgICAgY29uc3QgaXRlbVZhbHVlID0gTnVtYmVyLnBhcnNlRmxvYXQoZ2V0KGl0ZW0sIGZpbHRlci5maWVsZCkpO1xuICAgICAgICBsZXQgcmVzdWx0OiBib29sZWFuO1xuXG4gICAgICAgIHN3aXRjaCAoZmlsdGVyLnN0cmF0ZWd5KSB7XG4gICAgICAgICAgICBjYXNlICdncmVhdGVyVGhhbic6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXRlbVZhbHVlID4gZmlsdGVyVmFsdWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdncmVhdGVyVGhhbk9yRXF1YWxUbyc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXRlbVZhbHVlID49IGZpbHRlclZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbGVzc1RoYW4nOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGl0ZW1WYWx1ZSA8IGZpbHRlclZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbGVzc1RoYW5PckVxdWFsVG8nOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGl0ZW1WYWx1ZSA8PSBmaWx0ZXJWYWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2JldHdlZW4nOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGl0ZW1WYWx1ZSA+PSBmaWx0ZXJWYWx1ZSAmJiBpdGVtVmFsdWUgPD0gZmlsdGVyVmFsdWUyO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZXF1YWxUbyc6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGl0ZW1WYWx1ZSA9PT0gZmlsdGVyVmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyLmV4Y2x1ZGUgPyAhcmVzdWx0IDogcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERhdGUgZmlsdGVyaW5nIHN0cmF0ZWd5XG4gICAgICogQHBhcmFtIGl0ZW0gZGF0YSBzb3VyY2UgYXJyYXkgaXRlbS5cbiAgICAgKiBAcGFyYW0gZmlsdGVyIGZpbHRlciBvYmplY3RcbiAgICAgKiBAcGFyYW0gYWRhcHRlclxuICAgICAqIEByZXR1cm5zIHdoZXRoZXIgb3Igbm90IGl0ZW0gc2hvdWxkIGJlIGluY2x1ZGVkIGluIGRhdGEgc291cmNlIGFycmF5LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBmaWx0ZXJEYXRlPEQgPSBGZERhdGU+KGl0ZW06IFQsIGZpbHRlcjogQ29sbGVjdGlvbkRhdGVGaWx0ZXIsIGFkYXB0ZXI/OiBEYXRldGltZUFkYXB0ZXI8RD4pOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCFhZGFwdGVyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgJ0luIG9yZGVyIHRvIGZpbHRlciBkYXRlIGNvbHVtbnMsIHBsZWFzZSBwcm92aWRlIERhdGVUaW1lIGFkYXB0ZXIgaW4geW91ciBUYWJsZURhdGFQcm92aWRlciBjb25zdHJ1Y3Rvci4nXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSBmaWx0ZXIudmFsdWU7XG4gICAgICAgIGNvbnN0IGZpbHRlclZhbHVlMiA9IGZpbHRlci52YWx1ZTI7XG4gICAgICAgIGNvbnN0IGl0ZW1WYWx1ZSA9IGdldChpdGVtLCBmaWx0ZXIuZmllbGQpO1xuICAgICAgICBjb25zdCBkaWZmID0gYWRhcHRlci5jb21wYXJlRGF0ZShpdGVtVmFsdWUsIGZpbHRlclZhbHVlKTtcbiAgICAgICAgbGV0IHJlc3VsdDogYm9vbGVhbjtcblxuICAgICAgICBzd2l0Y2ggKGZpbHRlci5zdHJhdGVneSkge1xuICAgICAgICAgICAgY2FzZSAnYWZ0ZXInOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRpZmYgPiAwO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnb25PckFmdGVyJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBkaWZmID49IDA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdiZWZvcmUnOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRpZmYgPCAwO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYmVmb3JlT3JPbic6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gZGlmZiA8PSAwO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYmV0d2Vlbic6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gYWRhcHRlci5pc0JldHdlZW4oaXRlbVZhbHVlLCBmaWx0ZXJWYWx1ZSwgZmlsdGVyVmFsdWUyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnZXF1YWxUbyc6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGFkYXB0ZXIuZGF0ZVRpbWVzRXF1YWwoaXRlbVZhbHVlLCBmaWx0ZXJWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyLmV4Y2x1ZGUgPyAhcmVzdWx0IDogcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJvb2xlYW4gZmlsdGVyaW5nIHN0cmF0ZWd5XG4gICAgICogQHBhcmFtIGl0ZW0gZGF0YSBzb3VyY2UgYXJyYXkgaXRlbS5cbiAgICAgKiBAcGFyYW0gZmlsdGVyIGZpbHRlciBvYmplY3RcbiAgICAgKiBAcmV0dXJucyB3aGV0aGVyIG9yIG5vdCBpdGVtIHNob3VsZCBiZSBpbmNsdWRlZCBpbiBkYXRhIHNvdXJjZSBhcnJheS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZmlsdGVyQm9vbGVhbihpdGVtOiBULCBmaWx0ZXI6IENvbGxlY3Rpb25Cb29sZWFuRmlsdGVyKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGZpbHRlclZhbHVlID0gZmlsdGVyLnZhbHVlO1xuICAgICAgICBjb25zdCBpdGVtVmFsdWUgPSBnZXQoaXRlbSwgZmlsdGVyLmZpZWxkKTtcbiAgICAgICAgbGV0IHJlc3VsdDogYm9vbGVhbjtcblxuICAgICAgICBzd2l0Y2ggKGZpbHRlci5zdHJhdGVneSkge1xuICAgICAgICAgICAgY2FzZSAnZXF1YWxUbyc6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGl0ZW1WYWx1ZSA9PT0gZmlsdGVyVmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyLmV4Y2x1ZGUgPyAhcmVzdWx0IDogcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFycmF5IGZpbHRlcmluZyBzdHJhdGVneVxuICAgICAqIEBwYXJhbSBpdGVtIGRhdGEgc291cmNlIGFycmF5IGl0ZW0uXG4gICAgICogQHBhcmFtIGZpbHRlciBmaWx0ZXIgb2JqZWN0XG4gICAgICogQHJldHVybnMgd2hldGhlciBvciBub3QgaXRlbSBzaG91bGQgYmUgaW5jbHVkZWQgaW4gZGF0YSBzb3VyY2UgYXJyYXkuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGZpbHRlckFycmF5KGl0ZW06IFQsIGZpbHRlcjogQ29sbGVjdGlvblNlbGVjdEZpbHRlcik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZXMgPSBmaWx0ZXIudmFsdWUubWFwKCh2KSA9PiB0aGlzLmdldFNlbGVjdEl0ZW1WYWx1ZSh2KSk7XG4gICAgICAgIGNvbnN0IGl0ZW1WYWx1ZSA9IGdldChpdGVtLCBmaWx0ZXIuZmllbGQpO1xuICAgICAgICBsZXQgcmVzdWx0OiBib29sZWFuO1xuXG4gICAgICAgIHN3aXRjaCAoZmlsdGVyLnN0cmF0ZWd5KSB7XG4gICAgICAgICAgICBjYXNlICdlcXVhbFRvJzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gZmlsdGVyVmFsdWVzLmluY2x1ZGVzKGl0ZW1WYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gIWZpbHRlclZhbHVlcy5sZW5ndGggfHwgZmlsdGVyLmV4Y2x1ZGUgPyAhcmVzdWx0IDogcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHVuc3Vic2NyaWJlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGFibGVEYXRhUHJvdmlkZXI8VD4gZXh0ZW5kcyBCYXNlVGFibGVEYXRhUHJvdmlkZXI8VD4ge1xuICAgIC8qKlxuICAgICAqIE1ldGhvZCBmb3IgcmV0cmlldmluZyB0aGUgZGF0YS5cbiAgICAgKiBAcGFyYW0gdGFibGVTdGF0ZSBAc2VlIFRhYmxlU3RhdGUgU2V0IG9mIHRhYmxlIHBhcmFtZXRlcnMuXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZSB3aXRoIGRhdGEuXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIGZldGNoKHRhYmxlU3RhdGU/OiBUYWJsZVN0YXRlKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdmZXRjaCBtZXRob2Qgc2hvdWxkIGJlIGltcGxlbWVudGVkIGJ5IGRldmVsb3BlcnMgZm9yIGN1c3RvbSBkYXRhIHByb3ZpZGVycy4nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgZm9yIGFwcGx5aW5nIGZpbHRlcmluZyBhbmQgcmV0cmlldmluZyB0aGUgZGF0YS5cbiAgICAgKiBAcGFyYW0gc3RhdGUgQHNlZSBUYWJsZVN0YXRlIFNldCBvZiB0YWJsZSBwYXJhbWV0ZXJzLlxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGUgd2l0aCBmaWx0ZXJlZCBkYXRhLlxuICAgICAqL1xuICAgIGZldGNoRGF0YShzdGF0ZTogVGFibGVTdGF0ZSk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZldGNoKHN0YXRlKS5waXBlKFxuICAgICAgICAgICAgbWFwKChpdGVtcykgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaElucHV0KSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zID0gdGhpcy5zZWFyY2goaXRlbXMsIHsgLi4uc3RhdGUsIC4uLnsgc2VhcmNoSW5wdXQ6IHRoaXMuc2VhcmNoSW5wdXQgfSB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJCeSkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtcyA9IHRoaXMuYXBwbHlGaWx0ZXJpbmcoaXRlbXMsIHRoaXMuZmlsdGVyQnkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtcztcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCBmb3IgZ2V0dGluZyBhbGwgcG9zc2libGUgb3B0aW9ucyBmb3IgcGFydGljdWxhciBmaWVsZC5cbiAgICAgKiBVc2VkIGZvciBjcmVhdGluZyBzZWxlY3Qgb3B0aW9ucy5cbiAgICAgKiBEZXZlbG9wZXJzIGNhbiBvdmVycmlkZSB0aGlzIG1ldGhvZCB0byBleHRlbmQgdGhlIGZpbHRlcmluZyBmdW5jdGlvbmFsaXR5LlxuICAgICAqIEBwYXJhbSBmaWVsZCBrZXkgb2YgdGhlIGRhdGEgaXRlbS5cbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHdpdGggc2VsZWN0IGl0ZW1zLlxuICAgICAqL1xuICAgIGdldEZpZWxkT3B0aW9ucyhmaWVsZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxTZWxlY3RJdGVtW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2goKS5waXBlKFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIG1hcCgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnM6IFNlbGVjdEl0ZW1bXSA9IGRhdGEubWFwKChpdGVtKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogZ2V0KGl0ZW0sIGZpZWxkKSxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGdldChpdGVtLCBmaWVsZClcbiAgICAgICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGFibGVDaGlsZHJlbkRhdGFQcm92aWRlcjxUPiBleHRlbmRzIEJhc2VUYWJsZURhdGFQcm92aWRlcjxULCBNYXA8VGFibGVSb3c8VD4sIFRbXT4+IHtcbiAgICAvKipcbiAgICAgKiBNZXRob2QgZm9yIHJldHJpZXZpbmcgdGhlIGFtb3VudCBvZiBjaGlsZCBpdGVtZiBvciBhIGRlZmluZWQgcm93LlxuICAgICAqIEBwYXJhbSByb3dcbiAgICAgKiBAcGFyYW0gc3RhdGVcbiAgICAgKi9cbiAgICBhYnN0cmFjdCByb3dDaGlsZHJlbkNvdW50KHJvdzogVGFibGVSb3c8VD4sIHN0YXRlOiBUYWJsZVN0YXRlKTogT2JzZXJ2YWJsZTxudW1iZXI+O1xuICAgIC8qKlxuICAgICAqIE1ldGhvZCBmb3IgcmV0cmlldmluZyB0aGUgZGF0YS5cbiAgICAgKiBAcGFyYW0gdGFibGVTdGF0ZSBAc2VlIFRhYmxlU3RhdGUgU2V0IG9mIHRhYmxlIHBhcmFtZXRlcnMuXG4gICAgICogQHBhcmFtIHBhcmVudFJvd3NcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHdpdGggZGF0YS5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgZmV0Y2godGFibGVTdGF0ZT86IFRhYmxlU3RhdGUsIHBhcmVudFJvd3M/OiBUYWJsZVJvdzxUPltdKTogT2JzZXJ2YWJsZTxNYXA8VGFibGVSb3c8VD4sIFRbXT4+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdmZXRjaCBtZXRob2Qgc2hvdWxkIGJlIGltcGxlbWVudGVkIGJ5IGRldmVsb3BlcnMgZm9yIGN1c3RvbSBkYXRhIHByb3ZpZGVycy4nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgZm9yIGFwcGx5aW5nIGZpbHRlcmluZyBhbmQgcmV0cmlldmluZyB0aGUgZGF0YS5cbiAgICAgKiBAcGFyYW0gc3RhdGUgQHNlZSBUYWJsZVN0YXRlIFNldCBvZiB0YWJsZSBwYXJhbWV0ZXJzLlxuICAgICAqIEBwYXJhbSB0YWJsZVJvd3NcbiAgICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHdpdGggZmlsdGVyZWQgZGF0YS5cbiAgICAgKi9cbiAgICBmZXRjaERhdGEoc3RhdGU6IFRhYmxlU3RhdGUsIHRhYmxlUm93cz86IFRhYmxlUm93PFQ+W10pOiBPYnNlcnZhYmxlPE1hcDxUYWJsZVJvdzxUPiwgVFtdPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mZXRjaChzdGF0ZSwgdGFibGVSb3dzKS5waXBlKFxuICAgICAgICAgICAgbWFwKChpdGVtcykgPT4ge1xuICAgICAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goKHJvd0l0ZW1zLCByb3cpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoSW5wdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd0l0ZW1zID0gdGhpcy5zZWFyY2gocm93SXRlbXMsIHsgLi4uc3RhdGUsIC4uLnsgc2VhcmNoSW5wdXQ6IHRoaXMuc2VhcmNoSW5wdXQgfSB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpbHRlckJ5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3dJdGVtcyA9IHRoaXMuYXBwbHlGaWx0ZXJpbmcocm93SXRlbXMsIHRoaXMuZmlsdGVyQnkpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHJvd0l0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMuZGVsZXRlKHJvdyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy5zZXQocm93LCByb3dJdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JClcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=","import { BehaviorSubject, Subject } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\nexport class BaseTableDataSource {\n /** @hidden */\n constructor() {\n /** @hidden */\n this._dataChanges$ = new BehaviorSubject([]);\n /** @hidden */\n this._onDataRequested$ = new Subject();\n /** @hidden */\n this._onDataReceived$ = new Subject();\n /** @hidden */\n this._destroy$ = new Subject();\n this._dataLoading$ = new BehaviorSubject(this._dataLoading);\n }\n /**\n * Emitted when new data has been requested.\n * @returns Observable\n */\n get dataRequested() {\n return this._onDataRequested$.asObservable();\n }\n /**\n * Emitted when new data has been received.\n * @returns Observable\n */\n get dataReceived() {\n return this._onDataReceived$.asObservable();\n }\n /**\n * Emitted when loading state has been changed.\n * @returns Observable.\n */\n get dataLoading() {\n return this._dataLoading$.asObservable();\n }\n /**\n * Emits when the data from the provider has been changed.\n * @returns Observable of data source objects.\n */\n get dataChanges() {\n return this._dataChanges$.asObservable().pipe(takeUntil(this._destroy$));\n }\n /** @hidden */\n get isDataLoading() {\n return this._dataLoading;\n }\n /** @hidden */\n get data() {\n return this._dataChanges$.value;\n }\n /** @hidden */\n open() {\n return this._dataChanges$.asObservable();\n }\n /** @hidden */\n onDataRequested() {\n return this._onDataRequested$.asObservable().pipe(map(() => void 0));\n }\n /** @hidden */\n onDataReceived() {\n return this._onDataReceived$.asObservable().pipe(map(() => void 0));\n }\n /** @hidden */\n close() { }\n /**\n * Closes the stream\n */\n unsubscribe() {\n this._destroy$.next();\n this._destroy$.complete();\n }\n}\nexport class TableDataSource extends BaseTableDataSource {\n /**\n * @hidden\n */\n constructor(dataProvider) {\n super();\n this.dataProvider = dataProvider;\n }\n /**\n * Method for retrieving the data of the provided data source.\n * @param tableState @see TableState Set of table parameters.\n */\n fetch(tableState) {\n this._onDataRequested$.next(true);\n this._dataLoading$.next(true);\n this._dataLoading = true;\n this.dataProvider.fetchData(tableState).subscribe({\n next: (items) => {\n this._onDataReceived$.next(true);\n this._dataLoading = false;\n this._dataLoading$.next(false);\n this._dataChanges$.next(items);\n },\n error: (error) => {\n this._onDataReceived$.next(false);\n this._dataLoading = false;\n this._dataChanges$.error(error);\n }\n });\n }\n}\nexport class ChildTableDataSource extends BaseTableDataSource {\n /**\n * @hidden\n */\n constructor(dataProvider) {\n super();\n this.dataProvider = dataProvider;\n }\n /**\n * Method responsible for retrieving the items from the data provider.\n * Additionaly, it sets the loading state along with the dataLoading and dataChanges streams.\n * @param tableState\n * @param parentRows\n */\n fetch(tableState, parentRows) {\n this._onDataRequested$.next(true);\n const loadingState = parentRows?.map((row) => ({ row, loading: true })) || [];\n const finishedLoadingState = loadingState.map(({ row }) => ({ row, loading: false }));\n this._dataLoading$.next(loadingState);\n this._dataLoading = loadingState;\n this.dataProvider.fetchData(tableState, parentRows).subscribe({\n next: (items) => {\n this._onDataReceived$.next(true);\n this._dataLoading = finishedLoadingState;\n this._dataLoading$.next(finishedLoadingState);\n this._dataChanges$.next(items);\n },\n error: (error) => {\n this._onDataReceived$.next(false);\n this._dataLoading = finishedLoadingState;\n this._dataLoading$.next(finishedLoadingState);\n this._dataChanges$.error(error);\n }\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS1zb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvZG9tYWluL3RhYmxlLWRhdGEtc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzVELE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFNaEQsTUFBTSxPQUFnQixtQkFBbUI7SUF3QnJDLGNBQWM7SUFDZDtRQWxCQSxjQUFjO1FBQ0ssa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBSSxFQUFTLENBQUMsQ0FBQztRQUNyRSxjQUFjO1FBQ0ssc0JBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUU5RCxjQUFjO1FBQ0sscUJBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQVE3RCxjQUFjO1FBQ0ssY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFJL0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLFlBQVk7UUFDWixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMs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Y2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBUYWJsZVN0YXRlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90YWJsZS1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGFibGVSb3cgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgVGFibGVDaGlsZHJlbkRhdGFQcm92aWRlciwgVGFibGVEYXRhUHJvdmlkZXIgfSBmcm9tICcuL3RhYmxlLWRhdGEtcHJvdmlkZXInO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVRhYmxlRGF0YVNvdXJjZTxULCBQID0gVFtdLCBMID0gYm9vbGVhbj4gaW1wbGVtZW50cyBEYXRhU291cmNlPFQsIFAsIEw+IHtcbiAgICAvKipcbiAgICAgKiBNZXRob2QgZm9yIHJldHJpZXZpbmcgdGhlIGRhdGEgb2YgdGhlIHByb3ZpZGVkIGRhdGEgc291cmNlLlxuICAgICAqIEBwYXJhbSB0YWJsZVN0YXRlIEBzZWUgVGFibGVTdGF0ZSBTZXQgb2YgdGFibGUgcGFyYW1ldGVycy5cbiAgICAgKiBAcGFyYW0gcGFyZW50Um93c1xuICAgICAqL1xuICAgIGFic3RyYWN0IGZldGNoKHRhYmxlU3RhdGU6IFRhYmxlU3RhdGUsIHBhcmVudFJvd3M/OiBUYWJsZVJvdzxUPltdKTogdm9pZDtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfZGF0YUNoYW5nZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQPihbXSBhcyBhbnkpO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9vbkRhdGFSZXF1ZXN0ZWQkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9vbkRhdGFSZWNlaXZlZCQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2RhdGFMb2FkaW5nOiBMO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2RhdGFMb2FkaW5nJDogQmVoYXZpb3JTdWJqZWN0PEw+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLl9kYXRhTG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMuX2RhdGFMb2FkaW5nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gbmV3IGRhdGEgaGFzIGJlZW4gcmVxdWVzdGVkLlxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGVcbiAgICAgKi9cbiAgICBnZXQgZGF0YVJlcXVlc3RlZCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29uRGF0YVJlcXVlc3RlZCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIG5ldyBkYXRhIGhhcyBiZWVuIHJlY2VpdmVkLlxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGVcbiAgICAgKi9cbiAgICBnZXQgZGF0YVJlY2VpdmVkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fb25EYXRhUmVjZWl2ZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgd2hlbiBsb2FkaW5nIHN0YXRlIGhhcyBiZWVuIGNoYW5nZWQuXG4gICAgICogQHJldHVybnMgT2JzZXJ2YWJsZS5cbiAgICAgKi9cbiAgICBnZXQgZGF0YUxvYWRpbmcoKTogT2JzZXJ2YWJsZTxMPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhTG9hZGluZyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW1pdHMgd2hlbiB0aGUgZGF0YSBmcm9tIHRoZSBwcm92aWRlciBoYXMgYmVlbiBjaGFuZ2VkLlxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGUgb2YgZGF0YSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKi9cbiAgICBnZXQgZGF0YUNoYW5nZXMoKTogT2JzZXJ2YWJsZTxQPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhQ2hhbmdlcyQuYXNPYnNlcnZhYmxlKCkucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBpc0RhdGFMb2FkaW5nKCk6IEwge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YUxvYWRpbmc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgZGF0YSgpOiBQIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFDaGFuZ2VzJC52YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9wZW4oKTogT2JzZXJ2YWJsZTxQPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhQ2hhbmdlcyQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvbkRhdGFSZXF1ZXN0ZWQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vbkRhdGFSZXF1ZXN0ZWQkLmFzT2JzZXJ2YWJsZSgpLnBpcGUobWFwKCgpID0+IHZvaWQgMCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25EYXRhUmVjZWl2ZWQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vbkRhdGFSZWNlaXZlZCQuYXNPYnNlcnZhYmxlKCkucGlwZShtYXAoKCkgPT4gdm9pZCAwKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjbG9zZSgpOiB2b2lkIHt9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZXMgdGhlIHN0cmVhbVxuICAgICAqL1xuICAgIHVuc3Vic2NyaWJlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGFibGVEYXRhU291cmNlPFQ+IGV4dGVuZHMgQmFzZVRhYmxlRGF0YVNvdXJjZTxUPiB7XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGRhdGFQcm92aWRlcjogVGFibGVEYXRhUHJvdmlkZXI8VD4pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgZm9yIHJldHJpZXZpbmcgdGhlIGRhdGEgb2YgdGhlIHByb3ZpZGVkIGRhdGEgc291cmNlLlxuICAgICAqIEBwYXJhbSB0YWJsZVN0YXRlIEBzZWUgVGFibGVTdGF0ZSBTZXQgb2YgdGFibGUgcGFyYW1ldGVycy5cbiAgICAgKi9cbiAgICBmZXRjaCh0YWJsZVN0YXRlOiBUYWJsZVN0YXRlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uRGF0YVJlcXVlc3RlZCQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5fZGF0YUxvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuX2RhdGFMb2FkaW5nID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLmRhdGFQcm92aWRlci5mZXRjaERhdGEodGFibGVTdGF0ZSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IChpdGVtcykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX29uRGF0YVJlY2VpdmVkJC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0YUxvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFDaGFuZ2VzJC5uZXh0KGl0ZW1zKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb25EYXRhUmVjZWl2ZWQkLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0YUNoYW5nZXMkLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ2hpbGRUYWJsZURhdGFTb3VyY2U8VD4gZXh0ZW5kcyBCYXNlVGFibGVEYXRhU291cmNlPFxuICAgIFQsXG4gICAgTWFwPFRhYmxlUm93PFQ+LCBUW10+LFxuICAgIHsgcm93PzogVGFibGVSb3c8VD47IGxvYWRpbmc6IGJvb2xlYW4gfVtdXG4+IHtcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgZGF0YVByb3ZpZGVyOiBUYWJsZUNoaWxkcmVuRGF0YVByb3ZpZGVyPFQ+KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHJlc3BvbnNpYmxlIGZvciByZXRyaWV2aW5nIHRoZSBpdGVtcyBmcm9tIHRoZSBkYXRhIHByb3ZpZGVyLlxuICAgICAqIEFkZGl0aW9uYWx5LCBpdCBzZXRzIHRoZSBsb2FkaW5nIHN0YXRlIGFsb25nIHdpdGggdGhlIGRhdGFMb2FkaW5nIGFuZCBkYXRhQ2hhbmdlcyBzdHJlYW1zLlxuICAgICAqIEBwYXJhbSB0YWJsZVN0YXRlXG4gICAgICogQHBhcmFtIHBhcmVudFJvd3NcbiAgICAgKi9cbiAgICBmZXRjaCh0YWJsZVN0YXRlOiBUYWJsZVN0YXRlLCBwYXJlbnRSb3dzPzogVGFibGVSb3c8VD5bXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkRhdGFSZXF1ZXN0ZWQkLm5leHQodHJ1ZSk7XG4gICAgICAgIGNvbnN0IGxvYWRpbmdTdGF0ZSA9IHBhcmVudFJvd3M/Lm1hcCgocm93KSA9PiAoeyByb3csIGxvYWRpbmc6IHRydWUgfSkpIHx8IFtdO1xuICAgICAgICBjb25zdCBmaW5pc2hlZExvYWRpbmdTdGF0ZSA9IGxvYWRpbmdTdGF0ZS5tYXAoKHsgcm93IH0pID0+ICh7IHJvdywgbG9hZGluZzogZmFsc2UgfSkpO1xuICAgICAgICB0aGlzLl9kYXRhTG9hZGluZyQubmV4dChsb2FkaW5nU3RhdGUpO1xuICAgICAgICB0aGlzLl9kYXRhTG9hZGluZyA9IGxvYWRpbmdTdGF0ZTtcblxuICAgICAgICB0aGlzLmRhdGFQcm92aWRlci5mZXRjaERhdGEodGFibGVTdGF0ZSwgcGFyZW50Um93cykuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IChpdGVtcykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX29uRGF0YVJlY2VpdmVkJC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFMb2FkaW5nID0gZmluaXNoZWRMb2FkaW5nU3RhdGU7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0YUxvYWRpbmckLm5leHQoZmluaXNoZWRMb2FkaW5nU3RhdGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFDaGFuZ2VzJC5uZXh0KGl0ZW1zKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fb25EYXRhUmVjZWl2ZWQkLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFMb2FkaW5nID0gZmluaXNoZWRMb2FkaW5nU3RhdGU7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0YUxvYWRpbmckLm5leHQoZmluaXNoZWRMb2FkaW5nU3RhdGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFDaGFuZ2VzJC5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==","import { BehaviorSubject } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { TableDataProvider } from './table-data-provider';\nimport { TableDataSource } from './table-data-source';\n/**\n * Table Data Provider based on an array.\n *\n * Used to convert array source to the TableDataProvider interface.\n *\n */\nexport class ArrayTableDataProvider extends TableDataProvider {\n /** @hidden */\n constructor(items, dateTimeAdapter) {\n super();\n /** @hidden */\n this.items$ = new BehaviorSubject([]);\n this.items = items;\n this.totalItems = this.items.length;\n this.items$.next(this.items);\n this.dateTimeAdapter = dateTimeAdapter;\n }\n /**\n * Method for retrieving the data.\n * @param tableState @see TableState Set of table parameters.\n * @returns Observable with data.\n */\n fetch(state) {\n return this.items$.asObservable().pipe(map((items) => {\n if (state?.searchInput) {\n items = this.search(items, state);\n }\n if (state?.filterBy) {\n items = this.applyFiltering(items, state.filterBy);\n }\n this.totalItems = items.length;\n return items;\n }));\n }\n}\nexport class ArrayTableDataSource extends TableDataSource {\n /** @hidden */\n constructor(data, dateTimeAdapter) {\n super(new ArrayTableDataProvider(data, dateTimeAdapter));\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXktZGF0YS1zb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvZG9tYWluL2FycmF5LWRhdGEtc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFHbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RDs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxzQkFBMEIsU0FBUSxpQkFBb0I7SUFJL0QsY0FBYztJQUNkLFlBQVksS0FBVSxFQUFFLGVBQXNDO1FBQzFELEtBQUssRUFBRSxDQUFDO1FBTFosY0FBYztRQUNKLFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBTSxFQUFFLENBQUMsQ0FBQztRQUs1QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxLQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUNsQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNWLElBQUksS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDO2dCQUNyQixLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdEMsQ0FBQztZQUVELElBQUksS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDO2dCQUNsQixLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZELENBQUM7WUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFFL0IsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxvQkFBd0IsU0FBUSxlQUFrQjtJQUMzRCxjQUFjO0lBQ2QsWUFBWSxJQUFTLEVBQUUsZUFBc0M7UUFDekQsS0FBSyxDQUFDLElBQUksc0JBQXNCLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IERhdGV0aW1lQWRhcHRlciB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kYXRldGltZSc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUYWJsZVN0YXRlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90YWJsZS1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGFibGVEYXRhUHJvdmlkZXIgfSBmcm9tICcuL3RhYmxlLWRhdGEtcHJvdmlkZXInO1xuaW1wb3J0IHsgVGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi90YWJsZS1kYXRhLXNvdXJjZSc7XG5cbi8qKlxuICogVGFibGUgRGF0YSBQcm92aWRlciBiYXNlZCBvbiBhbiBhcnJheS5cbiAqXG4gKiBVc2VkIHRvIGNvbnZlcnQgYXJyYXkgc291cmNlIHRvIHRoZSBUYWJsZURhdGFQcm92aWRlciBpbnRlcmZhY2UuXG4gKlxuICovXG5leHBvcnQgY2xhc3MgQXJyYXlUYWJsZURhdGFQcm92aWRlcjxUPiBleHRlbmRzIFRhYmxlRGF0YVByb3ZpZGVyPFQ+IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBpdGVtcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRbXT4oW10pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihpdGVtczogVFtdLCBkYXRlVGltZUFkYXB0ZXI/OiBEYXRldGltZUFkYXB0ZXI8YW55Pikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLml0ZW1zID0gaXRlbXM7XG4gICAgICAgIHRoaXMudG90YWxJdGVtcyA9IHRoaXMuaXRlbXMubGVuZ3RoO1xuICAgICAgICB0aGlzLml0ZW1zJC5uZXh0KHRoaXMuaXRlbXMpO1xuICAgICAgICB0aGlzLmRhdGVUaW1lQWRhcHRlciA9IGRhdGVUaW1lQWRhcHRlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgZm9yIHJldHJpZXZpbmcgdGhlIGRhdGEuXG4gICAgICogQHBhcmFtIHRhYmxlU3RhdGUgQHNlZSBUYWJsZVN0YXRlIFNldCBvZiB0YWJsZSBwYXJhbWV0ZXJzLlxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGUgd2l0aCBkYXRhLlxuICAgICAqL1xuICAgIGZldGNoKHN0YXRlPzogVGFibGVTdGF0ZSk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1zJC5hc09ic2VydmFibGUoKS5waXBlKFxuICAgICAgICAgICAgbWFwKChpdGVtcykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdGF0ZT8uc2VhcmNoSW5wdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbXMgPSB0aGlzLnNlYXJjaChpdGVtcywgc3RhdGUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChzdGF0ZT8uZmlsdGVyQnkpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbXMgPSB0aGlzLmFwcGx5RmlsdGVyaW5nKGl0ZW1zLCBzdGF0ZS5maWx0ZXJCeSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gaXRlbXMubGVuZ3RoO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBcnJheVRhYmxlRGF0YVNvdXJjZTxUPiBleHRlbmRzIFRhYmxlRGF0YVNvdXJjZTxUPiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBUW10sIGRhdGVUaW1lQWRhcHRlcj86IERhdGV0aW1lQWRhcHRlcjxhbnk+KSB7XG4gICAgICAgIHN1cGVyKG5ldyBBcnJheVRhYmxlRGF0YVByb3ZpZGVyKGRhdGEsIGRhdGVUaW1lQWRhcHRlcikpO1xuICAgIH1cbn1cbiJdfQ==","import { map } from 'rxjs/operators';\nimport { TableDataProvider } from './table-data-provider';\nimport { TableDataSource } from './table-data-source';\n/**\n * Table Data Provider based on an Observable.\n *\n * Used to convert observable source to the TableDataProvider interface.\n *\n */\nexport class ObservableTableDataProvider extends TableDataProvider {\n /** @hidden */\n constructor(items$, dateTimeAdapter) {\n super();\n this.items$ = items$;\n this.dateTimeAdapter = dateTimeAdapter;\n }\n /**\n * Method for retrieving the data.\n * @param tableState @see TableState Set of table parameters.\n * @returns Observable with data.\n */\n fetch(state) {\n return this.items$.pipe(map((items) => {\n this.items = items;\n if (state?.searchInput) {\n items = this.search(items, state);\n }\n if (state?.filterBy) {\n items = this.applyFiltering(items, state.filterBy);\n }\n this.totalItems = items.length;\n return items;\n }));\n }\n}\nexport class ObservableTableDataSource extends TableDataSource {\n /** @hidden */\n constructor(data, dateTimeAdapter) {\n super(new ObservableTableDataProvider(data, dateTimeAdapter));\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJsZS1kYXRhLXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9kb21haW4vb2JzZXJ2YWJsZS1kYXRhLXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXREOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLDJCQUErQixTQUFRLGlCQUFvQjtJQUlwRSxjQUFjO0lBQ2QsWUFBWSxNQUF1QixFQUFFLGVBQXNDO1FBQ3ZFLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsS0FBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDbkIsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDVixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQixJQUFJLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQztnQkFDckIsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3RDLENBQUM7WUFFRCxJQUFJLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQztnQkFDbEIsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN2RCxDQUFDO1lBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBRS9CLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDTixDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8seUJBQTZCLFNBQVEsZUFBa0I7SUFDaEUsY0FBYztJQUNkLFlBQVksSUFBcUIsRUFBRSxlQUFzQztRQUNyRSxLQUFLLENBQUMsSUFBSSwyQkFBMkIsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IERhdGV0aW1lQWRhcHRlciB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kYXRldGltZSc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUYWJsZVN0YXRlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90YWJsZS1zdGF0ZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGFibGVEYXRhUHJvdmlkZXIgfSBmcm9tICcuL3RhYmxlLWRhdGEtcHJvdmlkZXInO1xuaW1wb3J0IHsgVGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi90YWJsZS1kYXRhLXNvdXJjZSc7XG5cbi8qKlxuICogVGFibGUgRGF0YSBQcm92aWRlciBiYXNlZCBvbiBhbiBPYnNlcnZhYmxlLlxuICpcbiAqIFVzZWQgdG8gY29udmVydCBvYnNlcnZhYmxlIHNvdXJjZSB0byB0aGUgVGFibGVEYXRhUHJvdmlkZXIgaW50ZXJmYWNlLlxuICpcbiAqL1xuZXhwb3J0IGNsYXNzIE9ic2VydmFibGVUYWJsZURhdGFQcm92aWRlcjxUPiBleHRlbmRzIFRhYmxlRGF0YVByb3ZpZGVyPFQ+IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBpdGVtcyQ6IE9ic2VydmFibGU8VFtdPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoaXRlbXMkOiBPYnNlcnZhYmxlPFRbXT4sIGRhdGVUaW1lQWRhcHRlcj86IERhdGV0aW1lQWRhcHRlcjxhbnk+KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuaXRlbXMkID0gaXRlbXMkO1xuICAgICAgICB0aGlzLmRhdGVUaW1lQWRhcHRlciA9IGRhdGVUaW1lQWRhcHRlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgZm9yIHJldHJpZXZpbmcgdGhlIGRhdGEuXG4gICAgICogQHBhcmFtIHRhYmxlU3RhdGUgQHNlZSBUYWJsZVN0YXRlIFNldCBvZiB0YWJsZSBwYXJhbWV0ZXJzLlxuICAgICAqIEByZXR1cm5zIE9ic2VydmFibGUgd2l0aCBkYXRhLlxuICAgICAqL1xuICAgIGZldGNoKHN0YXRlPzogVGFibGVTdGF0ZSk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1zJC5waXBlKFxuICAgICAgICAgICAgbWFwKChpdGVtcykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMgPSBpdGVtcztcbiAgICAgICAgICAgICAgICBpZiAoc3RhdGU/LnNlYXJjaElucHV0KSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zID0gdGhpcy5zZWFyY2goaXRlbXMsIHN0YXRlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoc3RhdGU/LmZpbHRlckJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zID0gdGhpcy5hcHBseUZpbHRlcmluZyhpdGVtcywgc3RhdGUuZmlsdGVyQnkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudG90YWxJdGVtcyA9IGl0ZW1zLmxlbmd0aDtcblxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtcztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgT2JzZXJ2YWJsZVRhYmxlRGF0YVNvdXJjZTxUPiBleHRlbmRzIFRhYmxlRGF0YVNvdXJjZTxUPiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBPYnNlcnZhYmxlPFRbXT4sIGRhdGVUaW1lQWRhcHRlcj86IERhdGV0aW1lQWRhcHRlcjxhbnk+KSB7XG4gICAgICAgIHN1cGVyKG5ldyBPYnNlcnZhYmxlVGFibGVEYXRhUHJvdmlkZXIoZGF0YSwgZGF0ZVRpbWVBZGFwdGVyKSk7XG4gICAgfVxufVxuIl19","import { isDataSource } from '@fundamental-ngx/cdk/data-source';\nimport { isObservable } from 'rxjs';\nimport { ArrayTableDataSource } from './array-data-source';\nimport { ObservableTableDataSource } from './observable-data-source';\nexport class TableDataSourceParser {\n /** @hidden */\n parse(source) {\n if (isDataSource(source)) {\n return source;\n }\n if (Array.isArray(source)) {\n return new ArrayTableDataSource(source);\n }\n if (isObservable(source)) {\n return new ObservableTableDataSource(source);\n }\n return undefined;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zb3VyY2UtcGFyc2VyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzL2RvbWFpbi9kYXRhLXNvdXJjZS1wYXJzZXIuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQyxZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3JFLE1BQU0sT0FBTyxxQkFBcUI7SUFDOUIsY0FBYztJQUNkLEtBQUssQ0FBQyxNQUFxQjtRQUN2QixJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sTUFBNEIsQ0FBQztRQUN4QyxDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDeEIsT0FBTyxJQUFJLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFFRCxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sSUFBSSx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YVNvdXJjZSwgRGF0YVNvdXJjZVBhcnNlciwgaXNEYXRhU291cmNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvZGF0YS1zb3VyY2UnO1xuaW1wb3J0IHsgaXNPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBcnJheVRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJy4vYXJyYXktZGF0YS1zb3VyY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZVRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJy4vb2JzZXJ2YWJsZS1kYXRhLXNvdXJjZSc7XG5pbXBvcnQgeyBUYWJsZURhdGFTb3VyY2UgfSBmcm9tICcuL3RhYmxlLWRhdGEtc291cmNlJztcblxuZXhwb3J0IGNsYXNzIFRhYmxlRGF0YVNvdXJjZVBhcnNlcjxUPiBpbXBsZW1lbnRzIERhdGFTb3VyY2VQYXJzZXI8VCwgVGFibGVEYXRhU291cmNlPFQ+PiB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwYXJzZShzb3VyY2U6IERhdGFTb3VyY2U8VD4pOiBUYWJsZURhdGFTb3VyY2U8VD4gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoaXNEYXRhU291cmNlKHNvdXJjZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBzb3VyY2UgYXMgVGFibGVEYXRhU291cmNlPFQ+O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc291cmNlKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBBcnJheVRhYmxlRGF0YVNvdXJjZShzb3VyY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzT2JzZXJ2YWJsZShzb3VyY2UpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGVUYWJsZURhdGFTb3VyY2Uoc291cmNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxufVxuIl19","import { Directive, EventEmitter, inject, Input, Output, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DataSourceDirective, FD_DATA_SOURCE_TRANSFORMER, isDataSource } from '@fundamental-ngx/cdk/data-source';\nimport { BehaviorSubject, Subject, Subscription } from 'rxjs';\nimport { filter, startWith } from 'rxjs/operators';\nimport { FDP_TABLE_STATE_DIRECTIVE } from '../constants';\nimport { TableDataSourceParser } from '../domain';\nimport { TableService } from '../services/table.service';\nimport * as i0 from \"@angular/core\";\nexport class TableDataSourceDirective extends DataSourceDirective {\n constructor() {\n super(...arguments);\n /** Event emitted when child data source instance being changed. */\n this.childDataSourceChanged = new EventEmitter();\n /** Event emitted when data loading is started. */\n this.onDataRequested = new EventEmitter();\n /** Event emitted when data loading is finished. */\n this.onDataReceived = new EventEmitter();\n /** Total items count stream. */\n this.totalItems$ = signal(0, ...(ngDevMode ? [{ debugName: \"totalItems$\" }] : []));\n /** Items stream. */\n this.items$ = new BehaviorSubject([]);\n /** Child items stream. */\n this.childItems$ = new Subject();\n /** @hidden */\n this._firstLoadingDone = false;\n /** @hidden */\n this._internalLoadingState = false;\n /** @hidden */\n this._internalChildrenLoadingState = false;\n /** @hidden */\n this._childDsSubscription = new Subscription();\n /** @hidden */\n this.initialState = inject(FDP_TABLE_STATE_DIRECTIVE, {\n optional: true\n });\n /** @hidden */\n this._tableService = inject(TableService);\n }\n /**\n * Data source.\n * @param source\n */\n set childDataSource(source) {\n this._childDataSource = source;\n this._initializeChildDataSource();\n this.childDataSourceChanged.next();\n }\n get childDataSource() {\n return this._childDataSource;\n }\n /** @hidden */\n set totalItems(value) {\n this.totalItems$.set(value);\n }\n get totalItems() {\n return this.totalItems$();\n }\n /** @hidden */\n initializeDataSource() {\n this.dataSourceChanged.pipe(startWith(true), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._closeDataSource();\n this._listenToDataSource();\n });\n }\n /** @hidden */\n ngOnDestroy() {\n super.ngOnDestroy();\n this._tableDsSubscription?.unsubscribe();\n }\n /** @hidden */\n setTable(table) {\n this._table = table;\n }\n /**\n * @hidden\n * Initializes the child data source to fetch child rows.\n */\n _initializeChildDataSource() {\n if (isDataSource(this.childDataSource)) {\n this.childDataSource?.unsubscribe();\n this._childDsSubscription?.unsubscribe();\n }\n if (!this.childDataSource) {\n return;\n }\n this._childDsSubscription = new Subscription();\n this._childDsSubscription.add(this.childDataSource.onDataRequested().subscribe(() => {\n this._internalChildrenLoadingState = true;\n this._tableService.setTableLoading(this._table.loadingState);\n }));\n this._childDsSubscription.add(this.childDataSource.onDataReceived().subscribe(() => {\n this._internalChildrenLoadingState = false;\n this._tableService.setTableLoading(this._table.loadingState);\n }));\n this._childDsSubscription.add(this.childDataSource.dataLoading\n .pipe(filter((state) => !!state), takeUntilDestroyed(this._destroyRef))\n .subscribe((loadingStates) => {\n loadingStates.forEach((state) => state.row?.childItemsLoading$.next(state.loading));\n }));\n this._childDsSubscription.add(this.childDataSource.dataChanges.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((data) => {\n this.childItems$.next(data);\n }));\n }\n /**\n * @hidden\n * This is a single point of data entry to the component. We don't want to set data on different\n * places. If any new data comes in, or you do a search, and you want to pass initial data\n * its here.\n */\n _listenToDataSource() {\n this._tableDsSubscription?.unsubscribe();\n this._tableDsSubscription = new Subscription();\n const dataSourceStream = this.dataSourceProvider;\n if (dataSourceStream === undefined) {\n throw new Error(`[TableDataSource] source did not match an Array, Observable, nor DataSource`);\n }\n this._tableDsSubscription.add(this.dataChanged$.subscribe((items) => {\n this.totalItems$.set(dataSourceStream.dataProvider.totalItems);\n this.items$.next(items);\n }));\n this._tableDsSubscription.add(dataSourceStream.onDataRequested().subscribe(() => {\n this.onDataRequested.emit();\n this._internalLoadingState = true;\n this._tableService.setTableLoading(this._table.loadingState);\n }));\n this._tableDsSubscription.add(dataSourceStream.onDataReceived().subscribe(() => {\n this.onDataReceived.emit();\n this._internalLoadingState = false;\n this._firstLoadingDone = true;\n this._tableService.setTableLoading(this._table.loadingState);\n // Restore normal pagination after the first fetch of data.\n if (this._table._loadPreviousPages) {\n const state = this._tableService.getTableState();\n this._tableService.setTableState({\n ...state,\n ...{\n page: {\n currentPage: this.initialState?.initialPage || state.page.currentPage,\n pageSize: this._table.pageSize || state.page.pageSize\n }\n }\n });\n this._table._loadPreviousPages = false;\n }\n }));\n // initial data fetch\n dataSourceStream.fetch(this._tableService.getTableState());\n this._tableDataSource = dataSourceStream;\n }\n /** @hidden */\n _closeDataSource() {\n if (!this._tableDataSource) {\n return;\n }\n this._tableDataSource.close();\n this._tableDsSubscription?.unsubscribe();\n this._tableDsSubscription = null;\n this._table.clearTableRows();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableDataSourceDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: TableDataSourceDirective, isStandalone: true, selector: \"[fdpTableDataSource]\", inputs: { childDataSource: \"childDataSource\" }, outputs: { childDataSourceChanged: \"childDataSourceChanged\", onDataRequested: \"onDataRequested\", onDataReceived: \"onDataReceived\" }, providers: [\n {\n provide: FD_DATA_SOURCE_TRANSFORMER,\n useClass: TableDataSourceParser\n }\n ], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableDataSourceDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdpTableDataSource]',\n standalone: true,\n providers: [\n {\n provide: FD_DATA_SOURCE_TRANSFORMER,\n useClass: TableDataSourceParser\n }\n ]\n }]\n }], propDecorators: { childDataSource: [{\n type: Input\n }], childDataSourceChanged: [{\n type: Output\n }], onDataRequested: [{\n type: Output\n }], onDataReceived: [{\n type: Output\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS1zb3VyY2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzL2RpcmVjdGl2ZXMvdGFibGUtZGF0YS1zb3VyY2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsMEJBQTBCLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDakgsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pELE9BQU8sRUFBeUMscUJBQXFCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFekYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQWF6RCxNQUFNLE9BQU8sd0JBQTRCLFNBQVEsbUJBQTBDO0lBVjNGOztRQTBCSSxtRUFBbUU7UUFFbkUsMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVsRCxrREFBa0Q7UUFFekMsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXBELG1EQUFtRDtRQUUxQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFbkQsZ0NBQWdDO1FBQ2hDLGdCQUFXLEdBQUcsTUFBTSxDQUFTLENBQUMsdURBQUMsQ0FBQztRQUVoQyxvQkFB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RSxxQkFBcUI7YUFDbEM7U0FDSjs7MkZBRVEsd0JBQXdCO2tCQVZwQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUU7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLDBCQUEwQjs0QkFDbkMsUUFBUSxFQUFFLHFCQUFxQjt5QkFDbEM7cUJBQ0o7aUJBQ0o7OEJBT08sZUFBZTtzQkFEbEIsS0FBSztnQkFhTixzQkFBc0I7c0JBRHJCLE1BQU07Z0JBS0UsZUFBZTtzQkFEdkIsTUFBTTtnQkFLRSxjQUFjO3NCQUR0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IERhdGFTb3VyY2VEaXJlY3RpdmUsIEZEX0RBVEFfU09VUkNFX1RSQU5TRk9STUVSLCBpc0RhdGFTb3VyY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9kYXRhLXNvdXJjZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGRFBfVEFCTEVfU1RBVEVfRElSRUNUSVZFIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IENoaWxkVGFibGVEYXRhU291cmNlLCBUYWJsZURhdGFTb3VyY2UsIFRhYmxlRGF0YVNvdXJjZVBhcnNlciB9IGZyb20gJy4uL2RvbWFpbic7XG5pbXBvcnQgeyBUYWJsZUluaXRpYWxTdGF0ZSwgVGFibGVSb3cgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdGFibGUuc2VydmljZSc7XG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJy4uL3RhYmxlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRwVGFibGVEYXRhU291cmNlXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogRkRfREFUQV9TT1VSQ0VfVFJBTlNGT1JNRVIsXG4gICAgICAgICAgICB1c2VDbGFzczogVGFibGVEYXRhU291cmNlUGFyc2VyXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlRGF0YVNvdXJjZURpcmVjdGl2ZTxUPiBleHRlbmRzIERhdGFTb3VyY2VEaXJlY3RpdmU8VCwgVGFibGVEYXRhU291cmNlPFQ+PiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogRGF0YSBzb3VyY2UuXG4gICAgICogQHBhcmFtIHNvdXJjZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGNoaWxkRGF0YVNvdXJjZShzb3VyY2U6IENoaWxkVGFibGVEYXRhU291cmNlPFQ+IHwgbnVsbCkge1xuICAgICAgICB0aGlzLl9jaGlsZERhdGFTb3VyY2UgPSBzb3VyY2U7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVDaGlsZERhdGFTb3VyY2UoKTtcbiAgICAgICAgdGhpcy5jaGlsZERhdGFTb3VyY2VDaGFuZ2VkLm5leHQoKTtcbiAgICB9XG5cbiAgICBnZXQgY2hpbGREYXRhU291cmNlKCk6IENoaWxkVGFibGVEYXRhU291cmNlPFQ+IHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jaGlsZERhdGFTb3VyY2U7XG4gICAgfVxuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBjaGlsZCBkYXRhIHNvdXJjZSBpbnN0YW5jZSBiZWluZyBjaGFuZ2VkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGNoaWxkRGF0YVNvdXJjZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGRhdGEgbG9hZGluZyBpcyBzdGFydGVkLiAqL1xuICAgIEBPdXRwdXQoKSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgICByZWFkb25seSBvbkRhdGFSZXF1ZXN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGRhdGEgbG9hZGluZyBpcyBmaW5pc2hlZC4gKi9cbiAgICBAT3V0cHV0KCkgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtb24tcHJlZml4XG4gICAgcmVhZG9ubHkgb25EYXRhUmVjZWl2ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogVG90YWwgaXRlbXMgY291bnQgc3RyZWFtLiAqL1xuICAgIHRvdGFsSXRlbXMkID0gc2lnbmFsPG51bWJlcj4oMCk7XG5cbiAgICAvKiogSXRlbXMgc3RyZWFtLiAqL1xuICAgIGl0ZW1zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VFtdPihbXSk7XG5cbiAgICAvKiogQ2hpbGQgaXRlbXMgc3RyZWFtLiAqL1xuICAgIGNoaWxkSXRlbXMkID0gbmV3IFN1YmplY3Q8TWFwPFRhYmxlUm93PFQ+LCBUW10+PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdGFibGVEYXRhU291cmNlOiBUYWJsZURhdGFTb3VyY2U8VD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9maXJzdExvYWRpbmdEb25lID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9pbnRlcm5hbExvYWRpbmdTdGF0ZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaW50ZXJuYWxDaGlsZHJlbkxvYWRpbmdTdGF0ZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jaGlsZERhdGFTb3VyY2U6IENoaWxkVGFibGVEYXRhU291cmNlPFQ+IHwgbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2hpbGREc1N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0IHRvdGFsSXRlbXModmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLnRvdGFsSXRlbXMkLnNldCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IHRvdGFsSXRlbXMoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG90YWxJdGVtcyQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBmb3IgZGF0YSBzb3VyY2UgaGFuZGxpbmcgKi9cbiAgICBwcml2YXRlIF90YWJsZURzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90YWJsZTogVGFibGU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5pdGlhbFN0YXRlID0gaW5qZWN0PFRhYmxlSW5pdGlhbFN0YXRlPihGRFBfVEFCTEVfU1RBVEVfRElSRUNUSVZFLCB7XG4gICAgICAgIG9wdGlvbmFsOiB0cnVlXG4gICAgfSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RhYmxlU2VydmljZSA9IGluamVjdChUYWJsZVNlcnZpY2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBpbml0aWFsaXplRGF0YVNvdXJjZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlQ2hhbmdlZC5waXBlKHN0YXJ0V2l0aCh0cnVlKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2xvc2VEYXRhU291cmNlKCk7XG4gICAgICAgICAgICB0aGlzLl9saXN0ZW5Ub0RhdGFTb3VyY2UoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5fdGFibGVEc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldFRhYmxlKHRhYmxlOiBUYWJsZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJsZSA9IHRhYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBJbml0aWFsaXplcyB0aGUgY2hpbGQgZGF0YSBzb3VyY2UgdG8gZmV0Y2ggY2hpbGQgcm93cy5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9pbml0aWFsaXplQ2hpbGREYXRhU291cmNlKCk6IHZvaWQge1xuICAgICAgICBpZiAoaXNEYXRhU291cmNlKHRoaXMuY2hpbGREYXRhU291cmNlKSkge1xuICAgICAgICAgICAgdGhpcy5jaGlsZERhdGFTb3VyY2U/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgICAgIHRoaXMuX2NoaWxkRHNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmNoaWxkRGF0YVNvdXJjZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2hpbGREc1N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgICAgICB0aGlzLl9jaGlsZERzU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgIHRoaXMuY2hpbGREYXRhU291cmNlLm9uRGF0YVJlcXVlc3RlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5faW50ZXJuYWxDaGlsZHJlbkxvYWRpbmdTdGF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFibGVTZXJ2aWNlLnNldFRhYmxlTG9hZGluZyh0aGlzLl90YWJsZS5sb2FkaW5nU3RhdGUpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9jaGlsZERzU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgIHRoaXMuY2hpbGREYXRhU291cmNlLm9uRGF0YVJlY2VpdmVkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcm5hbENoaWxkcmVuTG9hZGluZ1N0YXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFibGVTZXJ2aWNlLnNldFRhYmxlTG9hZGluZyh0aGlzLl90YWJsZS5sb2FkaW5nU3RhdGUpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl9jaGlsZERzU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgIHRoaXMuY2hpbGREYXRhU291cmNlLmRhdGFMb2FkaW5nXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcigoc3RhdGUpID0+ICEhc3RhdGUpLFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgobG9hZGluZ1N0YXRlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nU3RhdGVzLmZvckVhY2goKHN0YXRlKSA9PiBzdGF0ZS5yb3c/LmNoaWxkSXRlbXNMb2FkaW5nJC5uZXh0KHN0YXRlLmxvYWRpbmcpKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX2NoaWxkRHNTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgICAgICAgdGhpcy5jaGlsZERhdGFTb3VyY2UuZGF0YUNoYW5nZXMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hpbGRJdGVtcyQubmV4dChkYXRhKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFRoaXMgaXMgYSBzaW5nbGUgcG9pbnQgb2YgZGF0YSBlbnRyeSB0byB0aGUgY29tcG9uZW50LiBXZSBkb24ndCB3YW50IHRvIHNldCBkYXRhIG9uIGRpZmZlcmVudFxuICAgICAqIHBsYWNlcy4gSWYgYW55IG5ldyBkYXRhIGNvbWVzIGluLCBvciB5b3UgZG8gYSBzZWFyY2gsIGFuZCB5b3Ugd2FudCB0byBwYXNzIGluaXRpYWwgZGF0YVxuICAgICAqIGl0cyBoZXJlLlxuICAgICAqL1xuICAgIHByaXZhdGUgX2xpc3RlblRvRGF0YVNvdXJjZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFibGVEc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fdGFibGVEc1N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgICAgICBjb25zdCBkYXRhU291cmNlU3RyZWFtID0gdGhpcy5kYXRhU291cmNlUHJvdmlkZXI7XG4gICAgICAgIGlmIChkYXRhU291cmNlU3RyZWFtID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgW1RhYmxlRGF0YVNvdXJjZV0gc291cmNlIGRpZCBub3QgbWF0Y2ggYW4gQXJyYXksIE9ic2VydmFibGUsIG5vciBEYXRhU291cmNlYCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl90YWJsZURzU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgIHRoaXMuZGF0YUNoYW5nZWQkLnN1YnNjcmliZSgoaXRlbXMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvdGFsSXRlbXMkLnNldChkYXRhU291cmNlU3RyZWFtLmRhdGFQcm92aWRlci50b3RhbEl0ZW1zKTtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zJC5uZXh0KGl0ZW1zKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fdGFibGVEc1N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgICAgICBkYXRhU291cmNlU3RyZWFtLm9uRGF0YVJlcXVlc3RlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkRhdGFSZXF1ZXN0ZWQuZW1pdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2ludGVybmFsTG9hZGluZ1N0YXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLl90YWJsZVNlcnZpY2Uuc2V0VGFibGVMb2FkaW5nKHRoaXMuX3RhYmxlLmxvYWRpbmdTdGF0ZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICB0aGlzLl90YWJsZURzU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgICAgICAgIGRhdGFTb3VyY2VTdHJlYW0ub25EYXRhUmVjZWl2ZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub25EYXRhUmVjZWl2ZWQuZW1pdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2ludGVybmFsTG9hZGluZ1N0YXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fZmlyc3RMb2FkaW5nRG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFibGVTZXJ2aWNlLnNldFRhYmxlTG9hZGluZyh0aGlzLl90YWJsZS5sb2FkaW5nU3RhdGUpO1xuXG4gICAgICAgICAgICAgICAgLy8gUmVzdG9yZSBub3JtYWwgcGFnaW5hdGlvbiBhZnRlciB0aGUgZmlyc3QgZmV0Y2ggb2YgZGF0YS5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdGFibGUuX2xvYWRQcmV2aW91c1BhZ2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5fdGFibGVTZXJ2aWNlLmdldFRhYmxlU3RhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGFibGVTZXJ2aWNlLnNldFRhYmxlU3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi57XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UGFnZTogdGhpcy5pbml0aWFsU3RhdGU/LmluaXRpYWxQYWdlIHx8IHN0YXRlLnBhZ2UuY3VycmVudFBhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VTaXplOiB0aGlzLl90YWJsZS5wYWdlU2l6ZSB8fCBzdGF0ZS5wYWdlLnBhZ2VTaXplXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGFibGUuX2xvYWRQcmV2aW91c1BhZ2VzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBpbml0aWFsIGRhdGEgZmV0Y2hcbiAgICAgICAgZGF0YVNvdXJjZVN0cmVhbS5mZXRjaCh0aGlzLl90YWJsZVNlcnZpY2UuZ2V0VGFibGVTdGF0ZSgpKTtcblxuICAgICAgICB0aGlzLl90YWJsZURhdGFTb3VyY2UgPSBkYXRhU291cmNlU3RyZWFtO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2xvc2VEYXRhU291cmNlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3RhYmxlRGF0YVNvdXJjZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdGFibGVEYXRhU291cmNlLmNsb3NlKCk7XG5cbiAgICAgICAgdGhpcy5fdGFibGVEc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fdGFibGVEc1N1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICAgIHRoaXMuX3RhYmxlLmNsZWFyVGFibGVSb3dzKCk7XG4gICAgfVxufVxuIl19","import { BehaviorSubject } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { TableRowType } from '../enums';\n/** @hidden */\nexport function isTableRow(row) {\n return row && row.type !== undefined && row.value !== undefined && row.index >= 0 && row.state !== undefined;\n}\nexport class TableRowImpl {\n /** @hidden */\n set checked(value) {\n this._checkedSubject.next(value);\n }\n get checked() {\n return this._checkedSubject.value;\n }\n /** @hidden */\n set expanded(value) {\n this._expandedSubject.next(value);\n this.children.forEach((childRow) => {\n childRow.hidden = !value;\n });\n }\n get expanded() {\n return this._expandedSubject.value;\n }\n /** @hidden */\n constructor(row) {\n /** @hidden */\n this.stateChanged$ = new BehaviorSubject(false);\n /** @hidden */\n this.childItemsLoading$ = new BehaviorSubject(false);\n /** @hidden */\n this.forceFetch = false;\n /** @hidden */\n this._expandedSubject = new BehaviorSubject(false);\n /** @hidden */\n this._checkedSubject = new BehaviorSubject(false);\n this.checked$ = this._checkedSubject.asObservable().pipe(map(Boolean));\n this.expanded$ = this._expandedSubject.asObservable().pipe(map(Boolean));\n this.checked = row.checked || false;\n this.children = row.children || [];\n this.expandable = row.expandable || false;\n this.expanded = row.expanded || false;\n this.hidden = row.hidden || false;\n this.index = row.index || 0;\n this.level = row.level || 0;\n this.navigatable = row.navigatable || false;\n this.parent = row.parent || null;\n this.state = row.state || 'readonly';\n this.value = row.value;\n this.setRowType(row.type || TableRowType.ITEM);\n }\n /**\n * Sets the row type and checks whether the row is a tree.\n * @param type Row type.\n */\n setRowType(type) {\n this.type = type;\n this.isTree = this.type === TableRowType.TREE;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcm93Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzL21vZGVscy90YWJsZS1yb3cubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQWlHeEMsY0FBYztBQUNkLE1BQU0sVUFBVSxVQUFVLENBQVUsR0FBZ0I7SUFDaEQsT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksR0FBRyxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUM7QUFDakgsQ0FBQztBQUVELE1BQU0sT0FBTyxZQUFZO0lBQ3JCLGNBQWM7SUFDZCxJQUFJLE9BQU8sQ0FBQyxLQUFxQjtRQUM3QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBQ0QsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQztJQUN0QyxDQUFDO0lBb0JELGNBQWM7SUFDZCxJQUFJLFFBQVEsQ0FBQyxLQUFjO1FBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUMvQixRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQztJQUN2QyxDQUFDO0lBa0NELGNBQWM7SUFDZCxZQUFZLEdBQXNCO1FBMURsQyxjQUFjO1FBQ0wsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUU3RCxjQUFjO1FBQ0wsdUJBQWtCLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFbEUsY0FBYztRQUNkLGVBQVUsR0FBRyxLQUFLLENBQUM7UUE2Q25CLGNBQWM7UUFDRyxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN4RSxjQUFjO1FBQ0csb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBaUIsS0FBSyxDQUFDLENBQUM7UUFJMUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQztRQUNwQyxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUM7UUFDMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQztRQUN0QyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDO1FBQzVDLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxJQUFJLFVBQVUsQ0FBQztRQUNyQyxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsVUFBVSxDQUFDLElBQWtCO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsSUFBSSxDQUFDO0lBQ2xELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi4vZG9tYWluJztcbmltcG9ydCB7IFRhYmxlUm93VHlwZSB9IGZyb20gJy4uL2VudW1zJztcblxuZXhwb3J0IHR5cGUgVGFibGVSb3dTdGF0ZSA9ICdlZGl0YWJsZScgfCAncmVhZG9ubHknO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlUm93S2V5Ym9hcmREcmFnIHtcbiAgICBkaXJlY3Rpb246ICd1cCcgfCAnZG93bic7XG4gICAgZXZlbnQ6IEtleWJvYXJkRXZlbnQ7XG4gICAgbW9kZTogJ2dyb3VwJyB8ICdzaGlmdCc7XG59XG5cbi8qKlxuICogVGFibGUgcm93IGVudGl0eVxuICogVXNlZCB0byByZXByZXNlbnQgdGFibGUgcm93IGluIHRoZSB0ZW1wbGF0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlUm93PFQgPSBhbnk+IHtcbiAgICAvKipcbiAgICAgKiBSb3cgc2VtYW50aWMgdHlwZVxuICAgICAqL1xuICAgIHR5cGU6IFRhYmxlUm93VHlwZS5JVEVNIHwgVGFibGVSb3dUeXBlLkdST1VQIHwgVGFibGVSb3dUeXBlLlRSRUU7XG5cbiAgICAvKipcbiAgICAgKiBJbmRpY2F0ZXMgaWYgcm93IGlzIHNlbGVjdGVkLiBJdCBhbHNvIHN1cHBvcnRzIGludGVybWVkaWF0ZSBzdGF0ZVxuICAgICAqL1xuICAgIGNoZWNrZWQ6IGJvb2xlYW4gfCBudWxsO1xuXG4gICAgY2hlY2tlZCQ/OiBPYnNlcnZhYmxlPFRhYmxlUm93WydjaGVja2VkJ10+O1xuXG4gICAgLyoqXG4gICAgICogSW5kZXggb2YgYSBcInZhbHVlXCIgaW4gZGF0YSBzb3VyY2UgbGlzdFxuICAgICAqL1xuICAgIGluZGV4OiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBEYXRhIG1vZGVsIGl0IHJlcHJlc2VudHNcbiAgICAgKi9cbiAgICByZWFkb25seSB2YWx1ZTogVDtcblxuICAgIC8qKlxuICAgICAqIFJlZmVyZW5jZSB0byBhIHBhcmVudCBpZiBhbnlcbiAgICAgKi9cbiAgICBwYXJlbnQ6IFRhYmxlUm93IHwgbnVsbDtcblxuICAgIC8qKlxuICAgICAqIE5lc3RpbmcgbGV2ZWxcbiAgICAgKi9cbiAgICBsZXZlbDogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogRXhwYW5kYWJsZVxuICAgICAqL1xuICAgIGV4cGFuZGFibGU6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBFeHBhbmRlZC9Db2xsYXBzZWRcbiAgICAgKi9cbiAgICBleHBhbmRlZDogYm9vbGVhbjtcblxuICAgIGV4cGFuZGVkJD86IE9ic2VydmFibGU8VGFibGVSb3dbJ2V4cGFuZGVkJ10+O1xuXG4gICAgY2hpbGRJdGVtcyQ6IE9ic2VydmFibGU8VFtdPjtcblxuICAgIGNoaWxkSXRlbXNMb2FkaW5nJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xuXG4gICAgc3RhdGVDaGFuZ2VkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAgIC8qKlxuICAgICAqIElmIGl0ZW0gc2hvdWxkIGJlIGhpZGRlbi4gVXNlZCB0byBza2lwIHJlbmRlcmluZ1xuICAgICAqL1xuICAgIGhpZGRlbjogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIElmIHRoZSByb3cgaXMgbmF2aWdhdGFibGVcbiAgICAgKi9cbiAgICBuYXZpZ2F0YWJsZTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFJvdyBzdGF0ZTogcmVhZG9ubHkgb3IgZWRpdGFibGUuXG4gICAgICovXG4gICAgc3RhdGU6IFRhYmxlUm93U3RhdGU7XG5cbiAgICAvKipcbiAgICAgKiBDaGlsZHJlbiB0YWJsZSByb3dzLlxuICAgICAqL1xuICAgIGNoaWxkcmVuOiBUYWJsZVJvdzxUPltdO1xuXG4gICAgaXNUcmVlOiBib29sZWFuO1xuXG4gICAgc2V0Um93VHlwZTogKHR5cGU6IFRhYmxlUm93VHlwZSkgPT4gdm9pZDtcblxuICAgIGxhc3RDaGlsZD86IFRhYmxlUm93PFQ+O1xuXG4gICAgLyoqIEZsYWcgaW5kaWNhdGluZyB0aGF0IGFsbCBjaGlsZCByb3dzIHNob3VsZCBiZSBmZXRjaGVkIGFnYWluLiAqL1xuICAgIGZvcmNlRmV0Y2g6IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIFRhYmxlUm93Q2xhc3M8VCA9IGFueT4gPSBzdHJpbmcgfCAoKHJvdzogVCkgPT4gc3RyaW5nKTtcblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1RhYmxlUm93PFQgPSBhbnk+KHJvdzogVGFibGVSb3c8VD4pOiByb3cgaXMgVGFibGVSb3c8VD4ge1xuICAgIHJldHVybiByb3cgJiYgcm93LnR5cGUgIT09IHVuZGVmaW5lZCAmJiByb3cudmFsdWUgIT09IHVuZGVmaW5lZCAmJiByb3cuaW5kZXggPj0gMCAmJiByb3cuc3RhdGUgIT09IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGNsYXNzIFRhYmxlUm93SW1wbDxUPiBpbXBsZW1lbnRzIFRhYmxlUm93PFQ+IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldCBjaGVja2VkKHZhbHVlOiBib29sZWFuIHwgbnVsbCkge1xuICAgICAgICB0aGlzLl9jaGVja2VkU3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgICB9XG4gICAgZ2V0IGNoZWNrZWQoKTogYm9vbGVhbiB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2hlY2tlZFN1YmplY3QudmFsdWU7XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgY2hlY2tlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBjaGlsZEl0ZW1zJDogT2JzZXJ2YWJsZTxUW10+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBzdGF0ZUNoYW5nZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IGNoaWxkSXRlbXNMb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBmb3JjZUZldGNoID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNoaWxkcmVuOiBUYWJsZVJvdzxUPltdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBleHBhbmRhYmxlOiBib29sZWFuO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0IGV4cGFuZGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2V4cGFuZGVkU3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgICAgICAgdGhpcy5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZFJvdykgPT4ge1xuICAgICAgICAgICAgY2hpbGRSb3cuaGlkZGVuID0gIXZhbHVlO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0IGV4cGFuZGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXhwYW5kZWRTdWJqZWN0LnZhbHVlO1xuICAgIH1cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IGV4cGFuZGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGhpZGRlbjogYm9vbGVhbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgaW5kZXg6IG51bWJlcjtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGxldmVsOiBudW1iZXI7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuYXZpZ2F0YWJsZTogYm9vbGVhbjtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHBhcmVudDogVGFibGVSb3cgfCBudWxsO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc3RhdGU6IFRhYmxlUm93U3RhdGU7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB0eXBlOiBUYWJsZVJvd1R5cGU7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSB2YWx1ZTogVDtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNoaWxkRGF0YVNvdXJjZTogVGFibGVEYXRhU291cmNlPFQ+IHwgdW5kZWZpbmVkO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBpc1RyZWU6IGJvb2xlYW47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGxhc3RDaGlsZD86IFRhYmxlUm93PFQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9leHBhbmRlZFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NoZWNrZWRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuIHwgbnVsbD4oZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3Rvcihyb3c6IFBhcnRpYWw8VGFibGVSb3c+KSB7XG4gICAgICAgIHRoaXMuY2hlY2tlZCQgPSB0aGlzLl9jaGVja2VkU3ViamVjdC5hc09ic2VydmFibGUoKS5waXBlKG1hcChCb29sZWFuKSk7XG4gICAgICAgIHRoaXMuZXhwYW5kZWQkID0gdGhpcy5fZXhwYW5kZWRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUobWFwKEJvb2xlYW4pKTtcbiAgICAgICAgdGhpcy5jaGVja2VkID0gcm93LmNoZWNrZWQgfHwgZmFsc2U7XG4gICAgICAgIHRoaXMuY2hpbGRyZW4gPSByb3cuY2hpbGRyZW4gfHwgW107XG4gICAgICAgIHRoaXMuZXhwYW5kYWJsZSA9IHJvdy5leHBhbmRhYmxlIHx8IGZhbHNlO1xuICAgICAgICB0aGlzLmV4cGFuZGVkID0gcm93LmV4cGFuZGVkIHx8IGZhbHNlO1xuICAgICAgICB0aGlzLmhpZGRlbiA9IHJvdy5oaWRkZW4gfHwgZmFsc2U7XG4gICAgICAgIHRoaXMuaW5kZXggPSByb3cuaW5kZXggfHwgMDtcbiAgICAgICAgdGhpcy5sZXZlbCA9IHJvdy5sZXZlbCB8fCAwO1xuICAgICAgICB0aGlzLm5hdmlnYXRhYmxlID0gcm93Lm5hdmlnYXRhYmxlIHx8IGZhbHNlO1xuICAgICAgICB0aGlzLnBhcmVudCA9IHJvdy5wYXJlbnQgfHwgbnVsbDtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHJvdy5zdGF0ZSB8fCAncmVhZG9ubHknO1xuICAgICAgICB0aGlzLnZhbHVlID0gcm93LnZhbHVlO1xuICAgICAgICB0aGlzLnNldFJvd1R5cGUocm93LnR5cGUgfHwgVGFibGVSb3dUeXBlLklURU0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHJvdyB0eXBlIGFuZCBjaGVja3Mgd2hldGhlciB0aGUgcm93IGlzIGEgdHJlZS5cbiAgICAgKiBAcGFyYW0gdHlwZSBSb3cgdHlwZS5cbiAgICAgKi9cbiAgICBzZXRSb3dUeXBlKHR5cGU6IFRhYmxlUm93VHlwZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgICAgICB0aGlzLmlzVHJlZSA9IHRoaXMudHlwZSA9PT0gVGFibGVSb3dUeXBlLlRSRUU7XG4gICAgfVxufVxuIl19","import { dfs, get, isString, set } from '@fundamental-ngx/cdk/utils';\nimport { isDataSource } from '@fundamental-ngx/platform/shared';\nimport { isObservable } from 'rxjs';\nimport { ArrayTableDataSource } from './domain/array-data-source';\nimport { ObservableTableDataSource } from './domain/observable-data-source';\nimport { TableRowType } from './enums/row-type.enum';\nimport { SelectionMode } from './enums/selection-mode.enum';\nimport { SortDirection } from './enums/sort-direction.enum';\nimport { TableRowImpl, isTableRow } from './models/table-row.model';\n/** @hidden */\nexport function newTableRow(row) {\n if (!row.value) {\n throw new Error('Unexpected value. TableRow.value cannot be undefined.');\n }\n return new TableRowImpl({\n type: row.type || TableRowType.ITEM,\n checked: row.checked || false,\n index: row.index || 0,\n value: row.value,\n parent: row.parent || null,\n level: row.level || 0,\n expandable: row.expandable || false,\n expanded: row.expanded || false,\n hidden: row.hidden || false,\n navigatable: row.navigatable || false,\n state: row.state || 'readonly',\n children: row.children || []\n });\n}\n/** @hidden */\nexport function getSelectableRows(rows, selectableKey) {\n return rows.filter((row) => isSelectableRow(row, selectableKey));\n}\n/** @hidden */\nexport function isSelectableRow(row, selectableKey) {\n return (isItemRow(row) || isTreeRow(row)) && row.value[selectableKey] !== false;\n}\n/** @hidden */\nexport function isItemRow(row) {\n return row.type === TableRowType.ITEM;\n}\n/** @hidden */\nexport function isTreeRow(row) {\n return row.type === TableRowType.TREE;\n}\n/**\n * Since we dont work with the tree, we need to convert incoming tree to\n * flat format while maintaining original state.\n *\n * @hidden\n */\nexport function convertTreeTableRowToFlatList(rows, rowNavigatable) {\n let flatList = [];\n for (const item of rows) {\n item.navigatable = isRowNavigatable(item, rowNavigatable);\n flatList.push(item);\n if (Array.isArray(item.children)) {\n item.children.forEach((c) => (c.hidden = !item.expanded));\n flatList = flatList.concat(convertTreeTableRowToFlatList(item.children, rowNavigatable));\n }\n }\n return flatList;\n}\n/** @hidden */\nexport function isRowNavigatable(row, rowNavigatable) {\n if (!row) {\n return false;\n }\n /** If key of the row's item field passed */\n if (isString(rowNavigatable)) {\n return !!row[rowNavigatable];\n }\n return !!rowNavigatable;\n}\n/** @hidden */\nexport function getFreezableColumns(columns, freezeColumnsTo) {\n const columnNames = new Map();\n if (!columns.length || !freezeColumnsTo) {\n return columnNames;\n }\n for (const column of columns) {\n if (!column.name) {\n continue;\n }\n // using columnNames.size as index of a column\n columnNames.set(column.name, columnNames.size);\n if (column.name === freezeColumnsTo) {\n return columnNames;\n }\n }\n return new Map();\n}\n/** @hidden */\nexport function getFreezableEndColumns(columns, freezeEndColumnsTo) {\n const columnNames = new Map();\n if (!columns.length || !freezeEndColumnsTo) {\n return columnNames;\n }\n for (let i = columns.length - 1; i >= 0; i--) {\n // using columnNames.size as index of a column\n columnNames.set(columns[i].name, columnNames.size);\n if (columns[i].name === freezeEndColumnsTo) {\n return columnNames;\n }\n }\n return new Map();\n}\n/** @hidden */\nexport function convertTreeObjectsToTableRows(source, selectionMode, tableRows, rowComparator, relationKey, hasChildrenKey, selectedKey, expandedStateKey, rowNavigatable, enableTristateMode = false) {\n const rows = [];\n const selectedRowsMap = getSelectionStatusByRowValue(source, selectionMode, tableRows, rowComparator);\n source.forEach((item, index) => {\n const hasChildren = Object.prototype.hasOwnProperty.call(item, relationKey) &&\n Array.isArray(item[relationKey]) &&\n item[relationKey].length;\n const row = isTableRow(item)\n ? item\n : newTableRow({\n type: hasChildren || item[hasChildrenKey] === true ? TableRowType.TREE : TableRowType.ITEM,\n checked: item[selectedKey] ?? !!selectedRowsMap.get(item),\n index,\n value: item\n });\n row.expanded =\n expandedStateKey && Object.prototype.hasOwnProperty.call(item, expandedStateKey)\n ? item[expandedStateKey]\n : false;\n row.navigatable = isRowNavigatable(item, rowNavigatable);\n rows.push(row);\n if (hasChildren) {\n const children = convertTreeObjectsToTableRows(item[relationKey], selectionMode, tableRows, rowComparator, relationKey, hasChildrenKey, selectedKey, expandedStateKey, rowNavigatable, enableTristateMode);\n children.forEach((c) => {\n c.parent = c.parent || row;\n c.level = c.parent.level + 1;\n c.hidden = !c.parent.expanded;\n });\n row.children.push(...children);\n rows.push(...children);\n }\n if (row.level === 0 && row.isTree) {\n dfs([row], (r) => {\n const children = r.children || [];\n const selectedChildren = [];\n const indeterminateChildren = [];\n children.forEach((child) => {\n if (child.checked === true) {\n selectedChildren.push(child);\n }\n else if (child.checked === null) {\n indeterminateChildren.push(child);\n }\n });\n const selectedAll = selectedChildren.length === children.length && children.length > 0;\n const selectedSome = selectedChildren.length > 0;\n if (r.checked && selectionMode === SelectionMode.MULTIPLE) {\n applySelectionToChildren(rows, r, [], []);\n return;\n }\n if (!enableTristateMode) {\n return;\n }\n if (selectedAll) {\n r.checked = true;\n return;\n }\n if (selectedSome || indeterminateChildren.length > 0) {\n r.checked = null;\n return;\n }\n });\n }\n });\n return rows;\n}\n/**\n * @hidden\n * Runs `rowComparator` function against checked rows and compares them with the new `source`\n * If matched, creates an association between the source item and checked status of corresponding row.\n *\n * @returns `Map` object with the `checked` status for particular source item\n */\nexport function getSelectionStatusByRowValue(source, selectionMode, tableRows, rowComparator) {\n const rowMap = new Map();\n if ((selectionMode === SelectionMode.SINGLE || selectionMode === SelectionMode.MULTIPLE) &&\n typeof rowComparator === 'function') {\n const checkedRows = tableRows.filter((r) => r.checked);\n checkedRows.forEach((row) => {\n const found = source.find((e) => rowComparator(row.value, e));\n if (found) {\n rowMap.set(found, row.checked);\n }\n });\n }\n return rowMap;\n}\n/** @hidden */\nexport function applySelectionToChildren(allRows, row, addedRows, removedRows) {\n const allChildren = findRowChildren(row, allRows);\n allChildren.forEach((r) => {\n r.checked = row.checked;\n r.checked ? addedRows.push(r) : removedRows.push(r);\n });\n}\n/** @hidden */\nexport function findRowChildren(row, allRows) {\n const rowsLength = allRows.length;\n /**\n * Since we are dealing with a flat list\n * it means all children go next right after the expandable row\n * until the next row has a mutual parent\n */\n let index = allRows.indexOf(row);\n const parents = getRowParents(row);\n const children = [];\n while (index++ < rowsLength) {\n const nextRow = allRows[index];\n if (!nextRow?.parent || parents.includes(nextRow.parent)) {\n break;\n }\n children.push(nextRow);\n }\n return children;\n}\n/**\n * Get row parents path where the first is the direct parent\n * @param row Row which parents we need to find\n * @param untilParent Parent to stop a search on. Default is \"null\" that means look up until the root\n * @returns parents list [direct parent, ..., ancestor]\n * @hidden\n */\nexport function getRowParents(row, untilParent = null) {\n untilParent = untilParent || null; // to avoid \"undefined\"\n const parents = [];\n let parent = row.parent || null; // empty parent should be coerced to \"null\" do not get into infinite loop\n while (parent && parent !== untilParent) {\n parents.push(parent);\n parent = parent.parent || null;\n }\n return parents;\n}\n/** @hidden */\nexport function toDataStream(source) {\n if (isDataSource(source)) {\n return source;\n }\n if (Array.isArray(source)) {\n return new ArrayTableDataSource(source);\n }\n if (isObservable(source)) {\n return new ObservableTableDataSource(source);\n }\n return undefined;\n}\n/**\n * @hidden\n * Creates an empty column skeleton object.\n * @returns Column model.\n */\nexport function buildNewRowSkeleton(editableRowSkeleton, columns) {\n if (editableRowSkeleton) {\n return structuredClone(editableRowSkeleton);\n }\n let newRow = {};\n columns.forEach((column) => {\n newRow = set(newRow, column.key, undefined);\n });\n return newRow;\n}\n/** @hidden */\nexport function isGroupRow(row) {\n return row.type === TableRowType.GROUP;\n}\n/** @hidden */\nexport function sortTreeLikeGroupedRows(groupedRows, groupRulesMap) {\n if (!groupedRows[0] || !isGroupRow(groupedRows[0])) {\n return groupedRows;\n }\n const treeLikeRows = groupedRows;\n const firstRow = treeLikeRows[0];\n treeLikeRows.forEach((group) => {\n if (group._children) {\n group._children = sortTreeLikeGroupedRows(group._children, groupRulesMap);\n }\n });\n const groupRule = groupRulesMap.get(firstRow.value.field);\n if (!groupRule || groupRule.direction === SortDirection.NONE) {\n return treeLikeRows;\n }\n const direction = groupRule.direction;\n const directionMultiplier = direction === SortDirection.ASC ? 1 : direction === SortDirection.DESC ? -1 : 0;\n return treeLikeRows.slice().sort((a, b) => {\n const aValue = a.value.value;\n const bValue = b.value.value;\n const aNumber = Number.parseFloat(aValue);\n const bNumber = Number.parseFloat(bValue);\n if (!Number.isNaN(aNumber) && !Number.isNaN(bNumber)) {\n return (aNumber - bNumber) * directionMultiplier;\n }\n return (aValue > bValue ? 1 : -1) * directionMultiplier;\n });\n}\n/** @hidden */\nexport function convertTreeLikeToFlatList(treeLikeList) {\n let flatList = [];\n for (const item of treeLikeList) {\n flatList.push(item);\n if (Array.isArray(item._children)) {\n flatList = flatList.concat(convertTreeLikeToFlatList(item._children));\n delete item._children;\n }\n }\n return flatList;\n}\n/**\n * @hidden\n * Group table rows and return tree like rows list.\n * It's intended to be called recursively.\n * @param rules group rules to group by\n * @param rows source table rows\n * @param parent row parent\n * @param level level of nesting\n */\nexport function createGroupedTableRowsTree(rules, rows, parent = null, level = 0) {\n rules = [...rules];\n if (!rules.length) {\n // no rules mean that it's the level of source items\n return rows.map((row) => {\n row.parent = parent;\n row.level = level;\n row.hidden = !!parent && !parent.expanded;\n return row;\n });\n }\n // Retrieve first group rule\n const rule = rules.shift();\n // Build map of unique values for a given group rule\n const valuesHash = rows\n .filter((r) => r.state !== 'editable')\n .reduce((hash, row) => {\n const modelValue = get(row.value, rule.field);\n if (!hash.has(modelValue)) {\n hash.set(modelValue, []);\n }\n hash.get(modelValue)?.push(row);\n return hash;\n }, new Map());\n // Build table rows tree\n let groupedTableRows = [];\n if (rows.some((r) => r.state === 'editable')) {\n groupedTableRows = rows\n .filter((r) => r.state === 'editable')\n .map((row) => {\n row.parent = parent;\n row.level = -1;\n row.hidden = !!parent && !parent.expanded;\n return row;\n });\n }\n for (const [value, values] of Array.from(valuesHash)) {\n const filteredRows = rows.filter((_item) => values.includes(_item));\n if (filteredRows.length === 0) {\n continue;\n }\n const groupTableRow = newTableRow({\n type: TableRowType.GROUP,\n checked: false,\n index: 0,\n value: { field: rule.field, value, count: 0 },\n parent,\n level,\n expandable: true,\n expanded: true,\n hidden: !!parent && !parent.expanded\n });\n // Ads group's children rows\n groupTableRow._children = createGroupedTableRowsTree(rules, filteredRows, groupTableRow, level + 1);\n groupTableRow.value.count = groupTableRow._children?.length;\n groupedTableRows.push(groupTableRow);\n }\n return groupedTableRows;\n}\n/** @hidden */\nexport function convertObjectsToTableRows(source, addedItems, selectedKey, rowNavigatable, selectionMode, rows, rowComparator) {\n const rowItem = source[0];\n if (isTableRow(rowItem)) {\n return source;\n }\n const selectedRowsMap = getSelectionStatusByRowValue(source, selectionMode, rows, rowComparator);\n return source.map((item, index) => {\n const isNewItem = addedItems.includes(item);\n const row = newTableRow({\n type: TableRowType.ITEM,\n checked: item[selectedKey] ?? !!selectedRowsMap.get(item),\n index,\n value: item\n });\n row.navigatable = isRowNavigatable(item, rowNavigatable);\n row.state = isNewItem ? 'editable' : 'readonly';\n return row;\n });\n}\n/** @hidden */\nexport function isTreeRowFirstCell(cellIndex, row, event) {\n return (cellIndex === 0 && isTreeRow(row)) || (!!event && !row.isTree);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBc0IsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFJNUQsT0FBTyxFQUFZLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUk5RSxjQUFjO0FBQ2QsTUFBTSxVQUFVLFdBQVcsQ0FBVSxHQUF5QjtJQUMxRCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxPQUFPLElBQUksWUFBWSxDQUFDO1FBQ3BCLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxJQUFJLFlBQVksQ0FBQyxJQUFJO1FBQ25DLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTyxJQUFJLEtBQUs7UUFDN0IsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQztRQUNyQixLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7UUFDaEIs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QUFDLENBQUM7SUFDakcsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBTyxFQUFFLEtBQWEsRUFBRSxFQUFFO1FBQ3pDLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUMsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDO1lBQ3BCLElBQUksRUFBRSxZQUFZLENBQUMsSUFBSTtZQUN2QixPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztZQUN6RCxLQUFLO1lBQ0wsS0FBSyxFQUFFLElBQUk7U0FDZCxDQUFDLENBQUM7UUFDSCxHQUFHLENBQUMsV0FBVyxHQUFHLGdCQUFnQixDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztRQUN6RCxHQUFHLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDaEQsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRCxjQUFjO0FBQ2QsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFNBQWlCLEVBQUUsR0FBYSxFQUFFLEtBQWE7SUFDOUUsT0FBTyxDQUFDLFNBQVMsS0FBSyxDQUFDLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzNFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZnMsIGdldCwgaXNTdHJpbmcsIHNldCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IGlzRGF0YVNvdXJjZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2hhcmVkJztcbmltcG9ydCB7IGlzT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXJyYXlUYWJsZURhdGFTb3VyY2UgfSBmcm9tICcuL2RvbWFpbi9hcnJheS1kYXRhLXNvdXJjZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlVGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi9kb21haW4vb2JzZXJ2YWJsZS1kYXRhLXNvdXJjZSc7XG5pbXBvcnQgeyBUYWJsZURhdGFTb3VyY2UgfSBmcm9tICcuL2RvbWFpbi90YWJsZS1kYXRhLXNvdXJjZSc7XG5pbXBvcnQgeyBUYWJsZVJvd1R5cGUgfSBmcm9tICcuL2VudW1zL3Jvdy10eXBlLmVudW0nO1xuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZSwgU2VsZWN0aW9uTW9kZVZhbHVlIH0gZnJvbSAnLi9lbnVtcy9zZWxlY3Rpb24tbW9kZS5lbnVtJztcbmltcG9ydCB7IFNvcnREaXJlY3Rpb24gfSBmcm9tICcuL2VudW1zL3NvcnQtZGlyZWN0aW9uLmVudW0nO1xuaW1wb3J0IHsgQ29sbGVjdGlvbkdyb3VwIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NvbGxlY3Rpb24tZ3JvdXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZkcFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJy4vbW9kZWxzL2RhdGEtc291cmNlLnR5cGUnO1xuaW1wb3J0IHsgUm93Q29tcGFyYXRvciB9IGZyb20gJy4vbW9kZWxzL3Jvdy1jb21wYXJhdG9yLm1vZGVsJztcbmltcG9ydCB7IFRhYmxlUm93LCBUYWJsZVJvd0ltcGwsIGlzVGFibGVSb3cgfSBmcm9tICcuL21vZGVscy90YWJsZS1yb3cubW9kZWwnO1xuaW1wb3J0IHsgR3JvdXBUYWJsZVJvd1ZhbHVlVHlwZSwgVHJlZUxpa2UgfSBmcm9tICcuL21vZGVscy90cmVlLXRhYmxlLm1vZGVsJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi90YWJsZS1jb2x1bW4nO1xuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5ld1RhYmxlUm93PFQgPSBhbnk+KHJvdzogUGFydGlhbDxUYWJsZVJvdzxUPj4pOiBUYWJsZVJvdzxUPiB7XG4gICAgaWYgKCFyb3cudmFsdWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIHZhbHVlLiBUYWJsZVJvdy52YWx1ZSBjYW5ub3QgYmUgdW5kZWZpbmVkLicpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgVGFibGVSb3dJbXBsKHtcbiAgICAgICAgdHlwZTogcm93LnR5cGUgfHwgVGFibGVSb3dUeXBlLklURU0sXG4gICAgICAgIGNoZWNrZWQ6IHJvdy5jaGVja2VkIHx8IGZhbHNlLFxuICAgICAgICBpbmRleDogcm93LmluZGV4IHx8IDAsXG4gICAgICAgIHZhbHVlOiByb3cudmFsdWUsXG4gICAgICAgIHBhcmVudDogcm93LnBhcmVudCB8fCBudWxsLFxuICAgICAgICBsZXZlbDogcm93LmxldmVsIHx8IDAsXG4gICAgICAgIGV4cGFuZGFibGU6IHJvdy5leHBhbmRhYmxlIHx8IGZhbHNlLFxuICAgICAgICBleHBhbmRlZDogcm93LmV4cGFuZGVkIHx8IGZhbHNlLFxuICAgICAgICBoaWRkZW46IHJvdy5oaWRkZW4gfHwgZmFsc2UsXG4gICAgICAgIG5hdmlnYXRhYmxlOiByb3cubmF2aWdhdGFibGUgfHwgZmFsc2UsXG4gICAgICAgIHN0YXRlOiByb3cuc3RhdGUgfHwgJ3JlYWRvbmx5JyxcbiAgICAgICAgY2hpbGRyZW46IHJvdy5jaGlsZHJlbiB8fCBbXVxuICAgIH0pO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNlbGVjdGFibGVSb3dzKHJvd3M6IFRhYmxlUm93W10sIHNlbGVjdGFibGVLZXk6IHN0cmluZyk6IFRhYmxlUm93W10ge1xuICAgIHJldHVybiByb3dzLmZpbHRlcigocm93KSA9PiBpc1NlbGVjdGFibGVSb3cocm93LCBzZWxlY3RhYmxlS2V5KSk7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTZWxlY3RhYmxlUm93KHJvdzogVGFibGVSb3csIHNlbGVjdGFibGVLZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoaXNJdGVtUm93KHJvdykgfHwgaXNUcmVlUm93KHJvdykpICYmIHJvdy52YWx1ZVtzZWxlY3RhYmxlS2V5XSAhPT0gZmFsc2U7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNJdGVtUm93KHJvdzogVGFibGVSb3cpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcm93LnR5cGUgPT09IFRhYmxlUm93VHlwZS5JVEVNO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVHJlZVJvdyhyb3c6IFRhYmxlUm93KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJvdy50eXBlID09PSBUYWJsZVJvd1R5cGUuVFJFRTtcbn1cblxuLyoqXG4gKiBTaW5jZSB3ZSBkb250IHdvcmsgd2l0aCB0aGUgdHJlZSwgd2UgbmVlZCB0byBjb252ZXJ0IGluY29taW5nIHRyZWUgdG9cbiAqIGZsYXQgZm9ybWF0IHdoaWxlIG1haW50YWluaW5nIG9yaWdpbmFsIHN0YXRlLlxuICpcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUcmVlVGFibGVSb3dUb0ZsYXRMaXN0PFQ+KHJvd3M6IFRhYmxlUm93PFQ+W10sIHJvd05hdmlnYXRhYmxlOiBzdHJpbmcgfCBib29sZWFuKTogVGFibGVSb3c8VD5bXSB7XG4gICAgbGV0IGZsYXRMaXN0OiBUYWJsZVJvd1tdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2Ygcm93cykge1xuICAgICAgICBpdGVtLm5hdmlnYXRhYmxlID0gaXNSb3dOYXZpZ2F0YWJsZShpdGVtIGFzIFQsIHJvd05hdmlnYXRhYmxlKTtcbiAgICAgICAgZmxhdExpc3QucHVzaChpdGVtKTtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtLmNoaWxkcmVuKSkge1xuICAgICAgICAgICAgaXRlbS5jaGlsZHJlbi5mb3JFYWNoKChjKSA9PiAoYy5oaWRkZW4gPSAhaXRlbS5leHBhbmRlZCkpO1xuICAgICAgICAgICAgZmxhdExpc3QgPSBmbGF0TGlzdC5jb25jYXQoY29udmVydFRyZWVUYWJsZVJvd1RvRmxhdExpc3QoaXRlbS5jaGlsZHJlbiwgcm93TmF2aWdhdGFibGUpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmxhdExpc3Q7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNSb3dOYXZpZ2F0YWJsZTxUPihyb3c6IFQsIHJvd05hdmlnYXRhYmxlOiBzdHJpbmcgfCBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgaWYgKCFyb3cpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKiBJZiBrZXkgb2YgdGhlIHJvdydzIGl0ZW0gZmllbGQgcGFzc2VkICovXG4gICAgaWYgKGlzU3RyaW5nKHJvd05hdmlnYXRhYmxlKSkge1xuICAgICAgICByZXR1cm4gISFyb3dbcm93TmF2aWdhdGFibGUgYXMgc3RyaW5nXTtcbiAgICB9XG5cbiAgICByZXR1cm4gISFyb3dOYXZpZ2F0YWJsZTtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGcmVlemFibGVDb2x1bW5zKGNvbHVtbnM6IFRhYmxlQ29sdW1uW10sIGZyZWV6ZUNvbHVtbnNUbzogc3RyaW5nKTogTWFwPHN0cmluZywgbnVtYmVyPiB7XG4gICAgY29uc3QgY29sdW1uTmFtZXMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuXG4gICAgaWYgKCFjb2x1bW5zLmxlbmd0aCB8fCAhZnJlZXplQ29sdW1uc1RvKSB7XG4gICAgICAgIHJldHVybiBjb2x1bW5OYW1lcztcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XG4gICAgICAgIGlmICghY29sdW1uLm5hbWUpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdXNpbmcgY29sdW1uTmFtZXMuc2l6ZSBhcyBpbmRleCBvZiBhIGNvbHVtblxuICAgICAgICBjb2x1bW5OYW1lcy5zZXQoY29sdW1uLm5hbWUsIGNvbHVtbk5hbWVzLnNpemUpO1xuXG4gICAgICAgIGlmIChjb2x1bW4ubmFtZSA9PT0gZnJlZXplQ29sdW1uc1RvKSB7XG4gICAgICAgICAgICByZXR1cm4gY29sdW1uTmFtZXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IE1hcCgpO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZyZWV6YWJsZUVuZENvbHVtbnMoY29sdW1uczogVGFibGVDb2x1bW5bXSwgZnJlZXplRW5kQ29sdW1uc1RvOiBzdHJpbmcpOiBNYXA8c3RyaW5nLCBudW1iZXI+IHtcbiAgICBjb25zdCBjb2x1bW5OYW1lcyA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG5cbiAgICBpZiAoIWNvbHVtbnMubGVuZ3RoIHx8ICFmcmVlemVFbmRDb2x1bW5zVG8pIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbk5hbWVzO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSBjb2x1bW5zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIC8vIHVzaW5nIGNvbHVtbk5hbWVzLnNpemUgYXMgaW5kZXggb2YgYSBjb2x1bW5cbiAgICAgICAgY29sdW1uTmFtZXMuc2V0KGNvbHVtbnNbaV0ubmFtZSwgY29sdW1uTmFtZXMuc2l6ZSk7XG5cbiAgICAgICAgaWYgKGNvbHVtbnNbaV0ubmFtZSA9PT0gZnJlZXplRW5kQ29sdW1uc1RvKSB7XG4gICAgICAgICAgICByZXR1cm4gY29sdW1uTmFtZXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IE1hcCgpO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRUcmVlT2JqZWN0c1RvVGFibGVSb3dzPFQ+KFxuICAgIHNvdXJjZTogVFtdLFxuICAgIHNlbGVjdGlvbk1vZGU6IFNlbGVjdGlvbk1vZGVWYWx1ZSxcbiAgICB0YWJsZVJvd3M6IFRhYmxlUm93PFQ+W10sXG4gICAgcm93Q29tcGFyYXRvcjogUm93Q29tcGFyYXRvcjxUPixcbiAgICByZWxhdGlvbktleTogc3RyaW5nLFxuICAgIGhhc0NoaWxkcmVuS2V5OiBzdHJpbmcsXG4gICAgc2VsZWN0ZWRLZXk6IHN0cmluZyxcbiAgICBleHBhbmRlZFN0YXRlS2V5OiBzdHJpbmcsXG4gICAgcm93TmF2aWdhdGFibGU6IHN0cmluZyB8IGJvb2xlYW4sXG4gICAgZW5hYmxlVHJpc3RhdGVNb2RlID0gZmFsc2Vcbik6IFRhYmxlUm93PFQ+W10ge1xuICAgIGNvbnN0IHJvd3M6IFRhYmxlUm93PFQ+W10gPSBbXTtcbiAgICBjb25zdCBzZWxlY3RlZFJvd3NNYXAgPSBnZXRTZWxlY3Rpb25TdGF0dXNCeVJvd1ZhbHVlKHNvdXJjZSwgc2VsZWN0aW9uTW9kZSwgdGFibGVSb3dzLCByb3dDb21wYXJhdG9yKTtcblxuICAgIHNvdXJjZS5mb3JFYWNoKChpdGVtOiBULCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGhhc0NoaWxkcmVuID1cbiAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpdGVtLCByZWxhdGlvbktleSkgJiZcbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoaXRlbVtyZWxhdGlvbktleV0pICYmXG4gICAgICAgICAgICBpdGVtW3JlbGF0aW9uS2V5XS5sZW5ndGg7XG5cbiAgICAgICAgY29uc3Qgcm93ID0gaXNUYWJsZVJvdyhpdGVtIGFzIFRhYmxlUm93PFQ+KVxuICAgICAgICAgICAgPyAoaXRlbSBhcyBUYWJsZVJvdzxUPilcbiAgICAgICAgICAgIDogbmV3VGFibGVSb3coe1xuICAgICAgICAgICAgICAgICAgdHlwZTogaGFzQ2hpbGRyZW4gfHwgaXRlbVtoYXNDaGlsZHJlbktleV0gPT09IHRydWUgPyBUYWJsZVJvd1R5cGUuVFJFRSA6IFRhYmxlUm93VHlwZS5JVEVNLFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZDogaXRlbVtzZWxlY3RlZEtleV0gPz8gISFzZWxlY3RlZFJvd3NNYXAuZ2V0KGl0ZW0pLFxuICAgICAgICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogaXRlbVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICByb3cuZXhwYW5kZWQgPVxuICAgICAgICAgICAgZXhwYW5kZWRTdGF0ZUtleSAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaXRlbSwgZXhwYW5kZWRTdGF0ZUtleSlcbiAgICAgICAgICAgICAgICA/IGl0ZW1bZXhwYW5kZWRTdGF0ZUtleV1cbiAgICAgICAgICAgICAgICA6IGZhbHNlO1xuICAgICAgICByb3cubmF2aWdhdGFibGUgPSBpc1Jvd05hdmlnYXRhYmxlKGl0ZW0sIHJvd05hdmlnYXRhYmxlKTtcbiAgICAgICAgcm93cy5wdXNoKHJvdyk7XG5cbiAgICAgICAgaWYgKGhhc0NoaWxkcmVuKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGNvbnZlcnRUcmVlT2JqZWN0c1RvVGFibGVSb3dzKFxuICAgICAgICAgICAgICAgIGl0ZW1bcmVsYXRpb25LZXldLFxuICAgICAgICAgICAgICAgIHNlbGVjdGlvbk1vZGUsXG4gICAgICAgICAgICAgICAgdGFibGVSb3dzLFxuICAgICAgICAgICAgICAgIHJvd0NvbXBhcmF0b3IsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25LZXksXG4gICAgICAgICAgICAgICAgaGFzQ2hpbGRyZW5LZXksXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRLZXksXG4gICAgICAgICAgICAgICAgZXhwYW5kZWRTdGF0ZUtleSxcbiAgICAgICAgICAgICAgICByb3dOYXZpZ2F0YWJsZSxcbiAgICAgICAgICAgICAgICBlbmFibGVUcmlzdGF0ZU1vZGVcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNoaWxkcmVuLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgICAgICBjLnBhcmVudCA9IGMucGFyZW50IHx8IHJvdztcbiAgICAgICAgICAgICAgICBjLmxldmVsID0gYy5wYXJlbnQubGV2ZWwgKyAxO1xuICAgICAgICAgICAgICAgIGMuaGlkZGVuID0gIWMucGFyZW50LmV4cGFuZGVkO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByb3cuY2hpbGRyZW4ucHVzaCguLi5jaGlsZHJlbik7XG5cbiAgICAgICAgICAgIHJvd3MucHVzaCguLi5jaGlsZHJlbik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJvdy5sZXZlbCA9PT0gMCAmJiByb3cuaXNUcmVlKSB7XG4gICAgICAgICAgICBkZnMoW3Jvd10sIChyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSByLmNoaWxkcmVuIHx8IFtdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkQ2hpbGRyZW46IFRhYmxlUm93PFQ+W10gPSBbXTtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRldGVybWluYXRlQ2hpbGRyZW46IFRhYmxlUm93PFQ+W10gPSBbXTtcbiAgICAgICAgICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQuY2hlY2tlZCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRDaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaGlsZC5jaGVja2VkID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRldGVybWluYXRlQ2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkQWxsID0gc2VsZWN0ZWRDaGlsZHJlbi5sZW5ndGggPT09IGNoaWxkcmVuLmxlbmd0aCAmJiBjaGlsZHJlbi5sZW5ndGggPiAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkU29tZSA9IHNlbGVjdGVkQ2hpbGRyZW4ubGVuZ3RoID4gMDtcbiAgICAgICAgICAgICAgICBpZiAoci5jaGVja2VkICYmIHNlbGVjdGlvbk1vZGUgPT09IFNlbGVjdGlvbk1vZGUuTVVMVElQTEUpIHtcbiAgICAgICAgICAgICAgICAgICAgYXBwbHlTZWxlY3Rpb25Ub0NoaWxkcmVuKHJvd3MsIHIsIFtdLCBbXSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFlbmFibGVUcmlzdGF0ZU1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRBbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgci5jaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRTb21lIHx8IGluZGV0ZXJtaW5hdGVDaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHIuY2hlY2tlZCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJvd3M7XG59XG5cbi8qKlxuICogQGhpZGRlblxuICogUnVucyBgcm93Q29tcGFyYXRvcmAgZnVuY3Rpb24gYWdhaW5zdCBjaGVja2VkIHJvd3MgYW5kIGNvbXBhcmVzIHRoZW0gd2l0aCB0aGUgbmV3IGBzb3VyY2VgXG4gKiBJZiBtYXRjaGVkLCBjcmVhdGVzIGFuIGFzc29jaWF0aW9uIGJldHdlZW4gdGhlIHNvdXJjZSBpdGVtIGFuZCBjaGVja2VkIHN0YXR1cyBvZiBjb3JyZXNwb25kaW5nIHJvdy5cbiAqXG4gKiBAcmV0dXJucyBgTWFwYCBvYmplY3Qgd2l0aCB0aGUgYGNoZWNrZWRgIHN0YXR1cyBmb3IgcGFydGljdWxhciBzb3VyY2UgaXRlbVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VsZWN0aW9uU3RhdHVzQnlSb3dWYWx1ZTxUPihcbiAgICBzb3VyY2U6IFRbXSxcbiAgICBzZWxlY3Rpb25Nb2RlOiBTZWxlY3Rpb25Nb2RlVmFsdWUsXG4gICAgdGFibGVSb3dzOiBUYWJsZVJvd1tdLFxuICAgIHJvd0NvbXBhcmF0b3I6IFJvd0NvbXBhcmF0b3I8VD5cbik6IE1hcDxULCBib29sZWFuIHwgbnVsbD4ge1xuICAgIGNvbnN0IHJvd01hcCA9IG5ldyBNYXA8VCwgYm9vbGVhbiB8IG51bGw+KCk7XG4gICAgaWYgKFxuICAgICAgICAoc2VsZWN0aW9uTW9kZSA9PT0gU2VsZWN0aW9uTW9kZS5TSU5HTEUgfHwgc2VsZWN0aW9uTW9kZSA9PT0gU2VsZWN0aW9uTW9kZS5NVUxUSVBMRSkgJiZcbiAgICAgICAgdHlwZW9mIHJvd0NvbXBhcmF0b3IgPT09ICdmdW5jdGlvbidcbiAgICApIHtcbiAgICAgICAgY29uc3QgY2hlY2tlZFJvd3MgPSB0YWJsZVJvd3MuZmlsdGVyKChyKSA9PiByLmNoZWNrZWQpO1xuICAgICAgICBjaGVja2VkUm93cy5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZvdW5kID0gc291cmNlLmZpbmQoKGUpID0+IHJvd0NvbXBhcmF0b3Iocm93LnZhbHVlLCBlKSk7XG4gICAgICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAgICAgICByb3dNYXAuc2V0KGZvdW5kLCByb3cuY2hlY2tlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcm93TWFwO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5U2VsZWN0aW9uVG9DaGlsZHJlbjxUPihcbiAgICBhbGxSb3dzOiBBcnJheTxUYWJsZVJvdzxUPj4sXG4gICAgcm93OiBUYWJsZVJvdyxcbiAgICBhZGRlZFJvd3M6IFRhYmxlUm93PFQ+W10sXG4gICAgcmVtb3ZlZFJvd3M6IFRhYmxlUm93PFQ+W11cbik6IHZvaWQge1xuICAgIGNvbnN0IGFsbENoaWxkcmVuID0gZmluZFJvd0NoaWxkcmVuKHJvdywgYWxsUm93cyk7XG5cbiAgICBhbGxDaGlsZHJlbi5mb3JFYWNoKChyKSA9PiB7XG4gICAgICAgIHIuY2hlY2tlZCA9IHJvdy5jaGVja2VkO1xuICAgICAgICByLmNoZWNrZWQgPyBhZGRlZFJvd3MucHVzaChyKSA6IHJlbW92ZWRSb3dzLnB1c2gocik7XG4gICAgfSk7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFJvd0NoaWxkcmVuPFQ+KHJvdzogVGFibGVSb3c8VD4sIGFsbFJvd3M6IFRhYmxlUm93PFQ+W10pOiBUYWJsZVJvdzxUPltdIHtcbiAgICBjb25zdCByb3dzTGVuZ3RoID0gYWxsUm93cy5sZW5ndGg7XG5cbiAgICAvKipcbiAgICAgKiBTaW5jZSB3ZSBhcmUgZGVhbGluZyB3aXRoIGEgZmxhdCBsaXN0XG4gICAgICogaXQgbWVhbnMgYWxsIGNoaWxkcmVuIGdvIG5leHQgcmlnaHQgYWZ0ZXIgdGhlIGV4cGFuZGFibGUgcm93XG4gICAgICogdW50aWwgdGhlIG5leHQgcm93IGhhcyBhIG11dHVhbCBwYXJlbnRcbiAgICAgKi9cblxuICAgIGxldCBpbmRleCA9IGFsbFJvd3MuaW5kZXhPZihyb3cpO1xuICAgIGNvbnN0IHBhcmVudHMgPSBnZXRSb3dQYXJlbnRzKHJvdyk7XG4gICAgY29uc3QgY2hpbGRyZW46IFRhYmxlUm93PFQ+W10gPSBbXTtcblxuICAgIHdoaWxlIChpbmRleCsrIDwgcm93c0xlbmd0aCkge1xuICAgICAgICBjb25zdCBuZXh0Um93ID0gYWxsUm93c1tpbmRleF07XG4gICAgICAgIGlmICghbmV4dFJvdz8ucGFyZW50IHx8IHBhcmVudHMuaW5jbHVkZXMobmV4dFJvdy5wYXJlbnQpKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjaGlsZHJlbi5wdXNoKG5leHRSb3cpO1xuICAgIH1cblxuICAgIHJldHVybiBjaGlsZHJlbjtcbn1cblxuLyoqXG4gKiBHZXQgcm93IHBhcmVudHMgcGF0aCB3aGVyZSB0aGUgZmlyc3QgaXMgdGhlIGRpcmVjdCBwYXJlbnRcbiAqIEBwYXJhbSByb3cgUm93IHdoaWNoIHBhcmVudHMgd2UgbmVlZCB0byBmaW5kXG4gKiBAcGFyYW0gdW50aWxQYXJlbnQgUGFyZW50IHRvIHN0b3AgYSBzZWFyY2ggb24uIERlZmF1bHQgaXMgXCJudWxsXCIgdGhhdCBtZWFucyBsb29rIHVwIHVudGlsIHRoZSByb290XG4gKiBAcmV0dXJucyBwYXJlbnRzIGxpc3QgW2RpcmVjdCBwYXJlbnQsIC4uLiwgYW5jZXN0b3JdXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb3dQYXJlbnRzPFQ+KHJvdzogVGFibGVSb3c8VD4sIHVudGlsUGFyZW50OiBUYWJsZVJvdzxUPiB8IG51bGwgPSBudWxsKTogVGFibGVSb3c8VD5bXSB7XG4gICAgdW50aWxQYXJlbnQgPSB1bnRpbFBhcmVudCB8fCBudWxsOyAvLyB0byBhdm9pZCBcInVuZGVmaW5lZFwiXG4gICAgY29uc3QgcGFyZW50czogVGFibGVSb3c8VD5bXSA9IFtdO1xuICAgIGxldCBwYXJlbnQgPSByb3cucGFyZW50IHx8IG51bGw7IC8vIGVtcHR5IHBhcmVudCBzaG91bGQgYmUgY29lcmNlZCB0byBcIm51bGxcIiBkbyBub3QgZ2V0IGludG8gaW5maW5pdGUgbG9vcFxuICAgIHdoaWxlIChwYXJlbnQgJiYgcGFyZW50ICE9PSB1bnRpbFBhcmVudCkge1xuICAgICAgICBwYXJlbnRzLnB1c2gocGFyZW50KTtcbiAgICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudCB8fCBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gcGFyZW50cztcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGFTdHJlYW08VD4oc291cmNlOiBGZHBUYWJsZURhdGFTb3VyY2U8VD4pOiBUYWJsZURhdGFTb3VyY2U8VD4gfCB1bmRlZmluZWQge1xuICAgIGlmIChpc0RhdGFTb3VyY2Uoc291cmNlKSkge1xuICAgICAgICByZXR1cm4gc291cmNlIGFzIFRhYmxlRGF0YVNvdXJjZTxUPjtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShzb3VyY2UpKSB7XG4gICAgICAgIHJldHVybiBuZXcgQXJyYXlUYWJsZURhdGFTb3VyY2Uoc291cmNlKTtcbiAgICB9XG5cbiAgICBpZiAoaXNPYnNlcnZhYmxlKHNvdXJjZSkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlVGFibGVEYXRhU291cmNlKHNvdXJjZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbi8qKlxuICogQGhpZGRlblxuICogQ3JlYXRlcyBhbiBlbXB0eSBjb2x1bW4gc2tlbGV0b24gb2JqZWN0LlxuICogQHJldHVybnMgQ29sdW1uIG1vZGVsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGROZXdSb3dTa2VsZXRvbjxUPihlZGl0YWJsZVJvd1NrZWxldG9uOiBULCBjb2x1bW5zOiBUYWJsZUNvbHVtbltdKTogVCB7XG4gICAgaWYgKGVkaXRhYmxlUm93U2tlbGV0b24pIHtcbiAgICAgICAgcmV0dXJuIHN0cnVjdHVyZWRDbG9uZShlZGl0YWJsZVJvd1NrZWxldG9uKTtcbiAgICB9XG5cbiAgICBsZXQgbmV3Um93ID0ge307XG4gICAgY29sdW1ucy5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgbmV3Um93ID0gc2V0KG5ld1JvdywgY29sdW1uLmtleSwgdW5kZWZpbmVkKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBuZXdSb3cgYXMgVDtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0dyb3VwUm93KHJvdzogVGFibGVSb3cpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcm93LnR5cGUgPT09IFRhYmxlUm93VHlwZS5HUk9VUDtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzb3J0VHJlZUxpa2VHcm91cGVkUm93cyhcbiAgICBncm91cGVkUm93czogVHJlZUxpa2U8VGFibGVSb3c+W10sXG4gICAgZ3JvdXBSdWxlc01hcDogTWFwPHN0cmluZywgQ29sbGVjdGlvbkdyb3VwPlxuKTogVHJlZUxpa2U8VGFibGVSb3c+W10ge1xuICAgIGlmICghZ3JvdXBlZFJvd3NbMF0gfHwgIWlzR3JvdXBSb3coZ3JvdXBlZFJvd3NbMF0pKSB7XG4gICAgICAgIHJldHVybiBncm91cGVkUm93cztcbiAgICB9XG5cbiAgICBjb25zdCB0cmVlTGlrZVJvd3MgPSBncm91cGVkUm93cyBhcyBUcmVlTGlrZTxUYWJsZVJvdzxHcm91cFRhYmxlUm93VmFsdWVUeXBlPj5bXTtcbiAgICBjb25zdCBmaXJzdFJvdyA9IHRyZWVMaWtlUm93c1swXTtcblxuICAgIHRyZWVMaWtlUm93cy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICBpZiAoZ3JvdXAuX2NoaWxkcmVuKSB7XG4gICAgICAgICAgICBncm91cC5fY2hpbGRyZW4gPSBzb3J0VHJlZUxpa2VHcm91cGVkUm93cyhncm91cC5fY2hpbGRyZW4sIGdyb3VwUnVsZXNNYXApO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBncm91cFJ1bGUgPSBncm91cFJ1bGVzTWFwLmdldChmaXJzdFJvdy52YWx1ZS5maWVsZCk7XG5cbiAgICBpZiAoIWdyb3VwUnVsZSB8fCBncm91cFJ1bGUuZGlyZWN0aW9uID09PSBTb3J0RGlyZWN0aW9uLk5PTkUpIHtcbiAgICAgICAgcmV0dXJuIHRyZWVMaWtlUm93cztcbiAgICB9XG5cbiAgICBjb25zdCBkaXJlY3Rpb24gPSBncm91cFJ1bGUuZGlyZWN0aW9uO1xuICAgIGNvbnN0IGRpcmVjdGlvbk11bHRpcGxpZXIgPSBkaXJlY3Rpb24gPT09IFNvcnREaXJlY3Rpb24uQVNDID8gMSA6IGRpcmVjdGlvbiA9PT0gU29ydERpcmVjdGlvbi5ERVNDID8gLTEgOiAwO1xuXG4gICAgcmV0dXJuIHRyZWVMaWtlUm93cy5zbGljZSgpLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgY29uc3QgYVZhbHVlID0gYS52YWx1ZS52YWx1ZSBhcyBhbnk7XG4gICAgICAgIGNvbnN0IGJWYWx1ZSA9IGIudmFsdWUudmFsdWUgYXMgYW55O1xuXG4gICAgICAgIGNvbnN0IGFOdW1iZXIgPSBOdW1iZXIucGFyc2VGbG9hdChhVmFsdWUpO1xuICAgICAgICBjb25zdCBiTnVtYmVyID0gTnVtYmVyLnBhcnNlRmxvYXQoYlZhbHVlKTtcbiAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4oYU51bWJlcikgJiYgIU51bWJlci5pc05hTihiTnVtYmVyKSkge1xuICAgICAgICAgICAgcmV0dXJuIChhTnVtYmVyIC0gYk51bWJlcikgKiBkaXJlY3Rpb25NdWx0aXBsaWVyO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChhVmFsdWUgPiBiVmFsdWUgPyAxIDogLTEpICogZGlyZWN0aW9uTXVsdGlwbGllcjtcbiAgICB9KTtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VHJlZUxpa2VUb0ZsYXRMaXN0PEs+KHRyZWVMaWtlTGlzdDogVHJlZUxpa2U8Sz5bXSk6IEtbXSB7XG4gICAgbGV0IGZsYXRMaXN0OiBLW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgaXRlbSBvZiB0cmVlTGlrZUxpc3QpIHtcbiAgICAgICAgZmxhdExpc3QucHVzaChpdGVtKTtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtLl9jaGlsZHJlbikpIHtcbiAgICAgICAgICAgIGZsYXRMaXN0ID0gZmxhdExpc3QuY29uY2F0KGNvbnZlcnRUcmVlTGlrZVRvRmxhdExpc3QoaXRlbS5fY2hpbGRyZW4pKTtcbiAgICAgICAgICAgIGRlbGV0ZSBpdGVtLl9jaGlsZHJlbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmbGF0TGlzdDtcbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBHcm91cCB0YWJsZSByb3dzIGFuZCByZXR1cm4gdHJlZSBsaWtlIHJvd3MgbGlzdC5cbiAqIEl0J3MgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIHJlY3Vyc2l2ZWx5LlxuICogQHBhcmFtIHJ1bGVzIGdyb3VwIHJ1bGVzIHRvIGdyb3VwIGJ5XG4gKiBAcGFyYW0gcm93cyBzb3VyY2UgdGFibGUgcm93c1xuICogQHBhcmFtIHBhcmVudCByb3cgcGFyZW50XG4gKiBAcGFyYW0gbGV2ZWwgbGV2ZWwgb2YgbmVzdGluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3JvdXBlZFRhYmxlUm93c1RyZWUoXG4gICAgcnVsZXM6IENvbGxlY3Rpb25Hcm91cFtdLFxuICAgIHJvd3M6IFRhYmxlUm93W10sXG4gICAgcGFyZW50OiBUYWJsZVJvdyB8IG51bGwgPSBudWxsLFxuICAgIGxldmVsID0gMFxuKTogVHJlZUxpa2U8VGFibGVSb3c+W10ge1xuICAgIHJ1bGVzID0gWy4uLnJ1bGVzXTtcblxuICAgIGlmICghcnVsZXMubGVuZ3RoKSB7XG4gICAgICAgIC8vIG5vIHJ1bGVzIG1lYW4gdGhhdCBpdCdzIHRoZSBsZXZlbCBvZiBzb3VyY2UgaXRlbXNcbiAgICAgICAgcmV0dXJuIHJvd3MubWFwKChyb3cpID0+IHtcbiAgICAgICAgICAgIHJvdy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgICAgICByb3cubGV2ZWwgPSBsZXZlbDtcbiAgICAgICAgICAgIHJvdy5oaWRkZW4gPSAhIXBhcmVudCAmJiAhcGFyZW50LmV4cGFuZGVkO1xuICAgICAgICAgICAgcmV0dXJuIHJvdztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gUmV0cmlldmUgZmlyc3QgZ3JvdXAgcnVsZVxuICAgIGNvbnN0IHJ1bGUgPSBydWxlcy5zaGlmdCgpITtcblxuICAgIC8vIEJ1aWxkIG1hcCBvZiB1bmlxdWUgdmFsdWVzIGZvciBhIGdpdmVuIGdyb3VwIHJ1bGVcbiAgICBjb25zdCB2YWx1ZXNIYXNoID0gcm93c1xuICAgICAgICAuZmlsdGVyKChyKSA9PiByLnN0YXRlICE9PSAnZWRpdGFibGUnKVxuICAgICAgICAucmVkdWNlKChoYXNoLCByb3cpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1vZGVsVmFsdWUgPSBnZXQocm93LnZhbHVlLCBydWxlLmZpZWxkKTtcblxuICAgICAgICAgICAgaWYgKCFoYXNoLmhhcyhtb2RlbFZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGhhc2guc2V0KG1vZGVsVmFsdWUsIFtdKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaGFzaC5nZXQobW9kZWxWYWx1ZSk/LnB1c2gocm93KTtcblxuICAgICAgICAgICAgcmV0dXJuIGhhc2g7XG4gICAgICAgIH0sIG5ldyBNYXA8dW5rbm93biwgVGFibGVSb3dbXT4oKSk7XG5cbiAgICAvLyBCdWlsZCB0YWJsZSByb3dzIHRyZWVcbiAgICBsZXQgZ3JvdXBlZFRhYmxlUm93czogVHJlZUxpa2U8VGFibGVSb3c+W10gPSBbXTtcblxuICAgIGlmIChyb3dzLnNvbWUoKHIpID0+IHIuc3RhdGUgPT09ICdlZGl0YWJsZScpKSB7XG4gICAgICAgIGdyb3VwZWRUYWJsZVJvd3MgPSByb3dzXG4gICAgICAgICAgICAuZmlsdGVyKChyKSA9PiByLnN0YXRlID09PSAnZWRpdGFibGUnKVxuICAgICAgICAgICAgLm1hcCgocm93KSA9PiB7XG4gICAgICAgICAgICAgICAgcm93LnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgICAgICAgICByb3cubGV2ZWwgPSAtMTtcbiAgICAgICAgICAgICAgICByb3cuaGlkZGVuID0gISFwYXJlbnQgJiYgIXBhcmVudC5leHBhbmRlZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm93O1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbdmFsdWUsIHZhbHVlc10gb2YgQXJyYXkuZnJvbSh2YWx1ZXNIYXNoKSkge1xuICAgICAgICBjb25zdCBmaWx0ZXJlZFJvd3MgPSByb3dzLmZpbHRlcigoX2l0ZW0pID0+IHZhbHVlcy5pbmNsdWRlcyhfaXRlbSkpO1xuXG4gICAgICAgIGlmIChmaWx0ZXJlZFJvd3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGdyb3VwVGFibGVSb3c6IFRyZWVMaWtlPFRhYmxlUm93PEdyb3VwVGFibGVSb3dWYWx1ZVR5cGU+PiA9IG5ld1RhYmxlUm93PEdyb3VwVGFibGVSb3dWYWx1ZVR5cGU+KHtcbiAgICAgICAgICAgIHR5cGU6IFRhYmxlUm93VHlwZS5HUk9VUCxcbiAgICAgICAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgICAgICAgaW5kZXg6IDAsXG4gICAgICAgICAgICB2YWx1ZTogeyBmaWVsZDogcnVsZS5maWVsZCwgdmFsdWUsIGNvdW50OiAwIH0sXG4gICAgICAgICAgICBwYXJlbnQsXG4gICAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICAgIGV4cGFuZGFibGU6IHRydWUsXG4gICAgICAgICAgICBleHBhbmRlZDogdHJ1ZSxcbiAgICAgICAgICAgIGhpZGRlbjogISFwYXJlbnQgJiYgIXBhcmVudC5leHBhbmRlZFxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBBZHMgZ3JvdXAncyBjaGlsZHJlbiByb3dzXG4gICAgICAgIGdyb3VwVGFibGVSb3cuX2NoaWxkcmVuID0gY3JlYXRlR3JvdXBlZFRhYmxlUm93c1RyZWUocnVsZXMsIGZpbHRlcmVkUm93cywgZ3JvdXBUYWJsZVJvdywgbGV2ZWwgKyAxKTtcblxuICAgICAgICBncm91cFRhYmxlUm93LnZhbHVlLmNvdW50ID0gZ3JvdXBUYWJsZVJvdy5fY2hpbGRyZW4/Lmxlbmd0aDtcblxuICAgICAgICBncm91cGVkVGFibGVSb3dzLnB1c2goZ3JvdXBUYWJsZVJvdyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdyb3VwZWRUYWJsZVJvd3M7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydE9iamVjdHNUb1RhYmxlUm93czxUPihcbiAgICBzb3VyY2U6IFRbXSxcbiAgICBhZGRlZEl0ZW1zOiBUW10sXG4gICAgc2VsZWN0ZWRLZXk6IHN0cmluZyxcbiAgICByb3dOYXZpZ2F0YWJsZTogYm9vbGVhbiB8IHN0cmluZyxcbiAgICBzZWxlY3Rpb25Nb2RlOiBTZWxlY3Rpb25Nb2RlVmFsdWUsXG4gICAgcm93czogVGFibGVSb3dbXSxcbiAgICByb3dDb21wYXJhdG9yOiBSb3dDb21wYXJhdG9yXG4pOiBUYWJsZVJvdzxUPltdIHtcbiAgICBjb25zdCByb3dJdGVtID0gc291cmNlWzBdIGFzIGFueTtcblxuICAgIGlmIChpc1RhYmxlUm93KHJvd0l0ZW0pKSB7XG4gICAgICAgIHJldHVybiBzb3VyY2UgYXMgVGFibGVSb3dbXTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3RlZFJvd3NNYXAgPSBnZXRTZWxlY3Rpb25TdGF0dXNCeVJvd1ZhbHVlKHNvdXJjZSwgc2VsZWN0aW9uTW9kZSwgcm93cywgcm93Q29tcGFyYXRvcik7XG4gICAgcmV0dXJuIHNvdXJjZS5tYXAoKGl0ZW06IFQsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgY29uc3QgaXNOZXdJdGVtID0gYWRkZWRJdGVtcy5pbmNsdWRlcyhpdGVtKTtcbiAgICAgICAgY29uc3Qgcm93ID0gbmV3VGFibGVSb3coe1xuICAgICAgICAgICAgdHlwZTogVGFibGVSb3dUeXBlLklURU0sXG4gICAgICAgICAgICBjaGVja2VkOiBpdGVtW3NlbGVjdGVkS2V5XSA/PyAhIXNlbGVjdGVkUm93c01hcC5nZXQoaXRlbSksXG4gICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgIHZhbHVlOiBpdGVtXG4gICAgICAgIH0pO1xuICAgICAgICByb3cubmF2aWdhdGFibGUgPSBpc1Jvd05hdmlnYXRhYmxlKGl0ZW0sIHJvd05hdmlnYXRhYmxlKTtcbiAgICAgICAgcm93LnN0YXRlID0gaXNOZXdJdGVtID8gJ2VkaXRhYmxlJyA6ICdyZWFkb25seSc7XG4gICAgICAgIHJldHVybiByb3c7XG4gICAgfSk7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgZnVuY3Rpb24gaXNUcmVlUm93Rmlyc3RDZWxsKGNlbGxJbmRleDogbnVtYmVyLCByb3c6IFRhYmxlUm93LCBldmVudD86IEV2ZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChjZWxsSW5kZXggPT09IDAgJiYgaXNUcmVlUm93KHJvdykpIHx8ICghIWV2ZW50ICYmICFyb3cuaXNUcmVlKTtcbn1cbiJdfQ==","export class TableColumnFreezeEvent {\n /**\n * Table column freeze event\n * @param source Table component\n * @param current Current freezeTo column\n * @param previous Previous freezeTo column\n */\n constructor(source, current, previous) {\n this.source = source;\n this.current = current;\n this.previous = previous;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWZyZWV6ZS1ldmVudC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9tb2RlbHMvY29sdW1uLWZyZWV6ZS1ldmVudC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFjQSxNQUFNLE9BQU8sc0JBQXNCO0lBQy9COzs7OztPQUtHO0lBQ0gsWUFDVyxNQUFhLEVBQ2IsT0FBc0IsRUFDdEIsUUFBdUI7UUFGdkIsV0FBTSxHQUFOLE1BQU0sQ0FBTztRQUNiLFlBQU8sR0FBUCxPQUFPLENBQWU7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBZTtJQUMvQixDQUFDO0NBQ1AiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYWJsZSB9IGZyb20gJy4uL3RhYmxlJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vdGFibGUtY29sdW1uJztcblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUNvbHVtbkZyZWV6ZUludGVybmFsRXZlbnQge1xuICAgIG5hbWU6IFRhYmxlQ29sdW1uWyduYW1lJ107XG4gICAgZW5kRnJlZXphYmxlOiBUYWJsZUNvbHVtblsnZW5kRnJlZXphYmxlJ107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnJlZXplQ2hhbmdlIHtcbiAgICBjdXJyZW50OiBzdHJpbmcgfCBudWxsO1xuICAgIHByZXZpb3VzOiBzdHJpbmcgfCBudWxsO1xuICAgIGVuZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZUNvbHVtbkZyZWV6ZUV2ZW50IHtcbiAgICAvKipcbiAgICAgKiBUYWJsZSBjb2x1bW4gZnJlZXplIGV2ZW50XG4gICAgICogQHBhcmFtIHNvdXJjZSBUYWJsZSBjb21wb25lbnRcbiAgICAgKiBAcGFyYW0gY3VycmVudCBDdXJyZW50IGZyZWV6ZVRvIGNvbHVtblxuICAgICAqIEBwYXJhbSBwcmV2aW91cyBQcmV2aW91cyBmcmVlemVUbyBjb2x1bW5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIHNvdXJjZTogVGFibGUsXG4gICAgICAgIHB1YmxpYyBjdXJyZW50OiBzdHJpbmcgfCBudWxsLFxuICAgICAgICBwdWJsaWMgcHJldmlvdXM6IHN0cmluZyB8IG51bGxcbiAgICApIHt9XG59XG4iXX0=","export class ColumnsChange {\n /**\n * Columns change event\n * @param current Current columns\n * @param previous Previous columns\n */\n constructor(current, previous) {\n this.current = current;\n this.previous = previous;\n }\n}\nexport class TableColumnsChangeEvent extends ColumnsChange {\n /**\n * Table columns change event\n * @param source Table component\n * @param current Current columns\n * @param previous Previous columns\n */\n constructor(source, current, previous) {\n super(current, previous);\n this.source = source;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1ucy1jaGFuZ2UtZXZlbnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvbW9kZWxzL2NvbHVtbnMtY2hhbmdlLWV2ZW50Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxhQUFhO0lBQ3RCOzs7O09BSUc7SUFDSCxZQUNXLE9BQWlCLEVBQ2pCLFFBQWtCO1FBRGxCLFlBQU8sR0FBUCxPQUFPLENBQVU7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUMxQixDQUFDO0NBQ1A7QUFFRCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsYUFBYTtJQUN0RDs7Ozs7T0FLRztJQUNILFlBQ1csTUFBYSxFQUNwQixPQUFpQixFQUNqQixRQUFrQjtRQUVsQixLQUFLLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBSmxCLFdBQU0sR0FBTixNQUFNLENBQU87SUFLeEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGFibGUgfSBmcm9tICcuLi90YWJsZSc7XG5cbmV4cG9ydCBjbGFzcyBDb2x1bW5zQ2hhbmdlIHtcbiAgICAvKipcbiAgICAgKiBDb2x1bW5zIGNoYW5nZSBldmVudFxuICAgICAqIEBwYXJhbSBjdXJyZW50IEN1cnJlbnQgY29sdW1uc1xuICAgICAqIEBwYXJhbSBwcmV2aW91cyBQcmV2aW91cyBjb2x1bW5zXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBjdXJyZW50OiBzdHJpbmdbXSxcbiAgICAgICAgcHVibGljIHByZXZpb3VzOiBzdHJpbmdbXVxuICAgICkge31cbn1cblxuZXhwb3J0IGNsYXNzIFRhYmxlQ29sdW1uc0NoYW5nZUV2ZW50IGV4dGVuZHMgQ29sdW1uc0NoYW5nZSB7XG4gICAgLyoqXG4gICAgICogVGFibGUgY29sdW1ucyBjaGFuZ2UgZXZlbnRcbiAgICAgKiBAcGFyYW0gc291cmNlIFRhYmxlIGNvbXBvbmVudFxuICAgICAqIEBwYXJhbSBjdXJyZW50IEN1cnJlbnQgY29sdW1uc1xuICAgICAqIEBwYXJhbSBwcmV2aW91cyBQcmV2aW91cyBjb2x1bW5zXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBzb3VyY2U6IFRhYmxlLFxuICAgICAgICBjdXJyZW50OiBzdHJpbmdbXSxcbiAgICAgICAgcHJldmlvdXM6IHN0cmluZ1tdXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGN1cnJlbnQsIHByZXZpb3VzKTtcbiAgICB9XG59XG4iXX0=","export class TableDraggable {\n}\nexport class TableInitialState {\n}\nexport class TableVirtualScroll {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aXZlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9tb2RlbHMvZGlyZWN0aXZlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxNQUFNLE9BQWdCLGNBQWM7Q0FhbkM7QUFFRCxNQUFNLE9BQWdCLGlCQUFpQjtDQVN0QztBQUVELE1BQU0sT0FBZ0Isa0JBQWtCO0NBU3ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEcmFnb3ZlclByZWRpY2F0ZSwgRHJvcFByZWRpY2F0ZSwgRmREbmREcm9wVHlwZSwgRmREcm9wRXZlbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uRmlsdGVyLCBDb2xsZWN0aW9uR3JvdXAsIENvbGxlY3Rpb25Tb3J0LCBUYWJsZVN0YXRlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJy4uL3RhYmxlJztcbmltcG9ydCB7IFRhYmxlUm93IH0gZnJvbSAnLi90YWJsZS1yb3cubW9kZWwnO1xuaW1wb3J0IHsgVGFibGVSb3dzUmVhcnJhbmdlRXZlbnQgfSBmcm9tICcuL3RhYmxlLXJvd3MtcmVhcnJhbmdlLWV2ZW50Lm1vZGVsJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRhYmxlRHJhZ2dhYmxlPFQgPSBhbnk+IHtcbiAgICBhYnN0cmFjdCBkcmFnRHJvcEluUHJvZ3Jlc3M6IGJvb2xlYW47XG4gICAgYWJzdHJhY3QgZW5hYmxlUm93UmVvcmRlcmluZzogYm9vbGVhbjtcbiAgICBhYnN0cmFjdCBpc1RyZWVUYWJsZTogYm9vbGVhbjtcbiAgICBhYnN0cmFjdCBkcm9wTW9kZTogRmREbmREcm9wVHlwZTtcbiAgICBhYnN0cmFjdCBkcm9wUHJlZGljYXRlOiBEcm9wUHJlZGljYXRlPFRhYmxlUm93PFQ+PjtcbiAgICBhYnN0cmFjdCBkcmFnb3ZlclByZWRpY2F0ZTogRHJhZ292ZXJQcmVkaWNhdGU8VGFibGVSb3c8VD4+O1xuICAgIGFic3RyYWN0IHJvd3NSZWFycmFuZ2U6IEV2ZW50RW1pdHRlcjxUYWJsZVJvd3NSZWFycmFuZ2VFdmVudDxUPj47XG4gICAgYWJzdHJhY3QgZHJhZ1Jvd0Zyb21LZXlib2FyZChkaXI6IHN0cmluZywgZXZlbnQ6IEV2ZW50LCBjdXJyZW50Um93SW5kZXg6IG51bWJlciwgbW9kZTogJ3NoaWZ0JyB8ICdncm91cCcpOiB2b2lkO1xuICAgIGFic3RyYWN0IGRyYWdEcm9wSXRlbURyb3AoZXZlbnQ6IEZkRHJvcEV2ZW50PFRhYmxlUm93Pik6IHZvaWQ7XG4gICAgYWJzdHJhY3QgZHJhZ0Ryb3BTdGFydCgpOiB2b2lkO1xuICAgIGFic3RyYWN0IHNldFRhYmxlKHRhYmxlOiBUYWJsZSk6IHZvaWQ7XG4gICAgYWJzdHJhY3QgZHJvcENhbmNlbGxlZCgpOiB2b2lkO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGFibGVJbml0aWFsU3RhdGUge1xuICAgIGFic3RyYWN0IGluaXRpYWxTb3J0Qnk6IENvbGxlY3Rpb25Tb3J0W107XG4gICAgYWJzdHJhY3QgaW5pdGlhbFZpc2libGVDb2x1bW5zOiBzdHJpbmdbXTtcbiAgICBhYnN0cmFjdCBpbml0aWFsRmlsdGVyQnk6IENvbGxlY3Rpb25GaWx0ZXJbXTtcbiAgICBhYnN0cmFjdCBpbml0aWFsR3JvdXBCeTogQ29sbGVjdGlvbkdyb3VwW107XG4gICAgYWJzdHJhY3QgaW5pdGlhbFBhZ2U6IG51bWJlcjtcbiAgICBhYnN0cmFjdCBzdGF0ZTogVGFibGVTdGF0ZTtcbiAgICBhYnN0cmFjdCBzZXRUYWJsZSh0YWJsZTogVGFibGUpOiB2b2lkO1xuICAgIGFic3RyYWN0IHNldEluaXRpYWxTdGF0ZSgpOiB2b2lkO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGFibGVWaXJ0dWFsU2Nyb2xsIHtcbiAgICBhYnN0cmFjdCByb3dIZWlnaHQ6IG51bWJlcjtcbiAgICBhYnN0cmFjdCBzZWNvbmRhcnlSb3dIZWlnaHQ6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBhYnN0cmFjdCB2aXJ0dWFsU2Nyb2xsVHJhbnNmb3JtJDogT2JzZXJ2YWJsZTxudW1iZXI+O1xuICAgIGFic3RyYWN0IHZpcnR1YWxTY3JvbGw6IGJvb2xlYW47XG4gICAgYWJzdHJhY3QgdmlydHVhbFNjcm9sbFRvdGFsSGVpZ2h0OiBudW1iZXI7XG4gICAgYWJzdHJhY3Qgc2V0VGFibGUodGFibGU6IFRhYmxlKTogdm9pZDtcbiAgICBhYnN0cmFjdCBsaXN0ZW5PblZpcnR1YWxTY3JvbGwoKTogdm9pZDtcbiAgICBhYnN0cmFjdCBjYWxjdWxhdGVWaXJ0dWFsU2Nyb2xsUm93cygpOiB2b2lkO1xufVxuIl19","export class TableFilterChangeEvent {\n /**\n * Table filter change event\n * @param source Table component\n * @param current Current filters\n * @param previous Previous filters\n */\n constructor(source, current, previous) {\n this.source = source;\n this.current = current;\n this.previous = previous;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWNoYW5nZS1ldmVudC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9tb2RlbHMvZmlsdGVyLWNoYW5nZS1ldmVudC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxNQUFNLE9BQU8sc0JBQXNCO0lBQy9COzs7OztPQUtHO0lBQ0gsWUFDVyxNQUFhLEVBQ2IsT0FBMkIsRUFDM0IsUUFBNEI7UUFGNUIsV0FBTSxHQUFOLE1BQU0sQ0FBTztRQUNiLFlBQU8sR0FBUCxPQUFPLENBQW9CO1FBQzNCLGFBQVEsR0FBUixRQUFRLENBQW9CO0lBQ3BDLENBQUM7Q0FDUCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbGxlY3Rpb25GaWx0ZXIgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSAnLi4vdGFibGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlckNoYW5nZSB7XG4gICAgY3VycmVudDogQ29sbGVjdGlvbkZpbHRlcltdO1xuICAgIHByZXZpb3VzOiBDb2xsZWN0aW9uRmlsdGVyW107XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZUZpbHRlckNoYW5nZUV2ZW50IHtcbiAgICAvKipcbiAgICAgKiBUYWJsZSBmaWx0ZXIgY2hhbmdlIGV2ZW50XG4gICAgICogQHBhcmFtIHNvdXJjZSBUYWJsZSBjb21wb25lbnRcbiAgICAgKiBAcGFyYW0gY3VycmVudCBDdXJyZW50IGZpbHRlcnNcbiAgICAgKiBAcGFyYW0gcHJldmlvdXMgUHJldmlvdXMgZmlsdGVyc1xuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgc291cmNlOiBUYWJsZSxcbiAgICAgICAgcHVibGljIGN1cnJlbnQ6IENvbGxlY3Rpb25GaWx0ZXJbXSxcbiAgICAgICAgcHVibGljIHByZXZpb3VzOiBDb2xsZWN0aW9uRmlsdGVyW11cbiAgICApIHt9XG59XG4iXX0=","export class TableGroupChangeEvent {\n /**\n * Table group change event\n * @param source Table component\n * @param current Current groups\n * @param previous Previous groups\n */\n constructor(source, current, previous) {\n this.source = source;\n this.current = current;\n this.previous = previous;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtY2hhbmdlLWV2ZW50Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzL21vZGVscy9ncm91cC1jaGFuZ2UtZXZlbnQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsTUFBTSxPQUFPLHFCQUFxQjtJQUM5Qjs7Ozs7T0FLRztJQUNILFlBQ1csTUFBYSxFQUNiLE9BQTBCLEVBQzFCLFFBQTJCO1FBRjNCLFdBQU0sR0FBTixNQUFNLENBQU87UUFDYixZQUFPLEdBQVAsT0FBTyxDQUFtQjtRQUMxQixhQUFRLEdBQVIsUUFBUSxDQUFtQjtJQUNuQyxDQUFDO0NBQ1AiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xsZWN0aW9uR3JvdXAgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSAnLi4vdGFibGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdyb3VwQ2hhbmdlIHtcbiAgICBjdXJyZW50OiBDb2xsZWN0aW9uR3JvdXBbXTtcbiAgICBwcmV2aW91czogQ29sbGVjdGlvbkdyb3VwW107XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZUdyb3VwQ2hhbmdlRXZlbnQge1xuICAgIC8qKlxuICAgICAqIFRhYmxlIGdyb3VwIGNoYW5nZSBldmVudFxuICAgICAqIEBwYXJhbSBzb3VyY2UgVGFibGUgY29tcG9uZW50XG4gICAgICogQHBhcmFtIGN1cnJlbnQgQ3VycmVudCBncm91cHNcbiAgICAgKiBAcGFyYW0gcHJldmlvdXMgUHJldmlvdXMgZ3JvdXBzXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBzb3VyY2U6IFRhYmxlLFxuICAgICAgICBwdWJsaWMgY3VycmVudDogQ29sbGVjdGlvbkdyb3VwW10sXG4gICAgICAgIHB1YmxpYyBwcmV2aW91czogQ29sbGVjdGlvbkdyb3VwW11cbiAgICApIHt9XG59XG4iXX0=","export class PageChange {\n /**\n * Page change event\n * @param current Current page\n * @param previous Previous page\n */\n constructor(current, previous) {\n this.current = current;\n this.previous = previous;\n }\n}\nexport class TablePageChangeEvent extends PageChange {\n /**\n * Table page change event\n * @param source Table component\n * @param current Current page\n * @param previous Previous page\n */\n constructor(source, current, previous) {\n super(current, previous);\n this.source = source;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1jaGFuZ2UtZXZlbnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvbW9kZWxzL3BhZ2UtY2hhbmdlLWV2ZW50Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxVQUFVO0lBQ25COzs7O09BSUc7SUFDSCxZQUNXLE9BQXVCLEVBQ3ZCLFFBQXdCO1FBRHhCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBQ3ZCLGFBQVEsR0FBUixRQUFRLENBQWdCO0lBQ2hDLENBQUM7Q0FDUDtBQUVELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxVQUFVO0lBQ2hEOzs7OztPQUtHO0lBQ0gsWUFDVyxNQUFhLEVBQ3BCLE9BQXVCLEVBQ3ZCLFFBQXdCO1FBRXhCLEtBQUssQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFKbEIsV0FBTSxHQUFOLE1BQU0sQ0FBTztJQUt4QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xsZWN0aW9uUGFnZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tICcuLi90YWJsZSc7XG5cbmV4cG9ydCBjbGFzcyBQYWdlQ2hhbmdlIHtcbiAgICAvKipcbiAgICAgKiBQYWdlIGNoYW5nZSBldmVudFxuICAgICAqIEBwYXJhbSBjdXJyZW50IEN1cnJlbnQgcGFnZVxuICAgICAqIEBwYXJhbSBwcmV2aW91cyBQcmV2aW91cyBwYWdlXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBjdXJyZW50OiBDb2xsZWN0aW9uUGFnZSxcbiAgICAgICAgcHVibGljIHByZXZpb3VzOiBDb2xsZWN0aW9uUGFnZVxuICAgICkge31cbn1cblxuZXhwb3J0IGNsYXNzIFRhYmxlUGFnZUNoYW5nZUV2ZW50IGV4dGVuZHMgUGFnZUNoYW5nZSB7XG4gICAgLyoqXG4gICAgICogVGFibGUgcGFnZSBjaGFuZ2UgZXZlbnRcbiAgICAgKiBAcGFyYW0gc291cmNlIFRhYmxlIGNvbXBvbmVudFxuICAgICAqIEBwYXJhbSBjdXJyZW50IEN1cnJlbnQgcGFnZVxuICAgICAqIEBwYXJhbSBwcmV2aW91cyBQcmV2aW91cyBwYWdlXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBzb3VyY2U6IFRhYmxlLFxuICAgICAgICBjdXJyZW50OiBDb2xsZWN0aW9uUGFnZSxcbiAgICAgICAgcHJldmlvdXM6IENvbGxlY3Rpb25QYWdlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGN1cnJlbnQsIHByZXZpb3VzKTtcbiAgICB9XG59XG4iXX0=","export class SaveRowsEvent {\n /**\n * Table save rows event\n * @param done Callback function. Call it when newly added items has been saved and new data source fetch is needed.\n * @param items Array of newly created items.\n */\n constructor(done, items) {\n this.done = done;\n this.items = items;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZS1yb3dzLWV2ZW50LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9tb2RlbHMvc2F2ZS1yb3dzLWV2ZW50LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sYUFBYTtJQUN0Qjs7OztPQUlHO0lBQ0gsWUFDVyxJQUFnQixFQUNoQixLQUFVO1FBRFYsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixVQUFLLEdBQUwsS0FBSyxDQUFLO0lBQ2xCLENBQUM7Q0FDUCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBTYXZlUm93c0V2ZW50PFQ+IHtcbiAgICAvKipcbiAgICAgKiBUYWJsZSBzYXZlIHJvd3MgZXZlbnRcbiAgICAgKiBAcGFyYW0gZG9uZSBDYWxsYmFjayBmdW5jdGlvbi4gQ2FsbCBpdCB3aGVuIG5ld2x5IGFkZGVkIGl0ZW1zIGhhcyBiZWVuIHNhdmVkIGFuZCBuZXcgZGF0YSBzb3VyY2UgZmV0Y2ggaXMgbmVlZGVkLlxuICAgICAqIEBwYXJhbSBpdGVtcyBBcnJheSBvZiBuZXdseSBjcmVhdGVkIGl0ZW1zLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZG9uZTogKCkgPT4gdm9pZCxcbiAgICAgICAgcHVibGljIGl0ZW1zOiBUW11cbiAgICApIHt9XG59XG4iXX0=","export class TableSearchChangeEvent {\n /**\n * Table search change event\n * @param source Table component\n * @param current Current search (fields, directions)\n * @param previous Previous search (fields, directions)\n */\n constructor(source, current, previous) {\n this.source = source;\n this.current = current;\n this.previous = previous;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWNoYW5nZS1ldmVudC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9tb2RlbHMvc2VhcmNoLWNoYW5nZS1ldmVudC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxNQUFNLE9BQU8sc0JBQXNCO0lBQy9COzs7OztPQUtHO0lBQ0gsWUFDVyxNQUFhLEVBQ2IsT0FBb0IsRUFDcEIsUUFBcUI7UUFGckIsV0FBTSxHQUFOLE1BQU0sQ0FBTztRQUNiLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFDcEIsYUFBUSxHQUFSLFFBQVEsQ0FBYTtJQUM3QixDQUFDO0NBQ1AiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWFyY2hJbnB1dCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vc2VhcmNoLWZpZWxkJztcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSAnLi4vdGFibGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaENoYW5nZSB7XG4gICAgY3VycmVudDogU2VhcmNoSW5wdXQ7XG4gICAgcHJldmlvdXM6IFNlYXJjaElucHV0O1xufVxuXG5leHBvcnQgY2xhc3MgVGFibGVTZWFyY2hDaGFuZ2VFdmVudCB7XG4gICAgLyoqXG4gICAgICogVGFibGUgc2VhcmNoIGNoYW5nZSBldmVudFxuICAgICAqIEBwYXJhbSBzb3VyY2UgVGFibGUgY29tcG9uZW50XG4gICAgICogQHBhcmFtIGN1cnJlbnQgQ3VycmVudCBzZWFyY2ggKGZpZWxkcywgZGlyZWN0aW9ucylcbiAgICAgKiBAcGFyYW0gcHJldmlvdXMgUHJldmlvdXMgc2VhcmNoIChmaWVsZHMsIGRpcmVjdGlvbnMpXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBzb3VyY2U6IFRhYmxlLFxuICAgICAgICBwdWJsaWMgY3VycmVudDogU2VhcmNoSW5wdXQsXG4gICAgICAgIHB1YmxpYyBwcmV2aW91czogU2VhcmNoSW5wdXRcbiAgICApIHt9XG59XG4iXX0=","export class TableSelectionChangeEvent {\n}\nexport class TableRowSelectionChangeEvent extends TableSelectionChangeEvent {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWNoYW5nZS1ldmVudC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9tb2RlbHMvc2VsZWN0aW9uLWNoYW5nZS1ldmVudC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8seUJBQXlCO0NBV3JDO0FBRUQsTUFBTSxPQUFPLDRCQUFnQyxTQUFRLHlCQUE0QjtDQUdoRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhYmxlIH0gZnJvbSAnLi4vdGFibGUnO1xuXG5leHBvcnQgY2xhc3MgVGFibGVTZWxlY3Rpb25DaGFuZ2VFdmVudDxUPiB7XG4gICAgLyoqIGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtcyAqL1xuICAgIHNlbGVjdGlvbjogVFtdO1xuICAgIC8qKiBJdGVtcyBhZGRlZCAqL1xuICAgIGFkZGVkOiBUW107IC8vXG4gICAgLyoqIEl0ZW1zIHJlbW92ZWQgKi9cbiAgICByZW1vdmVkOiBUW107XG4gICAgLyoqIEluZGV4ZXMgbG9jYXRpb24gb2YgYWRkaXRpb25zIG9yIHJlbW92YWxzICovXG4gICAgaW5kZXg6IG51bWJlcltdO1xuICAgIC8qKiBXaGV0aGVyIGBDaGVjay9VbmNoZWNrYCBhbGwgY2hlY2tib3ggd2FzIHByZXNzZWQuICovXG4gICAgYWxsPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFRhYmxlUm93U2VsZWN0aW9uQ2hhbmdlRXZlbnQ8VD4gZXh0ZW5kcyBUYWJsZVNlbGVjdGlvbkNoYW5nZUV2ZW50PFQ+IHtcbiAgICAvKiogVGFibGUgY29tcG9uZW50ICovXG4gICAgc291cmNlOiBUYWJsZTtcbn1cbiJdfQ==","export class TableSortChangeEvent {\n /**\n * Table sort change event\n * @param source Table component\n * @param current Current sort (fields, directions)\n * @param previous Previous sort (fields, directions)\n */\n constructor(source, current, previous) {\n this.source = source;\n this.current = current;\n this.previous = previous;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1jaGFuZ2UtZXZlbnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvbW9kZWxzL3NvcnQtY2hhbmdlLWV2ZW50Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE1BQU0sT0FBTyxvQkFBb0I7SUFDN0I7Ozs7O09BS0c7SUFDSCxZQUNXLE1BQWEsRUFDYixPQUF5QixFQUN6QixRQUEwQjtRQUYxQixXQUFNLEdBQU4sTUFBTSxDQUFPO1FBQ2IsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFDekIsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7SUFDbEMsQ0FBQztDQUNQIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sbGVjdGlvblNvcnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSAnLi4vdGFibGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNvcnRDaGFuZ2Uge1xuICAgIGN1cnJlbnQ6IENvbGxlY3Rpb25Tb3J0W107XG4gICAgcHJldmlvdXM6IENvbGxlY3Rpb25Tb3J0W107XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZVNvcnRDaGFuZ2VFdmVudCB7XG4gICAgLyoqXG4gICAgICogVGFibGUgc29ydCBjaGFuZ2UgZXZlbnRcbiAgICAgKiBAcGFyYW0gc291cmNlIFRhYmxlIGNvbXBvbmVudFxuICAgICAqIEBwYXJhbSBjdXJyZW50IEN1cnJlbnQgc29ydCAoZmllbGRzLCBkaXJlY3Rpb25zKVxuICAgICAqIEBwYXJhbSBwcmV2aW91cyBQcmV2aW91cyBzb3J0IChmaWVsZHMsIGRpcmVjdGlvbnMpXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBzb3VyY2U6IFRhYmxlLFxuICAgICAgICBwdWJsaWMgY3VycmVudDogQ29sbGVjdGlvblNvcnRbXSxcbiAgICAgICAgcHVibGljIHByZXZpb3VzOiBDb2xsZWN0aW9uU29ydFtdXG4gICAgKSB7fVxufVxuIl19","export class TableCellActivateEvent {\n /**\n * Table cell activate event\n * @param columnIndex Index of the clicked column\n * @param row Row that was activated\n */\n constructor(columnIndex, row) {\n this.columnIndex = columnIndex;\n this.row = row;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC1hY3RpdmF0ZS1ldmVudC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9tb2RlbHMvdGFibGUtY2VsbC1hY3RpdmF0ZS1ldmVudC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sc0JBQXNCO0lBQy9COzs7O09BSUc7SUFDSCxZQUNXLFdBQW1CLEVBQ25CLEdBQU07UUFETixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUNuQixRQUFHLEdBQUgsR0FBRyxDQUFHO0lBQ2QsQ0FBQztDQUNQIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFRhYmxlQ2VsbEFjdGl2YXRlRXZlbnQ8VD4ge1xuICAgIC8qKlxuICAgICAqIFRhYmxlIGNlbGwgYWN0aXZhdGUgZXZlbnRcbiAgICAgKiBAcGFyYW0gY29sdW1uSW5kZXggSW5kZXggb2YgdGhlIGNsaWNrZWQgY29sdW1uXG4gICAgICogQHBhcmFtIHJvdyBSb3cgdGhhdCB3YXMgYWN0aXZhdGVkXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBjb2x1bW5JbmRleDogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgcm93OiBUXG4gICAgKSB7fVxufVxuIl19","/** Common properties for table dialogs */\nexport {};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGlhbG9nLWNvbW1vbi1kYXRhLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzL21vZGVscy90YWJsZS1kaWFsb2ctY29tbW9uLWRhdGEubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMENBQTBDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIENvbW1vbiBwcm9wZXJ0aWVzIGZvciB0YWJsZSBkaWFsb2dzICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVEaWFsb2dDb21tb25EYXRhIHtcbiAgICAvLyBub3RoaW5nIGhlcmUgeWV0IC0gcGxhY2Vob2xkZXIgZm9yIHRzbGludFxuICAgIF9wbGFjZWhvbGRlcj86IHVua25vd247XG59XG4iXX0=","export class TableRowActivateEvent {\n /**\n * Table row activate event\n * @param index Index of the activated row\n * @param ctrlKey Whether control/command key was pressed during the mouse/keyboard event\n * @param row Row that was activated\n */\n constructor(index, ctrlKey, row) {\n this.index = index;\n this.ctrlKey = ctrlKey;\n this.row = row;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcm93LWFjdGl2YXRlLWV2ZW50Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzL21vZGVscy90YWJsZS1yb3ctYWN0aXZhdGUtZXZlbnQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLHFCQUFxQjtJQUM5Qjs7Ozs7T0FLRztJQUNILFlBQ1csS0FBYSxFQUNiLE9BQWdCLEVBQ2hCLEdBQU07UUFGTixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixRQUFHLEdBQUgsR0FBRyxDQUFHO0lBQ2QsQ0FBQztDQUNQIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFRhYmxlUm93QWN0aXZhdGVFdmVudDxUPiB7XG4gICAgLyoqXG4gICAgICogVGFibGUgcm93IGFjdGl2YXRlIGV2ZW50XG4gICAgICogQHBhcmFtIGluZGV4IEluZGV4IG9mIHRoZSBhY3RpdmF0ZWQgcm93XG4gICAgICogQHBhcmFtIGN0cmxLZXkgV2hldGhlciBjb250cm9sL2NvbW1hbmQga2V5IHdhcyBwcmVzc2VkIGR1cmluZyB0aGUgbW91c2Uva2V5Ym9hcmQgZXZlbnRcbiAgICAgKiBAcGFyYW0gcm93IFJvdyB0aGF0IHdhcyBhY3RpdmF0ZWRcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGluZGV4OiBudW1iZXIsXG4gICAgICAgIHB1YmxpYyBjdHJsS2V5OiBib29sZWFuLFxuICAgICAgICBwdWJsaWMgcm93OiBUXG4gICAgKSB7fVxufVxuIl19","export class TableRowToggleOpenStateEvent {\n /**\n * Table row toggle open state event\n * @param index Index of the row\n * @param row Row that was toggled\n * @param expanded Expanded state of the row\n */\n constructor(index, row, expanded) {\n this.index = index;\n this.row = row;\n this.expanded = expanded;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcm93LXRvZ2dsZS1vcGVuLXN0YXRlLWV2ZW50Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzL21vZGVscy90YWJsZS1yb3ctdG9nZ2xlLW9wZW4tc3RhdGUtZXZlbnQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLDRCQUE0QjtJQUNyQzs7Ozs7T0FLRztJQUNILFlBQ1csS0FBYSxFQUNiLEdBQU0sRUFDTixRQUFpQjtRQUZqQixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsUUFBRyxHQUFILEdBQUcsQ0FBRztRQUNOLGFBQVEsR0FBUixRQUFRLENBQVM7SUFDekIsQ0FBQztDQUNQIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFRhYmxlUm93VG9nZ2xlT3BlblN0YXRlRXZlbnQ8VD4ge1xuICAgIC8qKlxuICAgICAqIFRhYmxlIHJvdyB0b2dnbGUgb3BlbiBzdGF0ZSBldmVudFxuICAgICAqIEBwYXJhbSBpbmRleCBJbmRleCBvZiB0aGUgcm93XG4gICAgICogQHBhcmFtIHJvdyBSb3cgdGhhdCB3YXMgdG9nZ2xlZFxuICAgICAqIEBwYXJhbSBleHBhbmRlZCBFeHBhbmRlZCBzdGF0ZSBvZiB0aGUgcm93XG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBpbmRleDogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgcm93OiBULFxuICAgICAgICBwdWJsaWMgZXhwYW5kZWQ6IGJvb2xlYW5cbiAgICApIHt9XG59XG4iXX0=","export class TableRowsRearrangeEvent {\n /**\n * Table rows rearrange event\n * @param row Row that was rearranged\n * @param dropRow Row where the dragged item has been dropped\n * @param previousIndex Previous index of the row\n * @param newIndex New index of the row\n * @param insertAt Whether dragged the row was inserted before or after the dropped row\n * @param mode Whether the dropped element shifts other items or is grouped with them\n * @param rows All rows of the table in the state they exist on the datasource\n */\n constructor(row, dropRow, previousIndex, newIndex, insertAt, mode, rows) {\n this.row = row;\n this.dropRow = dropRow;\n this.previousIndex = previousIndex;\n this.newIndex = newIndex;\n this.insertAt = insertAt;\n this.mode = mode;\n this.rows = rows;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcm93cy1yZWFycmFuZ2UtZXZlbnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvbW9kZWxzL3RhYmxlLXJvd3MtcmVhcnJhbmdlLWV2ZW50Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyx1QkFBdUI7SUFDaEM7Ozs7Ozs7OztPQVNHO0lBQ0gsWUFDVyxHQUFNLEVBQ04sT0FBVSxFQUNWLGFBQXFCLEVBQ3JCLFFBQWdCLEVBQ2hCLFFBQW1DLEVBQ25DLElBQXdCLEVBQ3hCLElBQVM7UUFOVCxRQUFHLEdBQUgsR0FBRyxDQUFHO1FBQ04sWUFBTyxHQUFQLE9BQU8sQ0FBRztRQUNWLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBQ3JCLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsYUFBUSxHQUFSLFFBQVEsQ0FBMkI7UUFDbkMsU0FBSSxHQUFKLElBQUksQ0FBb0I7UUFDeEIsU0FBSSxHQUFKLElBQUksQ0FBSztJQUNqQixDQUFDO0NBQ1AiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGZERuZERyb3BFdmVudE1vZGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBUYWJsZVJvd3NSZWFycmFuZ2VFdmVudDxUPiB7XG4gICAgLyoqXG4gICAgICogVGFibGUgcm93cyByZWFycmFuZ2UgZXZlbnRcbiAgICAgKiBAcGFyYW0gcm93IFJvdyB0aGF0IHdhcyByZWFycmFuZ2VkXG4gICAgICogQHBhcmFtIGRyb3BSb3cgUm93IHdoZXJlIHRoZSBkcmFnZ2VkIGl0ZW0gaGFzIGJlZW4gZHJvcHBlZFxuICAgICAqIEBwYXJhbSBwcmV2aW91c0luZGV4IFByZXZpb3VzIGluZGV4IG9mIHRoZSByb3dcbiAgICAgKiBAcGFyYW0gbmV3SW5kZXggTmV3IGluZGV4IG9mIHRoZSByb3dcbiAgICAgKiBAcGFyYW0gaW5zZXJ0QXQgV2hldGhlciBkcmFnZ2VkIHRoZSByb3cgd2FzIGluc2VydGVkIGJlZm9yZSBvciBhZnRlciB0aGUgZHJvcHBlZCByb3dcbiAgICAgKiBAcGFyYW0gbW9kZSBXaGV0aGVyIHRoZSBkcm9wcGVkIGVsZW1lbnQgc2hpZnRzIG90aGVyIGl0ZW1zIG9yIGlzIGdyb3VwZWQgd2l0aCB0aGVtXG4gICAgICogQHBhcmFtIHJvd3MgQWxsIHJvd3Mgb2YgdGhlIHRhYmxlIGluIHRoZSBzdGF0ZSB0aGV5IGV4aXN0IG9uIHRoZSBkYXRhc291cmNlXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByb3c6IFQsXG4gICAgICAgIHB1YmxpYyBkcm9wUm93OiBULFxuICAgICAgICBwdWJsaWMgcHJldmlvdXNJbmRleDogbnVtYmVyLFxuICAgICAgICBwdWJsaWMgbmV3SW5kZXg6IG51bWJlcixcbiAgICAgICAgcHVibGljIGluc2VydEF0OiAnYmVmb3JlJyB8ICdhZnRlcicgfCBudWxsLFxuICAgICAgICBwdWJsaWMgbW9kZTogRmREbmREcm9wRXZlbnRNb2RlLFxuICAgICAgICBwdWJsaWMgcm93czogVFtdXG4gICAgKSB7fVxufVxuIl19","import { DOWN_ARROW, END, HOME, LEFT_ARROW, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { ChangeDetectorRef, Directive, EventEmitter, forwardRef, HostBinding, inject, Input, NgZone, Output } from '@angular/core';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { take } from 'rxjs/operators';\nimport { FDP_TABLE_DRAGGABLE_DIRECTIVE } from '../constants';\nimport { TableRowType } from '../enums';\nimport { findRowChildren, getRowParents } from '../helpers';\nimport { TableRowsRearrangeEvent } from '../models';\nimport { TableDraggable } from '../models/directives';\nimport * as i0 from \"@angular/core\";\nexport class TableDraggableDirective extends TableDraggable {\n constructor() {\n super(...arguments);\n /** Whether to allow for row reordering on tree tables via drag and drop. */\n this.enableRowReordering = true;\n /** Whether tree mode is enabled. */\n this.isTreeTable = false;\n /**\n * Row drop mode.\n */\n this.dropMode = 'auto';\n /** Event fired when tree rows rearranged through drag & drop. Consider that rows rearranged with their children rows. */\n this.rowsRearrange = new EventEmitter();\n /** @hidden */\n this.dragDropInProgress = false;\n /** @hidden */\n this._ngZone = inject(NgZone);\n /** @hidden */\n this._cdr = inject(ChangeDetectorRef, {\n host: true\n });\n }\n /** @hidden */\n get _rowsDraggable() {\n return this.isTreeTable && this.enableRowReordering;\n }\n /** @hidden */\n ngOnDestroy() {\n this._setDragInProgress(false);\n }\n /** Sets table reference. */\n setTable(table) {\n this._table = table;\n }\n /**\n * Initiates drag&drop sequence.\n */\n dragDropStart() {\n this._setDragInProgress(true);\n }\n /** Method called when dnd performed with the keyboard. */\n dragRowFromKeyboard(dir, event, currentRowIndex, mode) {\n if (!this._rowsDraggable) {\n return;\n }\n event.preventDefault();\n let replacedIndex;\n dir === 'up' ? (replacedIndex = currentRowIndex - 1) : (replacedIndex = currentRowIndex + 1);\n if (this._table._tableRowsVisible[replacedIndex]) {\n const dragDropEvent = {\n items: this._table._tableRowsVisible,\n draggedItemIndex: currentRowIndex,\n replacedItemIndex: replacedIndex,\n insertAt: dir === 'down' ? 'after' : 'before',\n mode\n };\n this.dragDropItemDrop(dragDropEvent);\n setTimeout(() => {\n event.target.focus();\n });\n }\n }\n /** Method called when drag&drop event being cancelled. */\n dropCancelled() {\n /** After timeout to make click event handled first */\n this._ngZone.runOutsideAngular(() => {\n setTimeout(() => this._setDragInProgress(false));\n });\n }\n /** Method called when dragged item being dropped. */\n dragDropItemDrop(event) {\n /** After timeout to make click event handled first */\n this._ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n this._setDragInProgress(false);\n });\n });\n this._onZoneFree(() => {\n if (this.isTreeTable && event.draggedItemIndex !== event.replacedItemIndex) {\n event.draggedItemIndex = this._table._tableCurrentlyRenderedRowsPlaceholder[event.draggedItemIndex];\n event.replacedItemIndex = this._table._tableCurrentlyRenderedRowsPlaceholder[event.replacedItemIndex];\n const dragRow = this._table._tableRows.find((row) => row === this._table._tableRowsVisible[event.draggedItemIndex]);\n const dropRow = this._table._tableRows.find((row) => row === this._table._tableRowsVisible[event.replacedItemIndex]);\n if (!dragRow || !dropRow || this._isDroppedInsideItself(dropRow, dragRow)) {\n return;\n }\n this._dragDropUpdateDragParentRowAttributes(dragRow);\n this._dragDropRearrangeTreeRows(dragRow, dropRow, event);\n this._dragDropUpdateDropRowAttributes(dragRow, dropRow, event.mode);\n if (!dropRow.expanded && event.mode === 'group') {\n this._table.toggleExpandableTableRow(dropRow, true);\n }\n else {\n this._table.onTableRowsChanged();\n }\n this._cdr.detectChanges();\n this._emitRowsRearrangeEvent(dragRow, dropRow, event);\n this._table.refreshDndList();\n }\n });\n }\n /**\n * @hidden\n * Create table rows rearrange event\n */\n _emitRowsRearrangeEvent(row, dropRow, event) {\n const rows = [];\n this._table._tableRows.forEach((r, index) => {\n r.index = index;\n rows.push(r.value);\n });\n this.rowsRearrange.emit(new TableRowsRearrangeEvent(row.value, dropRow.value, event.draggedItemIndex, event.replacedItemIndex, event.insertAt, event.mode, rows));\n }\n /** @hidden */\n _setDragInProgress(dragging) {\n this.dragDropInProgress = dragging;\n dragging ? this._blockScrolling() : this._enableScrolling();\n }\n /** @hidden */\n _isDroppedInsideItself(dropRow, dragRow) {\n const dropRowParents = getRowParents(dropRow);\n return !!dropRowParents.find((row) => row === dragRow);\n }\n /** @hidden */\n _dragDropUpdateDragParentRowAttributes(dragRow) {\n const parentRow = dragRow.parent;\n if (!parentRow) {\n return;\n }\n const parentRowChildren = findRowChildren(parentRow, this._table._tableRows);\n const dragRowChildren = findRowChildren(dragRow, this._table._tableRows);\n if (parentRowChildren.length - (dragRowChildren.length + 1) === 0) {\n parentRow.setRowType(TableRowType.ITEM);\n }\n }\n /** @hidden */\n _dragDropUpdateDropRowAttributes(dragRow, dropRow, mode) {\n if (dragRow.parent) {\n // Remove child row from previous parent row.\n dragRow.parent.children.splice(dragRow.parent.children.indexOf(dragRow), 1);\n }\n dragRow.level = dropRow.level + (mode === 'group' ? 1 : 0);\n if (mode === 'group') {\n dragRow.parent = dropRow;\n if (!dropRow.isTree) {\n dropRow.setRowType(TableRowType.TREE);\n }\n dropRow.children.push(dragRow);\n dropRow.lastChild = dragRow;\n }\n else {\n dragRow.parent = dropRow.parent;\n dropRow.parent?.children.push(dragRow);\n if (dropRow.parent) {\n dropRow.parent.lastChild = dragRow;\n }\n }\n const children = findRowChildren(dragRow, this._table._tableRows);\n children.forEach((row) => {\n row.level = getRowParents(row).length;\n });\n }\n /** @hidden */\n _dragDropRearrangeTreeRows(dragRow, dropRow, event) {\n if (event.mode === 'shift') {\n this._handleShiftDropAction(dragRow, dropRow, event);\n }\n else {\n this._handleReplaceDropAction(dragRow, dropRow);\n }\n }\n /** @hidden */\n _getNewDragDropRowsPosition(dragRow, dropRow) {\n const allRows = this._table._tableRows;\n const dragRowIndex = allRows.findIndex((row) => row === dragRow);\n const dragRowChildren = findRowChildren(dragRow, this._table._tableRows);\n const rowsToMove = allRows.splice(dragRowIndex, dragRowChildren.length + 1);\n const dropRowIndex = allRows.findIndex((row) => row === dropRow);\n const dropRowChildren = findRowChildren(dropRow, this._table._tableRows);\n const dropRowItemsLength = dropRowChildren.length + 1;\n const rowsAfterDropRow = allRows.splice(dropRowIndex + dropRowItemsLength, allRows.length + dropRowItemsLength);\n const dropRowItems = allRows.splice(dropRowIndex, dropRowItemsLength);\n return {\n allRows,\n rowsToMove,\n rowsAfterDropRow,\n dropRowItems\n };\n }\n /** @hidden */\n _handleShiftDropAction(dragRow, dropRow, event) {\n const { allRows, rowsToMove, rowsAfterDropRow, dropRowItems } = this._getNewDragDropRowsPosition(dragRow, dropRow);\n this._table._tableRows = [\n ...allRows,\n ...(event.insertAt === 'after' ? dropRowItems : []),\n ...rowsToMove,\n ...(event.insertAt === 'after' ? [] : dropRowItems),\n ...rowsAfterDropRow\n ];\n }\n /** @hidden */\n _handleReplaceDropAction(dragRow, dropRow) {\n const { allRows, rowsToMove, rowsAfterDropRow, dropRowItems } = this._getNewDragDropRowsPosition(dragRow, dropRow);\n this._table._tableRows = [...allRows, ...dropRowItems, ...rowsToMove, ...rowsAfterDropRow];\n }\n /** @hidden */\n _onZoneFree(callback) {\n this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(() => {\n callback();\n });\n }\n /** @hidden */\n _blockScrolling() {\n this._table._focusableGrid._preventKeydown = true;\n this._table.tableContainer.nativeElement.addEventListener('DOMMouseScroll', preventDefault, false);\n this._table.tableContainer.nativeElement.addEventListener('wheel', preventDefault, { passive: false });\n this._table.tableContainer.nativeElement.addEventListener('mousewheel', preventDefault, { passive: false });\n this._table.tableContainer.nativeElement.addEventListener('touchmove', preventDefault, { passive: false });\n this._table.tableContainer.nativeElement.addEventListener('keydown', preventDefaultForScrollKeys, false);\n }\n /** @hidden */\n _enableScrolling() {\n this._table._focusableGrid._preventKeydown = false;\n this._table.tableContainer.nativeElement.removeEventListener('DOMMouseScroll', preventDefault, false);\n this._table.tableContainer.nativeElement.removeEventListener('wheel', preventDefault);\n this._table.tableContainer.nativeElement.removeEventListener('mousewheel', preventDefault);\n this._table.tableContainer.nativeElement.removeEventListener('touchmove', preventDefault);\n this._table.tableContainer.nativeElement.removeEventListener('keydown', preventDefaultForScrollKeys, false);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableDraggableDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: TableDraggableDirective, isStandalone: true, selector: \"fdp-table[isTreeTable], fdp-table[enableRowReordering]\", inputs: { enableRowReordering: \"enableRowReordering\", isTreeTable: \"isTreeTable\", dropMode: \"dropMode\", dropPredicate: \"dropPredicate\", dragoverPredicate: \"dragoverPredicate\" }, outputs: { rowsRearrange: \"rowsRearrange\" }, host: { properties: { \"class.fd-table--tree\": \"this.isTreeTable\" } }, providers: [\n {\n provide: FDP_TABLE_DRAGGABLE_DIRECTIVE,\n useExisting: forwardRef(() => TableDraggableDirective)\n }\n ], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableDraggableDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fdp-table[isTreeTable], fdp-table[enableRowReordering]',\n standalone: true,\n providers: [\n {\n provide: FDP_TABLE_DRAGGABLE_DIRECTIVE,\n useExisting: forwardRef(() => TableDraggableDirective)\n }\n ]\n }]\n }], propDecorators: { enableRowReordering: [{\n type: Input\n }], isTreeTable: [{\n type: HostBinding,\n args: ['class.fd-table--tree']\n }, {\n type: Input\n }], dropMode: [{\n type: Input\n }], dropPredicate: [{\n type: Input\n }], dragoverPredicate: [{\n type: Input\n }], rowsRearrange: [{\n type: Output\n }] } });\nfunction preventDefault(event) {\n event.preventDefault();\n}\nfunction preventDefaultForScrollKeys(event) {\n if (!event.altKey &&\n KeyUtil.isKeyCode(event, [LEFT_ARROW, RIGHT_ARROW, UP_ARROW, DOWN_ARROW, SPACE, PAGE_DOWN, PAGE_UP, END, HOME])) {\n preventDefault(event);\n return false;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZHJhZ2dhYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9kaXJlY3RpdmVzL3RhYmxlLWRyYWdnYWJsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFVBQVUsRUFDVixHQUFHLEVBQ0gsSUFBSSxFQUNKLFVBQVUsRUFDVixTQUFTLEVBQ1QsT0FBTyxFQUNQLFdBQVcsRUFDWCxLQUFLLEVBQ0wsUUFBUSxFQUNYLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUNILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBRU4sTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFNSCxPQUFPLEVBQ1YsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDeEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDNUQsT0FBTyxFQUFZLHVCQUF1QixFQUEwQixNQUFNLFdBQVcsQ0FBQztBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBY3RELE1BQU0sT0FBTyx1QkFBaUMsU0FBUSxjQUFpQjtJQVh2RTs7UUFZSSw0RUFBNEU7UUFFNUUsd0JBQW1CLEdBQUcsSUFBSSxDQUFDO1FBRTNCLG9DQUFvQztRQUdwQyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVwQjs7V0FFRztRQUVILGFBQVEsR0FBa0IsTUFBTSxD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RCxTQUFTLDJCQUEyQixDQUFDLEtBQW9CO0lBQ3JELElBQ0ksQ0FBQyxLQUFLLENBQUMsTUFBTTtRQUNiLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUNqSCxDQUFDO1FBQ0MsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBET1dOX0FSUk9XLFxuICAgIEVORCxcbiAgICBIT01FLFxuICAgIExFRlRfQVJST1csXG4gICAgUEFHRV9ET1dOLFxuICAgIFBBR0VfVVAsXG4gICAgUklHSFRfQVJST1csXG4gICAgU1BBQ0UsXG4gICAgVVBfQVJST1dcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgRHJhZ292ZXJQcmVkaWNhdGUsXG4gICAgRHJvcFByZWRpY2F0ZSxcbiAgICBGZERuZERyb3BFdmVudE1vZGUsXG4gICAgRmREbmREcm9wVHlwZSxcbiAgICBGZERyb3BFdmVudCxcbiAgICBLZXlVdGlsXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGRFBfVEFCTEVfRFJBR0dBQkxFX0RJUkVDVElWRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUYWJsZVJvd1R5cGUgfSBmcm9tICcuLi9lbnVtcyc7XG5pbXBvcnQgeyBmaW5kUm93Q2hpbGRyZW4sIGdldFJvd1BhcmVudHMgfSBmcm9tICcuLi9oZWxwZXJzJztcbmltcG9ydCB7IFRhYmxlUm93LCBUYWJsZVJvd3NSZWFycmFuZ2VFdmVudCwgVXBkYXRlZERuZFJvd3NQb3NpdGlvbiB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBUYWJsZURyYWdnYWJsZSB9IGZyb20gJy4uL21vZGVscy9kaXJlY3RpdmVzJztcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSAnLi4vdGFibGUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnZmRwLXRhYmxlW2lzVHJlZVRhYmxlXSwgZmRwLXRhYmxlW2VuYWJsZVJvd1Jlb3JkZXJpbmddJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRFBfVEFCTEVfRFJBR0dBQkxFX0RJUkVDVElWRSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRhYmxlRHJhZ2dhYmxlRGlyZWN0aXZlKVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZURyYWdnYWJsZURpcmVjdGl2ZTxUID0gYW55PiBleHRlbmRzIFRhYmxlRHJhZ2dhYmxlPFQ+IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICAvKiogV2hldGhlciB0byBhbGxvdyBmb3Igcm93IHJlb3JkZXJpbmcgb24gdHJlZSB0YWJsZXMgdmlhIGRyYWcgYW5kIGRyb3AuICovXG4gICAgQElucHV0KClcbiAgICBlbmFibGVSb3dSZW9yZGVyaW5nID0gdHJ1ZTtcblxuICAgIC8qKiBXaGV0aGVyIHRyZWUgbW9kZSBpcyBlbmFibGVkLiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZmQtdGFibGUtLXRyZWUnKVxuICAgIEBJbnB1dCgpXG4gICAgaXNUcmVlVGFibGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFJvdyBkcm9wIG1vZGUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBkcm9wTW9kZTogRmREbmREcm9wVHlwZSA9ICdhdXRvJztcblxuICAgIC8qKiBQcmVkaWNhdGUgZnVuY3Rpb24gdGhhdCBjaGVja3Mgd2hldGhlciB0aGUgaXRlbSBjYW4gYmUgZHJvcHBlZCBvdmVyIGFub3RoZXIgaXRlbS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRyb3BQcmVkaWNhdGU6IERyb3BQcmVkaWNhdGU8VGFibGVSb3c8VD4+O1xuXG4gICAgLyoqXG4gICAgICogUHJlZGljYXRlIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIHdoZXRoZXIgdGhlIGl0ZW0gY2FuIGJlIGRyYWdnZWQgb3ZlciBhbm90aGVyIGl0ZW0uXG4gICAgICogSWYgdGhlIGZ1bmN0aW9uIHJldHVybnMgYGZhbHNlYCwgZHJhZ2dlZCBvdmVyIGl0ZW0gd2lsbCBub3QgYmUgaGlnaGxpZ2h0ZWQsIGFuZCBkcm9wIGV2ZW50IHdpbGwgYmUgY2FuY2VsZWQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBkcmFnb3ZlclByZWRpY2F0ZTogRHJhZ292ZXJQcmVkaWNhdGU8VGFibGVSb3c8VD4+O1xuXG4gICAgLyoqIEV2ZW50IGZpcmVkIHdoZW4gdHJlZSByb3dzIHJlYXJyYW5nZWQgdGhyb3VnaCBkcmFnICYgZHJvcC4gQ29uc2lkZXIgdGhhdCByb3dzIHJlYXJyYW5nZWQgd2l0aCB0aGVpciBjaGlsZHJlbiByb3dzLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IHJvd3NSZWFycmFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlUm93c1JlYXJyYW5nZUV2ZW50PFQ+PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX3Jvd3NEcmFnZ2FibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVHJlZVRhYmxlICYmIHRoaXMuZW5hYmxlUm93UmVvcmRlcmluZztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGRyYWdEcm9wSW5Qcm9ncmVzcyA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90YWJsZTogVGFibGU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX25nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYsIHtcbiAgICAgICAgaG9zdDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0RHJhZ0luUHJvZ3Jlc3MoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBTZXRzIHRhYmxlIHJlZmVyZW5jZS4gKi9cbiAgICBzZXRUYWJsZSh0YWJsZTogVGFibGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFibGUgPSB0YWJsZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWF0ZXMgZHJhZyZkcm9wIHNlcXVlbmNlLlxuICAgICAqL1xuICAgIGRyYWdEcm9wU3RhcnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NldERyYWdJblByb2dyZXNzKHRydWUpO1xuICAgIH1cblxuICAgIC8qKiBNZXRob2QgY2FsbGVkIHdoZW4gZG5kIHBlcmZvcm1lZCB3aXRoIHRoZSBrZXlib2FyZC4gKi9cbiAgICBkcmFnUm93RnJvbUtleWJvYXJkKGRpcjogc3RyaW5nLCBldmVudDogRXZlbnQsIGN1cnJlbnRSb3dJbmRleDogbnVtYmVyLCBtb2RlOiAnc2hpZnQnIHwgJ2dyb3VwJyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3Jvd3NEcmFnZ2FibGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBsZXQgcmVwbGFjZWRJbmRleDtcbiAgICAgICAgZGlyID09PSAndXAnID8gKHJlcGxhY2VkSW5kZXggPSBjdXJyZW50Um93SW5kZXggLSAxKSA6IChyZXBsYWNlZEluZGV4ID0gY3VycmVudFJvd0luZGV4ICsgMSk7XG5cbiAgICAgICAgaWYgKHRoaXMuX3RhYmxlLl90YWJsZVJvd3NWaXNpYmxlW3JlcGxhY2VkSW5kZXhdKSB7XG4gICAgICAgICAgICBjb25zdCBkcmFnRHJvcEV2ZW50OiBGZERyb3BFdmVudDxUYWJsZVJvdzxUPj4gPSB7XG4gICAgICAgICAgICAgICAgaXRlbXM6IHRoaXMuX3RhYmxlLl90YWJsZVJvd3NWaXNpYmxlLFxuICAgICAgICAgICAgICAgIGRyYWdnZWRJdGVtSW5kZXg6IGN1cnJlbnRSb3dJbmRleCxcbiAgICAgICAgICAgICAgICByZXBsYWNlZEl0ZW1JbmRleDogcmVwbGFjZWRJbmRleCxcbiAgICAgICAgICAgICAgICBpbnNlcnRBdDogZGlyID09PSAnZG93bicgPyAnYWZ0ZXInIDogJ2JlZm9yZScsXG4gICAgICAgICAgICAgICAgbW9kZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuZHJhZ0Ryb3BJdGVtRHJvcChkcmFnRHJvcEV2ZW50KTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmZvY3VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBNZXRob2QgY2FsbGVkIHdoZW4gZHJhZyZkcm9wIGV2ZW50IGJlaW5nIGNhbmNlbGxlZC4gKi9cbiAgICBkcm9wQ2FuY2VsbGVkKCk6IHZvaWQge1xuICAgICAgICAvKiogQWZ0ZXIgdGltZW91dCB0byBtYWtlIGNsaWNrIGV2ZW50IGhhbmRsZWQgZmlyc3QgKi9cbiAgICAgICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fc2V0RHJhZ0luUHJvZ3Jlc3MoZmFsc2UpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCBjYWxsZWQgd2hlbiBkcmFnZ2VkIGl0ZW0gYmVpbmcgZHJvcHBlZC4gKi9cbiAgICBkcmFnRHJvcEl0ZW1Ecm9wKGV2ZW50OiBGZERyb3BFdmVudDxUYWJsZVJvdz4pOiB2b2lkIHtcbiAgICAgICAgLyoqIEFmdGVyIHRpbWVvdXQgdG8gbWFrZSBjbGljayBldmVudCBoYW5kbGVkIGZpcnN0ICovXG4gICAgICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXREcmFnSW5Qcm9ncmVzcyhmYWxzZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fb25ab25lRnJlZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1RyZWVUYWJsZSAmJiBldmVudC5kcmFnZ2VkSXRlbUluZGV4ICE9PSBldmVudC5yZXBsYWNlZEl0ZW1JbmRleCkge1xuICAgICAgICAgICAgICAgIGV2ZW50LmRyYWdnZWRJdGVtSW5kZXggPSB0aGlzLl90YWJsZS5fdGFibGVDdXJyZW50bHlSZW5kZXJlZFJvd3NQbGFjZWhvbGRlcltldmVudC5kcmFnZ2VkSXRlbUluZGV4XTtcbiAgICAgICAgICAgICAgICBldmVudC5yZXBsYWNlZEl0ZW1JbmRleCA9IHRoaXMuX3RhYmxlLl90YWJsZUN1cnJlbnRseVJlbmRlcmVkUm93c1BsYWNlaG9sZGVyW2V2ZW50LnJlcGxhY2VkSXRlbUluZGV4XTtcbiAgICAgICAgICAgICAgICBjb25zdCBkcmFnUm93ID0gdGhpcy5fdGFibGUuX3RhYmxlUm93cy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAocm93KSA9PiByb3cgPT09IHRoaXMuX3RhYmxlLl90YWJsZVJvd3NWaXNpYmxlW2V2ZW50LmRyYWdnZWRJdGVtSW5kZXhdXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBkcm9wUm93ID0gdGhpcy5fdGFibGUuX3RhYmxlUm93cy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAocm93KSA9PiByb3cgPT09IHRoaXMuX3RhYmxlLl90YWJsZVJvd3NWaXNpYmxlW2V2ZW50LnJlcGxhY2VkSXRlbUluZGV4XVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWRyYWdSb3cgfHwgIWRyb3BSb3cgfHwgdGhpcy5faXNEcm9wcGVkSW5zaWRlSXRzZWxmKGRyb3BSb3csIGRyYWdSb3cpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5fZHJhZ0Ryb3BVcGRhdGVEcmFnUGFyZW50Um93QXR0cmlidXRlcyhkcmFnUm93KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9kcmFnRHJvcFJlYXJyYW5nZVRyZWVSb3dzKGRyYWdSb3csIGRyb3BSb3csIGV2ZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9kcmFnRHJvcFVwZGF0ZURyb3BSb3dBdHRyaWJ1dGVzKGRyYWdSb3csIGRyb3BSb3csIGV2ZW50Lm1vZGUpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFkcm9wUm93LmV4cGFuZGVkICYmIGV2ZW50Lm1vZGUgPT09ICdncm91cCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGFibGUudG9nZ2xlRXhwYW5kYWJsZVRhYmxlUm93KGRyb3BSb3csIHRydWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlLm9uVGFibGVSb3dzQ2hhbmdlZCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdFJvd3NSZWFycmFuZ2VFdmVudChkcmFnUm93LCBkcm9wUm93LCBldmVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fdGFibGUucmVmcmVzaERuZExpc3QoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIENyZWF0ZSB0YWJsZSByb3dzIHJlYXJyYW5nZSBldmVudFxuICAgICAqL1xuICAgIF9lbWl0Um93c1JlYXJyYW5nZUV2ZW50KHJvdzogVGFibGVSb3csIGRyb3BSb3c6IFRhYmxlUm93LCBldmVudDogRmREcm9wRXZlbnQ8VGFibGVSb3c+KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJvd3M6IGFueVtdID0gW107XG5cbiAgICAgICAgdGhpcy5fdGFibGUuX3RhYmxlUm93cy5mb3JFYWNoKChyLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgci5pbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgcm93cy5wdXNoKHIudmFsdWUpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnJvd3NSZWFycmFuZ2UuZW1pdChcbiAgICAgICAgICAgIG5ldyBUYWJsZVJvd3NSZWFycmFuZ2VFdmVudChcbiAgICAgICAgICAgICAgICByb3cudmFsdWUsXG4gICAgICAgICAgICAgICAgZHJvcFJvdy52YWx1ZSxcbiAgICAgICAgICAgICAgICBldmVudC5kcmFnZ2VkSXRlbUluZGV4LFxuICAgICAgICAgICAgICAgIGV2ZW50LnJlcGxhY2VkSXRlbUluZGV4LFxuICAgICAgICAgICAgICAgIGV2ZW50Lmluc2VydEF0LFxuICAgICAgICAgICAgICAgIGV2ZW50Lm1vZGUsXG4gICAgICAgICAgICAgICAgcm93c1xuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0RHJhZ0luUHJvZ3Jlc3MoZHJhZ2dpbmc6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kcmFnRHJvcEluUHJvZ3Jlc3MgPSBkcmFnZ2luZztcbiAgICAgICAgZHJhZ2dpbmcgPyB0aGlzLl9ibG9ja1Njcm9sbGluZygpIDogdGhpcy5fZW5hYmxlU2Nyb2xsaW5nKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc0Ryb3BwZWRJbnNpZGVJdHNlbGYoZHJvcFJvdzogVGFibGVSb3csIGRyYWdSb3c6IFRhYmxlUm93KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGRyb3BSb3dQYXJlbnRzID0gZ2V0Um93UGFyZW50cyhkcm9wUm93KTtcbiAgICAgICAgcmV0dXJuICEhZHJvcFJvd1BhcmVudHMuZmluZCgocm93KSA9PiByb3cgPT09IGRyYWdSb3cpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZHJhZ0Ryb3BVcGRhdGVEcmFnUGFyZW50Um93QXR0cmlidXRlcyhkcmFnUm93OiBUYWJsZVJvdyk6IHZvaWQge1xuICAgICAgICBjb25zdCBwYXJlbnRSb3cgPSBkcmFnUm93LnBhcmVudDtcblxuICAgICAgICBpZiAoIXBhcmVudFJvdykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFyZW50Um93Q2hpbGRyZW4gPSBmaW5kUm93Q2hpbGRyZW4ocGFyZW50Um93LCB0aGlzLl90YWJsZS5fdGFibGVSb3dzKTtcbiAgICAgICAgY29uc3QgZHJhZ1Jvd0NoaWxkcmVuID0gZmluZFJvd0NoaWxkcmVuKGRyYWdSb3csIHRoaXMuX3RhYmxlLl90YWJsZVJvd3MpO1xuXG4gICAgICAgIGlmIChwYXJlbnRSb3dDaGlsZHJlbi5sZW5ndGggLSAoZHJhZ1Jvd0NoaWxkcmVuLmxlbmd0aCArIDEpID09PSAwKSB7XG4gICAgICAgICAgICBwYXJlbnRSb3cuc2V0Um93VHlwZShUYWJsZVJvd1R5cGUuSVRFTSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RyYWdEcm9wVXBkYXRlRHJvcFJvd0F0dHJpYnV0ZXMoZHJhZ1JvdzogVGFibGVSb3csIGRyb3BSb3c6IFRhYmxlUm93LCBtb2RlOiBGZERuZERyb3BFdmVudE1vZGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKGRyYWdSb3cucGFyZW50KSB7XG4gICAgICAgICAgICAvLyBSZW1vdmUgY2hpbGQgcm93IGZyb20gcHJldmlvdXMgcGFyZW50IHJvdy5cbiAgICAgICAgICAgIGRyYWdSb3cucGFyZW50LmNoaWxkcmVuLnNwbGljZShkcmFnUm93LnBhcmVudC5jaGlsZHJlbi5pbmRleE9mKGRyYWdSb3cpLCAxKTtcbiAgICAgICAgfVxuICAgICAgICBkcmFnUm93LmxldmVsID0gZHJvcFJvdy5sZXZlbCArIChtb2RlID09PSAnZ3JvdXAnID8gMSA6IDApO1xuXG4gICAgICAgIGlmIChtb2RlID09PSAnZ3JvdXAnKSB7XG4gICAgICAgICAgICBkcmFnUm93LnBhcmVudCA9IGRyb3BSb3c7XG4gICAgICAgICAgICBpZiAoIWRyb3BSb3cuaXNUcmVlKSB7XG4gICAgICAgICAgICAgICAgZHJvcFJvdy5zZXRSb3dUeXBlKFRhYmxlUm93VHlwZS5UUkVFKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZHJvcFJvdy5jaGlsZHJlbi5wdXNoKGRyYWdSb3cpO1xuICAgICAgICAgICAgZHJvcFJvdy5sYXN0Q2hpbGQgPSBkcmFnUm93O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZHJhZ1Jvdy5wYXJlbnQgPSBkcm9wUm93LnBhcmVudDtcbiAgICAgICAgICAgIGRyb3BSb3cucGFyZW50Py5jaGlsZHJlbi5wdXNoKGRyYWdSb3cpO1xuICAgICAgICAgICAgaWYgKGRyb3BSb3cucGFyZW50KSB7XG4gICAgICAgICAgICAgICAgZHJvcFJvdy5wYXJlbnQubGFzdENoaWxkID0gZHJhZ1JvdztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gZmluZFJvd0NoaWxkcmVuKGRyYWdSb3csIHRoaXMuX3RhYmxlLl90YWJsZVJvd3MpO1xuICAgICAgICBjaGlsZHJlbi5mb3JFYWNoKChyb3cpID0+IHtcbiAgICAgICAgICAgIHJvdy5sZXZlbCA9IGdldFJvd1BhcmVudHMocm93KS5sZW5ndGg7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZHJhZ0Ryb3BSZWFycmFuZ2VUcmVlUm93cyhkcmFnUm93OiBUYWJsZVJvdywgZHJvcFJvdzogVGFibGVSb3csIGV2ZW50OiBGZERyb3BFdmVudDxUYWJsZVJvdz4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50Lm1vZGUgPT09ICdzaGlmdCcpIHtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZVNoaWZ0RHJvcEFjdGlvbihkcmFnUm93LCBkcm9wUm93LCBldmVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGVSZXBsYWNlRHJvcEFjdGlvbihkcmFnUm93LCBkcm9wUm93KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0TmV3RHJhZ0Ryb3BSb3dzUG9zaXRpb24oZHJhZ1JvdzogVGFibGVSb3csIGRyb3BSb3c6IFRhYmxlUm93KTogVXBkYXRlZERuZFJvd3NQb3NpdGlvbiB7XG4gICAgICAgIGNvbnN0IGFsbFJvd3MgPSB0aGlzLl90YWJsZS5fdGFibGVSb3dzO1xuXG4gICAgICAgIGNvbnN0IGRyYWdSb3dJbmRleCA9IGFsbFJvd3MuZmluZEluZGV4KChyb3cpID0+IHJvdyA9PT0gZHJhZ1Jvdyk7XG4gICAgICAgIGNvbnN0IGRyYWdSb3dDaGlsZHJlbiA9IGZpbmRSb3dDaGlsZHJlbihkcmFnUm93LCB0aGlzLl90YWJsZS5fdGFibGVSb3dzKTtcblxuICAgICAgICBjb25zdCByb3dzVG9Nb3ZlID0gYWxsUm93cy5zcGxpY2UoZHJhZ1Jvd0luZGV4LCBkcmFnUm93Q2hpbGRyZW4ubGVuZ3RoICsgMSk7XG5cbiAgICAgICAgY29uc3QgZHJvcFJvd0luZGV4ID0gYWxsUm93cy5maW5kSW5kZXgoKHJvdykgPT4gcm93ID09PSBkcm9wUm93KTtcbiAgICAgICAgY29uc3QgZHJvcFJvd0NoaWxkcmVuID0gZmluZFJvd0NoaWxkcmVuKGRyb3BSb3csIHRoaXMuX3RhYmxlLl90YWJsZVJvd3MpO1xuXG4gICAgICAgIGNvbnN0IGRyb3BSb3dJdGVtc0xlbmd0aCA9IGRyb3BSb3dDaGlsZHJlbi5sZW5ndGggKyAxO1xuXG4gICAgICAgIGNvbnN0IHJvd3NBZnRlckRyb3BSb3cgPSBhbGxSb3dzLnNwbGljZShkcm9wUm93SW5kZXggKyBkcm9wUm93SXRlbXNMZW5ndGgsIGFsbFJvd3MubGVuZ3RoICsgZHJvcFJvd0l0ZW1zTGVuZ3RoKTtcbiAgICAgICAgY29uc3QgZHJvcFJvd0l0ZW1zID0gYWxsUm93cy5zcGxpY2UoZHJvcFJvd0luZGV4LCBkcm9wUm93SXRlbXNMZW5ndGgpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhbGxSb3dzLFxuICAgICAgICAgICAgcm93c1RvTW92ZSxcbiAgICAgICAgICAgIHJvd3NBZnRlckRyb3BSb3csXG4gICAgICAgICAgICBkcm9wUm93SXRlbXNcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hhbmRsZVNoaWZ0RHJvcEFjdGlvbihkcmFnUm93OiBUYWJsZVJvdywgZHJvcFJvdzogVGFibGVSb3csIGV2ZW50OiBGZERyb3BFdmVudDxUYWJsZVJvdz4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBhbGxSb3dzLCByb3dzVG9Nb3ZlLCByb3dzQWZ0ZXJEcm9wUm93LCBkcm9wUm93SXRlbXMgfSA9IHRoaXMuX2dldE5ld0RyYWdEcm9wUm93c1Bvc2l0aW9uKFxuICAgICAgICAgICAgZHJhZ1JvdyxcbiAgICAgICAgICAgIGRyb3BSb3dcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl90YWJsZS5fdGFibGVSb3dzID0gW1xuICAgICAgICAgICAgLi4uYWxsUm93cyxcbiAgICAgICAgICAgIC4uLihldmVudC5pbnNlcnRBdCA9PT0gJ2FmdGVyJyA/IGRyb3BSb3dJdGVtcyA6IFtdKSxcbiAgICAgICAgICAgIC4uLnJvd3NUb01vdmUsXG4gICAgICAgICAgICAuLi4oZXZlbnQuaW5zZXJ0QXQgPT09ICdhZnRlcicgPyBbXSA6IGRyb3BSb3dJdGVtcyksXG4gICAgICAgICAgICAuLi5yb3dzQWZ0ZXJEcm9wUm93XG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oYW5kbGVSZXBsYWNlRHJvcEFjdGlvbihkcmFnUm93OiBUYWJsZVJvdywgZHJvcFJvdzogVGFibGVSb3cpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBhbGxSb3dzLCByb3dzVG9Nb3ZlLCByb3dzQWZ0ZXJEcm9wUm93LCBkcm9wUm93SXRlbXMgfSA9IHRoaXMuX2dldE5ld0RyYWdEcm9wUm93c1Bvc2l0aW9uKFxuICAgICAgICAgICAgZHJhZ1JvdyxcbiAgICAgICAgICAgIGRyb3BSb3dcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLl90YWJsZS5fdGFibGVSb3dzID0gWy4uLmFsbFJvd3MsIC4uLmRyb3BSb3dJdGVtcywgLi4ucm93c1RvTW92ZSwgLi4ucm93c0FmdGVyRHJvcFJvd107XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9vblpvbmVGcmVlKGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX25nWm9uZS5vbk1pY3JvdGFza0VtcHR5LnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYmxvY2tTY3JvbGxpbmcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYmxlLl9mb2N1c2FibGVHcmlkLl9wcmV2ZW50S2V5ZG93biA9IHRydWU7XG4gICAgICAgIHRoaXMuX3RhYmxlLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NTW91c2VTY3JvbGwnLCBwcmV2ZW50RGVmYXVsdCwgZmFsc2UpO1xuICAgICAgICB0aGlzLl90YWJsZS50YWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3doZWVsJywgcHJldmVudERlZmF1bHQsIHsgcGFzc2l2ZTogZmFsc2UgfSk7XG4gICAgICAgIHRoaXMuX3RhYmxlLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V3aGVlbCcsIHByZXZlbnREZWZhdWx0LCB7IHBhc3NpdmU6IGZhbHNlIH0pO1xuICAgICAgICB0aGlzLl90YWJsZS50YWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHByZXZlbnREZWZhdWx0LCB7IHBhc3NpdmU6IGZhbHNlIH0pO1xuICAgICAgICB0aGlzLl90YWJsZS50YWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBwcmV2ZW50RGVmYXVsdEZvclNjcm9sbEtleXMsIGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2VuYWJsZVNjcm9sbGluZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFibGUuX2ZvY3VzYWJsZUdyaWQuX3ByZXZlbnRLZXlkb3duID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3RhYmxlLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignRE9NTW91c2VTY3JvbGwnLCBwcmV2ZW50RGVmYXVsdCwgZmFsc2UpO1xuICAgICAgICB0aGlzLl90YWJsZS50YWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3doZWVsJywgcHJldmVudERlZmF1bHQpO1xuICAgICAgICB0aGlzLl90YWJsZS50YWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNld2hlZWwnLCBwcmV2ZW50RGVmYXVsdCk7XG4gICAgICAgIHRoaXMuX3RhYmxlLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgcHJldmVudERlZmF1bHQpO1xuICAgICAgICB0aGlzLl90YWJsZS50YWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBwcmV2ZW50RGVmYXVsdEZvclNjcm9sbEtleXMsIGZhbHNlKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHByZXZlbnREZWZhdWx0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG59XG5cbmZ1bmN0aW9uIHByZXZlbnREZWZhdWx0Rm9yU2Nyb2xsS2V5cyhldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgIGlmIChcbiAgICAgICAgIWV2ZW50LmFsdEtleSAmJlxuICAgICAgICBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0xFRlRfQVJST1csIFJJR0hUX0FSUk9XLCBVUF9BUlJPVywgRE9XTl9BUlJPVywgU1BBQ0UsIFBBR0VfRE9XTiwgUEFHRV9VUCwgRU5ELCBIT01FXSlcbiAgICApIHtcbiAgICAgICAgcHJldmVudERlZmF1bHQoZXZlbnQpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { convertTreeLikeToFlatList, createGroupedTableRowsTree, sortTreeLikeGroupedRows } from '../helpers';\nimport * as i0 from \"@angular/core\";\nexport class TableRowService {\n /** @hidden */\n constructor() {\n /** Editable cells map. */\n this.editableCells = new Map();\n /** @hidden */\n this.childRowsAdded$ = new Subject();\n /** Stream to load child items for a particular rows. */\n this.loadChildRows$ = new Subject();\n /** @hidden */\n this._toggleRowSubject = new Subject();\n /** @hidden */\n this._scrollToOverlappedCellSubject = new Subject();\n /** @hidden */\n this._cellClickedSubject = new Subject();\n /** @hidden */\n this._cellActivateSubject = new Subject();\n /** @hidden */\n this._cellFocusedSubject = new Subject();\n /** @hidden */\n this._toggleAllSelectableRowsSubject = new Subject();\n this.toggleAllSelectableRows$ = this._toggleAllSelectableRowsSubject.asObservable();\n this.cellClicked$ = this._cellClickedSubject.asObservable();\n this.scrollToOverlappedCell$ = this._scrollToOverlappedCellSubject.asObservable();\n this.cellFocused$ = this._cellFocusedSubject.asObservable();\n this.cellActivate$ = this._cellActivateSubject.asObservable();\n this.toggleRow$ = this._toggleRowSubject.asObservable();\n }\n /** `toggleRow$` stream trigger. */\n toggleRow(evt) {\n this._toggleRowSubject.next(evt);\n }\n /** `scrollToOverlappedCell$` stream trigger. */\n scrollToOverlappedCell() {\n this._scrollToOverlappedCellSubject.next();\n }\n /** `cellClicked$` stream trigger. */\n cellClicked(evt) {\n this._cellClickedSubject.next(evt);\n }\n /** @hidden */\n cellActivate(columnIndex, row) {\n this._cellActivateSubject.next({ columnIndex, row: row.value });\n }\n /** `cellFocused$` stream trigger. */\n cellFocused(evt) {\n this._cellFocusedSubject.next(evt);\n }\n /** `toggleAllSelectableRows$` stream trigger. */\n toggleAllSelectableRows(selectAll) {\n this._toggleAllSelectableRowsSubject.next(selectAll);\n }\n /** Groups the table rows. */\n groupTableRows(sourceRows, groups, groupRulesMap) {\n const groupRules = Array.from(groups);\n if (!groupRules.length) {\n /**\n * In case if previously we had groups with collapsed items\n * but now we don't have it we need to reset row.hidden flag\n * in order to avoid empty table after groups settings removing\n */\n sourceRows.forEach((row) => {\n row.hidden = false;\n });\n return sourceRows;\n }\n // Build tree like groups\n const treeLikeGroupedRows = createGroupedTableRowsTree(groupRules, sourceRows);\n // Sort tree like groups\n const sortedTreeLikeGroupedRows = sortTreeLikeGroupedRows(treeLikeGroupedRows, groupRulesMap);\n // Convert tree like list to a flat list\n return convertTreeLikeToFlatList(sortedTreeLikeGroupedRows);\n }\n /** Sets editable cells for particular row. */\n updateEditableCells(row, cells) {\n this.editableCells.set(row, cells);\n }\n /** Removes editable cells of particular row. */\n removeEditableCells(row) {\n this.editableCells.delete(row);\n }\n /** Triggers stream to load child items for a particular rows. */\n loadChildRows(rows) {\n const expandableRows = [];\n if (Array.isArray(rows)) {\n expandableRows.push(...rows.filter((r) => !r.childItemsLoading$.value));\n }\n else {\n if (rows.childItemsLoading$.value) {\n return;\n }\n expandableRows.push(rows);\n }\n this.loadChildRows$.next(expandableRows);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableRowService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableRowService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableRowService, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtcm93LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvc2VydmljZXMvdGFibGUtcm93LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSwwQkFBMEIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFlBQVksQ0FBQzs7QUEyQjVHLE1BQU0sT0FBTyxlQUFlO0lBOEN4QixjQUFjO0lBQ2Q7UUE1QkEsMEJBQTBCO1FBQ2pCLGtCQUFhLEdBQUcsSUFBSSxHQUFHLEVBQXNDLENBQUM7UUFFdkUsY0FBYztRQUNMLG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQW1ELENBQUM7UUFFMUYsd0RBQXdEO1FBQy9DLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQWlCLENBQUM7UUFFdkQsY0FBYztRQUNHLHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUFrQixDQUFDO1FBRW5FLGNBQWM7UUFDRyxtQ0FBOEIsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRXRFLGNBQWM7UUFDRyx3QkFBbUIsR0FBRyxJQUFJLE9BQU8sRUFBb0IsQ0FBQztRQUV2RSxjQUFjO1FBQ0cseUJBQW9CLEdBQUcsSUFBSSxPQUFPLEVBQStCLENBQUM7UUFFbkYsY0FBYztRQUNHLHdCQUFtQixHQUFHLElBQUksT0FBTyxFQUF5QixDQUFDO1FBRTVFLGNBQWM7UUFDRyxvQ0FBK0IsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBSXRFLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsK0JBQStCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEYsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENB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TUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzVFLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2hDLE9BQU87WUFDWCxDQUFDO1lBQ0QsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDN0MsQ0FBQzs4R0ExSVEsZUFBZTtrSEFBZixlQUFlOzsyRkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9jdXNhYmxlSXRlbVBvc2l0aW9uIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY29udmVydFRyZWVMaWtlVG9GbGF0TGlzdCwgY3JlYXRlR3JvdXBlZFRhYmxlUm93c1RyZWUsIHNvcnRUcmVlTGlrZUdyb3VwZWRSb3dzIH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uR3JvdXAgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFRhYmxlUm93IH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IFRhYmxlQ2VsbEFjdGl2YXRlRXZlbnQgfSBmcm9tICcuLi9tb2RlbHMvdGFibGUtY2VsbC1hY3RpdmF0ZS1ldmVudC5tb2RlbCc7XG5pbXBvcnQgeyBFZGl0YWJsZVRhYmxlQ2VsbCB9IGZyb20gJy4uL3RhYmxlLWNlbGwuY2xhc3MnO1xuXG5leHBvcnQgdHlwZSBUb2dnbGVSb3dNb2RlbCA9XG4gICAgfCB7XG4gICAgICAgICAgdHlwZTogJ3RvZ2dsZVJvdyc7XG4gICAgICAgICAgcm93OiBUYWJsZVJvdztcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgICB0eXBlOiAndG9nZ2xlU2luZ2xlU2VsZWN0YWJsZVJvdyc7XG4gICAgICAgICAgcm93OiBUYWJsZVJvdztcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgICB0eXBlOiAndG9nZ2xlTXVsdGlTZWxlY3RSb3cnO1xuICAgICAgICAgIHJvdzogVGFibGVSb3c7XG4gICAgICAgICAgZXZlbnQ/OiBFdmVudDtcbiAgICAgIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2VsbENsaWNrZWRNb2RlbCB7XG4gICAgaW5kZXg6IG51bWJlcjtcbiAgICByb3c6IFRhYmxlUm93O1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGFibGVSb3dTZXJ2aWNlPFQgPSBhbnk+IHtcbiAgICAvKiogU3RyZWFtIHRoYXQgZW1pdHMgd2hlbiB0b2dnbGluZyBhbGwgc2VsZWN0YWJsZSByb3dzIGlzIG5lZWRlZC4gKi9cbiAgICByZWFkb25seSB0b2dnbGVBbGxTZWxlY3RhYmxlUm93cyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICAvKiogU3RyZWFtIHRoYXQgZW1pdHMgd2hlbiB0YWJsZSBjZWxsIGJlaW5nIGNsaWNrZWQuICovXG4gICAgcmVhZG9ubHkgY2VsbENsaWNrZWQkOiBPYnNlcnZhYmxlPENlbGxDbGlja2VkTW9kZWw+O1xuXG4gICAgLyoqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW4gc2Nyb2xsaW5nIHRvIG92ZXJsYXBwZWQgY2VsbCBpcyBuZWVkZWQuICovXG4gICAgcmVhZG9ubHkgc2Nyb2xsVG9PdmVybGFwcGVkQ2VsbCQ6IE9ic2VydmFibGU8dm9pZD47XG5cbiAgICAvKiogU3RyZWFtIHRoYXQgZW1pdHMgd2hlbiB0aGUgdGFibGUgY2VsbCBiZWluZyBmb2N1c2VkLiAqL1xuICAgIHJlYWRvbmx5IGNlbGxGb2N1c2VkJDogT2JzZXJ2YWJsZTxGb2N1c2FibGVJdGVtUG9zaXRpb24+O1xuXG4gICAgLyoqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZW4gdGhlIHRhYmxlIGNlbGwgYmVpbmcgZm9jdXNlZC4gKi9cbiAgICByZWFkb25seSBjZWxsQWN0aXZhdGUkOiBPYnNlcnZhYmxlPFRhYmxlQ2VsbEFjdGl2YXRlRXZlbnQ8YW55Pj47XG5cbiAgICAvKiogVG9nZ2xlIHJvdyBzdHJlYW0uICovXG4gICAgcmVhZG9ubHkgdG9nZ2xlUm93JDogT2JzZXJ2YWJsZTxUb2dnbGVSb3dNb2RlbD47XG5cbiAgICAvKiogRWRpdGFibGUgY2VsbHMgbWFwLiAqL1xuICAgIHJlYWRvbmx5IGVkaXRhYmxlQ2VsbHMgPSBuZXcgTWFwPFRhYmxlUm93PGFueT4sIEVkaXRhYmxlVGFibGVDZWxsW10+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IGNoaWxkUm93c0FkZGVkJCA9IG5ldyBTdWJqZWN0PHsgcm93OiBUYWJsZVJvdzsgcm93SW5kZXg6IG51bWJlcjsgaXRlbXM6IFRbXSB9PigpO1xuXG4gICAgLyoqIFN0cmVhbSB0byBsb2FkIGNoaWxkIGl0ZW1zIGZvciBhIHBhcnRpY3VsYXIgcm93cy4gKi9cbiAgICByZWFkb25seSBsb2FkQ2hpbGRSb3dzJCA9IG5ldyBTdWJqZWN0PFRhYmxlUm93PFQ+W10+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RvZ2dsZVJvd1N1YmplY3QgPSBuZXcgU3ViamVjdDxUb2dnbGVSb3dNb2RlbD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfc2Nyb2xsVG9PdmVybGFwcGVkQ2VsbFN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jZWxsQ2xpY2tlZFN1YmplY3QgPSBuZXcgU3ViamVjdDxDZWxsQ2xpY2tlZE1vZGVsPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jZWxsQWN0aXZhdGVTdWJqZWN0ID0gbmV3IFN1YmplY3Q8VGFibGVDZWxsQWN0aXZhdGVFdmVudDxhbnk+PigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jZWxsRm9jdXNlZFN1YmplY3QgPSBuZXcgU3ViamVjdDxGb2N1c2FibGVJdGVtUG9zaXRpb24+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RvZ2dsZUFsbFNlbGVjdGFibGVSb3dzU3ViamVjdCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnRvZ2dsZUFsbFNlbGVjdGFibGVSb3dzJCA9IHRoaXMuX3RvZ2dsZUFsbFNlbGVjdGFibGVSb3dzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICAgICAgdGhpcy5jZWxsQ2xpY2tlZCQgPSB0aGlzLl9jZWxsQ2xpY2tlZFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG9PdmVybGFwcGVkQ2VsbCQgPSB0aGlzLl9zY3JvbGxUb092ZXJsYXBwZWRDZWxsU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICAgICAgdGhpcy5jZWxsRm9jdXNlZCQgPSB0aGlzLl9jZWxsRm9jdXNlZFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgICAgIHRoaXMuY2VsbEFjdGl2YXRlJCA9IHRoaXMuX2NlbGxBY3RpdmF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgICAgIHRoaXMudG9nZ2xlUm93JCA9IHRoaXMuX3RvZ2dsZVJvd1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgLyoqIGB0b2dnbGVSb3ckYCBzdHJlYW0gdHJpZ2dlci4gKi9cbiAgICB0b2dnbGVSb3coZXZ0OiBUb2dnbGVSb3dNb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90b2dnbGVSb3dTdWJqZWN0Lm5leHQoZXZ0KTtcbiAgICB9XG5cbiAgICAvKiogYHNjcm9sbFRvT3ZlcmxhcHBlZENlbGwkYCBzdHJlYW0gdHJpZ2dlci4gKi9cbiAgICBzY3JvbGxUb092ZXJsYXBwZWRDZWxsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zY3JvbGxUb092ZXJsYXBwZWRDZWxsU3ViamVjdC5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqIGBjZWxsQ2xpY2tlZCRgIHN0cmVhbSB0cmlnZ2VyLiAqL1xuICAgIGNlbGxDbGlja2VkKGV2dDogQ2VsbENsaWNrZWRNb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jZWxsQ2xpY2tlZFN1YmplY3QubmV4dChldnQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY2VsbEFjdGl2YXRlKGNvbHVtbkluZGV4OiBudW1iZXIsIHJvdzogVGFibGVSb3cpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2VsbEFjdGl2YXRlU3ViamVjdC5uZXh0KHsgY29sdW1uSW5kZXgsIHJvdzogcm93LnZhbHVlIH0pO1xuICAgIH1cblxuICAgIC8qKiBgY2VsbEZvY3VzZWQkYCBzdHJlYW0gdHJpZ2dlci4gKi9cbiAgICBjZWxsRm9jdXNlZChldnQ6IEZvY3VzYWJsZUl0ZW1Qb3NpdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9jZWxsRm9jdXNlZFN1YmplY3QubmV4dChldnQpO1xuICAgIH1cblxuICAgIC8qKiBgdG9nZ2xlQWxsU2VsZWN0YWJsZVJvd3MkYCBzdHJlYW0gdHJpZ2dlci4gKi9cbiAgICB0b2dnbGVBbGxTZWxlY3RhYmxlUm93cyhzZWxlY3RBbGw6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdG9nZ2xlQWxsU2VsZWN0YWJsZVJvd3NTdWJqZWN0Lm5leHQoc2VsZWN0QWxsKTtcbiAgICB9XG5cbiAgICAvKiogR3JvdXBzIHRoZSB0YWJsZSByb3dzLiAqL1xuICAgIGdyb3VwVGFibGVSb3dzKFxuICAgICAgICBzb3VyY2VSb3dzOiBUYWJsZVJvd1tdLFxuICAgICAgICBncm91cHM6IEl0ZXJhYmxlPENvbGxlY3Rpb25Hcm91cD4sXG4gICAgICAgIGdyb3VwUnVsZXNNYXA6IE1hcDxzdHJpbmcsIENvbGxlY3Rpb25Hcm91cD5cbiAgICApOiBUYWJsZVJvd1tdIHtcbiAgICAgICAgY29uc3QgZ3JvdXBSdWxlcyA9IEFycmF5LmZyb20oZ3JvdXBzKTtcblxuICAgICAgICBpZiAoIWdyb3VwUnVsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEluIGNhc2UgaWYgcHJldmlvdXNseSB3ZSBoYWQgZ3JvdXBzIHdpdGggY29sbGFwc2VkIGl0ZW1zXG4gICAgICAgICAgICAgKiBidXQgbm93IHdlIGRvbid0IGhhdmUgaXQgd2UgbmVlZCB0byByZXNldCByb3cuaGlkZGVuIGZsYWdcbiAgICAgICAgICAgICAqIGluIG9yZGVyIHRvIGF2b2lkIGVtcHR5IHRhYmxlIGFmdGVyIGdyb3VwcyBzZXR0aW5ncyByZW1vdmluZ1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzb3VyY2VSb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgICAgICAgIHJvdy5oaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHNvdXJjZVJvd3M7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCdWlsZCB0cmVlIGxpa2UgZ3JvdXBzXG4gICAgICAgIGNvbnN0IHRyZWVMaWtlR3JvdXBlZFJvd3MgPSBjcmVhdGVHcm91cGVkVGFibGVSb3dzVHJlZShncm91cFJ1bGVzLCBzb3VyY2VSb3dzKTtcblxuICAgICAgICAvLyBTb3J0IHRyZWUgbGlrZSBncm91cHNcbiAgICAgICAgY29uc3Qgc29ydGVkVHJlZUxpa2VHcm91cGVkUm93cyA9IHNvcnRUcmVlTGlrZUdyb3VwZWRSb3dzKHRyZWVMaWtlR3JvdXBlZFJvd3MsIGdyb3VwUnVsZXNNYXApO1xuXG4gICAgICAgIC8vIENvbnZlcnQgdHJlZSBsaWtlIGxpc3QgdG8gYSBmbGF0IGxpc3RcbiAgICAgICAgcmV0dXJuIGNvbnZlcnRUcmVlTGlrZVRvRmxhdExpc3Qoc29ydGVkVHJlZUxpa2VHcm91cGVkUm93cyk7XG4gICAgfVxuXG4gICAgLyoqIFNldHMgZWRpdGFibGUgY2VsbHMgZm9yIHBhcnRpY3VsYXIgcm93LiAqL1xuICAgIHVwZGF0ZUVkaXRhYmxlQ2VsbHMocm93OiBUYWJsZVJvdywgY2VsbHM6IEVkaXRhYmxlVGFibGVDZWxsW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lZGl0YWJsZUNlbGxzLnNldChyb3csIGNlbGxzKTtcbiAgICB9XG5cbiAgICAvKiogUmVtb3ZlcyBlZGl0YWJsZSBjZWxscyBvZiBwYXJ0aWN1bGFyIHJvdy4gKi9cbiAgICByZW1vdmVFZGl0YWJsZUNlbGxzKHJvdzogVGFibGVSb3cpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lZGl0YWJsZUNlbGxzLmRlbGV0ZShyb3cpO1xuICAgIH1cblxuICAgIC8qKiBUcmlnZ2VycyBzdHJlYW0gdG8gbG9hZCBjaGlsZCBpdGVtcyBmb3IgYSBwYXJ0aWN1bGFyIHJvd3MuICovXG4gICAgbG9hZENoaWxkUm93cyhyb3dzOiBUYWJsZVJvdzxUPiB8IFRhYmxlUm93PFQ+W10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZXhwYW5kYWJsZVJvd3M6IFRhYmxlUm93PFQ+W10gPSBbXTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocm93cykpIHtcbiAgICAgICAgICAgIGV4cGFuZGFibGVSb3dzLnB1c2goLi4ucm93cy5maWx0ZXIoKHIpID0+ICFyLmNoaWxkSXRlbXNMb2FkaW5nJC52YWx1ZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHJvd3MuY2hpbGRJdGVtc0xvYWRpbmckLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXhwYW5kYWJsZVJvd3MucHVzaChyb3dzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvYWRDaGlsZFJvd3MkLm5leHQoZXhwYW5kYWJsZVJvd3MpO1xuICAgIH1cbn1cbiJdfQ==","import { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { DOCUMENT, DestroyRef, Directive, ElementRef, NgZone, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { fromEvent } from 'rxjs';\nimport { TableColumnResizeService } from '../services/table-column-resize.service';\nimport { TableRowService } from '../services/table-row.service';\nimport * as i0 from \"@angular/core\";\nexport class TableHeaderResizerDirective {\n constructor() {\n /** @hidden */\n this._destroyRef = inject(DestroyRef);\n /** @hidden */\n this._rtl = inject(RtlService, {\n optional: true\n });\n /** @hidden */\n this._elmRef = inject(ElementRef);\n /** @hidden */\n this._tableColumnResizeService = inject(TableColumnResizeService);\n /** @hidden */\n this._tableRowService = inject(TableRowService);\n /** @hidden */\n this._zone = inject(NgZone);\n /** @hidden */\n this._document = inject(DOCUMENT);\n }\n /** @hidden */\n get _headerCellFocused() {\n return this._document.activeElement?.tagName.toLowerCase() === 'th';\n }\n /** @hidden */\n ngOnInit() {\n this._zone.runOutsideAngular(() => {\n fromEvent(this._elmRef.nativeElement, 'keydown')\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((event) => {\n if ((KeyUtil.isKeyCode(event, LEFT_ARROW) ||\n (this._rtl?.rtl.value && KeyUtil.isKeyCode(event, RIGHT_ARROW))) &&\n event.shiftKey &&\n this._headerCellFocused) {\n this._tableColumnResizeService._processResize(-32);\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n else if ((KeyUtil.isKeyCode(event, RIGHT_ARROW) ||\n (this._rtl?.rtl.value && KeyUtil.isKeyCode(event, LEFT_ARROW))) &&\n event.shiftKey &&\n this._headerCellFocused) {\n this._tableColumnResizeService._processResize(32);\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n });\n fromEvent(this._elmRef.nativeElement, 'focusin')\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n if (!this._focusinTimerId) {\n return;\n }\n clearTimeout(this._focusinTimerId);\n this._focusinTimerId = null;\n });\n fromEvent(this._elmRef.nativeElement, 'focusout')\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this._focusinTimerId = setTimeout(() => {\n this.focusedCellPosition = null;\n });\n });\n });\n this._tableRowService.cellFocused$.subscribe((evt) => {\n this._onCellFocused(evt);\n });\n }\n /** @hidden */\n _onCellFocused(position) {\n this.focusedCellPosition = { rowIndex: position.rowIndex, colIndex: position.colIndex };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableHeaderResizerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: TableHeaderResizerDirective, isStandalone: true, selector: \"[fdpTableHeaderResizer]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableHeaderResizerDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdpTableHeaderResizer]',\n standalone: true\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaGVhZGVyLXJlc2l6ZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzL2RpcmVjdGl2ZXMvdGFibGUtaGVhZGVyLXJlc2l6ZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFHSCxPQUFPLEVBRVAsVUFBVSxFQUNiLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNuRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBTWhFLE1BQU0sT0FBTywyQkFBMkI7SUFKeEM7UUFRSSxjQUFjO1FBQ0csZ0JBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFbEQsY0FBYztRQUNHLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFO1lBQ3ZDLFFBQVEsRUFBRSxJQUFJO1NBQ2pCLENBQUMsQ0FBQztRQUVILGNBQWM7UUFDRyxZQUFPLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTlDLGNBQWM7UUFDRyw4QkFBeUIsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUU5RSxjQUFjO1FBQ0cscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTVELGNB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RCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGNBQWM7SUFDTixjQUFjLENBQUMsUUFBK0I7UUFDbEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1RixDQUFDOzhHQXhGUSwyQkFBMkI7a0dBQTNCLDJCQUEyQjs7MkZBQTNCLDJCQUEyQjtrQkFKdkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxVQUFVLEVBQUUsSUFBSTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMRUZUX0FSUk9XLCBSSUdIVF9BUlJPVyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5cbmltcG9ydCB7IERPQ1VNRU5ULCBEZXN0cm95UmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE5nWm9uZSwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7XG4gICAgRm9jdXNhYmxlQ2VsbFBvc2l0aW9uLFxuICAgIEZvY3VzYWJsZUl0ZW1Qb3NpdGlvbixcbiAgICBLZXlVdGlsLFxuICAgIE51bGxhYmxlLFxuICAgIFJ0bFNlcnZpY2Vcbn0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUYWJsZUNvbHVtblJlc2l6ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90YWJsZS1jb2x1bW4tcmVzaXplLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGVSb3dTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdGFibGUtcm93LnNlcnZpY2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZHBUYWJsZUhlYWRlclJlc2l6ZXJdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlSGVhZGVyUmVzaXplckRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBmb2N1c2VkQ2VsbFBvc2l0aW9uOiBOdWxsYWJsZTxGb2N1c2FibGVDZWxsUG9zaXRpb24+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9ydGwgPSBpbmplY3QoUnRsU2VydmljZSwge1xuICAgICAgICBvcHRpb25hbDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lbG1SZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RhYmxlQ29sdW1uUmVzaXplU2VydmljZSA9IGluamVjdChUYWJsZUNvbHVtblJlc2l6ZVNlcnZpY2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF90YWJsZVJvd1NlcnZpY2UgPSBpbmplY3QoVGFibGVSb3dTZXJ2aWNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfem9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2ZvY3VzaW5UaW1lcklkOiBhbnk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgZ2V0IF9oZWFkZXJDZWxsRm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ/LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ3RoJztcbiAgICB9XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4odGhpcy5fZWxtUmVmLm5hdGl2ZUVsZW1lbnQsICdrZXlkb3duJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBMRUZUX0FSUk9XKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLl9ydGw/LnJ0bC52YWx1ZSAmJiBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgUklHSFRfQVJST1cpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnNoaWZ0S2V5ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9oZWFkZXJDZWxsRm9jdXNlZFxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlQ29sdW1uUmVzaXplU2VydmljZS5fcHJvY2Vzc1Jlc2l6ZSgtMzIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBSSUdIVF9BUlJPVykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5fcnRsPy5ydGwudmFsdWUgJiYgS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIExFRlRfQVJST1cpKSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnNoaWZ0S2V5ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9oZWFkZXJDZWxsRm9jdXNlZFxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlQ29sdW1uUmVzaXplU2VydmljZS5fcHJvY2Vzc1Jlc2l6ZSgzMik7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZnJvbUV2ZW50KHRoaXMuX2VsbVJlZi5uYXRpdmVFbGVtZW50LCAnZm9jdXNpbicpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2ZvY3VzaW5UaW1lcklkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2ZvY3VzaW5UaW1lcklkKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZm9jdXNpblRpbWVySWQgPSBudWxsO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBmcm9tRXZlbnQodGhpcy5fZWxtUmVmLm5hdGl2ZUVsZW1lbnQsICdmb2N1c291dCcpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9mb2N1c2luVGltZXJJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c2VkQ2VsbFBvc2l0aW9uID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3RhYmxlUm93U2VydmljZS5jZWxsRm9jdXNlZCQuc3Vic2NyaWJlKChldnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX29uQ2VsbEZvY3VzZWQoZXZ0KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9vbkNlbGxGb2N1c2VkKHBvc2l0aW9uOiBGb2N1c2FibGVJdGVtUG9zaXRpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb2N1c2VkQ2VsbFBvc2l0aW9uID0geyByb3dJbmRleDogcG9zaXRpb24ucm93SW5kZXgsIGNvbEluZGV4OiBwb3NpdGlvbi5jb2xJbmRleCB9O1xuICAgIH1cbn1cbiJdfQ==","import { Directive, TemplateRef } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/** Column header container. */\n// eslint-disable-next-line @angular-eslint/directive-selector\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class FdpTableHeader {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdpTableHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: FdpTableHeader, isStandalone: true, selector: \"fdp-table-header\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdpTableHeader, decorators: [{\n type: Directive,\n args: [{ selector: 'fdp-table-header', standalone: true }]\n }] });\n/**\n * Header cell definition for a platform table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class FdpHeaderCellDef {\n /** @hidden */\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n /** @hidden */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdpHeaderCellDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: FdpHeaderCellDef, isStandalone: true, selector: \"[fdpHeaderCellDef]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdpHeaderCellDef, decorators: [{\n type: Directive,\n args: [{ selector: '[fdpHeaderCellDef]', standalone: true }]\n }], ctorParameters: () => [{ type: i0.TemplateRef }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaGVhZGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9kaXJlY3RpdmVzL3RhYmxlLWhlYWRlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBT3ZELCtCQUErQjtBQUMvQiw4REFBOEQ7QUFFOUQsa0VBQWtFO0FBQ2xFLE1BQU0sT0FBTyxjQUFjOzhHQUFkLGNBQWM7a0dBQWQsY0FBYzs7MkZBQWQsY0FBYztrQkFGMUIsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFOztBQUk3RDs7O0dBR0c7QUFFSCxrRUFBa0U7QUFDbEUsTUFBTSxPQUFPLGdCQUFnQjtJQUN6QixjQUFjO0lBQ2QsWUFBbUIsV0FBOEM7UUFBOUMsZ0JBQVcsR0FBWCxXQUFXLENBQW1DO0lBQUcsQ0FBQztJQUVyRSxjQUFjO0lBQ2QsTUFBTSxDQUFDLHNCQUFzQixDQUFDLEdBQXFCLEVBQUUsR0FBNEI7UUFDN0UsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzs4R0FQUSxnQkFBZ0I7a0dBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFGNUIsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmRwQ2VsbERlZkNvbnRleHQgfSBmcm9tICcuL3RhYmxlLWNlbGwuZGlyZWN0aXZlJztcblxuZXhwb3J0IGludGVyZmFjZSBGZHBIZWFkZXJDZWxsRGVmQ29udGV4dDxUID0gYW55PiB7XG4gICAgJGltcGxpY2l0OiBUO1xufVxuXG4vKiogQ29sdW1uIGhlYWRlciBjb250YWluZXIuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnZmRwLXRhYmxlLWhlYWRlcicsIHN0YW5kYWxvbmU6IHRydWUgfSlcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGNsYXNzIEZkcFRhYmxlSGVhZGVyIHt9XG5cbi8qKlxuICogSGVhZGVyIGNlbGwgZGVmaW5pdGlvbiBmb3IgYSBwbGF0Zm9ybSB0YWJsZS5cbiAqIENhcHR1cmVzIHRoZSB0ZW1wbGF0ZSBvZiBhIGNvbHVtbidzIGRhdGEgcm93IGNlbGwgYXMgd2VsbCBhcyBjZWxsLXNwZWNpZmljIHByb3BlcnRpZXMuXG4gKi9cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tmZHBIZWFkZXJDZWxsRGVmXScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGNsYXNzIEZkcEhlYWRlckNlbGxEZWY8VCA9IGFueT4ge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxGZHBDZWxsRGVmQ29udGV4dDxUPj4pIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKGRpcjogRmRwSGVhZGVyQ2VsbERlZiwgY3R4OiBGZHBIZWFkZXJDZWxsRGVmQ29udGV4dCk6IGN0eCBpcyBGZHBIZWFkZXJDZWxsRGVmQ29udGV4dCB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbn1cbiJdfQ==","import { Directive, inject, Input } from '@angular/core';\nimport { DEFAULT_TABLE_STATE, FDP_TABLE_STATE_DIRECTIVE } from '../constants';\nimport { TableInitialState } from '../models';\nimport { TableService } from '../services/table.service';\nimport * as i0 from \"@angular/core\";\nexport class TableInitialStateDirective extends TableInitialState {\n constructor() {\n super(...arguments);\n /** Initial sort options. */\n this.initialSortBy = [];\n /** Initial filter options. */\n this.initialFilterBy = [];\n /** Initial group options. */\n this.initialGroupBy = [];\n /** Initial page. */\n this.initialPage = 1;\n /** @hidden */\n this._tableService = inject(TableService);\n }\n /**\n * Initial state of table.\n */\n set state(value) {\n this.setTableState(value || DEFAULT_TABLE_STATE);\n }\n get state() {\n return this.getTableState();\n }\n /** @hidden */\n setTable(table) {\n this._table = table;\n }\n /** @hidden */\n setInitialState() {\n const prevState = this.getTableState();\n const columns = this._table.getTableColumns();\n const page = prevState.page;\n const visibleColumns = this.initialVisibleColumns ||\n (prevState.columns.length ? prevState.columns : columns.filter((c) => c.visible).map(({ name }) => name));\n const directiveInitialPage = this.initialPage ?? 1;\n this._table._loadPreviousPages =\n this._table.pageScrolling && this._table.loadPagesBefore && directiveInitialPage > 1;\n const initialPage = this._table._loadPreviousPages\n ? 1\n : directiveInitialPage < page.currentPage\n ? page.currentPage\n : directiveInitialPage;\n const initialPageSize = (this._table._loadPreviousPages ? directiveInitialPage : initialPage) *\n (this._table.pageSize || page.pageSize);\n this.setTableState({\n ...prevState,\n columns: visibleColumns,\n columnKeys: columns.filter((c) => visibleColumns.includes(c.name)).map((c) => c.key),\n sortBy: this.initialSortBy || prevState.sortBy,\n filterBy: this.initialFilterBy || prevState.filterBy,\n groupBy: this.initialGroupBy || prevState.groupBy,\n freezeToColumn: this._table.freezeColumnsTo || prevState.freezeToColumn,\n freezeToEndColumn: this._table.freezeEndColumnsTo || prevState.freezeToEndColumn,\n page: {\n currentPage: initialPage,\n pageSize: initialPageSize\n }\n });\n }\n /** Get current state/settings of the Table. */\n getTableState() {\n return this._tableService.getTableState();\n }\n /** Set current state/settings of the Table. */\n setTableState(state) {\n this._tableService.setTableState(state);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableInitialStateDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: TableInitialStateDirective, isStandalone: true, selector: \"[fdpTableInitialState],\\n fdp-table\", inputs: { initialVisibleColumns: \"initialVisibleColumns\", initialSortBy: \"initialSortBy\", initialFilterBy: \"initialFilterBy\", initialGroupBy: \"initialGroupBy\", initialPage: \"initialPage\", state: \"state\" }, providers: [\n {\n provide: FDP_TABLE_STATE_DIRECTIVE,\n useExisting: TableInitialStateDirective\n }\n ], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableInitialStateDirective, decorators: [{\n type: Directive,\n args: [{\n selector: `[fdpTableInitialState],\n fdp-table`,\n standalone: true,\n providers: [\n {\n provide: FDP_TABLE_STATE_DIRECTIVE,\n useExisting: TableInitialStateDirective\n }\n ]\n }]\n }], propDecorators: { initialVisibleColumns: [{\n type: Input\n }], initialSortBy: [{\n type: Input\n }], initialFilterBy: [{\n type: Input\n }], initialGroupBy: [{\n type: Input\n }], initialPage: [{\n type: Input\n }], state: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaW5pdGlhbC1zdGF0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvZGlyZWN0aXZlcy90YWJsZS1pbml0aWFsLXN0YXRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBY3pELE1BQU0sT0FBTywwQkFBMkIsU0FBUSxpQkFBaUI7SUFYakU7O1FBZ0JJLDRCQUE0QjtRQUU1QixrQkFBYSxHQUFxQixFQUFFLENBQUM7UUFFckMsOEJBQThCO1FBRTlCLG9CQUFlLEdBQXVCLEVBQUUsQ0FBQztRQUV6Qyw2QkFBNkI7UUFFN0IsbUJBQWMsR0FBc0IsRUFBRSxDQUFDO1FBRXZDLG9CQUFvQjtRQUVwQixnQkFBVyxHQUFHLENBQUMsQ0FBQztRQWlCaEIsY0FBYztRQUNHLGtCQUFhLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0tBd0R6RDtJQXhFRzs7T0FFRztJQUNILElBQ0ksS0FBSyxDQUFDLEtBQWlCO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxJQUFJLG1CQUFtQixDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFRRCxjQUFjO0lBQ2QsUUFBUSxDQUFDLEtBQVk7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDeEIs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O1NBQ0o7OzJGQUVRLDBCQUEwQjtrQkFYdEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUU7Y0FDQTtvQkFDVixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNQOzRCQUNJLE9BQU8sRUFBRSx5QkFBeUI7NEJBQ2xDLFdBQVcsNEJBQTRCO3lCQUMxQztxQkFDSjtpQkFDSjs4QkFJRyxxQkFBcUI7c0JBRHBCLEtBQUs7Z0JBS04sYUFBYTtzQkFEWixLQUFLO2dCQUtOLGVBQWU7c0JBRGQsS0FBSztnQkFLTixjQUFjO3NCQURiLEtBQUs7Z0JBS04sV0FBVztzQkFEVixLQUFLO2dCQU9GLEtBQUs7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgaW5qZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgREVGQVVMVF9UQUJMRV9TVEFURSwgRkRQX1RBQkxFX1NUQVRFX0RJUkVDVElWRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uRmlsdGVyLCBDb2xsZWN0aW9uR3JvdXAsIENvbGxlY3Rpb25Tb3J0LCBUYWJsZVN0YXRlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBUYWJsZUluaXRpYWxTdGF0ZSB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBUYWJsZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90YWJsZS5zZXJ2aWNlJztcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSAnLi4vdGFibGUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogYFtmZHBUYWJsZUluaXRpYWxTdGF0ZV0sXG4gICAgZmRwLXRhYmxlYCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGRFBfVEFCTEVfU1RBVEVfRElSRUNUSVZFLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFRhYmxlSW5pdGlhbFN0YXRlRGlyZWN0aXZlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlSW5pdGlhbFN0YXRlRGlyZWN0aXZlIGV4dGVuZHMgVGFibGVJbml0aWFsU3RhdGUge1xuICAgIC8qKiBJbml0aWFsIHZpc2libGUgY29sdW1ucy4gQ29uc2lzdCBvZiBhIGxpc3Qgb2YgdW5pcXVlIGNvbHVtbiBuYW1lcyAqL1xuICAgIEBJbnB1dCgpXG4gICAgaW5pdGlhbFZpc2libGVDb2x1bW5zOiBzdHJpbmdbXTtcblxuICAgIC8qKiBJbml0aWFsIHNvcnQgb3B0aW9ucy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGluaXRpYWxTb3J0Qnk6IENvbGxlY3Rpb25Tb3J0W10gPSBbXTtcblxuICAgIC8qKiBJbml0aWFsIGZpbHRlciBvcHRpb25zLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaW5pdGlhbEZpbHRlckJ5OiBDb2xsZWN0aW9uRmlsdGVyW10gPSBbXTtcblxuICAgIC8qKiBJbml0aWFsIGdyb3VwIG9wdGlvbnMuICovXG4gICAgQElucHV0KClcbiAgICBpbml0aWFsR3JvdXBCeTogQ29sbGVjdGlvbkdyb3VwW10gPSBbXTtcblxuICAgIC8qKiBJbml0aWFsIHBhZ2UuICovXG4gICAgQElucHV0KClcbiAgICBpbml0aWFsUGFnZSA9IDE7XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsIHN0YXRlIG9mIHRhYmxlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHN0YXRlKHZhbHVlOiBUYWJsZVN0YXRlKSB7XG4gICAgICAgIHRoaXMuc2V0VGFibGVTdGF0ZSh2YWx1ZSB8fCBERUZBVUxUX1RBQkxFX1NUQVRFKTtcbiAgICB9XG5cbiAgICBnZXQgc3RhdGUoKTogVGFibGVTdGF0ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFRhYmxlU3RhdGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RhYmxlOiBUYWJsZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGFibGVTZXJ2aWNlID0gaW5qZWN0KFRhYmxlU2VydmljZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldFRhYmxlKHRhYmxlOiBUYWJsZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJsZSA9IHRhYmxlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0SW5pdGlhbFN0YXRlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLmdldFRhYmxlU3RhdGUoKTtcbiAgICAgICAgY29uc3QgY29sdW1ucyA9IHRoaXMuX3RhYmxlLmdldFRhYmxlQ29sdW1ucygpO1xuICAgICAgICBjb25zdCBwYWdlID0gcHJldlN0YXRlLnBhZ2U7XG4gICAgICAgIGNvbnN0IHZpc2libGVDb2x1bW5zID1cbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbFZpc2libGVDb2x1bW5zIHx8XG4gICAgICAgICAgICAocHJldlN0YXRlLmNvbHVtbnMubGVuZ3RoID8gcHJldlN0YXRlLmNvbHVtbnMgOiBjb2x1bW5zLmZpbHRlcigoYykgPT4gYy52aXNpYmxlKS5tYXAoKHsgbmFtZSB9KSA9PiBuYW1lKSk7XG5cbiAgICAgICAgY29uc3QgZGlyZWN0aXZlSW5pdGlhbFBhZ2UgPSB0aGlzLmluaXRpYWxQYWdlID8/IDE7XG5cbiAgICAgICAgdGhpcy5fdGFibGUuX2xvYWRQcmV2aW91c1BhZ2VzID1cbiAgICAgICAgICAgIHRoaXMuX3RhYmxlLnBhZ2VTY3JvbGxpbmcgJiYgdGhpcy5fdGFibGUubG9hZFBhZ2VzQmVmb3JlICYmIGRpcmVjdGl2ZUluaXRpYWxQYWdlID4gMTtcblxuICAgICAgICBjb25zdCBpbml0aWFsUGFnZSA9IHRoaXMuX3RhYmxlLl9sb2FkUHJldmlvdXNQYWdlc1xuICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICA6IGRpcmVjdGl2ZUluaXRpYWxQYWdlIDwgcGFnZS5jdXJyZW50UGFnZVxuICAgICAgICAgICAgICA/IHBhZ2UuY3VycmVudFBhZ2VcbiAgICAgICAgICAgICAgOiBkaXJlY3RpdmVJbml0aWFsUGFnZTtcblxuICAgICAgICBjb25zdCBpbml0aWFsUGFnZVNpemUgPVxuICAgICAgICAgICAgKHRoaXMuX3RhYmxlLl9sb2FkUHJldmlvdXNQYWdlcyA/IGRpcmVjdGl2ZUluaXRpYWxQYWdlIDogaW5pdGlhbFBhZ2UpICpcbiAgICAgICAgICAgICh0aGlzLl90YWJsZS5wYWdlU2l6ZSB8fCBwYWdlLnBhZ2VTaXplKTtcblxuICAgICAgICB0aGlzLnNldFRhYmxlU3RhdGUoe1xuICAgICAgICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgICAgICAgY29sdW1uczogdmlzaWJsZUNvbHVtbnMsXG4gICAgICAgICAgICBjb2x1bW5LZXlzOiBjb2x1bW5zLmZpbHRlcigoYykgPT4gdmlzaWJsZUNvbHVtbnMuaW5jbHVkZXMoYy5uYW1lKSkubWFwKChjKSA9PiBjLmtleSksXG4gICAgICAgICAgICBzb3J0Qnk6IHRoaXMuaW5pdGlhbFNvcnRCeSB8fCBwcmV2U3RhdGUuc29ydEJ5LFxuICAgICAgICAgICAgZmlsdGVyQnk6IHRoaXMuaW5pdGlhbEZpbHRlckJ5IHx8IHByZXZTdGF0ZS5maWx0ZXJCeSxcbiAgICAgICAgICAgIGdyb3VwQnk6IHRoaXMuaW5pdGlhbEdyb3VwQnkgfHwgcHJldlN0YXRlLmdyb3VwQnksXG4gICAgICAgICAgICBmcmVlemVUb0NvbHVtbjogdGhpcy5fdGFibGUuZnJlZXplQ29sdW1uc1RvIHx8IHByZXZTdGF0ZS5mcmVlemVUb0NvbHVtbixcbiAgICAgICAgICAgIGZyZWV6ZVRvRW5kQ29sdW1uOiB0aGlzLl90YWJsZS5mcmVlemVFbmRDb2x1bW5zVG8gfHwgcHJldlN0YXRlLmZyZWV6ZVRvRW5kQ29sdW1uLFxuICAgICAgICAgICAgcGFnZToge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlOiBpbml0aWFsUGFnZSxcbiAgICAgICAgICAgICAgICBwYWdlU2l6ZTogaW5pdGlhbFBhZ2VTaXplXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBHZXQgY3VycmVudCBzdGF0ZS9zZXR0aW5ncyBvZiB0aGUgVGFibGUuICovXG4gICAgZ2V0VGFibGVTdGF0ZSgpOiBUYWJsZVN0YXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlU2VydmljZS5nZXRUYWJsZVN0YXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIFNldCBjdXJyZW50IHN0YXRlL3NldHRpbmdzIG9mIHRoZSBUYWJsZS4gKi9cbiAgICBzZXRUYWJsZVN0YXRlKHN0YXRlOiBUYWJsZVN0YXRlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RhYmxlU2VydmljZS5zZXRUYWJsZVN0YXRlKHN0YXRlKTtcbiAgICB9XG59XG4iXX0=","import { DestroyRef, Directive, DOCUMENT, ElementRef, forwardRef, inject, NgZone } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent, Observable } from 'rxjs';\nimport { filter, share, tap } from 'rxjs/operators';\nimport { TABLE_SCROLLABLE, TableScrollDispatcherService } from '../services/table-scroll-dispatcher.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../services/table-scroll-dispatcher.service\";\n/**\n * Table Scrollable.\n * That directive should be assigned to table scrollable area.\n * It registers itself in table scroll dispatcher\n * and notify once element scrolled.\n *\n * For internal usage.\n */\nexport class TableScrollableDirective {\n /** @hidden */\n constructor(elementRef, scrollDispatcher, ngZone) {\n this.elementRef = elementRef;\n this.scrollDispatcher = scrollDispatcher;\n this.ngZone = ngZone;\n /** @hidden */\n this._skipEvent = false;\n /** @hidden */\n this._prevScrollTop = 0;\n /** @hidden */\n this._prevScrollLeft = 0;\n /** @hidden */\n this._destroyRef = inject(DestroyRef);\n /** @hidden */\n this._document = inject(DOCUMENT);\n /** Scroll events stream */\n this._elementScrollStream = new Observable((observer) => {\n const subscription = this.ngZone.runOutsideAngular(() => fromEvent(this.elementRef.nativeElement, 'scroll').subscribe(observer));\n return () => subscription.unsubscribe();\n }).pipe(filter(() => {\n if (this._skipEvent) {\n this._skipEvent = false;\n return false;\n }\n return true;\n }), takeUntilDestroyed(this._destroyRef), share());\n /** Vertical scroll stream */\n this._elementVerticalScrollStream = this._elementScrollStream.pipe(filter(() => this._prevScrollTop !== this.getScrollTop()), tap(() => (this._prevScrollTop = this.getScrollTop())));\n /** Horizontal scroll stream */\n this._elementHorizontalScrollStream = this._elementScrollStream.pipe(filter(() => this._prevScrollLeft !== this.getScrollLeft()), tap(() => (this._prevScrollLeft = this.getScrollLeft())));\n }\n /** @hidden */\n ngOnInit() {\n this.scrollDispatcher.register(this);\n }\n /** @hidden */\n ngOnDestroy() {\n this.scrollDispatcher.deregister(this);\n }\n /** Returns observable that emits when a scroll event is fired on the host element. */\n getScrollStream() {\n return this._elementScrollStream;\n }\n /** Returns observable that emits when a vertical scroll event is happened on the host element. */\n getVerticalScrollStream() {\n return this._elementVerticalScrollStream;\n }\n /** Returns observable that emits when a horizontal scroll event is happened on the host element. */\n getHorizontalScrollStream() {\n return this._elementHorizontalScrollStream;\n }\n /** Returns scrollTop position of the host element. */\n getScrollTop() {\n return this.elementRef.nativeElement?.scrollTop;\n }\n /** Returns scrollLeft position of the host element. */\n getScrollLeft() {\n return this.elementRef.nativeElement?.scrollLeft;\n }\n /** Set scrollTop position of the host element. */\n setScrollTop(scrollTop, emitEvent = true) {\n if (!this.elementRef.nativeElement || this.elementRef.nativeElement.scrollTop === scrollTop) {\n return;\n }\n this._skipEvent = !emitEvent;\n this.elementRef.nativeElement.scrollTop = scrollTop;\n }\n /** Set scrollLeft position of the host element. */\n setScrollLeft(scrollLeft, emitEvent = true) {\n if (!this.elementRef.nativeElement || this.elementRef.nativeElement.scrollLeft === scrollLeft) {\n return;\n }\n this._skipEvent = !emitEvent;\n this.elementRef.nativeElement.scrollLeft = scrollLeft;\n }\n /** Scrolls to overlapped cell. */\n scrollToOverlappedCell(rtl, freezableColumnsSize, freezableEndColumnSize) {\n const tableScrollableEl = this.elementRef.nativeElement;\n const isRtl = rtl;\n if ((freezableColumnsSize || freezableEndColumnSize) &&\n tableScrollableEl.scrollWidth > tableScrollableEl.clientWidth) {\n const activeEl = this._document.activeElement;\n if (activeEl &&\n !(activeEl.classList.contains('fd-table__cell--fixed') ||\n activeEl.classList.contains('fd-table__cell--fixed-end'))) {\n if (freezableColumnsSize && !freezableEndColumnSize) {\n activeEl.scrollIntoView({ block: 'nearest', inline: 'end' });\n }\n else if (!freezableColumnsSize && freezableEndColumnSize) {\n activeEl.scrollIntoView({ block: 'nearest', inline: 'center' });\n }\n else if (freezableColumnsSize && freezableEndColumnSize) {\n // check to see if another element obstructs the active element\n const activeElmRect = activeEl.getBoundingClientRect();\n const activeElLeft = activeElmRect.left;\n const activeElTop = activeElmRect.top;\n const activeElWidth = activeElmRect.width;\n const topElementFromLeft = this._document.elementFromPoint(activeElLeft, activeElTop);\n // if the activeEl is overlapped\n if (topElementFromLeft &&\n !activeEl.isSameNode(topElementFromLeft) &&\n topElementFromLeft.classList.contains('fd-table__cell--fixed-end')) {\n const topElementX = topElementFromLeft.getBoundingClientRect().left;\n const leftVal = isRtl\n ? (activeElLeft + activeElWidth - topElementX) * -1\n : activeElLeft + activeElWidth - topElementX;\n tableScrollableEl.scrollBy({ top: 0, left: leftVal });\n }\n else if (topElementFromLeft &&\n !activeEl.isSameNode(topElementFromLeft) &&\n topElementFromLeft.classList.contains('fd-table__cell--fixed')) {\n const topElementX = topElementFromLeft.getBoundingClientRect().right;\n const leftVal = isRtl\n ? (activeElLeft - activeElWidth - topElementX) * -1\n : activeElLeft - activeElWidth - topElementX;\n tableScrollableEl.scrollBy({ top: 0, left: leftVal });\n }\n }\n }\n }\n }\n /** Set Scroll Position during component initialization. */\n initializeScrollTop(scrollTop) {\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n this.setScrollTop(scrollTop, false);\n });\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableScrollableDirective, deps: [{ token: i0.ElementRef }, { token: i1.TableScrollDispatcherService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: TableScrollableDirective, isStandalone: true, selector: \"[fdpTableScrollable]\", providers: [{ provide: TABLE_SCROLLABLE, useExisting: forwardRef(() => TableScrollableDirective) }], exportAs: [\"tableScrollable\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableScrollableDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[fdpTableScrollable]',\n exportAs: 'tableScrollable',\n standalone: true,\n providers: [{ provide: TABLE_SCROLLABLE, useExisting: forwardRef(() => TableScrollableDirective) }]\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.TableScrollDispatcherService }, { type: i0.NgZone }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc2Nyb2xsYWJsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvZGlyZWN0aXZlcy90YWJsZS1zY3JvbGxhYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsVUFBVSxFQUNWLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLFVBQVUsRUFDVixNQUFNLEVBQ04sTUFBTSxFQUdULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFZLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFDSCxnQkFBZ0IsRUFFaEIsNEJBQTRCLEVBQy9CLE1BQU0sNkNBQTZDLENBQUM7OztBQUVyRDs7Ozs7OztHQU9HO0FBT0gsTUFBTSxPQUFPLHdCQUF3QjtJQThDakMsY0FBYztJQUNkLFlBQ1csVUFBbUMsRUFDaEMsZ0JBQThDLEVBQzlDLE1BQWM7UUFGakIsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFDaEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUE4QjtRQUM5QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBakQ1QixjQUFjO1FBQ04sZUFBVSxHQUFHLEtBQUssQ0FBQztRQUUzQixjQUFjO1FBQ04sbUJBQWMsR0FBRyxDQUFDLENBQUM7UUFFM0IsY0FBYztRQUNOLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO1FBRTVCLGNBQWM7UUFDRyxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVsRCxjQUFjO1FBQ0csY0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FB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QixFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHlCQUF5QixDQUFDLEVBQUUsQ0FBQztpQkFDdEciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIERlc3Ryb3lSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIERPQ1VNRU5ULFxuICAgIEVsZW1lbnRSZWYsXG4gICAgZm9yd2FyZFJlZixcbiAgICBpbmplY3QsXG4gICAgTmdab25lLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIE9ic2VydmFibGUsIE9ic2VydmVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHNoYXJlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICAgIFRBQkxFX1NDUk9MTEFCTEUsXG4gICAgVGFibGVTY3JvbGxhYmxlLFxuICAgIFRhYmxlU2Nyb2xsRGlzcGF0Y2hlclNlcnZpY2Vcbn0gZnJvbSAnLi4vc2VydmljZXMvdGFibGUtc2Nyb2xsLWRpc3BhdGNoZXIuc2VydmljZSc7XG5cbi8qKlxuICogVGFibGUgU2Nyb2xsYWJsZS5cbiAqIFRoYXQgZGlyZWN0aXZlIHNob3VsZCBiZSBhc3NpZ25lZCB0byB0YWJsZSBzY3JvbGxhYmxlIGFyZWEuXG4gKiBJdCByZWdpc3RlcnMgaXRzZWxmIGluIHRhYmxlIHNjcm9sbCBkaXNwYXRjaGVyXG4gKiBhbmQgbm90aWZ5IG9uY2UgZWxlbWVudCBzY3JvbGxlZC5cbiAqXG4gKiBGb3IgaW50ZXJuYWwgdXNhZ2UuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2ZkcFRhYmxlU2Nyb2xsYWJsZV0nLFxuICAgIGV4cG9ydEFzOiAndGFibGVTY3JvbGxhYmxlJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogVEFCTEVfU0NST0xMQUJMRSwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGFibGVTY3JvbGxhYmxlRGlyZWN0aXZlKSB9XVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZVNjcm9sbGFibGVEaXJlY3RpdmUgaW1wbGVtZW50cyBUYWJsZVNjcm9sbGFibGUsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NraXBFdmVudCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wcmV2U2Nyb2xsVG9wID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJldlNjcm9sbExlZnQgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG5cbiAgICAvKiogU2Nyb2xsIGV2ZW50cyBzdHJlYW0gKi9cbiAgICBwcml2YXRlIF9lbGVtZW50U2Nyb2xsU3RyZWFtOiBPYnNlcnZhYmxlPEV2ZW50PiA9IG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcjogT2JzZXJ2ZXI8RXZlbnQ+KSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+XG4gICAgICAgICAgICBmcm9tRXZlbnQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdzY3JvbGwnKS5zdWJzY3JpYmUob2JzZXJ2ZXIpXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiAoKSA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9KS5waXBlKFxuICAgICAgICBmaWx0ZXIoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3NraXBFdmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NraXBFdmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpLFxuICAgICAgICBzaGFyZSgpXG4gICAgKTtcblxuICAgIC8qKiBWZXJ0aWNhbCBzY3JvbGwgc3RyZWFtICovXG4gICAgcHJpdmF0ZSBfZWxlbWVudFZlcnRpY2FsU2Nyb2xsU3RyZWFtOiBPYnNlcnZhYmxlPEV2ZW50PiA9IHRoaXMuX2VsZW1lbnRTY3JvbGxTdHJlYW0ucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuX3ByZXZTY3JvbGxUb3AgIT09IHRoaXMuZ2V0U2Nyb2xsVG9wKCkpLFxuICAgICAgICB0YXAoKCkgPT4gKHRoaXMuX3ByZXZTY3JvbGxUb3AgPSB0aGlzLmdldFNjcm9sbFRvcCgpKSlcbiAgICApO1xuXG4gICAgLyoqIEhvcml6b250YWwgc2Nyb2xsIHN0cmVhbSAqL1xuICAgIHByaXZhdGUgX2VsZW1lbnRIb3Jpem9udGFsU2Nyb2xsU3RyZWFtOiBPYnNlcnZhYmxlPEV2ZW50PiA9IHRoaXMuX2VsZW1lbnRTY3JvbGxTdHJlYW0ucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuX3ByZXZTY3JvbGxMZWZ0ICE9PSB0aGlzLmdldFNjcm9sbExlZnQoKSksXG4gICAgICAgIHRhcCgoKSA9PiAodGhpcy5fcHJldlNjcm9sbExlZnQgPSB0aGlzLmdldFNjcm9sbExlZnQoKSkpXG4gICAgKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcHJvdGVjdGVkIHNjcm9sbERpc3BhdGNoZXI6IFRhYmxlU2Nyb2xsRGlzcGF0Y2hlclNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBuZ1pvbmU6IE5nWm9uZVxuICAgICkge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2Nyb2xsRGlzcGF0Y2hlci5yZWdpc3Rlcih0aGlzKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNjcm9sbERpc3BhdGNoZXIuZGVyZWdpc3Rlcih0aGlzKTtcbiAgICB9XG5cbiAgICAvKiogUmV0dXJucyBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgd2hlbiBhIHNjcm9sbCBldmVudCBpcyBmaXJlZCBvbiB0aGUgaG9zdCBlbGVtZW50LiAqL1xuICAgIGdldFNjcm9sbFN0cmVhbSgpOiBPYnNlcnZhYmxlPEV2ZW50PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50U2Nyb2xsU3RyZWFtO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIG9ic2VydmFibGUgdGhhdCBlbWl0cyB3aGVuIGEgdmVydGljYWwgc2Nyb2xsIGV2ZW50IGlzIGhhcHBlbmVkIG9uIHRoZSBob3N0IGVsZW1lbnQuICovXG4gICAgZ2V0VmVydGljYWxTY3JvbGxTdHJlYW0oKTogT2JzZXJ2YWJsZTxFdmVudD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudFZlcnRpY2FsU2Nyb2xsU3RyZWFtO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIG9ic2VydmFibGUgdGhhdCBlbWl0cyB3aGVuIGEgaG9yaXpvbnRhbCBzY3JvbGwgZXZlbnQgaXMgaGFwcGVuZWQgb24gdGhlIGhvc3QgZWxlbWVudC4gKi9cbiAgICBnZXRIb3Jpem9udGFsU2Nyb2xsU3RyZWFtKCk6IE9ic2VydmFibGU8RXZlbnQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRIb3Jpem9udGFsU2Nyb2xsU3RyZWFtO1xuICAgIH1cblxuICAgIC8qKiBSZXR1cm5zIHNjcm9sbFRvcCBwb3NpdGlvbiBvZiB0aGUgaG9zdCBlbGVtZW50LiAqL1xuICAgIGdldFNjcm9sbFRvcCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ/LnNjcm9sbFRvcDtcbiAgICB9XG5cbiAgICAvKiogUmV0dXJucyBzY3JvbGxMZWZ0IHBvc2l0aW9uIG9mIHRoZSBob3N0IGVsZW1lbnQuICovXG4gICAgZ2V0U2Nyb2xsTGVmdCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ/LnNjcm9sbExlZnQ7XG4gICAgfVxuXG4gICAgLyoqIFNldCBzY3JvbGxUb3AgcG9zaXRpb24gb2YgdGhlIGhvc3QgZWxlbWVudC4gKi9cbiAgICBzZXRTY3JvbGxUb3Aoc2Nyb2xsVG9wOiBudW1iZXIsIGVtaXRFdmVudCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCB8fCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPT09IHNjcm9sbFRvcCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NraXBFdmVudCA9ICFlbWl0RXZlbnQ7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcbiAgICB9XG5cbiAgICAvKiogU2V0IHNjcm9sbExlZnQgcG9zaXRpb24gb2YgdGhlIGhvc3QgZWxlbWVudC4gKi9cbiAgICBzZXRTY3JvbGxMZWZ0KHNjcm9sbExlZnQ6IG51bWJlciwgZW1pdEV2ZW50ID0gdHJ1ZSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IHx8IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPT09IHNjcm9sbExlZnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9za2lwRXZlbnQgPSAhZW1pdEV2ZW50O1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gc2Nyb2xsTGVmdDtcbiAgICB9XG5cbiAgICAvKiogU2Nyb2xscyB0byBvdmVybGFwcGVkIGNlbGwuICovXG4gICAgc2Nyb2xsVG9PdmVybGFwcGVkQ2VsbChydGw6IGJvb2xlYW4sIGZyZWV6YWJsZUNvbHVtbnNTaXplOiBudW1iZXIsIGZyZWV6YWJsZUVuZENvbHVtblNpemU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCB0YWJsZVNjcm9sbGFibGVFbCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBpc1J0bCA9IHJ0bDtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAoZnJlZXphYmxlQ29sdW1uc1NpemUgfHwgZnJlZXphYmxlRW5kQ29sdW1uU2l6ZSkgJiZcbiAgICAgICAgICAgIHRhYmxlU2Nyb2xsYWJsZUVsLnNjcm9sbFdpZHRoID4gdGFibGVTY3JvbGxhYmxlRWwuY2xpZW50V2lkdGhcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBhY3RpdmVFbCA9IHRoaXMuX2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgYWN0aXZlRWwgJiZcbiAgICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmVFbC5jbGFzc0xpc3QuY29udGFpbnMoJ2ZkLXRhYmxlX19jZWxsLS1maXhlZCcpIHx8XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZUVsLmNsYXNzTGlzdC5jb250YWlucygnZmQtdGFibGVfX2NlbGwtLWZpeGVkLWVuZCcpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZyZWV6YWJsZUNvbHVtbnNTaXplICYmICFmcmVlemFibGVFbmRDb2x1bW5TaXplKSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZUVsLnNjcm9sbEludG9WaWV3KHsgYmxvY2s6ICduZWFyZXN0JywgaW5saW5lOiAnZW5kJyB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFmcmVlemFibGVDb2x1bW5zU2l6ZSAmJiBmcmVlemFibGVFbmRDb2x1bW5TaXplKSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZUVsLnNjcm9sbEludG9WaWV3KHsgYmxvY2s6ICduZWFyZXN0JywgaW5saW5lOiAnY2VudGVyJyB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZyZWV6YWJsZUNvbHVtbnNTaXplICYmIGZyZWV6YWJsZUVuZENvbHVtblNpemUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgdG8gc2VlIGlmIGFub3RoZXIgZWxlbWVudCBvYnN0cnVjdHMgdGhlIGFjdGl2ZSBlbGVtZW50XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUVsbVJlY3QgPSBhY3RpdmVFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlRWxMZWZ0ID0gYWN0aXZlRWxtUmVjdC5sZWZ0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmVFbFRvcCA9IGFjdGl2ZUVsbVJlY3QudG9wO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmVFbFdpZHRoID0gYWN0aXZlRWxtUmVjdC53aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9wRWxlbWVudEZyb21MZWZ0ID0gdGhpcy5fZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChhY3RpdmVFbExlZnQsIGFjdGl2ZUVsVG9wKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIGFjdGl2ZUVsIGlzIG92ZXJsYXBwZWRcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgdG9wRWxlbWVudEZyb21MZWZ0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhYWN0aXZlRWwuaXNTYW1lTm9kZSh0b3BFbGVtZW50RnJvbUxlZnQpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3BFbGVtZW50RnJvbUxlZnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdmZC10YWJsZV9fY2VsbC0tZml4ZWQtZW5kJylcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0b3BFbGVtZW50WCA9IHRvcEVsZW1lbnRGcm9tTGVmdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGVmdFZhbCA9IGlzUnRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAoYWN0aXZlRWxMZWZ0ICsgYWN0aXZlRWxXaWR0aCAtIHRvcEVsZW1lbnRYKSAqIC0xXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBhY3RpdmVFbExlZnQgKyBhY3RpdmVFbFdpZHRoIC0gdG9wRWxlbWVudFg7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJsZVNjcm9sbGFibGVFbC5zY3JvbGxCeSh7IHRvcDogMCwgbGVmdDogbGVmdFZhbCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcEVsZW1lbnRGcm9tTGVmdCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIWFjdGl2ZUVsLmlzU2FtZU5vZGUodG9wRWxlbWVudEZyb21MZWZ0KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdG9wRWxlbWVudEZyb21MZWZ0LmNsYXNzTGlzdC5jb250YWlucygnZmQtdGFibGVfX2NlbGwtLWZpeGVkJylcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0b3BFbGVtZW50WCA9IHRvcEVsZW1lbnRGcm9tTGVmdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5yaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxlZnRWYWwgPSBpc1J0bFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKGFjdGl2ZUVsTGVmdCAtIGFjdGl2ZUVsV2lkdGggLSB0b3BFbGVtZW50WCkgKiAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogYWN0aXZlRWxMZWZ0IC0gYWN0aXZlRWxXaWR0aCAtIHRvcEVsZW1lbnRYO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVTY3JvbGxhYmxlRWwuc2Nyb2xsQnkoeyB0b3A6IDAsIGxlZnQ6IGxlZnRWYWwgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogU2V0IFNjcm9sbCBQb3NpdGlvbiBkdXJpbmcgY29tcG9uZW50IGluaXRpYWxpemF0aW9uLiAqL1xuICAgIGluaXRpYWxpemVTY3JvbGxUb3Aoc2Nyb2xsVG9wOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTY3JvbGxUb3Aoc2Nyb2xsVG9wLCBmYWxzZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19","import { Directive, TemplateRef } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class FdpViewSettingsFilterCustomDef {\n /** @hidden */\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n /** @hidden */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdpViewSettingsFilterCustomDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: FdpViewSettingsFilterCustomDef, isStandalone: true, selector: \"[fdpViewSettingsFilterCustomDef]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: FdpViewSettingsFilterCustomDef, decorators: [{\n type: Directive,\n args: [{ selector: '[fdpViewSettingsFilterCustomDef]', standalone: true }]\n }], ctorParameters: () => [{ type: i0.TemplateRef }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdmlldy1zZXR0aW5ncy1maWx0ZXItY3VzdG9tLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9kaXJlY3RpdmVzL3RhYmxlLXZpZXctc2V0dGluZ3MtZmlsdGVyLWN1c3RvbS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVVyRSxrRUFBa0U7QUFDbEUsTUFBTSxPQUFPLDhCQUE4QjtJQUN2QyxjQUFjO0lBQ2QsWUFBbUIsV0FBK0Q7UUFBL0QsZ0JBQVcsR0FBWCxXQUFXLENBQW9EO0lBQUcsQ0FBQztJQUV0RixjQUFjO0lBQ2QsTUFBTSxDQUFDLHNCQUFzQixDQUN6QixHQUFtQyxFQUNuQyxHQUEwQztRQUUxQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOzhHQVZRLDhCQUE4QjtrR0FBOUIsOEJBQThCOzsyRkFBOUIsOEJBQThCO2tCQUYxQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLGtDQUFrQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5TW9kZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZkcFZpZXdTZXR0aW5nc0ZpbHRlckN1c3RvbURlZkNvbnRleHQge1xuICAgICRpbXBsaWNpdDogYW55O1xuICAgIHZhbHVlQ2hhbmdlRW1pdHRlcjogRXZlbnRFbWl0dGVyPHVua25vd24+O1xuICAgIGNvbnRlbnREZW5zaXR5OiBDb250ZW50RGVuc2l0eU1vZGU7XG59XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tmZHBWaWV3U2V0dGluZ3NGaWx0ZXJDdXN0b21EZWZdJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgY2xhc3MgRmRwVmlld1NldHRpbmdzRmlsdGVyQ3VzdG9tRGVmIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8RmRwVmlld1NldHRpbmdzRmlsdGVyQ3VzdG9tRGVmQ29udGV4dD4pIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKFxuICAgICAgICBkaXI6IEZkcFZpZXdTZXR0aW5nc0ZpbHRlckN1c3RvbURlZixcbiAgICAgICAgY3R4OiBGZHBWaWV3U2V0dGluZ3NGaWx0ZXJDdXN0b21EZWZDb250ZXh0XG4gICAgKTogY3R4IGlzIEZkcFZpZXdTZXR0aW5nc0ZpbHRlckN1c3RvbURlZkNvbnRleHQge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG4iXX0=","import { DestroyRef, Directive, inject, Input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ContentDensityMode } from '@fundamental-ngx/core/content-density';\nimport { BehaviorSubject, filter } from 'rxjs';\nimport { FDP_TABLE_DRAGGABLE_DIRECTIVE, FDP_TABLE_VIRTUAL_SCROLL_DIRECTIVE, ROW_HEIGHT } from '../constants';\nimport { TableVirtualScroll } from '../models';\nimport { TableScrollDispatcherService } from '../services/table-scroll-dispatcher.service';\nimport { TableService } from '../services/table.service';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../services/table.service\";\nexport class TableVirtualScrollDirective extends TableVirtualScroll {\n /** @hidden */\n constructor(_tableService) {\n super();\n this._tableService = _tableService;\n /** Whether to show only visible rows in matter of performance\n * false by default, when true setting bodyHeight and rowHeight is required.\n */\n this.virtualScroll = false;\n /** Cache size for the virtualScroll, default is 40 in each direction */\n this.renderAhead = 40;\n /**\n * Minimum height of the row, required for the virtualScroll,\n * default is 44px in cozy, 32px in compact and 24px in condensed (set automatically)\n */\n this.rowHeight = ROW_HEIGHT.get(ContentDensityMode.COZY);\n /** @hidden */\n this.virtualScrollTotalHeight = 0;\n /** @hidden */\n this.virtualScrollTransform$ = new BehaviorSubject(0);\n /** @hidden */\n this._virtualScrollCache = { startNodeIndex: -1, visibleNodeCount: -1, totalNodeCount: -1 };\n /** @hidden */\n this._tableScrollDispatcher = inject(TableScrollDispatcherService);\n /** @hidden */\n this._dndTableDirective = inject(FDP_TABLE_DRAGGABLE_DIRECTIVE, {\n optional: true\n });\n /** @hidden */\n this._destroyRef = inject(DestroyRef);\n }\n /** @hidden */\n ngOnChanges(changes) {\n if (!this._table.tableScrollable) {\n return;\n }\n if (this.virtualScroll && (changes['rowHeight'] || changes['virtualScroll'] || changes['renderAhead'])) {\n this.calculateVirtualScrollRows();\n }\n }\n /** Sets table reference. */\n setTable(table) {\n this._table = table;\n }\n /**\n * Calculates rows to be rendered in the table.\n */\n calculateVirtualScrollRows() {\n if (!this.virtualScroll || !this.bodyHeight || this._dndTableDirective?.dragDropInProgress) {\n return;\n }\n let rowHeight = this.rowHeight + 1;\n const tableContainerEl = this._table.tableContainer.nativeElement;\n if (this._tableService.poppingColumns$().length > 0) {\n const secondaryRows = tableContainerEl.getElementsByClassName('fd-table__row--secondary');\n if (secondaryRows[0]) {\n rowHeight = rowHeight + secondaryRows[0].clientHeight;\n }\n }\n const rowsVisible = this._table._tableRowsVisible;\n const currentlyRenderedRows = this._table.getCurrentlyRenderedRows();\n const totalNodeCount = rowsVisible.length;\n const scrollTop = this._table.tableScrollable.getScrollTop();\n let startNodeIndex = Math.floor(scrollTop / rowHeight) - this.renderAhead;\n startNodeIndex = Math.max(0, startNodeIndex);\n let visibleNodeCount = Math.ceil(tableContainerEl.clientHeight / rowHeight) + 2 * this.renderAhead;\n visibleNodeCount = Math.min(totalNodeCount - startNodeIndex, visibleNodeCount);\n this.virtualScrollTransform$.next(startNodeIndex * rowHeight);\n // Simple caching to avoid unnecessary re-renderings\n const isCached = startNodeIndex === this._virtualScrollCache.startNodeIndex &&\n visibleNodeCount === this._virtualScrollCache.visibleNodeCount &&\n totalNodeCount === this._virtualScrollCache.totalNodeCount &&\n // On rows change, even if the total number of rows is the same, the row object will be different\n startNodeIndex === currentlyRenderedRows[0];\n if (isCached) {\n return;\n }\n this._virtualScrollCache = { startNodeIndex, visibleNodeCount, totalNodeCount };\n this.virtualScrollTotalHeight = totalNodeCount * rowHeight - visibleNodeCount * rowHeight;\n this._table.setCurrentlyRenderedRows(startNodeIndex, rowsVisible.slice(startNodeIndex, startNodeIndex + visibleNodeCount).length);\n }\n /**\n * Initialises scroll listener.\n */\n listenOnVirtualScroll() {\n this._tableScrollDispatcher\n .verticallyScrolled()\n .pipe(filter(() => this.virtualScroll && !!this.bodyHeight), takeUntilDestroyed(this._destroyRef))\n .subscribe((scrollable) => {\n this.calculateVirtualScrollRows();\n this._table.setTableState({\n ...this._table.getTableState(),\n scrollTopPosition: scrollable.getScrollTop()\n });\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableVirtualScrollDirective, deps: [{ token: i1.TableService }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.1.4\", type: TableVirtualScrollDirective, isStandalone: true, selector: \"fdp-table[virtualScroll]\", inputs: { virtualScroll: \"virtualScroll\", renderAhead: \"renderAhead\", bodyHeight: \"bodyHeight\", rowHeight: \"rowHeight\", secondaryRowHeight: \"secondaryRowHeight\" }, providers: [\n {\n provide: FDP_TABLE_VIRTUAL_SCROLL_DIRECTIVE,\n useExisting: TableVirtualScrollDirective\n }\n ], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableVirtualScrollDirective, decorators: [{\n type: Directive,\n args: [{\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fdp-table[virtualScroll]',\n standalone: true,\n providers: [\n {\n provide: FDP_TABLE_VIRTUAL_SCROLL_DIRECTIVE,\n useExisting: TableVirtualScrollDirective\n }\n ]\n }]\n }], ctorParameters: () => [{ type: i1.TableService }], propDecorators: { virtualScroll: [{\n type: Input\n }], renderAhead: [{\n type: Input\n }], bodyHeight: [{\n type: Input\n }], rowHeight: [{\n type: Input\n }], secondaryRowHeight: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdmlydHVhbC1zY3JvbGwuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS90YWJsZS1oZWxwZXJzL2RpcmVjdGl2ZXMvdGFibGUtdmlydHVhbC1zY3JvbGwuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxrQ0FBa0MsRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0csT0FBTyxFQUFrQixrQkFBa0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMvRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUMzRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQWN6RCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsa0JBQWtCO0lBbUQvRCxjQUFjO0lBQ2QsWUFBcUIsYUFBMkI7UUFDNUMsS0FBSyxFQUFFLENBQUM7UUFEUyxrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQW5EaEQ7O1dBRUc7UUFFSCxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUV0Qix3RUFBd0U7UUFFeEUsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFNakI7OztXQUdHO1FBRUgsY0FBUyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFFLENBQUM7UUFRckQsY0FBYztRQUNkLDZCQUF3QixH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QUFDLGFBQWEsQ0FBQztnQkFDdEIsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRTtnQkFDOUIsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLFlBQVksRUFBRTthQUMvQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7OEdBNUlRLDJCQUEyQjtrR0FBM0IsMkJBQTJCLDJPQVB6QjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxrQ0FBa0M7Z0JBQzNDLFdBQVcsRUFBRSwyQkFBMkI7YUFDM0M7U0FDSjs7MkZBRVEsMkJBQTJCO2tCQVh2QyxTQUFTO21CQUFDO29CQUNQLDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsa0NBQWtDOzRCQUMzQyxXQUFXLDZCQUE2Qjt5QkFDM0M7cUJBQ0o7aUJBQ0o7aUZBTUcsYUFBYTtzQkFEWixLQUFLO2dCQUtOLFdBQVc7c0JBRFYsS0FBSztnQkFLTixVQUFVO3NCQURULEtBQUs7Z0JBUU4sU0FBUztzQkFEUixLQUFLO2dCQU9OLGtCQUFrQjtzQkFEakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIERpcmVjdGl2ZSwgaW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eU1vZGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlsdGVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGRFBfVEFCTEVfRFJBR0dBQkxFX0RJUkVDVElWRSwgRkRQX1RBQkxFX1ZJUlRVQUxfU0NST0xMX0RJUkVDVElWRSwgUk9XX0hFSUdIVCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUYWJsZURyYWdnYWJsZSwgVGFibGVWaXJ0dWFsU2Nyb2xsIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IFRhYmxlU2Nyb2xsRGlzcGF0Y2hlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90YWJsZS1zY3JvbGwtZGlzcGF0Y2hlci5zZXJ2aWNlJztcbmltcG9ydCB7IFRhYmxlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RhYmxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tICcuLi90YWJsZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdmZHAtdGFibGVbdmlydHVhbFNjcm9sbF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEUF9UQUJMRV9WSVJUVUFMX1NDUk9MTF9ESVJFQ1RJVkUsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogVGFibGVWaXJ0dWFsU2Nyb2xsRGlyZWN0aXZlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlVmlydHVhbFNjcm9sbERpcmVjdGl2ZSBleHRlbmRzIFRhYmxlVmlydHVhbFNjcm9sbCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgLyoqIFdoZXRoZXIgdG8gc2hvdyBvbmx5IHZpc2libGUgcm93cyBpbiBtYXR0ZXIgb2YgcGVyZm9ybWFuY2VcbiAgICAgKiBmYWxzZSBieSBkZWZhdWx0LCB3aGVuIHRydWUgc2V0dGluZyBib2R5SGVpZ2h0IGFuZCByb3dIZWlnaHQgaXMgcmVxdWlyZWQuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB2aXJ0dWFsU2Nyb2xsID0gZmFsc2U7XG5cbiAgICAvKiogQ2FjaGUgc2l6ZSBmb3IgdGhlIHZpcnR1YWxTY3JvbGwsIGRlZmF1bHQgaXMgNDAgaW4gZWFjaCBkaXJlY3Rpb24gKi9cbiAgICBASW5wdXQoKVxuICAgIHJlbmRlckFoZWFkID0gNDA7XG5cbiAgICAvKiogQm9keSBoZWlnaHQuICovXG4gICAgQElucHV0KClcbiAgICBib2R5SGVpZ2h0OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBNaW5pbXVtIGhlaWdodCBvZiB0aGUgcm93LCByZXF1aXJlZCBmb3IgdGhlIHZpcnR1YWxTY3JvbGwsXG4gICAgICogZGVmYXVsdCBpcyA0NHB4IGluIGNvenksIDMycHggaW4gY29tcGFjdCBhbmQgMjRweCBpbiBjb25kZW5zZWQgKHNldCBhdXRvbWF0aWNhbGx5KVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcm93SGVpZ2h0ID0gUk9XX0hFSUdIVC5nZXQoQ29udGVudERlbnNpdHlNb2RlLkNPWlkpITtcblxuICAgIC8qKlxuICAgICAqIE1pbmltdW0gaGVpZ2h0IG9mIHRoZSBwb3BwaW5nIGNvbHVtbiB3aGVuIGRpc3BsYXllZCBpbiBwb3AtaW4gbW9kZS4gUmVxdWlyZWQgd2hlbiB1c2luZyBwb3BwaW5nIGNvbHVtbnMgYW5kIHZpcnR1YWwgc2Nyb2xsLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2Vjb25kYXJ5Um93SGVpZ2h0OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHZpcnR1YWxTY3JvbGxUb3RhbEhlaWdodCA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHZpcnR1YWxTY3JvbGxUcmFuc2Zvcm0kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90YWJsZTogVGFibGU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ZpcnR1YWxTY3JvbGxDYWNoZSA9IHsgc3RhcnROb2RlSW5kZXg6IC0xLCB2aXNpYmxlTm9kZUNvdW50OiAtMSwgdG90YWxOb2RlQ291bnQ6IC0xIH07XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3RhYmxlU2Nyb2xsRGlzcGF0Y2hlciA9IGluamVjdChUYWJsZVNjcm9sbERpc3BhdGNoZXJTZXJ2aWNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZG5kVGFibGVEaXJlY3RpdmUgPSBpbmplY3Q8VGFibGVEcmFnZ2FibGU+KEZEUF9UQUJMRV9EUkFHR0FCTEVfRElSRUNUSVZFLCB7XG4gICAgICAgIG9wdGlvbmFsOiB0cnVlXG4gICAgfSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IF90YWJsZVNlcnZpY2U6IFRhYmxlU2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3RhYmxlLnRhYmxlU2Nyb2xsYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnZpcnR1YWxTY3JvbGwgJiYgKGNoYW5nZXNbJ3Jvd0hlaWdodCddIHx8IGNoYW5nZXNbJ3ZpcnR1YWxTY3JvbGwnXSB8fCBjaGFuZ2VzWydyZW5kZXJBaGVhZCddKSkge1xuICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVWaXJ0dWFsU2Nyb2xsUm93cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIFNldHMgdGFibGUgcmVmZXJlbmNlLiAqL1xuICAgIHNldFRhYmxlKHRhYmxlOiBUYWJsZSk6IHZvaWQge1xuICAgICAgICB0aGlzLl90YWJsZSA9IHRhYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgcm93cyB0byBiZSByZW5kZXJlZCBpbiB0aGUgdGFibGUuXG4gICAgICovXG4gICAgY2FsY3VsYXRlVmlydHVhbFNjcm9sbFJvd3MoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy52aXJ0dWFsU2Nyb2xsIHx8ICF0aGlzLmJvZHlIZWlnaHQgfHwgdGhpcy5fZG5kVGFibGVEaXJlY3RpdmU/LmRyYWdEcm9wSW5Qcm9ncmVzcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJvd0hlaWdodCA9IHRoaXMucm93SGVpZ2h0ICsgMTtcblxuICAgICAgICBjb25zdCB0YWJsZUNvbnRhaW5lckVsID0gdGhpcy5fdGFibGUudGFibGVDb250YWluZXIubmF0aXZlRWxlbWVudDtcblxuICAgICAgICBpZiAodGhpcy5fdGFibGVTZXJ2aWNlLnBvcHBpbmdDb2x1bW5zJCgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHNlY29uZGFyeVJvd3MgPSB0YWJsZUNvbnRhaW5lckVsLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2ZkLXRhYmxlX19yb3ctLXNlY29uZGFyeScpO1xuICAgICAgICAgICAgaWYgKHNlY29uZGFyeVJvd3NbMF0pIHtcbiAgICAgICAgICAgICAgICByb3dIZWlnaHQgPSByb3dIZWlnaHQgKyBzZWNvbmRhcnlSb3dzWzBdLmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJvd3NWaXNpYmxlID0gdGhpcy5fdGFibGUuX3RhYmxlUm93c1Zpc2libGU7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRseVJlbmRlcmVkUm93cyA9IHRoaXMuX3RhYmxlLmdldEN1cnJlbnRseVJlbmRlcmVkUm93cygpO1xuICAgICAgICBjb25zdCB0b3RhbE5vZGVDb3VudCA9IHJvd3NWaXNpYmxlLmxlbmd0aDtcbiAgICAgICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5fdGFibGUudGFibGVTY3JvbGxhYmxlLmdldFNjcm9sbFRvcCgpO1xuXG4gICAgICAgIGxldCBzdGFydE5vZGVJbmRleCA9IE1hdGguZmxvb3Ioc2Nyb2xsVG9wIC8gcm93SGVpZ2h0KSAtIHRoaXMucmVuZGVyQWhlYWQ7XG4gICAgICAgIHN0YXJ0Tm9kZUluZGV4ID0gTWF0aC5tYXgoMCwgc3RhcnROb2RlSW5kZXgpO1xuXG4gICAgICAgIGxldCB2aXNpYmxlTm9kZUNvdW50ID0gTWF0aC5jZWlsKHRhYmxlQ29udGFpbmVyRWwuY2xpZW50SGVpZ2h0IC8gcm93SGVpZ2h0KSArIDIgKiB0aGlzLnJlbmRlckFoZWFkO1xuICAgICAgICB2aXNpYmxlTm9kZUNvdW50ID0gTWF0aC5taW4odG90YWxOb2RlQ291bnQgLSBzdGFydE5vZGVJbmRleCwgdmlzaWJsZU5vZGVDb3VudCk7XG5cbiAgICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsVHJhbnNmb3JtJC5uZXh0KHN0YXJ0Tm9kZUluZGV4ICogcm93SGVpZ2h0KTtcblxuICAgICAgICAvLyBTaW1wbGUgY2FjaGluZyB0byBhdm9pZCB1bm5lY2Vzc2FyeSByZS1yZW5kZXJpbmdzXG4gICAgICAgIGNvbnN0IGlzQ2FjaGVkID1cbiAgICAgICAgICAgIHN0YXJ0Tm9kZUluZGV4ID09PSB0aGlzLl92aXJ0dWFsU2Nyb2xsQ2FjaGUuc3RhcnROb2RlSW5kZXggJiZcbiAgICAgICAgICAgIHZpc2libGVOb2RlQ291bnQgPT09IHRoaXMuX3ZpcnR1YWxTY3JvbGxDYWNoZS52aXNpYmxlTm9kZUNvdW50ICYmXG4gICAgICAgICAgICB0b3RhbE5vZGVDb3VudCA9PT0gdGhpcy5fdmlydHVhbFNjcm9sbENhY2hlLnRvdGFsTm9kZUNvdW50ICYmXG4gICAgICAgICAgICAvLyBPbiByb3dzIGNoYW5nZSwgZXZlbiBpZiB0aGUgdG90YWwgbnVtYmVyIG9mIHJvd3MgaXMgdGhlIHNhbWUsIHRoZSByb3cgb2JqZWN0IHdpbGwgYmUgZGlmZmVyZW50XG4gICAgICAgICAgICBzdGFydE5vZGVJbmRleCA9PT0gY3VycmVudGx5UmVuZGVyZWRSb3dzWzBdO1xuXG4gICAgICAgIGlmIChpc0NhY2hlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdmlydHVhbFNjcm9sbENhY2hlID0geyBzdGFydE5vZGVJbmRleCwgdmlzaWJsZU5vZGVDb3VudCwgdG90YWxOb2RlQ291bnQgfTtcbiAgICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsVG90YWxIZWlnaHQgPSB0b3RhbE5vZGVDb3VudCAqIHJvd0hlaWdodCAtIHZpc2libGVOb2RlQ291bnQgKiByb3dIZWlnaHQ7XG4gICAgICAgIHRoaXMuX3RhYmxlLnNldEN1cnJlbnRseVJlbmRlcmVkUm93cyhcbiAgICAgICAgICAgIHN0YXJ0Tm9kZUluZGV4LFxuICAgICAgICAgICAgcm93c1Zpc2libGUuc2xpY2Uoc3RhcnROb2RlSW5kZXgsIHN0YXJ0Tm9kZUluZGV4ICsgdmlzaWJsZU5vZGVDb3VudCkubGVuZ3RoXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGlzZXMgc2Nyb2xsIGxpc3RlbmVyLlxuICAgICAqL1xuICAgIGxpc3Rlbk9uVmlydHVhbFNjcm9sbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGFibGVTY3JvbGxEaXNwYXRjaGVyXG4gICAgICAgICAgICAudmVydGljYWxseVNjcm9sbGVkKClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLnZpcnR1YWxTY3JvbGwgJiYgISF0aGlzLmJvZHlIZWlnaHQpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc2Nyb2xsYWJsZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlVmlydHVhbFNjcm9sbFJvd3MoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl90YWJsZS5zZXRUYWJsZVN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5fdGFibGUuZ2V0VGFibGVTdGF0ZSgpLFxuICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb3BQb3NpdGlvbjogc2Nyb2xsYWJsZS5nZXRTY3JvbGxUb3AoKVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxufVxuIl19","import { Pipe } from '@angular/core';\nimport { ColumnAlign } from '../enums/column-align.enum';\nimport * as i0 from \"@angular/core\";\nexport class TableCellStylesPipe {\n /** @hidden */\n transform(column, isRtl, semanticHighlightingColumnWidth, selectionColumnWidth, isFrozenColumn, isFrozenEndColumn, prevColumnWidthPx, columnWidth, nextColumnWidthPx, noBorders, noHorizontalBorders, noVerticalBorders) {\n const styles = {};\n if (isFrozenColumn) {\n const key = isRtl ? 'right.px' : 'left.px';\n styles[key] =\n (semanticHighlightingColumnWidth || 0) + (selectionColumnWidth || 0) + (prevColumnWidthPx || 0);\n }\n if (isFrozenEndColumn) {\n const key = isRtl ? 'left.px' : 'right.px';\n styles[key] = (nextColumnWidthPx || 0).toString();\n }\n if (noHorizontalBorders) {\n styles['border-top'] = 'none';\n styles['border-bottom'] = 'none';\n }\n if (noVerticalBorders) {\n styles['border-left'] = 'none';\n styles['border-right'] = 'none';\n }\n if (noBorders) {\n styles['border'] = 'none';\n }\n else {\n styles['min-width'] = columnWidth;\n styles['max-width'] = columnWidth;\n styles['width'] = columnWidth;\n }\n // The \"start\" value does align left when you are using a LTR browser.\n // In RTL browsers, the \"start\" value aligns right.\n // Since we want to dynamically apply alignment only depending on the service value, we are using \"left\"/\"right\" as values instead\n switch (column.align) {\n case ColumnAlign.START:\n styles['text-align'] = isRtl ? 'right' : 'left';\n break;\n case ColumnAlign.END:\n styles['text-align'] = isRtl ? 'left' : 'right';\n break;\n default:\n styles['text-align'] = 'center';\n break;\n }\n return styles;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableCellStylesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: TableCellStylesPipe, isStandalone: true, name: \"tableCellStyles\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableCellStylesPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'tableCellStyles', standalone: true }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC1zdHlsZXMucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9waXBlcy9jZWxsLXN0eWxlcy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFJekQsTUFBTSxPQUFPLG1CQUFtQjtJQUM1QixjQUFjO0lBQ2QsU0FBUyxDQUNMLE1BQW1CLEVBQ25CLEtBQWMsRUFDZCwrQkFBOEMsRUFDOUMsb0JBQW1DLEVBQ25DLGNBQXVCLEVBQ3ZCLGlCQUEwQixFQUMxQixpQkFBZ0MsRUFDaEMsV0FBbUIsRUFDbkIsaUJBQWdDLEVBQ2hDLFNBQW1CLEVBQ25CLG1CQUE2QixFQUM3QixpQkFBMkI7UUFFM0IsTUFBTSxNQUFNLEdBQTRDLEVBQUUsQ0FBQztRQUUzRCxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDM0MsTUFBTSxDQUFDLEdBQUcsQ0FBQztnQkFDUCxDQUFDLCtCQUErQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN4RyxDQUFDO1FBRUQsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7WUFDM0MsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEQsQ0FBQztRQUVELElBQUksbUJBQW1CLEVBQUUsQ0FBQztZQUN0QixNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsTUFBTSxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDckMsQ0FBQztRQUVELElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUNwQixNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsTUFBTSxDQUFDO1lBQy9CLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDcEMsQ0FBQztRQUVELElBQUksU0FBUyxFQUFFLENBQUM7WUFDWixNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQzlCLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFdBQVcsQ0FBQztZQUNsQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsV0FBVyxDQUFDO1lBQ2xDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxXQUFXLENBQUM7UUFDbEMsQ0FBQztRQUVELHNFQUFzRTtRQUN0RSxtREFBbUQ7UUFDbkQsa0lBQWtJO1FBQ2xJLFFBQVEsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25CLEtBQUssV0FBVyxDQUFDLEtBQUs7Z0JBQ2xCLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO2dCQUNoRCxNQUFNO1lBQ1YsS0FBSyxXQUFXLENBQUMsR0FBRztnQkFDaEIsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7Z0JBQ2hELE1BQU07WUFDVjtnQkFDSSxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsUUFBUSxDQUFDO2dCQUNoQyxNQUFNO1FBQ2QsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7OEdBL0RRLG1CQUFtQjs0R0FBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUQvQixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb2x1bW5BbGlnbiB9IGZyb20gJy4uL2VudW1zL2NvbHVtbi1hbGlnbi5lbnVtJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vdGFibGUtY29sdW1uJztcblxuQFBpcGUoeyBuYW1lOiAndGFibGVDZWxsU3R5bGVzJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ2VsbFN0eWxlc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHRyYW5zZm9ybShcbiAgICAgICAgY29sdW1uOiBUYWJsZUNvbHVtbixcbiAgICAgICAgaXNSdGw6IGJvb2xlYW4sXG4gICAgICAgIHNlbWFudGljSGlnaGxpZ2h0aW5nQ29sdW1uV2lkdGg6IG51bWJlciB8IG51bGwsXG4gICAgICAgIHNlbGVjdGlvbkNvbHVtbldpZHRoOiBudW1iZXIgfCBudWxsLFxuICAgICAgICBpc0Zyb3plbkNvbHVtbjogYm9vbGVhbixcbiAgICAgICAgaXNGcm96ZW5FbmRDb2x1bW46IGJvb2xlYW4sXG4gICAgICAgIHByZXZDb2x1bW5XaWR0aFB4OiBudW1iZXIgfCBudWxsLFxuICAgICAgICBjb2x1bW5XaWR0aDogc3RyaW5nLFxuICAgICAgICBuZXh0Q29sdW1uV2lkdGhQeDogbnVtYmVyIHwgbnVsbCxcbiAgICAgICAgbm9Cb3JkZXJzPzogYm9vbGVhbixcbiAgICAgICAgbm9Ib3Jpem9udGFsQm9yZGVycz86IGJvb2xlYW4sXG4gICAgICAgIG5vVmVydGljYWxCb3JkZXJzPzogYm9vbGVhblxuICAgICk6IFJlY29yZDxzdHJpbmcsIG51bWJlciB8IHN0cmluZz4ge1xuICAgICAgICBjb25zdCBzdHlsZXM6IHsgW3Byb3BlcnR5OiBzdHJpbmddOiBudW1iZXIgfCBzdHJpbmcgfSA9IHt9O1xuXG4gICAgICAgIGlmIChpc0Zyb3plbkNvbHVtbikge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gaXNSdGwgPyAncmlnaHQucHgnIDogJ2xlZnQucHgnO1xuICAgICAgICAgICAgc3R5bGVzW2tleV0gPVxuICAgICAgICAgICAgICAgIChzZW1hbnRpY0hpZ2hsaWdodGluZ0NvbHVtbldpZHRoIHx8IDApICsgKHNlbGVjdGlvbkNvbHVtbldpZHRoIHx8IDApICsgKHByZXZDb2x1bW5XaWR0aFB4IHx8IDApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzRnJvemVuRW5kQ29sdW1uKSB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBpc1J0bCA/ICdsZWZ0LnB4JyA6ICdyaWdodC5weCc7XG4gICAgICAgICAgICBzdHlsZXNba2V5XSA9IChuZXh0Q29sdW1uV2lkdGhQeCB8fCAwKS50b1N0cmluZygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5vSG9yaXpvbnRhbEJvcmRlcnMpIHtcbiAgICAgICAgICAgIHN0eWxlc1snYm9yZGVyLXRvcCddID0gJ25vbmUnO1xuICAgICAgICAgICAgc3R5bGVzWydib3JkZXItYm90dG9tJ10gPSAnbm9uZSc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9WZXJ0aWNhbEJvcmRlcnMpIHtcbiAgICAgICAgICAgIHN0eWxlc1snYm9yZGVyLWxlZnQnXSA9ICdub25lJztcbiAgICAgICAgICAgIHN0eWxlc1snYm9yZGVyLXJpZ2h0J10gPSAnbm9uZSc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9Cb3JkZXJzKSB7XG4gICAgICAgICAgICBzdHlsZXNbJ2JvcmRlciddID0gJ25vbmUnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3R5bGVzWydtaW4td2lkdGgnXSA9IGNvbHVtbldpZHRoO1xuICAgICAgICAgICAgc3R5bGVzWydtYXgtd2lkdGgnXSA9IGNvbHVtbldpZHRoO1xuICAgICAgICAgICAgc3R5bGVzWyd3aWR0aCddID0gY29sdW1uV2lkdGg7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGUgXCJzdGFydFwiIHZhbHVlIGRvZXMgYWxpZ24gbGVmdCB3aGVuIHlvdSBhcmUgdXNpbmcgYSBMVFIgYnJvd3Nlci5cbiAgICAgICAgLy8gSW4gUlRMIGJyb3dzZXJzLCB0aGUgXCJzdGFydFwiIHZhbHVlIGFsaWducyByaWdodC5cbiAgICAgICAgLy8gU2luY2Ugd2Ugd2FudCB0byBkeW5hbWljYWxseSBhcHBseSBhbGlnbm1lbnQgb25seSBkZXBlbmRpbmcgb24gdGhlIHNlcnZpY2UgdmFsdWUsIHdlIGFyZSB1c2luZyBcImxlZnRcIi9cInJpZ2h0XCIgYXMgdmFsdWVzIGluc3RlYWRcbiAgICAgICAgc3dpdGNoIChjb2x1bW4uYWxpZ24pIHtcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uQWxpZ24uU1RBUlQ6XG4gICAgICAgICAgICAgICAgc3R5bGVzWyd0ZXh0LWFsaWduJ10gPSBpc1J0bCA/ICdyaWdodCcgOiAnbGVmdCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIENvbHVtbkFsaWduLkVORDpcbiAgICAgICAgICAgICAgICBzdHlsZXNbJ3RleHQtYWxpZ24nXSA9IGlzUnRsID8gJ2xlZnQnIDogJ3JpZ2h0JztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgc3R5bGVzWyd0ZXh0LWFsaWduJ10gPSAnY2VudGVyJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdHlsZXM7XG4gICAgfVxufVxuIl19","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class ColumnResizableSidePipe {\n /** @hidden */\n transform(columnIndex, visibleColumnsLength, navigationColumnShown) {\n if (columnIndex === 0) {\n return 'end';\n }\n const isLastColumn = columnIndex === visibleColumnsLength - 1;\n if (isLastColumn && navigationColumnShown) {\n return 'start';\n }\n return 'both';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ColumnResizableSidePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: ColumnResizableSidePipe, isStandalone: true, name: \"columnResizableSide\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: ColumnResizableSidePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'columnResizableSide', standalone: true }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXJlc2l6YWJsZS1zaWRlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvcGlwZXMvY29sdW1uLXJlc2l6YWJsZS1zaWRlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBSXBELE1BQU0sT0FBTyx1QkFBdUI7SUFDaEMsY0FBYztJQUNkLFNBQVMsQ0FDTCxXQUFtQixFQUNuQixvQkFBNEIsRUFDNUIscUJBQXFDO1FBRXJDLElBQUksV0FBVyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7UUFFRCxNQUFNLFlBQVksR0FBRyxXQUFXLEtBQUssb0JBQW9CLEdBQUcsQ0FBQyxDQUFDO1FBRTlELElBQUksWUFBWSxJQUFJLHFCQUFxQixFQUFFLENBQUM7WUFDeEMsT0FBTyxPQUFPLENBQUM7UUFDbkIsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7OEdBbEJRLHVCQUF1Qjs0R0FBdkIsdUJBQXVCOzsyRkFBdkIsdUJBQXVCO2tCQURuQyxJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUYWJsZUNvbHVtblJlc2l6YWJsZVNpZGUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3RhYmxlLWNlbGwtcmVzaXphYmxlLmRpcmVjdGl2ZSc7XG5cbkBQaXBlKHsgbmFtZTogJ2NvbHVtblJlc2l6YWJsZVNpZGUnLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgQ29sdW1uUmVzaXphYmxlU2lkZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHRyYW5zZm9ybShcbiAgICAgICAgY29sdW1uSW5kZXg6IG51bWJlcixcbiAgICAgICAgdmlzaWJsZUNvbHVtbnNMZW5ndGg6IG51bWJlcixcbiAgICAgICAgbmF2aWdhdGlvbkNvbHVtblNob3duOiBib29sZWFuIHwgbnVsbFxuICAgICk6IFRhYmxlQ29sdW1uUmVzaXphYmxlU2lkZSB7XG4gICAgICAgIGlmIChjb2x1bW5JbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuICdlbmQnO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNMYXN0Q29sdW1uID0gY29sdW1uSW5kZXggPT09IHZpc2libGVDb2x1bW5zTGVuZ3RoIC0gMTtcblxuICAgICAgICBpZiAoaXNMYXN0Q29sdW1uICYmIG5hdmlnYXRpb25Db2x1bW5TaG93bikge1xuICAgICAgICAgICAgcmV0dXJuICdzdGFydCc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJ2JvdGgnO1xuICAgIH1cbn1cbiJdfQ==","import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport const ARIA_SORT = {\n none: 'none',\n asc: 'ascending',\n desc: 'descending'\n};\nexport class TableColumnSortingDirectionPipe {\n /** @hidden */\n transform(sorting) {\n if (!sorting) {\n return 'none';\n }\n return ARIA_SORT[sorting.direction];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableColumnSortingDirectionPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: TableColumnSortingDirectionPipe, isStandalone: true, name: \"fdpTableColumnSortingDirection\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableColumnSortingDirectionPipe, decorators: [{\n type: Pipe,\n args: [{\n pure: true,\n standalone: true,\n name: 'fdpTableColumnSortingDirection'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXNvcnRpbmctZGlyZWN0aW9uLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvcGlwZXMvY29sdW1uLXNvcnRpbmctZGlyZWN0aW9uLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBS3BELE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBdUM7SUFDekQsSUFBSSxFQUFFLE1BQU07SUFDWixHQUFHLEVBQUUsV0FBVztJQUNoQixJQUFJLEVBQUUsWUFBWTtDQUNyQixDQUFDO0FBT0YsTUFBTSxPQUFPLCtCQUErQjtJQUN4QyxjQUFjO0lBQ2QsU0FBUyxDQUFDLE9BQWlDO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNYLE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEMsQ0FBQzs4R0FSUSwrQkFBK0I7NEdBQS9CLCtCQUErQjs7MkZBQS9CLCtCQUErQjtrQkFMM0MsSUFBSTttQkFBQztvQkFDRixJQUFJLEVBQUUsSUFBSTtvQkFDVixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFLGdDQUFnQztpQkFDekMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IFNvcnREaXJlY3Rpb24gfSBmcm9tICcuLi9lbnVtcyc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uU29ydCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgY29uc3QgQVJJQV9TT1JUOiBSZWNvcmQ8YCR7U29ydERpcmVjdGlvbn1gLCBzdHJpbmc+ID0ge1xuICAgIG5vbmU6ICdub25lJyxcbiAgICBhc2M6ICdhc2NlbmRpbmcnLFxuICAgIGRlc2M6ICdkZXNjZW5kaW5nJ1xufTtcblxuQFBpcGUoe1xuICAgIHB1cmU6IHRydWUsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAnZmRwVGFibGVDb2x1bW5Tb3J0aW5nRGlyZWN0aW9uJ1xufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbHVtblNvcnRpbmdEaXJlY3Rpb25QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB0cmFuc2Zvcm0oc29ydGluZzogTnVsbGFibGU8Q29sbGVjdGlvblNvcnQ+KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFzb3J0aW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gJ25vbmUnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIEFSSUFfU09SVFtzb3J0aW5nLmRpcmVjdGlvbl07XG4gICAgfVxufVxuIl19","import { Pipe } from '@angular/core';\nimport { isFunction, isString } from '@fundamental-ngx/platform/shared';\nimport { TableRowType } from '../enums/row-type.enum';\nimport * as i0 from \"@angular/core\";\nexport class RowClassesPipe {\n /** @hidden */\n transform(row, rowsClass) {\n const treeRowClass = row.type === TableRowType.TREE ? 'fdp-table__row--tree' : '';\n const rowClasses = this._getRowCustomCssClasses(row, rowsClass);\n return rowClasses.concat(' ', treeRowClass).trim();\n }\n /** @hidden */\n _getRowCustomCssClasses(row, rowsClass) {\n if (!rowsClass) {\n return '';\n }\n let rowClasses = '';\n if (isString(rowsClass)) {\n rowClasses = rowsClass;\n }\n if (isFunction(rowsClass)) {\n rowClasses = rowsClass(row.value) || '';\n }\n return rowClasses.trim();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: RowClassesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: RowClassesPipe, isStandalone: true, name: \"rowClasses\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: RowClassesPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'rowClasses', standalone: true }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWNsYXNzZXMucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vdGFibGUtaGVscGVycy9waXBlcy9yb3ctY2xhc3Nlcy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUl0RCxNQUFNLE9BQU8sY0FBYztJQUN2QixjQUFjO0lBQ2QsU0FBUyxDQUFDLEdBQWEsRUFBRSxTQUF3QjtRQUM3QyxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDbEYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUVoRSxPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFRCxjQUFjO0lBQ04sdUJBQXVCLENBQUMsR0FBYSxFQUFFLFNBQXdCO1FBQ25FLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNiLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUVwQixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3RCLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDM0IsQ0FBQztRQUVELElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDeEIsVUFBVSxHQUFJLFNBQWlCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyRCxDQUFDO1FBRUQsT0FBTyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0IsQ0FBQzs4R0ExQlEsY0FBYzs0R0FBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNGdW5jdGlvbiwgaXNTdHJpbmcgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBUYWJsZVJvd1R5cGUgfSBmcm9tICcuLi9lbnVtcy9yb3ctdHlwZS5lbnVtJztcbmltcG9ydCB7IFRhYmxlUm93LCBUYWJsZVJvd0NsYXNzIH0gZnJvbSAnLi4vbW9kZWxzJztcblxuQFBpcGUoeyBuYW1lOiAncm93Q2xhc3NlcycsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBSb3dDbGFzc2VzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgdHJhbnNmb3JtKHJvdzogVGFibGVSb3csIHJvd3NDbGFzczogVGFibGVSb3dDbGFzcyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHRyZWVSb3dDbGFzcyA9IHJvdy50eXBlID09PSBUYWJsZVJvd1R5cGUuVFJFRSA/ICdmZHAtdGFibGVfX3Jvdy0tdHJlZScgOiAnJztcbiAgICAgICAgY29uc3Qgcm93Q2xhc3NlcyA9IHRoaXMuX2dldFJvd0N1c3RvbUNzc0NsYXNzZXMocm93LCByb3dzQ2xhc3MpO1xuXG4gICAgICAgIHJldHVybiByb3dDbGFzc2VzLmNvbmNhdCgnICcsIHRyZWVSb3dDbGFzcykudHJpbSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0Um93Q3VzdG9tQ3NzQ2xhc3Nlcyhyb3c6IFRhYmxlUm93LCByb3dzQ2xhc3M6IFRhYmxlUm93Q2xhc3MpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXJvd3NDbGFzcykge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJvd0NsYXNzZXMgPSAnJztcblxuICAgICAgICBpZiAoaXNTdHJpbmcocm93c0NsYXNzKSkge1xuICAgICAgICAgICAgcm93Q2xhc3NlcyA9IHJvd3NDbGFzcztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKHJvd3NDbGFzcykpIHtcbiAgICAgICAgICAgIHJvd0NsYXNzZXMgPSAocm93c0NsYXNzIGFzIGFueSkocm93LnZhbHVlKSB8fCAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByb3dDbGFzc2VzLnRyaW0oKTtcbiAgICB9XG59XG4iXX0=","import { Pipe } from '@angular/core';\nimport { ContentDensityMode } from '@fundamental-ngx/core/content-density';\nimport { SELECTION_COLUMN_WIDTH } from '../constants';\nimport * as i0 from \"@angular/core\";\nexport class SelectionCellStylesPipe {\n /** @hidden */\n transform(contentDensity, rtl, semanticHighlightingColumnWidth) {\n if (!contentDensity) {\n contentDensity = ContentDensityMode.COZY;\n }\n const rtlKey = rtl ? 'right' : 'left';\n const selectionColumnWidth = SELECTION_COLUMN_WIDTH.get(contentDensity) + 'px';\n return {\n [rtlKey]: (semanticHighlightingColumnWidth || 0) + 'px',\n 'min-width': selectionColumnWidth,\n 'max-width': selectionColumnWidth\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SelectionCellStylesPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: SelectionCellStylesPipe, isStandalone: true, name: \"selectionCellStyles\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: SelectionCellStylesPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'selectionCellStyles', standalone: true }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWNlbGwtc3R5bGVzLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvcGlwZXMvc2VsZWN0aW9uLWNlbGwtc3R5bGVzLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFcEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUd0RCxNQUFNLE9BQU8sdUJBQXVCO0lBQ2hDLGNBQWM7SUFDZCxTQUFTLENBQ0wsY0FBNEMsRUFDNUMsR0FBWSxFQUNaLCtCQUE4QztRQUU5QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDbEIsY0FBYyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQztRQUM3QyxDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUN0QyxNQUFNLG9CQUFvQixHQUFHLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsR0FBRyxJQUFJLENBQUM7UUFFL0UsT0FBTztZQUNILENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQywrQkFBK0IsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJO1lBQ3ZELFdBQVcsRUFBRSxvQkFBb0I7WUFDakMsV0FBVyxFQUFFLG9CQUFvQjtTQUNwQyxDQUFDO0lBQ04sQ0FBQzs4R0FsQlEsdUJBQXVCOzRHQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBRG5DLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlNb2RlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBTRUxFQ1RJT05fQ09MVU1OX1dJRFRIIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuQFBpcGUoeyBuYW1lOiAnc2VsZWN0aW9uQ2VsbFN0eWxlcycsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBTZWxlY3Rpb25DZWxsU3R5bGVzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgdHJhbnNmb3JtKFxuICAgICAgICBjb250ZW50RGVuc2l0eTogTnVsbGFibGU8Q29udGVudERlbnNpdHlNb2RlPixcbiAgICAgICAgcnRsOiBib29sZWFuLFxuICAgICAgICBzZW1hbnRpY0hpZ2hsaWdodGluZ0NvbHVtbldpZHRoOiBudW1iZXIgfCBudWxsXG4gICAgKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgICAgIGlmICghY29udGVudERlbnNpdHkpIHtcbiAgICAgICAgICAgIGNvbnRlbnREZW5zaXR5ID0gQ29udGVudERlbnNpdHlNb2RlLkNPWlk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcnRsS2V5ID0gcnRsID8gJ3JpZ2h0JyA6ICdsZWZ0JztcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uQ29sdW1uV2lkdGggPSBTRUxFQ1RJT05fQ09MVU1OX1dJRFRILmdldChjb250ZW50RGVuc2l0eSkgKyAncHgnO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBbcnRsS2V5XTogKHNlbWFudGljSGlnaGxpZ2h0aW5nQ29sdW1uV2lkdGggfHwgMCkgKyAncHgnLFxuICAgICAgICAgICAgJ21pbi13aWR0aCc6IHNlbGVjdGlvbkNvbHVtbldpZHRoLFxuICAgICAgICAgICAgJ21heC13aWR0aCc6IHNlbGVjdGlvbkNvbHVtbldpZHRoXG4gICAgICAgIH07XG4gICAgfVxufVxuIl19","import { NgModule } from '@angular/core';\nimport { FdpCellDef, FdpEditableCellDef, FdpEditableCellFormDirective, FdpHeaderCellDef, FdpTableCell, FdpTableHeader, FdpViewSettingsFilterCustomDef, PlatformTableCellResizableDirective, PlatformTableColumnResponsiveDirective, TableCellHeaderPopoverDirective, TableDataSourceDirective, TableDraggableDirective, TableHeaderResizerDirective, TableInitialStateDirective, TableScrollableDirective, TableVirtualScrollDirective } from './directives';\nimport { ColumnResizableSidePipe, RowClassesPipe, SelectionCellStylesPipe, TableCellStylesPipe } from './pipes';\nimport * as i0 from \"@angular/core\";\nconst importExports = [\n TableInitialStateDirective,\n TableDraggableDirective,\n TableVirtualScrollDirective,\n PlatformTableColumnResponsiveDirective,\n FdpTableCell,\n TableCellHeaderPopoverDirective,\n PlatformTableCellResizableDirective,\n TableDataSourceDirective,\n TableDraggableDirective,\n FdpTableHeader,\n TableHeaderResizerDirective,\n TableInitialStateDirective,\n TableScrollableDirective,\n FdpCellDef,\n FdpEditableCellDef,\n FdpEditableCellFormDirective,\n FdpViewSettingsFilterCustomDef,\n TableVirtualScrollDirective,\n FdpHeaderCellDef,\n SelectionCellStylesPipe,\n TableCellStylesPipe,\n ColumnResizableSidePipe,\n RowClassesPipe\n];\nexport class TableHelpersModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableHelpersModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.1.4\", ngImport: i0, type: TableHelpersModule, imports: [TableInitialStateDirective,\n TableDraggableDirective,\n TableVirtualScrollDirective,\n PlatformTableColumnResponsiveDirective,\n FdpTableCell,\n TableCellHeaderPopoverDirective,\n PlatformTableCellResizableDirective,\n TableDataSourceDirective,\n TableDraggableDirective,\n FdpTableHeader,\n TableHeaderResizerDirective,\n TableInitialStateDirective,\n TableScrollableDirective,\n FdpCellDef,\n FdpEditableCellDef,\n FdpEditableCellFormDirective,\n FdpViewSettingsFilterCustomDef,\n TableVirtualScrollDirective,\n FdpHeaderCellDef,\n SelectionCellStylesPipe,\n TableCellStylesPipe,\n ColumnResizableSidePipe,\n RowClassesPipe], exports: [TableInitialStateDirective,\n TableDraggableDirective,\n TableVirtualScrollDirective,\n PlatformTableColumnResponsiveDirective,\n FdpTableCell,\n TableCellHeaderPopoverDirective,\n PlatformTableCellResizableDirective,\n TableDataSourceDirective,\n TableDraggableDirective,\n FdpTableHeader,\n TableHeaderResizerDirective,\n TableInitialStateDirective,\n TableScrollableDirective,\n FdpCellDef,\n FdpEditableCellDef,\n FdpEditableCellFormDirective,\n FdpViewSettingsFilterCustomDef,\n TableVirtualScrollDirective,\n FdpHeaderCellDef,\n SelectionCellStylesPipe,\n TableCellStylesPipe,\n ColumnResizableSidePipe,\n RowClassesPipe] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableHelpersModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.4\", ngImport: i0, type: TableHelpersModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [...importExports],\n exports: [...importExports]\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaGVscGVycy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvdGFibGUtaGVscGVycy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQ0gsVUFBVSxFQUNWLGtCQUFrQixFQUNsQiw0QkFBNEIsRUFDNUIsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixjQUFjLEVBQ2QsOEJBQThCLEVBQzlCLG1DQUFtQyxFQUNuQyxzQ0FBc0MsRUFDdEMsK0JBQStCLEVBQy9CLHdCQUF3QixFQUN4Qix1QkFBdUIsRUFDdkIsMkJBQTJCLEVBQzNCLDBCQUEwQixFQUMxQix3QkFBd0IsRUFDeEIsMkJBQTJCLEVBQzlCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxjQUFjLEVBQUUsdUJBQXVCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBRWhILE1BQU0sYUFBYSxHQUFHO0lBQ2xCLDBCQUEwQjtJQUMxQix1QkFBdUI7SUFDdkIsMkJBQTJCO0lBQzNCLHNDQUFzQztJQUN0QyxZQUFZO0lBQ1osK0JBQStCO0lBQy9CLG1DQUFtQztJQUNuQyx3QkFBd0I7SUFDeEIsdUJBQXVCO0lBQ3ZCLGNBQWM7SUFDZCwyQkFBMkI7SUFDM0IsMEJBQTBCO0lBQzFCLHdCQUF3QjtJQUN4QixVQUFVO0lBQ1Ysa0JBQWtCO0lBQ2xCLDRCQUE0QjtJQUM1Qiw4QkFBOEI7SUFDOUIsMkJBQTJCO0lBQzNCLGdCQUFnQjtJQUNoQix1QkFBdUI7SUFDdkIsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2QixjQUFjO0NBQ2pCLENBQUM7QUFNRixNQUFNLE9BQU8sa0JBQWtCOzhHQUFsQixrQkFBa0I7K0dBQWxCLGtCQUFrQixZQTdCM0IsMEJBQTBCO1lBQzFCLHVCQUF1QjtZQUN2QiwyQkFBMkI7WUFDM0Isc0NBQXNDO1lBQ3RDLFlBQVk7WUFDWiwrQkFBK0I7WUFDL0IsbUNBQW1DO1lBQ25DLHdCQUF3QjtZQUN4Qix1QkFBdUI7WUFDdkIsY0FBYztZQUNkLDJCQUEyQjtZQUMzQiwwQkFBMEI7WUFDMUIsd0JBQXdCO1lBQ3hCLFVBQVU7WUFDVixrQkFBa0I7WUFDbEIsNEJBQTRCO1lBQzVCLDhCQUE4QjtZQUM5QiwyQkFBMkI7WUFDM0IsZ0JBQWdCO1lBQ2hCLHVCQUF1QjtZQUN2QixtQkFBbUI7WUFDbkIsdUJBQXVCO1lBQ3ZCLGNBQWMsYUF0QmQsMEJBQTBCO1lBQzFCLHVCQUF1QjtZQUN2QiwyQkFBMkI7WUFDM0Isc0NBQXNDO1lBQ3RDLFlBQVk7WUFDWiwrQkFBK0I7WUFDL0IsbUNBQW1DO1lBQ25DLHdCQUF3QjtZQUN4Qix1QkFBdUI7WUFDdkIsY0FBYztZQUNkLDJCQUEyQjtZQUMzQiwwQkFBMEI7WUFDMUIsd0JBQXdCO1lBQ3hCLFVBQVU7WUFDVixrQkFBa0I7WUFDbEIsNEJBQTRCO1lBQzVCLDhCQUE4QjtZQUM5QiwyQkFBMkI7WUFDM0IsZ0JBQWdCO1lBQ2hCLHVCQUF1QjtZQUN2QixtQkFBbUI7WUFDbkIsdUJBQXVCO1lBQ3ZCLGNBQWM7K0dBT0wsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUo5QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDO29CQUMzQixPQUFPLEVBQUUsQ0FBQyxHQUFHLGFBQWEsQ0FBQztpQkFDOUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBGZHBDZWxsRGVmLFxuICAgIEZkcEVkaXRhYmxlQ2VsbERlZixcbiAgICBGZHBFZGl0YWJsZUNlbGxGb3JtRGlyZWN0aXZlLFxuICAgIEZkcEhlYWRlckNlbGxEZWYsXG4gICAgRmRwVGFibGVDZWxsLFxuICAgIEZkcFRhYmxlSGVhZGVyLFxuICAgIEZkcFZpZXdTZXR0aW5nc0ZpbHRlckN1c3RvbURlZixcbiAgICBQbGF0Zm9ybVRhYmxlQ2VsbFJlc2l6YWJsZURpcmVjdGl2ZSxcbiAgICBQbGF0Zm9ybVRhYmxlQ29sdW1uUmVzcG9uc2l2ZURpcmVjdGl2ZSxcbiAgICBUYWJsZUNlbGxIZWFkZXJQb3BvdmVyRGlyZWN0aXZlLFxuICAgIFRhYmxlRGF0YVNvdXJjZURpcmVjdGl2ZSxcbiAgICBUYWJsZURyYWdnYWJsZURpcmVjdGl2ZSxcbiAgICBUYWJsZUhlYWRlclJlc2l6ZXJEaXJlY3RpdmUsXG4gICAgVGFibGVJbml0aWFsU3RhdGVEaXJlY3RpdmUsXG4gICAgVGFibGVTY3JvbGxhYmxlRGlyZWN0aXZlLFxuICAgIFRhYmxlVmlydHVhbFNjcm9sbERpcmVjdGl2ZVxufSBmcm9tICcuL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgQ29sdW1uUmVzaXphYmxlU2lkZVBpcGUsIFJvd0NsYXNzZXNQaXBlLCBTZWxlY3Rpb25DZWxsU3R5bGVzUGlwZSwgVGFibGVDZWxsU3R5bGVzUGlwZSB9IGZyb20gJy4vcGlwZXMnO1xuXG5jb25zdCBpbXBvcnRFeHBvcnRzID0gW1xuICAgIFRhYmxlSW5pdGlhbFN0YXRlRGlyZWN0aXZlLFxuICAgIFRhYmxlRHJhZ2dhYmxlRGlyZWN0aXZlLFxuICAgIFRhYmxlVmlydHVhbFNjcm9sbERpcmVjdGl2ZSxcbiAgICBQbGF0Zm9ybVRhYmxlQ29sdW1uUmVzcG9uc2l2ZURpcmVjdGl2ZSxcbiAgICBGZHBUYWJsZUNlbGwsXG4gICAgVGFibGVDZWxsSGVhZGVyUG9wb3ZlckRpcmVjdGl2ZSxcbiAgICBQbGF0Zm9ybVRhYmxlQ2VsbFJlc2l6YWJsZURpcmVjdGl2ZSxcbiAgICBUYWJsZURhdGFTb3VyY2VEaXJlY3RpdmUsXG4gICAgVGFibGVEcmFnZ2FibGVEaXJlY3RpdmUsXG4gICAgRmRwVGFibGVIZWFkZXIsXG4gICAgVGFibGVIZWFkZXJSZXNpemVyRGlyZWN0aXZlLFxuICAgIFRhYmxlSW5pdGlhbFN0YXRlRGlyZWN0aXZlLFxuICAgIFRhYmxlU2Nyb2xsYWJsZURpcmVjdGl2ZSxcbiAgICBGZHBDZWxsRGVmLFxuICAgIEZkcEVkaXRhYmxlQ2VsbERlZixcbiAgICBGZHBFZGl0YWJsZUNlbGxGb3JtRGlyZWN0aXZlLFxuICAgIEZkcFZpZXdTZXR0aW5nc0ZpbHRlckN1c3RvbURlZixcbiAgICBUYWJsZVZpcnR1YWxTY3JvbGxEaXJlY3RpdmUsXG4gICAgRmRwSGVhZGVyQ2VsbERlZixcbiAgICBTZWxlY3Rpb25DZWxsU3R5bGVzUGlwZSxcbiAgICBUYWJsZUNlbGxTdHlsZXNQaXBlLFxuICAgIENvbHVtblJlc2l6YWJsZVNpZGVQaXBlLFxuICAgIFJvd0NsYXNzZXNQaXBlXG5dO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFsuLi5pbXBvcnRFeHBvcnRzXSxcbiAgICBleHBvcnRzOiBbLi4uaW1wb3J0RXhwb3J0c11cbn0pXG5leHBvcnQgY2xhc3MgVGFibGVIZWxwZXJzTW9kdWxlIHt9XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuZGFtZW50YWwtbmd4LXBsYXRmb3JtLXRhYmxlLWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3RhYmxlLWhlbHBlcnMvZnVuZGFtZW50YWwtbmd4LXBsYXRmb3JtLXRhYmxlLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":["i1.TableService","i2.Table","i1.TableResponsiveService","i2.TableColumn","i1.TableScrollDispatcherService","isDataSource","filter","isString"],"mappings":"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"}