@firestitch/filter 18.2.83 → 18.2.85

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import { AsyncPipe } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, Injector, QueryList, ViewChildren, inject } from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, Injector, QueryList, ViewChildren, inject, signal } from '@angular/core';
3
3
  import { FormsModule } from '@angular/forms';
4
4
  import { Overlay, OverlayConfig } from '@angular/cdk/overlay';
5
5
  import { ComponentPortal } from '@angular/cdk/portal';
@@ -10,7 +10,7 @@ import { FsChipComponent, FsChipModule } from '@firestitch/chip';
10
10
  import { FsButtonDirective } from '@firestitch/form';
11
11
  import { FsMessage } from '@firestitch/message';
12
12
  import { FsSelectButtonModule } from '@firestitch/selectbutton';
13
- import { BehaviorSubject, delay, take, tap } from 'rxjs';
13
+ import { BehaviorSubject, delay, merge, skip, take, tap } from 'rxjs';
14
14
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
15
15
  import { ItemType } from '../../enums';
16
16
  import { FILTER_DRAWER_DATA } from '../../injectors';
@@ -26,6 +26,8 @@ export class FsFilterChipsComponent {
26
26
  chips;
27
27
  ItemType = ItemType;
28
28
  secondaryItems = [];
29
+ moreFilterItems = signal([]);
30
+ clearFiltersVisible = signal(false);
29
31
  _filterController = inject(FilterController);
30
32
  _dialog = inject(MatDialog);
31
33
  _message = inject(FsMessage);
@@ -37,8 +39,7 @@ export class FsFilterChipsComponent {
37
39
  _elementRef = inject(ElementRef);
38
40
  _hasSecondaryValue$ = new BehaviorSubject(false);
39
41
  get items() {
40
- return this._filterController.items
41
- .filter((item) => !item.isTypeKeyword);
42
+ return this._filterController.items;
42
43
  }
43
44
  addFilter(event) {
44
45
  const item = event.value;
@@ -49,10 +50,6 @@ export class FsFilterChipsComponent {
49
50
  }), takeUntilDestroyed(this._destroyRef))
50
51
  .subscribe();
51
52
  }
52
- get disabledItems() {
53
- return this.items
54
- .filter((item) => !item.secondaryVisible && !item.hasValue && !item.primary && item.visible);
55
- }
56
53
  get hasSecondaryValue$() {
57
54
  return this._hasSecondaryValue$.asObservable();
58
55
  }
@@ -67,6 +64,8 @@ export class FsFilterChipsComponent {
67
64
  this.secondaryItems = this.items
68
65
  .filter((item) => !item.primary);
69
66
  this._initHasSecondaryValue();
67
+ this._initMoreFilterItems();
68
+ this._initClearFiltersVisible();
70
69
  }
71
70
  clear() {
72
71
  this._filterController.items
@@ -177,6 +176,9 @@ export class FsFilterChipsComponent {
177
176
  item.clear();
178
177
  }
179
178
  }
179
+ removeItem(item) {
180
+ item.secondaryHide();
181
+ }
180
182
  _attachContainer(overlayRef, item, name) {
181
183
  const injector = this._createInjector(item, name);
182
184
  const containerPortal = new ComponentPortal(FilterItemDialogComponent, undefined, injector);
@@ -192,6 +194,50 @@ export class FsFilterChipsComponent {
192
194
  parent: this._injector,
193
195
  });
194
196
  }
197
+ _initMoreFilterItems() {
198
+ merge(...this.items
199
+ .reduce((accum, item) => {
200
+ return [
201
+ ...accum,
202
+ item.visible$
203
+ .pipe(skip(1)),
204
+ item.secondaryVisible$
205
+ .pipe(skip(1)),
206
+ ];
207
+ }, []))
208
+ .pipe(tap(() => {
209
+ this._updateMoreFilterItems();
210
+ }), takeUntilDestroyed(this._destroyRef))
211
+ .subscribe();
212
+ this._updateMoreFilterItems();
213
+ }
214
+ _initClearFiltersVisible() {
215
+ merge(...this.items
216
+ .reduce((accum, item) => {
217
+ return [
218
+ ...accum,
219
+ item.visible$
220
+ .pipe(skip(1)),
221
+ item.hasValue$
222
+ .pipe(skip(1)),
223
+ ];
224
+ }, []))
225
+ .pipe(tap(() => {
226
+ this._updateClearItems();
227
+ }), takeUntilDestroyed(this._destroyRef))
228
+ .subscribe();
229
+ this._updateClearItems();
230
+ }
231
+ _updateMoreFilterItems() {
232
+ this.moreFilterItems
233
+ .set(this.items
234
+ .filter((item) => !item.primary && item.visible && !item.secondaryVisible));
235
+ }
236
+ _updateClearItems() {
237
+ this.clearFiltersVisible
238
+ .set(this.items
239
+ .some((item) => item.clearable && item.hasValue && item.visible));
240
+ }
195
241
  _initHasSecondaryValue() {
196
242
  this._hasSecondaryValue$.next(this.hasSecondaryValue);
197
243
  this._filterController.change$
@@ -201,7 +247,7 @@ export class FsFilterChipsComponent {
201
247
  .subscribe();
202
248
  }
203
249
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FsFilterChipsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
204
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FsFilterChipsComponent, isStandalone: true, selector: "fs-filter-chips", viewQueries: [{ propertyName: "chips", predicate: FsChipComponent, descendants: true }], ngImport: i0, template: "@if (items.length !== 0) {\n @for (item of secondaryItems; track item.name) {\n @if ((item.visible$ | async) && (item.hasValue$ | async)) {\n @for (chip of item.chips$ | async; track chip.label) {\n <fs-chip\n class=\"filter-chip selected\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n [attr.data-filter-item]=\"item.name\"\n [outlined]=\"true\"\n (click)=\"openChip(item, chip.name)\">\n @if (chip.value) {\n {{ chip.label }}:\n <a>\n {{ chip.value }}\n </a>\n } @else {\n {{ chip.label }}\n }\n <ng-template\n fsChipSuffix\n [icon]=\"'cancel_circle_outline'\"\n (click)=\"removeChip(item, chip)\">\n </ng-template>\n </fs-chip>\n }\n }\n @if ((item.visible$ | async) && (item.notValue$ | async) && (item.secondaryVisible$ | async)) {\n <fs-chip\n class=\"filter-chip\"\n [attr.data-filter-item]=\"item.name\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n (click)=\"openChip(item)\"\n [outlined]=\"true\">\n {{ item.mergedLabel }}\n <ng-template\n fsChipSuffix\n [icon]=\"'add_circle_outline'\"\n (click)=\"openChip(item)\">\n </ng-template>\n </fs-chip>\n }\n }\n <mat-select\n class=\"more-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [disableOptionCentering]=\"true\"\n [panelClass]=\"'fs-filter-no-initial-focus'\"\n [placeholder]=\"'More filters'\"\n (selectionChange)=\"addFilter($event)\"\n [deselectOnChange]=\"true\">\n @for (item of disabledItems; track item.name) {\n <mat-option [value]=\"item\">\n {{ item.mergedLabel }}\n </mat-option>\n }\n </mat-select>\n @if (savedFilterController.enabled) {\n <mat-select\n class=\"saved-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [placeholder]=\"(savedFilterController.activeFilter$ | async) ? savedFilterController.singularLabel + ': ' + (savedFilterController.activeFilter$ | async).name : savedFilterController.pluralLabel\"\n [deselectOnChange]=\"true\">\n @if (savedFilterController.activeFilter$ | async) {\n <mat-option (click)=\"saveActiveFilter()\">\n Update filters\n </mat-option>\n <mat-option (click)=\"saveAs()\">\n Save as new\n </mat-option>\n } @else {\n <mat-option (click)=\"createSavedFilter()\">\n Create new\n </mat-option>\n }\n <mat-option (click)=\"manageSavedFilters()\">\n View all\n </mat-option>\n </mat-select>\n }\n <a\n class=\"clear\"\n mat-button\n color=\"primary\"\n (click)=\"clear()\">\n Clear filters\n </a>\n}", styles: [":host{display:flex;flex-wrap:wrap;align-items:center;gap:5px;max-width:100%;margin-top:4px;z-index:999}.saved-filters-select,.more-filters-select,.clear{display:flex;height:30px;font-size:90%}.saved-filters-select.clear,.more-filters-select.clear,.clear.clear{padding:0 10px}.saved-filters-select ::ng-deep .mat-mdc-select-value,.more-filters-select ::ng-deep .mat-mdc-select-value,.clear ::ng-deep .mat-mdc-select-value{padding:0 5px}.saved-filters-select ::ng-deep .mat-mdc-select-arrow-wrapper,.more-filters-select ::ng-deep .mat-mdc-select-arrow-wrapper,.clear ::ng-deep .mat-mdc-select-arrow-wrapper{padding-right:10px}::ng-deep .mat-mdc-select-panel.fs-filter-no-initial-focus .mat-mdc-option-active:not(:hover){background:transparent!important}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: FsChipModule }, { kind: "component", type: i1.FsChipComponent, selector: "fs-chip", inputs: ["selectable", "removable", "value", "maxWidth", "width", "backgroundColor", "borderColor", "color", "shape", "outlined", "outlineDash", "icon", "image", "selected", "padding", "contrastColor", "size"], outputs: ["selectedToggled", "removed", "click"] }, { kind: "directive", type: i1.FsChipSuffixDirective, selector: "[fsChipSuffix]", inputs: ["icon", "link", "linkTarget", "color", "data", "tooltip"], outputs: ["click"] }, { kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: FsSelectButtonModule }, { kind: "directive", type: i2.FsSelectButtonDirective, selector: "[fsSelectButton]", inputs: ["color", "minWidth", "maxWidth", "width", "buttonType", "deselectOnChange"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: FsButtonDirective, selector: "[mat-raised-button],[mat-button],[mat-flat-button],[mat-stroked-button]", inputs: ["name", "dirtySubmit"] }, { kind: "ngmodule", type: FormsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
250
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FsFilterChipsComponent, isStandalone: true, selector: "fs-filter-chips", viewQueries: [{ propertyName: "chips", predicate: FsChipComponent, descendants: true }], ngImport: i0, template: "@if (items.length !== 0) {\n @for (item of secondaryItems; track item.name) {\n @if ((item.visible$ | async)) {\n @if ((item.hasValue$ | async)) {\n @for (chip of item.chips$ | async; track chip.label) {\n <fs-chip\n class=\"filter-chip selected\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n [attr.data-filter-item]=\"item.name\"\n [outlined]=\"true\"\n (click)=\"openChip(item, chip.name)\">\n @if (chip.value) {\n {{ chip.label }}:\n <a>\n {{ chip.value }}\n </a>\n } @else {\n {{ chip.label }}\n }\n <ng-template\n fsChipSuffix\n [icon]=\"'cancel_circle_outline'\"\n (click)=\"removeChip(item, chip)\">\n </ng-template>\n </fs-chip>\n }\n }\n @if ((item.notValue$ | async) && (item.secondaryVisible$ | async)) {\n <fs-chip\n class=\"filter-chip\"\n [attr.data-filter-item]=\"item.name\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n (click)=\"openChip(item)\"\n [outlined]=\"true\">\n {{ item.mergedLabel }}\n <ng-template\n fsChipSuffix\n [icon]=\"'cancel_circle_outline'\"\n (click)=\"removeItem(item)\">\n </ng-template>\n </fs-chip>\n }\n }\n }\n @if (moreFilterItems().length > 0) {\n <mat-select\n class=\"more-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [disableOptionCentering]=\"true\"\n [panelClass]=\"'fs-filter-no-initial-focus'\"\n [placeholder]=\"'More filters'\"\n (selectionChange)=\"addFilter($event)\"\n [deselectOnChange]=\"true\">\n @for (item of moreFilterItems(); track item.name) {\n <mat-option [value]=\"item\">\n {{ item.mergedLabel }}\n </mat-option>\n }\n </mat-select>\n }\n @if (savedFilterController.enabled) {\n <mat-select\n class=\"saved-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [placeholder]=\"(savedFilterController.activeFilter$ | async) ? savedFilterController.singularLabel + ': ' + (savedFilterController.activeFilter$ | async).name : savedFilterController.pluralLabel\"\n [deselectOnChange]=\"true\">\n @if (savedFilterController.activeFilter$ | async) {\n <mat-option (click)=\"saveActiveFilter()\">\n Update filters\n </mat-option>\n <mat-option (click)=\"saveAs()\">\n Save as new\n </mat-option>\n } @else {\n <mat-option (click)=\"createSavedFilter()\">\n Create new\n </mat-option>\n }\n <mat-option (click)=\"manageSavedFilters()\">\n View all\n </mat-option>\n </mat-select>\n }\n @if (clearFiltersVisible()) {\n <a\n class=\"clear\"\n mat-button\n color=\"primary\"\n (click)=\"clear()\">\n Clear filters\n </a>\n }\n}", styles: [":host{display:flex;flex-wrap:wrap;align-items:center;gap:5px;max-width:100%;margin-top:4px;z-index:999}.saved-filters-select,.more-filters-select,.clear{display:flex;height:30px;font-size:90%}.saved-filters-select.clear,.more-filters-select.clear,.clear.clear{padding:0 10px}.saved-filters-select ::ng-deep .mat-mdc-select-value,.more-filters-select ::ng-deep .mat-mdc-select-value,.clear ::ng-deep .mat-mdc-select-value{padding:0 5px}.saved-filters-select ::ng-deep .mat-mdc-select-arrow-wrapper,.more-filters-select ::ng-deep .mat-mdc-select-arrow-wrapper,.clear ::ng-deep .mat-mdc-select-arrow-wrapper{padding-right:10px}::ng-deep .mat-mdc-select-panel.fs-filter-no-initial-focus .mat-mdc-option-active:not(:hover){background:transparent!important}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: FsChipModule }, { kind: "component", type: i1.FsChipComponent, selector: "fs-chip", inputs: ["selectable", "removable", "value", "maxWidth", "width", "backgroundColor", "borderColor", "color", "shape", "outlined", "outlineDash", "icon", "image", "selected", "padding", "contrastColor", "size"], outputs: ["selectedToggled", "removed", "click"] }, { kind: "directive", type: i1.FsChipSuffixDirective, selector: "[fsChipSuffix]", inputs: ["icon", "link", "linkTarget", "color", "data", "tooltip"], outputs: ["click"] }, { kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: FsSelectButtonModule }, { kind: "directive", type: i2.FsSelectButtonDirective, selector: "[fsSelectButton]", inputs: ["color", "minWidth", "maxWidth", "width", "buttonType", "deselectOnChange"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: FsButtonDirective, selector: "[mat-raised-button],[mat-button],[mat-flat-button],[mat-stroked-button]", inputs: ["name", "dirtySubmit"] }, { kind: "ngmodule", type: FormsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
205
251
  }
206
252
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FsFilterChipsComponent, decorators: [{
207
253
  type: Component,
@@ -214,9 +260,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
214
260
  MatButtonModule,
215
261
  FsButtonDirective,
216
262
  FormsModule,
217
- ], template: "@if (items.length !== 0) {\n @for (item of secondaryItems; track item.name) {\n @if ((item.visible$ | async) && (item.hasValue$ | async)) {\n @for (chip of item.chips$ | async; track chip.label) {\n <fs-chip\n class=\"filter-chip selected\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n [attr.data-filter-item]=\"item.name\"\n [outlined]=\"true\"\n (click)=\"openChip(item, chip.name)\">\n @if (chip.value) {\n {{ chip.label }}:\n <a>\n {{ chip.value }}\n </a>\n } @else {\n {{ chip.label }}\n }\n <ng-template\n fsChipSuffix\n [icon]=\"'cancel_circle_outline'\"\n (click)=\"removeChip(item, chip)\">\n </ng-template>\n </fs-chip>\n }\n }\n @if ((item.visible$ | async) && (item.notValue$ | async) && (item.secondaryVisible$ | async)) {\n <fs-chip\n class=\"filter-chip\"\n [attr.data-filter-item]=\"item.name\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n (click)=\"openChip(item)\"\n [outlined]=\"true\">\n {{ item.mergedLabel }}\n <ng-template\n fsChipSuffix\n [icon]=\"'add_circle_outline'\"\n (click)=\"openChip(item)\">\n </ng-template>\n </fs-chip>\n }\n }\n <mat-select\n class=\"more-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [disableOptionCentering]=\"true\"\n [panelClass]=\"'fs-filter-no-initial-focus'\"\n [placeholder]=\"'More filters'\"\n (selectionChange)=\"addFilter($event)\"\n [deselectOnChange]=\"true\">\n @for (item of disabledItems; track item.name) {\n <mat-option [value]=\"item\">\n {{ item.mergedLabel }}\n </mat-option>\n }\n </mat-select>\n @if (savedFilterController.enabled) {\n <mat-select\n class=\"saved-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [placeholder]=\"(savedFilterController.activeFilter$ | async) ? savedFilterController.singularLabel + ': ' + (savedFilterController.activeFilter$ | async).name : savedFilterController.pluralLabel\"\n [deselectOnChange]=\"true\">\n @if (savedFilterController.activeFilter$ | async) {\n <mat-option (click)=\"saveActiveFilter()\">\n Update filters\n </mat-option>\n <mat-option (click)=\"saveAs()\">\n Save as new\n </mat-option>\n } @else {\n <mat-option (click)=\"createSavedFilter()\">\n Create new\n </mat-option>\n }\n <mat-option (click)=\"manageSavedFilters()\">\n View all\n </mat-option>\n </mat-select>\n }\n <a\n class=\"clear\"\n mat-button\n color=\"primary\"\n (click)=\"clear()\">\n Clear filters\n </a>\n}", styles: [":host{display:flex;flex-wrap:wrap;align-items:center;gap:5px;max-width:100%;margin-top:4px;z-index:999}.saved-filters-select,.more-filters-select,.clear{display:flex;height:30px;font-size:90%}.saved-filters-select.clear,.more-filters-select.clear,.clear.clear{padding:0 10px}.saved-filters-select ::ng-deep .mat-mdc-select-value,.more-filters-select ::ng-deep .mat-mdc-select-value,.clear ::ng-deep .mat-mdc-select-value{padding:0 5px}.saved-filters-select ::ng-deep .mat-mdc-select-arrow-wrapper,.more-filters-select ::ng-deep .mat-mdc-select-arrow-wrapper,.clear ::ng-deep .mat-mdc-select-arrow-wrapper{padding-right:10px}::ng-deep .mat-mdc-select-panel.fs-filter-no-initial-focus .mat-mdc-option-active:not(:hover){background:transparent!important}\n"] }]
263
+ ], template: "@if (items.length !== 0) {\n @for (item of secondaryItems; track item.name) {\n @if ((item.visible$ | async)) {\n @if ((item.hasValue$ | async)) {\n @for (chip of item.chips$ | async; track chip.label) {\n <fs-chip\n class=\"filter-chip selected\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n [attr.data-filter-item]=\"item.name\"\n [outlined]=\"true\"\n (click)=\"openChip(item, chip.name)\">\n @if (chip.value) {\n {{ chip.label }}:\n <a>\n {{ chip.value }}\n </a>\n } @else {\n {{ chip.label }}\n }\n <ng-template\n fsChipSuffix\n [icon]=\"'cancel_circle_outline'\"\n (click)=\"removeChip(item, chip)\">\n </ng-template>\n </fs-chip>\n }\n }\n @if ((item.notValue$ | async) && (item.secondaryVisible$ | async)) {\n <fs-chip\n class=\"filter-chip\"\n [attr.data-filter-item]=\"item.name\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n (click)=\"openChip(item)\"\n [outlined]=\"true\">\n {{ item.mergedLabel }}\n <ng-template\n fsChipSuffix\n [icon]=\"'cancel_circle_outline'\"\n (click)=\"removeItem(item)\">\n </ng-template>\n </fs-chip>\n }\n }\n }\n @if (moreFilterItems().length > 0) {\n <mat-select\n class=\"more-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [disableOptionCentering]=\"true\"\n [panelClass]=\"'fs-filter-no-initial-focus'\"\n [placeholder]=\"'More filters'\"\n (selectionChange)=\"addFilter($event)\"\n [deselectOnChange]=\"true\">\n @for (item of moreFilterItems(); track item.name) {\n <mat-option [value]=\"item\">\n {{ item.mergedLabel }}\n </mat-option>\n }\n </mat-select>\n }\n @if (savedFilterController.enabled) {\n <mat-select\n class=\"saved-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [placeholder]=\"(savedFilterController.activeFilter$ | async) ? savedFilterController.singularLabel + ': ' + (savedFilterController.activeFilter$ | async).name : savedFilterController.pluralLabel\"\n [deselectOnChange]=\"true\">\n @if (savedFilterController.activeFilter$ | async) {\n <mat-option (click)=\"saveActiveFilter()\">\n Update filters\n </mat-option>\n <mat-option (click)=\"saveAs()\">\n Save as new\n </mat-option>\n } @else {\n <mat-option (click)=\"createSavedFilter()\">\n Create new\n </mat-option>\n }\n <mat-option (click)=\"manageSavedFilters()\">\n View all\n </mat-option>\n </mat-select>\n }\n @if (clearFiltersVisible()) {\n <a\n class=\"clear\"\n mat-button\n color=\"primary\"\n (click)=\"clear()\">\n Clear filters\n </a>\n }\n}", styles: [":host{display:flex;flex-wrap:wrap;align-items:center;gap:5px;max-width:100%;margin-top:4px;z-index:999}.saved-filters-select,.more-filters-select,.clear{display:flex;height:30px;font-size:90%}.saved-filters-select.clear,.more-filters-select.clear,.clear.clear{padding:0 10px}.saved-filters-select ::ng-deep .mat-mdc-select-value,.more-filters-select ::ng-deep .mat-mdc-select-value,.clear ::ng-deep .mat-mdc-select-value{padding:0 5px}.saved-filters-select ::ng-deep .mat-mdc-select-arrow-wrapper,.more-filters-select ::ng-deep .mat-mdc-select-arrow-wrapper,.clear ::ng-deep .mat-mdc-select-arrow-wrapper{padding-right:10px}::ng-deep .mat-mdc-select-panel.fs-filter-no-initial-focus .mat-mdc-option-active:not(:hover){background:transparent!important}\n"] }]
218
264
  }], propDecorators: { chips: [{
219
265
  type: ViewChildren,
220
266
  args: [FsChipComponent]
221
267
  }] } });
