@one-paragon/angular-utilities 1.2.11 → 1.2.13

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 (26) hide show
  1. package/action-state/ngrx.d.ts +1 -1
  2. package/esm2022/table-builder/classes/TableBuilderDataSource.mjs +18 -27
  3. package/esm2022/table-builder/classes/table-builder.mjs +2 -2
  4. package/esm2022/table-builder/classes/table-store.mjs +9 -13
  5. package/esm2022/table-builder/components/column-builder/column-helpers.mjs +1 -3
  6. package/esm2022/table-builder/components/gen-col-displayer/gen-col-displayer.component.mjs +11 -17
  7. package/esm2022/table-builder/components/generic-table/generic-table.component.mjs +21 -20
  8. package/esm2022/table-builder/components/generic-table/paginator.component.mjs +58 -56
  9. package/esm2022/table-builder/components/table-container/table-container.mjs +55 -51
  10. package/esm2022/table-builder/components/table-container/virtual-scroll-container.mjs +57 -34
  11. package/esm2022/table-builder/directives/tb-filter.directive.mjs +10 -19
  12. package/esm2022/table-builder/services/export-to-csv.service.mjs +6 -16
  13. package/fesm2022/one-paragon-angular-utilities.mjs +239 -242
  14. package/fesm2022/one-paragon-angular-utilities.mjs.map +1 -1
  15. package/package.json +1 -1
  16. package/table-builder/classes/TableBuilderDataSource.d.ts +4 -4
  17. package/table-builder/classes/table-store.d.ts +5 -3
  18. package/table-builder/components/gen-col-displayer/gen-col-displayer.component.d.ts +5 -3
  19. package/table-builder/components/generic-table/generic-table.component.d.ts +3 -1
  20. package/table-builder/components/generic-table/paginator.component.d.ts +20 -19
  21. package/table-builder/components/table-container/table-container-imports.d.ts +2 -2
  22. package/table-builder/components/table-container/table-container.d.ts +10 -11
  23. package/table-builder/components/table-container/virtual-scroll-container.d.ts +15 -2
  24. package/table-builder/directives/table-wrapper.directive.d.ts +1 -1
  25. package/table-builder/directives/tb-filter.directive.d.ts +2 -3
  26. package/table-builder/services/export-to-csv.service.d.ts +1 -6
@@ -1,11 +1,12 @@
1
- import { ChangeDetectionStrategy, Component, effect, forwardRef, untracked, viewChild, inject } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, effect, forwardRef, untracked, viewChild, inject, computed } from '@angular/core';
2
2
  import { CdkVirtualScrollViewport, ScrollingModule, VIRTUAL_SCROLL_STRATEGY, } from '@angular/cdk/scrolling';
3
- import { combineLatest, distinctUntilChanged, map } from 'rxjs';
4
- import { defaultShareReplay, subscriber } from '../../../rxjs';
3
+ import { switchMap } from 'rxjs';
4
+ import { notNull, subscriber } from '../../../rxjs';
5
5
  import { TableStore } from '../../classes/table-store';
6
6
  import { TableVirtualScrollStrategy } from '../scroll-strategy';
7
7
  import { VirtualScrollOptions } from '../../classes/table-builder-general-settings';
8
8
  import { DataStore } from '../../classes/data-store';
9
+ import { toObservable, toSignal } from '@angular/core/rxjs-interop';
9
10
  import * as i0 from "@angular/core";
10
11
  import * as i1 from "@angular/cdk/scrolling";
