@firestitch/filter 9.9.0 → 9.9.5

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.
@@ -9,10 +9,10 @@ __decorate([
9
9
  FsFilterActionKebabActionsComponent = __decorate([
10
10
  Component({
11
11
  selector: 'fs-filter-action-kebab-actions',
12
- template: "<button type=\"button\"\n mat-icon-button\n class=\"menu-button\"\n [fsMenuTriggerFor]=\"kebabActionsMenu\">\n <mat-icon>more_vert</mat-icon>\n</button>\n<fs-menu #kebabActionsMenu>\n <ng-container *ngFor=\"let action of kebabActions\">\n <ng-container [ngSwitch]=\"action.mode\">\n <!-- Case when actions was collapsed from action with mode = 'menu'-->\n <ng-container *ngSwitchCase=\"'menu'\">\n <ng-container *ngFor=\"let childAction of action.items\">\n <ng-container *ngIf=\"childAction.isGroup else simpleMenuItem\">\n <fs-menu-group>\n <ng-template fs-group-menu-item-template>\n {{ action.label }} <mat-icon style=\"margin: 0;\">arrow_right</mat-icon> {{childAction.label}}\n </ng-template>\n <ng-container *ngFor=\"let subAction of childAction.items\">\n <ng-template fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [hidden]=\"!(subAction.visible$ | async)\"\n (click)=\"subAction.click($event)\">\n <mat-icon *ngIf=\"subAction.icon\">{{subAction.icon}}</mat-icon>\n {{subAction.label}}\n </ng-template>\n </ng-container>\n </fs-menu-group>\n </ng-container>\n <ng-template #simpleMenuItem>\n <ng-template fs-menu-item\n [link]=\"childAction.routerLink?.link\"\n [queryParams]=\"childAction.routerLink?.queryParams\"\n [hidden]=\"!(childAction.visible$ | async)\"\n (click)=\"childAction.click($event);\">\n <mat-icon *ngIf=\"childAction.icon\">{{childAction.icon}}</mat-icon>\n {{ action.label }} <mat-icon style=\"margin: 0;\">arrow_right</mat-icon>{{ childAction.label }}\n </ng-template>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <ng-template fs-menu-item\n (click)=\"action.click($event)\"\n [fsClass]=\"action.classArray\"\n >\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon> {{action.label}}\n </ng-template>\n </ng-container>\n\n </ng-container>\n </ng-container>\n</fs-menu>\n",
12
+ template: "<button type=\"button\"\n mat-icon-button\n class=\"menu-button\"\n [fsMenuTriggerFor]=\"kebabActionsMenu\">\n <mat-icon>more_vert</mat-icon>\n</button>\n<fs-menu #kebabActionsMenu>\n <ng-container *ngFor=\"let action of kebabActions\">\n <ng-container [ngSwitch]=\"action.mode\">\n <!-- Case when actions was collapsed from action with mode = 'menu'-->\n <ng-container *ngSwitchCase=\"'menu'\">\n <ng-container *ngFor=\"let childAction of action.items\">\n <ng-container *ngIf=\"childAction.isGroup else simpleMenuItem\">\n <fs-menu-group>\n <ng-template fs-group-menu-item-template>\n {{ action.label }} <mat-icon style=\"margin: 0;\">arrow_right</mat-icon> {{childAction.label}}\n </ng-template>\n <ng-container *ngFor=\"let subAction of childAction.items\">\n <ng-template fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [hidden]=\"!(subAction.visible$ | async)\"\n (click)=\"subAction.click($event)\">\n <mat-icon *ngIf=\"subAction.icon\">{{subAction.icon}}</mat-icon>\n {{subAction.label}}\n </ng-template>\n </ng-container>\n </fs-menu-group>\n </ng-container>\n <ng-template #simpleMenuItem>\n <ng-template fs-menu-item\n [link]=\"childAction.routerLink?.link\"\n [queryParams]=\"childAction.routerLink?.queryParams\"\n [hidden]=\"!(childAction.visible$ | async)\"\n (click)=\"childAction.click($event);\">\n <mat-icon *ngIf=\"childAction.icon\">{{childAction.icon}}</mat-icon>\n {{ action.label }} <mat-icon style=\"margin: 0;\">arrow_right</mat-icon>{{ childAction.label }}\n </ng-template>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'file'\">\n <ng-template fs-menu-item\n [fsClass]=\"action.classArray\"\n >\n <fs-file\n class=\"action-button\"\n [multiple]=\"action.multiple\"\n (select)=\"action.fileSelected($event)\"\n (error)=\"action.fileError($event)\"\n (clicked)=\"action.click($event)\">\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon> {{action.label}}\n </fs-file>\n </ng-template>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <ng-template fs-menu-item\n (click)=\"action.click($event)\"\n [fsClass]=\"action.classArray\"\n >\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon> {{action.label}}\n </ng-template>\n </ng-container>\n\n </ng-container>\n </ng-container>\n</fs-menu>\n",
13
13
  changeDetection: ChangeDetectionStrategy.OnPush,
14
14
  styles: [".menu-button{width:36px;height:36px;line-height:36px}"]
15
15
  })
16
16
  ], FsFilterActionKebabActionsComponent);
17
17
  export { FsFilterActionKebabActionsComponent };
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWtlYmFiLWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZpcmVzdGl0Y2gvZmlsdGVyLyIsInNvdXJjZXMiOlsiYXBwL2NvbXBvbmVudHMvYWN0aW9uLWtlYmFiLWFjdGlvbnMvYWN0aW9uLWtlYmFiLWFjdGlvbnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVUxRSxJQUFhLG1DQUFtQyxHQUFoRCxNQUFhLG1DQUFtQztDQUsvQyxDQUFBO0FBRkM7SUFEQyxLQUFLLEVBQUU7O3lFQUNzQjtBQUhuQixtQ0FBbUM7SUFOL0MsU0FBUyxDQUFDO1FBQ1QsUUFBUSxFQUFFLGdDQUFnQztRQUUxQywrOEVBQW9EO1FBQ3BELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOztLQUNoRCxDQUFDO0dBQ1csbUNBQW1DLENBSy9DO1NBTFksbUNBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9hY3Rpb24ubW9kZWwnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLWZpbHRlci1hY3Rpb24ta2ViYWItYWN0aW9ucycsXG4gIHN0eWxlVXJsczogWycuL2FjdGlvbi1rZWJhYi1hY3Rpb25zLmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb24ta2ViYWItYWN0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGc0ZpbHRlckFjdGlvbktlYmFiQWN0aW9uc0NvbXBvbmVudCB7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGtlYmFiQWN0aW9uczogQWN0aW9uW107XG5cbn1cbiJdfQ==
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWtlYmFiLWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZpcmVzdGl0Y2gvZmlsdGVyLyIsInNvdXJjZXMiOlsiYXBwL2NvbXBvbmVudHMvYWN0aW9uLWtlYmFiLWFjdGlvbnMvYWN0aW9uLWtlYmFiLWFjdGlvbnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVUxRSxJQUFhLG1DQUFtQyxHQUFoRCxNQUFhLG1DQUFtQztDQUsvQyxDQUFBO0FBRkM7SUFEQyxLQUFLLEVBQUU7O3lFQUNzQjtBQUhuQixtQ0FBbUM7SUFOL0MsU0FBUyxDQUFDO1FBQ1QsUUFBUSxFQUFFLGdDQUFnQztRQUUxQyxnZ0dBQW9EO1FBQ3BELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOztLQUNoRCxDQUFDO0dBQ1csbUNBQW1DLENBSy9DO1NBTFksbUNBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9hY3Rpb24ubW9kZWwnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLWZpbHRlci1hY3Rpb24ta2ViYWItYWN0aW9ucycsXG4gIHN0eWxlVXJsczogWycuL2FjdGlvbi1rZWJhYi1hY3Rpb25zLmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb24ta2ViYWItYWN0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGc0ZpbHRlckFjdGlvbktlYmFiQWN0aW9uc0NvbXBvbmVudCB7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGtlYmFiQWN0aW9uczogQWN0aW9uW107XG5cbn1cbiJdfQ==
@@ -5,7 +5,7 @@ import { ItemType } from '../../enums/item-type.enum';
5
5
  export class BaseItem {
6
6
  constructor(itemConfig, _additionalConfig) {
7
7
  this._additionalConfig = _additionalConfig;
8
- this._initialized = false;
8
+ // protected _initialized = false;
9
9
  this._pendingValues = false;
10
10
  this._pendingDefaultValue = false;
11
11
  this._loading$ = new BehaviorSubject(false);
@@ -104,6 +104,9 @@ export class BaseItem {
104
104
  set loading(value) {
105
105
  this._loading$.next(value);
106
106
  }
107
+ get _initialized() {
108
+ return !this._pendingDefaultValue && !this._pendingValues;
109
+ }
107
110
  valueChanged() {
108
111
  this._value$.next(this.value);
109
112
  if (this.change) {
@@ -129,15 +132,17 @@ export class BaseItem {
129
132
  return this.queryObject;
130
133
  }
131
134
  loadDefaultValue() {
135
+ this._pendingDefaultValue = true;
132
136
  return this.defaultValueFn()
133
137
  .pipe(tap((value) => {
134
138
  this.defaultValue = value;
139
+ this._initDefaultModel();
135
140
  }), finalize(() => {
136
141
  this._pendingDefaultValue = false;
137
142
  }));
138
143
  }
139
144
  initValues(persistedValue) {
140
- this._initialized = false;
145
+ // this._initialized = false;
141
146
  this.persistedValue = persistedValue;
142
147
  this._initDefaultModel();
143
148
  const isAutocomplete = this.type === ItemType.AutoComplete || this.type === ItemType.AutoCompleteChips;
@@ -150,12 +155,12 @@ export class BaseItem {
150
155
  this.values = valuesResult;
151
156
  // Move to some other place
152
157
  this._init();
153
- this._initialized = true;
158
+ // this._initialized = true;
154
159
  }
155
160
  }
156
161
  else {
157
162
  this._init();
158
- this._initialized = true;
163
+ // this._initialized = true;
159
164
  }
160
165
  }
161
166
  loadAsyncValues(reload = true) {
@@ -169,7 +174,7 @@ export class BaseItem {
169
174
  this.loading = false;
170
175
  this._init();
171
176
  this._validateModel();
172
- this._initialized = true;
177
+ // this._initialized = true;
173
178
  });
174
179
  }
175
180
  }
@@ -200,7 +205,6 @@ export class BaseItem {
200
205
  this.label = item.label;
201
206
  this.chipLabel = item.chipLabel;
202
207
  if (typeof item.default === 'function') {
203
- this._pendingDefaultValue = true;
204
208
  this.defaultValueFn = item.default;
205
209
  }
206
210
  else {
@@ -230,4 +234,4 @@ export class BaseItem {
230
234
  this.model = defaultValue !== null && defaultValue !== void 0 ? defaultValue : null;
231
235
  }
232
236
  }
233
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1pdGVtLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZpcmVzdGl0Y2gvZmlsdGVyLyIsInNvdXJjZXMiOlsiYXBwL21vZGVscy9pdGVtcy9iYXNlLWl0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUUsT0FBTyxFQUNMLFFBQVEsRUFDUixJQUFJLEVBQ0osU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQU10RCxNQUFNLE9BQWdCLFFBQVE7SUFvQzVCLFlBQ0UsVUFBYSxFQUNILGlCQUEwQjtRQUExQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQVM7UUFmNUIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQzdCLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ3BDLGFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUdyQyxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVsQyxZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQU12QyxJQUFJLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBSUQsR0FBRztJQUNILElBQVcsa0JBQWtCO1FBQzNC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QUFHLElBQUksQ0FBQyxjQUFjLG1DQUFJLElBQUksQ0FBQyxZQUFZLENBQUM7UUFFdkQsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUVTLFdBQVcsQ0FBQyxlQUF3QixTQUFTO1FBQ3JELElBQUksQ0FBQyxLQUFLLEdBQUcsWUFBWSxhQUFaLFlBQVksY0FBWixZQUFZLEdBQUksSUFBSSxDQUFDO0lBQ3BDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRnVuY3Rpb24gfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGlzT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZmluYWxpemUsXG4gIHRha2UsXG4gIHRha2VVbnRpbCxcbiAgdGFwLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEl0ZW1UeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMvaXRlbS10eXBlLmVudW0nO1xuXG5pbXBvcnQgeyBJRmlsdGVyQ29uZmlnQmFzZUl0ZW0sIElGaWx0ZXJEZWZhdWx0Rm4gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2l0ZW1zL2Jhc2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IElGaWx0ZXJJdGVtRGVmYXVsdFJhbmdlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9pdGVtcy9yYW5nZS5pbnRlcmZhY2UnO1xuXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlSXRlbTxUIGV4dGVuZHMgSUZpbHRlckNvbmZpZ0Jhc2VJdGVtPiB7XG5cbiAgLy8gQ29uZmlndXJhYmxlIHByb3BlcnRpZXNcblxuICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgbGFiZWw6IHN0cmluZyB8IHN0cmluZ1tdO1xuICBwdWJsaWMgY2hpcExhYmVsOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgcHVibGljIGhpZGU6IGJvb2xlYW47XG4gIHB1YmxpYyBkZWZhdWx0VmFsdWU6IGFueSB8IElGaWx0ZXJJdGVtRGVmYXVsdFJhbmdlO1xuICBwdWJsaWMgZGVmYXVsdFZhbHVlRm46IElGaWx0ZXJEZWZhdWx0Rm47XG4gIHB1YmxpYyBwZXJzaXN0ZWRWYWx1ZTogdW5rbm93bjtcbiAgcHVibGljIGNsZWFyQWxsb3dlZDogYm9vbGVhbjtcblxuICBwdWJsaWMgcGVyc2lzdGFuY2VEaXNhYmxlZDogYm9vbGVhbjtcbiAgcHVibGljIHF1ZXJ5UGFyYW1zRGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgLy8gSW50ZXJuYWwgcHJvcGVydGllc1xuXG4gIHB1YmxpYyBjaGFuZ2U6IChpdGVtOiBCYXNlSXRlbTxUPikgPT4gdm9pZDtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3R5cGU6IFRbJ3R5cGUnXTtcblxuICBwcm90ZWN0ZWQgX21vZGVsOiBhbnk7XG4gIHByb3RlY3RlZCBfaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIF9wZW5kaW5nVmFsdWVzID0gZmFsc2U7XG4gIHByb3RlY3RlZCBfcGVuZGluZ0RlZmF1bHRWYWx1ZSA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgX2xvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByb3RlY3RlZCBfdmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcbiAgcHJvdGVjdGVkIF92YWx1ZUNoYW5nZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcm90ZWN0ZWQgX3ZhbHVlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuICBwcm90ZWN0ZWQgX3ZhbHVlc0ZuOiAocXVlcnk/OiBzdHJpbmcpID0+IE9ic2VydmFibGU8dW5rbm93bj4gfCB1bmtub3duO1xuXG4gIHByb3RlY3RlZCBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgX2NsZWFyJCA9IG5ldyBTdWJqZWN0PHVua25vd24+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgaXRlbUNvbmZpZzogVCxcbiAgICBwcm90ZWN0ZWQgX2FkZGl0aW9uYWxDb25maWc6IHVua25vd25cbiAgKSB7XG4gICAgdGhpcy5fdHlwZSA9IGl0ZW1Db25maWcudHlwZTtcbiAgICB0aGlzLl9wYXJzZUNvbmZpZyhpdGVtQ29uZmlnKTtcbiAgfVxuXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXQgdmFsdWUoKTtcblxuICAvLy9cbiAgcHVibGljIGdldCBpc1R5cGVBdXRvY29tcGxldGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gSXRlbVR5cGUuQXV0b0NvbXBsZXRlO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1R5cGVBdXRvY29tcGxldGVDaGlwcygpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBJdGVtVHlwZS5BdXRvQ29tcGxldGVDaGlwcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNUeXBlQ2hpcHMoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gSXRlbVR5cGUuQ2hpcHM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzVHlwZUNoZWNrYm94KCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09IEl0ZW1UeXBlLkNoZWNrYm94O1xuICB9XG5cbiAgcHVibGljIGdldCBpc1R5cGVTZWxlY3QoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gSXRlbVR5cGUuU2VsZWN0O1xuICB9XG5cbiAgcHVibGljIGdldCBpc1R5cGVEYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09IEl0ZW1UeXBlLkRhdGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzVHlwZURhdGVSYW5nZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBJdGVtVHlwZS5EYXRlUmFuZ2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzVHlwZVJhbmdlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09IEl0ZW1UeXBlLlJhbmdlO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1R5cGVEYXRlVGltZVJhbmdlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09IEl0ZW1UeXBlLkRhdGVUaW1lUmFuZ2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzVHlwZURhdGVUaW1lKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09IEl0ZW1UeXBlLkRhdGVUaW1lO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1R5cGVLZXl3b3JkKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09IEl0ZW1UeXBlLktleXdvcmQ7XG4gIH1cbiAgLy8vL1xuXG4gIHB1YmxpYyBnZXQgaXNDaGlwVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLm1vZGVsO1xuICB9XG5cbiAgcHVibGljIGdldCBkZXN0cm95JCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVzdHJveSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHR5cGUoKTogVFsndHlwZSddIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzUGVuZGluZ1ZhbHVlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZ1ZhbHVlcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzUGVuZGluZ0RlZmF1bHRWYWx1ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZ0RlZmF1bHRWYWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbW9kZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21vZGVsO1xuICB9XG5cbiAgcHVibGljIHNldCBtb2RlbCh2YWx1ZSkge1xuICAgIHRoaXMuX3NldE1vZGVsKHZhbHVlKTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlZCgpO1xuICB9XG5cbiAgcHVibGljIHNldCB2YWx1ZXModmFsdWVzKSB7XG4gICAgdGhpcy5fdmFsdWVzJC5uZXh0KHZhbHVlcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZhbHVlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWVzJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZXMkKCk6IE9ic2VydmFibGU8dW5rbm93bj4ge1xuICAgIHJldHVybiAgdGhpcy5fdmFsdWVzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWVDaGFuZ2UkKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZUNoYW5nZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZhbHVlJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWUkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBjbGVhciQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NsZWFyJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW5pdGlhbGl6ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2luaXRpYWxpemVkO1xuICB9XG5cbiAgcHVibGljIGdldCBsb2FkaW5nJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fbG9hZGluZyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2xvYWRpbmckLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0IGxvYWRpbmcodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9sb2FkaW5nJC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyB2YWx1ZUNoYW5nZWQoKSB7XG4gICAgdGhpcy5fdmFsdWUkLm5leHQodGhpcy52YWx1ZSk7XG5cbiAgICBpZiAodGhpcy5jaGFuZ2UpIHtcbiAgICAgIHRoaXMuY2hhbmdlKHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLl92YWx1ZUNoYW5nZSQubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgcXVlcnlPYmplY3QoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5uYW1lO1xuICAgIGNvbnN0IHBhcmFtcyA9IHt9O1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICBwYXJhbXNbdGhpcy5uYW1lXSA9IHZhbHVlLmpvaW4oJywnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFyYW1zW25hbWVdID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGVyc2lzdGFuY2VPYmplY3QoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLnF1ZXJ5T2JqZWN0O1xuICB9XG5cbiAgcHVibGljIGxvYWREZWZhdWx0VmFsdWUoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0VmFsdWVGbigpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuZGVmYXVsdFZhbHVlID0gdmFsdWU7XG4gICAgICAgIH0pLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fcGVuZGluZ0RlZmF1bHRWYWx1ZSA9IGZhbHNlO1xuICAgICAgICB9KVxuICAgICAgKVxuICB9XG5cbiAgcHVibGljIGluaXRWYWx1ZXMocGVyc2lzdGVkVmFsdWU6IHVua25vd24pIHtcbiAgICB0aGlzLl9pbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIHRoaXMucGVyc2lzdGVkVmFsdWUgPSBwZXJzaXN0ZWRWYWx1ZTtcbiAgICB0aGlzLl9pbml0RGVmYXVsdE1vZGVsKCk7XG5cbiAgICBjb25zdCBpc0F1dG9jb21wbGV0ZSA9IHRoaXMudHlwZSA9PT0gSXRlbVR5cGUuQXV0b0NvbXBsZXRlIHx8IHRoaXMudHlwZSA9PT0gSXRlbVR5cGUuQXV0b0NvbXBsZXRlQ2hpcHM7XG5cbiAgICBpZiAodGhpcy5fdmFsdWVzRm4gJiYgIWlzQXV0b2NvbXBsZXRlKSB7XG4gICAgICBjb25zdCB2YWx1ZXNSZXN1bHQgPSB0aGlzLl92YWx1ZXNGbigpO1xuXG4gICAgICBpZiAoaXNPYnNlcnZhYmxlKHZhbHVlc1Jlc3VsdCkpIHtcbiAgICAgICAgdGhpcy5fcGVuZGluZ1ZhbHVlcyA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnZhbHVlcyA9IHZhbHVlc1Jlc3VsdDtcblxuICAgICAgICAvLyBNb3ZlIHRvIHNvbWUgb3RoZXIgcGxhY2VcbiAgICAgICAgdGhpcy5faW5pdCgpO1xuICAgICAgICB0aGlzLl9pbml0aWFsaXplZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5faW5pdCgpO1xuICAgICAgdGhpcy5faW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsb2FkQXN5bmNWYWx1ZXMocmVsb2FkID0gdHJ1ZSkge1xuICAgIGlmIChyZWxvYWQgfHwgKCF0aGlzLmxvYWRpbmcgJiYgdGhpcy5oYXNQZW5kaW5nVmFsdWVzKSkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcblxuICAgICAgKHRoaXMuX3ZhbHVlc0ZuKCkgYXMgT2JzZXJ2YWJsZTx1bmtub3duPilcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgodmFsdWVzKSA9PiB7XG4gICAgICAgICAgdGhpcy52YWx1ZXMgPSB2YWx1ZXM7XG4gICAgICAgICAgdGhpcy5fcGVuZGluZ1ZhbHVlcyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2luaXQoKTtcbiAgICAgICAgICB0aGlzLl92YWxpZGF0ZU1vZGVsKCk7XG4gICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICB9KTtcblxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbGVhcihkZWZhdWx0VmFsdWU6IHVua25vd24gPSB1bmRlZmluZWQpIHtcbiAgICBpZiAodGhpcy5pc1R5cGVSYW5nZSB8fCB0aGlzLmlzVHlwZURhdGVSYW5nZSB8fCB0aGlzLmlzVHlwZURhdGVUaW1lUmFuZ2UpIHtcbiAgICAgIGNvbnNvbGUud2FybihgXG4gICAgICAgIEZpbHRlciAke3RoaXMubmFtZX0gY2FuIG5vdCBiZSBjbGVhcmVkIHdpdGggLmNsZWFyKCkgbWV0aG9kIVxuICAgICAgICBVc2Ugc3BlY2lhbCAuY2xlYXJSYW5nZSgpIG9yIGNsZWFyRGF0ZVJhbmdlKCkgaW5zdGVhZC5cbiAgICAgIGApXG4gICAgfVxuXG4gICAgdGhpcy5fY2xlYXIkLm5leHQoZGVmYXVsdFZhbHVlKTtcbiAgICB0aGlzLl9jbGVhclZhbHVlKGRlZmF1bHRWYWx1ZSk7XG4gIH07XG5cbiAgcHVibGljIGdldENoaXBzQ29udGVudCh0eXBlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuXG4gIHB1YmxpYyBkZXN0cm95KCkge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IF9pbml0KCk7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBfdmFsaWRhdGVNb2RlbCgpO1xuXG4gIHByb3RlY3RlZCBfc2V0TW9kZWwodmFsdWUpIHtcbiAgICB0aGlzLl9tb2RlbCA9IHZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9wYXJzZUNvbmZpZyhpdGVtOiBUKSB7XG4gICAgdGhpcy5uYW1lID0gaXRlbS5uYW1lO1xuICAgIHRoaXMubGFiZWwgPSBpdGVtLmxhYmVsO1xuICAgIHRoaXMuY2hpcExhYmVsID0gaXRlbS5jaGlwTGFiZWw7XG5cbiAgICBpZiAodHlwZW9mIGl0ZW0uZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5fcGVuZGluZ0RlZmF1bHRWYWx1ZSA9IHRydWU7XG4gICAgICB0aGlzLmRlZmF1bHRWYWx1ZUZuID0gaXRlbS5kZWZhdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IGl0ZW0uZGVmYXVsdDtcbiAgICB9XG5cbiAgICB0aGlzLmNoYW5nZSA9IGl0ZW0uY2hhbmdlO1xuICAgIHRoaXMuaGlkZSA9IGl0ZW0uaGlkZTtcbiAgICB0aGlzLmNsZWFyQWxsb3dlZCA9IGl0ZW0uY2xlYXIgPz8gdHJ1ZTtcbiAgICB0aGlzLnBlcnNpc3RhbmNlRGlzYWJsZWQgPSBpdGVtLmRpc2FibGVQZXJzaXN0ID8/IGZhbHNlO1xuICAgIHRoaXMucXVlcnlQYXJhbXNEaXNhYmxlZCA9IGl0ZW0uZGlzYWJsZVF1ZXJ5UGFyYW1zID8/IGZhbHNlO1xuXG4gICAgaWYgKGlzRnVuY3Rpb24oaXRlbS52YWx1ZXMpKSB7XG4gICAgICB0aGlzLl92YWx1ZXNGbiA9IGl0ZW0udmFsdWVzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlcyA9IGl0ZW0udmFsdWVzO1xuICAgIH1cbiAgfTtcblxuICBwcm90ZWN0ZWQgX2luaXREZWZhdWx0TW9kZWwoKSB7XG4gICAgY29uc3QgbW9kZWwgPSB0aGlzLnBlcnNpc3RlZFZhbHVlID8/IHRoaXMuZGVmYXVsdFZhbHVlO1xuXG4gICAgaWYgKG1vZGVsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubW9kZWwgPSBtb2RlbDtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX2NsZWFyVmFsdWUoZGVmYXVsdFZhbHVlOiB1bmtub3duID0gdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5tb2RlbCA9IGRlZmF1bHRWYWx1ZSA/PyBudWxsO1xuICB9XG59XG4iXX0=
237
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1pdGVtLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZpcmVzdGl0Y2gvZmlsdGVyLyIsInNvdXJjZXMiOlsiYXBwL21vZGVscy9pdGVtcy9iYXNlLWl0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUUsT0FBTyxFQUNMLFFBQVEsRUFDUixJQUFJLEVBQ0osU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQU10RCxNQUFNLE9BQWdCLFFBQVE7SUFvQzVCLFlBQ0UsVUFBYSxFQUNILGlCQUEwQjtRQUExQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQVM7UUFmdEMsa0NBQWtDO1FBQ3hCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUM3QixjQUFTLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNwQyxhQUFRLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFHckMsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFbEMsWUFBTyxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFNdkMsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUlELEdBQUc7SUFDSCxJQUFXLGtCQUFrQjtRQUMzQixPQUFPLElBQUksQ0FB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QUN6QixNQUFNLEtBQUssU0FBRyxJQUFJLENBQUMsY0FBYyxtQ0FBSSxJQUFJLENBQUMsWUFBWSxDQUFDO1FBRXZELElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztTQUNwQjtJQUNILENBQUM7SUFFUyxXQUFXLENBQUMsZUFBd0IsU0FBUztRQUNyRCxJQUFJLENBQUMsS0FBSyxHQUFHLFlBQVksYUFBWixZQUFZLGNBQVosWUFBWSxHQUFJLElBQUksQ0FBQztJQUNwQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0Z1bmN0aW9uIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBpc09ic2VydmFibGUsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGZpbmFsaXplLFxuICB0YWtlLFxuICB0YWtlVW50aWwsXG4gIHRhcCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBJdGVtVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zL2l0ZW0tdHlwZS5lbnVtJztcblxuaW1wb3J0IHsgSUZpbHRlckNvbmZpZ0Jhc2VJdGVtLCBJRmlsdGVyRGVmYXVsdEZuIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9pdGVtcy9iYXNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJRmlsdGVySXRlbURlZmF1bHRSYW5nZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvaXRlbXMvcmFuZ2UuaW50ZXJmYWNlJztcblxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUl0ZW08VCBleHRlbmRzIElGaWx0ZXJDb25maWdCYXNlSXRlbT4ge1xuXG4gIC8vIENvbmZpZ3VyYWJsZSBwcm9wZXJ0aWVzXG5cbiAgcHVibGljIG5hbWU6IHN0cmluZztcbiAgcHVibGljIGxhYmVsOiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgcHVibGljIGNoaXBMYWJlbDogc3RyaW5nIHwgc3RyaW5nW107XG4gIHB1YmxpYyBoaWRlOiBib29sZWFuO1xuICBwdWJsaWMgZGVmYXVsdFZhbHVlOiBhbnkgfCBJRmlsdGVySXRlbURlZmF1bHRSYW5nZTtcbiAgcHVibGljIGRlZmF1bHRWYWx1ZUZuOiBJRmlsdGVyRGVmYXVsdEZuO1xuICBwdWJsaWMgcGVyc2lzdGVkVmFsdWU6IHVua25vd247XG4gIHB1YmxpYyBjbGVhckFsbG93ZWQ6IGJvb2xlYW47XG5cbiAgcHVibGljIHBlcnNpc3RhbmNlRGlzYWJsZWQ6IGJvb2xlYW47XG4gIHB1YmxpYyBxdWVyeVBhcmFtc0Rpc2FibGVkOiBib29sZWFuO1xuXG4gIC8vIEludGVybmFsIHByb3BlcnRpZXNcblxuICBwdWJsaWMgY2hhbmdlOiAoaXRlbTogQmFzZUl0ZW08VD4pID0+IHZvaWQ7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF90eXBlOiBUWyd0eXBlJ107XG5cbiAgcHJvdGVjdGVkIF9tb2RlbDogYW55O1xuICAvLyBwcm90ZWN0ZWQgX2luaXRpYWxpemVkID0gZmFsc2U7XG4gIHByb3RlY3RlZCBfcGVuZGluZ1ZhbHVlcyA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgX3BlbmRpbmdEZWZhdWx0VmFsdWUgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIF9sb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcm90ZWN0ZWQgX3ZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG4gIHByb3RlY3RlZCBfdmFsdWVDaGFuZ2UkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJvdGVjdGVkIF92YWx1ZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcbiAgcHJvdGVjdGVkIF92YWx1ZXNGbjogKHF1ZXJ5Pzogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPHVua25vd24+IHwgdW5rbm93bjtcblxuICBwcm90ZWN0ZWQgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIF9jbGVhciQgPSBuZXcgU3ViamVjdDx1bmtub3duPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGl0ZW1Db25maWc6IFQsXG4gICAgcHJvdGVjdGVkIF9hZGRpdGlvbmFsQ29uZmlnOiB1bmtub3duXG4gICkge1xuICAgIHRoaXMuX3R5cGUgPSBpdGVtQ29uZmlnLnR5cGU7XG4gICAgdGhpcy5fcGFyc2VDb25maWcoaXRlbUNvbmZpZyk7XG4gIH1cblxuICBwdWJsaWMgYWJzdHJhY3QgZ2V0IHZhbHVlKCk7XG5cbiAgLy8vXG4gIHB1YmxpYyBnZXQgaXNUeXBlQXV0b2NvbXBsZXRlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09IEl0ZW1UeXBlLkF1dG9Db21wbGV0ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNUeXBlQXV0b2NvbXBsZXRlQ2hpcHMoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gSXRlbVR5cGUuQXV0b0NvbXBsZXRlQ2hpcHM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzVHlwZUNoaXBzKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09IEl0ZW1UeXBlLkNoaXBzO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1R5cGVDaGVja2JveCgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBJdGVtVHlwZS5DaGVja2JveDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNUeXBlU2VsZWN0KCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09IEl0ZW1UeXBlLlNlbGVjdDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNUeXBlRGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBJdGVtVHlwZS5EYXRlO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1R5cGVEYXRlUmFuZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gSXRlbVR5cGUuRGF0ZVJhbmdlO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1R5cGVSYW5nZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBJdGVtVHlwZS5SYW5nZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNUeXBlRGF0ZVRpbWVSYW5nZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBJdGVtVHlwZS5EYXRlVGltZVJhbmdlO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1R5cGVEYXRlVGltZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBJdGVtVHlwZS5EYXRlVGltZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNUeXBlS2V5d29yZCgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBJdGVtVHlwZS5LZXl3b3JkO1xuICB9XG4gIC8vLy9cblxuICBwdWJsaWMgZ2V0IGlzQ2hpcFZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5tb2RlbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGVzdHJveSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rlc3Ryb3kkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCB0eXBlKCk6IFRbJ3R5cGUnXSB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc1BlbmRpbmdWYWx1ZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdWYWx1ZXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc1BlbmRpbmdEZWZhdWx0VmFsdWUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdEZWZhdWx0VmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1vZGVsKCkge1xuICAgIHJldHVybiB0aGlzLl9tb2RlbDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgbW9kZWwodmFsdWUpIHtcbiAgICB0aGlzLl9zZXRNb2RlbCh2YWx1ZSk7XG4gICAgdGhpcy52YWx1ZUNoYW5nZWQoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgdmFsdWVzKHZhbHVlcykge1xuICAgIHRoaXMuX3ZhbHVlcyQubmV4dCh2YWx1ZXMpO1xuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlcyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWVzJCgpOiBPYnNlcnZhYmxlPHVua25vd24+IHtcbiAgICByZXR1cm4gIHRoaXMuX3ZhbHVlcyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZhbHVlQ2hhbmdlJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWVDaGFuZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2xlYXIkKCkge1xuICAgIHJldHVybiB0aGlzLl9jbGVhciQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGluaXRpYWxpemVkKCkge1xuICAgIHJldHVybiB0aGlzLl9pbml0aWFsaXplZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbG9hZGluZyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2xvYWRpbmckLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBsb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9sb2FkaW5nJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIHNldCBsb2FkaW5nKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fbG9hZGluZyQubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IF9pbml0aWFsaXplZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuX3BlbmRpbmdEZWZhdWx0VmFsdWUgJiYgIXRoaXMuX3BlbmRpbmdWYWx1ZXM7XG4gIH1cblxuICBwdWJsaWMgdmFsdWVDaGFuZ2VkKCkge1xuICAgIHRoaXMuX3ZhbHVlJC5uZXh0KHRoaXMudmFsdWUpO1xuXG4gICAgaWYgKHRoaXMuY2hhbmdlKSB7XG4gICAgICB0aGlzLmNoYW5nZSh0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgdGhpcy5fdmFsdWVDaGFuZ2UkLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHF1ZXJ5T2JqZWN0KCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMubmFtZTtcbiAgICBjb25zdCBwYXJhbXMgPSB7fTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgcGFyYW1zW3RoaXMubmFtZV0gPSB2YWx1ZS5qb2luKCcsJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcmFtc1tuYW1lXSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBlcnNpc3RhbmNlT2JqZWN0KCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeU9iamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkRGVmYXVsdFZhbHVlKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgdGhpcy5fcGVuZGluZ0RlZmF1bHRWYWx1ZSA9IHRydWU7XG5cbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0VmFsdWVGbigpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuZGVmYXVsdFZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgICB0aGlzLl9pbml0RGVmYXVsdE1vZGVsKCk7XG4gICAgICAgIH0pLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fcGVuZGluZ0RlZmF1bHRWYWx1ZSA9IGZhbHNlO1xuICAgICAgICB9KVxuICAgICAgKVxuICB9XG5cbiAgcHVibGljIGluaXRWYWx1ZXMocGVyc2lzdGVkVmFsdWU6IHVua25vd24pIHtcbiAgICAvLyB0aGlzLl9pbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIHRoaXMucGVyc2lzdGVkVmFsdWUgPSBwZXJzaXN0ZWRWYWx1ZTtcbiAgICB0aGlzLl9pbml0RGVmYXVsdE1vZGVsKCk7XG5cbiAgICBjb25zdCBpc0F1dG9jb21wbGV0ZSA9IHRoaXMudHlwZSA9PT0gSXRlbVR5cGUuQXV0b0NvbXBsZXRlIHx8IHRoaXMudHlwZSA9PT0gSXRlbVR5cGUuQXV0b0NvbXBsZXRlQ2hpcHM7XG5cbiAgICBpZiAodGhpcy5fdmFsdWVzRm4gJiYgIWlzQXV0b2NvbXBsZXRlKSB7XG4gICAgICBjb25zdCB2YWx1ZXNSZXN1bHQgPSB0aGlzLl92YWx1ZXNGbigpO1xuXG4gICAgICBpZiAoaXNPYnNlcnZhYmxlKHZhbHVlc1Jlc3VsdCkpIHtcbiAgICAgICAgdGhpcy5fcGVuZGluZ1ZhbHVlcyA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnZhbHVlcyA9IHZhbHVlc1Jlc3VsdDtcblxuICAgICAgICAvLyBNb3ZlIHRvIHNvbWUgb3RoZXIgcGxhY2VcbiAgICAgICAgdGhpcy5faW5pdCgpO1xuICAgICAgICAvLyB0aGlzLl9pbml0aWFsaXplZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5faW5pdCgpO1xuICAgICAgLy8gdGhpcy5faW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsb2FkQXN5bmNWYWx1ZXMocmVsb2FkID0gdHJ1ZSkge1xuICAgIGlmIChyZWxvYWQgfHwgKCF0aGlzLmxvYWRpbmcgJiYgdGhpcy5oYXNQZW5kaW5nVmFsdWVzKSkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcblxuICAgICAgKHRoaXMuX3ZhbHVlc0ZuKCkgYXMgT2JzZXJ2YWJsZTx1bmtub3duPilcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgodmFsdWVzKSA9PiB7XG4gICAgICAgICAgdGhpcy52YWx1ZXMgPSB2YWx1ZXM7XG4gICAgICAgICAgdGhpcy5fcGVuZGluZ1ZhbHVlcyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2luaXQoKTtcbiAgICAgICAgICB0aGlzLl92YWxpZGF0ZU1vZGVsKCk7XG4gICAgICAgICAgLy8gdGhpcy5faW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICB9KTtcblxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbGVhcihkZWZhdWx0VmFsdWU6IHVua25vd24gPSB1bmRlZmluZWQpIHtcbiAgICBpZiAodGhpcy5pc1R5cGVSYW5nZSB8fCB0aGlzLmlzVHlwZURhdGVSYW5nZSB8fCB0aGlzLmlzVHlwZURhdGVUaW1lUmFuZ2UpIHtcbiAgICAgIGNvbnNvbGUud2FybihgXG4gICAgICAgIEZpbHRlciAke3RoaXMubmFtZX0gY2FuIG5vdCBiZSBjbGVhcmVkIHdpdGggLmNsZWFyKCkgbWV0aG9kIVxuICAgICAgICBVc2Ugc3BlY2lhbCAuY2xlYXJSYW5nZSgpIG9yIGNsZWFyRGF0ZVJhbmdlKCkgaW5zdGVhZC5cbiAgICAgIGApXG4gICAgfVxuXG4gICAgdGhpcy5fY2xlYXIkLm5leHQoZGVmYXVsdFZhbHVlKTtcbiAgICB0aGlzLl9jbGVhclZhbHVlKGRlZmF1bHRWYWx1ZSk7XG4gIH07XG5cbiAgcHVibGljIGdldENoaXBzQ29udGVudCh0eXBlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuXG4gIHB1YmxpYyBkZXN0cm95KCkge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IF9pbml0KCk7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBfdmFsaWRhdGVNb2RlbCgpO1xuXG4gIHByb3RlY3RlZCBfc2V0TW9kZWwodmFsdWUpIHtcbiAgICB0aGlzLl9tb2RlbCA9IHZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9wYXJzZUNvbmZpZyhpdGVtOiBUKSB7XG4gICAgdGhpcy5uYW1lID0gaXRlbS5uYW1lO1xuICAgIHRoaXMubGFiZWwgPSBpdGVtLmxhYmVsO1xuICAgIHRoaXMuY2hpcExhYmVsID0gaXRlbS5jaGlwTGFiZWw7XG5cbiAgICBpZiAodHlwZW9mIGl0ZW0uZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5kZWZhdWx0VmFsdWVGbiA9IGl0ZW0uZGVmYXVsdDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZWZhdWx0VmFsdWUgPSBpdGVtLmRlZmF1bHQ7XG4gICAgfVxuXG4gICAgdGhpcy5jaGFuZ2UgPSBpdGVtLmNoYW5nZTtcbiAgICB0aGlzLmhpZGUgPSBpdGVtLmhpZGU7XG4gICAgdGhpcy5jbGVhckFsbG93ZWQgPSBpdGVtLmNsZWFyID8/IHRydWU7XG4gICAgdGhpcy5wZXJzaXN0YW5jZURpc2FibGVkID0gaXRlbS5kaXNhYmxlUGVyc2lzdCA/PyBmYWxzZTtcbiAgICB0aGlzLnF1ZXJ5UGFyYW1zRGlzYWJsZWQgPSBpdGVtLmRpc2FibGVRdWVyeVBhcmFtcyA/PyBmYWxzZTtcblxuICAgIGlmIChpc0Z1bmN0aW9uKGl0ZW0udmFsdWVzKSkge1xuICAgICAgdGhpcy5fdmFsdWVzRm4gPSBpdGVtLnZhbHVlcztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZXMgPSBpdGVtLnZhbHVlcztcbiAgICB9XG4gIH07XG5cbiAgcHJvdGVjdGVkIF9pbml0RGVmYXVsdE1vZGVsKCkge1xuICAgIGNvbnN0IG1vZGVsID0gdGhpcy5wZXJzaXN0ZWRWYWx1ZSA/PyB0aGlzLmRlZmF1bHRWYWx1ZTtcblxuICAgIGlmIChtb2RlbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLm1vZGVsID0gbW9kZWw7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIF9jbGVhclZhbHVlKGRlZmF1bHRWYWx1ZTogdW5rbm93biA9IHVuZGVmaW5lZCkge1xuICAgIHRoaXMubW9kZWwgPSBkZWZhdWx0VmFsdWUgPz8gbnVsbDtcbiAgfVxufVxuIl19
@@ -2,7 +2,7 @@ import { __decorate, __metadata } from "tslib";
2
2
  import { Injectable } from '@angular/core';
3
3
  import { ActivatedRoute } from '@angular/router';
4
4
  import { BehaviorSubject, of, Subject } from 'rxjs';
5
- import { filter, switchMap, takeUntil } from 'rxjs/operators';
5
+ import { filter, switchMap, take, takeUntil } from 'rxjs/operators';
6
6
  import { FsFilterItemsStore } from './items-store.service';
7
7
  import { PersistanceParamsController } from './external-params/persistance-params-controller.service';
8
8
  import { QueryParamsController } from './external-params/query-params-controller.service';
@@ -99,6 +99,12 @@ let ExternalParamsController = class ExternalParamsController {
99
99
  this._savedFilters.init(this._config.savedFilters, this._config.case);
100
100
  }
101
101
  _listenItemsChange() {
102
+ this._itemsStore.ready$
103
+ .pipe(filter((v) => v), take(1), takeUntil(this._destroy$))
104
+ .subscribe(() => {
105
+ this._saveQueryParams();
106
+ this._savePersistedParams();
107
+ });
102
108
  this._itemsStore
103
109
  .itemsChange$
104
110
  .pipe(takeUntil(this._destroy$))
@@ -156,4 +162,4 @@ ExternalParamsController = __decorate([
156
162
  ActivatedRoute])
157
163
  ], ExternalParamsController);
158
164
  export { ExternalParamsController };
159
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWwtcGFyYW1zLWNvbnRyb2xsZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmaXJlc3RpdGNoL2ZpbHRlci8iLCJzb3VyY2VzIjpbImFwcC9zZXJ2aWNlcy9leHRlcm5hbC1wYXJhbXMtY29udHJvbGxlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsZUFBZSxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJOUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDdEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDMUYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFFNUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFLakUsSUFBYSx3QkFBd0IsR0FBckMsTUFBYSx3QkFBd0I7SUFVbkMsWUFDVSxXQUErQixFQUMvQixpQkFBOEMsRUFDOUMsWUFBbUMsRUFDbkMsYUFBcUMsRUFDckMsTUFBc0I7UUFKdEIsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBQy9CLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBNkI7UUFDOUMsaUJBQVksR0FBWixZQUFZLENBQXVCO1FBQ25DLGtCQUFhLEdBQWIsYUFBYSxDQUF3QjtRQUNyQyxXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQVp0QixjQUFTLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FB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Q0FBQztJQUNwRCxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSzthQUN2QyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFL0MsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDO1lBQzdCLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLEtBQUssRUFBRSxXQUFXO1lBQ2xCLFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUMsRUFDRixXQUFXLENBQ1osQ0FBQztRQUVGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztDQUNGLENBQUE7O1lBaEx3QixrQkFBa0I7WUFDWiwyQkFBMkI7WUFDaEMscUJBQXFCO1lBQ3BCLHNCQUFzQjtZQUM3QixjQUFjOztBQWZyQix3QkFBd0I7SUFEcEMsVUFBVSxFQUFFO3FDQVlZLGtCQUFrQjtRQUNaLDJCQUEyQjtRQUNoQyxxQkFBcUI7UUFDcEIsc0JBQXNCO1FBQzdCLGNBQWM7R0FmckIsd0JBQXdCLENBMkxwQztTQTNMWSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRnNGaWx0ZXJDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvZmlsdGVyLWNvbmZpZyc7XG5cbmltcG9ydCB7IEZzRmlsdGVySXRlbXNTdG9yZSB9IGZyb20gJy4vaXRlbXMtc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBQZXJzaXN0YW5jZVBhcmFtc0NvbnRyb2xsZXIgfSBmcm9tICcuL2V4dGVybmFsLXBhcmFtcy9wZXJzaXN0YW5jZS1wYXJhbXMtY29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IFF1ZXJ5UGFyYW1zQ29udHJvbGxlciB9IGZyb20gJy4vZXh0ZXJuYWwtcGFyYW1zL3F1ZXJ5LXBhcmFtcy1jb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2F2ZWRGaWx0ZXJzQ29udHJvbGxlciB9IGZyb20gJy4vZXh0ZXJuYWwtcGFyYW1zL3NhdmVkLWZpbHRlcnMtY29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IElGaWx0ZXJFeHRlcm5hbFBhcmFtcyB9IGZyb20gJy4uL2ludGVyZmFjZXMvZXh0ZXJuYWwtcGFyYW1zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBidWlsZFF1ZXJ5UGFyYW1zIH0gZnJvbSAnLi4vaGVscGVycy9idWlsZC1xdWVyeS1wYXJhbXMnO1xuaW1wb3J0IHsgSUZpbHRlclNhdmVkRmlsdGVyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zYXZlZC1maWx0ZXJzLmludGVyZmFjZSc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEV4dGVybmFsUGFyYW1zQ29udHJvbGxlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHJvdGVjdGVkIF9pbml0O1xuICBwcm90ZWN0ZWQgX3BlbmRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcHJpdmF0ZSBfc2hvdWxkUmVzZXRTYXZlZEZpbHRlcnMgPSB0cnVlO1xuXG4gIHByaXZhdGUgX2NvbmZpZzogRnNGaWx0ZXJDb25maWc7XG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9pdGVtc1N0b3JlOiBGc0ZpbHRlckl0ZW1zU3RvcmUsXG4gICAgcHJpdmF0ZSBfcGVyc2lzdGFuY2VTdG9yZTogUGVyc2lzdGFuY2VQYXJhbXNDb250cm9sbGVyLFxuICAgIHByaXZhdGUgX3F1ZXJ5UGFyYW1zOiBRdWVyeVBhcmFtc0NvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBfc2F2ZWRGaWx0ZXJzOiBTYXZlZEZpbHRlcnNDb250cm9sbGVyLFxuICAgIHByaXZhdGUgX3JvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgKSB7fVxuXG4gIHB1YmxpYyBnZXQgcGFyYW1zKCk6IElGaWx0ZXJFeHRlcm5hbFBhcmFtcyB7XG4gICAgY29uc3QgcmVzdWx0OiBJRmlsdGVyRXh0ZXJuYWxQYXJhbXMgPSB7fTtcblxuICAgIGlmICh0aGlzLl9wZXJzaXN0YW5jZVN0b3JlLmVuYWxiZWQpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24ocmVzdWx0LCB0aGlzLl9wZXJzaXN0YW5jZVN0b3JlLnZhbHVlPy5kYXRhKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc2F2ZWRGaWx0ZXJzLmVuYWJsZWQgJiYgdGhpcy5fc2F2ZWRGaWx0ZXJzLmFjdGl2ZUZpbHRlcikge1xuICAgICAgT2JqZWN0LmFzc2lnbihyZXN1bHQsIHRoaXMuX3NhdmVkRmlsdGVycy5hY3RpdmVGaWx0ZXJEYXRhKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcXVlcnlQYXJhbXMuZW5hYmxlZCkge1xuICAgICAgT2JqZWN0LmFzc2lnbihyZXN1bHQsIHRoaXMuX3F1ZXJ5UGFyYW1zLmZldGNoZWRQYXJhbXMpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBlbmRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmckLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBlbmRpbmckKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2F2ZWRGaWx0ZXJzQ29udHJvbGxlcigpOiBTYXZlZEZpbHRlcnNDb250cm9sbGVyIHtcbiAgICByZXR1cm4gdGhpcy5fc2F2ZWRGaWx0ZXJzO1xuICB9XG5cbiAgcHVibGljIGdldCBzYXZlZEZpbHRlcnNFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zYXZlZEZpbHRlcnMuZW5hYmxlZDtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDb25maWcoY29uZmlnKSB7XG4gICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuXG4gICAgdGhpcy5faW5pdFBlcnNpc3RhbmNlKCk7XG4gICAgdGhpcy5faW5pdFF1ZXJ5UGFyYW1zKCk7XG4gICAgdGhpcy5faW5pdFNhdmVkRmlsdGVycygpO1xuXG4gICAgdGhpcy5fcGVuZGluZyQubmV4dCh0cnVlKTtcbiAgICBpZiAodGhpcy5fc2F2ZWRGaWx0ZXJzLmVuYWJsZWQpIHtcbiAgICAgIHRoaXMuX3NhdmVkRmlsdGVyc1xuICAgICAgICAubG9hZCgpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fc2F2ZWRGaWx0ZXJzLnVwZGF0ZUFjdGl2ZUZpbHRlcigpO1xuICAgICAgICAgIHRoaXMuX2luaXRJdGVtc1ZhbHVlcygpO1xuICAgICAgICAgIHRoaXMuX2xpc3RlbkFuZFJlc2V0U2F2ZWRGaWx0ZXJzKCk7XG4gICAgICAgICAgdGhpcy5fcGVuZGluZyQubmV4dChmYWxzZSlcbiAgICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5faW5pdEl0ZW1zVmFsdWVzKCk7XG4gICAgICB0aGlzLl9wZW5kaW5nJC5uZXh0KGZhbHNlKVxuICAgIH1cblxuICAgIHRoaXMuX2xpc3Rlbkl0ZW1zQ2hhbmdlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0QWN0aXZlU2F2ZWRGaWx0ZXIoc2F2ZWRGaWx0ZXI6IElGaWx0ZXJTYXZlZEZpbHRlcikge1xuICAgIHRoaXMuc2F2ZWRGaWx0ZXJzQ29udHJvbGxlci5zZXRBY3RpdmVGaWx0ZXIoc2F2ZWRGaWx0ZXIpO1xuXG4gICAgaWYgKHNhdmVkRmlsdGVyKSB7XG4gICAgICB0aGlzLnJlbG9hZEZpbHRlcnNXaXRoVmFsdWVzKHNhdmVkRmlsdGVyLmZpbHRlcnMsIGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVsb2FkRmlsdGVyc1dpdGhWYWx1ZXMocGFyYW1zOiBJRmlsdGVyRXh0ZXJuYWxQYXJhbXMsIHNob3VsZFJlc2V0U2F2ZWRGaWx0ZXJzID0gdHJ1ZSkge1xuICAgIHRoaXMuX3Nob3VsZFJlc2V0U2F2ZWRGaWx0ZXJzID0gc2hvdWxkUmVzZXRTYXZlZEZpbHRlcnM7XG4gICAgdGhpcy5faXRlbXNTdG9yZS51cGRhdGVJdGVtc1dpdGhWYWx1ZXMocGFyYW1zKTtcblxuICAgIHRoaXMuX3NhdmVRdWVyeVBhcmFtcygpO1xuICAgIHRoaXMuX3NhdmVQZXJzaXN0ZWRQYXJhbXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBfaW5pdEl0ZW1zVmFsdWVzKCkge1xuICAgIHRoaXMuX2l0ZW1zU3RvcmUuaW5pdEl0ZW1WYWx1ZXModGhpcy5wYXJhbXMpO1xuXG4gICAgdGhpcy5fc2F2ZVF1ZXJ5UGFyYW1zKCk7XG4gICAgdGhpcy5fc2F2ZVBlcnNpc3RlZFBhcmFtcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdFBlcnNpc3RhbmNlKCkge1xuICAgIHRoaXMuX3BlcnNpc3RhbmNlU3RvcmUuaW5pdChcbiAgICAgIHRoaXMuX2NvbmZpZy5wZXJzaXN0LFxuICAgICAgdGhpcy5fY29uZmlnLm5hbWVzcGFjZSxcbiAgICAgIHRoaXMuX2NvbmZpZy5jYXNlXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRRdWVyeVBhcmFtcygpIHtcbiAgICB0aGlzLl9xdWVyeVBhcmFtcy5pbml0KHRoaXMuX2NvbmZpZy5xdWVyeVBhcmFtLCB0aGlzLl9jb25maWcuY2FzZSk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0U2F2ZWRGaWx0ZXJzKCkge1xuICAgIHRoaXMuX3NhdmVkRmlsdGVycy5pbml0KHRoaXMuX2NvbmZpZy5zYXZlZEZpbHRlcnMsIHRoaXMuX2NvbmZpZy5jYXNlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2xpc3Rlbkl0ZW1zQ2hhbmdlKCkge1xuICAgIHRoaXMuX2l0ZW1zU3RvcmVcbiAgICAgIC5pdGVtc0NoYW5nZSRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3NhdmVRdWVyeVBhcmFtcygpO1xuICAgICAgICB0aGlzLl9zYXZlUGVyc2lzdGVkUGFyYW1zKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2xpc3RlbkFuZFJlc2V0U2F2ZWRGaWx0ZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuX2l0ZW1zU3RvcmVcbiAgICAgIC5pdGVtc0NoYW5nZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKCkgPT4gISF0aGlzLnNhdmVkRmlsdGVyc0NvbnRyb2xsZXIuYWN0aXZlRmlsdGVyKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBzaG91bGRSZXNldCA9IHRoaXMuX3Nob3VsZFJlc2V0U2F2ZWRGaWx0ZXJzO1xuXG4gICAgICAgICAgdGhpcy5fc2hvdWxkUmVzZXRTYXZlZEZpbHRlcnMgPSB0cnVlO1xuXG4gICAgICAgICAgcmV0dXJuIG9mKHNob3VsZFJlc2V0KTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpbHRlcigoc2hvdWxkUmVzZXQpID0+IHNob3VsZFJlc2V0KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnNhdmVkRmlsdGVyc0NvbnRyb2xsZXIucmVzZXRBY3RpdmVGaWx0ZXIoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2F2ZVF1ZXJ5UGFyYW1zKCkge1xuICAgIGNvbnN0IHRhcmdldEl0ZW1zID0gdGhpcy5faXRlbXNTdG9yZS5pdGVtc1xuICAgICAgLmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0ucXVlcnlQYXJhbXNEaXNhYmxlZCk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSBidWlsZFF1ZXJ5UGFyYW1zKFxuICAgICAgdGhpcy5faXRlbXNTdG9yZS52YWx1ZXNBc1F1ZXJ5KHtcbiAgICAgICAgb25seVByZXNlbnRlZDogZmFsc2UsXG4gICAgICAgIGl0ZW1zOiB0YXJnZXRJdGVtcyxcbiAgICAgICAgcGVyc2lzdGVkOiB0cnVlXG4gICAgICB9KSxcbiAgICAgIHRhcmdldEl0ZW1zLFxuICAgICk7XG5cbiAgICB0aGlzLl9xdWVyeVBhcmFtcy53cml0ZVN0YXRlVG9RdWVyeVBhcmFtcyhwYXJhbXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2F2ZVBlcnNpc3RlZFBhcmFtcygpIHtcbiAgICBjb25zdCB0YXJnZXRJdGVtcyA9IHRoaXMuX2l0ZW1zU3RvcmUuaXRlbXNcbiAgICAgIC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLnBlcnNpc3RhbmNlRGlzYWJsZWQpO1xuXG4gICAgY29uc3QgcGFyYW1zID0gYnVpbGRRdWVyeVBhcmFtcyhcbiAgICAgIHRoaXMuX2l0ZW1zU3RvcmUudmFsdWVzQXNRdWVyeSh7XG4gICAgICAgIG9ubHlQcmVzZW50ZWQ6IGZhbHNlLFxuICAgICAgICBpdGVtczogdGFyZ2V0SXRlbXMsXG4gICAgICAgIHBlcnNpc3RlZDogdHJ1ZVxuICAgICAgfSksXG4gICAgICB0YXJnZXRJdGVtcyxcbiAgICApO1xuXG4gICAgdGhpcy5fcGVyc2lzdGFuY2VTdG9yZS5zYXZlKHBhcmFtcyk7XG4gIH1cbn1cbiJdfQ==
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWwtcGFyYW1zLWNvbnRyb2xsZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmaXJlc3RpdGNoL2ZpbHRlci8iLCJzb3VyY2VzIjpbImFwcC9zZXJ2aWNlcy9leHRlcm5hbC1wYXJhbXMtY29udHJvbGxlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsZUFBZSxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXBFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRTVGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBS2pFLElBQWEsd0JBQXdCLEdBQXJDLE1BQWEsd0JBQXdCO0lBVW5DLFlBQ1UsV0FBK0IsRUFDL0IsaUJBQThDLEVBQzlDLFlBQW1DLEVBQ25DLGFBQXFDLEVBQ3JDLE1BQXNCO1FBSnRCLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQTZCO1FBQzlDLGlCQUFZLEdBQVosWUFBWSxDQUF1QjtRQUNuQyxrQkFBYSxHQUFiLGFBQWEsQ0FBd0I7UUFDckMsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFadEIsY0FBUyxHQUFHLElBQUksZUFB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cm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzd2l0Y2hNYXAsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRnNGaWx0ZXJDb25maWcgfSBmcm9tICcuLi9tb2RlbHMvZmlsdGVyLWNvbmZpZyc7XG5cbmltcG9ydCB7IEZzRmlsdGVySXRlbXNTdG9yZSB9IGZyb20gJy4vaXRlbXMtc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBQZXJzaXN0YW5jZVBhcmFtc0NvbnRyb2xsZXIgfSBmcm9tICcuL2V4dGVybmFsLXBhcmFtcy9wZXJzaXN0YW5jZS1wYXJhbXMtY29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IFF1ZXJ5UGFyYW1zQ29udHJvbGxlciB9IGZyb20gJy4vZXh0ZXJuYWwtcGFyYW1zL3F1ZXJ5LXBhcmFtcy1jb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2F2ZWRGaWx0ZXJzQ29udHJvbGxlciB9IGZyb20gJy4vZXh0ZXJuYWwtcGFyYW1zL3NhdmVkLWZpbHRlcnMtY29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IElGaWx0ZXJFeHRlcm5hbFBhcmFtcyB9IGZyb20gJy4uL2ludGVyZmFjZXMvZXh0ZXJuYWwtcGFyYW1zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBidWlsZFF1ZXJ5UGFyYW1zIH0gZnJvbSAnLi4vaGVscGVycy9idWlsZC1xdWVyeS1wYXJhbXMnO1xuaW1wb3J0IHsgSUZpbHRlclNhdmVkRmlsdGVyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zYXZlZC1maWx0ZXJzLmludGVyZmFjZSc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEV4dGVybmFsUGFyYW1zQ29udHJvbGxlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHJvdGVjdGVkIF9pbml0O1xuICBwcm90ZWN0ZWQgX3BlbmRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcHJpdmF0ZSBfc2hvdWxkUmVzZXRTYXZlZEZpbHRlcnMgPSB0cnVlO1xuXG4gIHByaXZhdGUgX2NvbmZpZzogRnNGaWx0ZXJDb25maWc7XG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9pdGVtc1N0b3JlOiBGc0ZpbHRlckl0ZW1zU3RvcmUsXG4gICAgcHJpdmF0ZSBfcGVyc2lzdGFuY2VTdG9yZTogUGVyc2lzdGFuY2VQYXJhbXNDb250cm9sbGVyLFxuICAgIHByaXZhdGUgX3F1ZXJ5UGFyYW1zOiBRdWVyeVBhcmFtc0NvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBfc2F2ZWRGaWx0ZXJzOiBTYXZlZEZpbHRlcnNDb250cm9sbGVyLFxuICAgIHByaXZhdGUgX3JvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgKSB7fVxuXG4gIHB1YmxpYyBnZXQgcGFyYW1zKCk6IElGaWx0ZXJFeHRlcm5hbFBhcmFtcyB7XG4gICAgY29uc3QgcmVzdWx0OiBJRmlsdGVyRXh0ZXJuYWxQYXJhbXMgPSB7fTtcblxuICAgIGlmICh0aGlzLl9wZXJzaXN0YW5jZVN0b3JlLmVuYWxiZWQpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24ocmVzdWx0LCB0aGlzLl9wZXJzaXN0YW5jZVN0b3JlLnZhbHVlPy5kYXRhKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc2F2ZWRGaWx0ZXJzLmVuYWJsZWQgJiYgdGhpcy5fc2F2ZWRGaWx0ZXJzLmFjdGl2ZUZpbHRlcikge1xuICAgICAgT2JqZWN0LmFzc2lnbihyZXN1bHQsIHRoaXMuX3NhdmVkRmlsdGVycy5hY3RpdmVGaWx0ZXJEYXRhKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcXVlcnlQYXJhbXMuZW5hYmxlZCkge1xuICAgICAgT2JqZWN0LmFzc2lnbihyZXN1bHQsIHRoaXMuX3F1ZXJ5UGFyYW1zLmZldGNoZWRQYXJhbXMpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBlbmRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmckLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBlbmRpbmckKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9wZW5kaW5nJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2F2ZWRGaWx0ZXJzQ29udHJvbGxlcigpOiBTYXZlZEZpbHRlcnNDb250cm9sbGVyIHtcbiAgICByZXR1cm4gdGhpcy5fc2F2ZWRGaWx0ZXJzO1xuICB9XG5cbiAgcHVibGljIGdldCBzYXZlZEZpbHRlcnNFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zYXZlZEZpbHRlcnMuZW5hYmxlZDtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDb25maWcoY29uZmlnKSB7XG4gICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuXG4gICAgdGhpcy5faW5pdFBlcnNpc3RhbmNlKCk7XG4gICAgdGhpcy5faW5pdFF1ZXJ5UGFyYW1zKCk7XG4gICAgdGhpcy5faW5pdFNhdmVkRmlsdGVycygpO1xuXG4gICAgdGhpcy5fcGVuZGluZyQubmV4dCh0cnVlKTtcbiAgICBpZiAodGhpcy5fc2F2ZWRGaWx0ZXJzLmVuYWJsZWQpIHtcbiAgICAgIHRoaXMuX3NhdmVkRmlsdGVyc1xuICAgICAgICAubG9hZCgpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fc2F2ZWRGaWx0ZXJzLnVwZGF0ZUFjdGl2ZUZpbHRlcigpO1xuICAgICAgICAgIHRoaXMuX2luaXRJdGVtc1ZhbHVlcygpO1xuICAgICAgICAgIHRoaXMuX2xpc3RlbkFuZFJlc2V0U2F2ZWRGaWx0ZXJzKCk7XG4gICAgICAgICAgdGhpcy5fcGVuZGluZyQubmV4dChmYWxzZSlcbiAgICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5faW5pdEl0ZW1zVmFsdWVzKCk7XG4gICAgICB0aGlzLl9wZW5kaW5nJC5uZXh0KGZhbHNlKVxuICAgIH1cblxuICAgIHRoaXMuX2xpc3Rlbkl0ZW1zQ2hhbmdlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0QWN0aXZlU2F2ZWRGaWx0ZXIoc2F2ZWRGaWx0ZXI6IElGaWx0ZXJTYXZlZEZpbHRlcikge1xuICAgIHRoaXMuc2F2ZWRGaWx0ZXJzQ29udHJvbGxlci5zZXRBY3RpdmVGaWx0ZXIoc2F2ZWRGaWx0ZXIpO1xuXG4gICAgaWYgKHNhdmVkRmlsdGVyKSB7XG4gICAgICB0aGlzLnJlbG9hZEZpbHRlcnNXaXRoVmFsdWVzKHNhdmVkRmlsdGVyLmZpbHRlcnMsIGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVsb2FkRmlsdGVyc1dpdGhWYWx1ZXMocGFyYW1zOiBJRmlsdGVyRXh0ZXJuYWxQYXJhbXMsIHNob3VsZFJlc2V0U2F2ZWRGaWx0ZXJzID0gdHJ1ZSkge1xuICAgIHRoaXMuX3Nob3VsZFJlc2V0U2F2ZWRGaWx0ZXJzID0gc2hvdWxkUmVzZXRTYXZlZEZpbHRlcnM7XG4gICAgdGhpcy5faXRlbXNTdG9yZS51cGRhdGVJdGVtc1dpdGhWYWx1ZXMocGFyYW1zKTtcblxuICAgIHRoaXMuX3NhdmVRdWVyeVBhcmFtcygpO1xuICAgIHRoaXMuX3NhdmVQZXJzaXN0ZWRQYXJhbXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBfaW5pdEl0ZW1zVmFsdWVzKCkge1xuICAgIHRoaXMuX2l0ZW1zU3RvcmUuaW5pdEl0ZW1WYWx1ZXModGhpcy5wYXJhbXMpO1xuXG4gICAgdGhpcy5fc2F2ZVF1ZXJ5UGFyYW1zKCk7XG4gICAgdGhpcy5fc2F2ZVBlcnNpc3RlZFBhcmFtcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdFBlcnNpc3RhbmNlKCkge1xuICAgIHRoaXMuX3BlcnNpc3RhbmNlU3RvcmUuaW5pdChcbiAgICAgIHRoaXMuX2NvbmZpZy5wZXJzaXN0LFxuICAgICAgdGhpcy5fY29uZmlnLm5hbWVzcGFjZSxcbiAgICAgIHRoaXMuX2NvbmZpZy5jYXNlXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRRdWVyeVBhcmFtcygpIHtcbiAgICB0aGlzLl9xdWVyeVBhcmFtcy5pbml0KHRoaXMuX2NvbmZpZy5xdWVyeVBhcmFtLCB0aGlzLl9jb25maWcuY2FzZSk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0U2F2ZWRGaWx0ZXJzKCkge1xuICAgIHRoaXMuX3NhdmVkRmlsdGVycy5pbml0KHRoaXMuX2NvbmZpZy5zYXZlZEZpbHRlcnMsIHRoaXMuX2NvbmZpZy5jYXNlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2xpc3Rlbkl0ZW1zQ2hhbmdlKCkge1xuICAgIHRoaXMuX2l0ZW1zU3RvcmUucmVhZHkkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCh2KSA9PiB2KSxcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9zYXZlUXVlcnlQYXJhbXMoKTtcbiAgICAgICAgdGhpcy5fc2F2ZVBlcnNpc3RlZFBhcmFtcygpO1xuICAgICAgfSlcblxuICAgIHRoaXMuX2l0ZW1zU3RvcmVcbiAgICAgIC5pdGVtc0NoYW5nZSRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3NhdmVRdWVyeVBhcmFtcygpO1xuICAgICAgICB0aGlzLl9zYXZlUGVyc2lzdGVkUGFyYW1zKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2xpc3RlbkFuZFJlc2V0U2F2ZWRGaWx0ZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuX2l0ZW1zU3RvcmVcbiAgICAgIC5pdGVtc0NoYW5nZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKCkgPT4gISF0aGlzLnNhdmVkRmlsdGVyc0NvbnRyb2xsZXIuYWN0aXZlRmlsdGVyKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBzaG91bGRSZXNldCA9IHRoaXMuX3Nob3VsZFJlc2V0U2F2ZWRGaWx0ZXJzO1xuXG4gICAgICAgICAgdGhpcy5fc2hvdWxkUmVzZXRTYXZlZEZpbHRlcnMgPSB0cnVlO1xuXG4gICAgICAgICAgcmV0dXJuIG9mKHNob3VsZFJlc2V0KTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpbHRlcigoc2hvdWxkUmVzZXQpID0+IHNob3VsZFJlc2V0KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnNhdmVkRmlsdGVyc0NvbnRyb2xsZXIucmVzZXRBY3RpdmVGaWx0ZXIoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2F2ZVF1ZXJ5UGFyYW1zKCkge1xuICAgIGNvbnN0IHRhcmdldEl0ZW1zID0gdGhpcy5faXRlbXNTdG9yZS5pdGVtc1xuICAgICAgLmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0ucXVlcnlQYXJhbXNEaXNhYmxlZCk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSBidWlsZFF1ZXJ5UGFyYW1zKFxuICAgICAgdGhpcy5faXRlbXNTdG9yZS52YWx1ZXNBc1F1ZXJ5KHtcbiAgICAgICAgb25seVByZXNlbnRlZDogZmFsc2UsXG4gICAgICAgIGl0ZW1zOiB0YXJnZXRJdGVtcyxcbiAgICAgICAgcGVyc2lzdGVkOiB0cnVlXG4gICAgICB9KSxcbiAgICAgIHRhcmdldEl0ZW1zLFxuICAgICk7XG5cbiAgICB0aGlzLl9xdWVyeVBhcmFtcy53cml0ZVN0YXRlVG9RdWVyeVBhcmFtcyhwYXJhbXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2F2ZVBlcnNpc3RlZFBhcmFtcygpIHtcbiAgICBjb25zdCB0YXJnZXRJdGVtcyA9IHRoaXMuX2l0ZW1zU3RvcmUuaXRlbXNcbiAgICAgIC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLnBlcnNpc3RhbmNlRGlzYWJsZWQpO1xuXG4gICAgY29uc3QgcGFyYW1zID0gYnVpbGRRdWVyeVBhcmFtcyhcbiAgICAgIHRoaXMuX2l0ZW1zU3RvcmUudmFsdWVzQXNRdWVyeSh7XG4gICAgICAgIG9ubHlQcmVzZW50ZWQ6IGZhbHNlLFxuICAgICAgICBpdGVtczogdGFyZ2V0SXRlbXMsXG4gICAgICAgIHBlcnNpc3RlZDogdHJ1ZVxuICAgICAgfSksXG4gICAgICB0YXJnZXRJdGVtcyxcbiAgICApO1xuXG4gICAgdGhpcy5fcGVyc2lzdGFuY2VTdG9yZS5zYXZlKHBhcmFtcyk7XG4gIH1cbn1cbiJdfQ==
@@ -103,7 +103,7 @@ let FsFilterItemsStore = class FsFilterItemsStore {
103
103
  loadAsyncDefaults() {
104
104
  const pendingItems = this.items
105
105
  .filter((item) => {
106
- return item.hasPendingDefaultValue
106
+ return item.defaultValueFn
107
107
  && (item.persistedValue === null || item.persistedValue === undefined);
108
108
  });
109
109
  if (pendingItems.length > 0) {
@@ -308,4 +308,4 @@ FsFilterItemsStore = __decorate([
308
308
  __metadata("design:paramtypes", [])
309
309
  ], FsFilterItemsStore);
310
310
  export { FsFilterItemsStore };
311
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbXMtc3RvcmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmaXJlc3RpdGNoL2ZpbHRlci8iLCJzb3VyY2VzIjpbImFwcC9zZXJ2aWNlcy9pdGVtcy1zdG9yZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQU1uQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFN0UsT0FBTyxFQUFrQixhQUFhLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFhcEYsSUFBYSxrQkFBa0IsR0FBL0IsTUFBYSxrQkFBa0I7SUFrQjdCO1FBaEJPLGVBQVUsR0FBZ0MsSUFBSSxDQUFDO1FBQy9DLHNCQUFpQixHQUFnQyxJQUFJLENBQUM7UUFDdEQsZ0JBQVcsR0FBYSxJQUFJLENBQUM7UUFFNUIsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLFdBQU0sR0FBa0MsRUFBRSxDQUFDO1FBQzNDLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQWdDLEVBQUUsQ0FBQyxDQUFDO1FB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Q0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBRXBELE1BQU0saUJBQWlCLEdBQUc7Z0JBQ3hCLElBQUksRUFBRSxvQkFBb0I7Z0JBQzFCLElBQUksRUFBRSxRQUFRLENBQUMsTUFBTTtnQkFDckIsS0FBSyxFQUFFLGdCQUFnQjtnQkFDdkIsTUFBTSxFQUFFO29CQUNOLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO29CQUNuQyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtpQkFDdEM7YUFDeUIsQ0FBQztZQUU3QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDcEQsaUJBQWlCLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzthQUN6RDtZQUVELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLGdCQUFnQixDQUMzQyxpQkFBaUIsRUFDakIsSUFBSSxDQUNMLENBQUM7WUFDRixJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUNuRTtJQUNILENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSTthQUNwQixLQUFLO2FBQ0wsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFhLENBQUM7SUFDcEQsQ0FBQztDQUNGLENBQUE7QUFqWFksa0JBQWtCO0lBRDlCLFVBQVUsRUFBRTs7R0FDQSxrQkFBa0IsQ0FpWDlCO1NBalhZLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZvcmtKb2luLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciwgZmluYWxpemUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgcGlja0J5IH0gZnJvbSAnbG9kYXNoLWVzJztcblxuaW1wb3J0IHtcbiAgRmlsdGVyU29ydCxcbiAgSUZpbHRlckNvbmZpZ0l0ZW0sXG59IGZyb20gJy4uL2ludGVyZmFjZXMvY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJdGVtVHlwZSB9IGZyb20gJy4uL2VudW1zL2l0ZW0tdHlwZS5lbnVtJztcbmltcG9ydCB7IEJhc2VJdGVtIH0gZnJvbSAnLi4vbW9kZWxzL2l0ZW1zL2Jhc2UtaXRlbSc7XG5pbXBvcnQgeyBTaW1wbGVTZWxlY3RJdGVtIH0gZnJvbSAnLi4vbW9kZWxzL2l0ZW1zL3NlbGVjdC9zaW1wbGUtc2VsZWN0LWl0ZW0nO1xuaW1wb3J0IHsgSUZpbHRlckNvbmZpZ1NlbGVjdEl0ZW0gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2l0ZW1zL3NlbGVjdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRnNGaWx0ZXJDb25maWcsIFNPUlRfQllfRklFTEQsIFNPUlRfRElSRUNUSU9OX0ZJRUxEIH0gZnJvbSAnLi4vbW9kZWxzL2ZpbHRlci1jb25maWcnO1xuaW1wb3J0IHsgY3JlYXRlRmlsdGVySXRlbSB9IGZyb20gJy4uL2hlbHBlcnMvY3JlYXRlLWZpbHRlci1pdGVtJztcbmltcG9ydCB7IFJhbmdlSXRlbSB9IGZyb20gJy4uL21vZGVscy9pdGVtcy9yYW5nZS1pdGVtJztcbmltcG9ydCB7IEJhc2VEYXRlUmFuZ2VJdGVtIH0gZnJvbSAnLi4vbW9kZWxzL2l0ZW1zL2RhdGUtcmFuZ2UvYmFzZS1kYXRlLXJhbmdlLWl0ZW0nO1xuaW1wb3J0IHsgSVNvcnRpbmdDaGFuZ2VFdmVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZmlsdGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUZXh0SXRlbSB9IGZyb20gJy4uL21vZGVscy9pdGVtcy90ZXh0LWl0ZW0nO1xuaW1wb3J0IHsgSUZpbHRlckV4dGVybmFsUGFyYW1zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9leHRlcm5hbC1wYXJhbXMuaW50ZXJmYWNlJztcbmltcG9ydCB7IElGaWx0ZXJDb25maWdCYXNlSXRlbSB9IGZyb20gJy4uL2ludGVyZmFjZXMvaXRlbXMvYmFzZS5pbnRlcmZhY2UnO1xuXG5pbnRlcmZhY2UgSVZhbHVlQXNRdWVyeSB7XG4gIG9ubHlQcmVzZW50ZWQ/OiBib29sZWFuO1xuICBpdGVtcz86IEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPltdO1xuICBwZXJzaXN0ZWQ/OiBib29sZWFuO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRnNGaWx0ZXJJdGVtc1N0b3JlIGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICBwdWJsaWMgc29ydEJ5SXRlbTogQmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+ID0gbnVsbDtcbiAgcHVibGljIHNvcnREaXJlY3Rpb25JdGVtOiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT4gPSBudWxsO1xuICBwdWJsaWMga2V5d29yZEl0ZW06IFRleHRJdGVtID0gbnVsbDtcblxuICBwcml2YXRlIF9yZWFkeSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHJpdmF0ZSBfaXRlbXM6IEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPltdID0gW107XG4gIHByaXZhdGUgX3Zpc2libGVJdGVtcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPltdPihbXSk7XG4gIHByaXZhdGUgX2l0ZW1zQnlOYW1lID0gbmV3IE1hcDxzdHJpbmcsIEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPj4oKTtcblxuICBwcml2YXRlIF9pdGVtc1ZhbHVlc0xvYWRlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9oYXNLZXl3b3JkID0gZmFsc2U7XG4gIHByaXZhdGUgX2NvbmZpZzogRnNGaWx0ZXJDb25maWc7XG5cbiAgcHJpdmF0ZSBfaXRlbXNDaGFuZ2UkID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2xhenlJbml0KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGl0ZW1zKCk6IEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPltdIHtcbiAgICByZXR1cm4gdGhpcy5faXRlbXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZpc2libGVJdGVtcygpOiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT5bXSB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpc2libGVJdGVtcyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmlzaWJsZUl0ZW1zJCgpOiBPYnNlcnZhYmxlPEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpc2libGVJdGVtcyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0IHZpc2libGVJdGVtcyhpdGVtczogQmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+W10pIHtcbiAgICB0aGlzLl92aXNpYmxlSXRlbXMkLm5leHQoaXRlbXMpO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNLZXl3b3JkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9oYXNLZXl3b3JkO1xuICB9XG5cbiAgcHVibGljIGdldCBpdGVtc0NoYW5nZSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zQ2hhbmdlJC5waXBlKGRlYm91bmNlVGltZSgzMCkpO1xuICB9XG5cbiAgcHVibGljIGdldCByZWFkeSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWR5JC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3lJdGVtcygpO1xuXG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q29uZmlnKGNvbmZpZykge1xuICAgIHRoaXMuX2l0ZW1zQnlOYW1lLmNsZWFyKCk7XG4gICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMuaW5pdEl0ZW1zKGNvbmZpZy5pdGVtcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0SXRlbUJ5TmFtZShuYW1lOiBzdHJpbmcpOiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnQmFzZUl0ZW0+IHtcbiAgICByZXR1cm4gdGhpcy5faXRlbXNCeU5hbWUuZ2V0KG5hbWUpO1xuICB9XG5cbiAgcHVibGljIGluaXRJdGVtcyhpdGVtczogSUZpbHRlckNvbmZpZ0l0ZW1bXSkge1xuICAgIHRoaXMuX2l0ZW1zVmFsdWVzTG9hZGVkID0gZmFsc2U7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbXMpKSB7XG4gICAgICB0aGlzLl9jcmVhdGVJdGVtcyhpdGVtcyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZpbHRlcnNDbGVhcigpIHtcbiAgICB0aGlzLml0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgUmFuZ2VJdGVtKSB7XG4gICAgICAgIGl0ZW0uY2xlYXJSYW5nZShudWxsLCBpdGVtLmRlZmF1bHRWYWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0gaW5zdGFuY2VvZiBCYXNlRGF0ZVJhbmdlSXRlbSkge1xuICAgICAgICBpdGVtLmNsZWFyRGF0ZVJhbmdlKG51bGwsIGl0ZW0uZGVmYXVsdFZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGl0ZW0uY2xlYXIoaXRlbS5kZWZhdWx0VmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuc29ydEJ5SXRlbSkge1xuICAgICAgaWYgKHRoaXMuX2NvbmZpZy5zb3J0KSB7XG4gICAgICAgIHRoaXMuc29ydEJ5SXRlbS5tb2RlbCA9IHRoaXMuX2NvbmZpZy5zb3J0LnZhbHVlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNvcnRCeUl0ZW0uY2xlYXIodGhpcy5zb3J0QnlJdGVtLmRlZmF1bHRWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc29ydERpcmVjdGlvbkl0ZW0pIHtcbiAgICAgIGlmICh0aGlzLl9jb25maWcuc29ydCkge1xuICAgICAgICB0aGlzLnNvcnREaXJlY3Rpb25JdGVtLm1vZGVsID0gdGhpcy5fY29uZmlnLnNvcnQuZGlyZWN0aW9uXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNvcnREaXJlY3Rpb25JdGVtLmNsZWFyKHRoaXMuc29ydERpcmVjdGlvbkl0ZW0uZGVmYXVsdFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmtleXdvcmRJdGVtPy5jbGVhcigpO1xuICB9XG5cbiAgcHVibGljIGxvYWRBc3luY1ZhbHVlcygpIHtcbiAgICB0aGlzLml0ZW1zXG4gICAgICAuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmhhc1BlbmRpbmdWYWx1ZXMpXG4gICAgICAuZm9yRWFjaCgoaXRlbSkgPT4gaXRlbS5sb2FkQXN5bmNWYWx1ZXMoKSk7XG4gIH1cblxuICBwdWJsaWMgbG9hZEFzeW5jRGVmYXVsdHMoKTogdm9pZCB7XG4gICAgY29uc3QgcGVuZGluZ0l0ZW1zID0gdGhpcy5pdGVtc1xuICAgICAgLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICByZXR1cm4gaXRlbS5oYXNQZW5kaW5nRGVmYXVsdFZhbHVlXG4gICAgICAgICAgJiYgKGl0ZW0ucGVyc2lzdGVkVmFsdWUgPT09IG51bGwgfHwgaXRlbS5wZXJzaXN0ZWRWYWx1ZSA9PT0gdW5kZWZpbmVkKTtcbiAgICAgIH0pO1xuXG4gICAgaWYgKHBlbmRpbmdJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3JrSm9pbihcbiAgICAgICAgcGVuZGluZ0l0ZW1zXG4gICAgICAgICAgLm1hcCgoaXRlbSkgPT4gaXRlbS5sb2FkRGVmYXVsdFZhbHVlKCkpXG4gICAgICApXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3JlYWR5JC5uZXh0KHRydWUpO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9yZWFkeSQubmV4dCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0U29ydCgpOiBGaWx0ZXJTb3J0IHtcbiAgICBsZXQgc29ydEJ5ID0gdGhpcy5nZXRTb3J0QnlWYWx1ZSgpO1xuICAgIHNvcnRCeSA9IHNvcnRCeSA9PT0gJ19fYWxsJyA/IG51bGwgOiBzb3J0Qnk7XG5cbiAgICBsZXQgc29ydERpcmVjdGlvbiA9IHRoaXMuZ2V0U29ydERpcmVjdGlvblZhbHVlKCk7XG4gICAgc29ydERpcmVjdGlvbiA9IHNvcnREaXJlY3Rpb24gPT09ICdfX2FsbCcgPyBudWxsIDogc29ydERpcmVjdGlvbjtcblxuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZTogc29ydEJ5LFxuICAgICAgZGlyZWN0aW9uOiBzb3J0RGlyZWN0aW9uLFxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRTb3J0QnlWYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zb3J0QnlJdGVtID8gdGhpcy5zb3J0QnlJdGVtLm1vZGVsIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTb3J0RGlyZWN0aW9uVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuc29ydERpcmVjdGlvbkl0ZW0gPyB0aGlzLnNvcnREaXJlY3Rpb25JdGVtLm1vZGVsIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVTb3J0KHNvcnQ6IElTb3J0aW5nQ2hhbmdlRXZlbnQpIHtcbiAgICBpZiAoc29ydC5zb3J0QnkpIHtcbiAgICAgIHRoaXMuc29ydEJ5SXRlbS5tb2RlbCA9IHNvcnQuc29ydEJ5O1xuICAgIH1cblxuICAgIGlmIChzb3J0LnNvcnREaXJlY3Rpb24pIHtcbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbkl0ZW0ubW9kZWwgPSBzb3J0LnNvcnREaXJlY3Rpb247XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHZhbHVlcyhvbmx5UHJlc2VudGVkID0gZmFsc2UpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMucmVkdWNlKChhY2MsIGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gaXRlbS52YWx1ZTtcblxuICAgICAgaWYgKCFvbmx5UHJlc2VudGVkIHx8IHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIGFjY1tpdGVtLm5hbWVdID0gdmFsdWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuICB9XG5cbiAgcHVibGljIHZhbHVlc0FzUXVlcnkoe1xuICAgIG9ubHlQcmVzZW50ZWQgPSB0cnVlLFxuICAgIGl0ZW1zID0gbnVsbCxcbiAgICBwZXJzaXN0ZWQgPSBmYWxzZSxcbiAgfTogSVZhbHVlQXNRdWVyeSA9IHt9KTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IHt9O1xuXG4gICAgKGl0ZW1zIHx8IHRoaXMuaXRlbXMpLmZvckVhY2goKGZpbHRlckl0ZW06IEJhc2VJdGVtPGFueT4pID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IHBlcnNpc3RlZFxuICAgICAgICA/IGZpbHRlckl0ZW0ucGVyc2lzdGFuY2VPYmplY3RcbiAgICAgICAgOiBmaWx0ZXJJdGVtLnF1ZXJ5T2JqZWN0O1xuXG4gICAgICBPYmplY3QuYXNzaWduKHBhcmFtcywgdmFsdWVzKTtcbiAgICB9KTtcblxuICAgIGlmIChvbmx5UHJlc2VudGVkKSB7XG4gICAgICByZXR1cm4gcGlja0J5KHBhcmFtcywgKHZhbCkgPT4ge1xuICAgICAgICByZXR1cm4gdmFsICE9PSBudWxsICYmIHZhbCAhPT0gdm9pZCAwO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIHB1YmxpYyBpbml0SXRlbVZhbHVlcyhwOiBJRmlsdGVyRXh0ZXJuYWxQYXJhbXMpIHtcbiAgICB0aGlzLml0ZW1zXG4gICAgICAuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpdGVtLmluaXRWYWx1ZXMocFtpdGVtLm5hbWVdKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fY3JlYXRlU29ydGluZ0l0ZW1zKHApO1xuICAgIHRoaXMubG9hZEFzeW5jRGVmYXVsdHMoKTtcbiAgICB0aGlzLl9zdWJzY3JpYmVUb0l0ZW1zQ2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUl0ZW1zV2l0aFZhbHVlcyh2YWx1ZXM6IElGaWx0ZXJFeHRlcm5hbFBhcmFtcykge1xuICAgIHRoaXMuaXRlbXNcbiAgICAgIC5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZXNbaXRlbS5uYW1lXSkge1xuICAgICAgICAgIGl0ZW0ubW9kZWwgPSB2YWx1ZXNbaXRlbS5uYW1lXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuc29ydEJ5SXRlbSkgeyB0aGlzLnNvcnRCeUl0ZW0uY2xlYXIoKTsgfVxuICAgIGlmICh0aGlzLnNvcnREaXJlY3Rpb25JdGVtKSB7IHRoaXMuc29ydERpcmVjdGlvbkl0ZW0uY2xlYXIoKTsgfVxuICB9XG5cbiAgcHVibGljIGRlc3Ryb3lJdGVtcygpIHtcbiAgICB0aGlzLml0ZW1zXG4gICAgICAuZm9yRWFjaCgoaXRlbSkgPT4gaXRlbS5kZXN0cm95KCkpO1xuICAgIHRoaXMuc29ydEJ5SXRlbT8uZGVzdHJveSgpO1xuICAgIHRoaXMuc29ydERpcmVjdGlvbkl0ZW0/LmRlc3Ryb3koKTtcblxuICAgIHRoaXMuX2l0ZW1zID0gW107XG4gICAgdGhpcy5zb3J0QnlJdGVtID0gbnVsbDtcbiAgICB0aGlzLnNvcnREaXJlY3Rpb25JdGVtID0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTb21lIGl0ZW1zIG1pZ2h0IG5lZWQgdG8gbG9hZCBhc3luYyB2YWx1ZXMgYmVmb3JlIHRoZXkgd2lsbCBiZSBzaG93blxuICAgKi9cbiAgcHVibGljIHByZXBhcmVJdGVtcygpIHtcbiAgICBpZiAoIXRoaXMuX2l0ZW1zVmFsdWVzTG9hZGVkKSB7XG4gICAgICB0aGlzLl9pdGVtc1ZhbHVlc0xvYWRlZCA9IHRydWU7XG5cbiAgICAgIHRoaXMubG9hZEFzeW5jVmFsdWVzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZVZpc2libGVJdGVtcygpOiB2b2lkIHtcbiAgICB0aGlzLnZpc2libGVJdGVtcyA9IHRoaXMuaXRlbXNcbiAgICAgIC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLmlzVHlwZUtleXdvcmQgJiYgIWl0ZW0uaGlkZSk7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVJdGVtcyhpdGVtczogSUZpbHRlckNvbmZpZ0l0ZW1bXSkge1xuICAgIHRoaXMuX2l0ZW1zID0gaXRlbXNcbiAgICAgIC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLmRpc2FibGUpXG4gICAgICAuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9pdGVtc0J5TmFtZS5oYXMoaXRlbS5uYW1lKSkge1xuICAgICAgICAgIHRocm93IEVycm9yKCdGaWx0ZXIgaW5pdCBlcnJvci4gSXRlbXMgbmFtZSBtdXN0IGJlIHVuaXF1ZS4nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9pdGVtc0J5TmFtZS5zZXQoaXRlbS5uYW1lLCBudWxsKTtcblxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICBjb25zdCBmaWx0ZXJJdGVtID0gY3JlYXRlRmlsdGVySXRlbShpdGVtLCB7IGNhc2U6IHRoaXMuX2NvbmZpZy5jYXNlIH0pO1xuXG4gICAgICAgIGlmIChmaWx0ZXJJdGVtLnR5cGUgPT09IEl0ZW1UeXBlLktleXdvcmQpIHtcbiAgICAgICAgICB0aGlzLl9oYXNLZXl3b3JkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2l0ZW1zQnlOYW1lLnNldChpdGVtLm5hbWUsIGZpbHRlckl0ZW0pO1xuXG4gICAgICAgIHJldHVybiBmaWx0ZXJJdGVtO1xuICAgICAgfSk7XG5cbiAgfVxuXG4gIHByaXZhdGUgX3N1YnNjcmliZVRvSXRlbXNDaGFuZ2VzKCkge1xuICAgIHRoaXMuaXRlbXNcbiAgICAgIC5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGl0ZW0udmFsdWVDaGFuZ2UkXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwoaXRlbS5kZXN0cm95JCksXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5faXRlbXNDaGFuZ2UkLm5leHQoaXRlbSk7XG4gICAgICAgICAgfSlcbiAgICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuX2NvbmZpZy5zb3J0VmFsdWVzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc29ydEJ5SXRlbS52YWx1ZUNoYW5nZSRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuc29ydEJ5SXRlbS5kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5faXRlbXNDaGFuZ2UkLm5leHQodGhpcy5zb3J0QnlJdGVtKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbkl0ZW0udmFsdWVDaGFuZ2UkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLnNvcnREaXJlY3Rpb25JdGVtLmRlc3Ryb3kkKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9pdGVtc0NoYW5nZSQubmV4dCh0aGlzLnNvcnREaXJlY3Rpb25JdGVtKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfbGF6eUluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZWFkeSRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKHN0YXRlKSA9PiBzdGF0ZSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVWaXNpYmxlSXRlbXMoKTtcbiAgICAgICAgdGhpcy5fc2V0S2V5d29yZEl0ZW0oKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlU29ydGluZ0l0ZW1zKHApIHtcbiAgICBpZiAodGhpcy5fY29uZmlnLnNvcnRWYWx1ZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHNvcnRCeUl0ZW0gPSB7XG4gICAgICAgIG5hbWU6IFNPUlRfQllfRklFTEQsXG4gICAgICAgIHR5cGU6IEl0ZW1UeXBlLlNlbGVjdCxcbiAgICAgICAgbGFiZWw6ICdTb3J0IEJ5JyxcbiAgICAgICAgdmFsdWVzOiB0aGlzLl9jb25maWcuc29ydFZhbHVlc1xuICAgICAgfSBhcyBJRmlsdGVyQ29uZmlnU2VsZWN0SXRlbTtcblxuXG4gICAgICBpZiAodGhpcy5fY29uZmlnLnNvcnQgJiYgdGhpcy5fY29uZmlnLnNvcnQudmFsdWUpIHtcbiAgICAgICAgc29ydEJ5SXRlbS5kZWZhdWx0ID0gdGhpcy5fY29uZmlnLnNvcnQudmFsdWU7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc29ydEJ5SXRlbSA9IG5ldyBTaW1wbGVTZWxlY3RJdGVtKFxuICAgICAgICBzb3J0QnlJdGVtLFxuICAgICAgICBudWxsLFxuICAgICAgKTtcbiAgICAgIHRoaXMuc29ydEJ5SXRlbS5pbml0VmFsdWVzKHBbdGhpcy5zb3J0QnlJdGVtLm5hbWVdKTtcblxuICAgICAgY29uc3Qgc29ydERpcmVjdGlvbkl0ZW0gPSB7XG4gICAgICAgIG5hbWU6IFNPUlRfRElSRUNUSU9OX0ZJRUxELFxuICAgICAgICB0eXBlOiBJdGVtVHlwZS5TZWxlY3QsXG4gICAgICAgIGxhYmVsOiAnU29ydCBEaXJlY3Rpb24nLFxuICAgICAgICB2YWx1ZXM6IFtcbiAgICAgICAgICB7IG5hbWU6ICdBc2NlbmRpbmcnLCB2YWx1ZTogJ2FzYycgfSxcbiAgICAgICAgICB7IG5hbWU6ICdEZXNjZW5kaW5nJywgdmFsdWU6ICdkZXNjJyB9XG4gICAgICAgIF1cbiAgICAgIH0gYXMgSUZpbHRlckNvbmZpZ1NlbGVjdEl0ZW07XG5cbiAgICAgIGlmICh0aGlzLl9jb25maWcuc29ydCAmJiB0aGlzLl9jb25maWcuc29ydC5kaXJlY3Rpb24pIHtcbiAgICAgICAgc29ydERpcmVjdGlvbkl0ZW0uZGVmYXVsdCA9IHRoaXMuX2NvbmZpZy5zb3J0LmRpcmVjdGlvbjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uSXRlbSA9IG5ldyBTaW1wbGVTZWxlY3RJdGVtKFxuICAgICAgICBzb3J0RGlyZWN0aW9uSXRlbSxcbiAgICAgICAgbnVsbFxuICAgICAgKTtcbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbkl0ZW0uaW5pdFZhbHVlcyhwW3RoaXMuc29ydERpcmVjdGlvbkl0ZW0ubmFtZV0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldEtleXdvcmRJdGVtKCkge1xuICAgIHRoaXMua2V5d29yZEl0ZW0gPSB0aGlzXG4gICAgICAuaXRlbXNcbiAgICAgIC5maW5kKChpdGVtKSA9PiBpdGVtLmlzVHlwZUtleXdvcmQpIGFzIFRleHRJdGVtO1xuICB9XG59XG4iXX0=
311
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbXMtc3RvcmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmaXJlc3RpdGNoL2ZpbHRlci8iLCJzb3VyY2VzIjpbImFwcC9zZXJ2aWNlcy9pdGVtcy1zdG9yZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQU1uQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFN0UsT0FBTyxFQUFrQixhQUFhLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFhcEYsSUFBYSxrQkFBa0IsR0FBL0IsTUFBYSxrQkFBa0I7SUFrQjdCO1FBaEJPLGVBQVUsR0FBZ0MsSUFBSSxDQUFDO1FBQy9DLHNCQUFpQixHQUFnQyxJQUFJLENBQUM7UUFDdEQsZ0JBQVcsR0FBYSxJQUFJLENBQUM7UUFFNUIsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLFdBQU0sR0FBa0MsRUFBRSxDQUFDO1FBQzNDLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQWdDLEVBQUUsQ0FBQyxDQUFDO1FB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QUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUVwRCxNQUFNLGlCQUFpQixHQUFHO2dCQUN4QixJQUFJLEVBQUUsb0JBQW9CO2dCQUMxQixJQUFJLEVBQUUsUUFBUSxDQUFDLE1BQU07Z0JBQ3JCLEtBQUssRUFBRSxnQkFBZ0I7Z0JBQ3ZCLE1BQU0sRUFBRTtvQkFDTixFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtvQkFDbkMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7aUJBQ3RDO2FBQ3lCLENBQUM7WUFFN0IsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ3BELGlCQUFpQixDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7YUFDekQ7WUFFRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxnQkFBZ0IsQ0FDM0MsaUJBQWlCLEVBQ2pCLElBQUksQ0FDTCxDQUFDO1lBQ0YsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDbkU7SUFDSCxDQUFDO0lBRU8sZUFBZTtRQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUk7YUFDcEIsS0FBSzthQUNMLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBYSxDQUFDO0lBQ3BELENBQUM7Q0FDRixDQUFBO0FBalhZLGtCQUFrQjtJQUQ5QixVQUFVLEVBQUU7O0dBQ0Esa0JBQWtCLENBaVg5QjtTQWpYWSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIGZpbmFsaXplLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IHBpY2tCeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmltcG9ydCB7XG4gIEZpbHRlclNvcnQsXG4gIElGaWx0ZXJDb25maWdJdGVtLFxufSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSXRlbVR5cGUgfSBmcm9tICcuLi9lbnVtcy9pdGVtLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBCYXNlSXRlbSB9IGZyb20gJy4uL21vZGVscy9pdGVtcy9iYXNlLWl0ZW0nO1xuaW1wb3J0IHsgU2ltcGxlU2VsZWN0SXRlbSB9IGZyb20gJy4uL21vZGVscy9pdGVtcy9zZWxlY3Qvc2ltcGxlLXNlbGVjdC1pdGVtJztcbmltcG9ydCB7IElGaWx0ZXJDb25maWdTZWxlY3RJdGVtIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9pdGVtcy9zZWxlY3QuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZzRmlsdGVyQ29uZmlnLCBTT1JUX0JZX0ZJRUxELCBTT1JUX0RJUkVDVElPTl9GSUVMRCB9IGZyb20gJy4uL21vZGVscy9maWx0ZXItY29uZmlnJztcbmltcG9ydCB7IGNyZWF0ZUZpbHRlckl0ZW0gfSBmcm9tICcuLi9oZWxwZXJzL2NyZWF0ZS1maWx0ZXItaXRlbSc7XG5pbXBvcnQgeyBSYW5nZUl0ZW0gfSBmcm9tICcuLi9tb2RlbHMvaXRlbXMvcmFuZ2UtaXRlbSc7XG5pbXBvcnQgeyBCYXNlRGF0ZVJhbmdlSXRlbSB9IGZyb20gJy4uL21vZGVscy9pdGVtcy9kYXRlLXJhbmdlL2Jhc2UtZGF0ZS1yYW5nZS1pdGVtJztcbmltcG9ydCB7IElTb3J0aW5nQ2hhbmdlRXZlbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2ZpbHRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGV4dEl0ZW0gfSBmcm9tICcuLi9tb2RlbHMvaXRlbXMvdGV4dC1pdGVtJztcbmltcG9ydCB7IElGaWx0ZXJFeHRlcm5hbFBhcmFtcyB9IGZyb20gJy4uL2ludGVyZmFjZXMvZXh0ZXJuYWwtcGFyYW1zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJRmlsdGVyQ29uZmlnQmFzZUl0ZW0gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2l0ZW1zL2Jhc2UuaW50ZXJmYWNlJztcblxuaW50ZXJmYWNlIElWYWx1ZUFzUXVlcnkge1xuICBvbmx5UHJlc2VudGVkPzogYm9vbGVhbjtcbiAgaXRlbXM/OiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT5bXTtcbiAgcGVyc2lzdGVkPzogYm9vbGVhbjtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZzRmlsdGVySXRlbXNTdG9yZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgcHVibGljIHNvcnRCeUl0ZW06IEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPiA9IG51bGw7XG4gIHB1YmxpYyBzb3J0RGlyZWN0aW9uSXRlbTogQmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+ID0gbnVsbDtcbiAgcHVibGljIGtleXdvcmRJdGVtOiBUZXh0SXRlbSA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfcmVhZHkkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByaXZhdGUgX2l0ZW1zOiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT5bXSA9IFtdO1xuICBwcml2YXRlIF92aXNpYmxlSXRlbXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT5bXT4oW10pO1xuICBwcml2YXRlIF9pdGVtc0J5TmFtZSA9IG5ldyBNYXA8c3RyaW5nLCBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT4+KCk7XG5cbiAgcHJpdmF0ZSBfaXRlbXNWYWx1ZXNMb2FkZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfaGFzS2V5d29yZCA9IGZhbHNlO1xuICBwcml2YXRlIF9jb25maWc6IEZzRmlsdGVyQ29uZmlnO1xuXG4gIHByaXZhdGUgX2l0ZW1zQ2hhbmdlJCA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9sYXp5SW5pdCgpO1xuICB9XG5cbiAgcHVibGljIGdldCBpdGVtcygpOiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT5bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zO1xuICB9XG5cbiAgcHVibGljIGdldCB2aXNpYmxlSXRlbXMoKTogQmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+W10ge1xuICAgIHJldHVybiB0aGlzLl92aXNpYmxlSXRlbXMkLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZpc2libGVJdGVtcyQoKTogT2JzZXJ2YWJsZTxCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT5bXT4ge1xuICAgIHJldHVybiB0aGlzLl92aXNpYmxlSXRlbXMkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIHNldCB2aXNpYmxlSXRlbXMoaXRlbXM6IEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPltdKSB7XG4gICAgdGhpcy5fdmlzaWJsZUl0ZW1zJC5uZXh0KGl0ZW1zKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzS2V5d29yZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faGFzS2V5d29yZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXRlbXNDaGFuZ2UkKCkge1xuICAgIHJldHVybiB0aGlzLl9pdGVtc0NoYW5nZSQucGlwZShkZWJvdW5jZVRpbWUoMzApKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVhZHkkKCkge1xuICAgIHJldHVybiB0aGlzLl9yZWFkeSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95SXRlbXMoKTtcblxuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIHNldENvbmZpZyhjb25maWcpIHtcbiAgICB0aGlzLl9pdGVtc0J5TmFtZS5jbGVhcigpO1xuICAgIHRoaXMuX2NvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLmluaXRJdGVtcyhjb25maWcuaXRlbXMpO1xuICB9XG5cbiAgcHVibGljIGdldEl0ZW1CeU5hbWUobmFtZTogc3RyaW5nKTogQmFzZUl0ZW08SUZpbHRlckNvbmZpZ0Jhc2VJdGVtPiB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1zQnlOYW1lLmdldChuYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0SXRlbXMoaXRlbXM6IElGaWx0ZXJDb25maWdJdGVtW10pIHtcbiAgICB0aGlzLl9pdGVtc1ZhbHVlc0xvYWRlZCA9IGZhbHNlO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW1zKSkge1xuICAgICAgdGhpcy5fY3JlYXRlSXRlbXMoaXRlbXMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmaWx0ZXJzQ2xlYXIoKSB7XG4gICAgdGhpcy5pdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIFJhbmdlSXRlbSkge1xuICAgICAgICBpdGVtLmNsZWFyUmFuZ2UobnVsbCwgaXRlbS5kZWZhdWx0VmFsdWUpO1xuICAgICAgfSBlbHNlIGlmIChpdGVtIGluc3RhbmNlb2YgQmFzZURhdGVSYW5nZUl0ZW0pIHtcbiAgICAgICAgaXRlbS5jbGVhckRhdGVSYW5nZShudWxsLCBpdGVtLmRlZmF1bHRWYWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVtLmNsZWFyKGl0ZW0uZGVmYXVsdFZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnNvcnRCeUl0ZW0pIHtcbiAgICAgIGlmICh0aGlzLl9jb25maWcuc29ydCkge1xuICAgICAgICB0aGlzLnNvcnRCeUl0ZW0ubW9kZWwgPSB0aGlzLl9jb25maWcuc29ydC52YWx1ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zb3J0QnlJdGVtLmNsZWFyKHRoaXMuc29ydEJ5SXRlbS5kZWZhdWx0VmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnNvcnREaXJlY3Rpb25JdGVtKSB7XG4gICAgICBpZiAodGhpcy5fY29uZmlnLnNvcnQpIHtcbiAgICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uSXRlbS5tb2RlbCA9IHRoaXMuX2NvbmZpZy5zb3J0LmRpcmVjdGlvblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uSXRlbS5jbGVhcih0aGlzLnNvcnREaXJlY3Rpb25JdGVtLmRlZmF1bHRWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5rZXl3b3JkSXRlbT8uY2xlYXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkQXN5bmNWYWx1ZXMoKSB7XG4gICAgdGhpcy5pdGVtc1xuICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5oYXNQZW5kaW5nVmFsdWVzKVxuICAgICAgLmZvckVhY2goKGl0ZW0pID0+IGl0ZW0ubG9hZEFzeW5jVmFsdWVzKCkpO1xuICB9XG5cbiAgcHVibGljIGxvYWRBc3luY0RlZmF1bHRzKCk6IHZvaWQge1xuICAgIGNvbnN0IHBlbmRpbmdJdGVtcyA9IHRoaXMuaXRlbXNcbiAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uZGVmYXVsdFZhbHVlRm5cbiAgICAgICAgICAmJiAoaXRlbS5wZXJzaXN0ZWRWYWx1ZSA9PT0gbnVsbCB8fCBpdGVtLnBlcnNpc3RlZFZhbHVlID09PSB1bmRlZmluZWQpO1xuICAgICAgfSk7XG5cbiAgICBpZiAocGVuZGluZ0l0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvcmtKb2luKFxuICAgICAgICBwZW5kaW5nSXRlbXNcbiAgICAgICAgICAubWFwKChpdGVtKSA9PiBpdGVtLmxvYWREZWZhdWx0VmFsdWUoKSlcbiAgICAgIClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcmVhZHkkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3JlYWR5JC5uZXh0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRTb3J0KCk6IEZpbHRlclNvcnQge1xuICAgIGxldCBzb3J0QnkgPSB0aGlzLmdldFNvcnRCeVZhbHVlKCk7XG4gICAgc29ydEJ5ID0gc29ydEJ5ID09PSAnX19hbGwnID8gbnVsbCA6IHNvcnRCeTtcblxuICAgIGxldCBzb3J0RGlyZWN0aW9uID0gdGhpcy5nZXRTb3J0RGlyZWN0aW9uVmFsdWUoKTtcbiAgICBzb3J0RGlyZWN0aW9uID0gc29ydERpcmVjdGlvbiA9PT0gJ19fYWxsJyA/IG51bGwgOiBzb3J0RGlyZWN0aW9uO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiBzb3J0QnksXG4gICAgICBkaXJlY3Rpb246IHNvcnREaXJlY3Rpb24sXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFNvcnRCeVZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLnNvcnRCeUl0ZW0gPyB0aGlzLnNvcnRCeUl0ZW0ubW9kZWwgOiBudWxsO1xuICB9XG5cbiAgcHVibGljIGdldFNvcnREaXJlY3Rpb25WYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zb3J0RGlyZWN0aW9uSXRlbSA/IHRoaXMuc29ydERpcmVjdGlvbkl0ZW0ubW9kZWwgOiBudWxsO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVNvcnQoc29ydDogSVNvcnRpbmdDaGFuZ2VFdmVudCkge1xuICAgIGlmIChzb3J0LnNvcnRCeSkge1xuICAgICAgdGhpcy5zb3J0QnlJdGVtLm1vZGVsID0gc29ydC5zb3J0Qnk7XG4gICAgfVxuXG4gICAgaWYgKHNvcnQuc29ydERpcmVjdGlvbikge1xuICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uSXRlbS5tb2RlbCA9IHNvcnQuc29ydERpcmVjdGlvbjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdmFsdWVzKG9ubHlQcmVzZW50ZWQgPSBmYWxzZSk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5yZWR1Y2UoKGFjYywgaXRlbSkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBpdGVtLnZhbHVlO1xuXG4gICAgICBpZiAoIW9ubHlQcmVzZW50ZWQgfHwgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgYWNjW2l0ZW0ubmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG4gIH1cblxuICBwdWJsaWMgdmFsdWVzQXNRdWVyeSh7XG4gICAgb25seVByZXNlbnRlZCA9IHRydWUsXG4gICAgaXRlbXMgPSBudWxsLFxuICAgIHBlcnNpc3RlZCA9IGZhbHNlLFxuICB9OiBJVmFsdWVBc1F1ZXJ5ID0ge30pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgY29uc3QgcGFyYW1zID0ge307XG5cbiAgICAoaXRlbXMgfHwgdGhpcy5pdGVtcykuZm9yRWFjaCgoZmlsdGVySXRlbTogQmFzZUl0ZW08YW55PikgPT4ge1xuICAgICAgY29uc3QgdmFsdWVzID0gcGVyc2lzdGVkXG4gICAgICAgID8gZmlsdGVySXRlbS5wZXJzaXN0YW5jZU9iamVjdFxuICAgICAgICA6IGZpbHRlckl0ZW0ucXVlcnlPYmplY3Q7XG5cbiAgICAgIE9iamVjdC5hc3NpZ24ocGFyYW1zLCB2YWx1ZXMpO1xuICAgIH0pO1xuXG4gICAgaWYgKG9ubHlQcmVzZW50ZWQpIHtcbiAgICAgIHJldHVybiBwaWNrQnkocGFyYW1zLCAodmFsKSA9PiB7XG4gICAgICAgIHJldHVybiB2YWwgIT09IG51bGwgJiYgdmFsICE9PSB2b2lkIDA7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG5cbiAgcHVibGljIGluaXRJdGVtVmFsdWVzKHA6IElGaWx0ZXJFeHRlcm5hbFBhcmFtcykge1xuICAgIHRoaXMuaXRlbXNcbiAgICAgIC5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGl0ZW0uaW5pdFZhbHVlcyhwW2l0ZW0ubmFtZV0pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9jcmVhdGVTb3J0aW5nSXRlbXMocCk7XG4gICAgdGhpcy5sb2FkQXN5bmNEZWZhdWx0cygpO1xuICAgIHRoaXMuX3N1YnNjcmliZVRvSXRlbXNDaGFuZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlSXRlbXNXaXRoVmFsdWVzKHZhbHVlczogSUZpbHRlckV4dGVybmFsUGFyYW1zKSB7XG4gICAgdGhpcy5pdGVtc1xuICAgICAgLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgaWYgKHZhbHVlc1tpdGVtLm5hbWVdKSB7XG4gICAgICAgICAgaXRlbS5tb2RlbCA9IHZhbHVlc1tpdGVtLm5hbWVdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW0uY2xlYXIoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBpZiAodGhpcy5zb3J0QnlJdGVtKSB7IHRoaXMuc29ydEJ5SXRlbS5jbGVhcigpOyB9XG4gICAgaWYgKHRoaXMuc29ydERpcmVjdGlvbkl0ZW0pIHsgdGhpcy5zb3J0RGlyZWN0aW9uSXRlbS5jbGVhcigpOyB9XG4gIH1cblxuICBwdWJsaWMgZGVzdHJveUl0ZW1zKCkge1xuICAgIHRoaXMuaXRlbXNcbiAgICAgIC5mb3JFYWNoKChpdGVtKSA9PiBpdGVtLmRlc3Ryb3koKSk7XG4gICAgdGhpcy5zb3J0QnlJdGVtPy5kZXN0cm95KCk7XG4gICAgdGhpcy5zb3J0RGlyZWN0aW9uSXRlbT8uZGVzdHJveSgpO1xuXG4gICAgdGhpcy5faXRlbXMgPSBbXTtcbiAgICB0aGlzLnNvcnRCeUl0ZW0gPSBudWxsO1xuICAgIHRoaXMuc29ydERpcmVjdGlvbkl0ZW0gPSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFNvbWUgaXRlbXMgbWlnaHQgbmVlZCB0byBsb2FkIGFzeW5jIHZhbHVlcyBiZWZvcmUgdGhleSB3aWxsIGJlIHNob3duXG4gICAqL1xuICBwdWJsaWMgcHJlcGFyZUl0ZW1zKCkge1xuICAgIGlmICghdGhpcy5faXRlbXNWYWx1ZXNMb2FkZWQpIHtcbiAgICAgIHRoaXMuX2l0ZW1zVmFsdWVzTG9hZGVkID0gdHJ1ZTtcblxuICAgICAgdGhpcy5sb2FkQXN5bmNWYWx1ZXMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlVmlzaWJsZUl0ZW1zKCk6IHZvaWQge1xuICAgIHRoaXMudmlzaWJsZUl0ZW1zID0gdGhpcy5pdGVtc1xuICAgICAgLmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0uaXNUeXBlS2V5d29yZCAmJiAhaXRlbS5oaWRlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZUl0ZW1zKGl0ZW1zOiBJRmlsdGVyQ29uZmlnSXRlbVtdKSB7XG4gICAgdGhpcy5faXRlbXMgPSBpdGVtc1xuICAgICAgLmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0uZGlzYWJsZSlcbiAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2l0ZW1zQnlOYW1lLmhhcyhpdGVtLm5hbWUpKSB7XG4gICAgICAgICAgdGhyb3cgRXJyb3IoJ0ZpbHRlciBpbml0IGVycm9yLiBJdGVtcyBuYW1lIG11c3QgYmUgdW5pcXVlLicpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX2l0ZW1zQnlOYW1lLnNldChpdGVtLm5hbWUsIG51bGwpO1xuXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAubWFwKChpdGVtKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbHRlckl0ZW0gPSBjcmVhdGVGaWx0ZXJJdGVtKGl0ZW0sIHsgY2FzZTogdGhpcy5fY29uZmlnLmNhc2UgfSk7XG5cbiAgICAgICAgaWYgKGZpbHRlckl0ZW0udHlwZSA9PT0gSXRlbVR5cGUuS2V5d29yZCkge1xuICAgICAgICAgIHRoaXMuX2hhc0tleXdvcmQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5faXRlbXNCeU5hbWUuc2V0KGl0ZW0ubmFtZSwgZmlsdGVySXRlbSk7XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlckl0ZW07XG4gICAgICB9KTtcblxuICB9XG5cbiAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9JdGVtc0NoYW5nZXMoKSB7XG4gICAgdGhpcy5pdGVtc1xuICAgICAgLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgaXRlbS52YWx1ZUNoYW5nZSRcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbChpdGVtLmRlc3Ryb3kkKSxcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9pdGVtc0NoYW5nZSQubmV4dChpdGVtKTtcbiAgICAgICAgICB9KVxuICAgICAgfSk7XG5cbiAgICBpZiAodGhpcy5fY29uZmlnLnNvcnRWYWx1ZXM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5zb3J0QnlJdGVtLnZhbHVlQ2hhbmdlJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5zb3J0QnlJdGVtLmRlc3Ryb3kkKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9pdGVtc0NoYW5nZSQubmV4dCh0aGlzLnNvcnRCeUl0ZW0pO1xuICAgICAgICB9KTtcblxuICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uSXRlbS52YWx1ZUNoYW5nZSRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuc29ydERpcmVjdGlvbkl0ZW0uZGVzdHJveSQpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2l0ZW1zQ2hhbmdlJC5uZXh0KHRoaXMuc29ydERpcmVjdGlvbkl0ZW0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9sYXp5SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlYWR5JFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoc3RhdGUpID0+IHN0YXRlKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVZpc2libGVJdGVtcygpO1xuICAgICAgICB0aGlzLl9zZXRLZXl3b3JkSXRlbSgpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVTb3J0aW5nSXRlbXMocCkge1xuICAgIGlmICh0aGlzLl9jb25maWcuc29ydFZhbHVlcz8ubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qgc29ydEJ5SXRlbSA9IHtcbiAgICAgICAgbmFtZTogU09SVF9CWV9GSUVMRCxcbiAgICAgICAgdHlwZTogSXRlbVR5cGUuU2VsZWN0LFxuICAgICAgICBsYWJlbDogJ1NvcnQgQnknLFxuICAgICAgICB2YWx1ZXM6IHRoaXMuX2NvbmZpZy5zb3J0VmFsdWVzXG4gICAgICB9IGFzIElGaWx0ZXJDb25maWdTZWxlY3RJdGVtO1xuXG5cbiAgICAgIGlmICh0aGlzLl9jb25maWcuc29ydCAmJiB0aGlzLl9jb25maWcuc29ydC52YWx1ZSkge1xuICAgICAgICBzb3J0QnlJdGVtLmRlZmF1bHQgPSB0aGlzLl9jb25maWcuc29ydC52YWx1ZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zb3J0QnlJdGVtID0gbmV3IFNpbXBsZVNlbGVjdEl0ZW0oXG4gICAgICAgIHNvcnRCeUl0ZW0sXG4gICAgICAgIG51bGwsXG4gICAgICApO1xuICAgICAgdGhpcy5zb3J0QnlJdGVtLmluaXRWYWx1ZXMocFt0aGlzLnNvcnRCeUl0ZW0ubmFtZV0pO1xuXG4gICAgICBjb25zdCBzb3J0RGlyZWN0aW9uSXRlbSA9IHtcbiAgICAgICAgbmFtZTogU09SVF9ESVJFQ1RJT05fRklFTEQsXG4gICAgICAgIHR5cGU6IEl0ZW1UeXBlLlNlbGVjdCxcbiAgICAgICAgbGFiZWw6ICdTb3J0IERpcmVjdGlvbicsXG4gICAgICAgIHZhbHVlczogW1xuICAgICAgICAgIHsgbmFtZTogJ0FzY2VuZGluZycsIHZhbHVlOiAnYXNjJyB9LFxuICAgICAgICAgIHsgbmFtZTogJ0Rlc2NlbmRpbmcnLCB2YWx1ZTogJ2Rlc2MnIH1cbiAgICAgICAgXVxuICAgICAgfSBhcyBJRmlsdGVyQ29uZmlnU2VsZWN0SXRlbTtcblxuICAgICAgaWYgKHRoaXMuX2NvbmZpZy5zb3J0ICYmIHRoaXMuX2NvbmZpZy5zb3J0LmRpcmVjdGlvbikge1xuICAgICAgICBzb3J0RGlyZWN0aW9uSXRlbS5kZWZhdWx0ID0gdGhpcy5fY29uZmlnLnNvcnQuZGlyZWN0aW9uO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNvcnREaXJlY3Rpb25JdGVtID0gbmV3IFNpbXBsZVNlbGVjdEl0ZW0oXG4gICAgICAgIHNvcnREaXJlY3Rpb25JdGVtLFxuICAgICAgICBudWxsXG4gICAgICApO1xuICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uSXRlbS5pbml0VmFsdWVzKHBbdGhpcy5zb3J0RGlyZWN0aW9uSXRlbS5uYW1lXSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0S2V5d29yZEl0ZW0oKSB7XG4gICAgdGhpcy5rZXl3b3JkSXRlbSA9IHRoaXNcbiAgICAgIC5pdGVtc1xuICAgICAgLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaXNUeXBlS2V5d29yZCkgYXMgVGV4dEl0ZW07XG4gIH1cbn1cbiJdfQ==
@@ -10,7 +10,7 @@ var FsFilterActionKebabActionsComponent = /** @class */ (function () {
10
10
  FsFilterActionKebabActionsComponent = __decorate([
11
11
  Component({
12
12
  selector: 'fs-filter-action-kebab-actions',
13
- template: "<button type=\"button\"\n mat-icon-button\n class=\"menu-button\"\n [fsMenuTriggerFor]=\"kebabActionsMenu\">\n <mat-icon>more_vert</mat-icon>\n</button>\n<fs-menu #kebabActionsMenu>\n <ng-container *ngFor=\"let action of kebabActions\">\n <ng-container [ngSwitch]=\"action.mode\">\n <!-- Case when actions was collapsed from action with mode = 'menu'-->\n <ng-container *ngSwitchCase=\"'menu'\">\n <ng-container *ngFor=\"let childAction of action.items\">\n <ng-container *ngIf=\"childAction.isGroup else simpleMenuItem\">\n <fs-menu-group>\n <ng-template fs-group-menu-item-template>\n {{ action.label }} <mat-icon style=\"margin: 0;\">arrow_right</mat-icon> {{childAction.label}}\n </ng-template>\n <ng-container *ngFor=\"let subAction of childAction.items\">\n <ng-template fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [hidden]=\"!(subAction.visible$ | async)\"\n (click)=\"subAction.click($event)\">\n <mat-icon *ngIf=\"subAction.icon\">{{subAction.icon}}</mat-icon>\n {{subAction.label}}\n </ng-template>\n </ng-container>\n </fs-menu-group>\n </ng-container>\n <ng-template #simpleMenuItem>\n <ng-template fs-menu-item\n [link]=\"childAction.routerLink?.link\"\n [queryParams]=\"childAction.routerLink?.queryParams\"\n [hidden]=\"!(childAction.visible$ | async)\"\n (click)=\"childAction.click($event);\">\n <mat-icon *ngIf=\"childAction.icon\">{{childAction.icon}}</mat-icon>\n {{ action.label }} <mat-icon style=\"margin: 0;\">arrow_right</mat-icon>{{ childAction.label }}\n </ng-template>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <ng-template fs-menu-item\n (click)=\"action.click($event)\"\n [fsClass]=\"action.classArray\"\n >\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon> {{action.label}}\n </ng-template>\n </ng-container>\n\n </ng-container>\n </ng-container>\n</fs-menu>\n",
13
+ template: "<button type=\"button\"\n mat-icon-button\n class=\"menu-button\"\n [fsMenuTriggerFor]=\"kebabActionsMenu\">\n <mat-icon>more_vert</mat-icon>\n</button>\n<fs-menu #kebabActionsMenu>\n <ng-container *ngFor=\"let action of kebabActions\">\n <ng-container [ngSwitch]=\"action.mode\">\n <!-- Case when actions was collapsed from action with mode = 'menu'-->\n <ng-container *ngSwitchCase=\"'menu'\">\n <ng-container *ngFor=\"let childAction of action.items\">\n <ng-container *ngIf=\"childAction.isGroup else simpleMenuItem\">\n <fs-menu-group>\n <ng-template fs-group-menu-item-template>\n {{ action.label }} <mat-icon style=\"margin: 0;\">arrow_right</mat-icon> {{childAction.label}}\n </ng-template>\n <ng-container *ngFor=\"let subAction of childAction.items\">\n <ng-template fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [hidden]=\"!(subAction.visible$ | async)\"\n (click)=\"subAction.click($event)\">\n <mat-icon *ngIf=\"subAction.icon\">{{subAction.icon}}</mat-icon>\n {{subAction.label}}\n </ng-template>\n </ng-container>\n </fs-menu-group>\n </ng-container>\n <ng-template #simpleMenuItem>\n <ng-template fs-menu-item\n [link]=\"childAction.routerLink?.link\"\n [queryParams]=\"childAction.routerLink?.queryParams\"\n [hidden]=\"!(childAction.visible$ | async)\"\n (click)=\"childAction.click($event);\">\n <mat-icon *ngIf=\"childAction.icon\">{{childAction.icon}}</mat-icon>\n {{ action.label }} <mat-icon style=\"margin: 0;\">arrow_right</mat-icon>{{ childAction.label }}\n </ng-template>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'file'\">\n <ng-template fs-menu-item\n [fsClass]=\"action.classArray\"\n >\n <fs-file\n class=\"action-button\"\n [multiple]=\"action.multiple\"\n (select)=\"action.fileSelected($event)\"\n (error)=\"action.fileError($event)\"\n (clicked)=\"action.click($event)\">\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon> {{action.label}}\n </fs-file>\n </ng-template>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <ng-template fs-menu-item\n (click)=\"action.click($event)\"\n [fsClass]=\"action.classArray\"\n >\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon> {{action.label}}\n </ng-template>\n </ng-container>\n\n </ng-container>\n </ng-container>\n</fs-menu>\n",
14
14
  changeDetection: ChangeDetectionStrategy.OnPush,
15
15
  styles: [".menu-button{width:36px;height:36px;line-height:36px}"]
16
16
  })
@@ -18,4 +18,4 @@ var FsFilterActionKebabActionsComponent = /** @class */ (function () {
18
18
  return FsFilterActionKebabActionsComponent;
19
19
  }());
20
20
  export { FsFilterActionKebabActionsComponent };
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWtlYmFiLWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZpcmVzdGl0Y2gvZmlsdGVyLyIsInNvdXJjZXMiOlsiYXBwL2NvbXBvbmVudHMvYWN0aW9uLWtlYmFiLWFjdGlvbnMvYWN0aW9uLWtlYmFiLWFjdGlvbnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVUxRTtJQUFBO0lBS0EsQ0FBQztJQUZDO1FBREMsS0FBSyxFQUFFOzs2RUFDc0I7SUFIbkIsbUNBQW1DO1FBTi9DLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxnQ0FBZ0M7WUFFMUMsKzhFQUFvRDtZQUNwRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7U0FDaEQsQ0FBQztPQUNXLG1DQUFtQyxDQUsvQztJQUFELDBDQUFDO0NBQUEsQUFMRCxJQUtDO1NBTFksbUNBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9hY3Rpb24ubW9kZWwnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLWZpbHRlci1hY3Rpb24ta2ViYWItYWN0aW9ucycsXG4gIHN0eWxlVXJsczogWycuL2FjdGlvbi1rZWJhYi1hY3Rpb25zLmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb24ta2ViYWItYWN0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGc0ZpbHRlckFjdGlvbktlYmFiQWN0aW9uc0NvbXBvbmVudCB7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGtlYmFiQWN0aW9uczogQWN0aW9uW107XG5cbn1cbiJdfQ==
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWtlYmFiLWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZpcmVzdGl0Y2gvZmlsdGVyLyIsInNvdXJjZXMiOlsiYXBwL2NvbXBvbmVudHMvYWN0aW9uLWtlYmFiLWFjdGlvbnMvYWN0aW9uLWtlYmFiLWFjdGlvbnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVUxRTtJQUFBO0lBS0EsQ0FBQztJQUZDO1FBREMsS0FBSyxFQUFFOzs2RUFDc0I7SUFIbkIsbUNBQW1DO1FBTi9DLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxnQ0FBZ0M7WUFFMUMsZ2dHQUFvRDtZQUNwRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7U0FDaEQsQ0FBQztPQUNXLG1DQUFtQyxDQUsvQztJQUFELDBDQUFDO0NBQUEsQUFMRCxJQUtDO1NBTFksbUNBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9hY3Rpb24ubW9kZWwnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZzLWZpbHRlci1hY3Rpb24ta2ViYWItYWN0aW9ucycsXG4gIHN0eWxlVXJsczogWycuL2FjdGlvbi1rZWJhYi1hY3Rpb25zLmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb24ta2ViYWItYWN0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGc0ZpbHRlckFjdGlvbktlYmFiQWN0aW9uc0NvbXBvbmVudCB7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGtlYmFiQWN0aW9uczogQWN0aW9uW107XG5cbn1cbiJdfQ==