222
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWNoaXBzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9maWx0ZXItY2hpcHMvZmlsdGVyLWNoaXBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9maWx0ZXItY2hpcHMvZmlsdGVyLWNoaXBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFVLFNBQVMsRUFBa0IsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFxQixPQUFPLEVBQUUsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDN0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQW1CLE1BQU0sMEJBQTBCLENBQUM7QUFFakYsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFaEUsT0FBTyxFQUFFLGVBQWUsRUFBYyxL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Wjs4QkFLTSxLQUFLO3NCQURYLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBEZXN0cm95UmVmLCBFbGVtZW50UmVmLCBJbmplY3RvciwgT25Jbml0LCBRdWVyeUxpc3QsIFN0YXRpY1Byb3ZpZGVyLCBWaWV3Q2hpbGRyZW4sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uLCBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdE9wdGlvbiwgTWF0U2VsZWN0LCBNYXRTZWxlY3RDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuXG5pbXBvcnQgeyBGc0NoaXBDb21wb25lbnQsIEZzQ2hpcE1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2NoaXAnO1xuaW1wb3J0IHsgRnNCdXR0b25EaXJlY3RpdmUgfSBmcm9tICdAZmlyZXN0aXRjaC9mb3JtJztcbmltcG9ydCB7IEZzTWVzc2FnZSB9IGZyb20gJ0BmaXJlc3RpdGNoL21lc3NhZ2UnO1xuaW1wb3J0IHsgRnNTZWxlY3RCdXR0b25Nb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9zZWxlY3RidXR0b24nO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGRlbGF5LCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzJztcblxuXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmltcG9ydCB7IEl0ZW1UeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xuaW1wb3J0IHsgRklMVEVSX0RSQVdFUl9EQVRBIH0gZnJvbSAnLi4vLi4vaW5qZWN0b3JzJztcbmltcG9ydCB7IElGaWx0ZXJDb25maWdJdGVtIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBCYXNlSXRlbSB9IGZyb20gJy4uLy4uL21vZGVscy9pdGVtcy9iYXNlLWl0ZW0nO1xuaW1wb3J0IHsgU2F2ZWRGaWx0ZXJDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgRmlsdGVyQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpbHRlci1jb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmlsdGVySXRlbURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2ZpbHRlci1pdGVtLWRpYWxvZyc7XG5pbXBvcnQgeyBGc0ZpbHRlclNhdmVkRmlsdGVyTWFuYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vc2F2ZWQtZmlsdGVyL3NhdmVkLWZpbHRlci1tYW5hZ2Uvc2F2ZWQtZmlsdGVyLW1hbmFnZS5jb21wb25lbnQnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLWZpbHRlci1jaGlwcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWx0ZXItY2hpcHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWx0ZXItY2hpcHMuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBBc3luY1BpcGUsXG4gICAgRnNDaGlwTW9kdWxlLFxuICAgIE1hdFNlbGVjdCxcbiAgICBNYXRPcHRpb24sXG4gICAgRnNTZWxlY3RCdXR0b25Nb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIEZzQnV0dG9uRGlyZWN0aXZlLFxuICAgIEZvcm1zTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGc0ZpbHRlckNoaXBzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBAVmlld0NoaWxkcmVuKEZzQ2hpcENvbXBvbmVudCkgXG4gIHB1YmxpYyBjaGlwczogUXVlcnlMaXN0PEZzQ2hpcENvbXBvbmVudD47XG5cbiAgcHVibGljIEl0ZW1UeXBlID0gSXRlbVR5cGU7XG4gIHB1YmxpYyBzZWNvbmRhcnlJdGVtczogQmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+W10gPSBbXTtcblxuICBwcml2YXRlIF9maWx0ZXJDb250cm9sbGVyID0gaW5qZWN0KEZpbHRlckNvbnRyb2xsZXIpO1xuICBwcml2YXRlIF9kaWFsb2cgPSBpbmplY3QoTWF0RGlhbG9nKTtcbiAgcHJpdmF0ZSBfbWVzc2FnZSA9IGluamVjdChGc01lc3NhZ2UpO1xuICBwcml2YXRlIF9zYXZlZEZpbHRlckNvbnRyb2xsZXIgPSBpbmplY3QoU2F2ZWRGaWx0ZXJDb250cm9sbGVyKTtcbiAgcHJpdmF0ZSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcml2YXRlIF9vdmVybGF5ID0gaW5qZWN0KE92ZXJsYXkpO1xuICBwcml2YXRlIF9vdmVybGF5UmVmOiBPdmVybGF5UmVmO1xuICBwcml2YXRlIF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcml2YXRlIF9lbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIF9oYXNTZWNvbmRhcnlWYWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBwdWJsaWMgZ2V0IGl0ZW1zKCkge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJDb250cm9sbGVyLml0ZW1zXG4gICAgICAuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5pc1R5cGVLZXl3b3JkKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRGaWx0ZXIoZXZlbnQ6IE1hdFNlbGVjdENoYW5nZSkge1xuICAgIGNvbnN0IGl0ZW06IEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPiA9IGV2ZW50LnZhbHVlO1xuICAgIGl0ZW0uc2Vjb25kYXJ5U2hvdygpO1xuXG4gICAgdGhpcy5jaGlwcy5jaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgZGVsYXkoMTAwKSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLm9wZW5DaGlwKGl0ZW0pO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZEl0ZW1zKCkge1xuICAgIHJldHVybiB0aGlzLml0ZW1zXG4gICAgICAuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5zZWNvbmRhcnlWaXNpYmxlICYmICFpdGVtLmhhc1ZhbHVlICYmICFpdGVtLnByaW1hcnkgJiYgaXRlbS52aXNpYmxlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzU2Vjb25kYXJ5VmFsdWUkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9oYXNTZWNvbmRhcnlWYWx1ZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNhdmVkRmlsdGVyQ29udHJvbGxlcigpOiBTYXZlZEZpbHRlckNvbnRyb2xsZXIge1xuICAgIHJldHVybiB0aGlzLl9zYXZlZEZpbHRlckNvbnRyb2xsZXI7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc1NlY29uZGFyeVZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJDb250cm9sbGVyLml0ZW1zXG4gICAgICAuc29tZSgoaXRlbSkgPT4gaXRlbS5oYXNWYWx1ZSAmJiBpdGVtLnZpc2libGUgJiYgIWl0ZW0ucHJpbWFyeSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWNvbmRhcnlJdGVtcyA9IHRoaXMuaXRlbXNcbiAgICAgIC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLnByaW1hcnkpO1xuXG4gICAgdGhpcy5faW5pdEhhc1NlY29uZGFyeVZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXIoKSB7XG4gICAgdGhpcy5fZmlsdGVyQ29udHJvbGxlci5pdGVtc1xuICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5jbGVhcmFibGUpXG4gICAgICAuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpZighaXRlbS5zZWNvbmRhcnkpIHtcbiAgICAgICAgICBpdGVtLnNlY29uZGFyeUhpZGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpdGVtLmNsZWFyKGZhbHNlKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fZmlsdGVyQ29udHJvbGxlci5jaGFuZ2UoKTtcbiAgICB0aGlzLl9zYXZlZEZpbHRlckNvbnRyb2xsZXIuc2V0QWN0aXZlRmlsdGVyKG51bGwpO1xuICB9XG5cbiAgcHVibGljIG9wZW5DaGlwKGl0ZW06IEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPiwgbmFtZTogc3RyaW5nID0gbnVsbCkge1xuICAgIHRoaXMuX2Rlc3Ryb3lPdmVybGF5KCk7XG4gICAgY29uc3QgZWwgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgICAgIC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1maWx0ZXItaXRlbT1cIiR7aXRlbS5uYW1lfVwiXWApO1xuXG4gICAgY29uc3QgcG9zaXRpb25zOiBDb25uZWN0ZWRQb3NpdGlvbltdID0gW1xuICAgICAge1xuICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgb2Zmc2V0WDogMCxcbiAgICAgICAgb2Zmc2V0WTogZWwub2Zmc2V0SGVpZ2h0ICsgMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgY29uc3Qgc3RyYXRlZ3kgPSB0aGlzLl9vdmVybGF5XG4gICAgICAucG9zaXRpb24oKVxuICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8oZWwpXG4gICAgICAud2l0aFBvc2l0aW9ucyhwb3NpdGlvbnMpO1xuICAgIFxuICAgIGNvbnN0IG92ZXJsYXlDb25maWcgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiBzdHJhdGVneSxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKSxcbiAgICAgIGRpc3Bvc2VPbk5hdmlnYXRpb246IHRydWUsXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsXG4gICAgICBwYW5lbENsYXNzOiAnZnMtc2lkZW5hdi1tZW51LW92ZXJsYXktcGFuZScsXG4gICAgfSk7XG5cbiAgICB0aGlzLl9vdmVybGF5UmVmID0gdGhpcy5fb3ZlcmxheS5jcmVhdGUob3ZlcmxheUNvbmZpZyk7XG5cbiAgICB0aGlzLl9vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5waXBlKFxuICAgICAgdGFrZSgxKSxcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3lPdmVybGF5KCk7XG4gICAgICB9KSxcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSxcbiAgICApLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5fYXR0YWNoQ29udGFpbmVyKHRoaXMuX292ZXJsYXlSZWYsIGl0ZW0sIG5hbWUpO1xuICB9XG5cbiAgcHVibGljIGdldE5lc3RlZEVsZW1lbnQoZWw6IGFueSwgY2xhc3NOYW1lOiBzdHJpbmcpIHtcbiAgICBpZihlbCkge1xuICAgICAgaWYoZWwuY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIGVsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5nZXROZXN0ZWRFbGVtZW50KGVsLnBhcmVudEVsZW1lbnQsIGNsYXNzTmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgXG4gIHB1YmxpYyBzYXZlQWN0aXZlRmlsdGVyKCk6IHZvaWQge1xuICAgIHRoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlclxuICAgICAgLnNhdmUodGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyLmFjdGl2ZUZpbHRlcilcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcyhgU2F2ZWQgJHt0aGlzLl9zYXZlZEZpbHRlckNvbnRyb2xsZXIuc2luZ3VsYXJMYWJlbH1gKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlU2F2ZWRGaWx0ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyLmNyZWF0ZSgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlXG4gICAgICAgICAgICAuc3VjY2VzcyhgQ3JlYXRlZCAke3RoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlci5zaW5ndWxhckxhYmVsfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlQXMoKTogdm9pZCB7XG4gICAgdGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyXG4gICAgICAuc2F2ZUFzKClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcyhgU2F2ZWQgJHt0aGlzLl9zYXZlZEZpbHRlckNvbnRyb2xsZXIuc2luZ3VsYXJMYWJlbH1gKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH0gXG5cbiAgcHVibGljIG1hbmFnZVNhdmVkRmlsdGVycygpOiB2b2lkIHtcbiAgICB0aGlzLl9kaWFsb2dcbiAgICAgIC5vcGVuKEZzRmlsdGVyU2F2ZWRGaWx0ZXJNYW5hZ2VDb21wb25lbnQsIHtcbiAgICAgICAgaW5qZWN0b3I6IHRoaXMuX2luamVjdG9yLFxuICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlLFxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgX2Rlc3Ryb3lPdmVybGF5KCkge1xuICAgIGlmKHRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGV0YWNoQmFja2Ryb3AoKTtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGV0YWNoKCk7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVDaGlwKFxuICAgIGl0ZW06IEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPiwgXG4gICAgY2hpcDogeyBuYW1lPzogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBsYWJlbDogc3RyaW5nIH0sXG4gICkge1xuICAgIGlmKCFpdGVtLnNlY29uZGFyeSkge1xuICAgICAgaXRlbS5zZWNvbmRhcnlIaWRlKCk7XG4gICAgfVxuXG4gICAgaWYoY2hpcC5uYW1lKSB7XG4gICAgICBpdGVtLmNsZWFyQnlOYW1lKGNoaXAubmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZW0uY2xlYXIoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2hDb250YWluZXIob3ZlcmxheVJlZjogT3ZlcmxheVJlZiwgaXRlbTogQmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+LCBuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpbmplY3RvciA9IHRoaXMuX2NyZWF0ZUluamVjdG9yKGl0ZW0sIG5hbWUpO1xuICAgIGNvbnN0IGNvbnRhaW5lclBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoRmlsdGVySXRlbURpYWxvZ0NvbXBvbmVudCwgdW5kZWZpbmVkLCBpbmplY3Rvcik7XG4gICAgY29uc3QgY29udGFpbmVyUmVmID0gb3ZlcmxheVJlZi5hdHRhY2g8RmlsdGVySXRlbURpYWxvZ0NvbXBvbmVudD4oY29udGFpbmVyUG9ydGFsKTtcblxuICAgIHJldHVybiBjb250YWluZXJSZWYuaW5zdGFuY2U7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVJbmplY3RvcihpdGVtOiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT4sIGF1dG9mb2N1c05hbWU6IHN0cmluZyk6IEluamVjdG9yIHtcbiAgICBjb25zdCBwcm92aWRlcnM6IFN0YXRpY1Byb3ZpZGVyW10gPSBbXG4gICAgICB7IHByb3ZpZGU6IEZJTFRFUl9EUkFXRVJfREFUQSwgdXNlVmFsdWU6IHsgaXRlbSwgYXV0b2ZvY3VzTmFtZSwgb3ZlcmxheVJlZjogdGhpcy5fb3ZlcmxheVJlZiB9IH0sXG4gICAgXTtcbiAgXG4gICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwcm92aWRlcnMsXG4gICAgICBwYXJlbnQ6IHRoaXMuX2luamVjdG9yLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdEhhc1NlY29uZGFyeVZhbHVlKCkge1xuICAgIHRoaXMuX2hhc1NlY29uZGFyeVZhbHVlJC5uZXh0KHRoaXMuaGFzU2Vjb25kYXJ5VmFsdWUpO1xuXG4gICAgdGhpcy5fZmlsdGVyQ29udHJvbGxlci5jaGFuZ2UkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9oYXNTZWNvbmRhcnlWYWx1ZSQubmV4dCh0aGlzLmhhc1NlY29uZGFyeVZhbHVlKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG59XG4iLCJAaWYgKGl0ZW1zLmxlbmd0aCAhPT0gMCkge1xuICBAZm9yIChpdGVtIG9mIHNlY29uZGFyeUl0ZW1zOyB0cmFjayBpdGVtLm5hbWUpIHtcbiAgICBAaWYgKChpdGVtLnZpc2libGUkIHwgYXN5bmMpICYmIChpdGVtLmhhc1ZhbHVlJCB8IGFzeW5jKSkge1xuICAgICAgQGZvciAoY2hpcCBvZiBpdGVtLmNoaXBzJCB8IGFzeW5jOyB0cmFjayBjaGlwLmxhYmVsKSB7XG4gICAgICAgIDxmcy1jaGlwXG4gICAgICAgICAgICBjbGFzcz1cImZpbHRlci1jaGlwIHNlbGVjdGVkXCJcbiAgICAgICAgICAgIFtzaXplXT1cIidtZWRpdW0nXCJcbiAgICAgICAgICAgIFtib3JkZXJDb2xvcl09XCInI2RkZCdcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1maWx0ZXItaXRlbV09XCJpdGVtLm5hbWVcIlxuICAgICAgICAgICAgW291dGxpbmVkXT1cInRydWVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5DaGlwKGl0ZW0sIGNoaXAubmFtZSlcIj5cbiAgICAgICAgICBAaWYgKGNoaXAudmFsdWUpIHtcbiAgICAgICAgICAgIHt7IGNoaXAubGFiZWwgfX06XG4gICAgICAgICAgICA8YT5cbiAgICAgICAgICAgICAge3sgY2hpcC52YWx1ZSB9fVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAge3sgY2hpcC5sYWJlbCB9fVxuICAgICAgICAgIH1cbiAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgIGZzQ2hpcFN1ZmZpeFxuICAgICAgICAgICAgW2ljb25dPVwiJ2NhbmNlbF9jaXJjbGVfb3V0bGluZSdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUNoaXAoaXRlbSwgY2hpcClcIj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2ZzLWNoaXA+XG4gICAgICB9XG4gICAgfVxuICAgIEBpZiAoKGl0ZW0udmlzaWJsZSQgfCBhc3luYykgJiYgKGl0ZW0ubm90VmFsdWUkIHwgYXN5bmMpICYmIChpdGVtLnNlY29uZGFyeVZpc2libGUkIHwgYXN5bmMpKSB7XG4gICAgICA8ZnMtY2hpcFxuICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLWNoaXBcIlxuICAgICAgICAgIFthdHRyLmRhdGEtZmlsdGVyLWl0ZW1dPVwiaXRlbS5uYW1lXCJcbiAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXG4gICAgICAgICAgW2JvcmRlckNvbG9yXT1cIicjZGRkJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5DaGlwKGl0ZW0pXCJcbiAgICAgICAgICBbb3V0bGluZWRdPVwidHJ1ZVwiPlxuICAgICAgICB7eyBpdGVtLm1lcmdlZExhYmVsIH19XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgIGZzQ2hpcFN1ZmZpeFxuICAgICAgICAgIFtpY29uXT1cIidhZGRfY2lyY2xlX291dGxpbmUnXCJcbiAgICAgICAgICAoY2xpY2spPVwib3BlbkNoaXAoaXRlbSlcIj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZnMtY2hpcD5cbiAgICB9XG4gIH1cbiAgPG1hdC1zZWxlY3RcbiAgICAgIGNsYXNzPVwibW9yZS1maWx0ZXJzLXNlbGVjdCBtYXQtbWRjLWJ1dHRvbi1iYXNlXCJcbiAgICAgIFtidXR0b25UeXBlXT1cIidiYXNpYydcIlxuICAgICAgZnNTZWxlY3RCdXR0b25cbiAgICAgIFtkaXNhYmxlT3B0aW9uQ2VudGVyaW5nXT1cInRydWVcIlxuICAgICAgW3BhbmVsQ2xhc3NdPVwiJ2ZzLWZpbHRlci1uby1pbml0aWFsLWZvY3VzJ1wiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiJ01vcmUgZmlsdGVycydcIlxuICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJhZGRGaWx0ZXIoJGV2ZW50KVwiXG4gICAgICBbZGVzZWxlY3RPbkNoYW5nZV09XCJ0cnVlXCI+XG4gICAgQGZvciAoaXRlbSBvZiBkaXNhYmxlZEl0ZW1zOyB0cmFjayBpdGVtLm5hbWUpIHtcbiAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgIHt7IGl0ZW0ubWVyZ2VkTGFiZWwgfX1cbiAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICB9XG4gIDwvbWF0LXNlbGVjdD5cbiAgQGlmIChzYXZlZEZpbHRlckNvbnRyb2xsZXIuZW5hYmxlZCkge1xuICAgIDxtYXQtc2VsZWN0XG4gICAgICAgIGNsYXNzPVwic2F2ZWQtZmlsdGVycy1zZWxlY3QgbWF0LW1kYy1idXR0b24tYmFzZVwiXG4gICAgICAgIFtidXR0b25UeXBlXT1cIidiYXNpYydcIlxuICAgICAgICBmc1NlbGVjdEJ1dHRvblxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKHNhdmVkRmlsdGVyQ29udHJvbGxlci5hY3RpdmVGaWx0ZXIkIHwgYXN5bmMpID8gc2F2ZWRGaWx0ZXJDb250cm9sbGVyLnNpbmd1bGFyTGFiZWwgKyAnOiAnICsgKHNhdmVkRmlsdGVyQ29udHJvbGxlci5hY3RpdmVGaWx0ZXIkIHwgYXN5bmMpLm5hbWUgOiBzYXZlZEZpbHRlckNvbnRyb2xsZXIucGx1cmFsTGFiZWxcIlxuICAgICAgICBbZGVzZWxlY3RPbkNoYW5nZV09XCJ0cnVlXCI+XG4gICAgICBAaWYgKHNhdmVkRmlsdGVyQ29udHJvbGxlci5hY3RpdmVGaWx0ZXIkIHwgYXN5bmMpIHtcbiAgICAgICAgPG1hdC1vcHRpb24gKGNsaWNrKT1cInNhdmVBY3RpdmVGaWx0ZXIoKVwiPlxuICAgICAgICAgIFVwZGF0ZSBmaWx0ZXJzXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPG1hdC1vcHRpb24gKGNsaWNrKT1cInNhdmVBcygpXCI+XG4gICAgICAgICAgU2F2ZSBhcyBuZXdcbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxtYXQtb3B0aW9uIChjbGljayk9XCJjcmVhdGVTYXZlZEZpbHRlcigpXCI+XG4gICAgICAgICAgQ3JlYXRlIG5ld1xuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICB9XG4gICAgICA8bWF0LW9wdGlvbiAoY2xpY2spPVwibWFuYWdlU2F2ZWRGaWx0ZXJzKClcIj5cbiAgICAgICAgVmlldyBhbGxcbiAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICA8L21hdC1zZWxlY3Q+XG4gIH1cbiAgPGFcbiAgICAgIGNsYXNzPVwiY2xlYXJcIlxuICAgICAgbWF0LWJ1dHRvblxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIChjbGljayk9XCJjbGVhcigpXCI+XG4gICAgQ2xlYXIgZmlsdGVyc1xuICA8L2E+XG59Il19
268
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWNoaXBzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9maWx0ZXItY2hpcHMvZmlsdGVyLWNoaXBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9maWx0ZXItY2hpcHMvZmlsdGVyLWNoaXBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFVLFNBQVMsRUFBa0IsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEssT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBcUIsT0FBTyxFQUFFLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzdGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFtQixNQUFNLDBCQUEwQixDQUFDO0FBRWpGLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxl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O1FBQ3hELENBQUMsQ0FBQyxFQUNGLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FDckM7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDO3dHQTFTVSxzQkFBc0I7NEZBQXRCLHNCQUFzQixxR0FFbkIsZUFBZSxnRENqRC9CLG1uR0FnR0Msc3lCRDNERyxTQUFTLDZDQUNULFlBQVkscWhCQUNaLFNBQVMsd2VBQ1QsU0FBUyxvSkFDVCxvQkFBb0IsMk1BQ3BCLGVBQWUsNE1BQ2YsaUJBQWlCLG9KQUNqQixXQUFXOzs0RkFHRixzQkFBc0I7a0JBakJsQyxTQUFTOytCQUNFLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxTQUFTO3dCQUNULFlBQVk7d0JBQ1osU0FBUzt3QkFDVCxTQUFTO3dCQUNULG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLFdBQVc7cUJBQ1o7OEJBS00sS0FBSztzQkFEWCxZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRGVzdHJveVJlZiwgRWxlbWVudFJlZiwgSW5qZWN0b3IsIE9uSW5pdCwgUXVlcnlMaXN0LCBTdGF0aWNQcm92aWRlciwgVmlld0NoaWxkcmVuLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uLCBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdE9wdGlvbiwgTWF0U2VsZWN0LCBNYXRTZWxlY3RDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuXG5pbXBvcnQgeyBGc0NoaXBDb21wb25lbnQsIEZzQ2hpcE1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2NoaXAnO1xuaW1wb3J0IHsgRnNCdXR0b25EaXJlY3RpdmUgfSBmcm9tICdAZmlyZXN0aXRjaC9mb3JtJztcbmltcG9ydCB7IEZzTWVzc2FnZSB9IGZyb20gJ0BmaXJlc3RpdGNoL21lc3NhZ2UnO1xuaW1wb3J0IHsgRnNTZWxlY3RCdXR0b25Nb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9zZWxlY3RidXR0b24nO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGRlbGF5LCBtZXJnZSwgc2tpcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5cblxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5pbXBvcnQgeyBJdGVtVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zJztcbmltcG9ydCB7IEZJTFRFUl9EUkFXRVJfREFUQSB9IGZyb20gJy4uLy4uL2luamVjdG9ycyc7XG5pbXBvcnQgeyBJRmlsdGVyQ29uZmlnSXRlbSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQmFzZUl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvaXRlbXMvYmFzZS1pdGVtJztcbmltcG9ydCB7IFNhdmVkRmlsdGVyQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IEZpbHRlckNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9maWx0ZXItY29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZpbHRlckl0ZW1EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9maWx0ZXItaXRlbS1kaWFsb2cnO1xuaW1wb3J0IHsgRnNGaWx0ZXJTYXZlZEZpbHRlck1hbmFnZUNvbXBvbmVudCB9IGZyb20gJy4uL3NhdmVkLWZpbHRlci9zYXZlZC1maWx0ZXItbWFuYWdlL3NhdmVkLWZpbHRlci1tYW5hZ2UuY29tcG9uZW50JztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1maWx0ZXItY2hpcHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLWNoaXBzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsdGVyLWNoaXBzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQXN5bmNQaXBlLFxuICAgIEZzQ2hpcE1vZHVsZSxcbiAgICBNYXRTZWxlY3QsXG4gICAgTWF0T3B0aW9uLFxuICAgIEZzU2VsZWN0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBGc0J1dHRvbkRpcmVjdGl2ZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRnNGaWx0ZXJDaGlwc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQFZpZXdDaGlsZHJlbihGc0NoaXBDb21wb25lbnQpIFxuICBwdWJsaWMgY2hpcHM6IFF1ZXJ5TGlzdDxGc0NoaXBDb21wb25lbnQ+O1xuXG4gIHB1YmxpYyBJdGVtVHlwZSA9IEl0ZW1UeXBlO1xuICBwdWJsaWMgc2Vjb25kYXJ5SXRlbXM6IEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPltdID0gW107XG4gIHB1YmxpYyBtb3JlRmlsdGVySXRlbXMgPSBzaWduYWw8QmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+W10+KFtdKTtcbiAgcHVibGljIGNsZWFyRmlsdGVyc1Zpc2libGUgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByaXZhdGUgX2ZpbHRlckNvbnRyb2xsZXIgPSBpbmplY3QoRmlsdGVyQ29udHJvbGxlcik7XG4gIHByaXZhdGUgX2RpYWxvZyA9IGluamVjdChNYXREaWFsb2cpO1xuICBwcml2YXRlIF9tZXNzYWdlID0gaW5qZWN0KEZzTWVzc2FnZSk7XG4gIHByaXZhdGUgX3NhdmVkRmlsdGVyQ29udHJvbGxlciA9IGluamVjdChTYXZlZEZpbHRlckNvbnRyb2xsZXIpO1xuICBwcml2YXRlIF9pbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHByaXZhdGUgX292ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XG4gIHByaXZhdGUgX292ZXJsYXlSZWY6IE92ZXJsYXlSZWY7XG4gIHByaXZhdGUgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIHByaXZhdGUgX2VsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByaXZhdGUgX2hhc1NlY29uZGFyeVZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIHB1YmxpYyBnZXQgaXRlbXMoKTogQmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+W10ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJDb250cm9sbGVyLml0ZW1zO1xuICB9XG5cbiAgcHVibGljIGFkZEZpbHRlcihldmVudDogTWF0U2VsZWN0Q2hhbmdlKSB7XG4gICAgY29uc3QgaXRlbTogQmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+ID0gZXZlbnQudmFsdWU7XG4gICAgaXRlbS5zZWNvbmRhcnlTaG93KCk7XG5cbiAgICB0aGlzLmNoaXBzLmNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBkZWxheSgxMDApLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMub3BlbkNoaXAoaXRlbSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZiksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc1NlY29uZGFyeVZhbHVlJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5faGFzU2Vjb25kYXJ5VmFsdWUkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBzYXZlZEZpbHRlckNvbnRyb2xsZXIoKTogU2F2ZWRGaWx0ZXJDb250cm9sbGVyIHtcbiAgICByZXR1cm4gdGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNTZWNvbmRhcnlWYWx1ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyQ29udHJvbGxlci5pdGVtc1xuICAgICAgLnNvbWUoKGl0ZW0pID0+IGl0ZW0uaGFzVmFsdWUgJiYgaXRlbS52aXNpYmxlICYmICFpdGVtLnByaW1hcnkpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2Vjb25kYXJ5SXRlbXMgPSB0aGlzLml0ZW1zXG4gICAgICAuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5wcmltYXJ5KTtcblxuICAgIHRoaXMuX2luaXRIYXNTZWNvbmRhcnlWYWx1ZSgpO1xuICAgIHRoaXMuX2luaXRNb3JlRmlsdGVySXRlbXMoKTtcbiAgICB0aGlzLl9pbml0Q2xlYXJGaWx0ZXJzVmlzaWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyKCkge1xuICAgIHRoaXMuX2ZpbHRlckNvbnRyb2xsZXIuaXRlbXNcbiAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uY2xlYXJhYmxlKVxuICAgICAgLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgaWYoIWl0ZW0uc2Vjb25kYXJ5KSB7XG4gICAgICAgICAgaXRlbS5zZWNvbmRhcnlIaWRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaXRlbS5jbGVhcihmYWxzZSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuX2ZpbHRlckNvbnRyb2xsZXIuY2hhbmdlKCk7XG4gICAgdGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyLnNldEFjdGl2ZUZpbHRlcihudWxsKTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuQ2hpcChpdGVtOiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT4sIG5hbWU6IHN0cmluZyA9IG51bGwpIHtcbiAgICB0aGlzLl9kZXN0cm95T3ZlcmxheSgpO1xuICAgIGNvbnN0IGVsID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gICAgICAucXVlcnlTZWxlY3RvcihgW2RhdGEtZmlsdGVyLWl0ZW09XCIke2l0ZW0ubmFtZX1cIl1gKTtcblxuICAgIGNvbnN0IHBvc2l0aW9uczogQ29ubmVjdGVkUG9zaXRpb25bXSA9IFtcbiAgICAgIHtcbiAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgICAgIG9mZnNldFg6IDAsXG4gICAgICAgIG9mZnNldFk6IGVsLm9mZnNldEhlaWdodCArIDIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGNvbnN0IHN0cmF0ZWd5ID0gdGhpcy5fb3ZlcmxheVxuICAgICAgLnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKGVsKVxuICAgICAgLndpdGhQb3NpdGlvbnMocG9zaXRpb25zKTtcbiAgICBcbiAgICBjb25zdCBvdmVybGF5Q29uZmlnID0gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgcG9zaXRpb25TdHJhdGVneTogc3RyYXRlZ3ksXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5fb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLmJsb2NrKCksXG4gICAgICBkaXNwb3NlT25OYXZpZ2F0aW9uOiB0cnVlLFxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICBiYWNrZHJvcENsYXNzOiAnY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AnLFxuICAgICAgcGFuZWxDbGFzczogJ2ZzLXNpZGVuYXYtbWVudS1vdmVybGF5LXBhbmUnLFxuICAgIH0pO1xuXG4gICAgdGhpcy5fb3ZlcmxheVJlZiA9IHRoaXMuX292ZXJsYXkuY3JlYXRlKG92ZXJsYXlDb25maWcpO1xuXG4gICAgdGhpcy5fb3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkucGlwZShcbiAgICAgIHRha2UoMSksXG4gICAgICB0YXAoKCkgPT4ge1xuICAgICAgICB0aGlzLl9kZXN0cm95T3ZlcmxheSgpO1xuICAgICAgfSksXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZiksXG4gICAgKS5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuX2F0dGFjaENvbnRhaW5lcih0aGlzLl9vdmVybGF5UmVmLCBpdGVtLCBuYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXROZXN0ZWRFbGVtZW50KGVsOiBhbnksIGNsYXNzTmFtZTogc3RyaW5nKSB7XG4gICAgaWYoZWwpIHtcbiAgICAgIGlmKGVsLmNsYXNzTGlzdC5jb250YWlucyhjbGFzc05hbWUpKSB7XG4gICAgICAgIHJldHVybiBlbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuZ2V0TmVzdGVkRWxlbWVudChlbC5wYXJlbnRFbGVtZW50LCBjbGFzc05hbWUpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIFxuICBwdWJsaWMgc2F2ZUFjdGl2ZUZpbHRlcigpOiB2b2lkIHtcbiAgICB0aGlzLl9zYXZlZEZpbHRlckNvbnRyb2xsZXJcbiAgICAgIC5zYXZlKHRoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlci5hY3RpdmVGaWx0ZXIpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoYFNhdmVkICR7dGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyLnNpbmd1bGFyTGFiZWx9YCk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZVNhdmVkRmlsdGVyKCk6IHZvaWQge1xuICAgIHRoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlci5jcmVhdGUoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fbWVzc2FnZVxuICAgICAgICAgICAgLnN1Y2Nlc3MoYENyZWF0ZWQgJHt0aGlzLl9zYXZlZEZpbHRlckNvbnRyb2xsZXIuc2luZ3VsYXJMYWJlbH1gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZUFzKCk6IHZvaWQge1xuICAgIHRoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlclxuICAgICAgLnNhdmVBcygpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoYFNhdmVkICR7dGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyLnNpbmd1bGFyTGFiZWx9YCk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9IFxuXG4gIHB1YmxpYyBtYW5hZ2VTYXZlZEZpbHRlcnMoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlhbG9nXG4gICAgICAub3BlbihGc0ZpbHRlclNhdmVkRmlsdGVyTWFuYWdlQ29tcG9uZW50LCB7XG4gICAgICAgIGluamVjdG9yOiB0aGlzLl9pbmplY3RvcixcbiAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZSxcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIF9kZXN0cm95T3ZlcmxheSgpIHtcbiAgICBpZih0aGlzLl9vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmRldGFjaEJhY2tkcm9wKCk7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmRldGFjaCgpO1xuICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlQ2hpcChcbiAgICBpdGVtOiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT4sIFxuICAgIGNoaXA6IHsgbmFtZT86IHN0cmluZywgdmFsdWU6IHN0cmluZywgbGFiZWw6IHN0cmluZyB9LFxuICApIHtcbiAgICBpZighaXRlbS5zZWNvbmRhcnkpIHtcbiAgICAgIGl0ZW0uc2Vjb25kYXJ5SGlkZSgpO1xuICAgIH1cblxuICAgIGlmKGNoaXAubmFtZSkge1xuICAgICAgaXRlbS5jbGVhckJ5TmFtZShjaGlwLm5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpdGVtLmNsZWFyKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlbW92ZUl0ZW0oaXRlbTogQmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+KSB7XG4gICAgaXRlbS5zZWNvbmRhcnlIaWRlKCk7XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2hDb250YWluZXIob3ZlcmxheVJlZjogT3ZlcmxheVJlZiwgaXRlbTogQmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+LCBuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpbmplY3RvciA9IHRoaXMuX2NyZWF0ZUluamVjdG9yKGl0ZW0sIG5hbWUpO1xuICAgIGNvbnN0IGNvbnRhaW5lclBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoRmlsdGVySXRlbURpYWxvZ0NvbXBvbmVudCwgdW5kZWZpbmVkLCBpbmplY3Rvcik7XG4gICAgY29uc3QgY29udGFpbmVyUmVmID0gb3ZlcmxheVJlZi5hdHRhY2g8RmlsdGVySXRlbURpYWxvZ0NvbXBvbmVudD4oY29udGFpbmVyUG9ydGFsKTtcblxuICAgIHJldHVybiBjb250YWluZXJSZWYuaW5zdGFuY2U7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVJbmplY3RvcihpdGVtOiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT4sIGF1dG9mb2N1c05hbWU6IHN0cmluZyk6IEluamVjdG9yIHtcbiAgICBjb25zdCBwcm92aWRlcnM6IFN0YXRpY1Byb3ZpZGVyW10gPSBbXG4gICAgICB7IHByb3ZpZGU6IEZJTFRFUl9EUkFXRVJfREFUQSwgdXNlVmFsdWU6IHsgaXRlbSwgYXV0b2ZvY3VzTmFtZSwgb3ZlcmxheVJlZjogdGhpcy5fb3ZlcmxheVJlZiB9IH0sXG4gICAgXTtcbiAgXG4gICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwcm92aWRlcnMsXG4gICAgICBwYXJlbnQ6IHRoaXMuX2luamVjdG9yLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdE1vcmVGaWx0ZXJJdGVtcygpIHtcbiAgICBtZXJnZShcbiAgICAgIC4uLnRoaXMuaXRlbXNcbiAgICAgICAgLnJlZHVjZSgoYWNjdW0sIGl0ZW0pID0+IHtcbiAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgLi4uYWNjdW0sIFxuICAgICAgICAgICAgaXRlbS52aXNpYmxlJFxuICAgICAgICAgICAgICAucGlwZShza2lwKDEpKSxcbiAgICAgICAgICAgIGl0ZW0uc2Vjb25kYXJ5VmlzaWJsZSRcbiAgICAgICAgICAgICAgLnBpcGUoc2tpcCgxKSksXG4gICAgICAgICAgXTtcbiAgICAgICAgfSwgW10pLFxuICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX3VwZGF0ZU1vcmVGaWx0ZXJJdGVtcygpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5fdXBkYXRlTW9yZUZpbHRlckl0ZW1zKCk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0Q2xlYXJGaWx0ZXJzVmlzaWJsZSgpIHtcbiAgICBtZXJnZShcbiAgICAgIC4uLnRoaXMuaXRlbXNcbiAgICAgICAgLnJlZHVjZSgoYWNjdW0sIGl0ZW0pID0+IHtcbiAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgLi4uYWNjdW0sIFxuICAgICAgICAgICAgaXRlbS52aXNpYmxlJFxuICAgICAgICAgICAgICAucGlwZShza2lwKDEpKSxcbiAgICAgICAgICAgIGl0ZW0uaGFzVmFsdWUkXG4gICAgICAgICAgICAgIC5waXBlKHNraXAoMSkpLFxuICAgICAgICAgIF07XG4gICAgICAgIH0sIFtdKSxcbiAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl91cGRhdGVDbGVhckl0ZW1zKCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZiksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLl91cGRhdGVDbGVhckl0ZW1zKCk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVNb3JlRmlsdGVySXRlbXMoKSB7XG4gICAgdGhpcy5tb3JlRmlsdGVySXRlbXNcbiAgICAgIC5zZXQodGhpcy5pdGVtc1xuICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5wcmltYXJ5ICYmIGl0ZW0udmlzaWJsZSAmJiAhaXRlbS5zZWNvbmRhcnlWaXNpYmxlKSk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVDbGVhckl0ZW1zKCkge1xuICAgIHRoaXMuY2xlYXJGaWx0ZXJzVmlzaWJsZVxuICAgICAgLnNldCh0aGlzLml0ZW1zXG4gICAgICAgIC5zb21lKChpdGVtKSA9PiBpdGVtLmNsZWFyYWJsZSAmJiBpdGVtLmhhc1ZhbHVlICYmIGl0ZW0udmlzaWJsZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdEhhc1NlY29uZGFyeVZhbHVlKCkge1xuICAgIHRoaXMuX2hhc1NlY29uZGFyeVZhbHVlJC5uZXh0KHRoaXMuaGFzU2Vjb25kYXJ5VmFsdWUpO1xuXG4gICAgdGhpcy5fZmlsdGVyQ29udHJvbGxlci5jaGFuZ2UkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9oYXNTZWNvbmRhcnlWYWx1ZSQubmV4dCh0aGlzLmhhc1NlY29uZGFyeVZhbHVlKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG59XG4iLCJAaWYgKGl0ZW1zLmxlbmd0aCAhPT0gMCkge1xuICBAZm9yIChpdGVtIG9mIHNlY29uZGFyeUl0ZW1zOyB0cmFjayBpdGVtLm5hbWUpIHtcbiAgICBAaWYgKChpdGVtLnZpc2libGUkIHwgYXN5bmMpKSB7XG4gICAgICBAaWYgKChpdGVtLmhhc1ZhbHVlJCB8IGFzeW5jKSkge1xuICAgICAgICBAZm9yIChjaGlwIG9mIGl0ZW0uY2hpcHMkIHwgYXN5bmM7IHRyYWNrIGNoaXAubGFiZWwpIHtcbiAgICAgICAgICA8ZnMtY2hpcFxuICAgICAgICAgICAgICBjbGFzcz1cImZpbHRlci1jaGlwIHNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxuICAgICAgICAgICAgICBbYm9yZGVyQ29sb3JdPVwiJyNkZGQnXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1maWx0ZXItaXRlbV09XCJpdGVtLm5hbWVcIlxuICAgICAgICAgICAgICBbb3V0bGluZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvcGVuQ2hpcChpdGVtLCBjaGlwLm5hbWUpXCI+XG4gICAgICAgICAgICBAaWYgKGNoaXAudmFsdWUpIHtcbiAgICAgICAgICAgICAge3sgY2hpcC5sYWJlbCB9fTpcbiAgICAgICAgICAgICAgPGE+XG4gICAgICAgICAgICAgICAge3sgY2hpcC52YWx1ZSB9fVxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAge3sgY2hpcC5sYWJlbCB9fVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgIGZzQ2hpcFN1ZmZpeFxuICAgICAgICAgICAgICBbaWNvbl09XCInY2FuY2VsX2NpcmNsZV9vdXRsaW5lJ1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVDaGlwKGl0ZW0sIGNoaXApXCI+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvZnMtY2hpcD5cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGlmICgoaXRlbS5ub3RWYWx1ZSQgfCBhc3luYykgJiYgKGl0ZW0uc2Vjb25kYXJ5VmlzaWJsZSQgfCBhc3luYykpIHtcbiAgICAgICAgPGZzLWNoaXBcbiAgICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLWNoaXBcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1maWx0ZXItaXRlbV09XCJpdGVtLm5hbWVcIlxuICAgICAgICAgICAgW3NpemVdPVwiJ21lZGl1bSdcIlxuICAgICAgICAgICAgW2JvcmRlckNvbG9yXT1cIicjZGRkJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwib3BlbkNoaXAoaXRlbSlcIlxuICAgICAgICAgICAgW291dGxpbmVkXT1cInRydWVcIj5cbiAgICAgICAgICB7eyBpdGVtLm1lcmdlZExhYmVsIH19XG4gICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICBmc0NoaXBTdWZmaXhcbiAgICAgICAgICAgIFtpY29uXT1cIidjYW5jZWxfY2lyY2xlX291dGxpbmUnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVJdGVtKGl0ZW0pXCI+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9mcy1jaGlwPlxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAaWYgKG1vcmVGaWx0ZXJJdGVtcygpLmxlbmd0aCA+IDApIHtcbiAgICA8bWF0LXNlbGVjdFxuICAgICAgICBjbGFzcz1cIm1vcmUtZmlsdGVycy1zZWxlY3QgbWF0LW1kYy1idXR0b24tYmFzZVwiXG4gICAgICAgIFtidXR0b25UeXBlXT1cIidiYXNpYydcIlxuICAgICAgICBmc1NlbGVjdEJ1dHRvblxuICAgICAgICBbZGlzYWJsZU9wdGlvbkNlbnRlcmluZ109XCJ0cnVlXCJcbiAgICAgICAgW3BhbmVsQ2xhc3NdPVwiJ2ZzLWZpbHRlci1uby1pbml0aWFsLWZvY3VzJ1wiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCInTW9yZSBmaWx0ZXJzJ1wiXG4gICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiYWRkRmlsdGVyKCRldmVudClcIlxuICAgICAgICBbZGVzZWxlY3RPbkNoYW5nZV09XCJ0cnVlXCI+XG4gICAgICBAZm9yIChpdGVtIG9mIG1vcmVGaWx0ZXJJdGVtcygpOyB0cmFjayBpdGVtLm5hbWUpIHtcbiAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIml0ZW1cIj5cbiAgICAgICAgICB7eyBpdGVtLm1lcmdlZExhYmVsIH19XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgIH1cbiAgICA8L21hdC1zZWxlY3Q+XG4gIH1cbiAgQGlmIChzYXZlZEZpbHRlckNvbnRyb2xsZXIuZW5hYmxlZCkge1xuICAgIDxtYXQtc2VsZWN0XG4gICAgICAgIGNsYXNzPVwic2F2ZWQtZmlsdGVycy1zZWxlY3QgbWF0LW1kYy1idXR0b24tYmFzZVwiXG4gICAgICAgIFtidXR0b25UeXBlXT1cIidiYXNpYydcIlxuICAgICAgICBmc1NlbGVjdEJ1dHRvblxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKHNhdmVkRmlsdGVyQ29udHJvbGxlci5hY3RpdmVGaWx0ZXIkIHwgYXN5bmMpID8gc2F2ZWRGaWx0ZXJDb250cm9sbGVyLnNpbmd1bGFyTGFiZWwgKyAnOiAnICsgKHNhdmVkRmlsdGVyQ29udHJvbGxlci5hY3RpdmVGaWx0ZXIkIHwgYXN5bmMpLm5hbWUgOiBzYXZlZEZpbHRlckNvbnRyb2xsZXIucGx1cmFsTGFiZWxcIlxuICAgICAgICBbZGVzZWxlY3RPbkNoYW5nZV09XCJ0cnVlXCI+XG4gICAgICBAaWYgKHNhdmVkRmlsdGVyQ29udHJvbGxlci5hY3RpdmVGaWx0ZXIkIHwgYXN5bmMpIHtcbiAgICAgICAgPG1hdC1vcHRpb24gKGNsaWNrKT1cInNhdmVBY3RpdmVGaWx0ZXIoKVwiPlxuICAgICAgICAgIFVwZGF0ZSBmaWx0ZXJzXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPG1hdC1vcHRpb24gKGNsaWNrKT1cInNhdmVBcygpXCI+XG4gICAgICAgICAgU2F2ZSBhcyBuZXdcbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxtYXQtb3B0aW9uIChjbGljayk9XCJjcmVhdGVTYXZlZEZpbHRlcigpXCI+XG4gICAgICAgICAgQ3JlYXRlIG5ld1xuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICB9XG4gICAgICA8bWF0LW9wdGlvbiAoY2xpY2spPVwibWFuYWdlU2F2ZWRGaWx0ZXJzKClcIj5cbiAgICAgICAgVmlldyBhbGxcbiAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICA8L21hdC1zZWxlY3Q+XG4gIH1cbiAgQGlmIChjbGVhckZpbHRlcnNWaXNpYmxlKCkpIHtcbiAgICA8YVxuICAgICAgICBjbGFzcz1cImNsZWFyXCJcbiAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAoY2xpY2spPVwiY2xlYXIoKVwiPlxuICAgICAgQ2xlYXIgZmlsdGVyc1xuICAgIDwvYT5cbiAgfVxufSJdfQ==
@@ -34,7 +34,7 @@ export class DateComponent extends BaseItemComponent {
34
34
  this.close();
35
35
  }