11
12
  export class VirtualScrollContainer {
@@ -14,47 +15,69 @@ export class VirtualScrollContainer {
14
15
  viewport = viewChild(CdkVirtualScrollViewport);
15
16
  defaultOptions = new VirtualScrollOptions();
16
17
  scrollStrategy = new TableVirtualScrollStrategy(this.computedRowHeight(), this.computedHeaderHeight());
17
- dataLength$ = combineLatest([this.state.state$, this.dataStore.state$]).pipe(map(([s, d]) => ({
18
- paginated: s.notPersistedTableSettings.usePaginator && !s.showAll,
19
- pageSize: s.userDefined?.pageSize || s.pageSize,
20
- pageNumber: s.currentPage,
21
- dataLen: d.dataLen
22
- })), distinctUntilChanged((a, b) => a.dataLen === b.dataLen &&
23
- a.pageSize === b.pageSize &&
24
- a.pageNumber === b.pageNumber &&
25
- a.paginated === b.paginated), map(({ dataLen, pageNumber, pageSize, paginated }) => {
18
+ $usePaginator = this.state.selectSignal(s => s.notPersistedTableSettings.usePaginator);
19
+ $pageSize = this.state.$pageSize;
20
+ $currentPage = this.state.$currentPage;
21
+ $showAll = this.state.selectSignal(s => s.showAll);
22
+ $stateDataLength = this.dataStore.selectSignal(s => s.dataLen);
23
+ $dataLength = computed(() => {
24
+ const paginated = this.$usePaginator() && !this.$showAll();
25
+ const pageSize = this.$pageSize();
26
+ const pageNumber = this.$currentPage();
27
+ const dataLen = this.$stateDataLength();
26
28
  if (paginated)
27
29
  return Math.min(dataLen - (pageNumber * pageSize), pageSize);
28
30
  return dataLen;
29
- }), distinctUntilChanged());
30
- subscriber = subscriber(this.dataLength$, (dataLength) => {
31
- this.scrollStrategy.setDataLength(dataLength);
32
- if (this.viewport()) {
33
- this.setSize(this.viewport().elementRef);
34
- }
35
31
  });
36
- _ = effect(() => {
32
+ constructor() {
33
+ addEventListener('resize', this.resizeHandler);
34
+ }
35
+ setViewportEffect = effect(() => {
37
36
  const viewport = this.viewport();
38
37
  untracked(() => {
39
38
  if (!!viewport) {
40
- addEventListener('resize', this.resizeHandler);
41
- this.subscriber.on(viewport.renderedRangeStream, (range) => {
42
- this.dataStore.patchState({
43
- virtualEnds: {
44
- start: range.start,
45
- end: range.end + 25,
46
- }
47
- });
48
- });
49
- var offset$ = viewport.scrolledIndexChange.pipe(map(() => viewport.getOffsetToRenderedContentStart() ?? 0), distinctUntilChanged(), defaultShareReplay());
50
- this.subscriber.on(offset$, (offset) => {
51
- this.dataStore.patchState({ virtualScrollOffset: offset });
52
- });
53
39
  this.setSize(this.viewport().elementRef);
54
40
  }
55
41
  ;
56
42
  });
57
43
  });
44
+ subscriber = subscriber();
45
+ onRenderedRangeEffect = effect(() => {
46
+ const renderedRange = this.$renderedRange();
47
+ if (!renderedRange)
48
+ return;
49
+ untracked(() => {
50
+ this.dataStore.patchState({
51
+ virtualEnds: {
52
+ start: renderedRange.start,
53
+ end: renderedRange.end + 25,
54
+ }
55
+ });
56
+ this.setSize(this.viewport().elementRef);
57
+ });
58
+ });
59
+ onDataLengthEffect = effect(() => {
60
+ const dataLength = this.$dataLength();
61
+ untracked(() => {
62
+ this.scrollStrategy.setDataLength(dataLength);
63
+ });
64
+ });
65
+ onOffsetEffect = effect(() => {
66
+ const offset = this.$offset();
67
+ untracked(() => {
68
+ this.dataStore.patchState({ virtualScrollOffset: offset });
69
+ });
70
+ });
71
+ viewPort$ = toObservable(this.viewport).pipe(notNull());
72
+ $scrolledIndexChange = toSignal(this.viewPort$.pipe(switchMap(v => v.scrolledIndexChange)));
73
+ $renderedRange = toSignal(this.viewPort$.pipe(switchMap(v => v.renderedRangeStream)));
74
+ $offset = computed(() => {
75
+ const viewport = this.viewport();
76
+ const scrolledIndexChange = this.$scrolledIndexChange();
77
+ if (!scrolledIndexChange || !viewport)
78
+ return 0;
79
+ return viewport.getOffsetToRenderedContentStart() ?? 0;
80
+ });
58
81
  ngOnDestroy() {
59
82
  removeEventListener('resize', this.resizeHandler);
60
83
  }
@@ -124,5 +147,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
124
147
  },
125
148
  ],
126
149
  }]
127
- }] });
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbC1zY3JvbGwtY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy90YWJsZS1jb250YWluZXIvdmlydHVhbC1zY3JvbGwtY29udGFpbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQXlCLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUksT0FBTyxFQUNMLHdCQUF3QixFQUN4QixlQUFlLEVBQ2YsdUJBQXVCLEdBQ3hCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDcEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7QUFvQnJELE1BQU0sT0FBTyxzQkFBc0I7SUFDekIsS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzQixTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRXRDLFFBQVEsR0FBRyxTQUFTLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUUvQyxjQUFjLEdBQUcsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO0lBQzVDLGNBQWMsR0FBRyxJQUFJLDBCQUEw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Q0FBQyxPQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUMsWUFBWSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDLFlBQXNCLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQztRQUNsTixPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO3VHQWhIVSxzQkFBc0I7MkZBQXRCLHNCQUFzQixpSUFJWix3QkFBd0IsZ0VBcEJuQzs7OztLQUlQLDJEQUdPLGVBQWUsZ01BQ1Y7WUFDYjtnQkFDRSxPQUFPLEVBQUUsdUJBQXVCO2dCQUNoQyxVQUFVLEVBQUUsQ0FBQyxDQUF5QixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYztnQkFDM0QsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDLENBQUM7YUFDakQ7U0FDRjs7MkZBRVUsc0JBQXNCO2tCQWxCbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsNkJBQTZCO29CQUN2QyxRQUFRLEVBQUU7Ozs7S0FJUDtvQkFDSCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLGVBQWUsQ0FBQztvQkFDMUIsYUFBYSxFQUFFO3dCQUNiOzRCQUNFLE9BQU8sRUFBRSx1QkFBdUI7NEJBQ2hDLFVBQVUsRUFBRSxDQUFDLENBQXlCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjOzRCQUMzRCxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLHVCQUF1QixDQUFDLENBQUM7eUJBQ2pEO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBlZmZlY3QsIGZvcndhcmRSZWYsIHVudHJhY2tlZCwgdmlld0NoaWxkLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsXHJcbiAgU2Nyb2xsaW5nTW9kdWxlLFxyXG4gIFZJUlRVQUxfU0NST0xMX1NUUkFURUdZLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xyXG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlZmF1bHRTaGFyZVJlcGxheSwgc3Vic2NyaWJlciB9IGZyb20gJy4uLy4uLy4uL3J4anMnO1xyXG5pbXBvcnQgeyBUYWJsZVN0b3JlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy90YWJsZS1zdG9yZSc7XHJcbmltcG9ydCB7IFRhYmxlVmlydHVhbFNjcm9sbFN0cmF0ZWd5IH0gZnJvbSAnLi4vc2Nyb2xsLXN0cmF0ZWd5JztcclxuaW1wb3J0IHsgVmlydHVhbFNjcm9sbE9wdGlvbnMgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3RhYmxlLWJ1aWxkZXItZ2VuZXJhbC1zZXR0aW5ncyc7XHJcbmltcG9ydCB7IERhdGFTdG9yZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZGF0YS1zdG9yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RiLXZpcnR1YWwtc2Nyb2xsLWNvbnRhaW5lcicsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XHJcbiAgICAgIDxuZy1jb250ZW50Lz5cclxuICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxyXG4gICAgYCxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtTY3JvbGxpbmdNb2R1bGVdLFxyXG4gIHZpZXdQcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogVklSVFVBTF9TQ1JPTExfU1RSQVRFR1ksXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChjOiBWaXJ0dWFsU2Nyb2xsQ29udGFpbmVyKSA9PiBjLnNjcm9sbFN0cmF0ZWd5LFxyXG4gICAgICBkZXBzOiBbZm9yd2FyZFJlZigoKSA9PiBWaXJ0dWFsU2Nyb2xsQ29udGFpbmVyKV0sXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWaXJ0dWFsU2Nyb2xsQ29udGFpbmVyIGltcGxlbWVudHMgIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBzdGF0ZSA9IGluamVjdChUYWJsZVN0b3JlKTtcclxuICBwcml2YXRlIGRhdGFTdG9yZSA9IGluamVjdChEYXRhU3RvcmUpOyBcclxuXHJcbiAgdmlld3BvcnQgPSB2aWV3Q2hpbGQoQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0KTtcclxuXHJcbiAgZGVmYXVsdE9wdGlvbnMgPSBuZXcgVmlydHVhbFNjcm9sbE9wdGlvbnMoKTtcclxuICBzY3JvbGxTdHJhdGVneSA9IG5ldyBUYWJsZVZpcnR1YWxTY3JvbGxTdHJhdGVneShcclxuICAgIHRoaXMuY29tcHV0ZWRSb3dIZWlnaHQoKSxcclxuICAgIHRoaXMuY29tcHV0ZWRIZWFkZXJIZWlnaHQoKVxyXG4gICAgKTtcclxuXHJcblxyXG4gIGRhdGFMZW5ndGgkID0gY29tYmluZUxhdGVzdChbdGhpcy5zdGF0ZS5zdGF0ZSQsIHRoaXMuZGF0YVN0b3JlLnN0YXRlJF0pLnBpcGUoXHJcbiAgICBtYXAoKFtzLCBkXSkgPT4gKHtcclxuICAgICAgcGFnaW5hdGVkOiBzLm5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MudXNlUGFnaW5hdG9yICYmICFzLnNob3dBbGwsXHJcbiAgICAgIHBhZ2VTaXplOiBzLnVzZXJEZWZpbmVkPy5wYWdlU2l6ZSB8fCBzLnBhZ2VTaXplLFxyXG4gICAgICBwYWdlTnVtYmVyOiBzLmN1cnJlbnRQYWdlLFxyXG4gICAgICBkYXRhTGVuOiBkLmRhdGFMZW5cclxuICAgIH0pKSxcclxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChhLCBiKSA9PlxyXG4gICAgICBhLmRhdGFMZW4gPT09IGIuZGF0YUxlbiAmJlxyXG4gICAgICBhLnBhZ2VTaXplID09PSBiLnBhZ2VTaXplICYmXHJcbiAgICAgIGEucGFnZU51bWJlciA9PT0gYi5wYWdlTnVtYmVyICYmXHJcbiAgICAgIGEucGFnaW5hdGVkID09PSBiLnBhZ2luYXRlZCksXHJcbiAgICBtYXAoKHtkYXRhTGVuLCBwYWdlTnVtYmVyLCBwYWdlU2l6ZSwgcGFnaW5hdGVkfSkgPT4ge1xyXG4gICAgICBpZihwYWdpbmF0ZWQpIHJldHVybiBNYXRoLm1pbihkYXRhTGVuIC0gKHBhZ2VOdW1iZXIgKiBwYWdlU2l6ZSksIHBhZ2VTaXplKTtcclxuICAgICAgcmV0dXJuIGRhdGFMZW47XHJcbiAgICB9KSxcclxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcclxuICApO1xyXG5cclxuXHJcbiAgc3Vic2NyaWJlciA9IHN1YnNjcmliZXIodGhpcy5kYXRhTGVuZ3RoJCwgKGRhdGFMZW5ndGgpID0+IHtcclxuICAgIHRoaXMuc2Nyb2xsU3RyYXRlZ3kuc2V0RGF0YUxlbmd0aChkYXRhTGVuZ3RoKTtcclxuXHJcbiAgICBpZih0aGlzLnZpZXdwb3J0KCkpe1xyXG4gICAgICB0aGlzLnNldFNpemUodGhpcy52aWV3cG9ydCgpIS5lbGVtZW50UmVmKTtcclxuICAgIH1cclxuICB9KTtcclxuXHJcblxyXG4gIF8gPSBlZmZlY3QoKCkgPT4ge1xyXG4gICAgY29uc3Qgdmlld3BvcnQgPSB0aGlzLnZpZXdwb3J0KCk7XHJcbiAgICB1bnRyYWNrZWQoKCkgPT4ge1xyXG4gICAgICBpZighIXZpZXdwb3J0KXtcclxuICAgICAgICBhZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnJlc2l6ZUhhbmRsZXIpO1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaWJlci5vbih2aWV3cG9ydC5yZW5kZXJlZFJhbmdlU3RyZWFtLCAocmFuZ2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuZGF0YVN0b3JlLnBhdGNoU3RhdGUoe1xyXG4gICAgICAgICAgICB2aXJ0dWFsRW5kczoge1xyXG4gICAgICAgICAgICAgIHN0YXJ0OiByYW5nZS5zdGFydCxcclxuICAgICAgICAgICAgICBlbmQ6IHJhbmdlLmVuZCArIDI1LFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB2YXIgb2Zmc2V0JCA9IHZpZXdwb3J0LnNjcm9sbGVkSW5kZXhDaGFuZ2UucGlwZShcclxuICAgICAgICAgIG1hcCgoKSA9PiB2aWV3cG9ydC5nZXRPZmZzZXRUb1JlbmRlcmVkQ29udGVudFN0YXJ0KCkgPz8gMCksXHJcbiAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICAgICAgZGVmYXVsdFNoYXJlUmVwbGF5KClcclxuICAgICAgICApO1xyXG4gICAgXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVyLm9uKG9mZnNldCQsIChvZmZzZXQpID0+IHtcclxuICAgICAgICAgIHRoaXMuZGF0YVN0b3JlLnBhdGNoU3RhdGUoeyB2aXJ0dWFsU2Nyb2xsT2Zmc2V0OiBvZmZzZXQgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zZXRTaXplKHRoaXMudmlld3BvcnQoKSEuZWxlbWVudFJlZik7XHJcbiAgICAgIH07XHJcbiAgICB9KVxyXG5cclxuICB9KVxyXG5cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICByZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnJlc2l6ZUhhbmRsZXIpO1xyXG4gIH1cclxuXHJcbiAgc2V0U2l6ZShlbDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcclxuICAgIGNvbnN0IHZzVmlld3BvcnQgPSBlbC5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgdmlydHVhbFNjcm9sbE9wdGlvbnMgPSB0aGlzLnN0YXRlLnRhYmxlU2V0dGluZ3MoKS51c2VWaXJ0dWFsU2Nyb2xsISBhcyBWaXJ0dWFsU2Nyb2xsT3B0aW9ucztcclxuICAgIGNvbnN0IHJvd0hlaWdodCA9IHRoaXMuY29tcHV0ZWRSb3dIZWlnaHQoKTtcclxuICAgIGxldCBhbW91bnRPZlZpc2libGVJdGVtcyA9IHZpcnR1YWxTY3JvbGxPcHRpb25zPy5hbW91bnRPZlZpc2libGVJdGVtcyB8fCB0aGlzLmRlZmF1bHRPcHRpb25zLmFtb3VudE9mVmlzaWJsZUl0ZW1zO1xyXG4gICAgICB2aXJ0dWFsU2Nyb2xsT3B0aW9ucz8uYW1vdW50T2ZWaXNpYmxlSXRlbXMgfHwgdGhpcy5kZWZhdWx0T3B0aW9ucy5hbW91bnRPZlZpc2libGVJdGVtcztcclxuICAgIGxldCBoZWlnaHQgPSAocm93SGVpZ2h0ICogYW1vdW50T2ZWaXNpYmxlSXRlbXMpO1xyXG4gICAgaWYoIXRoaXMuc3RhdGUudGFibGVTZXR0aW5ncygpLmhpZGVIZWFkZXIpe1xyXG4gICAgICBjb25zdCBoZWFkZXJIZWlnaHQgPSB0aGlzLmNvbXB1dGVkSGVhZGVySGVpZ2h0KCk7XHJcbiAgICAgIGhlaWdodCArPSBoZWFkZXJIZWlnaHQ7XHJcbiAgICB9XHJcbiAgICBpZih2aXJ0dWFsU2Nyb2xsT3B0aW9ucz8ubWF4Vmlld1BvcnRIZWlnaHQgJiYgdmlydHVhbFNjcm9sbE9wdGlvbnMubWF4Vmlld1BvcnRIZWlnaHQgPCBoZWlnaHQpIGhlaWdodCA9IHZpcnR1YWxTY3JvbGxPcHRpb25zLm1heFZpZXdQb3J0SGVpZ2h0O1xyXG4gICAgdnNWaWV3cG9ydC5zZXRBdHRyaWJ1dGUoXHJcbiAgICAgICdzdHlsZScsXHJcbiAgICAgIGBoZWlnaHQ6ICR7aGVpZ2h0fXB4ICFpbXBvcnRhbnQ7YCxcclxuICAgICk7XHJcbiAgICB0aGlzLnZpZXdwb3J0KCk/LmNoZWNrVmlld3BvcnRTaXplKCk7XHJcbiAgICBjb25zdCB2aXJ0dWFsU2Nyb2xsT2Zmc2V0ID0gdGhpcy52aWV3cG9ydCgpPy5nZXRPZmZzZXRUb1JlbmRlcmVkQ29udGVudFN0YXJ0KCkgPz8gMFxyXG4gICAgdGhpcy5kYXRhU3RvcmUucGF0Y2hTdGF0ZSh7IHZpcnR1YWxTY3JvbGxPZmZzZXQgfSk7XHJcbiAgfVxyXG5cclxuICByZXNpemVIYW5kbGVyID0gKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMudmlld3BvcnQoKSkge1xyXG4gICAgICB0aGlzLnNldFNpemUodGhpcy52aWV3cG9ydCgpIS5lbGVtZW50UmVmKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBjb21wdXRlZFJvd0hlaWdodCgpe1xyXG4gICAgY29uc3QgdmlydHVhbFNjcm9sbE9wdGlvbnMgPSB0aGlzLnN0YXRlLnRhYmxlU2V0dGluZ3MoKS51c2VWaXJ0dWFsU2Nyb2xsISBhcyBWaXJ0dWFsU2Nyb2xsT3B0aW9ucztcclxuICAgIGNvbnN0IHJvd0hlaWdodCA9IHZpcnR1YWxTY3JvbGxPcHRpb25zPy5yb3dIZWlnaHR8fCAodHlwZW9mIHRoaXMuc3RhdGUudGFibGVTZXR0aW5ncygpLnJvd0hlaWdodCA9PT0gJ251bWJlcicgJiYgdGhpcy5zdGF0ZS50YWJsZVNldHRpbmdzKCkucm93SGVpZ2h0IGFzIG51bWJlcikgfHwgdGhpcy5kZWZhdWx0T3B0aW9ucy5yb3dIZWlnaHQ7XHJcbiAgICByZXR1cm4gcm93SGVpZ2h0O1xyXG4gIH1cclxuXHJcbiAgY29tcHV0ZWRIZWFkZXJIZWlnaHQoKXtcclxuICAgIGNvbnN0IHZpcnR1YWxTY3JvbGxPcHRpb25zID0gdGhpcy5zdGF0ZS50YWJsZVNldHRpbmdzKCkudXNlVmlydHVhbFNjcm9sbCEgYXMgVmlydHVhbFNjcm9sbE9wdGlvbnM7XHJcbiAgICBjb25zdCBoZWFkZXJIZWlnaHQgPSB2aXJ0dWFsU2Nyb2xsT3B0aW9ucz8uaGVhZGVySGVpZ2h0fHwgKHR5cGVvZiAgdGhpcy5zdGF0ZS50YWJsZVNldHRpbmdzKCkuaGVhZGVySGVpZ2h0ID09PSAnbnVtYmVyJyAmJiB0aGlzLnN0YXRlLnRhYmxlU2V0dGluZ3MoKS5oZWFkZXJIZWlnaHQgYXMgbnVtYmVyKSB8fCB0aGlzLmRlZmF1bHRPcHRpb25zLmhlYWRlckhlaWdodDtcclxuICAgIHJldHVybiBoZWFkZXJIZWlnaHQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
150
+ }], ctorParameters: () => [] });
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbC1zY3JvbGwtY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy90YWJsZS1jb250YWluZXIvdmlydHVhbC1zY3JvbGwtY29udGFpbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQXlCLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RKLE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsZUFBZSxFQUNmLHVCQUF1QixHQUN4QixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFvQnBFLE1BQU0sT0FBTyxzQkFBc0I7SUFDekIsS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzQixTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRXRDLFFBQVEsR0FBRyxTQUFTLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUUvQyxjQUFjLEdBQUcsSUFBSSxvQkFB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QUF5QixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYztnQkFDM0QsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixDQUFDLENBQUM7YUFDakQ7U0FDRjs7MkZBRVUsc0JBQXNCO2tCQWxCbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsNkJBQTZCO29CQUN2QyxRQUFRLEVBQUU7Ozs7S0FJUDtvQkFDSCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLGVBQWUsQ0FBQztvQkFDMUIsYUFBYSxFQUFFO3dCQUNiOzRCQUNFLE9BQU8sRUFBRSx1QkFBdUI7NEJBQ2hDLFVBQVUsRUFBRSxDQUFDLENBQXlCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjOzRCQUMzRCxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLHVCQUF1QixDQUFDLENBQUM7eUJBQ2pEO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBlZmZlY3QsIGZvcndhcmRSZWYsIHVudHJhY2tlZCwgdmlld0NoaWxkLCBpbmplY3QsIGNvbXB1dGVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LFxyXG4gIFNjcm9sbGluZ01vZHVsZSxcclxuICBWSVJUVUFMX1NDUk9MTF9TVFJBVEVHWSxcclxufSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcclxuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG5vdE51bGwsIHN1YnNjcmliZXIgfSBmcm9tICcuLi8uLi8uLi9yeGpzJztcclxuaW1wb3J0IHsgVGFibGVTdG9yZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvdGFibGUtc3RvcmUnO1xyXG5pbXBvcnQgeyBUYWJsZVZpcnR1YWxTY3JvbGxTdHJhdGVneSB9IGZyb20gJy4uL3Njcm9sbC1zdHJhdGVneSc7XHJcbmltcG9ydCB7IFZpcnR1YWxTY3JvbGxPcHRpb25zIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy90YWJsZS1idWlsZGVyLWdlbmVyYWwtc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBEYXRhU3RvcmUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2RhdGEtc3RvcmUnO1xyXG5pbXBvcnQgeyB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0Yi12aXJ0dWFsLXNjcm9sbC1jb250YWluZXInLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxyXG4gICAgICA8bmctY29udGVudC8+XHJcbiAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cclxuICAgIGAsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbU2Nyb2xsaW5nTW9kdWxlXSxcclxuICB2aWV3UHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IFZJUlRVQUxfU0NST0xMX1NUUkFURUdZLFxyXG4gICAgICB1c2VGYWN0b3J5OiAoYzogVmlydHVhbFNjcm9sbENvbnRhaW5lcikgPT4gYy5zY3JvbGxTdHJhdGVneSxcclxuICAgICAgZGVwczogW2ZvcndhcmRSZWYoKCkgPT4gVmlydHVhbFNjcm9sbENvbnRhaW5lcildLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVmlydHVhbFNjcm9sbENvbnRhaW5lciBpbXBsZW1lbnRzICBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgc3RhdGUgPSBpbmplY3QoVGFibGVTdG9yZSk7XHJcbiAgcHJpdmF0ZSBkYXRhU3RvcmUgPSBpbmplY3QoRGF0YVN0b3JlKTsgXHJcblxyXG4gIHZpZXdwb3J0ID0gdmlld0NoaWxkKENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCk7XHJcblxyXG4gIGRlZmF1bHRPcHRpb25zID0gbmV3IFZpcnR1YWxTY3JvbGxPcHRpb25zKCk7XHJcbiAgc2Nyb2xsU3RyYXRlZ3kgPSBuZXcgVGFibGVWaXJ0dWFsU2Nyb2xsU3RyYXRlZ3koXHJcbiAgICB0aGlzLmNvbXB1dGVkUm93SGVpZ2h0KCksXHJcbiAgICB0aGlzLmNvbXB1dGVkSGVhZGVySGVpZ2h0KClcclxuICAgICk7XHJcblxyXG4gICR1c2VQYWdpbmF0b3IgPSB0aGlzLnN0YXRlLnNlbGVjdFNpZ25hbChzID0+IHMubm90UGVyc2lzdGVkVGFibGVTZXR0aW5ncy51c2VQYWdpbmF0b3IpO1xyXG4gICRwYWdlU2l6ZSA9IHRoaXMuc3RhdGUuJHBhZ2VTaXplO1xyXG4gICRjdXJyZW50UGFnZSA9IHRoaXMuc3RhdGUuJGN1cnJlbnRQYWdlO1xyXG4gICRzaG93QWxsID0gdGhpcy5zdGF0ZS5zZWxlY3RTaWduYWwocyA9PiBzLnNob3dBbGwpO1xyXG4gICRzdGF0ZURhdGFMZW5ndGggPSB0aGlzLmRhdGFTdG9yZS5zZWxlY3RTaWduYWwocyA9PiBzLmRhdGFMZW4pO1xyXG4gICRkYXRhTGVuZ3RoICA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGNvbnN0IHBhZ2luYXRlZCA9IHRoaXMuJHVzZVBhZ2luYXRvcigpICYmICF0aGlzLiRzaG93QWxsKCk7XHJcbiAgICBjb25zdCBwYWdlU2l6ZSA9IHRoaXMuJHBhZ2VTaXplKCk7XHJcbiAgICBjb25zdCBwYWdlTnVtYmVyID0gdGhpcy4kY3VycmVudFBhZ2UoKTtcclxuICAgIGNvbnN0IGRhdGFMZW4gPSB0aGlzLiRzdGF0ZURhdGFMZW5ndGgoKTtcclxuICAgIGlmKHBhZ2luYXRlZCkgcmV0dXJuIE1hdGgubWluKGRhdGFMZW4gLSAocGFnZU51bWJlciAqIHBhZ2VTaXplKSwgcGFnZVNpemUpO1xyXG4gICAgcmV0dXJuIGRhdGFMZW47XHJcbiAgfSk7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBhZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnJlc2l6ZUhhbmRsZXIpO1xyXG4gIH1cclxuICBzZXRWaWV3cG9ydEVmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XHJcbiAgICBjb25zdCB2aWV3cG9ydCA9IHRoaXMudmlld3BvcnQoKTtcclxuICAgIHVudHJhY2tlZCgoKSA9PiB7XHJcbiAgICAgIGlmKCEhdmlld3BvcnQpe1xyXG4gICAgICAgIHRoaXMuc2V0U2l6ZSh0aGlzLnZpZXdwb3J0KCkhLmVsZW1lbnRSZWYpO1xyXG4gICAgICB9O1xyXG4gICAgfSlcclxuICB9KVxyXG5cclxuICBzdWJzY3JpYmVyID0gc3Vic2NyaWJlcigpO1xyXG5cclxuICBvblJlbmRlcmVkUmFuZ2VFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xyXG4gICAgY29uc3QgcmVuZGVyZWRSYW5nZSA9IHRoaXMuJHJlbmRlcmVkUmFuZ2UoKTtcclxuICAgIGlmKCFyZW5kZXJlZFJhbmdlKSByZXR1cm47XHJcbiAgICB1bnRyYWNrZWQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmRhdGFTdG9yZS5wYXRjaFN0YXRlKHtcclxuICAgICAgICB2aXJ0dWFsRW5kczoge1xyXG4gICAgICAgICAgc3RhcnQ6IHJlbmRlcmVkUmFuZ2Uuc3RhcnQsXHJcbiAgICAgICAgICBlbmQ6IHJlbmRlcmVkUmFuZ2UuZW5kICsgMjUsXHJcbiAgICAgICAgfX0pO1xyXG4gICAgICB0aGlzLnNldFNpemUodGhpcy52aWV3cG9ydCgpIS5lbGVtZW50UmVmKTtcclxuICAgIH0pXHJcbiAgfSlcclxuXHJcbiAgb25EYXRhTGVuZ3RoRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IGRhdGFMZW5ndGggPSB0aGlzLiRkYXRhTGVuZ3RoKCk7XHJcbiAgICB1bnRyYWNrZWQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnNjcm9sbFN0cmF0ZWd5LnNldERhdGFMZW5ndGgoZGF0YUxlbmd0aCk7XHJcbiAgICB9KVxyXG4gIH0pXHJcblxyXG4gIG9uT2Zmc2V0RWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuJG9mZnNldCgpO1xyXG4gICAgdW50cmFja2VkKCgpID0+IHtcclxuICAgICAgdGhpcy5kYXRhU3RvcmUucGF0Y2hTdGF0ZSh7IHZpcnR1YWxTY3JvbGxPZmZzZXQ6IG9mZnNldCB9KTtcclxuICAgIH0pXHJcbiAgfSlcclxuICB2aWV3UG9ydCQgPSB0b09ic2VydmFibGUodGhpcy52aWV3cG9ydCkucGlwZShub3ROdWxsKCkpO1xyXG4gICRzY3JvbGxlZEluZGV4Q2hhbmdlID0gdG9TaWduYWwodGhpcy52aWV3UG9ydCQucGlwZShzd2l0Y2hNYXAodiA9PiB2LnNjcm9sbGVkSW5kZXhDaGFuZ2UpKSk7XHJcbiAgJHJlbmRlcmVkUmFuZ2UgPSB0b1NpZ25hbCh0aGlzLnZpZXdQb3J0JC5waXBlKHN3aXRjaE1hcCh2ID0+IHYucmVuZGVyZWRSYW5nZVN0cmVhbSkpKTtcclxuXHJcbiAgJG9mZnNldCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGNvbnN0IHZpZXdwb3J0ID0gdGhpcy52aWV3cG9ydCgpO1xyXG4gICAgY29uc3Qgc2Nyb2xsZWRJbmRleENoYW5nZSA9IHRoaXMuJHNjcm9sbGVkSW5kZXhDaGFuZ2UoKTtcclxuICAgIGlmKCFzY3JvbGxlZEluZGV4Q2hhbmdlIHx8ICF2aWV3cG9ydCkgcmV0dXJuIDA7XHJcbiAgICByZXR1cm4gdmlld3BvcnQuZ2V0T2Zmc2V0VG9SZW5kZXJlZENvbnRlbnRTdGFydCgpID8/IDA7XHJcbiAgfSlcclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICByZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnJlc2l6ZUhhbmRsZXIpO1xyXG4gIH1cclxuXHJcbiAgc2V0U2l6ZShlbDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHtcclxuICAgIGNvbnN0IHZzVmlld3BvcnQgPSBlbC5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgdmlydHVhbFNjcm9sbE9wdGlvbnMgPSB0aGlzLnN0YXRlLnRhYmxlU2V0dGluZ3MoKS51c2VWaXJ0dWFsU2Nyb2xsISBhcyBWaXJ0dWFsU2Nyb2xsT3B0aW9ucztcclxuICAgIGNvbnN0IHJvd0hlaWdodCA9IHRoaXMuY29tcHV0ZWRSb3dIZWlnaHQoKTtcclxuICAgIGxldCBhbW91bnRPZlZpc2libGVJdGVtcyA9IHZpcnR1YWxTY3JvbGxPcHRpb25zPy5hbW91bnRPZlZpc2libGVJdGVtcyB8fCB0aGlzLmRlZmF1bHRPcHRpb25zLmFtb3VudE9mVmlzaWJsZUl0ZW1zO1xyXG4gICAgICB2aXJ0dWFsU2Nyb2xsT3B0aW9ucz8uYW1vdW50T2ZWaXNpYmxlSXRlbXMgfHwgdGhpcy5kZWZhdWx0T3B0aW9ucy5hbW91bnRPZlZpc2libGVJdGVtcztcclxuICAgIGxldCBoZWlnaHQgPSAocm93SGVpZ2h0ICogYW1vdW50T2ZWaXNpYmxlSXRlbXMpO1xyXG4gICAgaWYoIXRoaXMuc3RhdGUudGFibGVTZXR0aW5ncygpLmhpZGVIZWFkZXIpe1xyXG4gICAgICBjb25zdCBoZWFkZXJIZWlnaHQgPSB0aGlzLmNvbXB1dGVkSGVhZGVySGVpZ2h0KCk7XHJcbiAgICAgIGhlaWdodCArPSBoZWFkZXJIZWlnaHQ7XHJcbiAgICB9XHJcbiAgICBpZih2aXJ0dWFsU2Nyb2xsT3B0aW9ucz8ubWF4Vmlld1BvcnRIZWlnaHQgJiYgdmlydHVhbFNjcm9sbE9wdGlvbnMubWF4Vmlld1BvcnRIZWlnaHQgPCBoZWlnaHQpIGhlaWdodCA9IHZpcnR1YWxTY3JvbGxPcHRpb25zLm1heFZpZXdQb3J0SGVpZ2h0O1xyXG4gICAgdnNWaWV3cG9ydC5zZXRBdHRyaWJ1dGUoXHJcbiAgICAgICdzdHlsZScsXHJcbiAgICAgIGBoZWlnaHQ6ICR7aGVpZ2h0fXB4ICFpbXBvcnRhbnQ7YCxcclxuICAgICk7XHJcbiAgICB0aGlzLnZpZXdwb3J0KCk/LmNoZWNrVmlld3BvcnRTaXplKCk7XHJcbiAgICBjb25zdCB2aXJ0dWFsU2Nyb2xsT2Zmc2V0ID0gdGhpcy52aWV3cG9ydCgpPy5nZXRPZmZzZXRUb1JlbmRlcmVkQ29udGVudFN0YXJ0KCkgPz8gMFxyXG4gICAgdGhpcy5kYXRhU3RvcmUucGF0Y2hTdGF0ZSh7IHZpcnR1YWxTY3JvbGxPZmZzZXQgfSk7XHJcbiAgfVxyXG5cclxuICByZXNpemVIYW5kbGVyID0gKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMudmlld3BvcnQoKSkge1xyXG4gICAgICB0aGlzLnNldFNpemUodGhpcy52aWV3cG9ydCgpIS5lbGVtZW50UmVmKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBjb21wdXRlZFJvd0hlaWdodCgpe1xyXG4gICAgY29uc3QgdmlydHVhbFNjcm9sbE9wdGlvbnMgPSB0aGlzLnN0YXRlLnRhYmxlU2V0dGluZ3MoKS51c2VWaXJ0dWFsU2Nyb2xsISBhcyBWaXJ0dWFsU2Nyb2xsT3B0aW9ucztcclxuICAgIGNvbnN0IHJvd0hlaWdodCA9IHZpcnR1YWxTY3JvbGxPcHRpb25zPy5yb3dIZWlnaHR8fCAodHlwZW9mIHRoaXMuc3RhdGUudGFibGVTZXR0aW5ncygpLnJvd0hlaWdodCA9PT0gJ251bWJlcicgJiYgdGhpcy5zdGF0ZS50YWJsZVNldHRpbmdzKCkucm93SGVpZ2h0IGFzIG51bWJlcikgfHwgdGhpcy5kZWZhdWx0T3B0aW9ucy5yb3dIZWlnaHQ7XHJcbiAgICByZXR1cm4gcm93SGVpZ2h0O1xyXG4gIH1cclxuXHJcbiAgY29tcHV0ZWRIZWFkZXJIZWlnaHQoKXtcclxuICAgIGNvbnN0IHZpcnR1YWxTY3JvbGxPcHRpb25zID0gdGhpcy5zdGF0ZS50YWJsZVNldHRpbmdzKCkudXNlVmlydHVhbFNjcm9sbCEgYXMgVmlydHVhbFNjcm9sbE9wdGlvbnM7XHJcbiAgICBjb25zdCBoZWFkZXJIZWlnaHQgPSB2aXJ0dWFsU2Nyb2xsT3B0aW9ucz8uaGVhZGVySGVpZ2h0fHwgKHR5cGVvZiAgdGhpcy5zdGF0ZS50YWJsZVNldHRpbmdzKCkuaGVhZGVySGVpZ2h0ID09PSAnbnVtYmVyJyAmJiB0aGlzLnN0YXRlLnRhYmxlU2V0dGluZ3MoKS5oZWFkZXJIZWlnaHQgYXMgbnVtYmVyKSB8fCB0aGlzLmRlZmF1bHRPcHRpb25zLmhlYWRlckhlaWdodDtcclxuICAgIHJldHVybiBoZWFkZXJIZWlnaHQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { Directive, Input, inject } from "@angular/core";
2
- import { BehaviorSubject, ReplaySubject, takeUntil, tap } from "rxjs";
2
+ import { BehaviorSubject, ReplaySubject, Subject, takeUntil, tap } from "rxjs";
3
3
  import { v4 as uuid } from 'uuid';