36
36
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
37
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DateComponent, isStandalone: true, selector: "filter-item-date", inputs: { autofocus: "autofocus", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0, template: "@if (item.mode === itemDateMode.ScrollMonthDayYear || item.mode === itemDateMode.ScrollMonthYear) {\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDateScrollPicker\n [placeholder]=\"item.label\"\n [fsFilterFocusTrigger]=\"autofocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"change($event)\"\n [maxYear]=\"item.maxYear\"\n [showMonth]=\"showMonth\"\n [showDay]=\"showDay\"\n [showYear]=\"showYear\"\n [placeholder]=\"item.placeholder\"\n [clear]=\"item.clearable\"\n [name]=\"item.name\">\n </mat-form-field>\n} @else if (item.mode === itemDateMode.Calendar) {\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDatePicker\n [fsFilterFocusTrigger]=\"autofocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"change($event)\"\n [maxYear]=\"item.maxYear\"\n [view]=\"viewType\"\n [placeholder]=\"item.label\"\n [clear]=\"item.clearable\"\n [name]=\"item.name\">\n </mat-form-field>\n}", dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: FsDatePickerModule }, { kind: "component", type: i2.FsDatePickerComponent, selector: "[fsDatePicker]", inputs: ["minYear", "maxYear", "minDate", "maxDate", "startOfDay", "view", "format", "minutes"], outputs: ["change"] }, { kind: "component", type: i2.FsDateScrollPickerComponent, selector: "[fsDateScrollPicker]", inputs: ["minYear", "maxYear", "minDate", "maxDate", "showMonth", "showYear", "showDay"] }, { kind: "directive", type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i3.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
37
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DateComponent, isStandalone: true, selector: "filter-item-date", inputs: { autofocus: "autofocus", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0, template: "@if (item.mode === itemDateMode.ScrollMonthDayYear || item.mode === itemDateMode.ScrollMonthYear) {\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDateScrollPicker\n [placeholder]=\"item.label\"\n [fsFilterFocusTrigger]=\"autofocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"change($event)\"\n [maxYear]=\"item.maxYear\"\n [showMonth]=\"showMonth\"\n [showDay]=\"showDay\"\n [showYear]=\"showYear\"\n [placeholder]=\"item.placeholder\"\n [clear]=\"item.clearable\"\n [name]=\"item.name\">\n </mat-form-field>\n} @else if (item.mode === itemDateMode.Calendar) {\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDatePicker\n [fsFilterFocusTrigger]=\"autofocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"change($event)\"\n [maxYear]=\"item.maxYear\"\n [view]=\"viewType\"\n [placeholder]=\"item.label\"\n [clear]=\"item.clearable\"\n [name]=\"item.name\">\n </mat-form-field>\n}", styles: ["mat-form-field{width:185px}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: FsDatePickerModule }, { kind: "component", type: i2.FsDatePickerComponent, selector: "[fsDatePicker]", inputs: ["minYear", "maxYear", "minDate", "maxDate", "startOfDay", "view", "format", "minutes"], outputs: ["change"] }, { kind: "component", type: i2.FsDateScrollPickerComponent, selector: "[fsDateScrollPicker]", inputs: ["minYear", "maxYear", "minDate", "maxDate", "showMonth", "showYear", "showDay"] }, { kind: "directive", type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i3.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
38
38
  }
39
39
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateComponent, decorators: [{
40
40
  type: Component,
@@ -46,10 +46,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
46
46
  FsDatePickerModule,
47
47
  FocusToItemDirective,
48
48
  FsFormModule,
49
- ], template: "@if (item.mode === itemDateMode.ScrollMonthDayYear || item.mode === itemDateMode.ScrollMonthYear) {\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDateScrollPicker\n [placeholder]=\"item.label\"\n [fsFilterFocusTrigger]=\"autofocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"change($event)\"\n [maxYear]=\"item.maxYear\"\n [showMonth]=\"showMonth\"\n [showDay]=\"showDay\"\n [showYear]=\"showYear\"\n [placeholder]=\"item.placeholder\"\n [clear]=\"item.clearable\"\n [name]=\"item.name\">\n </mat-form-field>\n} @else if (item.mode === itemDateMode.Calendar) {\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDatePicker\n [fsFilterFocusTrigger]=\"autofocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"change($event)\"\n [maxYear]=\"item.maxYear\"\n [view]=\"viewType\"\n [placeholder]=\"item.label\"\n [clear]=\"item.clearable\"\n [name]=\"item.name\">\n </mat-form-field>\n}" }]
49
+ ], template: "@if (item.mode === itemDateMode.ScrollMonthDayYear || item.mode === itemDateMode.ScrollMonthYear) {\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDateScrollPicker\n [placeholder]=\"item.label\"\n [fsFilterFocusTrigger]=\"autofocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"change($event)\"\n [maxYear]=\"item.maxYear\"\n [showMonth]=\"showMonth\"\n [showDay]=\"showDay\"\n [showYear]=\"showYear\"\n [placeholder]=\"item.placeholder\"\n [clear]=\"item.clearable\"\n [name]=\"item.name\">\n </mat-form-field>\n} @else if (item.mode === itemDateMode.Calendar) {\n <mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n <input\n matInput\n fsDatePicker\n [fsFilterFocusTrigger]=\"autofocus\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"change($event)\"\n [maxYear]=\"item.maxYear\"\n [view]=\"viewType\"\n [placeholder]=\"item.label\"\n [clear]=\"item.clearable\"\n [name]=\"item.name\">\n </mat-form-field>\n}", styles: ["mat-form-field{width:185px}\n"] }]
50
50
  }], propDecorators: { autofocus: [{
51
51
  type: Input
52
52
  }], floatLabel: [{
53
53
  type: Input
54
54
  }] } });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZmlsdGVycy1pdGVtL2RhdGUvZGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZmlsdGVycy1pdGVtL2RhdGUvZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEdBRU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRW5ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUdoRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUl0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7QUFrQnJFLE1BQU0sT0FBTyxhQUFjLFNBQVEsaUJBQTBDO0lBRTNELFNBQVMsR0FBWSxLQUFLLENBQUM7SUFDM0IsVUFBVSxHQUFzQixNQUFNLENBQUM7SUFFaEQsUUFBUSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUM7SUFFL0IsWUFBWSxHQUFHLFlBQVksQ0FBQztJQUM1QixRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ2hCLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDakIsT0FBTyxHQUFHLElBQUksQ0FBQztJQUVmLFFBQVE7UUFDYixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEQsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztRQUVoRCxJQUFLLElBQUksQ0FBQyxJQUFxQixDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdEUsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFTSxNQUFNLENBQUMsS0FBVTtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQzt3R0F6QlUsYUFBYTs0RkFBYixhQUFhLGlLQ3hDMUIsMHVDQXlDQyw0Q0RWRyxZQUFZLDRMQUNaLFFBQVEsc0RBQ1IsUUFBUSxnVUFDUixXQUFXLDhtQkFDWCxrQkFBa0IsaWFBQ2xCLG9CQUFvQixvR0FDcEIsWUFBWTs7NEZBR0gsYUFBYTtrQkFmekIsU0FBUzsrQkFDRSxrQkFBa0IsbUJBRVgsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixRQUFRO3dCQUNSLFFBQVE7d0JBQ1IsV0FBVzt3QkFDWCxrQkFBa0I7d0JBQ2xCLG9CQUFvQjt3QkFDcEIsWUFBWTtxQkFDYjs4QkFJZSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBNYXRGb3JtRmllbGQsIE1hdExhYmVsIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcblxuaW1wb3J0IHsgRnNEYXRlUGlja2VyTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBGc0Zvcm1Nb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9mb3JtJztcblxuXG5pbXBvcnQgeyBGb2N1c1RvSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvZm9jdXMtdG8taXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSXRlbURhdGVNb2RlIH0gZnJvbSAnLi4vLi4vLi4vZW51bXMvaXRlbS1kYXRlLW1vZGUuZW51bSc7XG5pbXBvcnQgeyBJdGVtVHlwZSB9IGZyb20gJy4uLy4uLy4uL2VudW1zL2l0ZW0tdHlwZS5lbnVtJztcbmltcG9ydCB7IFBpY2tlclZpZXdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vZW51bXMvcGlja2VyLXZpZXctdHlwZS5lbnVtJztcbmltcG9ydCB0eXBlIHsgQmFzZURhdGVJdGVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2l0ZW1zL2Jhc2UtZGF0ZS1pdGVtJztcbmltcG9ydCB0eXBlIHsgRGF0ZUl0ZW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvaXRlbXMvZGF0ZS1pdGVtJztcbmltcG9ydCB0eXBlIHsgRGF0ZVRpbWVJdGVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2l0ZW1zL2RhdGUtdGltZS1pdGVtJztcbmltcG9ydCB7IEJhc2VJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1pdGVtL2Jhc2UtaXRlbS5jb21wb25lbnQnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZpbHRlci1pdGVtLWRhdGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0Rm9ybUZpZWxkLFxuICAgIE1hdExhYmVsLFxuICAgIE1hdElucHV0LFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEZzRGF0ZVBpY2tlck1vZHVsZSxcbiAgICBGb2N1c1RvSXRlbURpcmVjdGl2ZSxcbiAgICBGc0Zvcm1Nb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERhdGVDb21wb25lbnQgZXh0ZW5kcyBCYXNlSXRlbUNvbXBvbmVudDxEYXRlSXRlbSB8IERhdGVUaW1lSXRlbT4gaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBhdXRvZm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGZsb2F0TGFiZWw6ICdhdXRvJyB8ICdhbHdheXMnID0gJ2F1dG8nO1xuICBcbiAgcHVibGljIHZpZXdUeXBlID0gUGlja2VyVmlld1R5cGUuRGF0ZTtcblxuICBwdWJsaWMgaXRlbURhdGVNb2RlID0gSXRlbURhdGVNb2RlO1xuICBwdWJsaWMgc2hvd1llYXIgPSB0cnVlO1xuICBwdWJsaWMgc2hvd01vbnRoID0gdHJ1ZTtcbiAgcHVibGljIHNob3dEYXkgPSB0cnVlO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMudmlld1R5cGUgPSB0aGlzLml0ZW0udHlwZSA9PT0gSXRlbVR5cGUuRGF0ZVRpbWUgPyBcbiAgICAgIFBpY2tlclZpZXdUeXBlLkRhdGVUaW1lIDogUGlja2VyVmlld1R5cGUuRGF0ZTtcblxuICAgIGlmICgodGhpcy5pdGVtIGFzIEJhc2VEYXRlSXRlbSkubW9kZSA9PT0gSXRlbURhdGVNb2RlLlNjcm9sbE1vbnRoWWVhcikge1xuICAgICAgdGhpcy5zaG93RGF5ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNoYW5nZShldmVudDogYW55KSB7XG4gICAgdGhpcy5pdGVtLnZhbHVlID0gZXZlbnQ7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG59XG4iLCJAaWYgKGl0ZW0ubW9kZSA9PT0gaXRlbURhdGVNb2RlLlNjcm9sbE1vbnRoRGF5WWVhciB8fCBpdGVtLm1vZGUgPT09IGl0ZW1EYXRlTW9kZS5TY3JvbGxNb250aFllYXIpIHtcbiAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCJcbiAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1wYWRsZXNzXCI+XG4gICAgPG1hdC1sYWJlbD5cbiAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cbiAgICA8L21hdC1sYWJlbD5cbiAgICA8aW5wdXRcbiAgICAgIG1hdElucHV0XG4gICAgICBmc0RhdGVTY3JvbGxQaWNrZXJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJpdGVtLmxhYmVsXCJcbiAgICAgIFtmc0ZpbHRlckZvY3VzVHJpZ2dlcl09XCJhdXRvZm9jdXNcIlxuICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2UoJGV2ZW50KVwiXG4gICAgICBbbWF4WWVhcl09XCJpdGVtLm1heFllYXJcIlxuICAgICAgW3Nob3dNb250aF09XCJzaG93TW9udGhcIlxuICAgICAgW3Nob3dEYXldPVwic2hvd0RheVwiXG4gICAgICBbc2hvd1llYXJdPVwic2hvd1llYXJcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cIml0ZW0ucGxhY2Vob2xkZXJcIlxuICAgICAgW2NsZWFyXT1cIml0ZW0uY2xlYXJhYmxlXCJcbiAgICAgIFtuYW1lXT1cIml0ZW0ubmFtZVwiPlxuICA8L21hdC1mb3JtLWZpZWxkPlxufSBAZWxzZSBpZiAoaXRlbS5tb2RlID09PSBpdGVtRGF0ZU1vZGUuQ2FsZW5kYXIpIHtcbiAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCJcbiAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1wYWRsZXNzXCI+XG4gICAgPG1hdC1sYWJlbD5cbiAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cbiAgICA8L21hdC1sYWJlbD5cbiAgICA8aW5wdXRcbiAgICAgIG1hdElucHV0XG4gICAgICBmc0RhdGVQaWNrZXJcbiAgICAgIFtmc0ZpbHRlckZvY3VzVHJpZ2dlcl09XCJhdXRvZm9jdXNcIlxuICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2UoJGV2ZW50KVwiXG4gICAgICBbbWF4WWVhcl09XCJpdGVtLm1heFllYXJcIlxuICAgICAgW3ZpZXddPVwidmlld1R5cGVcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cIml0ZW0ubGFiZWxcIlxuICAgICAgW2NsZWFyXT1cIml0ZW0uY2xlYXJhYmxlXCJcbiAgICAgIFtuYW1lXT1cIml0ZW0ubmFtZVwiPlxuICA8L21hdC1mb3JtLWZpZWxkPlxufSJdfQ==
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZmlsdGVycy1pdGVtL2RhdGUvZGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZmlsdGVycy1pdGVtL2RhdGUvZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEdBRU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRW5ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUdoRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUl0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7QUFtQnJFLE1BQU0sT0FBTyxhQUFjLFNBQVEsaUJBQTBDO0lBRTNELFNBQVMsR0FBWSxLQUFLLENBQUM7SUFDM0IsVUFBVSxHQUFzQixNQUFNLENBQUM7SUFFaEQsUUFBUSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUM7SUFFL0IsWUFBWSxHQUFHLFlBQVksQ0FBQztJQUM1QixRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ2hCLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDakIsT0FBTyxHQUFHLElBQUksQ0FBQztJQUVmLFFBQVE7UUFDYixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEQsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztRQUVoRCxJQUFLLElBQUksQ0FBQyxJQUFxQixDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdEUsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFTSxNQUFNLENBQUMsS0FBVTtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQzt3R0F6QlUsYUFBYTs0RkFBYixhQUFhLGlLQ3pDMUIsMHVDQXlDQyx1RkRURyxZQUFZLDRMQUNaLFFBQVEsc0RBQ1IsUUFBUSxnVUFDUixXQUFXLDhtQkFDWCxrQkFBa0IsaWFBQ2xCLG9CQUFvQixvR0FDcEIsWUFBWTs7NEZBR0gsYUFBYTtrQkFoQnpCLFNBQVM7K0JBQ0Usa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osUUFBUTt3QkFDUixRQUFRO3dCQUNSLFdBQVc7d0JBQ1gsa0JBQWtCO3dCQUNsQixvQkFBb0I7d0JBQ3BCLFlBQVk7cUJBQ2I7OEJBSWUsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkLCBNYXRMYWJlbCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5cbmltcG9ydCB7IEZzRGF0ZVBpY2tlck1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgRnNGb3JtTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZm9ybSc7XG5cblxuaW1wb3J0IHsgRm9jdXNUb0l0ZW1EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzL2ZvY3VzLXRvLWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IEl0ZW1EYXRlTW9kZSB9IGZyb20gJy4uLy4uLy4uL2VudW1zL2l0ZW0tZGF0ZS1tb2RlLmVudW0nO1xuaW1wb3J0IHsgSXRlbVR5cGUgfSBmcm9tICcuLi8uLi8uLi9lbnVtcy9pdGVtLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBQaWNrZXJWaWV3VHlwZSB9IGZyb20gJy4uLy4uLy4uL2VudW1zL3BpY2tlci12aWV3LXR5cGUuZW51bSc7XG5pbXBvcnQgdHlwZSB7IEJhc2VEYXRlSXRlbSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9pdGVtcy9iYXNlLWRhdGUtaXRlbSc7XG5pbXBvcnQgdHlwZSB7IERhdGVJdGVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2l0ZW1zL2RhdGUtaXRlbSc7XG5pbXBvcnQgdHlwZSB7IERhdGVUaW1lSXRlbSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9pdGVtcy9kYXRlLXRpbWUtaXRlbSc7XG5pbXBvcnQgeyBCYXNlSXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtaXRlbS9iYXNlLWl0ZW0uY29tcG9uZW50JztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmaWx0ZXItaXRlbS1kYXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0Rm9ybUZpZWxkLFxuICAgIE1hdExhYmVsLFxuICAgIE1hdElucHV0LFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEZzRGF0ZVBpY2tlck1vZHVsZSxcbiAgICBGb2N1c1RvSXRlbURpcmVjdGl2ZSxcbiAgICBGc0Zvcm1Nb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERhdGVDb21wb25lbnQgZXh0ZW5kcyBCYXNlSXRlbUNvbXBvbmVudDxEYXRlSXRlbSB8IERhdGVUaW1lSXRlbT4gaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBhdXRvZm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGZsb2F0TGFiZWw6ICdhdXRvJyB8ICdhbHdheXMnID0gJ2F1dG8nO1xuICBcbiAgcHVibGljIHZpZXdUeXBlID0gUGlja2VyVmlld1R5cGUuRGF0ZTtcblxuICBwdWJsaWMgaXRlbURhdGVNb2RlID0gSXRlbURhdGVNb2RlO1xuICBwdWJsaWMgc2hvd1llYXIgPSB0cnVlO1xuICBwdWJsaWMgc2hvd01vbnRoID0gdHJ1ZTtcbiAgcHVibGljIHNob3dEYXkgPSB0cnVlO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMudmlld1R5cGUgPSB0aGlzLml0ZW0udHlwZSA9PT0gSXRlbVR5cGUuRGF0ZVRpbWUgPyBcbiAgICAgIFBpY2tlclZpZXdUeXBlLkRhdGVUaW1lIDogUGlja2VyVmlld1R5cGUuRGF0ZTtcblxuICAgIGlmICgodGhpcy5pdGVtIGFzIEJhc2VEYXRlSXRlbSkubW9kZSA9PT0gSXRlbURhdGVNb2RlLlNjcm9sbE1vbnRoWWVhcikge1xuICAgICAgdGhpcy5zaG93RGF5ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNoYW5nZShldmVudDogYW55KSB7XG4gICAgdGhpcy5pdGVtLnZhbHVlID0gZXZlbnQ7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG59XG4iLCJAaWYgKGl0ZW0ubW9kZSA9PT0gaXRlbURhdGVNb2RlLlNjcm9sbE1vbnRoRGF5WWVhciB8fCBpdGVtLm1vZGUgPT09IGl0ZW1EYXRlTW9kZS5TY3JvbGxNb250aFllYXIpIHtcbiAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCJcbiAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1wYWRsZXNzXCI+XG4gICAgPG1hdC1sYWJlbD5cbiAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cbiAgICA8L21hdC1sYWJlbD5cbiAgICA8aW5wdXRcbiAgICAgIG1hdElucHV0XG4gICAgICBmc0RhdGVTY3JvbGxQaWNrZXJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJpdGVtLmxhYmVsXCJcbiAgICAgIFtmc0ZpbHRlckZvY3VzVHJpZ2dlcl09XCJhdXRvZm9jdXNcIlxuICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2UoJGV2ZW50KVwiXG4gICAgICBbbWF4WWVhcl09XCJpdGVtLm1heFllYXJcIlxuICAgICAgW3Nob3dNb250aF09XCJzaG93TW9udGhcIlxuICAgICAgW3Nob3dEYXldPVwic2hvd0RheVwiXG4gICAgICBbc2hvd1llYXJdPVwic2hvd1llYXJcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cIml0ZW0ucGxhY2Vob2xkZXJcIlxuICAgICAgW2NsZWFyXT1cIml0ZW0uY2xlYXJhYmxlXCJcbiAgICAgIFtuYW1lXT1cIml0ZW0ubmFtZVwiPlxuICA8L21hdC1mb3JtLWZpZWxkPlxufSBAZWxzZSBpZiAoaXRlbS5tb2RlID09PSBpdGVtRGF0ZU1vZGUuQ2FsZW5kYXIpIHtcbiAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCJcbiAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1wYWRsZXNzXCI+XG4gICAgPG1hdC1sYWJlbD5cbiAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cbiAgICA8L21hdC1sYWJlbD5cbiAgICA8aW5wdXRcbiAgICAgIG1hdElucHV0XG4gICAgICBmc0RhdGVQaWNrZXJcbiAgICAgIFtmc0ZpbHRlckZvY3VzVHJpZ2dlcl09XCJhdXRvZm9jdXNcIlxuICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2UoJGV2ZW50KVwiXG4gICAgICBbbWF4WWVhcl09XCJpdGVtLm1heFllYXJcIlxuICAgICAgW3ZpZXddPVwidmlld1R5cGVcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cIml0ZW0ubGFiZWxcIlxuICAgICAgW2NsZWFyXT1cIml0ZW0uY2xlYXJhYmxlXCJcbiAgICAgIFtuYW1lXT1cIml0ZW0ubmFtZVwiPlxuICA8L21hdC1mb3JtLWZpZWxkPlxufSJdfQ==
@@ -2,34 +2,52 @@ import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
2
2
  import { FormsModule } from '@angular/forms';
3
3
  import { MatFormField, MatLabel, MatPrefix, MatSuffix } from '@angular/material/form-field';
4
4
  import { MatInput } from '@angular/material/input';
5
+ import { FsCommonModule } from '@firestitch/common';
5
6
  import { FsFormModule } from '@firestitch/form';
7
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
8
  import { FocusToItemDirective } from '../../../directives/focus-to-item.directive';
7
9
  import { BaseItemComponent } from '../base-item/base-item.component';
8
10
  import * as i0 from "@angular/core";
9
11
  import * as i1 from "@angular/forms";
10
12
  import * as i2 from "@firestitch/form";
13
+ import * as i3 from "@firestitch/common";
11
14
  export class RangeComponent extends BaseItemComponent {
12
15
  autofocusName;
13
16
  floatLabel = 'auto';
14
17
  min;
15
18
  max;
16
19
  ngOnInit() {
17
- this.min = this.item.value?.min;
18
- this.max = this.item.value?.max;
20
+ this.item.value$
21
+ .pipe(takeUntilDestroyed(this._destroyRef))
22
+ .subscribe((value) => {
23
+ this.min = value?.min;
24
+ this.max = value?.max;
25
+ this._cdRef.detectChanges();
26
+ });
19
27
  }
20
28
  ngOnDestroy() {
21
- this.item.value = {
22
- min: this.min,
23
- max: this.max,
24
- };
29
+ if (this.triggerChangeOn === 'close') {
30
+ this.item.value = {
31
+ min: this.min,
32
+ max: this.max,
33
+ };
34
+ }
35
+ }
36
+ change() {
37
+ if (this.triggerChangeOn === 'change') {
38
+ this.item.value = {
39
+ min: this.min,
40
+ max: this.max,
41
+ };
42
+ }
25
43
  }
26
44
  keyup(event) {
27
- if (event.key === 'Enter' || event.code === 'Tab') {
45
+ if (this.triggerChangeOn === 'close' && (event.key === 'Enter' || event.code === 'Tab')) {
28
46
  this.close();
29
47
  }
30
48
  }
31
49
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RangeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
32
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RangeComponent, isStandalone: true, selector: "filter-item-range", inputs: { autofocusName: "autofocusName", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0, template: "<div class=\"form-field\">\n <mat-form-field\n class=\"filter-range-min\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[0] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'min' || !min\"\n type=\"number\"\n [(ngModel)]=\"min\"\n (keyup)=\"keyup($event)\"\n #from>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n <mat-form-field\n class=\"filter-range-max\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[1] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'max' || !!min\"\n type=\"number\"\n [(ngModel)]=\"max\"\n (keyup)=\"keyup($event)\"\n #to>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n</div>", styles: [".form-field{display:flex}.form-field mat-form-field{min-width:0}.form-field mat-form-field+mat-form-field{margin-left:10px}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i2.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
50
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RangeComponent, isStandalone: true, selector: "filter-item-range", inputs: { autofocusName: "autofocusName", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0, template: "<div class=\"form-field\">\n <mat-form-field\n class=\"filter-range-min\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[0] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'min' || !min\"\n type=\"number\"\n [(ngModel)]=\"min\"\n (fsModelChange)=\"change()\"\n (keyup)=\"keyup($event)\"\n #from>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n <mat-form-field\n class=\"filter-range-max\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[1] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'max' || !!min\"\n type=\"number\"\n [(ngModel)]=\"max\"\n (fsModelChange)=\"change()\"\n (keyup)=\"keyup($event)\"\n #to>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n</div>", styles: [".form-field{display:flex}.form-field mat-form-field{min-width:0}.form-field mat-form-field+mat-form-field{margin-left:10px}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i2.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: FsCommonModule }, { kind: "directive", type: i3.FsModelChangeDirective, selector: "[fsModelChange]", inputs: ["fsModelChangeOptions"], outputs: ["fsModelChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
33
51
  }
34
52
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RangeComponent, decorators: [{
35
53
  type: Component,
@@ -42,10 +60,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
42
60
  FocusToItemDirective,
43
61
  FsFormModule,
44
62
  MatSuffix,
45
- ], template: "<div class=\"form-field\">\n <mat-form-field\n class=\"filter-range-min\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[0] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'min' || !min\"\n type=\"number\"\n [(ngModel)]=\"min\"\n (keyup)=\"keyup($event)\"\n #from>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n <mat-form-field\n class=\"filter-range-max\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[1] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'max' || !!min\"\n type=\"number\"\n [(ngModel)]=\"max\"\n (keyup)=\"keyup($event)\"\n #to>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n</div>", styles: [".form-field{display:flex}.form-field mat-form-field{min-width:0}.form-field mat-form-field+mat-form-field{margin-left:10px}\n"] }]
63
+ FsCommonModule,
64
+ ], template: "<div class=\"form-field\">\n <mat-form-field\n class=\"filter-range-min\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[0] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'min' || !min\"\n type=\"number\"\n [(ngModel)]=\"min\"\n (fsModelChange)=\"change()\"\n (keyup)=\"keyup($event)\"\n #from>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n <mat-form-field\n class=\"filter-range-max\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[1] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'max' || !!min\"\n type=\"number\"\n [(ngModel)]=\"max\"\n (fsModelChange)=\"change()\"\n (keyup)=\"keyup($event)\"\n #to>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n</div>", styles: [".form-field{display:flex}.form-field mat-form-field{min-width:0}.form-field mat-form-field+mat-form-field{margin-left:10px}\n"] }]
46
65
  }], propDecorators: { autofocusName: [{
47
66
  type: Input
48
67
  }], floatLabel: [{
49
68
  type: Input
50
69
  }] } });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2ZpbHRlcnMtaXRlbS9yYW5nZS9yYW5nZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZmlsdGVycy1pdGVtL3JhbmdlL3JhbmdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHaEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFbkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7QUFvQnJFLE1BQU0sT0FBTyxjQUFlLFNBQVEsaUJBQTRCO0lBRTlDLGFBQWEsQ0FBUztJQUN0QixVQUFVLEdBQXNCLE1BQU0sQ0FBQztJQUVoRCxHQUFHLENBQVM7SUFDWixHQUFHLENBQVM7SUFFWixRQUFRO1FBQ2IsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUM7UUFDaEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUM7SUFDbEMsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUc7WUFDaEIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1lBQ2IsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1NBQ2QsQ0FBQztJQUNKLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBb0I7UUFDL0IsSUFBRyxLQUFLLENBQUMsR0FBRyxLQUFLLE9BQU8sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO3dHQXhCVSxjQUFjOzRGQUFkLGNBQWMsMEtDckMzQix5NUNBMkRNLHVMRGhDRixZQUFZLDRMQUNaLFFBQVEsc0RBQ1IsU0FBUyxxSEFDVCxRQUFRLGdVQUNSLFdBQVcsaXhCQUNYLG9CQUFvQixvR0FDcEIsWUFBWSwwZ0JBQ1osU0FBUzs7NEZBR0EsY0FBYztrQkFqQjFCLFNBQVM7K0JBQ0UsbUJBQW1CLG1CQUdaLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osUUFBUTt3QkFDUixTQUFTO3dCQUNULFFBQVE7d0JBQ1IsV0FBVzt3QkFDWCxvQkFBb0I7d0JBQ3BCLFlBQVk7d0JBQ1osU0FBUztxQkFDVjs4QkFJZSxhQUFhO3NCQUE1QixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IE1hdEZvcm1GaWVsZCwgTWF0TGFiZWwsIE1hdFByZWZpeCwgTWF0U3VmZml4IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcblxuaW1wb3J0IHsgRnNGb3JtTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZm9ybSc7XG5cblxuaW1wb3J0IHsgRm9jdXNUb0l0ZW1EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzL2ZvY3VzLXRvLWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IFJhbmdlSXRlbSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9pdGVtcy9yYW5nZS1pdGVtJztcbmltcG9ydCB7IEJhc2VJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1pdGVtL2Jhc2UtaXRlbS5jb21wb25lbnQnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZpbHRlci1pdGVtLXJhbmdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JhbmdlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmFuZ2UuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBNYXRGb3JtRmllbGQsXG4gICAgTWF0TGFiZWwsXG4gICAgTWF0UHJlZml4LFxuICAgIE1hdElucHV0LFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEZvY3VzVG9JdGVtRGlyZWN0aXZlLFxuICAgIEZzRm9ybU1vZHVsZSxcbiAgICBNYXRTdWZmaXgsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFJhbmdlQ29tcG9uZW50IGV4dGVuZHMgQmFzZUl0ZW1Db21wb25lbnQ8UmFuZ2VJdGVtPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKSBwdWJsaWMgYXV0b2ZvY3VzTmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgZmxvYXRMYWJlbDogJ2F1dG8nIHwgJ2Fsd2F5cycgPSAnYXV0byc7XG4gIFxuICBwdWJsaWMgbWluOiBudW1iZXI7XG4gIHB1YmxpYyBtYXg6IG51bWJlcjtcblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5taW4gPSB0aGlzLml0ZW0udmFsdWU/Lm1pbjtcbiAgICB0aGlzLm1heCA9IHRoaXMuaXRlbS52YWx1ZT8ubWF4O1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuaXRlbS52YWx1ZSA9IHtcbiAgICAgIG1pbjogdGhpcy5taW4sXG4gICAgICBtYXg6IHRoaXMubWF4LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMga2V5dXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZihldmVudC5rZXkgPT09ICdFbnRlcicgfHwgZXZlbnQuY29kZSA9PT0gJ1RhYicpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkXCI+XG4gIDxtYXQtZm9ybS1maWVsZFxuICAgICAgY2xhc3M9XCJmaWx0ZXItcmFuZ2UtbWluXCJcbiAgICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIlxuICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLXBhZGxlc3NcIj5cbiAgICA8bWF0LWxhYmVsPlxuICAgICAge3sgaXRlbS5sYWJlbFswXSB9fVxuICAgIDwvbWF0LWxhYmVsPlxuICAgIEBpZiAoaXRlbS5wcmVmaXgpIHtcbiAgICAgIDxzcGFuXG4gICAgICAgIG1hdFRleHRQcmVmaXhcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXByZWZpeFwiXG4gICAgICAgIFtpbm5lckh0bWxdPVwiaXRlbS5wcmVmaXhcIj5cbiAgICAgIDwvc3Bhbj5cbiAgICB9XG4gICAgPGlucHV0XG4gICAgICBtYXRJbnB1dFxuICAgICAgW2ZzRmlsdGVyRm9jdXNUcmlnZ2VyXT1cImF1dG9mb2N1c05hbWUgPT09ICdtaW4nIHx8ICFtaW5cIlxuICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICBbKG5nTW9kZWwpXT1cIm1pblwiXG4gICAgICAoa2V5dXApPVwia2V5dXAoJGV2ZW50KVwiXG4gICAgICAjZnJvbT5cbiAgICBAaWYgKGl0ZW0uc3VmZml4KSB7XG4gICAgICA8c3BhblxuICAgICAgICBtYXRTdWZmaXhcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXN1ZmZpeFwiXG4gICAgICAgIFtpbm5lckh0bWxdPVwiaXRlbS5zdWZmaXhcIj5cbiAgICAgIDwvc3Bhbj5cbiAgICB9XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDxtYXQtZm9ybS1maWVsZFxuICAgICAgY2xhc3M9XCJmaWx0ZXItcmFuZ2UtbWF4XCJcbiAgICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIlxuICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLXBhZGxlc3NcIj5cbiAgICA8bWF0LWxhYmVsPlxuICAgICAge3sgaXRlbS5sYWJlbFsxXSB9fVxuICAgIDwvbWF0LWxhYmVsPlxuICAgIEBpZiAoaXRlbS5wcmVmaXgpIHtcbiAgICAgIDxzcGFuXG4gICAgICAgIG1hdFRleHRQcmVmaXhcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXByZWZpeFwiXG4gICAgICAgIFtpbm5lckh0bWxdPVwiaXRlbS5wcmVmaXhcIj5cbiAgICAgIDwvc3Bhbj5cbiAgICB9XG4gICAgPGlucHV0XG4gICAgICBtYXRJbnB1dFxuICAgICAgW2ZzRmlsdGVyRm9jdXNUcmlnZ2VyXT1cImF1dG9mb2N1c05hbWUgPT09ICdtYXgnIHx8ICEhbWluXCJcbiAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgWyhuZ01vZGVsKV09XCJtYXhcIlxuICAgICAgKGtleXVwKT1cImtleXVwKCRldmVudClcIlxuICAgICAgI3RvPlxuICAgIEBpZiAoaXRlbS5zdWZmaXgpIHtcbiAgICAgIDxzcGFuXG4gICAgICAgIG1hdFN1ZmZpeFxuICAgICAgICBjbGFzcz1cInRleHQtc3VmZml4XCJcbiAgICAgICAgW2lubmVySHRtbF09XCJpdGVtLnN1ZmZpeFwiPlxuICAgICAgPC9zcGFuPlxuICAgIH1cbiAgPC9tYXQtZm9ybS1maWVsZD5cbjwvZGl2PiJdfQ==
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2ZpbHRlcnMtaXRlbS9yYW5nZS9yYW5nZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZmlsdGVycy1pdGVtL3JhbmdlL3JhbmdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRW5GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7OztBQXFCckUsTUFBTSxPQUFPLGNBQWUsU0FBUSxpQkFBNEI7SUFFOUMsYUFBYSxDQUFTO0lBQ3RCLFVBQVUsR0FBc0IsTUFBTSxDQUFDO0lBRWhELEdBQUcsQ0FBUztJQUNaLEdBQUcsQ0FBUztJQUVaLFFBQVE7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07YUFDYixJQUFJLENBQ0gsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUNyQzthQUNBLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxFQUFFLEdBQUcsQ0FBQztZQUN0QixJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssRUFBRSxHQUFHLENBQUM7WUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUcsSUFBSSxDQUFDLGVBQWUsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRztnQkFDaEIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO2dCQUNiLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRzthQUNkLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFHLElBQUksQ0FBQyxlQUFlLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUc7Z0JBQ2hCLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztnQkFDYixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7YUFDZCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFTSxLQUFLLENBQUMsS0FBb0I7UUFDL0IsSUFBRyxJQUFJLENBQUMsZUFBZSxLQUFLLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssT0FBTyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN2RixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQzt3R0ExQ1UsY0FBYzs0RkFBZCxjQUFjLDBLQ3hDM0IsaStDQTZETSx1TERoQ0YsWUFBWSw0TEFDWixRQUFRLHNEQUNSLFNBQVMscUhBQ1QsUUFBUSxnVUFDUixXQUFXLGl4QkFDWCxvQkFBb0Isb0dBQ3BCLFlBQVksMGdCQUNaLFNBQVMsb0hBQ1QsY0FBYzs7NEZBR0wsY0FBYztrQkFsQjFCLFNBQVM7K0JBQ0UsbUJBQW1CLG1CQUdaLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osUUFBUTt3QkFDUixTQUFTO3dCQUNULFFBQVE7d0JBQ1IsV0FBVzt3QkFDWCxvQkFBb0I7d0JBQ3BCLFlBQVk7d0JBQ1osU0FBUzt3QkFDVCxjQUFjO3FCQUNmOzhCQUllLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkLCBNYXRMYWJlbCwgTWF0UHJlZml4LCBNYXRTdWZmaXggfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuXG5pbXBvcnQgeyBGc0NvbW1vbk1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2NvbW1vbic7XG5pbXBvcnQgeyBGc0Zvcm1Nb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9mb3JtJztcblxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5pbXBvcnQgeyBGb2N1c1RvSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvZm9jdXMtdG8taXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUmFuZ2VJdGVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2l0ZW1zL3JhbmdlLWl0ZW0nO1xuaW1wb3J0IHsgQmFzZUl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9iYXNlLWl0ZW0vYmFzZS1pdGVtLmNvbXBvbmVudCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZmlsdGVyLWl0ZW0tcmFuZ2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmFuZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yYW5nZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdEZvcm1GaWVsZCxcbiAgICBNYXRMYWJlbCxcbiAgICBNYXRQcmVmaXgsXG4gICAgTWF0SW5wdXQsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgRm9jdXNUb0l0ZW1EaXJlY3RpdmUsXG4gICAgRnNGb3JtTW9kdWxlLFxuICAgIE1hdFN1ZmZpeCxcbiAgICBGc0NvbW1vbk1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUmFuZ2VDb21wb25lbnQgZXh0ZW5kcyBCYXNlSXRlbUNvbXBvbmVudDxSYW5nZUl0ZW0+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBhdXRvZm9jdXNOYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBmbG9hdExhYmVsOiAnYXV0bycgfCAnYWx3YXlzJyA9ICdhdXRvJztcbiAgXG4gIHB1YmxpYyBtaW46IG51bWJlcjtcbiAgcHVibGljIG1heDogbnVtYmVyO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLml0ZW0udmFsdWUkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgdGhpcy5taW4gPSB2YWx1ZT8ubWluO1xuICAgICAgICB0aGlzLm1heCA9IHZhbHVlPy5tYXg7XG4gICAgICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmKHRoaXMudHJpZ2dlckNoYW5nZU9uID09PSAnY2xvc2UnKSB7XG4gICAgICB0aGlzLml0ZW0udmFsdWUgPSB7XG4gICAgICAgIG1pbjogdGhpcy5taW4sXG4gICAgICAgIG1heDogdGhpcy5tYXgsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2UoKSB7XG4gICAgaWYodGhpcy50cmlnZ2VyQ2hhbmdlT24gPT09ICdjaGFuZ2UnKSB7XG4gICAgICB0aGlzLml0ZW0udmFsdWUgPSB7XG4gICAgICAgIG1pbjogdGhpcy5taW4sXG4gICAgICAgIG1heDogdGhpcy5tYXgsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBrZXl1cChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmKHRoaXMudHJpZ2dlckNoYW5nZU9uID09PSAnY2xvc2UnICYmIChldmVudC5rZXkgPT09ICdFbnRlcicgfHwgZXZlbnQuY29kZSA9PT0gJ1RhYicpKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZFwiPlxuICA8bWF0LWZvcm0tZmllbGRcbiAgICAgIGNsYXNzPVwiZmlsdGVyLXJhbmdlLW1pblwiXG4gICAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCJcbiAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1wYWRsZXNzXCI+XG4gICAgPG1hdC1sYWJlbD5cbiAgICAgIHt7IGl0ZW0ubGFiZWxbMF0gfX1cbiAgICA8L21hdC1sYWJlbD5cbiAgICBAaWYgKGl0ZW0ucHJlZml4KSB7XG4gICAgICA8c3BhblxuICAgICAgICBtYXRUZXh0UHJlZml4XG4gICAgICAgIGNsYXNzPVwidGV4dC1wcmVmaXhcIlxuICAgICAgICBbaW5uZXJIdG1sXT1cIml0ZW0ucHJlZml4XCI+XG4gICAgICA8L3NwYW4+XG4gICAgfVxuICAgIDxpbnB1dFxuICAgICAgbWF0SW5wdXRcbiAgICAgIFtmc0ZpbHRlckZvY3VzVHJpZ2dlcl09XCJhdXRvZm9jdXNOYW1lID09PSAnbWluJyB8fCAhbWluXCJcbiAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgWyhuZ01vZGVsKV09XCJtaW5cIlxuICAgICAgKGZzTW9kZWxDaGFuZ2UpPVwiY2hhbmdlKClcIlxuICAgICAgKGtleXVwKT1cImtleXVwKCRldmVudClcIlxuICAgICAgI2Zyb20+XG4gICAgQGlmIChpdGVtLnN1ZmZpeCkge1xuICAgICAgPHNwYW5cbiAgICAgICAgbWF0U3VmZml4XG4gICAgICAgIGNsYXNzPVwidGV4dC1zdWZmaXhcIlxuICAgICAgICBbaW5uZXJIdG1sXT1cIml0ZW0uc3VmZml4XCI+XG4gICAgICA8L3NwYW4+XG4gICAgfVxuICA8L21hdC1mb3JtLWZpZWxkPlxuICA8bWF0LWZvcm0tZmllbGRcbiAgICAgIGNsYXNzPVwiZmlsdGVyLXJhbmdlLW1heFwiXG4gICAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCJcbiAgICAgIGNsYXNzPVwiZm9ybS1maWVsZC1wYWRsZXNzXCI+XG4gICAgPG1hdC1sYWJlbD5cbiAgICAgIHt7IGl0ZW0ubGFiZWxbMV0gfX1cbiAgICA8L21hdC1sYWJlbD5cbiAgICBAaWYgKGl0ZW0ucHJlZml4KSB7XG4gICAgICA8c3BhblxuICAgICAgICBtYXRUZXh0UHJlZml4XG4gICAgICAgIGNsYXNzPVwidGV4dC1wcmVmaXhcIlxuICAgICAgICBbaW5uZXJIdG1sXT1cIml0ZW0ucHJlZml4XCI+XG4gICAgICA8L3NwYW4+XG4gICAgfVxuICAgIDxpbnB1dFxuICAgICAgbWF0SW5wdXRcbiAgICAgIFtmc0ZpbHRlckZvY3VzVHJpZ2dlcl09XCJhdXRvZm9jdXNOYW1lID09PSAnbWF4JyB8fCAhIW1pblwiXG4gICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgIFsobmdNb2RlbCldPVwibWF4XCJcbiAgICAgIChmc01vZGVsQ2hhbmdlKT1cImNoYW5nZSgpXCJcbiAgICAgIChrZXl1cCk9XCJrZXl1cCgkZXZlbnQpXCJcbiAgICAgICN0bz5cbiAgICBAaWYgKGl0ZW0uc3VmZml4KSB7XG4gICAgICA8c3BhblxuICAgICAgICBtYXRTdWZmaXhcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXN1ZmZpeFwiXG4gICAgICAgIFtpbm5lckh0bWxdPVwiaXRlbS5zdWZmaXhcIj5cbiAgICAgIDwvc3Bhbj5cbiAgICB9XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L2Rpdj4iXX0=