4
4
  import { FilterTypes } from "../enums/filterTypes";
5
5
  import { MatSlideToggle } from "@angular/material/slide-toggle";
@@ -8,9 +8,9 @@ import { MatButtonToggle } from '@angular/material/button-toggle';
8
8
  import { MatCheckbox } from "@angular/material/checkbox";
9
9
  import { FieldType } from "../interfaces/report-def";
10
10
  import { NgControl } from "@angular/forms";
11
- import { ComponentStore } from "@ngrx/component-store";
12
11
  import { TableWrapperDirective } from "./table-wrapper.directive";
13
12
  import { MatOption } from "@angular/material/core";
13
+ import { subscriber } from "../../rxjs";
14
14
  import * as i0 from "@angular/core";
15
15
  import * as i1 from "rxjs";
16
16
  const inputs = [
@@ -30,27 +30,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
30
30
  selector: ' '
31
31
  }]
32
32
  }] });
33
- export class TableFilterDirective extends ComponentStore {
33
+ export class TableFilterDirective {
34
34
  model = inject(NgControl, { optional: true });
35
35
  wrapper = inject(TableWrapperDirective, { optional: true });
36
36
  constructor() {
37
- super();
38
37
  if (this.wrapper) {
39
38
  this.wrapper.register(this);
40
39
  }
41
40
  if (this.model) {
42
- this.effect(() => {
43
- return this.model.valueChanges.pipe(tap(val => {
44
- this.filterValue = val;
45
- this.update();
46
- }));
41
+ subscriber(this.model.valueChanges, val => {
42
+ this.filterValue = val;
43
+ this.update();
47
44
  });
48
45
  }
49
46
  }
50
47
  reset() {
51
48
  this.filterValue = undefined;
52
49
  }
53
- filter$ = this.state$;
50
+ filter$ = new Subject;
54
51
  filterType;
55
52
  key;
56
53
  fieldType;
@@ -85,7 +82,7 @@ export class TableFilterDirective extends ComponentStore {
85
82
  this.update();
86
83
  }
87
84
  setFilter(filter) {
88
- this.setState(filter);
85
+ this.filter$.next(filter);
89
86
  }
90
87
  update() {
91
88
  if (this.ready) {
@@ -101,7 +98,7 @@ export class TableFilterDirective extends ComponentStore {
101
98
  }
102
99
  }
103
100
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TableFilterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
104
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: TableFilterDirective, isStandalone: true, selector: "[tbFilter]", inputs: { filterType: "filterType", key: "key", fieldType: "fieldType", filterId: "filterId", active: "active", filterValue: "filterValue" }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });
101
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: TableFilterDirective, isStandalone: true, selector: "[tbFilter]", inputs: { filterType: "filterType", key: "key", fieldType: "fieldType", filterId: "filterId", active: "active", filterValue: "filterValue" }, usesOnChanges: true, ngImport: i0 });
105
102
  }
106
103
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TableFilterDirective, decorators: [{
107
104
  type: Directive,
@@ -127,12 +124,6 @@ export class TableFilterStringContainsDirective extends TableFilterDirective {
127
124
  super();
128
125
  this.filterType = FilterTypes.StringContains;
129
126
  this.fieldType = FieldType.String;
130
- this.effect(() => {
131
- return this.model.valueChanges.pipe(tap(val => {
132
- this.filterValue = val;
133
- this.update();
134
- }));
135
- });
136
127
  }
137
128
  reset() {
138
129
  if (this.model) {
@@ -402,4 +393,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
402
393
  standalone: true,
403
394
  }]
404
395
  }], ctorParameters: () => [] });
405
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGItZmlsdGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy90YWJsZS1idWlsZGVyL2RpcmVjdGl2ZXMvdGItZmlsdGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBNEIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxlQUFlLEVBQWMsYUFBYSxFQUFXLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0YsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQUduRCxNQUFNLE1BQU0sR0FBRztJQUNiLDJCQUEyQjtJQUMzQixvQkFBb0I7Q0FDckIsQ0FBQztBQU1GLE1BQU0sT0FBZ0IsMEJBQTBCO0lBRTlDLFFBQVEs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RUFBRSwwQkFBMEIsRUFBRSxXQUFXLEVBQUUsOEJBQThCLEVBQUUsQ0FBQzs7MkZBR3RGLDhCQUE4QjtrQkFSMUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUNBQW1DO29CQUM3QyxNQUFNLEVBQUU7d0JBQ04sR0FBRyxNQUFNO3FCQUNWO29CQUNELFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLFdBQVcsZ0NBQWdDLEVBQUUsQ0FBQztvQkFDakcsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgUHJlZGljYXRlLCBTaW1wbGVDaGFuZ2VzLCBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIFN1YmplY3QsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgQ3VzdG9tRmlsdGVyLCBGaWx0ZXJJbmZvIH0gZnJvbSBcIi4uL2NsYXNzZXMvZmlsdGVyLWluZm9cIjtcclxuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBGaWx0ZXJUeXBlLCBGaWx0ZXJUeXBlcyB9IGZyb20gXCIuLi9lbnVtcy9maWx0ZXJUeXBlc1wiO1xyXG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGVcIjtcclxuaW1wb3J0IHsgTWF0UmFkaW9CdXR0b24gfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW9cIjtcclxuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZSc7XHJcbmltcG9ydCB7IE1hdENoZWNrYm94IH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94XCI7XHJcbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL3JlcG9ydC1kZWZcIjtcclxuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IENvbXBvbmVudFN0b3JlIH0gZnJvbSBcIkBuZ3J4L2NvbXBvbmVudC1zdG9yZVwiO1xyXG5pbXBvcnQgeyBUYWJsZVdyYXBwZXJEaXJlY3RpdmUgfSBmcm9tIFwiLi90YWJsZS13cmFwcGVyLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQgeyBNYXRPcHRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xyXG5cclxuXHJcbmNvbnN0IGlucHV0cyA9IFtcclxuICAncHJlZGljYXRlOiB0YkN1c3RvbUZpbHRlcicsXHJcbiAgJ2ZpbHRlcklkOiBmaWx0ZXJJZCcsXHJcbl07XHJcblxyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICcgJ1xyXG59KVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGFibGVDdXN0b21GaWx0ZXJEaXJlY3RpdmU8VCA9IGFueT4ge1xyXG4gIGFic3RyYWN0IGZpbHRlciQgOiBPYnNlcnZhYmxlPEN1c3RvbUZpbHRlcj47XHJcbiAgZmlsdGVySWQhOiBzdHJpbmc7XHJcbiAgc2F2YWJsZSA9IGZhbHNlO1xyXG4gIHVzZWQgPSBmYWxzZTtcclxuICBhYnN0cmFjdCBhY3RpdmU6IGJvb2xlYW47XHJcbiAgYWJzdHJhY3QgcmVzZXQoKTogdm9pZDtcclxufVxyXG5cclxuXHJcblxyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6IFwiW3RiRmlsdGVyXVwiLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbn0pIGV4cG9ydCBjbGFzcyBUYWJsZUZpbHRlckRpcmVjdGl2ZSBleHRlbmRzIENvbXBvbmVudFN0b3JlPEZpbHRlckluZm8+IHtcclxuICBwcm90ZWN0ZWQgbW9kZWwgPSBpbmplY3QoTmdDb250cm9sLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xyXG4gIHByaXZhdGUgd3JhcHBlciA9IGluamVjdChUYWJsZVdyYXBwZXJEaXJlY3RpdmUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgaWYodGhpcy53cmFwcGVyKSB7XHJcbiAgICAgIHRoaXMud3JhcHBlci5yZWdpc3Rlcih0aGlzKTtcclxuICAgIH1cclxuICAgIGlmKHRoaXMubW9kZWwpIHtcclxuICAgICAgdGhpcy5lZmZlY3QoICgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbCEudmFsdWVDaGFuZ2VzIS5waXBlKFxyXG4gICAgICAgICAgdGFwKCB2YWwgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlclZhbHVlID0gdmFsO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZSgpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG4gIHJlc2V0KCkge1xyXG4gICAgdGhpcy5maWx0ZXJWYWx1ZSA9IHVuZGVmaW5lZDtcclxuICB9XHJcbiAgZmlsdGVyJCA9IHRoaXMuc3RhdGUkO1xyXG5cclxuICBASW5wdXQoKSBmaWx0ZXJUeXBlITogRmlsdGVyVHlwZTtcclxuICBASW5wdXQoKSBrZXkhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZmllbGRUeXBlITogRmllbGRUeXBlO1xyXG4gIEBJbnB1dCgpIGZpbHRlcklkITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGFjdGl2ZSA9IHRydWU7XHJcbiAgQElucHV0KCkgZmlsdGVyVmFsdWU6IGFueSA9IG51bGw7XHJcblxyXG4gIHNldEZpbHRlclZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgIGlmKHRoaXMubW9kZWwpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5tb2RlbCEucmVzZXQodmFsdWUpO1xyXG4gICAgICB9LCAwKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyVmFsdWUgPSB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVzZWQgPSBmYWxzZTtcclxuICBzYXZhYmxlID0gZmFsc2U7XHJcbiAgcmVhZHkgPSBmYWxzZTtcclxuXHJcbiAgX3VzZXJBY3RpdmUgPSB0cnVlO1xyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIHRoaXMudXBkYXRlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmKCF0aGlzLmZpbHRlcklkKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVySWQgPSB1dWlkKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNhdmFibGUgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZWFkeSA9IHRydWU7XHJcbiAgICB0aGlzLnVwZGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHNldEZpbHRlcihmaWx0ZXI6IEZpbHRlckluZm8gKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKGZpbHRlcik7XHJcbiAgfVxyXG5cclxuICB1cGRhdGUoKSB7XHJcbiAgICBpZiAodGhpcy5yZWFkeSkge1xyXG4gICAgICB0aGlzLnNldEZpbHRlcihcclxuICAgICAgICB7XHJcbiAgICAgICAgICBmaWx0ZXJJZDogdGhpcy5maWx0ZXJJZCxcclxuICAgICAgICAgIGtleTogdGhpcy5rZXksXHJcbiAgICAgICAgICBmaWx0ZXJUeXBlOiB0aGlzLmZpbHRlclR5cGUsXHJcbiAgICAgICAgICBmaWVsZFR5cGU6IHRoaXMuZmllbGRUeXBlLFxyXG4gICAgICAgICAgZmlsdGVyVmFsdWU6IHRoaXMuZmlsdGVyVmFsdWUsXHJcbiAgICAgICAgICBhY3RpdmU6IHRoaXMuYWN0aXZlICYmIHRoaXMuZmlsdGVyVmFsdWUgIT09IHVuZGVmaW5lZCxcclxuICAgICAgICAgIF9pc0V4dGVybmFsbHlNYW5hZ2VkOiB0cnVlLFxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1t0YkZpbHRlclN0cmluZ0NvbnRhaW5zXScsXHJcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBUYWJsZUZpbHRlckRpcmVjdGl2ZSwgdXNlRXhpc3Rpbmc6IFRhYmxlRmlsdGVyU3RyaW5nQ29udGFpbnNEaXJlY3RpdmUgfV0sXHJcbiAgaW5wdXRzOiBbXHJcbiAgICAna2V5OnRiRmlsdGVyU3RyaW5nQ29udGFpbnMnLFxyXG4gICAgJ2ZpbHRlclZhbHVlOmZpbHRlclZhbHVlJyxcclxuICAgICdmaWx0ZXJJZDogZmlsdGVySWQnLFxyXG4gICAgJ2FjdGl2ZTogYWN0aXZlJyxcclxuICBdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbn0pIGV4cG9ydCBjbGFzcyBUYWJsZUZpbHRlclN0cmluZ0NvbnRhaW5zRGlyZWN0aXZlIGV4dGVuZHMgVGFibGVGaWx0ZXJEaXJlY3RpdmUge1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG5cclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLmZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlcy5TdHJpbmdDb250YWlucztcclxuICAgIHRoaXMuZmllbGRUeXBlID0gRmllbGRUeXBlLlN0cmluZztcclxuICAgIHRoaXMuZWZmZWN0KCAoKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLm1vZGVsIS52YWx1ZUNoYW5nZXMhLnBpcGUoXHJcbiAgICAgICAgdGFwKCB2YWwgPT4ge1xyXG4gICAgICAgICAgdGhpcy5maWx0ZXJWYWx1ZSA9IHZhbDtcclxuICAgICAgICAgIHRoaXMudXBkYXRlKCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIHJlc2V0KCkge1xyXG4gICAgaWYodGhpcy5tb2RlbCkge1xyXG4gICAgICB0aGlzLm1vZGVsLnJlc2V0KCk7XHJcbiAgICB9XHJcbiAgICBzdXBlci5yZXNldCgpO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgc2V0RmlsdGVyKGZpbHRlcjogRmlsdGVySW5mbykge1xyXG4gICAgZmlsdGVyLmFjdGl2ZSA9IGZpbHRlci5maWx0ZXJWYWx1ZSAmJiB0aGlzLl91c2VyQWN0aXZlO1xyXG4gICAgc3VwZXIuc2V0RmlsdGVyKGZpbHRlcik7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZihjaGFuZ2VzWydhY3RpdmUnXSkge1xyXG4gICAgICB0aGlzLl91c2VyQWN0aXZlID0gY2hhbmdlc1snYWN0aXZlJ10uY3VycmVudFZhbHVlO1xyXG4gICAgfVxyXG4gICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XHJcbiAgfVxyXG59XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogXCJbdGJDdXN0b21GaWx0ZXJdXCIsXHJcbn0pXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUYWJsZUN1c3RvbUZpbHRlckRpcmVjdGl2ZUJhc2U8VCA9IGFueT4gZXh0ZW5kcyBUYWJsZUN1c3RvbUZpbHRlckRpcmVjdGl2ZTxUPiB7XHJcblxyXG4gIGZpbHRlciQhIDogU3ViamVjdDxDdXN0b21GaWx0ZXI+O1xyXG4gIGZpbHRlciE6IEN1c3RvbUZpbHRlcjtcclxuXHJcbiAgX3ByZWRpY2F0ZSE6IFByZWRpY2F0ZTxUPjtcclxuICBASW5wdXQoJ3RiQ3VzdG9tRmlsdGVyJykgc2V0IHByZWRpY2F0ZSggdmFsOiBQcmVkaWNhdGU8VD4gKSB7XHJcbiAgICB0aGlzLl9wcmVkaWNhdGUgPSB2YWw7XHJcbiAgICB0aGlzLnVwZGF0ZSh7cHJlZGljYXRlOnZhbH0pO1xyXG4gIH1cclxuXHJcbiAgX2FjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHJlYWR5ID0gZmFsc2U7XHJcblxyXG4gIHVwZGF0ZSh2YWw6IFBhcnRpYWw8Q3VzdG9tRmlsdGVyPiApIHtcclxuICAgIGlmKHRoaXMucmVhZHkpIHtcclxuICAgICAgdGhpcy5maWx0ZXIgPSB7Li4udGhpcy5maWx0ZXIsLi4udmFsfTtcclxuICAgICAgdGhpcy5maWx0ZXIkLm5leHQodGhpcy5maWx0ZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IGFjdGl2ZSh2YWw6IGJvb2xlYW4pIHtcclxuICAgIGlmKHRoaXMuX2FjdGl2ZSAhPT0gdmFsKSB7XHJcbiAgICAgIHRoaXMuX2FjdGl2ZSA9IHZhbDtcclxuICAgICAgdGhpcy51cGRhdGUoe2FjdGl2ZTp2YWx9KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IGFjdGl2ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9hY3RpdmU7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmKCF0aGlzLmZpbHRlcklkKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVySWQgPSB1dWlkKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNhdmFibGUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZmlsdGVyID0ge1xyXG4gICAgICBmaWx0ZXJUeXBlOiBGaWx0ZXJUeXBlcy5DdXN0b20sXHJcbiAgICAgIGZpbHRlcklkOiB0aGlzLmZpbHRlcklkLFxyXG4gICAgICBhY3RpdmU6IHRoaXMuX2FjdGl2ZSxcclxuICAgICAgcHJlZGljYXRlOiB0aGlzLl9wcmVkaWNhdGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5yZWFkeSA9IHRydWU7XHJcbiAgICB0aGlzLmZpbHRlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMuZmlsdGVyKTtcclxuICB9XHJcbn1cclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGJTZWxlY3RlZEZpbHRlckRpcmVjdGl2ZTxUID0gYW55PiAgZXh0ZW5kcyBUYWJsZUN1c3RvbUZpbHRlckRpcmVjdGl2ZUJhc2U8VD4ge1xyXG5cclxuICBwcm90ZWN0ZWQgd3JhcHBlciA9IGluamVjdChUYWJsZVdyYXBwZXJEaXJlY3RpdmUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XHJcbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhbmdlOiBPYnNlcnZhYmxlPGFueT4sIHByaXZhdGUgaXNBY3RpdmU6ICgpID0+IGJvb2xlYW4pIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICBpZih0aGlzLndyYXBwZXIpIHtcclxuICAgICAgdGhpcy53cmFwcGVyLnJlZ2lzdGVyKHRoaXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXQoKSB7XHJcbiAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZGVzdHJveVN1YmplY3QkID0gbmV3IFJlcGxheVN1YmplY3Q8dm9pZD4oMSk7XHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmRlc3Ryb3lTdWJqZWN0JC5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2FjdGl2ZSA9IHRoaXMuaXNBY3RpdmUoKTtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB0aGlzLmNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3lTdWJqZWN0JCkpLnN1YnNjcmliZSggKCkgPT4ge1xyXG4gICAgICB0aGlzLmFjdGl2ZSA9IHRoaXMuaXNBY3RpdmUoKTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuLy8gQ2hlY2tib3hcclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdtYXQtY2hlY2tib3hbdGJDdXN0b21GaWx0ZXJdJyxcclxuICBpbnB1dHM6IFtcclxuICAgIC4uLmlucHV0c1xyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBUYWJsZUN1c3RvbUZpbHRlckRpcmVjdGl2ZSwgdXNlRXhpc3Rpbmc6IE1hdENoZWNrYm94VGJGaWx0ZXJEaXJlY3RpdmUgfV0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hdENoZWNrYm94VGJGaWx0ZXJEaXJlY3RpdmUgZXh0ZW5kcyBUYlNlbGVjdGVkRmlsdGVyRGlyZWN0aXZlIHtcclxuICBwcml2YXRlIG1hdENoZWNrYm94ID0gaW5qZWN0KE1hdENoZWNrYm94KTtcclxuXHJcblxyXG4gIG92ZXJyaWRlIHNldCBhY3RpdmUodmFsOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLm1hdENoZWNrYm94LmNoZWNrZWQgPSB2YWw7XHJcbiAgICBzdXBlci5hY3RpdmUgPSB2YWw7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgY29uc3QgbWF0Q2hlY2tib3ggPSBpbmplY3QoTWF0Q2hlY2tib3gpO1xyXG4gICAgc3VwZXIobWF0Q2hlY2tib3guY2hhbmdlLCAoKSA9PiBtYXRDaGVja2JveC5jaGVja2VkKTtcclxuICAgIHRoaXMubWF0Q2hlY2tib3ggPSBtYXRDaGVja2JveDtcclxuICB9XHJcbn1cclxuXHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ21hdC1zbGlkZS10b2dnbGVbdGJDdXN0b21GaWx0ZXJdJyxcclxuICBpbnB1dHM6IFtcclxuICAgIC4uLmlucHV0c1xyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBUYWJsZUN1c3RvbUZpbHRlckRpcmVjdGl2ZSwgdXNlRXhpc3Rpbmc6IE1hdFNsaWRlVG9nZ2xlVGJGaWx0ZXJEaXJlY3RpdmUgfV0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hdFNsaWRlVG9nZ2xlVGJGaWx0ZXJEaXJlY3RpdmU8VCA9IGFueT4gZXh0ZW5kcyBUYlNlbGVjdGVkRmlsdGVyRGlyZWN0aXZlPFQ+IHtcclxuICBwcml2YXRlIG1hdFNsaWRlVG9nZ2xlOiBNYXRTbGlkZVRvZ2dsZTtcclxuXHJcbiAgb3ZlcnJpZGUgc2V0IGFjdGl2ZSh2YWw6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMubWF0U2xpZGVUb2dnbGUuY2hlY2tlZCA9IHZhbDtcclxuICAgIHN1cGVyLmFjdGl2ZSA9IHZhbDtcclxuICB9XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBjb25zdCBtYXRTbGlkZVRvZ2dsZSA9IGluamVjdChNYXRTbGlkZVRvZ2dsZSk7XHJcblxyXG4gICAgc3VwZXIobWF0U2xpZGVUb2dnbGUuY2hhbmdlLCAoKSA9PiBtYXRTbGlkZVRvZ2dsZS5jaGVja2VkKTtcclxuICAgIHRoaXMubWF0U2xpZGVUb2dnbGUgPSBtYXRTbGlkZVRvZ2dsZTtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBSYWRpbyBidXR0b25cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdtYXQtcmFkaW8tYnV0dG9uW3RiQ3VzdG9tRmlsdGVyXScsXHJcbiAgaW5wdXRzOiBbJ3ByZWRpY2F0ZTogdGJDdXN0b21GaWx0ZXInXSxcclxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFRhYmxlQ3VzdG9tRmlsdGVyRGlyZWN0aXZlLCB1c2VFeGlzdGluZzogTWF0UmFkaW9CdXR0b25UYkZpbHRlckRpcmVjdGl2ZSB9XSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWF0UmFkaW9CdXR0b25UYkZpbHRlckRpcmVjdGl2ZSBleHRlbmRzIFRiU2VsZWN0ZWRGaWx0ZXJEaXJlY3RpdmUge1xyXG4gIHByaXZhdGUgbWF0UmFkaW9CdXR0b246IE1hdFJhZGlvQnV0dG9uO1xyXG5cclxuXHJcbiAgb3ZlcnJpZGUgc2V0IGFjdGl2ZSh2YWw6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMubWF0UmFkaW9CdXR0b24uY2hlY2tlZCA9IHZhbDtcclxuICAgIHN1cGVyLmFjdGl2ZSA9IHZhbDtcclxuICB9XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBjb25zdCBtYXRSYWRpb0J1dHRvbiA9IGluamVjdChNYXRSYWRpb0J1dHRvbik7XHJcblxyXG4gICAgc3VwZXIobWF0UmFkaW9CdXR0b24uY2hhbmdlLCAoKSA9PiBtYXRSYWRpb0J1dHRvbi5jaGVja2VkKTtcclxuICAgIHRoaXMubWF0UmFkaW9CdXR0b24gPSBtYXRSYWRpb0J1dHRvbjtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuICB9XHJcbn1cclxuXHJcbi8vIE9wdGlvbiAoc2VsZWN0KVxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ21hdC1vcHRpb25bdGJDdXN0b21GaWx0ZXJdJyxcclxuICBpbnB1dHM6IFtcclxuICAgIC4uLmlucHV0c1xyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBUYWJsZUN1c3RvbUZpbHRlckRpcmVjdGl2ZSwgdXNlRXhpc3Rpbmc6IE1hdE9wdGlvblRiRmlsdGVyRGlyZWN0aXZlIH1dLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXRPcHRpb25UYkZpbHRlckRpcmVjdGl2ZSBleHRlbmRzIFRiU2VsZWN0ZWRGaWx0ZXJEaXJlY3RpdmUge1xyXG4gIHByaXZhdGUgbWF0T3B0aW9uOiBNYXRPcHRpb247XHJcblxyXG5cclxuICBvdmVycmlkZSBzZXQgYWN0aXZlKHZhbDogYm9vbGVhbikge1xyXG4gICAgaWYodmFsKSB7XHJcbiAgICAgIHRoaXMubWF0T3B0aW9uLnNlbGVjdCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5tYXRPcHRpb24uZGVzZWxlY3QoKTtcclxuICAgIH1cclxuICAgIHN1cGVyLmFjdGl2ZSA9IHZhbDtcclxuICB9XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBjb25zdCBtYXRPcHRpb24gPSBpbmplY3QoTWF0T3B0aW9uKTtcclxuXHJcbiAgICBzdXBlciggbWF0T3B0aW9uLm9uU2VsZWN0aW9uQ2hhbmdlLnBpcGUodGFwKCBkID0+IHtcclxuICAgICAgaWYoIW1hdE9wdGlvbi52YWx1ZSkge1xyXG4gICAgICAgIG1hdE9wdGlvbi52YWx1ZSA9IHV1aWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICkpLCAoKSA9PiBtYXRPcHRpb24uc2VsZWN0ZWQpO1xyXG4gICAgdGhpcy5tYXRPcHRpb24gPSBtYXRPcHRpb247XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBCdXR0b24gdG9nZ2xlXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnbWF0LWJ1dHRvbi10b2dnbGVbdGJDdXN0b21GaWx0ZXJdJyxcclxuICBpbnB1dHM6IFtcclxuICAgIC4uLmlucHV0c1xyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBUYWJsZUN1c3RvbUZpbHRlckRpcmVjdGl2ZSwgdXNlRXhpc3Rpbmc6IE1hdEJ1dHRvblRvZ2dsZUZpbHRlckRpcmVjdGl2ZSB9XSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWF0QnV0dG9uVG9nZ2xlRmlsdGVyRGlyZWN0aXZlIGV4dGVuZHMgVGJTZWxlY3RlZEZpbHRlckRpcmVjdGl2ZSB7XHJcbiAgcHJpdmF0ZSBtYXRCdXR0b25Ub2dnbGU6IE1hdEJ1dHRvblRvZ2dsZTtcclxuXHJcbiAgb3ZlcnJpZGUgc2V0IGFjdGl2ZSh2YWw6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMubWF0QnV0dG9uVG9nZ2xlLmNoZWNrZWQgPSB2YWw7XHJcbiAgICBzdXBlci5hY3RpdmUgPSB2YWw7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgY29uc3QgbWF0QnV0dG9uVG9nZ2xlID0gaW5qZWN0KE1hdEJ1dHRvblRvZ2dsZSk7XHJcblxyXG4gICAgc3VwZXIobWF0QnV0dG9uVG9nZ2xlLmNoYW5nZSwgKCkgPT4gbWF0QnV0dG9uVG9nZ2xlLmNoZWNrZWQpO1xyXG4gICAgdGhpcy5tYXRCdXR0b25Ub2dnbGUgPSBtYXRCdXR0b25Ub2dnbGU7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gIH1cclxufVxyXG4iXX0=
396
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGItZmlsdGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy90YWJsZS1idWlsZGVyL2RpcmVjdGl2ZXMvdGItZmlsdGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBNEIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxlQUFlLEVBQWMsYUFBYSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNGLE9BQU8sRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBYyxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQzs7O0FBR3hDLE1BQU0sTUFBTSxHQUFHO0lBQ2IsMkJBQTJCO0lBQzNCLG9CQUFvQjtDQUNyQixDQUFDO0FBTUYsTUFBTSxPQUFnQiwwQkFBMEI7SUFF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d0JBQ04sR0FBRyxNQUFNO3FCQUNWO29CQUNELFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLFdBQVcsNEJBQTRCLEVBQUUsQ0FBQztvQkFDN0YsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOztBQStCRCxnQkFBZ0I7QUFTaEIsTUFBTSxPQUFPLDhCQUErQixTQUFRLHlCQUF5QjtJQUNuRSxlQUFlLENBQWtCO0lBRXpDLElBQWEsTUFBTSxDQUFDLEdBQVk7UUFDOUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO1FBQ25DLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO0lBQ3JCLENBQUM7SUFDRDtRQUNFLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUVoRCxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7SUFFekMsQ0FBQztJQUVELFFBQVE7UUFDTixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkIsQ0FBQzt1R0FqQlUsOEJBQThCOzJGQUE5Qiw4QkFBOEIsOEpBSDlCLENBQUMsRUFBRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsV0FBVyxFQUFFLDhCQUE4QixFQUFFLENBQUM7OzJGQUd0Riw4QkFBOEI7a0JBUjFDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1DQUFtQztvQkFDN0MsTUFBTSxFQUFFO3dCQUNOLEdBQUcsTUFBTTtxQkFDVjtvQkFDRCxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxXQUFXLGdDQUFnQyxFQUFFLENBQUM7b0JBQ2pHLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5wdXQsIFByZWRpY2F0ZSwgU2ltcGxlQ2hhbmdlcywgaW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0LCB0YWtlVW50aWwsIHRhcCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEN1c3RvbUZpbHRlciwgRmlsdGVySW5mbyB9IGZyb20gXCIuLi9jbGFzc2VzL2ZpbHRlci1pbmZvXCI7XHJcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tICd1dWlkJztcclxuaW1wb3J0IHsgRmlsdGVyVHlwZSwgRmlsdGVyVHlwZXMgfSBmcm9tIFwiLi4vZW51bXMvZmlsdGVyVHlwZXNcIjtcclxuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlXCI7XHJcbmltcG9ydCB7IE1hdFJhZGlvQnV0dG9uIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3JhZGlvXCI7XHJcbmltcG9ydCB7IE1hdEJ1dHRvblRvZ2dsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbi10b2dnbGUnO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveFwiO1xyXG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9yZXBvcnQtZGVmXCI7XHJcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBUYWJsZVdyYXBwZXJEaXJlY3RpdmUgfSBmcm9tIFwiLi90YWJsZS13cmFwcGVyLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQgeyBNYXRPcHRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xyXG5pbXBvcnQgeyBzdWJzY3JpYmVyIH0gZnJvbSBcIi4uLy4uL3J4anNcIjtcclxuXHJcblxyXG5jb25zdCBpbnB1dHMgPSBbXHJcbiAgJ3ByZWRpY2F0ZTogdGJDdXN0b21GaWx0ZXInLFxyXG4gICdmaWx0ZXJJZDogZmlsdGVySWQnLFxyXG5dO1xyXG5cclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnICdcclxufSlcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRhYmxlQ3VzdG9tRmlsdGVyRGlyZWN0aXZlPFQgPSBhbnk+IHtcclxuICBhYnN0cmFjdCBmaWx0ZXIkIDogT2JzZXJ2YWJsZTxDdXN0b21GaWx0ZXI+O1xyXG4gIGZpbHRlcklkITogc3RyaW5nO1xyXG4gIHNhdmFibGUgPSBmYWxzZTtcclxuICB1c2VkID0gZmFsc2U7XHJcbiAgYWJzdHJhY3QgYWN0aXZlOiBib29sZWFuO1xyXG4gIGFic3RyYWN0IHJlc2V0KCk6IHZvaWQ7XHJcbn1cclxuXHJcblxyXG5cclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiBcIlt0YkZpbHRlcl1cIixcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG59KSBleHBvcnQgY2xhc3MgVGFibGVGaWx0ZXJEaXJlY3RpdmUge1xyXG4gIHByb3RlY3RlZCBtb2RlbCA9IGluamVjdChOZ0NvbnRyb2wsIHsgb3B0aW9uYWw6IHRydWUgfSk7XHJcbiAgcHJpdmF0ZSB3cmFwcGVyID0gaW5qZWN0KFRhYmxlV3JhcHBlckRpcmVjdGl2ZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIGlmKHRoaXMud3JhcHBlcikge1xyXG4gICAgICB0aGlzLndyYXBwZXIucmVnaXN0ZXIodGhpcyk7XHJcbiAgICB9XHJcbiAgICBpZih0aGlzLm1vZGVsKSB7XHJcbiAgICAgIHN1YnNjcmliZXIodGhpcy5tb2RlbCEudmFsdWVDaGFuZ2VzISwgdmFsID0+IHtcclxuICAgICAgICB0aGlzLmZpbHRlclZhbHVlID0gdmFsO1xyXG4gICAgICAgIHRoaXMudXBkYXRlKCk7XHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG4gIHJlc2V0KCkge1xyXG4gICAgdGhpcy5maWx0ZXJWYWx1ZSA9IHVuZGVmaW5lZDtcclxuICB9XHJcbiAgZmlsdGVyJCA9IG5ldyBTdWJqZWN0PEZpbHRlckluZm8+O1xyXG5cclxuICBASW5wdXQoKSBmaWx0ZXJUeXBlITogRmlsdGVyVHlwZTtcclxuICBASW5wdXQoKSBrZXkhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZmllbGRUeXBlITogRmllbGRUeXBlO1xyXG4gIEBJbnB1dCgpIGZpbHRlcklkITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGFjdGl2ZSA9IHRydWU7XHJcbiAgQElucHV0KCkgZmlsdGVyVmFsdWU6IGFueSA9IG51bGw7XHJcblxyXG4gIHNldEZpbHRlclZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgIGlmKHRoaXMubW9kZWwpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5tb2RlbCEucmVzZXQodmFsdWUpO1xyXG4gICAgICB9LCAwKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyVmFsdWUgPSB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVzZWQgPSBmYWxzZTtcclxuICBzYXZhYmxlID0gZmFsc2U7XHJcbiAgcmVhZHkgPSBmYWxzZTtcclxuXHJcbiAgX3VzZXJBY3RpdmUgPSB0cnVlO1xyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIHRoaXMudXBkYXRlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmKCF0aGlzLmZpbHRlcklkKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVySWQgPSB1dWlkKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNhdmFibGUgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZWFkeSA9IHRydWU7XHJcbiAgICB0aGlzLnVwZGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHNldEZpbHRlcihmaWx0ZXI6IEZpbHRlckluZm8gKSB7XHJcbiAgICB0aGlzLmZpbHRlciQubmV4dChmaWx0ZXIpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlKCkge1xyXG4gICAgaWYgKHRoaXMucmVhZHkpIHtcclxuICAgICAgdGhpcy5zZXRGaWx0ZXIoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgZmlsdGVySWQ6IHRoaXMuZmlsdGVySWQsXHJcbiAgICAgICAgICBrZXk6IHRoaXMua2V5LFxyXG4gICAgICAgICAgZmlsdGVyVHlwZTogdGhpcy5maWx0ZXJUeXBlLFxyXG4gICAgICAgICAgZmllbGRUeXBlOiB0aGlzLmZpZWxkVHlwZSxcclxuICAgICAgICAgIGZpbHRlclZhbHVlOiB0aGlzLmZpbHRlclZhbHVlLFxyXG4gICAgICAgICAgYWN0aXZlOiB0aGlzLmFjdGl2ZSAmJiB0aGlzLmZpbHRlclZhbHVlICE9PSB1bmRlZmluZWQsXHJcbiAgICAgICAgICBfaXNFeHRlcm5hbGx5TWFuYWdlZDogdHJ1ZSxcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcblxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbdGJGaWx0ZXJTdHJpbmdDb250YWluc10nLFxyXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogVGFibGVGaWx0ZXJEaXJlY3RpdmUsIHVzZUV4aXN0aW5nOiBUYWJsZUZpbHRlclN0cmluZ0NvbnRhaW5zRGlyZWN0aXZlIH1dLFxyXG4gIGlucHV0czogW1xyXG4gICAgJ2tleTp0YkZpbHRlclN0cmluZ0NvbnRhaW5zJyxcclxuICAgICdmaWx0ZXJWYWx1ZTpmaWx0ZXJWYWx1ZScsXHJcbiAgICAnZmlsdGVySWQ6IGZpbHRlcklkJyxcclxuICAgICdhY3RpdmU6IGFjdGl2ZScsXHJcbiAgXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG59KSBleHBvcnQgY2xhc3MgVGFibGVGaWx0ZXJTdHJpbmdDb250YWluc0RpcmVjdGl2ZSBleHRlbmRzIFRhYmxlRmlsdGVyRGlyZWN0aXZlIHtcclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLmZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlcy5TdHJpbmdDb250YWlucztcclxuICAgIHRoaXMuZmllbGRUeXBlID0gRmllbGRUeXBlLlN0cmluZztcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIHJlc2V0KCkge1xyXG4gICAgaWYodGhpcy5tb2RlbCkge1xyXG4gICAgICB0aGlzLm1vZGVsLnJlc2V0KCk7XHJcbiAgICB9XHJcbiAgICBzdXBlci5yZXNldCgpO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgc2V0RmlsdGVyKGZpbHRlcjogRmlsdGVySW5mbykge1xyXG4gICAgZmlsdGVyLmFjdGl2ZSA9IGZpbHRlci5maWx0ZXJWYWx1ZSAmJiB0aGlzLl91c2VyQWN0aXZlO1xyXG4gICAgc3VwZXIuc2V0RmlsdGVyKGZpbHRlcik7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZihjaGFuZ2VzWydhY3RpdmUnXSkge1xyXG4gICAgICB0aGlzLl91c2VyQWN0aXZlID0gY2hhbmdlc1snYWN0aXZlJ10uY3VycmVudFZhbHVlO1xyXG4gICAgfVxyXG4gICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XHJcbiAgfVxyXG59XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogXCJbdGJDdXN0b21GaWx0ZXJdXCIsXHJcbn0pXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUYWJsZUN1c3RvbUZpbHRlckRpcmVjdGl2ZUJhc2U8VCA9IGFueT4gZXh0ZW5kcyBUYWJsZUN1c3RvbUZpbHRlckRpcmVjdGl2ZTxUPiB7XHJcblxyXG4gIGZpbHRlciQhIDogU3ViamVjdDxDdXN0b21GaWx0ZXI+O1xyXG4gIGZpbHRlciE6IEN1c3RvbUZpbHRlcjtcclxuXHJcbiAgX3ByZWRpY2F0ZSE6IFByZWRpY2F0ZTxUPjtcclxuICBASW5wdXQoJ3RiQ3VzdG9tRmlsdGVyJykgc2V0IHByZWRpY2F0ZSggdmFsOiBQcmVkaWNhdGU8VD4gKSB7XHJcbiAgICB0aGlzLl9wcmVkaWNhdGUgPSB2YWw7XHJcbiAgICB0aGlzLnVwZGF0ZSh7cHJlZGljYXRlOnZhbH0pO1xyXG4gIH1cclxuXHJcbiAgX2FjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHJlYWR5ID0gZmFsc2U7XHJcblxyXG4gIHVwZGF0ZSh2YWw6IFBhcnRpYWw8Q3VzdG9tRmlsdGVyPiApIHtcclxuICAgIGlmKHRoaXMucmVhZHkpIHtcclxuICAgICAgdGhpcy5maWx0ZXIgPSB7Li4udGhpcy5maWx0ZXIsLi4udmFsfTtcclxuICAgICAgdGhpcy5maWx0ZXIkLm5leHQodGhpcy5maWx0ZXIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IGFjdGl2ZSh2YWw6IGJvb2xlYW4pIHtcclxuICAgIGlmKHRoaXMuX2FjdGl2ZSAhPT0gdmFsKSB7XHJcbiAgICAgIHRoaXMuX2FjdGl2ZSA9IHZhbDtcclxuICAgICAgdGhpcy51cGRhdGUoe2FjdGl2ZTp2YWx9KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IGFjdGl2ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9hY3RpdmU7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmKCF0aGlzLmZpbHRlcklkKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVySWQgPSB1dWlkKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNhdmFibGUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZmlsdGVyID0ge1xyXG4gICAgICBmaWx0ZXJUeXBlOiBGaWx0ZXJUeXBlcy5DdXN0b20sXHJcbiAgICAgIGZpbHRlcklkOiB0aGlzLmZpbHRlcklkLFxyXG4gICAgICBhY3RpdmU6IHRoaXMuX2FjdGl2ZSxcclxuICAgICAgcHJlZGljYXRlOiB0aGlzLl9wcmVkaWNhdGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5yZWFkeSA9IHRydWU7XHJcbiAgICB0aGlzLmZpbHRlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMuZmlsdGVyKTtcclxuICB9XHJcbn1cclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGJTZWxlY3RlZEZpbHRlckRpcmVjdGl2ZTxUID0gYW55PiAgZXh0ZW5kcyBUYWJsZUN1c3RvbUZpbHRlckRpcmVjdGl2ZUJhc2U8VD4ge1xyXG5cclxuICBwcm90ZWN0ZWQgd3JhcHBlciA9IGluamVjdChUYWJsZVdyYXBwZXJEaXJlY3RpdmUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XHJcbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhbmdlOiBPYnNlcnZhYmxlPGFueT4sIHByaXZhdGUgaXNBY3RpdmU6ICgpID0+IGJvb2xlYW4pIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICBpZih0aGlzLndyYXBwZXIpIHtcclxuICAgICAgdGhpcy53cmFwcGVyLnJlZ2lzdGVyKHRoaXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXQoKSB7XHJcbiAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZGVzdHJveVN1YmplY3QkID0gbmV3IFJlcGxheVN1YmplY3Q8dm9pZD4oMSk7XHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmRlc3Ryb3lTdWJqZWN0JC5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2FjdGl2ZSA9IHRoaXMuaXNBY3RpdmUoKTtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB0aGlzLmNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3lTdWJqZWN0JCkpLnN1YnNjcmliZSggKCkgPT4ge1xyXG4gICAgICB0aGlzLmFjdGl2ZSA9IHRoaXMuaXNBY3RpdmUoKTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuLy8gQ2hlY2tib3hcclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdtYXQtY2hlY2tib3hbdGJDdXN0b21GaWx0ZXJdJyxcclxuICBpbnB1dHM6IFtcclxuICAgIC4uLmlucHV0c1xyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBUYWJsZUN1c3RvbUZpbHRlckRpcmVjdGl2ZSwgdXNlRXhpc3Rpbmc6IE1hdENoZWNrYm94VGJGaWx0ZXJEaXJlY3RpdmUgfV0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hdENoZWNrYm94VGJGaWx0ZXJEaXJlY3RpdmUgZXh0ZW5kcyBUYlNlbGVjdGVkRmlsdGVyRGlyZWN0aXZlIHtcclxuICBwcml2YXRlIG1hdENoZWNrYm94ID0gaW5qZWN0KE1hdENoZWNrYm94KTtcclxuXHJcblxyXG4gIG92ZXJyaWRlIHNldCBhY3RpdmUodmFsOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLm1hdENoZWNrYm94LmNoZWNrZWQgPSB2YWw7XHJcbiAgICBzdXBlci5hY3RpdmUgPSB2YWw7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgY29uc3QgbWF0Q2hlY2tib3ggPSBpbmplY3QoTWF0Q2hlY2tib3gpO1xyXG4gICAgc3VwZXIobWF0Q2hlY2tib3guY2hhbmdlLCAoKSA9PiBtYXRDaGVja2JveC5jaGVja2VkKTtcclxuICAgIHRoaXMubWF0Q2hlY2tib3ggPSBtYXRDaGVja2JveDtcclxuICB9XHJcbn1cclxuXHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ21hdC1zbGlkZS10b2dnbGVbdGJDdXN0b21GaWx0ZXJdJyxcclxuICBpbnB1dHM6IFtcclxuICAgIC4uLmlucHV0c1xyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBUYWJsZUN1c3RvbUZpbHRlckRpcmVjdGl2ZSwgdXNlRXhpc3Rpbmc6IE1hdFNsaWRlVG9nZ2xlVGJGaWx0ZXJEaXJlY3RpdmUgfV0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hdFNsaWRlVG9nZ2xlVGJGaWx0ZXJEaXJlY3RpdmU8VCA9IGFueT4gZXh0ZW5kcyBUYlNlbGVjdGVkRmlsdGVyRGlyZWN0aXZlPFQ+IHtcclxuICBwcml2YXRlIG1hdFNsaWRlVG9nZ2xlOiBNYXRTbGlkZVRvZ2dsZTtcclxuXHJcbiAgb3ZlcnJpZGUgc2V0IGFjdGl2ZSh2YWw6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMubWF0U2xpZGVUb2dnbGUuY2hlY2tlZCA9IHZhbDtcclxuICAgIHN1cGVyLmFjdGl2ZSA9IHZhbDtcclxuICB9XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBjb25zdCBtYXRTbGlkZVRvZ2dsZSA9IGluamVjdChNYXRTbGlkZVRvZ2dsZSk7XHJcblxyXG4gICAgc3VwZXIobWF0U2xpZGVUb2dnbGUuY2hhbmdlLCAoKSA9PiBtYXRTbGlkZVRvZ2dsZS5jaGVja2VkKTtcclxuICAgIHRoaXMubWF0U2xpZGVUb2dnbGUgPSBtYXRTbGlkZVRvZ2dsZTtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBSYWRpbyBidXR0b25cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdtYXQtcmFkaW8tYnV0dG9uW3RiQ3VzdG9tRmlsdGVyXScsXHJcbiAgaW5wdXRzOiBbJ3ByZWRpY2F0ZTogdGJDdXN0b21GaWx0ZXInXSxcclxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFRhYmxlQ3VzdG9tRmlsdGVyRGlyZWN0aXZlLCB1c2VFeGlzdGluZzogTWF0UmFkaW9CdXR0b25UYkZpbHRlckRpcmVjdGl2ZSB9XSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWF0UmFkaW9CdXR0b25UYkZpbHRlckRpcmVjdGl2ZSBleHRlbmRzIFRiU2VsZWN0ZWRGaWx0ZXJEaXJlY3RpdmUge1xyXG4gIHByaXZhdGUgbWF0UmFkaW9CdXR0b246IE1hdFJhZGlvQnV0dG9uO1xyXG5cclxuXHJcbiAgb3ZlcnJpZGUgc2V0IGFjdGl2ZSh2YWw6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMubWF0UmFkaW9CdXR0b24uY2hlY2tlZCA9IHZhbDtcclxuICAgIHN1cGVyLmFjdGl2ZSA9IHZhbDtcclxuICB9XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBjb25zdCBtYXRSYWRpb0J1dHRvbiA9IGluamVjdChNYXRSYWRpb0J1dHRvbik7XHJcblxyXG4gICAgc3VwZXIobWF0UmFkaW9CdXR0b24uY2hhbmdlLCAoKSA9PiBtYXRSYWRpb0J1dHRvbi5jaGVja2VkKTtcclxuICAgIHRoaXMubWF0UmFkaW9CdXR0b24gPSBtYXRSYWRpb0J1dHRvbjtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgc3VwZXIubmdPbkluaXQoKTtcclxuICB9XHJcbn1cclxuXHJcbi8vIE9wdGlvbiAoc2VsZWN0KVxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ21hdC1vcHRpb25bdGJDdXN0b21GaWx0ZXJdJyxcclxuICBpbnB1dHM6IFtcclxuICAgIC4uLmlucHV0c1xyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBUYWJsZUN1c3RvbUZpbHRlckRpcmVjdGl2ZSwgdXNlRXhpc3Rpbmc6IE1hdE9wdGlvblRiRmlsdGVyRGlyZWN0aXZlIH1dLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXRPcHRpb25UYkZpbHRlckRpcmVjdGl2ZSBleHRlbmRzIFRiU2VsZWN0ZWRGaWx0ZXJEaXJlY3RpdmUge1xyXG4gIHByaXZhdGUgbWF0T3B0aW9uOiBNYXRPcHRpb247XHJcblxyXG5cclxuICBvdmVycmlkZSBzZXQgYWN0aXZlKHZhbDogYm9vbGVhbikge1xyXG4gICAgaWYodmFsKSB7XHJcbiAgICAgIHRoaXMubWF0T3B0aW9uLnNlbGVjdCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5tYXRPcHRpb24uZGVzZWxlY3QoKTtcclxuICAgIH1cclxuICAgIHN1cGVyLmFjdGl2ZSA9IHZhbDtcclxuICB9XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBjb25zdCBtYXRPcHRpb24gPSBpbmplY3QoTWF0T3B0aW9uKTtcclxuXHJcbiAgICBzdXBlciggbWF0T3B0aW9uLm9uU2VsZWN0aW9uQ2hhbmdlLnBpcGUodGFwKCBkID0+IHtcclxuICAgICAgaWYoIW1hdE9wdGlvbi52YWx1ZSkge1xyXG4gICAgICAgIG1hdE9wdGlvbi52YWx1ZSA9IHV1aWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICkpLCAoKSA9PiBtYXRPcHRpb24uc2VsZWN0ZWQpO1xyXG4gICAgdGhpcy5tYXRPcHRpb24gPSBtYXRPcHRpb247XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBCdXR0b24gdG9nZ2xlXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnbWF0LWJ1dHRvbi10b2dnbGVbdGJDdXN0b21GaWx0ZXJdJyxcclxuICBpbnB1dHM6IFtcclxuICAgIC4uLmlucHV0c1xyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBUYWJsZUN1c3RvbUZpbHRlckRpcmVjdGl2ZSwgdXNlRXhpc3Rpbmc6IE1hdEJ1dHRvblRvZ2dsZUZpbHRlckRpcmVjdGl2ZSB9XSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWF0QnV0dG9uVG9nZ2xlRmlsdGVyRGlyZWN0aXZlIGV4dGVuZHMgVGJTZWxlY3RlZEZpbHRlckRpcmVjdGl2ZSB7XHJcbiAgcHJpdmF0ZSBtYXRCdXR0b25Ub2dnbGU6IE1hdEJ1dHRvblRvZ2dsZTtcclxuXHJcbiAgb3ZlcnJpZGUgc2V0IGFjdGl2ZSh2YWw6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMubWF0QnV0dG9uVG9nZ2xlLmNoZWNrZWQgPSB2YWw7XHJcbiAgICBzdXBlci5hY3RpdmUgPSB2YWw7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgY29uc3QgbWF0QnV0dG9uVG9nZ2xlID0gaW5qZWN0KE1hdEJ1dHRvblRvZ2dsZSk7XHJcblxyXG4gICAgc3VwZXIobWF0QnV0dG9uVG9nZ2xlLmNoYW5nZSwgKCkgPT4gbWF0QnV0dG9uVG9nZ2xlLmNoZWNrZWQpO1xyXG4gICAgdGhpcy5tYXRCdXR0b25Ub2dnbGUgPSBtYXRCdXR0b25Ub2dnbGU7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,8 +1,6 @@
1
1
  import { DatePipe } from '@angular/common';
2
2
  import { Injectable, inject } from '@angular/core';
3
- import { first, map } from 'rxjs/operators';
4
- import { combineLatest } from 'rxjs';
5
- import { orderStateMetaData, TableStore } from '../classes/table-store';
3
+ import { TableStore } from '../classes/table-store';
6
4
  import { TableBuilderConfigToken } from '../classes/TableBuilderConfig';
7
5
  import { downloadData } from '../functions/download-data';
8
6
  import { ArrayStyle, FieldType } from '../interfaces/report-def';
@@ -14,8 +12,10 @@ export class ExportToCsvService {
14
12
  config = inject(TableBuilderConfigToken);
15
13
  datePipe = inject(DatePipe);
16
14
  exportToCsv = (data) => {
17
- const exportableFields$ = this.state.state$.pipe(map(mapExportableFields));
18
- combineLatest([data, exportableFields$]).pipe(first(), map(([data, fields]) => this.csvData(data, fields))).subscribe(csv => downloadData(csv, 'export.csv', 'text/csv'));
15
+ const hiddenKeys = this.state.selectSignal(s => s.hiddenKeys)();
16
+ const meta = this.state.$metaDataArray().filter(md => !md.noExport && !hiddenKeys.includes(md.key));
17
+ const csv = this.csvData(data, meta);
18
+ downloadData(csv, 'export.csv', 'text/csv');
19
19
  };
20
20
  csvData = (data, metaData) => {
21
21
  const res = data.map(row => metaData.map(meta => this.metaToField(meta, row)).join(','));
@@ -72,14 +72,4 @@ export class ExportToCsvService {
72
72
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ExportToCsvService, decorators: [{
73
73
  type: Injectable
74
74
  }] });
75
- export const removeFromMetaData = (state, keysToRemove) => orderStateMetaData(state)
76
- .filter(meta => !keysToRemove.includes(meta.key));
77
- export const nonExportableFields = (state) => Object.values(state.metaData)
78
- .filter(md => md.noExport)
79
- .map(md => md.key);
80
- export const mapExportableFields = (state) => {
81
- const fieldsToRemove = nonExportableFields(state)
82
- .concat(state.hiddenKeys);
83
- return removeFromMetaData(state, fieldsToRemove);
84
- };
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LXRvLWNzdi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvc2VydmljZXMvZXhwb3J0LXRvLWNzdi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRyxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQW1CLFVBQVUsRUFBRSxTQUFTLEVBQVksTUFBTSwwQkFBMEIsQ0FBQztBQUU1RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFFBQVEsQ0FBQzs7QUFHN0IsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ25CLE1BQU0sR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUN6QyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBR3BDLFdBQVcsR0FBRyxDQUFDLElBQXFCLEVBQUUsRUFBRTtRQUN0QyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFD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bnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBmaXJzdCwgbWFwICB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgY29tYmluZUxhdGVzdH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG9yZGVyU3RhdGVNZXRhRGF0YSwgVGFibGVTdG9yZSB9IGZyb20gJy4uL2NsYXNzZXMvdGFibGUtc3RvcmUnO1xyXG5pbXBvcnQgeyBUYWJsZUJ1aWxkZXJDb25maWdUb2tlbiB9IGZyb20gJy4uL2NsYXNzZXMvVGFibGVCdWlsZGVyQ29uZmlnJztcclxuaW1wb3J0IHsgZG93bmxvYWREYXRhIH0gZnJvbSAnLi4vZnVuY3Rpb25zL2Rvd25sb2FkLWRhdGEnO1xyXG5pbXBvcnQgeyBBcnJheUFkZGl0aW9uYWwsIEFycmF5U3R5bGUsIEZpZWxkVHlwZSwgTWV0YURhdGEgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlcG9ydC1kZWYnO1xyXG5pbXBvcnQgeyBUYWJsZVN0YXRlIH0gZnJvbSAnLi4vY2xhc3Nlcy9UYWJsZVN0YXRlJztcclxuaW1wb3J0IHsgaXNQaXBlIH0gZnJvbSAnLi90cmFuc2Zvcm0tY3JlYXRvcic7XHJcbmltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaCc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBFeHBvcnRUb0NzdlNlcnZpY2U8VD4ge1xyXG4gIHN0YXRlID0gaW5qZWN0KFRhYmxlU3RvcmUpO1xyXG4gIHByaXZhdGUgY29uZmlnID0gaW5qZWN0KFRhYmxlQnVpbGRlckNvbmZpZ1Rva2VuKTtcclxuICBwcml2YXRlIGRhdGVQaXBlID0gaW5qZWN0KERhdGVQaXBlKTtcclxuXHJcblxyXG4gIGV4cG9ydFRvQ3N2ID0gKGRhdGE6IE9ic2VydmFibGU8VFtdPikgPT4ge1xyXG4gICAgY29uc3QgZXhwb3J0YWJsZUZpZWxkcyQgPSB0aGlzLnN0YXRlLnN0YXRlJC5waXBlKFxyXG4gICAgICBtYXAobWFwRXhwb3J0YWJsZUZpZWxkcylcclxuICAgICk7XHJcblxyXG4gICAgY29tYmluZUxhdGVzdChbZGF0YSxleHBvcnRhYmxlRmllbGRzJF0pLnBpcGUoXHJcbiAgICAgIGZpcnN0KCksXHJcbiAgICAgIG1hcCgoW2RhdGEsZmllbGRzXSkgPT4gdGhpcy5jc3ZEYXRhKGRhdGEsZmllbGRzKSksXHJcbiAgICApLnN1YnNjcmliZShjc3YgPT4gZG93bmxvYWREYXRhKGNzdiwnZXhwb3J0LmNzdicsJ3RleHQvY3N2JykgKTtcclxuICB9XHJcblxyXG4gIGNzdkRhdGEgPSAoZGF0YTpBcnJheTxUPiwgbWV0YURhdGE6IE1ldGFEYXRhPFQ+W10pID0+IHtcclxuICAgIGNvbnN0IHJlcyA9IGRhdGEubWFwKHJvdyA9PiBtZXRhRGF0YS5tYXAobWV0YSA9PiB0aGlzLm1ldGFUb0ZpZWxkKG1ldGEsIHJvdykpLmpvaW4oJywnKSk7XHJcbiAgICByZXMudW5zaGlmdChtZXRhRGF0YS5tYXAobWV0YSA9PiBtZXRhLmRpc3BsYXlOYW1lIHx8IG1ldGEua2V5KS5qb2luKCcsJykpO1xyXG4gICAgcmV0dXJuIHJlcy5qb2luKCdcXG4nKTtcclxuICB9XHJcblxyXG4gIG1ldGFUb0ZpZWxkID0gKG1ldGE6IE1ldGFEYXRhPFQ+LCByb3c6IFQpID0+IHtcclxuICAgIGxldCB2YWw6IGFueSA9IGdldCggcm93LG1ldGEua2V5KTtcclxuICAgIGlmICh2YWwgPT0gbnVsbCAmJiAhbWV0YS50cmFuc2Zvcm0pIHJldHVybiB2YWxcclxuICAgIGlmKG1ldGEudHJhbnNmb3JtICYmIG1ldGEuZmllbGRUeXBlICE9PSBGaWVsZFR5cGUuRXhwcmVzc2lvbil7XHJcbiAgICAgIGNvbnN0IHRyYW5zZm9ybSA9IG1ldGEudHJhbnNmb3JtIGFzIGFueTtcclxuICAgICAgcmV0dXJuICBpc1BpcGUodHJhbnNmb3JtKSA/IHRyYW5zZm9ybS50cmFuc2Zvcm0odmFsKSA6IHRyYW5zZm9ybSh2YWwpO1xyXG4gICAgfVxyXG4gICAgaWYobWV0YS5tYXApe1xyXG4gICAgICByZXR1cm4gbWV0YS5tYXAocm93KTtcclxuICAgIH1cclxuICAgIHN3aXRjaCAobWV0YS5maWVsZFR5cGUpIHtcclxuICAgICAgY2FzZSBGaWVsZFR5cGUuRGF0ZTpcclxuICAgICAgICBjb25zdCBkYXRlRm9ybWF0ID0gbWV0YS5hZGRpdGlvbmFsPy5leHBvcnQ/LmRhdGVGb3JtYXQgfHwgdGhpcy5jb25maWc/LmV4cG9ydD8uZGF0ZUZvcm1hdCB8fCBtZXRhLmFkZGl0aW9uYWw/LmRhdGVGb3JtYXQ7XHJcbiAgICAgICAgdmFsID0gdGhpcy50cmFuc2Zvcm0odmFsLCBkYXRlRm9ybWF0KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBGaWVsZFR5cGUuRGF0ZVRpbWU6XHJcbiAgICAgICAgY29uc3QgZGF0ZVRpbWVGb3JtYXQgPSBtZXRhLmFkZGl0aW9uYWw/LmV4cG9ydD8uZGF0ZVRpbWVGb3JtYXQgfHwgdGhpcy5jb25maWc/LmV4cG9ydD8uZGF0ZVRpbWVGb3JtYXQgfHwgbWV0YS5hZGRpdGlvbmFsPy5kYXRlVGltZU9wdGlvbnM/LmZvcm1hdDtcclxuICAgICAgICB2YWwgPSB0aGlzLnRyYW5zZm9ybSh2YWwsIGRhdGVUaW1lRm9ybWF0KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBGaWVsZFR5cGUuU3RyaW5nOlxyXG4gICAgICAgIGNvbnN0IHByZXBlbmQ6IHN0cmluZyA9IG1ldGEuYWRkaXRpb25hbD8uZXhwb3J0Py5wcmVwZW5kIHx8IHRoaXMuY29uZmlnPy5leHBvcnQ/LnByZXBlbmQgfHwgJyc7XHJcbiAgICAgICAgdmFsID0gcHJlcGVuZCArIHZhbDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBGaWVsZFR5cGUuQXJyYXk6XHJcbiAgICAgICAgY29uc3QgYWRkaXRpb25hbCA9IG1ldGEuYWRkaXRpb25hbCBhcyBBcnJheUFkZGl0aW9uYWw7XHJcbiAgICAgICAgdmFsID0gKHZhbCBhcyBBcnJheTxzdHJpbmc+KS5zbGljZSgwLGFkZGl0aW9uYWwubGltaXQpLmpvaW4oYWRkaXRpb25hbC5hcnJheVN0eWxlID09PSBBcnJheVN0eWxlLk5ld0xpbmUgPyAnXFxuJyA6ICcsICcpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZS5FeHByZXNzaW9uOlxyXG4gICAgICAgIHZhbCA9IChtZXRhLnRyYW5zZm9ybSBhcyBhbnkpKHJvdyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgJiYgKHZhbC5pbmNsdWRlcygnLCcpIHx8IHZhbC5pbmNsdWRlcygnXCInKSB8fCB2YWwuaW5jbHVkZXMoJ1xcbicpKSkge1xyXG4gICAgICB2YWwgPSB2YWwucmVwbGFjZUFsbCgnXCInLCAnXCJcIicpO1xyXG4gICAgICB2YWwgPSAnXCInICsgdmFsICsgJ1wiJztcclxuICAgIH1cclxuICAgIHJldHVybiB2YWw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRyYW5zZm9ybSh2YWw6IGFueSwgZGF0ZUZvcm1hdDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5jb25maWcudHJhbnNmb3JtZXJzICYmIHRoaXMuY29uZmlnLnRyYW5zZm9ybWVyc1tGaWVsZFR5cGUuRGF0ZV0pIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLnRyYW5zZm9ybWVyc1tGaWVsZFR5cGUuRGF0ZV0hKHZhbCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odmFsLCBkYXRlRm9ybWF0KTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCByZW1vdmVGcm9tTWV0YURhdGEgPSAoc3RhdGU6IFRhYmxlU3RhdGUsIGtleXNUb1JlbW92ZTogc3RyaW5nW10pID0+XHJcbiAgICBvcmRlclN0YXRlTWV0YURhdGEoc3RhdGUpXHJcbiAgLmZpbHRlciggbWV0YSA9PiAha2V5c1RvUmVtb3ZlLmluY2x1ZGVzKG1ldGEua2V5KSk7XHJcblxyXG5cclxuZXhwb3J0IGNvbnN0IG5vbkV4cG9ydGFibGVGaWVsZHMgPSAoc3RhdGU6IFRhYmxlU3RhdGUpID0+IE9iamVjdC52YWx1ZXMoIHN0YXRlLm1ldGFEYXRhKVxyXG4gIC5maWx0ZXIobWQgPT4gbWQubm9FeHBvcnQgKVxyXG4gIC5tYXAoIG1kID0+IG1kLmtleSApO1xyXG5cclxuZXhwb3J0IGNvbnN0IG1hcEV4cG9ydGFibGVGaWVsZHMgPSAoc3RhdGU6IFRhYmxlU3RhdGUpID0+IHtcclxuICBjb25zdCBmaWVsZHNUb1JlbW92ZSA9IG5vbkV4cG9ydGFibGVGaWVsZHMoc3RhdGUpXHJcbiAgICAuY29uY2F0KHN0YXRlLmhpZGRlbktleXMpO1xyXG4gICByZXR1cm4gcmVtb3ZlRnJvbU1ldGFEYXRhKHN0YXRlLCBmaWVsZHNUb1JlbW92ZSk7XHJcbn1cclxuIl19
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LXRvLWNzdi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvc2VydmljZXMvZXhwb3J0LXRvLWNzdi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUluRCxPQUFPLEVBQXNCLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQW1CLFVBQVUsRUFBRSxTQUFTLEVBQVksTUFBTSwwQkFBMEIsQ0FBQztBQUU1RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFFBQVEsQ0FBQzs7QUFHN0IsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ25CLE1BQU0sR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUN6QyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBR3BDLFdBQVcsR0FBRyxDQUFDLElBQVMsRUFBRSxFQUFFO1FBQzFCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDaEUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQyxN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QUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDbEQsQ0FBQzt1R0E5RFUsa0JBQWtCOzJHQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpcnN0LCBtYXAgIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0fSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgb3JkZXJTdGF0ZU1ldGFEYXRhLCBUYWJsZVN0b3JlIH0gZnJvbSAnLi4vY2xhc3Nlcy90YWJsZS1zdG9yZSc7XHJcbmltcG9ydCB7IFRhYmxlQnVpbGRlckNvbmZpZ1Rva2VuIH0gZnJvbSAnLi4vY2xhc3Nlcy9UYWJsZUJ1aWxkZXJDb25maWcnO1xyXG5pbXBvcnQgeyBkb3dubG9hZERhdGEgfSBmcm9tICcuLi9mdW5jdGlvbnMvZG93bmxvYWQtZGF0YSc7XHJcbmltcG9ydCB7IEFycmF5QWRkaXRpb25hbCwgQXJyYXlTdHlsZSwgRmllbGRUeXBlLCBNZXRhRGF0YSB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVwb3J0LWRlZic7XHJcbmltcG9ydCB7IFRhYmxlU3RhdGUgfSBmcm9tICcuLi9jbGFzc2VzL1RhYmxlU3RhdGUnO1xyXG5pbXBvcnQgeyBpc1BpcGUgfSBmcm9tICcuL3RyYW5zZm9ybS1jcmVhdG9yJztcclxuaW1wb3J0IHsgZ2V0IH0gZnJvbSAnbG9kYXNoJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEV4cG9ydFRvQ3N2U2VydmljZTxUPiB7XHJcbiAgc3RhdGUgPSBpbmplY3QoVGFibGVTdG9yZSk7XHJcbiAgcHJpdmF0ZSBjb25maWcgPSBpbmplY3QoVGFibGVCdWlsZGVyQ29uZmlnVG9rZW4pO1xyXG4gIHByaXZhdGUgZGF0ZVBpcGUgPSBpbmplY3QoRGF0ZVBpcGUpO1xyXG5cclxuXHJcbiAgZXhwb3J0VG9Dc3YgPSAoZGF0YTogVFtdKSA9PiB7XHJcbiAgICBjb25zdCBoaWRkZW5LZXlzID0gdGhpcy5zdGF0ZS5zZWxlY3RTaWduYWwocyA9PiBzLmhpZGRlbktleXMpKCk7XHJcbiAgICBjb25zdCBtZXRhID0gdGhpcy5zdGF0ZS4kbWV0YURhdGFBcnJheSgpLmZpbHRlcihtZCA9PiAhbWQubm9FeHBvcnQgJiYgIWhpZGRlbktleXMuaW5jbHVkZXMobWQua2V5KSk7XHJcbiAgICBjb25zdCBjc3YgPSB0aGlzLmNzdkRhdGEoZGF0YSwgbWV0YSk7XHJcbiAgICBkb3dubG9hZERhdGEoY3N2LCdleHBvcnQuY3N2JywgJ3RleHQvY3N2JykgO1xyXG4gIH1cclxuXHJcbiAgY3N2RGF0YSA9IChkYXRhOkFycmF5PFQ+LCBtZXRhRGF0YTogTWV0YURhdGE8VD5bXSkgPT4ge1xyXG4gICAgY29uc3QgcmVzID0gZGF0YS5tYXAocm93ID0+IG1ldGFEYXRhLm1hcChtZXRhID0+IHRoaXMubWV0YVRvRmllbGQobWV0YSwgcm93KSkuam9pbignLCcpKTtcclxuICAgIHJlcy51bnNoaWZ0KG1ldGFEYXRhLm1hcChtZXRhID0+IG1ldGEuZGlzcGxheU5hbWUgfHwgbWV0YS5rZXkpLmpvaW4oJywnKSk7XHJcbiAgICByZXR1cm4gcmVzLmpvaW4oJ1xcbicpO1xyXG4gIH1cclxuXHJcbiAgbWV0YVRvRmllbGQgPSAobWV0YTogTWV0YURhdGE8VD4sIHJvdzogVCkgPT4ge1xyXG4gICAgbGV0IHZhbDogYW55ID0gZ2V0KCByb3csbWV0YS5rZXkpO1xyXG4gICAgaWYgKHZhbCA9PSBudWxsICYmICFtZXRhLnRyYW5zZm9ybSkgcmV0dXJuIHZhbFxyXG4gICAgaWYobWV0YS50cmFuc2Zvcm0gJiYgbWV0YS5maWVsZFR5cGUgIT09IEZpZWxkVHlwZS5FeHByZXNzaW9uKXtcclxuICAgICAgY29uc3QgdHJhbnNmb3JtID0gbWV0YS50cmFuc2Zvcm0gYXMgYW55O1xyXG4gICAgICByZXR1cm4gIGlzUGlwZSh0cmFuc2Zvcm0pID8gdHJhbnNmb3JtLnRyYW5zZm9ybSh2YWwpIDogdHJhbnNmb3JtKHZhbCk7XHJcbiAgICB9XHJcbiAgICBpZihtZXRhLm1hcCl7XHJcbiAgICAgIHJldHVybiBtZXRhLm1hcChyb3cpO1xyXG4gICAgfVxyXG4gICAgc3dpdGNoIChtZXRhLmZpZWxkVHlwZSkge1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZS5EYXRlOlxyXG4gICAgICAgIGNvbnN0IGRhdGVGb3JtYXQgPSBtZXRhLmFkZGl0aW9uYWw/LmV4cG9ydD8uZGF0ZUZvcm1hdCB8fCB0aGlzLmNvbmZpZz8uZXhwb3J0Py5kYXRlRm9ybWF0IHx8IG1ldGEuYWRkaXRpb25hbD8uZGF0ZUZvcm1hdDtcclxuICAgICAgICB2YWwgPSB0aGlzLnRyYW5zZm9ybSh2YWwsIGRhdGVGb3JtYXQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZS5EYXRlVGltZTpcclxuICAgICAgICBjb25zdCBkYXRlVGltZUZvcm1hdCA9IG1ldGEuYWRkaXRpb25hbD8uZXhwb3J0Py5kYXRlVGltZUZvcm1hdCB8fCB0aGlzLmNvbmZpZz8uZXhwb3J0Py5kYXRlVGltZUZvcm1hdCB8fCBtZXRhLmFkZGl0aW9uYWw/LmRhdGVUaW1lT3B0aW9ucz8uZm9ybWF0O1xyXG4gICAgICAgIHZhbCA9IHRoaXMudHJhbnNmb3JtKHZhbCwgZGF0ZVRpbWVGb3JtYXQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZS5TdHJpbmc6XHJcbiAgICAgICAgY29uc3QgcHJlcGVuZDogc3RyaW5nID0gbWV0YS5hZGRpdGlvbmFsPy5leHBvcnQ/LnByZXBlbmQgfHwgdGhpcy5jb25maWc/LmV4cG9ydD8ucHJlcGVuZCB8fCAnJztcclxuICAgICAgICB2YWwgPSBwcmVwZW5kICsgdmFsO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZS5BcnJheTpcclxuICAgICAgICBjb25zdCBhZGRpdGlvbmFsID0gbWV0YS5hZGRpdGlvbmFsIGFzIEFycmF5QWRkaXRpb25hbDtcclxuICAgICAgICB2YWwgPSAodmFsIGFzIEFycmF5PHN0cmluZz4pLnNsaWNlKDAsYWRkaXRpb25hbC5saW1pdCkuam9pbihhZGRpdGlvbmFsLmFycmF5U3R5bGUgPT09IEFycmF5U3R5bGUuTmV3TGluZSA/ICdcXG4nIDogJywgJyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlLkV4cHJlc3Npb246XHJcbiAgICAgICAgdmFsID0gKG1ldGEudHJhbnNmb3JtIGFzIGFueSkocm93KTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJyAmJiAodmFsLmluY2x1ZGVzKCcsJykgfHwgdmFsLmluY2x1ZGVzKCdcIicpIHx8IHZhbC5pbmNsdWRlcygnXFxuJykpKSB7XHJcbiAgICAgIHZhbCA9IHZhbC5yZXBsYWNlQWxsKCdcIicsICdcIlwiJyk7XHJcbiAgICAgIHZhbCA9ICdcIicgKyB2YWwgKyAnXCInO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdHJhbnNmb3JtKHZhbDogYW55LCBkYXRlRm9ybWF0OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmNvbmZpZy50cmFuc2Zvcm1lcnMgJiYgdGhpcy5jb25maWcudHJhbnNmb3JtZXJzW0ZpZWxkVHlwZS5EYXRlXSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb25maWcudHJhbnNmb3JtZXJzW0ZpZWxkVHlwZS5EYXRlXSEodmFsKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh2YWwsIGRhdGVGb3JtYXQpO1xyXG4gIH1cclxufVxyXG4iXX0=