@coolon/angular-ui-powerups 16.1.0-aplpha.123 → 16.1.0-aplpha.125

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  import { Injector } from "@angular/core";
2
- import { assert, DelegatingListModel, DependsOnOptions, DirtyTrackingForm, Dsl, EventListenerList, GarbageCollector, MutableListModel, proxify, ProxyRegistry, SelectionModel, ValueModel } from "@coolon/pectin";
2
+ import { assert, DelegatingListModel, DependsOnOptions, DirtyTrackingForm, Dsl, EventListenerList, GarbageCollector, MutableListModel, ProxyRegistry } from "@coolon/pectin";
3
3
  import { lang } from "@coolon/typescript-utilities";
4
- import { isFunction, isNil } from "lodash-es";
4
+ import { isFunction } from "lodash-es";
5
5
  import { ColumnManager } from "./column/column-manager";
6
6
  import { CustomTemplateColumnModel } from "./column/custom-template-column-model";
7
7
  import { CustomValueColumnModel } from "./column/custom-value-column-model";
@@ -56,7 +56,6 @@ export class AbstractTableModel extends GarbageCollector {
56
56
  textSearchPredicate$;
57
57
  identityOf;
58
58
  dataSourceEmpty$;
59
- selectionModelProxy = proxify((SelectionModel));
60
59
  selectedItems$;
61
60
  leadSelection$;
62
61
  hasSelection$;
@@ -75,13 +74,16 @@ export class AbstractTableModel extends GarbageCollector {
75
74
  return (!regex || !!columns.find(c => regex.test(c.getSearchTextFor(row))));
76
75
  };
77
76
  });
77
+ this.selectionColumnModel = new SelectionColumnModel("selection-column", this.columnManager, () => this.getColumnTextProperties("selection-column"));
78
+ this.addColumn(this.selectionColumnModel, { before: null }); // first column
79
+ this.addRowClass("aup-row-selected", row => this.selectionColumnModel.isSelected(row));
78
80
  this.firstEditableColumn$ = chain(this.columns$).select(c => c.hasEditorPortal()).first();
79
81
  this.firstVisibleColumn$ = chain(this.visibleColumns$).first();
80
82
  this.lastVisibleColumn$ = chain(this.visibleColumns$).last();
81
83
  this.rowSelectionDisabledOnAllColumns$ = chain(this.columnManager.visibleColumns$).select(column => column.isRowSelectionEnabled()).count().equals(0);
82
84
  this.dataSourceEmpty$ = chain(this.dataSource$).isEmpty();
83
- this.selectedItems$ = this.selectionModelProxy.selectedItems$;
84
- this.leadSelection$ = this.selectionModelProxy.leadSelection$;
85
+ this.selectedItems$ = this.selectionColumnModel.selectionModel.selectedItems$;
86
+ this.leadSelection$ = this.selectionColumnModel.selectionModel.leadSelection$;
85
87
  this.hasSelection$ = chain(this.selectedItems$).isNotEmpty();
86
88
  }
87
89
  setDataSource(dataSource$) {
@@ -183,21 +185,8 @@ export class AbstractTableModel extends GarbageCollector {
183
185
  const columnId = options?.columnId || property.toString();
184
186
  return this.addColumn(new ListPropertyColumnModel(columnId, this.columnManager, property, () => this.getColumnTextProperties(columnId)));
185
187
  }
186
- // TODO: clean this up and assign the selection model on teh table directly.
187
- // tableModel.useSelectionModel(model) and have the seleciton column automatically
188
- // added. Need to look at how we're using the visibility controls as well.
189
- // Should also lazy create the selection column model if someone accesses it.
190
- _addSelectionColumn(selectionModel, visible) {
191
- assert.isNil(this.selectionColumnModel);
192
- const columnId = "selection-column";
193
- this.selectionColumnModel = new SelectionColumnModel(columnId, this.columnManager, () => this.getColumnTextProperties(columnId), this.selectionModelProxy);
188
+ useSelectionModel(selectionModel) {
194
189
  this.selectionColumnModel.useSelectionModel(selectionModel);
195
- this.addRowClass("aup-row-selected", row => this.selectionColumnModel.isSelected(row));
196
- const selectionColumnModel = this.addColumn(this.selectionColumnModel, { before: null }); // first column
197
- if (!isNil(visible)) {
198
- selectionColumnModel.visibleWhile(visible instanceof ValueModel ? visible : ValueModel.constant(visible));
199
- }
200
- return selectionColumnModel;
201
190
  }
202
191
  addEditControls(saveCommandFactory, formFactory) {
203
192
  this.saveCommandFactory = saveCommandFactory;
@@ -269,11 +258,10 @@ export class AbstractTableModel extends GarbageCollector {
269
258
  return this.hasUserSelectionModelThatIsEnabled() && !this.rowSelectionDisabledOnAllColumns$.value;
270
259
  }
271
260
  hasUserSelectionModelThatIsEnabled() {
272
- const userSelectionModel = this.selectionColumnModel?.selectionModel.getProxyTarget();
273
- return !!userSelectionModel && userSelectionModel.enabled$.value;
261
+ return this.selectionColumnModel.selectionModel.enabled$.value;
274
262
  }
275
263
  getSelectionModel() {
276
- return this.selectionColumnModel?.selectionModel;
264
+ return this.selectionColumnModel.selectionModel;
277
265
  }
278
266
  isHoverEnabled() {
279
267
  return this.isRowSelectionEnabled() || this.rowClickListeners.listenerCount > 0;
@@ -303,4 +291,4 @@ export class AbstractTableModel extends GarbageCollector {
303
291
  }
304
292
  }
305
293
  ProxyRegistry.registerOneTimeBinding(AbstractTableModel);
306
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtdGFibGUtbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy9hYnN0cmFjdC10YWJsZS1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQW9CLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQ0wsTUFBTSxFQUlOLG1CQUFtQixFQUFFLGdCQUFnQixFQUNyQyxpQkFBaUIsRUFFakIsR0FBRyxFQUNILGlCQUFpQixFQUNqQixnQkFBZ0IsRUFHaEIsZ0JBQWdCLEVBRWhCLE9BQU8sRUFDUCxhQUFhLEVBQ2IsY0FBYyxFQUVkLFVBQVUsRUFFWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUVsRCxPQUFPLEVBQUMsVUFBVSxFQUFFLEtBQUssRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUM1QyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFJdEQsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDMUUsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDL0UsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDM0UsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBRWxELE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLHVDQUF1QyxDQUFD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QyxDQUFDO0lBQzNGLENBQUM7SUFFRCxTQUFTLENBQUMsR0FBUTtRQUNoQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxZQUFZLENBQUMsUUFBNEI7UUFDdkMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxXQUE2QixFQUFFLEdBQVE7UUFDeEQsSUFBSSxJQUFJLENBQUMsd0JBQXdCLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDOUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNyQjthQUFNO1lBQ0wsZ0JBQWdCO1lBQ2hCLDZFQUE2RTtZQUM3RSx3RUFBd0U7WUFDeEUsdURBQXVEO1lBQ3ZELHNFQUFzRTtZQUN0RSxLQUFLO1NBQ047UUFFRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztDQUVGO0FBRUQsYUFBYSxDQUFDLHNCQUFzQixDQUFDLGtCQUFrQixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudFR5cGV9IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xuaW1wb3J0IHtDb21wb25lbnRQb3J0YWx9IGZyb20gXCJAYW5ndWxhci9jZGsvcG9ydGFsXCI7XG5pbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBJbmplY3Rvcn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIGFzc2VydCxcbiAgQm9vbGVhblZhbHVlTW9kZWxDaGFpbixcbiAgQ29tbWFuZCxcbiAgQ29uc3RydWN0YWJsZSxcbiAgRGVsZWdhdGluZ0xpc3RNb2RlbCwgRGVwZW5kc09uT3B0aW9ucyxcbiAgRGlydHlUcmFja2luZ0Zvcm0sXG4gIERpc3Bvc2FibGUsXG4gIERzbCxcbiAgRXZlbnRMaXN0ZW5lckxpc3QsXG4gIEdhcmJhZ2VDb2xsZWN0b3IsIEhhc1ZhbHVlLFxuICBMaXN0TW9kZWwsXG4gIE1hcE1vZGVsQ2hhaW4sXG4gIE11dGFibGVMaXN0TW9kZWwsXG4gIFByb3hpZmllZCxcbiAgcHJveGlmeSxcbiAgUHJveHlSZWdpc3RyeSxcbiAgU2VsZWN0aW9uTW9kZWwsXG4gIFR5cGVzLFxuICBWYWx1ZU1vZGVsLFxuICBWYWx1ZU1vZGVsQ2hhaW5cbn0gZnJvbSBcIkBjb29sb24vcGVjdGluXCI7XG5pbXBvcnQge2xhbmd9IGZyb20gXCJAY29vbG9uL3R5cGVzY3JpcHQtdXRpbGl0aWVzXCI7XG5cbmltcG9ydCB7aXNGdW5jdGlvbiwgaXNOaWx9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7Q29sdW1uTWFuYWdlcn0gZnJvbSBcIi4vY29sdW1uL2NvbHVtbi1tYW5hZ2VyXCI7XG5pbXBvcnQge0NlbGxSZW5kZXJlck9wdGlvbnMsIENvbHVtbk1vZGVsLCBPbkNvbXBvbmVudEluaXR9IGZyb20gXCIuL2NvbHVtbi9jb2x1bW4tbW9kZWxcIjtcbmltcG9ydCB7Q29sdW1uT3JkZXJNYW5hZ2VyfSBmcm9tIFwiLi9jb2x1bW4vY29sdW1uLW9yZGVyLW1hbmFnZXJcIjtcbmltcG9ydCB7Q29sdW1uVGV4dFByb3BlcnRpZXN9IGZyb20gXCIuL2NvbHVtbi9jb2x1bW4tdGV4dC1wcm9wZXJ0aWVzXCI7XG5pbXBvcnQge0N1c3RvbVRlbXBsYXRlQ29sdW1uTW9kZWx9IGZyb20gXCIuL2NvbHVtbi9jdXN0b20tdGVtcGxhdGUtY29sdW1uLW1vZGVsXCI7XG5pbXBvcnQge0N1c3RvbVZhbHVlQ29sdW1uTW9kZWx9IGZyb20gXCIuL2NvbHVtbi9jdXN0b20tdmFsdWUtY29sdW1uLW1vZGVsXCI7XG5pbXBvcnQge0VkaXRvckNvbnRyb2xDb2x1bW5Nb2RlbH0gZnJvbSBcIi4vY29sdW1uL2VkaXRvci1jb250cm9scy1jb2x1bW4tbW9kZWxcIjtcbmltcG9ydCB7TGlzdFByb3BlcnR5Q29sdW1uTW9kZWx9IGZyb20gXCIuL2NvbHVtbi9saXN0LXByb3BlcnktY29sdW1uLW1vZGVsXCI7XG5pbXBvcnQge1Byb3BlcnR5Q29sdW1uTW9kZWx9IGZyb20gXCIuL2NvbHVtbi9wcm9wZXJ0eS1jb2x1bW4tbW9kZWxcIjtcbmltcG9ydCB7U2VsZWN0aW9uQ29sdW1uTW9kZWx9IGZyb20gXCIuL2NvbHVtbi9zZWxlY3Rpb24tY29sdW1uLW1vZGVsXCI7XG5pbXBvcnQge0VkaXRTZXNzaW9ufSBmcm9tIFwiLi9lZGl0b3IvZWRpdC1zZXNzaW9uXCI7XG5cbmltcG9ydCB7Q29sdW1uVGV4dFNlYXJjaEZvcm1hdHRlcn0gZnJvbSBcIi4vZmlsdGVyL2NvbHVtbi10ZXh0LXNlYXJjaC1mb3JtYXR0ZXJcIjtcbmltcG9ydCB7VGV4dFNlYXJjaFByZWRpY2F0ZX0gZnJvbSBcIi4vZmlsdGVyL3RleHQtc2VhcmNoLXByZWRpY2F0ZVwiO1xuaW1wb3J0IHtDZWxsUmVuZGVyZXJ9IGZyb20gXCIuL3JlbmRlcmVyL2NlbGwtcmVuZGVyZXJcIjtcbmltcG9ydCB7Rm9vdGVyUm93TW9kZWx9IGZyb20gXCIuL2Zvb3Rlci9mb290ZXItcm93LW1vZGVsXCI7XG5pbXBvcnQge1xuICBUYWJsZU1vcmVNZW51UG9wdXBDb21wb25lbnRcbn0gZnJvbSBcIi4vcmVuZGVyZXIvdGFibGUtbW9yZS1tZW51L3RhYmxlLW1vcmUtbWVudS1wb3B1cC90YWJsZS1tb3JlLW1lbnUtcG9wdXAuY29tcG9uZW50XCI7XG5pbXBvcnQge1RhYmxlTW9yZU1lbnVDb21wb25lbnR9IGZyb20gXCIuL3JlbmRlcmVyL3RhYmxlLW1vcmUtbWVudS90YWJsZS1tb3JlLW1lbnUuY29tcG9uZW50XCI7XG5pbXBvcnQgRGVmYXVsdEFycmF5Rm9ybWF0dGVyID0gQ29sdW1uVGV4dFNlYXJjaEZvcm1hdHRlci5EZWZhdWx0QXJyYXlGb3JtYXR0ZXI7XG5pbXBvcnQgRGVmYXVsdFZhbHVlRm9ybWF0dGVyID0gQ29sdW1uVGV4dFNlYXJjaEZvcm1hdHRlci5EZWZhdWx0VmFsdWVGb3JtYXR0ZXI7XG5cbi8vIGV4cG9ydCB0eXBlIFN0cmluZ1Byb3BlcnRpZXNPZjxUPiA9IHsgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyBzdHJpbmcgPyBLIDogbmV2ZXIgfVtrZXlvZiBUXTtcbi8vIGV4cG9ydCB0eXBlIE51bWJlclByb3BlcnRpZXNPZjxUPiA9IHsgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyBudW1iZXIgPyBLIDogbmV2ZXIgfVtrZXlvZiBUXTtcblxuY2xhc3MgUm93Q2xhc3M8Um93PiB7XG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGNsYXNzTmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgICByZWFkb25seSBtYXRjaGVzOiAocm93OiBSb3cpID0+IGJvb2xlYW4pIHtcbiAgfVxufVxuXG5jbGFzcyBSb3dBdHRyaWJ1dGU8Um93PiB7XG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGF0dHJpYnV0ZU5hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgcmVhZG9ubHkgZ2V0VmFsdWU6IChyb3c6IFJvdykgPT4gc3RyaW5nKSB7XG4gIH1cbn1cblxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RUYWJsZU1vZGVsPFJvdyBleHRlbmRzIG9iamVjdD4gZXh0ZW5kcyBHYXJiYWdlQ29sbGVjdG9yIHtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2RhdGFTb3VyY2UkID0gdGhpcy5yZWdpc3RlckRpc3Bvc2FibGUobmV3IERlbGVnYXRpbmdMaXN0TW9kZWw8Um93PigpKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9maWx0ZXJlZFJvd3MkID0gdGhpcy5yZWdpc3RlckRpc3Bvc2FibGUobmV3IERlbGVnYXRpbmdMaXN0TW9kZWw8Um93PigpKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF92aXNpYmxlUm93cyQgPSB0aGlzLnJlZ2lzdGVyRGlzcG9zYWJsZShuZXcgRGVsZWdhdGluZ0xpc3RNb2RlbDxSb3c+KCkpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBjb2x1bW5NYW5hZ2VyID0gdGhpcy5yZWdpc3RlckRpc3Bvc2FibGUobmV3IENvbHVtbk1hbmFnZXI8Um93PigpKTtcblxuICBwcml2YXRlIF9lZGl0b3JTZXNzaW9ucyA9IG5ldyBNdXRhYmxlTGlzdE1vZGVsPEVkaXRTZXNzaW9uPFJvdz4+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jvd3NCZWluZ0VkaXRlZCQ6IE11dGFibGVMaXN0TW9kZWw8Um93PjtcbiAgcHJpdmF0ZSBzYXZlQ29tbWFuZEZhY3Rvcnk6IENvbW1hbmQuRmFjdG9yeTxEaXJ0eVRyYWNraW5nRm9ybTxSb3c+LCBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPj47XG4gIHByaXZhdGUgX2VkaXRvclNlc3Npb25CeVJvd0lkOiBNYXBNb2RlbENoYWluPGFueSwgRWRpdFNlc3Npb248Um93Pj47XG5cbiAgcHJpdmF0ZSByZWFkb25seSByb3dDbGFzc05hbWVQcmVkaWNhdGVzOiBSb3dDbGFzczxSb3c+W10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSByb3dBdHRyaWJ1dGVHZW5lcmF0b3JzOiBSb3dBdHRyaWJ1dGU8Um93PltdID0gW107XG5cbiAgcHJpdmF0ZSBfY29sdW1uVGV4dFByb3BlcnRpZXNMb29rdXA6IHsgW2NvbHVtbk5hbWU6IHN0cmluZ106IENvbHVtblRleHRQcm9wZXJ0aWVzIH07XG5cbiAgcmVhZG9ubHkgZWRpdGluZyQ6IEJvb2xlYW5WYWx1ZU1vZGVsQ2hhaW47XG4gIHJlYWRvbmx5IGZpcnN0RWRpdGFibGVDb2x1bW4kOiBWYWx1ZU1vZGVsQ2hhaW48Q29sdW1uTW9kZWw8Um93Pj47XG4gIHByaXZhdGUgc2VsZWN0aW9uQ29sdW1uTW9kZWw6IFNlbGVjdGlvbkNvbHVtbk1vZGVsPFJvdz47XG4gIHByaXZhdGUgcm93U2VsZWN0aW9uRGlzYWJsZWRPbkFsbENvbHVtbnMkOiBCb29sZWFuVmFsdWVNb2RlbENoYWluO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvd0NsaWNrTGlzdGVuZXJzID0gbmV3IEV2ZW50TGlzdGVuZXJMaXN0PChyb3c6IFJvdykgPT4gdm9pZD4oKTtcbiAgcmVhZG9ubHkgZmlyc3RWaXNpYmxlQ29sdW1uJDogVmFsdWVNb2RlbDxDb2x1bW5Nb2RlbDxSb3c+PjtcbiAgcmVhZG9ubHkgbGFzdFZpc2libGVDb2x1bW4kOiBWYWx1ZU1vZGVsPENvbHVtbk1vZGVsPFJvdz4+O1xuXG4gIHByaXZhdGUgX2NyZWF0ZUZvcm06IChyb3c6IFJvdykgPT4gRGlydHlUcmFja2luZ0Zvcm08Um93PiA9IChyb3cpID0+IG5ldyBEaXJ0eVRyYWNraW5nRm9ybTxSb3c+KCk7XG4gIHJlYWRvbmx5IHRleHRTZWFyY2hQcmVkaWNhdGUkOiBWYWx1ZU1vZGVsPFRleHRTZWFyY2hQcmVkaWNhdGU8Um93Pj47XG4gIHByb3RlY3RlZCBpZGVudGl0eU9mOiAoaXRlbTogUm93KSA9PiBhbnk7XG4gIHJlYWRvbmx5IGRhdGFTb3VyY2VFbXB0eSQ6IFZhbHVlTW9kZWw8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0aW9uTW9kZWxQcm94eSA9IHByb3hpZnkoU2VsZWN0aW9uTW9kZWw8Um93PikgYXMgUHJveGlmaWVkPFNlbGVjdGlvbk1vZGVsPFJvdz4+O1xuXG4gIHJlYWRvbmx5IHNlbGVjdGVkSXRlbXMkOiBMaXN0TW9kZWw8Um93PjtcbiAgcmVhZG9ubHkgbGVhZFNlbGVjdGlvbiQ6IFZhbHVlTW9kZWw8Um93PjtcbiAgcmVhZG9ubHkgaGFzU2VsZWN0aW9uJDogQm9vbGVhblZhbHVlTW9kZWxDaGFpbjtcbiAgZm9vdGVyUm93TW9kZWw6IEZvb3RlclJvd01vZGVsLkltcGw8YW55PjtcbiAgcHJpdmF0ZSByZWFkb25seSBfdmlld0RlcGVuZGVuY2llcyA9IG5ldyBTZXQ8SGFzVmFsdWU8YW55Pj4oKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBjb25zdCB7Y2hhaW59ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuICAgIHRoaXMuX3Jvd3NCZWluZ0VkaXRlZCQgPSBuZXcgTXV0YWJsZUxpc3RNb2RlbDxSb3c+KFtdLCB7XG4gICAgICBpZGVudGlmaWVkV2l0aDogcm93ID0+IHRoaXMuaWRlbnRpdHlPZihyb3cpXG4gICAgfSk7XG4gICAgdGhpcy5fZWRpdG9yU2Vzc2lvbkJ5Um93SWQgPSBjaGFpbih0aGlzLl9lZGl0b3JTZXNzaW9ucykuaW5kZXhCeShcInJvd0lkXCIpO1xuICAgIHRoaXMuZWRpdGluZyQgPSBjaGFpbih0aGlzLl9lZGl0b3JTZXNzaW9ucykuY291bnQoKS5pc0dyZWF0ZXJUaGFuKDApO1xuXG4gICAgdGhpcy50ZXh0U2VhcmNoUHJlZGljYXRlJCA9IGNoYWluKHRoaXMudmlzaWJsZUNvbHVtbnMkKS5yZWR1Y2VBbGwoY29sdW1ucyA9PiB7XG4gICAgICByZXR1cm4gKHJvdzogUm93LCByZWdleDogUmVnRXhwKSA9PiB7XG4gICAgICAgIHJldHVybiAoIXJlZ2V4IHx8ICEhY29sdW1ucy5maW5kKGMgPT4gcmVnZXgudGVzdChjLmdldFNlYXJjaFRleHRGb3Iocm93KSkpKTtcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgdGhpcy5maXJzdEVkaXRhYmxlQ29sdW1uJCA9IGNoYWluKHRoaXMuY29sdW1ucyQpLnNlbGVjdChjID0+IGMuaGFzRWRpdG9yUG9ydGFsKCkpLmZpcnN0KCk7XG4gICAgdGhpcy5maXJzdFZpc2libGVDb2x1bW4kID0gY2hhaW4odGhpcy52aXNpYmxlQ29sdW1ucyQpLmZpcnN0KCk7XG4gICAgdGhpcy5sYXN0VmlzaWJsZUNvbHVtbiQgPSBjaGFpbih0aGlzLnZpc2libGVDb2x1bW5zJCkubGFzdCgpO1xuXG4gICAgdGhpcy5yb3dTZWxlY3Rpb25EaXNhYmxlZE9uQWxsQ29sdW1ucyQgPSBjaGFpbih0aGlzLmNvbHVtbk1hbmFnZXIudmlzaWJsZUNvbHVtbnMkKS5zZWxlY3QoY29sdW1uID0+IGNvbHVtbi5pc1Jvd1NlbGVjdGlvbkVuYWJsZWQoKSkuY291bnQoKS5lcXVhbHMoMCk7XG5cbiAgICB0aGlzLmRhdGFTb3VyY2VFbXB0eSQgPSBjaGFpbih0aGlzLmRhdGFTb3VyY2UkKS5pc0VtcHR5KCk7XG5cbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMkID0gdGhpcy5zZWxlY3Rpb25Nb2RlbFByb3h5LnNlbGVjdGVkSXRlbXMkO1xuICAgIHRoaXMubGVhZFNlbGVjdGlvbiQgPSB0aGlzLnNlbGVjdGlvbk1vZGVsUHJveHkubGVhZFNlbGVjdGlvbiQ7XG4gICAgdGhpcy5oYXNTZWxlY3Rpb24kID0gY2hhaW4odGhpcy5zZWxlY3RlZEl0ZW1zJCkuaXNOb3RFbXB0eSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldERhdGFTb3VyY2UoZGF0YVNvdXJjZSQpIHtcbiAgICB0aGlzLl9kYXRhU291cmNlJC5zZXREZWxlZ2F0ZShkYXRhU291cmNlJCk7XG4gIH1cblxuICAvKipcbiAgICogVG9kbzogbWFrZSB0aGlzIGZvcmNlIG9uZSB0YWJsZSBhdCBhIHRpbWVcbiAgICogQHBhcmFtIGluamVjdG9yXG4gICAqIEBwYXJhbSBpZGVudGl0eU9mXG4gICAqIEBwYXJhbSByZXN0XG4gICAqL1xuICBpbml0aWFsaXNlKGluamVjdG9yOiBJbmplY3RvciwgaWRlbnRpdHlPZjogKGl0ZW06IFJvdykgPT4gYW55KSB7XG4gICAgLy8gbm90IHN1cmUgaWYgSSBzaG91bGQgZGVmaW5lIHRoZXNlIGF0IHRoZSBtb2R1bGUgbGV2ZWwgb3Igbm90Li4uXG4gICAgY29uc3QgY3VzdG9tSW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtwcm92aWRlOiBEZWZhdWx0VmFsdWVGb3JtYXR0ZXJ9LFxuICAgICAgICB7cHJvdmlkZTogRGVmYXVsdEFycmF5Rm9ybWF0dGVyfVxuICAgICAgXSxcbiAgICAgIHBhcmVudDogaW5qZWN0b3JcbiAgICB9KTtcbiAgICB0aGlzLmNvbHVtbnMkLnZhbHVlLmZvckVhY2goYyA9PiBjLmluaXRpYWxpc2UoY3VzdG9tSW5qZWN0b3IpKTtcbiAgICB0aGlzLmlkZW50aXR5T2YgPSBpZGVudGl0eU9mO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYWRkaXRpb25hbCBtb2RlbHMgdGhhdCB3aWxsIHRyaWdnZXIgYSB0YWJsZSByZXBhaW50LiAgVGhpcyBpcyByZXF1aXJlZCBpZiB0aGUgdGFibGVcbiAgICogbmVlZHMgdG8gYmUgcmVkcmF3biBvdXRzaWRlIG9mIGNoYW5nZXMgdG8gdGhlIHJvd3Mgb2YgZmlsdGVycy4gIGkuZS4gc29tZSBldGVybmFsIHN0YXRlIGlzIHVzZWRcbiAgICogdG8gYXNzaWduIHJvdyBjbGFzc2VzIGV0Yy5cbiAgICpcbiAgICogTm90ZTogVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgdGhlIHRhYmxlIGlzIGJvdW5kIHRvIHRoZSBtb2RlbC5cbiAgICogQHBhcmFtIGhhc1ZhbHVlc1xuICAgKi9cbiAgdmlld1N0YXRlRGVwZW5kc09uKC4uLmhhc1ZhbHVlczogUmVhZG9ubHlBcnJheTxIYXNWYWx1ZTxhbnk+Pikge1xuICAgIGhhc1ZhbHVlcy5mb3JFYWNoKGl0ID0+IHRoaXMuX3ZpZXdEZXBlbmRlbmNpZXMuYWRkKGl0KSlcbiAgfVxuXG4gIGdldCB2aWV3U3RhdGVEZXBlbmRlbmNpZXMoKTogUmVhZG9ubHlBcnJheTxIYXNWYWx1ZTxhbnk+PiB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5fdmlld0RlcGVuZGVuY2llcy52YWx1ZXMoKSk7XG4gIH1cblxuICBnZXQgZGF0YVNvdXJjZSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2UkLnJlYWRvbmx5JDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSByb3dzIHRoYXQgYXJlIHZpc2libGUgYWZ0ZXIgYW55IGZpbHRlcnMgYXJlIGFwcGxpZWQuICBJZiB0aGVyZSBhcmVcbiAgICogbm8gZmlsdGVycyB0aGVuIHRoaXMgd2lsbCBiZSB0aGUgc2FtZSBhcyB0aGUgcm9vdCBkYXRhc2V0LlxuICAgKi9cbiAgZ2V0IGZpbHRlcmVkUm93cyQoKTogTGlzdE1vZGVsPFJvdz4ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJlZFJvd3MkLnJlYWRvbmx5JDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSByb3dzIGFyZSBjdXJyZW50bHkgdmlzaWJsZSB0byB0aGUgdXNlci4gIEkuZS4gdGhlIGN1cnJlbnQgcGFnZSBpbiBhIHBhZ2VkIHRhYmxlIG9yIHRoZVxuICAgKiBleHBhbmRlZCByb3dzIGluIGEgdHJlZSB0YWJsZS5cbiAgICovXG4gIGdldCB2aXNpYmxlUm93cyQoKTogTGlzdE1vZGVsPFJvdz4ge1xuICAgIHJldHVybiB0aGlzLl92aXNpYmxlUm93cyQucmVhZG9ubHkkO1xuICB9XG5cbiAgZ2V0IHJvd3NCZWluZ0VkaXRlZCQoKTogTGlzdE1vZGVsPFJvdz4ge1xuICAgIHJldHVybiB0aGlzLl9yb3dzQmVpbmdFZGl0ZWQkLnJlYWRvbmx5JDtcbiAgfVxuXG4gIHN0YXJ0RWRpdFNlc3Npb24ocm93OiBSb3cpOiBFZGl0U2Vzc2lvbjxSb3c+IHtcbiAgICBjb25zdCByb3dJZCA9IHRoaXMuaWRlbnRpdHlPZihyb3cpO1xuICAgIGlmICh0aGlzLl9yb3dzQmVpbmdFZGl0ZWQkLnF1ZXJ5KCkuaW5kZXhPZihyb3cpID4gLTEpIHtcbiAgICAgIHJldHVybiBsYW5nLmlsbGVnYWxTdGF0ZShgUm93IHdpdGggaWQ9JHtyb3dJZH0gYWxyZWFkeSBiZWluZyBlZGl0ZWRgKTtcbiAgICB9XG5cbiAgICAvLyB0b2RvOiBwYXNzIHRoZSBmYWN0b3JpZXMgdG8gdGhlIGVkaXQgc2Vzc2lvbiBzbyB3ZSBjYW4gbWFrZSB0aGUgd2hvbGUgbG90IHBsdWdnYWJsZT9cbiAgICBjb25zdCBmb3JtID0gdGhpcy5fY3JlYXRlRm9ybShyb3cpO1xuICAgIGNvbnN0IHNhdmVDb21tYW5kID0gdGhpcy5zYXZlQ29tbWFuZEZhY3RvcnkuY3JlYXRlKGZvcm0sIHtkaXNwb3NlZFdpdGg6IHRoaXN9KTtcbiAgICBjb25zdCBlZGl0U2Vzc2lvbiA9IG5ldyBFZGl0U2Vzc2lvbjxSb3c+KHJvd0lkLCByb3csIGZvcm0sIHNhdmVDb21tYW5kKTtcbiAgICBjb25zdCB7d2hlbn0gPSBEc2wuZGlzcG9zZVdpdGgoZWRpdFNlc3Npb24pO1xuICAgIHdoZW4oZWRpdFNlc3Npb24ubGl2ZVJvd1ZhbHVlJCkuY2hhbmdlcygoZWRpdGVkVmFsdWUpID0+IHtcbiAgICAgIHRoaXMuX3Jvd3NCZWluZ0VkaXRlZCQucmVwbGFjZU9yUHVzaChlZGl0ZWRWYWx1ZSk7XG4gICAgfSwge2luaXRpYWxWYWx1ZTogXCJ0cmlnZ2VyQ2hhbmdlVW5sZXNzTmlsXCJ9KTtcblxuICAgIHRoaXMuX2VkaXRvclNlc3Npb25zLnB1c2goZWRpdFNlc3Npb24pO1xuICAgIGVkaXRTZXNzaW9uLm9uRGlzcG9zZSgoKSA9PiB7XG4gICAgICB0aGlzLl9yb3dzQmVpbmdFZGl0ZWQkLnJlbW92ZShlZGl0U2Vzc2lvbi5saXZlUm93VmFsdWUkLnZhbHVlKTtcbiAgICAgIHRoaXMuX2VkaXRvclNlc3Npb25zLnJlbW92ZShlZGl0U2Vzc2lvbik7XG4gICAgfSk7XG4gICAgcmV0dXJuIGVkaXRTZXNzaW9uO1xuICB9XG5cbiAgZ2V0RWRpdFNlc3Npb25Gb3Iocm93OiBSb3cpOiBFZGl0U2Vzc2lvbjxSb3c+IHtcbiAgICByZXR1cm4gdGhpcy5fZWRpdG9yU2Vzc2lvbkJ5Um93SWQuZ2V0KHRoaXMuaWRlbnRpdHlPZihyb3cpKTtcbiAgfVxuXG4gIGNhbmNlbEFsbEVkaXRvclNlc3Npb25zKCkge1xuICAgIHRoaXMuX2VkaXRvclNlc3Npb25zLnJ1bkluVHJhbnNhY3Rpb24oKGRyYWZ0KSA9PiB7XG4gICAgICB0aGlzLl9yb3dzQmVpbmdFZGl0ZWQkLnJ1bkluVHJhbnNhY3Rpb24oKCkgPT4ge1xuICAgICAgICBkcmFmdC52YWx1ZS5mb3JFYWNoKHNlc3Npb24gPT4gc2Vzc2lvbi5kaXNwb3NlKCkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuXG4gIGdldCBjb2x1bW5zJCgpOiBMaXN0TW9kZWw8Q29sdW1uTW9kZWw8Um93Pj4ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbk1hbmFnZXIuYWxsQ29sdW1ucyQ7XG4gIH1cblxuICBnZXQgdmlzaWJsZUNvbHVtbnMkKCk6IExpc3RNb2RlbDxDb2x1bW5Nb2RlbDxSb3c+PiB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uTWFuYWdlci52aXNpYmxlQ29sdW1ucyQ7XG4gIH1cblxuICBwbHVjazxQIGV4dGVuZHMgVHlwZXMuVmFsdWVQcm9wZXJ0aWVzT2Y8Um93Pj4ocHJvcGVydHk6IFAsIG9wdGlvbnM/OiB7XG4gICAgY29sdW1uSWQ6IHN0cmluZ1xuICB9KTogUHJvcGVydHlDb2x1bW5Nb2RlbDxSb3csIFA+IHtcbiAgICBjb25zdCBjb2x1bW5JZCA9IG9wdGlvbnM/LmNvbHVtbklkIHx8IHByb3BlcnR5LnRvU3RyaW5nKCk7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29sdW1uKG5ldyBQcm9wZXJ0eUNvbHVtbk1vZGVsPFJvdywgUD4oY29sdW1uSWQsIHRoaXMuY29sdW1uTWFuYWdlciwgcHJvcGVydHksICgpID0+IHRoaXMuZ2V0Q29sdW1uVGV4dFByb3BlcnRpZXMoY29sdW1uSWQpKSk7XG4gIH1cblxuICBwbHVja0xpc3Q8UCBleHRlbmRzIFR5cGVzLkFycmF5UHJvcGVydGllc09mPFJvdz4+KHByb3BlcnR5OiBQLCBvcHRpb25zPzoge1xuICAgIGNvbHVtbklkOiBzdHJpbmdcbiAgfSk6IExpc3RQcm9wZXJ0eUNvbHVtbk1vZGVsPFJvdywgUD4ge1xuICAgIGNvbnN0IGNvbHVtbklkID0gb3B0aW9ucz8uY29sdW1uSWQgfHwgcHJvcGVydHkudG9TdHJpbmcoKTtcbiAgICByZXR1cm4gdGhpcy5hZGRDb2x1bW4obmV3IExpc3RQcm9wZXJ0eUNvbHVtbk1vZGVsPFJvdywgUD4oY29sdW1uSWQsIHRoaXMuY29sdW1uTWFuYWdlciwgcHJvcGVydHksICgpID0+IHRoaXMuZ2V0Q29sdW1uVGV4dFByb3BlcnRpZXMoY29sdW1uSWQpKSk7XG4gIH1cblxuICAvLyBUT0RPOiBjbGVhbiB0aGlzIHVwIGFuZCBhc3NpZ24gdGhlIHNlbGVjdGlvbiBtb2RlbCBvbiB0ZWggdGFibGUgZGlyZWN0bHkuXG4gIC8vICAgICAgIHRhYmxlTW9kZWwudXNlU2VsZWN0aW9uTW9kZWwobW9kZWwpIGFuZCBoYXZlIHRoZSBzZWxlY2l0b24gY29sdW1uIGF1dG9tYXRpY2FsbHlcbiAgLy8gICAgICAgYWRkZWQuICBOZWVkIHRvIGxvb2sgYXQgaG93IHdlJ3JlIHVzaW5nIHRoZSB2aXNpYmlsaXR5IGNvbnRyb2xzIGFzIHdlbGwuXG4gIC8vICAgICAgIFNob3VsZCBhbHNvIGxhenkgY3JlYXRlIHRoZSBzZWxlY3Rpb24gY29sdW1uIG1vZGVsIGlmIHNvbWVvbmUgYWNjZXNzZXMgaXQuXG4gIHByb3RlY3RlZCBfYWRkU2VsZWN0aW9uQ29sdW1uKHNlbGVjdGlvbk1vZGVsPzogU2VsZWN0aW9uTW9kZWw8Um93PiwgdmlzaWJsZT86IFZhbHVlTW9kZWw8Ym9vbGVhbj4gfCBib29sZWFuKTogU2VsZWN0aW9uQ29sdW1uTW9kZWw8Um93PiB7XG4gICAgYXNzZXJ0LmlzTmlsKHRoaXMuc2VsZWN0aW9uQ29sdW1uTW9kZWwpO1xuICAgIGNvbnN0IGNvbHVtbklkID0gXCJzZWxlY3Rpb24tY29sdW1uXCI7XG4gICAgdGhpcy5zZWxlY3Rpb25Db2x1bW5Nb2RlbCA9IG5ldyBTZWxlY3Rpb25Db2x1bW5Nb2RlbDxSb3c+KGNvbHVtbklkLCB0aGlzLmNvbHVtbk1hbmFnZXIsICgpID0+IHRoaXMuZ2V0Q29sdW1uVGV4dFByb3BlcnRpZXMoY29sdW1uSWQpLCB0aGlzLnNlbGVjdGlvbk1vZGVsUHJveHkpO1xuICAgIHRoaXMuc2VsZWN0aW9uQ29sdW1uTW9kZWwudXNlU2VsZWN0aW9uTW9kZWwoc2VsZWN0aW9uTW9kZWwpXG4gICAgdGhpcy5hZGRSb3dDbGFzcyhcImF1cC1yb3ctc2VsZWN0ZWRcIiwgcm93ID0+IHRoaXMuc2VsZWN0aW9uQ29sdW1uTW9kZWwuaXNTZWxlY3RlZChyb3cpKTtcbiAgICBjb25zdCBzZWxlY3Rpb25Db2x1bW5Nb2RlbCA9IHRoaXMuYWRkQ29sdW1uKHRoaXMuc2VsZWN0aW9uQ29sdW1uTW9kZWwsIHtiZWZvcmU6IG51bGx9KTsgLy8gZmlyc3QgY29sdW1uXG4gICAgaWYgKCFpc05pbCh2aXNpYmxlKSkge1xuICAgICAgc2VsZWN0aW9uQ29sdW1uTW9kZWwudmlzaWJsZVdoaWxlKHZpc2libGUgaW5zdGFuY2VvZiBWYWx1ZU1vZGVsID8gdmlzaWJsZSA6IFZhbHVlTW9kZWwuY29uc3RhbnQodmlzaWJsZSkpO1xuICAgIH1cbiAgICByZXR1cm4gc2VsZWN0aW9uQ29sdW1uTW9kZWw7XG4gIH1cblxuXG4gIGFkZEVkaXRDb250cm9scyhzYXZlQ29tbWFuZEZhY3Rvcnk6IENvbW1hbmQuRmFjdG9yeTxEaXJ0eVRyYWNraW5nRm9ybTxSb3c+LCBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPj4sIGZvcm1GYWN0b3J5PzogKHJvdzogUm93KSA9PiBEaXJ0eVRyYWNraW5nRm9ybTxSb3c+KTogRWRpdG9yQ29udHJvbENvbHVtbk1vZGVsPFJvdz4ge1xuICAgIHRoaXMuc2F2ZUNvbW1hbmRGYWN0b3J5ID0gc2F2ZUNvbW1hbmRGYWN0b3J5O1xuICAgIGlmIChpc0Z1bmN0aW9uKGZvcm1GYWN0b3J5KSkge1xuICAgICAgdGhpcy5fY3JlYXRlRm9ybSA9IGZvcm1GYWN0b3J5O1xuICAgIH1cbiAgICBjb25zdCBjb2x1bW5JZCA9IFwiZWRpdENvbnRyb2xzXCI7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29sdW1uKG5ldyBFZGl0b3JDb250cm9sQ29sdW1uTW9kZWw8Um93Pihjb2x1bW5JZCwgdGhpcy5jb2x1bW5NYW5hZ2VyLCBzYXZlQ29tbWFuZEZhY3RvcnksICgpID0+IHRoaXMuZ2V0Q29sdW1uVGV4dFByb3BlcnRpZXMoY29sdW1uSWQpKSk7XG4gIH1cblxuICBhZGRDdXN0b21Db2x1bW48Vj4oY29sdW1uSWQ6IHN0cmluZywgZGF0YUFjY2Vzc29yOiAocm93OiBSb3cpID0+IFYpOiBDdXN0b21WYWx1ZUNvbHVtbk1vZGVsPFJvdywgVj4ge1xuICAgIHJldHVybiB0aGlzLmFkZENvbHVtbihuZXcgQ3VzdG9tVmFsdWVDb2x1bW5Nb2RlbDxSb3csIFY+KGNvbHVtbklkLCB0aGlzLmNvbHVtbk1hbmFnZXIsICgpID0+IHRoaXMuZ2V0Q29sdW1uVGV4dFByb3BlcnRpZXMoY29sdW1uSWQpLCBkYXRhQWNjZXNzb3IpKTtcbiAgfVxuXG4gIGFkZENvbXBvbmVudENvbHVtbjxDIGV4dGVuZHMgQ2VsbFJlbmRlcmVyPFBhcnRpYWw8Um93Pj4+KGNvbHVtbklkOiBzdHJpbmcsIGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxDPiwgb25Jbml0PzogT25Db21wb25lbnRJbml0PEM+KTogQ3VzdG9tVmFsdWVDb2x1bW5Nb2RlbDxSb3csIFJvdz5cbiAgYWRkQ29tcG9uZW50Q29sdW1uPEMgZXh0ZW5kcyBDZWxsUmVuZGVyZXI8UGFydGlhbDxSb3c+Pj4oY29sdW1uSWQ6IHN0cmluZywgY29tcG9uZW50OiBDb21wb25lbnRUeXBlPEM+LCBvcHRpb25zPzogQ2VsbFJlbmRlcmVyT3B0aW9uczxSb3csIEM+KTogQ3VzdG9tVmFsdWVDb2x1bW5Nb2RlbDxSb3csIFJvdz5cbiAgYWRkQ29tcG9uZW50Q29sdW1uPEMgZXh0ZW5kcyBDZWxsUmVuZGVyZXI8UGFydGlhbDxSb3c+Pj4oY29sdW1uSWQ6IHN0cmluZywgY29tcG9uZW50OiBDb21wb25lbnRUeXBlPEM+LCBvbkNvbXBvbmVudEluaXRPck9wdGlvbnM/OiBPbkNvbXBvbmVudEluaXQ8Qz4gfCBDZWxsUmVuZGVyZXJPcHRpb25zPFJvdywgQz4pOiBDdXN0b21WYWx1ZUNvbHVtbk1vZGVsPFJvdywgUm93PiB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29sdW1uKG5ldyBDdXN0b21WYWx1ZUNvbHVtbk1vZGVsPFJvdywgUm93Pihjb2x1bW5JZCwgdGhpcy5jb2x1bW5NYW5hZ2VyLCAoKSA9PiB0aGlzLmdldENvbHVtblRleHRQcm9wZXJ0aWVzKGNvbHVtbklkKSwgcm93ID0+IHJvdykpLmNlbGxSZW5kZXJlcihjb21wb25lbnQsIG9uQ29tcG9uZW50SW5pdE9yT3B0aW9ucyk7XG4gIH1cblxuICBhZGRNb3JlTWVudTxDIGV4dGVuZHMgVGFibGVNb3JlTWVudVBvcHVwQ29tcG9uZW50PFJvdz4+KGNvbXBvbmVudENsYXNzOiBDb25zdHJ1Y3RhYmxlPEM+LCBpbml0aWFsaXNlQ2FsbGJhY2s/OiAoY29tcG9uZW50OiBDKSA9PiB2b2lkKSB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29tcG9uZW50Q29sdW1uKFwibW9yZS1tZW51XCIsIFRhYmxlTW9yZU1lbnVDb21wb25lbnQsIChjb21wb25lbnQ6IFRhYmxlTW9yZU1lbnVDb21wb25lbnQ8Um93PikgPT4ge1xuICAgICAgY29tcG9uZW50LmNvbmZpZ3VyZVBvcHVwQ29tcG9uZW50VHlwZShjb21wb25lbnRDbGFzcywgaW5pdGlhbGlzZUNhbGxiYWNrKTtcbiAgICB9KS5jb2x1bW5UZXh0UHJvcGVydGllcyh7XG4gICAgICBoZWFkZXJUZXh0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBcIlwiXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhZGRGb290ZXJSb3c8Qz4oY29tcG9uZW50OiBDb21wb25lbnRUeXBlPEM+LCBpbml0aWFsaXNlQ2FsbGJhY2s/OiAoY29tcG9uZW50OiBDKSA9PiB2b2lkKTpGb290ZXJSb3dNb2RlbDxDPiB7XG4gICAgYXNzZXJ0LmlzTmlsKHRoaXMuZm9vdGVyUm93TW9kZWwpO1xuICAgIHRoaXMuZm9vdGVyUm93TW9kZWwgPSBuZXcgRm9vdGVyUm93TW9kZWwuSW1wbChjb21wb25lbnQsIGluaXRpYWxpc2VDYWxsYmFjayk7XG4gICAgcmV0dXJuIHRoaXMuZm9vdGVyUm93TW9kZWw7XG4gIH1cblxuICBhZGRUZW1wbGF0ZUNvbHVtbjxWPihjb2x1bW5JZDogc3RyaW5nKTogQ3VzdG9tVGVtcGxhdGVDb2x1bW5Nb2RlbDxSb3c+IHtcbiAgICByZXR1cm4gdGhpcy5hZGRDb2x1bW4obmV3IEN1c3RvbVRlbXBsYXRlQ29sdW1uTW9kZWw8Um93Pihjb2x1bW5JZCwgdGhpcy5jb2x1bW5NYW5hZ2VyLCAoKSA9PiB0aGlzLmdldENvbHVtblRleHRQcm9wZXJ0aWVzKGNvbHVtbklkKSkpO1xuICB9XG5cbiAgYWRkUm93Q2xhc3MoY2xhc3NOYW1lOiBzdHJpbmcsIHByZWRpY2F0ZTogKHJvdzogUm93KSA9PiBib29sZWFuLCBvcHRpb25zPzogRGVwZW5kc09uT3B0aW9ucykge1xuICAgIHRoaXMucm93Q2xhc3NOYW1lUHJlZGljYXRlcy5wdXNoKG5ldyBSb3dDbGFzczxSb3c+KGNsYXNzTmFtZSwgcHJlZGljYXRlKSk7XG4gICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgIHRoaXMudmlld1N0YXRlRGVwZW5kc09uKC4uLkRlcGVuZHNPbk9wdGlvbnMuZXh0cmFjdChvcHRpb25zKSlcbiAgICB9XG4gIH1cblxuICBhZGRSb3dBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZTogc3RyaW5nLCBnZXRWYWx1ZTogKHJvdzogUm93KSA9PiBzdHJpbmcpIHtcbiAgICB0aGlzLnJvd0F0dHJpYnV0ZUdlbmVyYXRvcnMucHVzaChuZXcgUm93QXR0cmlidXRlPFJvdz4oYXR0cmlidXRlTmFtZSwgZ2V0VmFsdWUpKTtcbiAgfVxuXG4gIGdldFJvd0NsYXNzZXMocm93OiBSb3cpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgY2xhc3NOYW1lczogc3RyaW5nW10gPSBbXTtcbiAgICB0aGlzLnJvd0NsYXNzTmFtZVByZWRpY2F0ZXMuZm9yRWFjaChpID0+IHtcbiAgICAgIGlmIChpLm1hdGNoZXMocm93KSkge1xuICAgICAgICBjbGFzc05hbWVzLnB1c2goaS5jbGFzc05hbWUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjbGFzc05hbWVzO1xuICB9XG5cbiAgZ2V0Um93QXR0cmlidXRlcyhyb3c6IFJvdyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnJvd0F0dHJpYnV0ZUdlbmVyYXRvcnMucmVkdWNlKChyZXN1bHQsIGdlbmVyYXRvcikgPT4ge1xuICAgICAgcmV0dXJuIHsuLi5yZXN1bHQsIFtnZW5lcmF0b3IuYXR0cmlidXRlTmFtZV06IGdlbmVyYXRvci5nZXRWYWx1ZShyb3cpfVxuICAgIH0sIHt9KTtcbiAgfVxuXG5cbiAgcHJvdGVjdGVkIGFkZENvbHVtbjxDIGV4dGVuZHMgQ29sdW1uTW9kZWw8Um93Pj4oY29sdW1uOiBDLCBwb3NpdGlvbj86IENvbHVtbk9yZGVyTWFuYWdlci5Qb3NpdGlvbik6IEMge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbk1hbmFnZXIuYWRkQ29sdW1uKGNvbHVtbiwgcG9zaXRpb24pO1xuICB9XG5cbiAgY29sdW1uVGV4dFByb3BlcnRpZXMoY29sdW1uVGV4dFByb3BlcnRpZXM6IHsgW2NvbHVtbk5hbWU6IHN0cmluZ106IENvbHVtblRleHRQcm9wZXJ0aWVzIH0pIHtcbiAgICB0aGlzLl9jb2x1bW5UZXh0UHJvcGVydGllc0xvb2t1cCA9IGNvbHVtblRleHRQcm9wZXJ0aWVzO1xuICB9XG5cbiAgZ2V0Q29sdW1uVGV4dFByb3BlcnRpZXMoY29sdW1uSWQ6IHN0cmluZyk6IENvbHVtblRleHRQcm9wZXJ0aWVzIHtcbiAgICByZXR1cm4gdGhpcy5fY29sdW1uVGV4dFByb3BlcnRpZXNMb29rdXAgPyB0aGlzLl9jb2x1bW5UZXh0UHJvcGVydGllc0xvb2t1cFtjb2x1bW5JZF0gOiB1bmRlZmluZWQ7XG4gIH1cblxuXG4gIGlzUm93U2VsZWN0aW9uRW5hYmxlZEZvcihjb2x1bW46IENvbHVtbk1vZGVsPFJvdz4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1Jvd1NlbGVjdGlvbkVuYWJsZWQoKSAmJiBjb2x1bW4uaXNSb3dTZWxlY3Rpb25FbmFibGVkKCk7XG4gIH1cblxuICBpc1Jvd1NlbGVjdGlvbkVuYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGFzVXNlclNlbGVjdGlvbk1vZGVsVGhhdElzRW5hYmxlZCgpICYmICF0aGlzLnJvd1NlbGVjdGlvbkRpc2FibGVkT25BbGxDb2x1bW5zJC52YWx1ZTtcbiAgfVxuXG4gIGhhc1VzZXJTZWxlY3Rpb25Nb2RlbFRoYXRJc0VuYWJsZWQoKSB7XG4gICAgY29uc3QgdXNlclNlbGVjdGlvbk1vZGVsID0gdGhpcy5zZWxlY3Rpb25Db2x1bW5Nb2RlbD8uc2VsZWN0aW9uTW9kZWwuZ2V0UHJveHlUYXJnZXQoKTtcbiAgICByZXR1cm4gISF1c2VyU2VsZWN0aW9uTW9kZWwgJiYgdXNlclNlbGVjdGlvbk1vZGVsLmVuYWJsZWQkLnZhbHVlO1xuICB9XG5cbiAgZ2V0U2VsZWN0aW9uTW9kZWwoKTogU2VsZWN0aW9uTW9kZWw8Um93PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uQ29sdW1uTW9kZWw/LnNlbGVjdGlvbk1vZGVsO1xuICB9XG5cbiAgaXNIb3ZlckVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNSb3dTZWxlY3Rpb25FbmFibGVkKCkgfHwgdGhpcy5yb3dDbGlja0xpc3RlbmVycy5saXN0ZW5lckNvdW50ID4gMDtcbiAgfVxuXG4gIGlzQ3Vyc29yRW5hYmxlZChjb2x1bW46IENvbHVtbk1vZGVsPFJvdz4pIHtcbiAgICByZXR1cm4gdGhpcy5pc1Jvd1NlbGVjdGlvbkVuYWJsZWRGb3IoY29sdW1uKSB8fCB0aGlzLnJvd0NsaWNrTGlzdGVuZXJzLmxpc3RlbmVyQ291bnQgPiAwO1xuICB9XG5cbiAgc2VsZWN0Um93KHJvdzogUm93KSB7XG4gICAgdGhpcy5zZWxlY3Rpb25Db2x1bW5Nb2RlbD8uc2VsZWN0Um93KHJvdyk7XG4gIH1cblxuICBvblJvd0NsaWNrZWQoY2FsbGJhY2s6IChyb3c6IFJvdykgPT4gdm9pZCk6IERpc3Bvc2FibGUge1xuICAgIHJldHVybiB0aGlzLnJvd0NsaWNrTGlzdGVuZXJzLmFkZChjYWxsYmFjayk7XG4gIH1cblxuICBfbm90aWZ5Q2VsbENsaWNrZWQoY29sdW1uTW9kZWw6IENvbHVtbk1vZGVsPFJvdz4sIHJvdzogUm93KSB7XG4gICAgaWYgKHRoaXMuaXNSb3dTZWxlY3Rpb25FbmFibGVkRm9yKGNvbHVtbk1vZGVsKSkge1xuICAgICAgdGhpcy5zZWxlY3RSb3cocm93KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gY29uc29sZS5sb2coe1xuICAgICAgLy8gICBoYXNFbmFibGVkVXNlclNlbGVjdGlvbk1vZGVsOiB0aGlzLmhhc1VzZXJTZWxlY3Rpb25Nb2RlbFRoYXRJc0VuYWJsZWQoKSxcbiAgICAgIC8vICAgYWxsU2VsZWN0aW9uRGlzYWJsZWQ6IHRoaXMucm93U2VsZWN0aW9uRGlzYWJsZWRPbkFsbENvbHVtbnMkLnZhbHVlLFxuICAgICAgLy8gICByb3dTZWxlY3Rpb25FbmFibGVkOiB0aGlzLmlzUm93U2VsZWN0aW9uRW5hYmxlZCgpLFxuICAgICAgLy8gICByb3dTZWxlY3Rpb25FbmFibGVkRm9yQ29sdW1uOiBjb2x1bW5Nb2RlbC5pc1Jvd1NlbGVjdGlvbkVuYWJsZWQoKVxuICAgICAgLy8gfSlcbiAgICB9XG5cbiAgICB0aGlzLnJvd0NsaWNrTGlzdGVuZXJzLmZpcmUobCA9PiBsKHJvdykpO1xuICB9XG5cbn1cblxuUHJveHlSZWdpc3RyeS5yZWdpc3Rlck9uZVRpbWVCaW5kaW5nKEFic3RyYWN0VGFibGVNb2RlbClcbiJdfQ==
294
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtdGFibGUtbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy9hYnN0cmFjdC10YWJsZS1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFDTCxNQUFNLEVBSU4sbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixpQkFBaUIsRUFFakIsR0FBRyxFQUNILGlCQUFpQixFQUNqQixnQkFBZ0IsRUFJaEIsZ0JBQWdCLEVBR2hCLGFBQWEsRUFLZCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUVsRCxPQUFPLEVBQUMsVUFBVSxFQUFRLE1BQU0sV0FBVyxDQUFDO0FBQzVDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUl0RCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoRixPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUMxRSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUMzRSxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFFbEQsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFFaEYsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDJCQUEyQixD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Q0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnRUeXBlfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL292ZXJsYXlcIjtcbmltcG9ydCB7SW5qZWN0b3J9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBhc3NlcnQsXG4gIEJvb2xlYW5WYWx1ZU1vZGVsQ2hhaW4sXG4gIENvbW1hbmQsXG4gIENvbnN0cnVjdGFibGUsXG4gIERlbGVnYXRpbmdMaXN0TW9kZWwsXG4gIERlcGVuZHNPbk9wdGlvbnMsXG4gIERpcnR5VHJhY2tpbmdGb3JtLFxuICBEaXNwb3NhYmxlLFxuICBEc2wsXG4gIEV2ZW50TGlzdGVuZXJMaXN0LFxuICBHYXJiYWdlQ29sbGVjdG9yLFxuICBIYXNWYWx1ZSxcbiAgTGlzdE1vZGVsLFxuICBNYXBNb2RlbENoYWluLCBNdWx0aXBsZVNlbGVjdGlvbk1vZGVsLFxuICBNdXRhYmxlTGlzdE1vZGVsLFxuICBQcm94aWZpZWQsXG4gIHByb3hpZnksXG4gIFByb3h5UmVnaXN0cnksXG4gIFNlbGVjdGlvbk1vZGVsLFxuICBUeXBlcyxcbiAgVmFsdWVNb2RlbCxcbiAgVmFsdWVNb2RlbENoYWluXG59IGZyb20gXCJAY29vbG9uL3BlY3RpblwiO1xuaW1wb3J0IHtsYW5nfSBmcm9tIFwiQGNvb2xvbi90eXBlc2NyaXB0LXV0aWxpdGllc1wiO1xuXG5pbXBvcnQge2lzRnVuY3Rpb24sIGlzTmlsfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQge0NvbHVtbk1hbmFnZXJ9IGZyb20gXCIuL2NvbHVtbi9jb2x1bW4tbWFuYWdlclwiO1xuaW1wb3J0IHtDZWxsUmVuZGVyZXJPcHRpb25zLCBDb2x1bW5Nb2RlbCwgT25Db21wb25lbnRJbml0fSBmcm9tIFwiLi9jb2x1bW4vY29sdW1uLW1vZGVsXCI7XG5pbXBvcnQge0NvbHVtbk9yZGVyTWFuYWdlcn0gZnJvbSBcIi4vY29sdW1uL2NvbHVtbi1vcmRlci1tYW5hZ2VyXCI7XG5pbXBvcnQge0NvbHVtblRleHRQcm9wZXJ0aWVzfSBmcm9tIFwiLi9jb2x1bW4vY29sdW1uLXRleHQtcHJvcGVydGllc1wiO1xuaW1wb3J0IHtDdXN0b21UZW1wbGF0ZUNvbHVtbk1vZGVsfSBmcm9tIFwiLi9jb2x1bW4vY3VzdG9tLXRlbXBsYXRlLWNvbHVtbi1tb2RlbFwiO1xuaW1wb3J0IHtDdXN0b21WYWx1ZUNvbHVtbk1vZGVsfSBmcm9tIFwiLi9jb2x1bW4vY3VzdG9tLXZhbHVlLWNvbHVtbi1tb2RlbFwiO1xuaW1wb3J0IHtFZGl0b3JDb250cm9sQ29sdW1uTW9kZWx9IGZyb20gXCIuL2NvbHVtbi9lZGl0b3ItY29udHJvbHMtY29sdW1uLW1vZGVsXCI7XG5pbXBvcnQge0xpc3RQcm9wZXJ0eUNvbHVtbk1vZGVsfSBmcm9tIFwiLi9jb2x1bW4vbGlzdC1wcm9wZXJ5LWNvbHVtbi1tb2RlbFwiO1xuaW1wb3J0IHtQcm9wZXJ0eUNvbHVtbk1vZGVsfSBmcm9tIFwiLi9jb2x1bW4vcHJvcGVydHktY29sdW1uLW1vZGVsXCI7XG5pbXBvcnQge1NlbGVjdGlvbkNvbHVtbk1vZGVsfSBmcm9tIFwiLi9jb2x1bW4vc2VsZWN0aW9uLWNvbHVtbi1tb2RlbFwiO1xuaW1wb3J0IHtFZGl0U2Vzc2lvbn0gZnJvbSBcIi4vZWRpdG9yL2VkaXQtc2Vzc2lvblwiO1xuXG5pbXBvcnQge0NvbHVtblRleHRTZWFyY2hGb3JtYXR0ZXJ9IGZyb20gXCIuL2ZpbHRlci9jb2x1bW4tdGV4dC1zZWFyY2gtZm9ybWF0dGVyXCI7XG5pbXBvcnQge1RleHRTZWFyY2hQcmVkaWNhdGV9IGZyb20gXCIuL2ZpbHRlci90ZXh0LXNlYXJjaC1wcmVkaWNhdGVcIjtcbmltcG9ydCB7Rm9vdGVyUm93TW9kZWx9IGZyb20gXCIuL2Zvb3Rlci9mb290ZXItcm93LW1vZGVsXCI7XG5pbXBvcnQge0NlbGxSZW5kZXJlcn0gZnJvbSBcIi4vcmVuZGVyZXIvY2VsbC1yZW5kZXJlclwiO1xuaW1wb3J0IHtcbiAgVGFibGVNb3JlTWVudVBvcHVwQ29tcG9uZW50XG59IGZyb20gXCIuL3JlbmRlcmVyL3RhYmxlLW1vcmUtbWVudS90YWJsZS1tb3JlLW1lbnUtcG9wdXAvdGFibGUtbW9yZS1tZW51LXBvcHVwLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtUYWJsZU1vcmVNZW51Q29tcG9uZW50fSBmcm9tIFwiLi9yZW5kZXJlci90YWJsZS1tb3JlLW1lbnUvdGFibGUtbW9yZS1tZW51LmNvbXBvbmVudFwiO1xuaW1wb3J0IERlZmF1bHRBcnJheUZvcm1hdHRlciA9IENvbHVtblRleHRTZWFyY2hGb3JtYXR0ZXIuRGVmYXVsdEFycmF5Rm9ybWF0dGVyO1xuaW1wb3J0IERlZmF1bHRWYWx1ZUZvcm1hdHRlciA9IENvbHVtblRleHRTZWFyY2hGb3JtYXR0ZXIuRGVmYXVsdFZhbHVlRm9ybWF0dGVyO1xuXG4vLyBleHBvcnQgdHlwZSBTdHJpbmdQcm9wZXJ0aWVzT2Y8VD4gPSB7IFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgc3RyaW5nID8gSyA6IG5ldmVyIH1ba2V5b2YgVF07XG4vLyBleHBvcnQgdHlwZSBOdW1iZXJQcm9wZXJ0aWVzT2Y8VD4gPSB7IFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgbnVtYmVyID8gSyA6IG5ldmVyIH1ba2V5b2YgVF07XG5cbmNsYXNzIFJvd0NsYXNzPFJvdz4ge1xuICBjb25zdHJ1Y3RvcihyZWFkb25seSBjbGFzc05hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgcmVhZG9ubHkgbWF0Y2hlczogKHJvdzogUm93KSA9PiBib29sZWFuKSB7XG4gIH1cbn1cblxuY2xhc3MgUm93QXR0cmlidXRlPFJvdz4ge1xuICBjb25zdHJ1Y3RvcihyZWFkb25seSBhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsXG4gICAgICAgICAgICAgIHJlYWRvbmx5IGdldFZhbHVlOiAocm93OiBSb3cpID0+IHN0cmluZykge1xuICB9XG59XG5cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0VGFibGVNb2RlbDxSb3cgZXh0ZW5kcyBvYmplY3Q+IGV4dGVuZHMgR2FyYmFnZUNvbGxlY3RvciB7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9kYXRhU291cmNlJCA9IHRoaXMucmVnaXN0ZXJEaXNwb3NhYmxlKG5ldyBEZWxlZ2F0aW5nTGlzdE1vZGVsPFJvdz4oKSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBfZmlsdGVyZWRSb3dzJCA9IHRoaXMucmVnaXN0ZXJEaXNwb3NhYmxlKG5ldyBEZWxlZ2F0aW5nTGlzdE1vZGVsPFJvdz4oKSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBfdmlzaWJsZVJvd3MkID0gdGhpcy5yZWdpc3RlckRpc3Bvc2FibGUobmV3IERlbGVnYXRpbmdMaXN0TW9kZWw8Um93PigpKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29sdW1uTWFuYWdlciA9IHRoaXMucmVnaXN0ZXJEaXNwb3NhYmxlKG5ldyBDb2x1bW5NYW5hZ2VyPFJvdz4oKSk7XG5cbiAgcHJpdmF0ZSBfZWRpdG9yU2Vzc2lvbnMgPSBuZXcgTXV0YWJsZUxpc3RNb2RlbDxFZGl0U2Vzc2lvbjxSb3c+PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yb3dzQmVpbmdFZGl0ZWQkOiBNdXRhYmxlTGlzdE1vZGVsPFJvdz47XG4gIHByaXZhdGUgc2F2ZUNvbW1hbmRGYWN0b3J5OiBDb21tYW5kLkZhY3Rvcnk8RGlydHlUcmFja2luZ0Zvcm08Um93PiwgYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4+O1xuICBwcml2YXRlIF9lZGl0b3JTZXNzaW9uQnlSb3dJZDogTWFwTW9kZWxDaGFpbjxhbnksIEVkaXRTZXNzaW9uPFJvdz4+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcm93Q2xhc3NOYW1lUHJlZGljYXRlczogUm93Q2xhc3M8Um93PltdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgcm93QXR0cmlidXRlR2VuZXJhdG9yczogUm93QXR0cmlidXRlPFJvdz5bXSA9IFtdO1xuXG4gIHByaXZhdGUgX2NvbHVtblRleHRQcm9wZXJ0aWVzTG9va3VwOiB7IFtjb2x1bW5OYW1lOiBzdHJpbmddOiBDb2x1bW5UZXh0UHJvcGVydGllcyB9O1xuXG4gIHJlYWRvbmx5IGVkaXRpbmckOiBCb29sZWFuVmFsdWVNb2RlbENoYWluO1xuICByZWFkb25seSBmaXJzdEVkaXRhYmxlQ29sdW1uJDogVmFsdWVNb2RlbENoYWluPENvbHVtbk1vZGVsPFJvdz4+O1xuICByZWFkb25seSBzZWxlY3Rpb25Db2x1bW5Nb2RlbDogU2VsZWN0aW9uQ29sdW1uTW9kZWw8Um93PjtcbiAgcHJpdmF0ZSByb3dTZWxlY3Rpb25EaXNhYmxlZE9uQWxsQ29sdW1ucyQ6IEJvb2xlYW5WYWx1ZU1vZGVsQ2hhaW47XG4gIHByaXZhdGUgcmVhZG9ubHkgcm93Q2xpY2tMaXN0ZW5lcnMgPSBuZXcgRXZlbnRMaXN0ZW5lckxpc3Q8KHJvdzogUm93KSA9PiB2b2lkPigpO1xuICByZWFkb25seSBmaXJzdFZpc2libGVDb2x1bW4kOiBWYWx1ZU1vZGVsPENvbHVtbk1vZGVsPFJvdz4+O1xuICByZWFkb25seSBsYXN0VmlzaWJsZUNvbHVtbiQ6IFZhbHVlTW9kZWw8Q29sdW1uTW9kZWw8Um93Pj47XG5cbiAgcHJpdmF0ZSBfY3JlYXRlRm9ybTogKHJvdzogUm93KSA9PiBEaXJ0eVRyYWNraW5nRm9ybTxSb3c+ID0gKHJvdykgPT4gbmV3IERpcnR5VHJhY2tpbmdGb3JtPFJvdz4oKTtcbiAgcmVhZG9ubHkgdGV4dFNlYXJjaFByZWRpY2F0ZSQ6IFZhbHVlTW9kZWw8VGV4dFNlYXJjaFByZWRpY2F0ZTxSb3c+PjtcbiAgcHJvdGVjdGVkIGlkZW50aXR5T2Y6IChpdGVtOiBSb3cpID0+IGFueTtcbiAgcmVhZG9ubHkgZGF0YVNvdXJjZUVtcHR5JDogVmFsdWVNb2RlbDxib29sZWFuPjtcblxuXG4gIHJlYWRvbmx5IHNlbGVjdGVkSXRlbXMkOiBMaXN0TW9kZWw8Um93PjtcbiAgcmVhZG9ubHkgbGVhZFNlbGVjdGlvbiQ6IFZhbHVlTW9kZWw8Um93PjtcbiAgcmVhZG9ubHkgaGFzU2VsZWN0aW9uJDogQm9vbGVhblZhbHVlTW9kZWxDaGFpbjtcbiAgZm9vdGVyUm93TW9kZWw6IEZvb3RlclJvd01vZGVsLkltcGw8YW55PjtcbiAgcHJpdmF0ZSByZWFkb25seSBfdmlld0RlcGVuZGVuY2llcyA9IG5ldyBTZXQ8SGFzVmFsdWU8YW55Pj4oKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBjb25zdCB7Y2hhaW59ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuICAgIHRoaXMuX3Jvd3NCZWluZ0VkaXRlZCQgPSBuZXcgTXV0YWJsZUxpc3RNb2RlbDxSb3c+KFtdLCB7XG4gICAgICBpZGVudGlmaWVkV2l0aDogcm93ID0+IHRoaXMuaWRlbnRpdHlPZihyb3cpXG4gICAgfSk7XG4gICAgdGhpcy5fZWRpdG9yU2Vzc2lvbkJ5Um93SWQgPSBjaGFpbih0aGlzLl9lZGl0b3JTZXNzaW9ucykuaW5kZXhCeShcInJvd0lkXCIpO1xuICAgIHRoaXMuZWRpdGluZyQgPSBjaGFpbih0aGlzLl9lZGl0b3JTZXNzaW9ucykuY291bnQoKS5pc0dyZWF0ZXJUaGFuKDApO1xuXG4gICAgdGhpcy50ZXh0U2VhcmNoUHJlZGljYXRlJCA9IGNoYWluKHRoaXMudmlzaWJsZUNvbHVtbnMkKS5yZWR1Y2VBbGwoY29sdW1ucyA9PiB7XG4gICAgICByZXR1cm4gKHJvdzogUm93LCByZWdleDogUmVnRXhwKSA9PiB7XG4gICAgICAgIHJldHVybiAoIXJlZ2V4IHx8ICEhY29sdW1ucy5maW5kKGMgPT4gcmVnZXgudGVzdChjLmdldFNlYXJjaFRleHRGb3Iocm93KSkpKTtcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgdGhpcy5zZWxlY3Rpb25Db2x1bW5Nb2RlbCA9IG5ldyBTZWxlY3Rpb25Db2x1bW5Nb2RlbDxSb3c+KFwic2VsZWN0aW9uLWNvbHVtblwiLCB0aGlzLmNvbHVtbk1hbmFnZXIsICgpID0+IHRoaXMuZ2V0Q29sdW1uVGV4dFByb3BlcnRpZXMoXCJzZWxlY3Rpb24tY29sdW1uXCIpKTtcbiAgICB0aGlzLmFkZENvbHVtbih0aGlzLnNlbGVjdGlvbkNvbHVtbk1vZGVsLCB7YmVmb3JlOiBudWxsfSk7IC8vIGZpcnN0IGNvbHVtblxuICAgIHRoaXMuYWRkUm93Q2xhc3MoXCJhdXAtcm93LXNlbGVjdGVkXCIsIHJvdyA9PiB0aGlzLnNlbGVjdGlvbkNvbHVtbk1vZGVsLmlzU2VsZWN0ZWQocm93KSk7XG5cbiAgICB0aGlzLmZpcnN0RWRpdGFibGVDb2x1bW4kID0gY2hhaW4odGhpcy5jb2x1bW5zJCkuc2VsZWN0KGMgPT4gYy5oYXNFZGl0b3JQb3J0YWwoKSkuZmlyc3QoKTtcbiAgICB0aGlzLmZpcnN0VmlzaWJsZUNvbHVtbiQgPSBjaGFpbih0aGlzLnZpc2libGVDb2x1bW5zJCkuZmlyc3QoKTtcbiAgICB0aGlzLmxhc3RWaXNpYmxlQ29sdW1uJCA9IGNoYWluKHRoaXMudmlzaWJsZUNvbHVtbnMkKS5sYXN0KCk7XG5cbiAgICB0aGlzLnJvd1NlbGVjdGlvbkRpc2FibGVkT25BbGxDb2x1bW5zJCA9IGNoYWluKHRoaXMuY29sdW1uTWFuYWdlci52aXNpYmxlQ29sdW1ucyQpLnNlbGVjdChjb2x1bW4gPT4gY29sdW1uLmlzUm93U2VsZWN0aW9uRW5hYmxlZCgpKS5jb3VudCgpLmVxdWFscygwKTtcblxuICAgIHRoaXMuZGF0YVNvdXJjZUVtcHR5JCA9IGNoYWluKHRoaXMuZGF0YVNvdXJjZSQpLmlzRW1wdHkoKTtcblxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyQgPSB0aGlzLnNlbGVjdGlvbkNvbHVtbk1vZGVsLnNlbGVjdGlvbk1vZGVsLnNlbGVjdGVkSXRlbXMkO1xuICAgIHRoaXMubGVhZFNlbGVjdGlvbiQgPSB0aGlzLnNlbGVjdGlvbkNvbHVtbk1vZGVsLnNlbGVjdGlvbk1vZGVsLmxlYWRTZWxlY3Rpb24kO1xuICAgIHRoaXMuaGFzU2VsZWN0aW9uJCA9IGNoYWluKHRoaXMuc2VsZWN0ZWRJdGVtcyQpLmlzTm90RW1wdHkoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXREYXRhU291cmNlKGRhdGFTb3VyY2UkKSB7XG4gICAgdGhpcy5fZGF0YVNvdXJjZSQuc2V0RGVsZWdhdGUoZGF0YVNvdXJjZSQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZG86IG1ha2UgdGhpcyBmb3JjZSBvbmUgdGFibGUgYXQgYSB0aW1lXG4gICAqIEBwYXJhbSBpbmplY3RvclxuICAgKiBAcGFyYW0gaWRlbnRpdHlPZlxuICAgKiBAcGFyYW0gcmVzdFxuICAgKi9cbiAgaW5pdGlhbGlzZShpbmplY3RvcjogSW5qZWN0b3IsIGlkZW50aXR5T2Y6IChpdGVtOiBSb3cpID0+IGFueSkge1xuICAgIC8vIG5vdCBzdXJlIGlmIEkgc2hvdWxkIGRlZmluZSB0aGVzZSBhdCB0aGUgbW9kdWxlIGxldmVsIG9yIG5vdC4uLlxuICAgIGNvbnN0IGN1c3RvbUluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7cHJvdmlkZTogRGVmYXVsdFZhbHVlRm9ybWF0dGVyfSxcbiAgICAgICAge3Byb3ZpZGU6IERlZmF1bHRBcnJheUZvcm1hdHRlcn1cbiAgICAgIF0sXG4gICAgICBwYXJlbnQ6IGluamVjdG9yXG4gICAgfSk7XG4gICAgdGhpcy5jb2x1bW5zJC52YWx1ZS5mb3JFYWNoKGMgPT4gYy5pbml0aWFsaXNlKGN1c3RvbUluamVjdG9yKSk7XG4gICAgdGhpcy5pZGVudGl0eU9mID0gaWRlbnRpdHlPZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFkZGl0aW9uYWwgbW9kZWxzIHRoYXQgd2lsbCB0cmlnZ2VyIGEgdGFibGUgcmVwYWludC4gIFRoaXMgaXMgcmVxdWlyZWQgaWYgdGhlIHRhYmxlXG4gICAqIG5lZWRzIHRvIGJlIHJlZHJhd24gb3V0c2lkZSBvZiBjaGFuZ2VzIHRvIHRoZSByb3dzIG9mIGZpbHRlcnMuICBpLmUuIHNvbWUgZXRlcm5hbCBzdGF0ZSBpcyB1c2VkXG4gICAqIHRvIGFzc2lnbiByb3cgY2xhc3NlcyBldGMuXG4gICAqXG4gICAqIE5vdGU6IFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgYmVmb3JlIHRoZSB0YWJsZSBpcyBib3VuZCB0byB0aGUgbW9kZWwuXG4gICAqIEBwYXJhbSBoYXNWYWx1ZXNcbiAgICovXG4gIHZpZXdTdGF0ZURlcGVuZHNPbiguLi5oYXNWYWx1ZXM6IFJlYWRvbmx5QXJyYXk8SGFzVmFsdWU8YW55Pj4pIHtcbiAgICBoYXNWYWx1ZXMuZm9yRWFjaChpdCA9PiB0aGlzLl92aWV3RGVwZW5kZW5jaWVzLmFkZChpdCkpXG4gIH1cblxuICBnZXQgdmlld1N0YXRlRGVwZW5kZW5jaWVzKCk6IFJlYWRvbmx5QXJyYXk8SGFzVmFsdWU8YW55Pj4ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuX3ZpZXdEZXBlbmRlbmNpZXMudmFsdWVzKCkpO1xuICB9XG5cbiAgZ2V0IGRhdGFTb3VyY2UkKCkge1xuICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlJC5yZWFkb25seSQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgcm93cyB0aGF0IGFyZSB2aXNpYmxlIGFmdGVyIGFueSBmaWx0ZXJzIGFyZSBhcHBsaWVkLiAgSWYgdGhlcmUgYXJlXG4gICAqIG5vIGZpbHRlcnMgdGhlbiB0aGlzIHdpbGwgYmUgdGhlIHNhbWUgYXMgdGhlIHJvb3QgZGF0YXNldC5cbiAgICovXG4gIGdldCBmaWx0ZXJlZFJvd3MkKCk6IExpc3RNb2RlbDxSb3c+IHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyZWRSb3dzJC5yZWFkb25seSQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgcm93cyBhcmUgY3VycmVudGx5IHZpc2libGUgdG8gdGhlIHVzZXIuICBJLmUuIHRoZSBjdXJyZW50IHBhZ2UgaW4gYSBwYWdlZCB0YWJsZSBvciB0aGVcbiAgICogZXhwYW5kZWQgcm93cyBpbiBhIHRyZWUgdGFibGUuXG4gICAqL1xuICBnZXQgdmlzaWJsZVJvd3MkKCk6IExpc3RNb2RlbDxSb3c+IHtcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZVJvd3MkLnJlYWRvbmx5JDtcbiAgfVxuXG4gIGdldCByb3dzQmVpbmdFZGl0ZWQkKCk6IExpc3RNb2RlbDxSb3c+IHtcbiAgICByZXR1cm4gdGhpcy5fcm93c0JlaW5nRWRpdGVkJC5yZWFkb25seSQ7XG4gIH1cblxuICBzdGFydEVkaXRTZXNzaW9uKHJvdzogUm93KTogRWRpdFNlc3Npb248Um93PiB7XG4gICAgY29uc3Qgcm93SWQgPSB0aGlzLmlkZW50aXR5T2Yocm93KTtcbiAgICBpZiAodGhpcy5fcm93c0JlaW5nRWRpdGVkJC5xdWVyeSgpLmluZGV4T2Yocm93KSA+IC0xKSB7XG4gICAgICByZXR1cm4gbGFuZy5pbGxlZ2FsU3RhdGUoYFJvdyB3aXRoIGlkPSR7cm93SWR9IGFscmVhZHkgYmVpbmcgZWRpdGVkYCk7XG4gICAgfVxuXG4gICAgLy8gdG9kbzogcGFzcyB0aGUgZmFjdG9yaWVzIHRvIHRoZSBlZGl0IHNlc3Npb24gc28gd2UgY2FuIG1ha2UgdGhlIHdob2xlIGxvdCBwbHVnZ2FibGU/XG4gICAgY29uc3QgZm9ybSA9IHRoaXMuX2NyZWF0ZUZvcm0ocm93KTtcbiAgICBjb25zdCBzYXZlQ29tbWFuZCA9IHRoaXMuc2F2ZUNvbW1hbmRGYWN0b3J5LmNyZWF0ZShmb3JtLCB7ZGlzcG9zZWRXaXRoOiB0aGlzfSk7XG4gICAgY29uc3QgZWRpdFNlc3Npb24gPSBuZXcgRWRpdFNlc3Npb248Um93Pihyb3dJZCwgcm93LCBmb3JtLCBzYXZlQ29tbWFuZCk7XG4gICAgY29uc3Qge3doZW59ID0gRHNsLmRpc3Bvc2VXaXRoKGVkaXRTZXNzaW9uKTtcbiAgICB3aGVuKGVkaXRTZXNzaW9uLmxpdmVSb3dWYWx1ZSQpLmNoYW5nZXMoKGVkaXRlZFZhbHVlKSA9PiB7XG4gICAgICB0aGlzLl9yb3dzQmVpbmdFZGl0ZWQkLnJlcGxhY2VPclB1c2goZWRpdGVkVmFsdWUpO1xuICAgIH0sIHtpbml0aWFsVmFsdWU6IFwidHJpZ2dlckNoYW5nZVVubGVzc05pbFwifSk7XG5cbiAgICB0aGlzLl9lZGl0b3JTZXNzaW9ucy5wdXNoKGVkaXRTZXNzaW9uKTtcbiAgICBlZGl0U2Vzc2lvbi5vbkRpc3Bvc2UoKCkgPT4ge1xuICAgICAgdGhpcy5fcm93c0JlaW5nRWRpdGVkJC5yZW1vdmUoZWRpdFNlc3Npb24ubGl2ZVJvd1ZhbHVlJC52YWx1ZSk7XG4gICAgICB0aGlzLl9lZGl0b3JTZXNzaW9ucy5yZW1vdmUoZWRpdFNlc3Npb24pO1xuICAgIH0pO1xuICAgIHJldHVybiBlZGl0U2Vzc2lvbjtcbiAgfVxuXG4gIGdldEVkaXRTZXNzaW9uRm9yKHJvdzogUm93KTogRWRpdFNlc3Npb248Um93PiB7XG4gICAgcmV0dXJuIHRoaXMuX2VkaXRvclNlc3Npb25CeVJvd0lkLmdldCh0aGlzLmlkZW50aXR5T2Yocm93KSk7XG4gIH1cblxuICBjYW5jZWxBbGxFZGl0b3JTZXNzaW9ucygpIHtcbiAgICB0aGlzLl9lZGl0b3JTZXNzaW9ucy5ydW5JblRyYW5zYWN0aW9uKChkcmFmdCkgPT4ge1xuICAgICAgdGhpcy5fcm93c0JlaW5nRWRpdGVkJC5ydW5JblRyYW5zYWN0aW9uKCgpID0+IHtcbiAgICAgICAgZHJhZnQudmFsdWUuZm9yRWFjaChzZXNzaW9uID0+IHNlc3Npb24uZGlzcG9zZSgpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cblxuICBnZXQgY29sdW1ucyQoKTogTGlzdE1vZGVsPENvbHVtbk1vZGVsPFJvdz4+IHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5NYW5hZ2VyLmFsbENvbHVtbnMkO1xuICB9XG5cbiAgZ2V0IHZpc2libGVDb2x1bW5zJCgpOiBMaXN0TW9kZWw8Q29sdW1uTW9kZWw8Um93Pj4ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbk1hbmFnZXIudmlzaWJsZUNvbHVtbnMkO1xuICB9XG5cbiAgcGx1Y2s8UCBleHRlbmRzIFR5cGVzLlZhbHVlUHJvcGVydGllc09mPFJvdz4+KHByb3BlcnR5OiBQLCBvcHRpb25zPzoge1xuICAgIGNvbHVtbklkOiBzdHJpbmdcbiAgfSk6IFByb3BlcnR5Q29sdW1uTW9kZWw8Um93LCBQPiB7XG4gICAgY29uc3QgY29sdW1uSWQgPSBvcHRpb25zPy5jb2x1bW5JZCB8fCBwcm9wZXJ0eS50b1N0cmluZygpO1xuICAgIHJldHVybiB0aGlzLmFkZENvbHVtbihuZXcgUHJvcGVydHlDb2x1bW5Nb2RlbDxSb3csIFA+KGNvbHVtbklkLCB0aGlzLmNvbHVtbk1hbmFnZXIsIHByb3BlcnR5LCAoKSA9PiB0aGlzLmdldENvbHVtblRleHRQcm9wZXJ0aWVzKGNvbHVtbklkKSkpO1xuICB9XG5cbiAgcGx1Y2tMaXN0PFAgZXh0ZW5kcyBUeXBlcy5BcnJheVByb3BlcnRpZXNPZjxSb3c+Pihwcm9wZXJ0eTogUCwgb3B0aW9ucz86IHtcbiAgICBjb2x1bW5JZDogc3RyaW5nXG4gIH0pOiBMaXN0UHJvcGVydHlDb2x1bW5Nb2RlbDxSb3csIFA+IHtcbiAgICBjb25zdCBjb2x1bW5JZCA9IG9wdGlvbnM/LmNvbHVtbklkIHx8IHByb3BlcnR5LnRvU3RyaW5nKCk7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29sdW1uKG5ldyBMaXN0UHJvcGVydHlDb2x1bW5Nb2RlbDxSb3csIFA+KGNvbHVtbklkLCB0aGlzLmNvbHVtbk1hbmFnZXIsIHByb3BlcnR5LCAoKSA9PiB0aGlzLmdldENvbHVtblRleHRQcm9wZXJ0aWVzKGNvbHVtbklkKSkpO1xuICB9XG5cbiAgdXNlU2VsZWN0aW9uTW9kZWwoc2VsZWN0aW9uTW9kZWw/OiBTZWxlY3Rpb25Nb2RlbDxSb3c+KSB7XG4gICAgdGhpcy5zZWxlY3Rpb25Db2x1bW5Nb2RlbC51c2VTZWxlY3Rpb25Nb2RlbChzZWxlY3Rpb25Nb2RlbCk7XG4gIH1cblxuICBhZGRFZGl0Q29udHJvbHMoc2F2ZUNvbW1hbmRGYWN0b3J5OiBDb21tYW5kLkZhY3Rvcnk8RGlydHlUcmFja2luZ0Zvcm08Um93PiwgYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4+LCBmb3JtRmFjdG9yeT86IChyb3c6IFJvdykgPT4gRGlydHlUcmFja2luZ0Zvcm08Um93Pik6IEVkaXRvckNvbnRyb2xDb2x1bW5Nb2RlbDxSb3c+IHtcbiAgICB0aGlzLnNhdmVDb21tYW5kRmFjdG9yeSA9IHNhdmVDb21tYW5kRmFjdG9yeTtcbiAgICBpZiAoaXNGdW5jdGlvbihmb3JtRmFjdG9yeSkpIHtcbiAgICAgIHRoaXMuX2NyZWF0ZUZvcm0gPSBmb3JtRmFjdG9yeTtcbiAgICB9XG4gICAgY29uc3QgY29sdW1uSWQgPSBcImVkaXRDb250cm9sc1wiO1xuICAgIHJldHVybiB0aGlzLmFkZENvbHVtbihuZXcgRWRpdG9yQ29udHJvbENvbHVtbk1vZGVsPFJvdz4oY29sdW1uSWQsIHRoaXMuY29sdW1uTWFuYWdlciwgc2F2ZUNvbW1hbmRGYWN0b3J5LCAoKSA9PiB0aGlzLmdldENvbHVtblRleHRQcm9wZXJ0aWVzKGNvbHVtbklkKSkpO1xuICB9XG5cbiAgYWRkQ3VzdG9tQ29sdW1uPFY+KGNvbHVtbklkOiBzdHJpbmcsIGRhdGFBY2Nlc3NvcjogKHJvdzogUm93KSA9PiBWKTogQ3VzdG9tVmFsdWVDb2x1bW5Nb2RlbDxSb3csIFY+IHtcbiAgICByZXR1cm4gdGhpcy5hZGRDb2x1bW4obmV3IEN1c3RvbVZhbHVlQ29sdW1uTW9kZWw8Um93LCBWPihjb2x1bW5JZCwgdGhpcy5jb2x1bW5NYW5hZ2VyLCAoKSA9PiB0aGlzLmdldENvbHVtblRleHRQcm9wZXJ0aWVzKGNvbHVtbklkKSwgZGF0YUFjY2Vzc29yKSk7XG4gIH1cblxuICBhZGRDb21wb25lbnRDb2x1bW48QyBleHRlbmRzIENlbGxSZW5kZXJlcjxQYXJ0aWFsPFJvdz4+Pihjb2x1bW5JZDogc3RyaW5nLCBjb21wb25lbnQ6IENvbXBvbmVudFR5cGU8Qz4sIG9uSW5pdD86IE9uQ29tcG9uZW50SW5pdDxDPik6IEN1c3RvbVZhbHVlQ29sdW1uTW9kZWw8Um93LCBSb3c+XG4gIGFkZENvbXBvbmVudENvbHVtbjxDIGV4dGVuZHMgQ2VsbFJlbmRlcmVyPFBhcnRpYWw8Um93Pj4+KGNvbHVtbklkOiBzdHJpbmcsIGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxDPiwgb3B0aW9ucz86IENlbGxSZW5kZXJlck9wdGlvbnM8Um93LCBDPik6IEN1c3RvbVZhbHVlQ29sdW1uTW9kZWw8Um93LCBSb3c+XG4gIGFkZENvbXBvbmVudENvbHVtbjxDIGV4dGVuZHMgQ2VsbFJlbmRlcmVyPFBhcnRpYWw8Um93Pj4+KGNvbHVtbklkOiBzdHJpbmcsIGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxDPiwgb25Db21wb25lbnRJbml0T3JPcHRpb25zPzogT25Db21wb25lbnRJbml0PEM+IHwgQ2VsbFJlbmRlcmVyT3B0aW9uczxSb3csIEM+KTogQ3VzdG9tVmFsdWVDb2x1bW5Nb2RlbDxSb3csIFJvdz4ge1xuICAgIHJldHVybiB0aGlzLmFkZENvbHVtbihuZXcgQ3VzdG9tVmFsdWVDb2x1bW5Nb2RlbDxSb3csIFJvdz4oY29sdW1uSWQsIHRoaXMuY29sdW1uTWFuYWdlciwgKCkgPT4gdGhpcy5nZXRDb2x1bW5UZXh0UHJvcGVydGllcyhjb2x1bW5JZCksIHJvdyA9PiByb3cpKS5jZWxsUmVuZGVyZXIoY29tcG9uZW50LCBvbkNvbXBvbmVudEluaXRPck9wdGlvbnMpO1xuICB9XG5cbiAgYWRkTW9yZU1lbnU8QyBleHRlbmRzIFRhYmxlTW9yZU1lbnVQb3B1cENvbXBvbmVudDxSb3c+Pihjb21wb25lbnRDbGFzczogQ29uc3RydWN0YWJsZTxDPiwgaW5pdGlhbGlzZUNhbGxiYWNrPzogKGNvbXBvbmVudDogQykgPT4gdm9pZCkge1xuICAgIHJldHVybiB0aGlzLmFkZENvbXBvbmVudENvbHVtbihcIm1vcmUtbWVudVwiLCBUYWJsZU1vcmVNZW51Q29tcG9uZW50LCAoY29tcG9uZW50OiBUYWJsZU1vcmVNZW51Q29tcG9uZW50PFJvdz4pID0+IHtcbiAgICAgIGNvbXBvbmVudC5jb25maWd1cmVQb3B1cENvbXBvbmVudFR5cGUoY29tcG9uZW50Q2xhc3MsIGluaXRpYWxpc2VDYWxsYmFjayk7XG4gICAgfSkuY29sdW1uVGV4dFByb3BlcnRpZXMoe1xuICAgICAgaGVhZGVyVGV4dCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gXCJcIlxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYWRkRm9vdGVyUm93PEM+KGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxDPiwgaW5pdGlhbGlzZUNhbGxiYWNrPzogKGNvbXBvbmVudDogQykgPT4gdm9pZCk6IEZvb3RlclJvd01vZGVsPEM+IHtcbiAgICBhc3NlcnQuaXNOaWwodGhpcy5mb290ZXJSb3dNb2RlbCk7XG4gICAgdGhpcy5mb290ZXJSb3dNb2RlbCA9IG5ldyBGb290ZXJSb3dNb2RlbC5JbXBsKGNvbXBvbmVudCwgaW5pdGlhbGlzZUNhbGxiYWNrKTtcbiAgICByZXR1cm4gdGhpcy5mb290ZXJSb3dNb2RlbDtcbiAgfVxuXG4gIGFkZFRlbXBsYXRlQ29sdW1uPFY+KGNvbHVtbklkOiBzdHJpbmcpOiBDdXN0b21UZW1wbGF0ZUNvbHVtbk1vZGVsPFJvdz4ge1xuICAgIHJldHVybiB0aGlzLmFkZENvbHVtbihuZXcgQ3VzdG9tVGVtcGxhdGVDb2x1bW5Nb2RlbDxSb3c+KGNvbHVtbklkLCB0aGlzLmNvbHVtbk1hbmFnZXIsICgpID0+IHRoaXMuZ2V0Q29sdW1uVGV4dFByb3BlcnRpZXMoY29sdW1uSWQpKSk7XG4gIH1cblxuICBhZGRSb3dDbGFzcyhjbGFzc05hbWU6IHN0cmluZywgcHJlZGljYXRlOiAocm93OiBSb3cpID0+IGJvb2xlYW4sIG9wdGlvbnM/OiBEZXBlbmRzT25PcHRpb25zKSB7XG4gICAgdGhpcy5yb3dDbGFzc05hbWVQcmVkaWNhdGVzLnB1c2gobmV3IFJvd0NsYXNzPFJvdz4oY2xhc3NOYW1lLCBwcmVkaWNhdGUpKTtcbiAgICBpZiAob3B0aW9ucykge1xuICAgICAgdGhpcy52aWV3U3RhdGVEZXBlbmRzT24oLi4uRGVwZW5kc09uT3B0aW9ucy5leHRyYWN0KG9wdGlvbnMpKVxuICAgIH1cbiAgfVxuXG4gIGFkZFJvd0F0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIGdldFZhbHVlOiAocm93OiBSb3cpID0+IHN0cmluZykge1xuICAgIHRoaXMucm93QXR0cmlidXRlR2VuZXJhdG9ycy5wdXNoKG5ldyBSb3dBdHRyaWJ1dGU8Um93PihhdHRyaWJ1dGVOYW1lLCBnZXRWYWx1ZSkpO1xuICB9XG5cbiAgZ2V0Um93Q2xhc3Nlcyhyb3c6IFJvdyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBjbGFzc05hbWVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIHRoaXMucm93Q2xhc3NOYW1lUHJlZGljYXRlcy5mb3JFYWNoKGkgPT4ge1xuICAgICAgaWYgKGkubWF0Y2hlcyhyb3cpKSB7XG4gICAgICAgIGNsYXNzTmFtZXMucHVzaChpLmNsYXNzTmFtZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGNsYXNzTmFtZXM7XG4gIH1cblxuICBnZXRSb3dBdHRyaWJ1dGVzKHJvdzogUm93KTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMucm93QXR0cmlidXRlR2VuZXJhdG9ycy5yZWR1Y2UoKHJlc3VsdCwgZ2VuZXJhdG9yKSA9PiB7XG4gICAgICByZXR1cm4gey4uLnJlc3VsdCwgW2dlbmVyYXRvci5hdHRyaWJ1dGVOYW1lXTogZ2VuZXJhdG9yLmdldFZhbHVlKHJvdyl9XG4gICAgfSwge30pO1xuICB9XG5cblxuICBwcm90ZWN0ZWQgYWRkQ29sdW1uPEMgZXh0ZW5kcyBDb2x1bW5Nb2RlbDxSb3c+Pihjb2x1bW46IEMsIHBvc2l0aW9uPzogQ29sdW1uT3JkZXJNYW5hZ2VyLlBvc2l0aW9uKTogQyB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uTWFuYWdlci5hZGRDb2x1bW4oY29sdW1uLCBwb3NpdGlvbik7XG4gIH1cblxuICBjb2x1bW5UZXh0UHJvcGVydGllcyhjb2x1bW5UZXh0UHJvcGVydGllczogeyBbY29sdW1uTmFtZTogc3RyaW5nXTogQ29sdW1uVGV4dFByb3BlcnRpZXMgfSkge1xuICAgIHRoaXMuX2NvbHVtblRleHRQcm9wZXJ0aWVzTG9va3VwID0gY29sdW1uVGV4dFByb3BlcnRpZXM7XG4gIH1cblxuICBnZXRDb2x1bW5UZXh0UHJvcGVydGllcyhjb2x1bW5JZDogc3RyaW5nKTogQ29sdW1uVGV4dFByb3BlcnRpZXMge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5UZXh0UHJvcGVydGllc0xvb2t1cCA/IHRoaXMuX2NvbHVtblRleHRQcm9wZXJ0aWVzTG9va3VwW2NvbHVtbklkXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG5cbiAgaXNSb3dTZWxlY3Rpb25FbmFibGVkRm9yKGNvbHVtbjogQ29sdW1uTW9kZWw8Um93Pik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzUm93U2VsZWN0aW9uRW5hYmxlZCgpICYmIGNvbHVtbi5pc1Jvd1NlbGVjdGlvbkVuYWJsZWQoKTtcbiAgfVxuXG4gIGlzUm93U2VsZWN0aW9uRW5hYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5oYXNVc2VyU2VsZWN0aW9uTW9kZWxUaGF0SXNFbmFibGVkKCkgJiYgIXRoaXMucm93U2VsZWN0aW9uRGlzYWJsZWRPbkFsbENvbHVtbnMkLnZhbHVlO1xuICB9XG5cbiAgaGFzVXNlclNlbGVjdGlvbk1vZGVsVGhhdElzRW5hYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25Db2x1bW5Nb2RlbC5zZWxlY3Rpb25Nb2RlbC5lbmFibGVkJC52YWx1ZTtcbiAgfVxuXG4gIGdldFNlbGVjdGlvbk1vZGVsKCk6IFNlbGVjdGlvbk1vZGVsPFJvdz4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbkNvbHVtbk1vZGVsLnNlbGVjdGlvbk1vZGVsO1xuICB9XG5cbiAgaXNIb3ZlckVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNSb3dTZWxlY3Rpb25FbmFibGVkKCkgfHwgdGhpcy5yb3dDbGlja0xpc3RlbmVycy5saXN0ZW5lckNvdW50ID4gMDtcbiAgfVxuXG4gIGlzQ3Vyc29yRW5hYmxlZChjb2x1bW46IENvbHVtbk1vZGVsPFJvdz4pIHtcbiAgICByZXR1cm4gdGhpcy5pc1Jvd1NlbGVjdGlvbkVuYWJsZWRGb3IoY29sdW1uKSB8fCB0aGlzLnJvd0NsaWNrTGlzdGVuZXJzLmxpc3RlbmVyQ291bnQgPiAwO1xuICB9XG5cbiAgc2VsZWN0Um93KHJvdzogUm93KSB7XG4gICAgdGhpcy5zZWxlY3Rpb25Db2x1bW5Nb2RlbD8uc2VsZWN0Um93KHJvdyk7XG4gIH1cblxuICBvblJvd0NsaWNrZWQoY2FsbGJhY2s6IChyb3c6IFJvdykgPT4gdm9pZCk6IERpc3Bvc2FibGUge1xuICAgIHJldHVybiB0aGlzLnJvd0NsaWNrTGlzdGVuZXJzLmFkZChjYWxsYmFjayk7XG4gIH1cblxuICBfbm90aWZ5Q2VsbENsaWNrZWQoY29sdW1uTW9kZWw6IENvbHVtbk1vZGVsPFJvdz4sIHJvdzogUm93KSB7XG4gICAgaWYgKHRoaXMuaXNSb3dTZWxlY3Rpb25FbmFibGVkRm9yKGNvbHVtbk1vZGVsKSkge1xuICAgICAgdGhpcy5zZWxlY3RSb3cocm93KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gY29uc29sZS5sb2coe1xuICAgICAgLy8gICBoYXNFbmFibGVkVXNlclNlbGVjdGlvbk1vZGVsOiB0aGlzLmhhc1VzZXJTZWxlY3Rpb25Nb2RlbFRoYXRJc0VuYWJsZWQoKSxcbiAgICAgIC8vICAgYWxsU2VsZWN0aW9uRGlzYWJsZWQ6IHRoaXMucm93U2VsZWN0aW9uRGlzYWJsZWRPbkFsbENvbHVtbnMkLnZhbHVlLFxuICAgICAgLy8gICByb3dTZWxlY3Rpb25FbmFibGVkOiB0aGlzLmlzUm93U2VsZWN0aW9uRW5hYmxlZCgpLFxuICAgICAgLy8gICByb3dTZWxlY3Rpb25FbmFibGVkRm9yQ29sdW1uOiBjb2x1bW5Nb2RlbC5pc1Jvd1NlbGVjdGlvbkVuYWJsZWQoKVxuICAgICAgLy8gfSlcbiAgICB9XG5cbiAgICB0aGlzLnJvd0NsaWNrTGlzdGVuZXJzLmZpcmUobCA9PiBsKHJvdykpO1xuICB9XG5cbn1cblxuUHJveHlSZWdpc3RyeS5yZWdpc3Rlck9uZVRpbWVCaW5kaW5nKEFic3RyYWN0VGFibGVNb2RlbClcbiJdfQ==
@@ -1,32 +1,40 @@
1
- import { Dsl, SelectionModel } from "@coolon/pectin";
1
+ import { Dsl, GarbageCollector, MutableValueModel, proxify, SelectionModel } from "@coolon/pectin";
2
2
  import { ComponentCellRendererPortalRef } from "../renderer/cell-portal-ref";
3
3
  import { SelectionHeaderCellComponent } from "../renderer/select-header-cell/selection-header-cell.component";
4
4
  import { SelectionCellComponent } from "../renderer/selection-cell/selection-cell.component";
5
5
  import { ColumnModel } from "./column-model";
6
6
  export class SelectionColumnModel extends ColumnModel {
7
- selectionModel;
8
7
  _enableHeaderControls = true;
9
8
  _color = "accent";
10
- constructor(columnId, order, defaults, selectionModel) {
9
+ _selectionModelProxy = proxify((SelectionModel));
10
+ _isUsingTemporarySelection$ = new MutableValueModel(false);
11
+ _userSelectionModel;
12
+ constructor(columnId, order, defaults) {
11
13
  super(columnId, order, defaults);
12
- this.selectionModel = selectionModel;
13
14
  const { chain } = Dsl.disposeWith(this);
14
15
  this._selectRowOnClick(false);
15
16
  this.cellHeaderRenderer(SelectionHeaderCellComponent, (component) => {
16
- component.selectionModel = this.selectionModel;
17
+ component.selectionModel = this._selectionModelProxy;
17
18
  component.enableHeaderControls = this._enableHeaderControls;
18
19
  component.color = this._color;
19
20
  });
20
21
  this.configureCellRenderer(new ComponentCellRendererPortalRef(SelectionCellComponent, (component, rowData) => {
21
22
  component.row = rowData.row;
22
- component.selectionModel = this.selectionModel;
23
+ component.selectionModel = this._selectionModelProxy;
23
24
  component.color = this._color;
24
25
  }));
25
- this.setMasterVisibility(this.selectionModel.enabled$);
26
- this.setDefaultVisibility(chain(this.selectionModel.mode$).equals(SelectionModel.Mode.MULTIPLE));
26
+ this.setMasterVisibility(this._selectionModelProxy.enabled$);
27
+ this.setDefaultVisibility(chain(this._selectionModelProxy.mode$).equals(SelectionModel.Mode.MULTIPLE));
28
+ }
29
+ get selectionModel() {
30
+ return this._selectionModelProxy;
31
+ }
32
+ get isUsingTemporarySelectionModel$() {
33
+ return this._isUsingTemporarySelection$.readonly$;
27
34
  }
28
35
  useSelectionModel(selectionModel) {
29
- this.selectionModel.setProxyTarget(selectionModel);
36
+ this._userSelectionModel = selectionModel;
37
+ this._selectionModelProxy.setProxyTarget(selectionModel);
30
38
  }
31
39
  getDefaultHeaderText() {
32
40
  return '';
@@ -42,10 +50,24 @@ export class SelectionColumnModel extends ColumnModel {
42
50
  this._color = color;
43
51
  }
44
52
  selectRow(row) {
45
- this.selectionModel.selectCommand.execute(row);
53
+ this._selectionModelProxy.selectCommand.execute(row);
46
54
  }
47
55
  isSelected(row) {
48
- return this.selectionModel.isSelected(row);
56
+ return this._selectionModelProxy.isSelected(row);
57
+ }
58
+ async withTemporarySelectionModel(createSelectionModel, process) {
59
+ const garbage = new GarbageCollector();
60
+ this._isUsingTemporarySelection$.value = true;
61
+ const selectionModel = createSelectionModel(garbage);
62
+ this._selectionModelProxy.setProxyTarget(selectionModel);
63
+ try {
64
+ await process(selectionModel);
65
+ }
66
+ finally {
67
+ this._selectionModelProxy.setProxyTarget(this._userSelectionModel);
68
+ garbage.dispose();
69
+ this._isUsingTemporarySelection$.value = false;
70
+ }
49
71
  }
50
72
  }
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWNvbHVtbi1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL2NvbHVtbi9zZWxlY3Rpb24tY29sdW1uLW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxHQUFHLEVBQWEsY0FBYyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUQsT0FBTyxFQUFDLDhCQUE4QixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDM0UsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0sZ0VBQWdFLENBQUM7QUFDNUcsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0scURBQXFELENBQUM7QUFDM0YsT0FBTyxFQUFDLFdBQVcsRUFBVSxNQUFNLGdCQUFnQixDQUFDO0FBR3BELE1BQU0sT0FBTyxvQkFBeUMsU0FBUSxXQUFnQjtJQUtvQztJQUh4RyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7SUFDN0IsTUFBTSxHQUFpQixRQUFRLENBQUM7SUFFeEMsWUFBWSxRQUFnQixFQUFFLEtBQXlCLEVBQUUsUUFBNEMsRUFBVyxjQUE4QztRQUM1SixLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUQ2RSxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0M7UUFFNUosTUFBTSxFQUFDLEtBQUssRUFBQyxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyw0QkFBNEIsRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ2xFLFNBQVMsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUMvQyxTQUFTLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1lBQzVELFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQTtRQUMvQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLDhCQUE4QixDQUFDLHNCQUFzQixFQUFFLENBQUMsU0FBUyxFQUFFLE9BQXFCLEVBQUUsRUFBRTtZQUN6SCxTQUFTLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDNUIsU0FBUyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQy9DLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQTtRQUMvQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ0osSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDbkcsQ0FBQztJQUVELGlCQUFpQixDQUFDLGNBQW1DO1FBQ25ELElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFa0Isb0JBQW9CO1FBQ3JDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELG9CQUFvQixDQUFDLE1BQWU7UUFDbEMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLE1BQU0sQ0FBQztRQUNwQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxLQUFtQjtRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQVE7UUFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxVQUFVLENBQUMsR0FBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VGhlbWVQYWxldHRlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xuaW1wb3J0IHtEc2wsIFByb3hpZmllZCwgU2VsZWN0aW9uTW9kZWx9IGZyb20gXCJAY29vbG9uL3BlY3RpblwiO1xuaW1wb3J0IHtDb21wb25lbnRDZWxsUmVuZGVyZXJQb3J0YWxSZWZ9IGZyb20gXCIuLi9yZW5kZXJlci9jZWxsLXBvcnRhbC1yZWZcIjtcbmltcG9ydCB7U2VsZWN0aW9uSGVhZGVyQ2VsbENvbXBvbmVudH0gZnJvbSBcIi4uL3JlbmRlcmVyL3NlbGVjdC1oZWFkZXItY2VsbC9zZWxlY3Rpb24taGVhZGVyLWNlbGwuY29tcG9uZW50XCI7XG5pbXBvcnQge1NlbGVjdGlvbkNlbGxDb21wb25lbnR9IGZyb20gXCIuLi9yZW5kZXJlci9zZWxlY3Rpb24tY2VsbC9zZWxlY3Rpb24tY2VsbC5jb21wb25lbnRcIjtcbmltcG9ydCB7Q29sdW1uTW9kZWwsIFJvd0RhdGF9IGZyb20gXCIuL2NvbHVtbi1tb2RlbFwiO1xuaW1wb3J0IHtDb2x1bW5PcmRlck1hbmFnZXJ9IGZyb20gXCIuL2NvbHVtbi1vcmRlci1tYW5hZ2VyXCI7XG5cbmV4cG9ydCBjbGFzcyBTZWxlY3Rpb25Db2x1bW5Nb2RlbDxSb3cgZXh0ZW5kcyBvYmplY3Q+IGV4dGVuZHMgQ29sdW1uTW9kZWw8Um93PiB7XG5cbiAgcHJpdmF0ZSBfZW5hYmxlSGVhZGVyQ29udHJvbHMgPSB0cnVlO1xuICBwcml2YXRlIF9jb2xvcjogVGhlbWVQYWxldHRlID0gXCJhY2NlbnRcIjtcblxuICBjb25zdHJ1Y3Rvcihjb2x1bW5JZDogc3RyaW5nLCBvcmRlcjogQ29sdW1uT3JkZXJNYW5hZ2VyLCBkZWZhdWx0czogQ29sdW1uTW9kZWwuVGV4dFByb3BlcnRpZXNQcm92aWRlciwgcmVhZG9ubHkgc2VsZWN0aW9uTW9kZWw6IFByb3hpZmllZDxTZWxlY3Rpb25Nb2RlbDxSb3c+Pikge1xuICAgIHN1cGVyKGNvbHVtbklkLCBvcmRlciwgZGVmYXVsdHMpO1xuICAgIGNvbnN0IHtjaGFpbn0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4gICAgdGhpcy5fc2VsZWN0Um93T25DbGljayhmYWxzZSk7XG4gICAgdGhpcy5jZWxsSGVhZGVyUmVuZGVyZXIoU2VsZWN0aW9uSGVhZGVyQ2VsbENvbXBvbmVudCwgKGNvbXBvbmVudCkgPT4ge1xuICAgICAgY29tcG9uZW50LnNlbGVjdGlvbk1vZGVsID0gdGhpcy5zZWxlY3Rpb25Nb2RlbDtcbiAgICAgIGNvbXBvbmVudC5lbmFibGVIZWFkZXJDb250cm9scyA9IHRoaXMuX2VuYWJsZUhlYWRlckNvbnRyb2xzO1xuICAgICAgY29tcG9uZW50LmNvbG9yID0gdGhpcy5fY29sb3JcbiAgICB9KTtcbiAgICB0aGlzLmNvbmZpZ3VyZUNlbGxSZW5kZXJlcihuZXcgQ29tcG9uZW50Q2VsbFJlbmRlcmVyUG9ydGFsUmVmKFNlbGVjdGlvbkNlbGxDb21wb25lbnQsIChjb21wb25lbnQsIHJvd0RhdGE6IFJvd0RhdGE8Um93PikgPT4ge1xuICAgICAgY29tcG9uZW50LnJvdyA9IHJvd0RhdGEucm93O1xuICAgICAgY29tcG9uZW50LnNlbGVjdGlvbk1vZGVsID0gdGhpcy5zZWxlY3Rpb25Nb2RlbDtcbiAgICAgIGNvbXBvbmVudC5jb2xvciA9IHRoaXMuX2NvbG9yXG4gICAgfSkpO1xuICAgIHRoaXMuc2V0TWFzdGVyVmlzaWJpbGl0eSh0aGlzLnNlbGVjdGlvbk1vZGVsLmVuYWJsZWQkKTtcbiAgICB0aGlzLnNldERlZmF1bHRWaXNpYmlsaXR5KGNoYWluKHRoaXMuc2VsZWN0aW9uTW9kZWwubW9kZSQpLmVxdWFscyhTZWxlY3Rpb25Nb2RlbC5Nb2RlLk1VTFRJUExFKSk7XG4gIH1cblxuICB1c2VTZWxlY3Rpb25Nb2RlbChzZWxlY3Rpb25Nb2RlbDogU2VsZWN0aW9uTW9kZWw8Um93Pikge1xuICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwuc2V0UHJveHlUYXJnZXQoc2VsZWN0aW9uTW9kZWwpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGdldERlZmF1bHRIZWFkZXJUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgZW5hYmxlSGVhZGVyQ29udHJvbHMoZW5hYmxlOiBib29sZWFuKTogdGhpcyB7XG4gICAgdGhpcy5fZW5hYmxlSGVhZGVyQ29udHJvbHMgPSBlbmFibGU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBjaGVja2JveCB0byB1c2UgYSB0aGVtZSBjb2xvciBlLmcuIFwicHJpbWFyeVwiIHwgXCJhY2NlbnRcIiB8IFwid2FyblwiXG4gICAqL1xuICBjb2xvcihjb2xvcjogVGhlbWVQYWxldHRlKSB7XG4gICAgdGhpcy5fY29sb3IgPSBjb2xvcjtcbiAgfVxuXG4gIHNlbGVjdFJvdyhyb3c6IFJvdykge1xuICAgIHRoaXMuc2VsZWN0aW9uTW9kZWwuc2VsZWN0Q29tbWFuZC5leGVjdXRlKHJvdyk7XG4gIH1cblxuICBpc1NlbGVjdGVkKHJvdzogUm93KSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZChyb3cpO1xuICB9XG59XG4iXX0=
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWNvbHVtbi1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL2NvbHVtbi9zZWxlY3Rpb24tY29sdW1uLW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxHQUFHLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQWEsT0FBTyxFQUFFLGNBQWMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVHLE9BQU8sRUFBQyw4QkFBOEIsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQzNFLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLGdFQUFnRSxDQUFDO0FBQzVHLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHFEQUFxRCxDQUFDO0FBQzNGLE9BQU8sRUFBQyxXQUFXLEVBQVUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdwRCxNQUFNLE9BQU8sb0JBQXlDLFNBQVEsV0FBZ0I7SUFFcEUscUJBQXFCLEdBQUcsSUFBSSxDQUFDO0lBQzdCLE1BQU0sR0FBaUIsUUFBUSxDQUFDO0lBQ3ZCLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyxDQUFBLGNBQW1CLENBQUEsQ0FBbUMsQ0FBQztJQUMvRiwyQkFBMkIsR0FBRyxJQUFJLGlCQUFpQixDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ3BFLG1CQUFtQixDQUFzQjtJQUdqRCxZQUFZLFFBQWdCLEVBQUUsS0FBeUIsRUFBRSxRQUE0QztRQUNuRyxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNqQyxNQUFNLEVBQUMsS0FBSyxFQUFDLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLDRCQUE0QixFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDbEUsU0FBUyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUM7WUFDckQsU0FBUyxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztZQUM1RCxTQUFTLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUE7UUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSw4QkFBOEIsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLFNBQVMsRUFBRSxPQUFxQixFQUFFLEVBQUU7WUFDekgsU0FBUyxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQzVCLFNBQVMsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1lBQ3JELFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQTtRQUMvQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ0osSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3pHLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQUksK0JBQStCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixDQUFDLFNBQVMsQ0FBQTtJQUNuRCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsY0FBbUM7UUFDbkQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLGNBQWMsQ0FBQztRQUMxQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFa0Isb0JBQW9CO1FBQ3JDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELG9CQUFvQixDQUFDLE1BQWU7UUFDbEMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLE1BQU0sQ0FBQztRQUNwQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxLQUFtQjtRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQVE7UUFDaEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsS0FBSyxDQUFDLDJCQUEyQixDQUFnQyxvQkFBc0QsRUFBRSxPQUE2QztRQUNwSyxNQUFNLE9BQU8sR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDOUMsTUFBTSxjQUFjLEdBQUcsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN6RCxJQUFJO1lBQ0YsTUFBTSxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDL0I7Z0JBQVM7WUFDUixJQUFJLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQ25FLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsMkJBQTJCLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztTQUNoRDtJQUNILENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VGhlbWVQYWxldHRlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xuaW1wb3J0IHtEc2wsIEdhcmJhZ2VDb2xsZWN0b3IsIE11dGFibGVWYWx1ZU1vZGVsLCBQcm94aWZpZWQsIHByb3hpZnksIFNlbGVjdGlvbk1vZGVsfSBmcm9tIFwiQGNvb2xvbi9wZWN0aW5cIjtcbmltcG9ydCB7Q29tcG9uZW50Q2VsbFJlbmRlcmVyUG9ydGFsUmVmfSBmcm9tIFwiLi4vcmVuZGVyZXIvY2VsbC1wb3J0YWwtcmVmXCI7XG5pbXBvcnQge1NlbGVjdGlvbkhlYWRlckNlbGxDb21wb25lbnR9IGZyb20gXCIuLi9yZW5kZXJlci9zZWxlY3QtaGVhZGVyLWNlbGwvc2VsZWN0aW9uLWhlYWRlci1jZWxsLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtTZWxlY3Rpb25DZWxsQ29tcG9uZW50fSBmcm9tIFwiLi4vcmVuZGVyZXIvc2VsZWN0aW9uLWNlbGwvc2VsZWN0aW9uLWNlbGwuY29tcG9uZW50XCI7XG5pbXBvcnQge0NvbHVtbk1vZGVsLCBSb3dEYXRhfSBmcm9tIFwiLi9jb2x1bW4tbW9kZWxcIjtcbmltcG9ydCB7Q29sdW1uT3JkZXJNYW5hZ2VyfSBmcm9tIFwiLi9jb2x1bW4tb3JkZXItbWFuYWdlclwiO1xuXG5leHBvcnQgY2xhc3MgU2VsZWN0aW9uQ29sdW1uTW9kZWw8Um93IGV4dGVuZHMgb2JqZWN0PiBleHRlbmRzIENvbHVtbk1vZGVsPFJvdz4ge1xuXG4gIHByaXZhdGUgX2VuYWJsZUhlYWRlckNvbnRyb2xzID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfY29sb3I6IFRoZW1lUGFsZXR0ZSA9IFwiYWNjZW50XCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdGlvbk1vZGVsUHJveHkgPSBwcm94aWZ5KFNlbGVjdGlvbk1vZGVsPFJvdz4pIGFzIFByb3hpZmllZDxTZWxlY3Rpb25Nb2RlbDxSb3c+PjtcbiAgcHJpdmF0ZSBfaXNVc2luZ1RlbXBvcmFyeVNlbGVjdGlvbiQgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIF91c2VyU2VsZWN0aW9uTW9kZWw6IFNlbGVjdGlvbk1vZGVsPFJvdz47XG5cblxuICBjb25zdHJ1Y3Rvcihjb2x1bW5JZDogc3RyaW5nLCBvcmRlcjogQ29sdW1uT3JkZXJNYW5hZ2VyLCBkZWZhdWx0czogQ29sdW1uTW9kZWwuVGV4dFByb3BlcnRpZXNQcm92aWRlcikge1xuICAgIHN1cGVyKGNvbHVtbklkLCBvcmRlciwgZGVmYXVsdHMpO1xuICAgIGNvbnN0IHtjaGFpbn0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4gICAgdGhpcy5fc2VsZWN0Um93T25DbGljayhmYWxzZSk7XG4gICAgdGhpcy5jZWxsSGVhZGVyUmVuZGVyZXIoU2VsZWN0aW9uSGVhZGVyQ2VsbENvbXBvbmVudCwgKGNvbXBvbmVudCkgPT4ge1xuICAgICAgY29tcG9uZW50LnNlbGVjdGlvbk1vZGVsID0gdGhpcy5fc2VsZWN0aW9uTW9kZWxQcm94eTtcbiAgICAgIGNvbXBvbmVudC5lbmFibGVIZWFkZXJDb250cm9scyA9IHRoaXMuX2VuYWJsZUhlYWRlckNvbnRyb2xzO1xuICAgICAgY29tcG9uZW50LmNvbG9yID0gdGhpcy5fY29sb3JcbiAgICB9KTtcbiAgICB0aGlzLmNvbmZpZ3VyZUNlbGxSZW5kZXJlcihuZXcgQ29tcG9uZW50Q2VsbFJlbmRlcmVyUG9ydGFsUmVmKFNlbGVjdGlvbkNlbGxDb21wb25lbnQsIChjb21wb25lbnQsIHJvd0RhdGE6IFJvd0RhdGE8Um93PikgPT4ge1xuICAgICAgY29tcG9uZW50LnJvdyA9IHJvd0RhdGEucm93O1xuICAgICAgY29tcG9uZW50LnNlbGVjdGlvbk1vZGVsID0gdGhpcy5fc2VsZWN0aW9uTW9kZWxQcm94eTtcbiAgICAgIGNvbXBvbmVudC5jb2xvciA9IHRoaXMuX2NvbG9yXG4gICAgfSkpO1xuICAgIHRoaXMuc2V0TWFzdGVyVmlzaWJpbGl0eSh0aGlzLl9zZWxlY3Rpb25Nb2RlbFByb3h5LmVuYWJsZWQkKTtcbiAgICB0aGlzLnNldERlZmF1bHRWaXNpYmlsaXR5KGNoYWluKHRoaXMuX3NlbGVjdGlvbk1vZGVsUHJveHkubW9kZSQpLmVxdWFscyhTZWxlY3Rpb25Nb2RlbC5Nb2RlLk1VTFRJUExFKSk7XG4gIH1cblxuICBnZXQgc2VsZWN0aW9uTW9kZWwoKTogU2VsZWN0aW9uTW9kZWw8Um93PiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbk1vZGVsUHJveHk7XG4gIH1cblxuICBnZXQgaXNVc2luZ1RlbXBvcmFyeVNlbGVjdGlvbk1vZGVsJCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNVc2luZ1RlbXBvcmFyeVNlbGVjdGlvbiQucmVhZG9ubHkkXG4gIH1cblxuICB1c2VTZWxlY3Rpb25Nb2RlbChzZWxlY3Rpb25Nb2RlbDogU2VsZWN0aW9uTW9kZWw8Um93Pikge1xuICAgIHRoaXMuX3VzZXJTZWxlY3Rpb25Nb2RlbCA9IHNlbGVjdGlvbk1vZGVsO1xuICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsUHJveHkuc2V0UHJveHlUYXJnZXQoc2VsZWN0aW9uTW9kZWwpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGdldERlZmF1bHRIZWFkZXJUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgZW5hYmxlSGVhZGVyQ29udHJvbHMoZW5hYmxlOiBib29sZWFuKTogdGhpcyB7XG4gICAgdGhpcy5fZW5hYmxlSGVhZGVyQ29udHJvbHMgPSBlbmFibGU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBjaGVja2JveCB0byB1c2UgYSB0aGVtZSBjb2xvciBlLmcuIFwicHJpbWFyeVwiIHwgXCJhY2NlbnRcIiB8IFwid2FyblwiXG4gICAqL1xuICBjb2xvcihjb2xvcjogVGhlbWVQYWxldHRlKSB7XG4gICAgdGhpcy5fY29sb3IgPSBjb2xvcjtcbiAgfVxuXG4gIHNlbGVjdFJvdyhyb3c6IFJvdykge1xuICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsUHJveHkuc2VsZWN0Q29tbWFuZC5leGVjdXRlKHJvdyk7XG4gIH1cblxuICBpc1NlbGVjdGVkKHJvdzogUm93KSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbk1vZGVsUHJveHkuaXNTZWxlY3RlZChyb3cpO1xuICB9XG5cbiAgYXN5bmMgd2l0aFRlbXBvcmFyeVNlbGVjdGlvbk1vZGVsPFMgZXh0ZW5kcyBTZWxlY3Rpb25Nb2RlbDxSb3c+PihjcmVhdGVTZWxlY3Rpb25Nb2RlbDogKGdhcmJhZ2U6IEdhcmJhZ2VDb2xsZWN0b3IpID0+IFMsIHByb2Nlc3M6IChzZWxlY3Rpb25Nb2RlbDogUykgPT4gUHJvbWlzZTx2b2lkPikge1xuICAgIGNvbnN0IGdhcmJhZ2UgPSBuZXcgR2FyYmFnZUNvbGxlY3RvcigpO1xuICAgIHRoaXMuX2lzVXNpbmdUZW1wb3JhcnlTZWxlY3Rpb24kLnZhbHVlID0gdHJ1ZTtcbiAgICBjb25zdCBzZWxlY3Rpb25Nb2RlbCA9IGNyZWF0ZVNlbGVjdGlvbk1vZGVsKGdhcmJhZ2UpO1xuICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsUHJveHkuc2V0UHJveHlUYXJnZXQoc2VsZWN0aW9uTW9kZWwpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBwcm9jZXNzKHNlbGVjdGlvbk1vZGVsKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWxQcm94eS5zZXRQcm94eVRhcmdldCh0aGlzLl91c2VyU2VsZWN0aW9uTW9kZWwpO1xuICAgICAgZ2FyYmFnZS5kaXNwb3NlKCk7XG4gICAgICB0aGlzLl9pc1VzaW5nVGVtcG9yYXJ5U2VsZWN0aW9uJC52YWx1ZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=
@@ -1,3 +1,4 @@
1
+ import { MultipleSelectionModel } from "@coolon/pectin";
1
2
  import { AbstractTableModel } from "../abstract-table-model";
2
3
  /**
3
4
  * Example:
@@ -92,8 +93,16 @@ export class TableModel extends AbstractTableModel {
92
93
  this._filteredRows$.setDelegate(filteredRows$);
93
94
  this._visibleRows$.setDelegate(visibleRows$);
94
95
  }
95
- addSelectionColumn(selectionModel, showSelectionColumn) {
96
- return this._addSelectionColumn(selectionModel, showSelectionColumn);
96
+ get isUsingTemporarySelectionModel$() {
97
+ return this.selectionColumnModel.isUsingTemporarySelectionModel$;
98
+ }
99
+ async withTemporaryMultipleSelectionModel(process) {
100
+ return this.selectionColumnModel.withTemporarySelectionModel(garbage => {
101
+ return new MultipleSelectionModel(this.filteredRows$, {
102
+ identifiedWith: this.dataSource$.identityOf,
103
+ disposedWith: garbage
104
+ });
105
+ }, process);
97
106
  }
98
107
  }
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy90YWJsZS90YWJsZS1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUczRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEVHO0FBQ0gsTUFBTSxPQUFPLFVBQStCLFNBQVEsa0JBQXVCO0lBRXpFLFlBQVksYUFBOEIsRUFBRSxPQUEwQztRQUNwRixLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksT0FBTyxFQUFFO1lBQ1gsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2Y7UUFDRCxJQUFJLGFBQWEsRUFBRTtZQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxhQUE2QixFQUFFLFlBQTRCO1FBQ3JFLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBQzlDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxjQUFvQyxFQUFFLG1CQUFtRDtRQUMxRyxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztJQUN2RSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtMaXN0TW9kZWwsIFNlbGVjdGlvbk1vZGVsLCBWYWx1ZU1vZGVsfSBmcm9tIFwiQGNvb2xvbi9wZWN0aW5cIjtcbmltcG9ydCB7QWJzdHJhY3RUYWJsZU1vZGVsfSBmcm9tIFwiLi4vYWJzdHJhY3QtdGFibGUtbW9kZWxcIjtcbmltcG9ydCB7U2VsZWN0aW9uQ29sdW1uTW9kZWx9IGZyb20gXCIuLi9jb2x1bW4vc2VsZWN0aW9uLWNvbHVtbi1tb2RlbFwiO1xuXG4vKipcbiAqIEV4YW1wbGU6XG4gKiBAZXhhbXBsZVxuICogY29uc3QgbW9kZWwgPSBuZXcgVGFibGVNb2RlbChoZXJvTGlzdCwgdGFibGUgPT4ge1xuICogICB0YWJsZS5wbHVjayhcImZpcnN0TmFtZVwiKTtcbiAqICAgdGFibGUucGx1Y2soXCJsYXN0TmFtZVwiKTtcbiAqICAgdGFibGUuYWRkQ3VzdG9tQ29sdW1uKFwiZnVsbE5hbWVcIiwgaGVybyA9PiBgJHtoZXJvLmZpcnN0TmFtZX0gJHtoZXJvLmxhc3ROYW1lfWApO1xuICogfSk7XG4gKlxuICogRWRpdGFibGUgdGFibGVzXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgc2F2ZUNvbW1hbmQgPSBVbmFyeUNvbW1hbmQuY3JlYXRlKChmb3JtOiBGb3JtPEhlcm8+KSA9PiB7XG4gKiAgIGlmIChmb3JtLnZhbGlkYXRlKCkpIHtcbiAqICAgICAvLyBub3JtYWwgZm9ybSBzYXZlIHN0dWZmXG4gKiAgICAgcmV0dXJuIHRydWU7IC8vIGZpbmlzaCBlZGl0aW5nXG4gKiAgIH1cbiAqICAgcmV0dXJuIGZhbHNlOyAvLyBjb250aW51ZSBlZGl0aWluZ1xuICogfVxuICogY29uc3QgY29sb3JzTmFtZXM6IExpc3RNb2RlbDxzdHJpbmc+ID0gLi4uO1xuICogY29uc3QgbW9kZWwgPSBUYWJsZU1vZGVsLmZyb21MaXN0KGhlcm9MaXN0LCB0YWJsZSA9PiB7XG4gKiAgIHRhYmxlLnBsdWNrKFwiZmlyc3ROYW1lXCIpLmNlbGxFZGl0b3IoU3RyaW5nSW5wdXRDb21wb25lbnQpOyA8LS0gaW50ZXJmYWNlIENlbGxFZGl0b3IgeyB2YWx1ZU1vZGVsOiAgRGlydHlUcmFja2luZ0Zvcm0uVmFsdWVNb2RlbDxzdHJpbmc+IHwgVmFsdWVNb2RlbDxzdHJpbmc+OyB9XG4gKiAgIHRhYmxlLnBsdWNrKFwibGFzdE5hbWVcIikuY2VsbEVkaXRvcihTdHJpbmdJbnB1dENvbXBvbmVudCwge1xuICogICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3IucHJlc2VudChcIldlIG5lZWQgYSBsYXN0IG5hbWVcIildXG4gKiAgIH0pO1xuICogICB0YWJsZS5wbHVjayhcImFnZVwiKS5jZWxsRWRpdG9yKE51bWJlcklucHV0Q29tcG9uZW50KTtcbiAqICAgdGFibGUucGx1Y2soXCJmYXZvcml0ZUNvbG9yXCIpLmNlbGxFZGl0b3IoU2VsZWN0SW5wdXRDb21wb25lbnQsIHtcbiAqICAgICBpbml0aWFsaXNlQ29tcG9uZW50KGNvbXBvbmVudDogU2VsZWN0SW5wdXRDb21wb25lbnQpIHtcbiAqICAgICAgIHNlbGVjdElucHV0Lm9wdGlvbnNNb2RlbCA9IGNvbG9yc05hbWVzOyAvLyA8LSBpbml0aWFsaXNlIG91ciBjb21wb25lbnRcbiAqICAgICB9XG4gKiAgIH0pO1xuICogICB0YWJsZS5hZGRFZGl0Q29udHJvbHMoc2F2ZUNvbW1hbmQpOyAvLyA8LSByZXF1aXJlZCB0byBlbmFibGUgZWRpdGluZ1xuICogfSk7XG4gKlxuICogU2VsZWN0aW9uIG1vZGVsc1xuICogQGV4YW1wbGVcbiAqIGNvbnN0IG1vZGVsID0gbmV3IFRhYmxlTW9kZWwoaGVyb0xpc3QsIHRhYmxlID0+IHtcbiAqICAgdGFibGUuYWRkU2VsZWN0aW9uQ29sdW1uKHNlbGVjdGlvbk1vZGVsKTsgLy8gPC0gY2FuIGJlIHNpbmdsZSBvciBtdWx0aXBsZSBzZWxlY3Rpb24gbW9kZWxcbiAqICAgdGFibGUucGx1Y2soXCJmaXJzdE5hbWVcIik7XG4gKiAgIHRhYmxlLnBsdWNrKFwibGFzdE5hbWVcIik7XG4gKiB9KTtcbiAqXG4gKiBDdXN0b20gY2VsbCByZW5kZXJlcnMgYW5kIGVkaXRvcnNcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBtb2RlbCA9IG5ldyBUYWJsZU1vZGVsKGhlcm9MaXN0LCB0YWJsZSA9PiB7XG4gKiAgIHRhYmxlLnBsdWNrKFwiZmF2b3JpdGVDb2xvclwiKVxuICogICAgICAuY2VsbEhlYWRlclJlbmRlcmVyKENlbGxIZWFkZXJSZW5kZXJlckNvbXBvbmVudCwgKGNvbXBvbmVudCwgY29sdW1uKSA9PiB7XG4gKiAgICAgICAgLy8gY29uZmlndXJlIHlvdXIgY29tcG9uZW50IHdpdGggd2hhdCBldmVyIHlvdSBuZWVkLlxuICogICAgICB9KTtcbiAqICAgICAgLmNlbGxSZW5kZXJlcihDZWxsUmVuZGVyZXJDb21wb25lbnQpIC8vIDwtLSBpbnRlcmZhY2UgQ2VsbEVkaXRvciB7IHZhbHVlOiBzdHJpbmc7IH1cbiAqICAgICAgLmNlbGxFZGl0b3IoQ2VsbEVkaXRvckNvbXBvbmVudC4pOyAvLyA8LS0gaW50ZXJmYWNlIENlbGxFZGl0b3IgeyB2YWx1ZU1vZGVsOiAgRGlydHlUcmFja2luZ0Zvcm0uVmFsdWVNb2RlbDxzdHJpbmc+IHwgVmFsdWVNb2RlbDxzdHJpbmc+OyB9XG4gKiAgIHRhYmxlLmFkZEN1c3RvbUNvbHVtbihcImZ1bGxOYW1lXCIsIGhlcm8gPT4gYCR7aGVyby5maXJzdE5hbWV9ICR7aGVyby5sYXN0TmFtZX1gKTtcbiAqIH0pO1xuICpcbiAqIFRlbXBsYXRlIGNvbHVtbnNcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBtb2RlbCA9IG5ldyBUYWJsZU1vZGVsKGhlcm9MaXN0LCB0YWJsZSA9PiB7XG4gKiAgIHRhYmxlLmFkZFNlbGVjdGlvbkNvbHVtbihzZWxlY3Rpb25Nb2RlbCk7IC8vIDwtIGNhbiBiZSBzaW5nbGUgb3IgbXVsdGlwbGUgc2VsZWN0aW9uIG1vZGVsXG4gKiAgIHRhYmxlLmFkZFRlbXBsYXRlQ29sdW1uKFwibXlUZW1wbGF0ZVwiKTtcbiAqIH0pO1xuICpcbiAqIDxkaXYgKmF1cENvbHVtblRlbXBsYXRlPVwibGV0IGhlcm87IGNvbHVtbklkOiAnbXlUZW1wbGF0ZSdcIj57e2hlcm8uYWdlfX08L2Rpdj5cbiAqXG4gKiBJMThuXG4gKiBAZXhhbXBsZVxuICogW3RhYmxlLnltbF1cbiAqIHRhYmxlOlxuICogICBjb2x1bW5zKENvbHVtblRleHRQcm9wZXJ0aWVzW10pOlxuICogICAgICBmaXJzdE5hbWU6XG4gKiAgICAgICAgIGhlYWRlclRleHQ6IFwiRmlyc3QgTmFtZVwiXG4gKiAgICAgIGZ1bGxOYW1lOlxuICogICAgICAgICBoZWFkZXJUZXh0OiBcIkZ1bGwgTmFtZVwiXG4gKlxuICogY29uc3QgbW9kZWwgPSBuZXcgVGFibGVNb2RlbChoZXJvTGlzdCwgdGFibGUgPT4ge1xuICogICB0YWJsZS5wbHVjayhcImZhdm9yaXRlQ29sb3JcIikuY2VsbFJlbmRlcmVyKC4uLikuY2VsbEVkaXRvciguLi4pO1xuICogICB0YWJsZS5hZGRDdXN0b21Db2x1bW4oXCJmdWxsTmFtZVwiLCBoZXJvID0+IGAke2hlcm8uZmlyc3ROYW1lfSAke2hlcm8ubGFzdE5hbWV9YCk7XG4gKlxuICogICB0YWJsZS5jb2x1bW5UZXh0UHJvcGVydGllcyhJMThuLnRhYmxlLmNvbHVtbnMpOyAvLyA8LSBjb25maWd1cmVzIGFsbCBjb2x1bW5zXG4gKiB9KTtcbiAqL1xuZXhwb3J0IGNsYXNzIFRhYmxlTW9kZWw8Um93IGV4dGVuZHMgb2JqZWN0PiBleHRlbmRzIEFic3RyYWN0VGFibGVNb2RlbDxSb3c+IHtcblxuICBjb25zdHJ1Y3Rvcihzb3VyY2VPZlRydXRoPzogTGlzdE1vZGVsPFJvdz4sIGJ1aWxkZXI/OiAodGFibGU6IFRhYmxlTW9kZWw8Um93PikgPT4gdm9pZCkge1xuICAgIHN1cGVyKCk7XG4gICAgaWYgKGJ1aWxkZXIpIHtcbiAgICAgIGJ1aWxkZXIodGhpcyk7XG4gICAgfVxuICAgIGlmIChzb3VyY2VPZlRydXRoKSB7XG4gICAgICB0aGlzLnNldERhdGFTb3VyY2Uoc291cmNlT2ZUcnV0aCk7XG4gICAgfVxuICB9XG5cbiAgYmluZFRvVGFibGUoZmlsdGVyZWRSb3dzJDogTGlzdE1vZGVsPFJvdz4sIHZpc2libGVSb3dzJDogTGlzdE1vZGVsPFJvdz4pIHtcbiAgICB0aGlzLl9maWx0ZXJlZFJvd3MkLnNldERlbGVnYXRlKGZpbHRlcmVkUm93cyQpXG4gICAgdGhpcy5fdmlzaWJsZVJvd3MkLnNldERlbGVnYXRlKHZpc2libGVSb3dzJCk7XG4gIH1cblxuICBhZGRTZWxlY3Rpb25Db2x1bW4oc2VsZWN0aW9uTW9kZWw/OiBTZWxlY3Rpb25Nb2RlbDxSb3c+LCBzaG93U2VsZWN0aW9uQ29sdW1uPzogVmFsdWVNb2RlbDxib29sZWFuPiB8IGJvb2xlYW4pOiBTZWxlY3Rpb25Db2x1bW5Nb2RlbDxSb3c+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRkU2VsZWN0aW9uQ29sdW1uKHNlbGVjdGlvbk1vZGVsLCBzaG93U2VsZWN0aW9uQ29sdW1uKTtcbiAgfVxufVxuXG4iXX0=
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy90YWJsZS90YWJsZS1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBSUwsc0JBQXNCLEVBSXZCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFHM0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThFRztBQUNILE1BQU0sT0FBTyxVQUErQixTQUFRLGtCQUF1QjtJQUV6RSxZQUFZLGFBQThCLEVBQUUsT0FBMEM7UUFDcEYsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLE9BQU8sRUFBRTtZQUNYLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNmO1FBQ0QsSUFBSSxhQUFhLEVBQUU7WUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUNuQztJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsYUFBNkIsRUFBRSxZQUE0QjtRQUNyRSxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUM5QyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBSSwrQkFBK0I7UUFDakMsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsK0JBQStCLENBQUM7SUFDbkUsQ0FBQztJQUVELEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxPQUE0RTtRQUNwSCxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQywyQkFBMkIsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNyRSxPQUFPLElBQUksc0JBQXNCLENBQWMsSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDakUsY0FBYyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVTtnQkFDM0MsWUFBWSxFQUFFLE9BQU87YUFDdEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2QsQ0FBQztDQUdGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIENhblByb3h5LFxuICBHYXJiYWdlQ29sbGVjdG9yLFxuICBMaXN0TW9kZWwsXG4gIE11bHRpcGxlU2VsZWN0aW9uTW9kZWwsXG4gIE11dGFibGVWYWx1ZU1vZGVsLFxuICBTZWxlY3Rpb25Nb2RlbCxcbiAgVmFsdWVNb2RlbFxufSBmcm9tIFwiQGNvb2xvbi9wZWN0aW5cIjtcbmltcG9ydCB7QWJzdHJhY3RUYWJsZU1vZGVsfSBmcm9tIFwiLi4vYWJzdHJhY3QtdGFibGUtbW9kZWxcIjtcbmltcG9ydCB7U2VsZWN0aW9uQ29sdW1uTW9kZWx9IGZyb20gXCIuLi9jb2x1bW4vc2VsZWN0aW9uLWNvbHVtbi1tb2RlbFwiO1xuXG4vKipcbiAqIEV4YW1wbGU6XG4gKiBAZXhhbXBsZVxuICogY29uc3QgbW9kZWwgPSBuZXcgVGFibGVNb2RlbChoZXJvTGlzdCwgdGFibGUgPT4ge1xuICogICB0YWJsZS5wbHVjayhcImZpcnN0TmFtZVwiKTtcbiAqICAgdGFibGUucGx1Y2soXCJsYXN0TmFtZVwiKTtcbiAqICAgdGFibGUuYWRkQ3VzdG9tQ29sdW1uKFwiZnVsbE5hbWVcIiwgaGVybyA9PiBgJHtoZXJvLmZpcnN0TmFtZX0gJHtoZXJvLmxhc3ROYW1lfWApO1xuICogfSk7XG4gKlxuICogRWRpdGFibGUgdGFibGVzXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgc2F2ZUNvbW1hbmQgPSBVbmFyeUNvbW1hbmQuY3JlYXRlKChmb3JtOiBGb3JtPEhlcm8+KSA9PiB7XG4gKiAgIGlmIChmb3JtLnZhbGlkYXRlKCkpIHtcbiAqICAgICAvLyBub3JtYWwgZm9ybSBzYXZlIHN0dWZmXG4gKiAgICAgcmV0dXJuIHRydWU7IC8vIGZpbmlzaCBlZGl0aW5nXG4gKiAgIH1cbiAqICAgcmV0dXJuIGZhbHNlOyAvLyBjb250aW51ZSBlZGl0aWluZ1xuICogfVxuICogY29uc3QgY29sb3JzTmFtZXM6IExpc3RNb2RlbDxzdHJpbmc+ID0gLi4uO1xuICogY29uc3QgbW9kZWwgPSBUYWJsZU1vZGVsLmZyb21MaXN0KGhlcm9MaXN0LCB0YWJsZSA9PiB7XG4gKiAgIHRhYmxlLnBsdWNrKFwiZmlyc3ROYW1lXCIpLmNlbGxFZGl0b3IoU3RyaW5nSW5wdXRDb21wb25lbnQpOyA8LS0gaW50ZXJmYWNlIENlbGxFZGl0b3IgeyB2YWx1ZU1vZGVsOiAgRGlydHlUcmFja2luZ0Zvcm0uVmFsdWVNb2RlbDxzdHJpbmc+IHwgVmFsdWVNb2RlbDxzdHJpbmc+OyB9XG4gKiAgIHRhYmxlLnBsdWNrKFwibGFzdE5hbWVcIikuY2VsbEVkaXRvcihTdHJpbmdJbnB1dENvbXBvbmVudCwge1xuICogICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3IucHJlc2VudChcIldlIG5lZWQgYSBsYXN0IG5hbWVcIildXG4gKiAgIH0pO1xuICogICB0YWJsZS5wbHVjayhcImFnZVwiKS5jZWxsRWRpdG9yKE51bWJlcklucHV0Q29tcG9uZW50KTtcbiAqICAgdGFibGUucGx1Y2soXCJmYXZvcml0ZUNvbG9yXCIpLmNlbGxFZGl0b3IoU2VsZWN0SW5wdXRDb21wb25lbnQsIHtcbiAqICAgICBpbml0aWFsaXNlQ29tcG9uZW50KGNvbXBvbmVudDogU2VsZWN0SW5wdXRDb21wb25lbnQpIHtcbiAqICAgICAgIHNlbGVjdElucHV0Lm9wdGlvbnNNb2RlbCA9IGNvbG9yc05hbWVzOyAvLyA8LSBpbml0aWFsaXNlIG91ciBjb21wb25lbnRcbiAqICAgICB9XG4gKiAgIH0pO1xuICogICB0YWJsZS5hZGRFZGl0Q29udHJvbHMoc2F2ZUNvbW1hbmQpOyAvLyA8LSByZXF1aXJlZCB0byBlbmFibGUgZWRpdGluZ1xuICogfSk7XG4gKlxuICogU2VsZWN0aW9uIG1vZGVsc1xuICogQGV4YW1wbGVcbiAqIGNvbnN0IG1vZGVsID0gbmV3IFRhYmxlTW9kZWwoaGVyb0xpc3QsIHRhYmxlID0+IHtcbiAqICAgdGFibGUuYWRkU2VsZWN0aW9uQ29sdW1uKHNlbGVjdGlvbk1vZGVsKTsgLy8gPC0gY2FuIGJlIHNpbmdsZSBvciBtdWx0aXBsZSBzZWxlY3Rpb24gbW9kZWxcbiAqICAgdGFibGUucGx1Y2soXCJmaXJzdE5hbWVcIik7XG4gKiAgIHRhYmxlLnBsdWNrKFwibGFzdE5hbWVcIik7XG4gKiB9KTtcbiAqXG4gKiBDdXN0b20gY2VsbCByZW5kZXJlcnMgYW5kIGVkaXRvcnNcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBtb2RlbCA9IG5ldyBUYWJsZU1vZGVsKGhlcm9MaXN0LCB0YWJsZSA9PiB7XG4gKiAgIHRhYmxlLnBsdWNrKFwiZmF2b3JpdGVDb2xvclwiKVxuICogICAgICAuY2VsbEhlYWRlclJlbmRlcmVyKENlbGxIZWFkZXJSZW5kZXJlckNvbXBvbmVudCwgKGNvbXBvbmVudCwgY29sdW1uKSA9PiB7XG4gKiAgICAgICAgLy8gY29uZmlndXJlIHlvdXIgY29tcG9uZW50IHdpdGggd2hhdCBldmVyIHlvdSBuZWVkLlxuICogICAgICB9KTtcbiAqICAgICAgLmNlbGxSZW5kZXJlcihDZWxsUmVuZGVyZXJDb21wb25lbnQpIC8vIDwtLSBpbnRlcmZhY2UgQ2VsbEVkaXRvciB7IHZhbHVlOiBzdHJpbmc7IH1cbiAqICAgICAgLmNlbGxFZGl0b3IoQ2VsbEVkaXRvckNvbXBvbmVudC4pOyAvLyA8LS0gaW50ZXJmYWNlIENlbGxFZGl0b3IgeyB2YWx1ZU1vZGVsOiAgRGlydHlUcmFja2luZ0Zvcm0uVmFsdWVNb2RlbDxzdHJpbmc+IHwgVmFsdWVNb2RlbDxzdHJpbmc+OyB9XG4gKiAgIHRhYmxlLmFkZEN1c3RvbUNvbHVtbihcImZ1bGxOYW1lXCIsIGhlcm8gPT4gYCR7aGVyby5maXJzdE5hbWV9ICR7aGVyby5sYXN0TmFtZX1gKTtcbiAqIH0pO1xuICpcbiAqIFRlbXBsYXRlIGNvbHVtbnNcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBtb2RlbCA9IG5ldyBUYWJsZU1vZGVsKGhlcm9MaXN0LCB0YWJsZSA9PiB7XG4gKiAgIHRhYmxlLmFkZFNlbGVjdGlvbkNvbHVtbihzZWxlY3Rpb25Nb2RlbCk7IC8vIDwtIGNhbiBiZSBzaW5nbGUgb3IgbXVsdGlwbGUgc2VsZWN0aW9uIG1vZGVsXG4gKiAgIHRhYmxlLmFkZFRlbXBsYXRlQ29sdW1uKFwibXlUZW1wbGF0ZVwiKTtcbiAqIH0pO1xuICpcbiAqIDxkaXYgKmF1cENvbHVtblRlbXBsYXRlPVwibGV0IGhlcm87IGNvbHVtbklkOiAnbXlUZW1wbGF0ZSdcIj57e2hlcm8uYWdlfX08L2Rpdj5cbiAqXG4gKiBJMThuXG4gKiBAZXhhbXBsZVxuICogW3RhYmxlLnltbF1cbiAqIHRhYmxlOlxuICogICBjb2x1bW5zKENvbHVtblRleHRQcm9wZXJ0aWVzW10pOlxuICogICAgICBmaXJzdE5hbWU6XG4gKiAgICAgICAgIGhlYWRlclRleHQ6IFwiRmlyc3QgTmFtZVwiXG4gKiAgICAgIGZ1bGxOYW1lOlxuICogICAgICAgICBoZWFkZXJUZXh0OiBcIkZ1bGwgTmFtZVwiXG4gKlxuICogY29uc3QgbW9kZWwgPSBuZXcgVGFibGVNb2RlbChoZXJvTGlzdCwgdGFibGUgPT4ge1xuICogICB0YWJsZS5wbHVjayhcImZhdm9yaXRlQ29sb3JcIikuY2VsbFJlbmRlcmVyKC4uLikuY2VsbEVkaXRvciguLi4pO1xuICogICB0YWJsZS5hZGRDdXN0b21Db2x1bW4oXCJmdWxsTmFtZVwiLCBoZXJvID0+IGAke2hlcm8uZmlyc3ROYW1lfSAke2hlcm8ubGFzdE5hbWV9YCk7XG4gKlxuICogICB0YWJsZS5jb2x1bW5UZXh0UHJvcGVydGllcyhJMThuLnRhYmxlLmNvbHVtbnMpOyAvLyA8LSBjb25maWd1cmVzIGFsbCBjb2x1bW5zXG4gKiB9KTtcbiAqL1xuZXhwb3J0IGNsYXNzIFRhYmxlTW9kZWw8Um93IGV4dGVuZHMgb2JqZWN0PiBleHRlbmRzIEFic3RyYWN0VGFibGVNb2RlbDxSb3c+IHtcblxuICBjb25zdHJ1Y3Rvcihzb3VyY2VPZlRydXRoPzogTGlzdE1vZGVsPFJvdz4sIGJ1aWxkZXI/OiAodGFibGU6IFRhYmxlTW9kZWw8Um93PikgPT4gdm9pZCkge1xuICAgIHN1cGVyKCk7XG4gICAgaWYgKGJ1aWxkZXIpIHtcbiAgICAgIGJ1aWxkZXIodGhpcyk7XG4gICAgfVxuICAgIGlmIChzb3VyY2VPZlRydXRoKSB7XG4gICAgICB0aGlzLnNldERhdGFTb3VyY2Uoc291cmNlT2ZUcnV0aCk7XG4gICAgfVxuICB9XG5cbiAgYmluZFRvVGFibGUoZmlsdGVyZWRSb3dzJDogTGlzdE1vZGVsPFJvdz4sIHZpc2libGVSb3dzJDogTGlzdE1vZGVsPFJvdz4pIHtcbiAgICB0aGlzLl9maWx0ZXJlZFJvd3MkLnNldERlbGVnYXRlKGZpbHRlcmVkUm93cyQpXG4gICAgdGhpcy5fdmlzaWJsZVJvd3MkLnNldERlbGVnYXRlKHZpc2libGVSb3dzJCk7XG4gIH1cblxuICBnZXQgaXNVc2luZ1RlbXBvcmFyeVNlbGVjdGlvbk1vZGVsJCgpIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25Db2x1bW5Nb2RlbC5pc1VzaW5nVGVtcG9yYXJ5U2VsZWN0aW9uTW9kZWwkO1xuICB9XG5cbiAgYXN5bmMgd2l0aFRlbXBvcmFyeU11bHRpcGxlU2VsZWN0aW9uTW9kZWwocHJvY2VzczogKHNlbGVjdGlvbk1vZGVsOiBNdWx0aXBsZVNlbGVjdGlvbk1vZGVsPFJvdywgYW55PikgPT4gUHJvbWlzZTx2b2lkPikge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbkNvbHVtbk1vZGVsLndpdGhUZW1wb3JhcnlTZWxlY3Rpb25Nb2RlbChnYXJiYWdlID0+IHtcbiAgICAgIHJldHVybiBuZXcgTXVsdGlwbGVTZWxlY3Rpb25Nb2RlbDxSb3csIHN0cmluZz4odGhpcy5maWx0ZXJlZFJvd3MkLCB7XG4gICAgICAgIGlkZW50aWZpZWRXaXRoOiB0aGlzLmRhdGFTb3VyY2UkLmlkZW50aXR5T2YsXG4gICAgICAgIGRpc3Bvc2VkV2l0aDogZ2FyYmFnZVxuICAgICAgfSk7XG4gICAgfSwgcHJvY2Vzcyk7XG4gIH1cblxuXG59XG5cbiJdfQ==
@@ -56,9 +56,6 @@ export class TreeTableModel extends AbstractTableModel {
56
56
  isExpanded(row) {
57
57
  return this.treeExpansionModel.isExpanded(row);
58
58
  }
59
- addSelectionColumn(selectionModel, showSelectionColumn) {
60
- return this._addSelectionColumn(selectionModel, showSelectionColumn);
61
- }
62
59
  }
63
60
  // export class FlattenStrategy<T extends VisitableTree<any>> extends SelfAndDescendantsVisitor<T> {
64
61
  //
@@ -105,4 +102,4 @@ export class TreeTableModel extends AbstractTableModel {
105
102
  //
106
103
  //
107
104
  // }
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS10YWJsZS1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL3RyZWUtdGFibGUvdHJlZS10YWJsZS1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsb0JBQW9CLEVBQTJELE1BQU0sZ0JBQWdCLENBQUM7QUFFOUcsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUkzRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUkvRCxRQUFRO0FBQ1IsdUJBQXVCO0FBQ3ZCLG1DQUFtQztBQUNuQywwREFBMEQ7QUFDMUQsdURBQXVEO0FBQ3ZELCtHQUErRztBQUMvRyx1QkFBdUI7QUFDdkIsMkNBQTJDO0FBQzNDLDBGQUEwRjtBQUMxRixFQUFFO0FBQ0YsTUFBTSxPQUFPLGNBQW1DLFNBQVEsa0JBQXVCO0lBRXJFLGtCQUFrQixDQUEwQjtJQUNuQyxtQkFBbUIsQ0FBOEI7SUFDekQsY0FBYyxDQUFzQjtJQUVyQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxvQkFBb0IsRUFBMEIsQ0FBQyxDQUFBO0lBRTNHLFlBQVksT0FBdUIsRUFBRSxhQUFtRSxFQUFFLE9BQThDO1FBQ3RKLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxPQUFPO1lBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBcUIsQ0FBQztRQUNoSCxJQUFJ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QzVCLFFBQVE7QUFDUixFQUFFO0FBQ0YsRUFBRTtBQUNGLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtEZWxlZ2F0aW5nVmFsdWVNb2RlbCwgTGlzdE1vZGVsLCBNdXRhYmxlVmFsdWVNb2RlbCwgU2VsZWN0aW9uTW9kZWwsIFZhbHVlTW9kZWx9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcblxuaW1wb3J0IHtpc0Z1bmN0aW9ufSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtBYnN0cmFjdFRhYmxlTW9kZWx9IGZyb20gJy4uL2Fic3RyYWN0LXRhYmxlLW1vZGVsJztcbmltcG9ydCB7U2VsZWN0aW9uQ29sdW1uTW9kZWx9IGZyb20gXCIuLi9jb2x1bW4vc2VsZWN0aW9uLWNvbHVtbi1tb2RlbFwiO1xuaW1wb3J0IHtGbGF0dGVuZWRUcmVlTGlzdE1vZGVsfSBmcm9tICcuL2ZsYXR0ZW5lZC10cmVlLWxpc3QtbW9kZWwnO1xuaW1wb3J0IHtUcmVlRXhwYW5zaW9uTW9kZWx9IGZyb20gJy4vdHJlZS1leHBhbnNpb24tbW9kZWwnO1xuaW1wb3J0IHtUcmVlTGFiZWxDb2x1bW5Nb2RlbH0gZnJvbSAnLi90cmVlLWxhYmVsLWNvbHVtbi1tb2RlbCc7XG5cbmV4cG9ydCB0eXBlIENoaWxkQXJyYXlQcm9wZXJ0aWVzT2Y8VD4gPSB7IFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgVFtdID8gSyA6IG5ldmVyIH1ba2V5b2YgVF07XG5cbi8vIFRPRE86XG4vLyAgICBTZWxlY3Rpb24gTW9kZWxzOlxuLy8gICAgICAtIGFzIHNpbXBsZSBuYXZpZ2F0aW9uIHRyZWVcbi8vICAgICAgLSBhcyBlZGl0YWJsZSBncmlkIChzZWxlY3RlIGFsbCwgZXZlbiBoaWRkZW4gZXRjPylcbi8vICAgICAgLSBmaXhpbmcgc2VsZWN0aW9uIG9uIHVuZGVybHlpbmcgbW9kZWwgY2hhbmdlcy5cbi8vICAgICAgLSByZW5kZXJpbmcgc2VsZWN0aW9uOiByb3cgaGlnaGxpZ2h0aW5nLCBjaGVja2JveGVzIChpbiB0aGUgdHJlZSByZW5kZXJlciBvciBpbiBzZXBhcmF0ZSBjb2x1bW4pLCBib3RoLlxuLy8gICAgRXhwYW5zaW9uIE1vZGVsczpcbi8vICAgICAgLSBBZGQgYWJpbGl0eSB0byBhdXRvIHNob3cgdG8gZGVwdGhcbi8vICAgICAgLSBBZGQgYSBwcmVkaWNhdGUgdG8gY2hlY2sgZGVmYXVsdCBleHBhbnNpb24gKGkuZS4gaGFzIGNoaWxkcmVuIG9mIGEgY2VydGFpbiB0eXBlKVxuLy9cbmV4cG9ydCBjbGFzcyBUcmVlVGFibGVNb2RlbDxSb3cgZXh0ZW5kcyBvYmplY3Q+IGV4dGVuZHMgQWJzdHJhY3RUYWJsZU1vZGVsPFJvdz4ge1xuXG4gIHByaXZhdGUgdHJlZUV4cGFuc2lvbk1vZGVsOiBUcmVlRXhwYW5zaW9uTW9kZWw8Um93PjtcbiAgcHJpdmF0ZSByZWFkb25seSBmbGF0dGVuZWREYXRhU291cmNlOiBGbGF0dGVuZWRUcmVlTGlzdE1vZGVsPFJvdz47XG4gIHJlYWRvbmx5IGNoaWxkRXh0cmFjdG9yOiAocm93OiBSb3cpID0+IFJvd1tdO1xuXG4gIHByaXZhdGUgX2lzRXhwYW5kZWRQcmVkaWNhdGUkID0gdGhpcy5yZWdpc3RlckRpc3Bvc2FibGUobmV3IERlbGVnYXRpbmdWYWx1ZU1vZGVsPChub2RlOiBSb3cpID0+IGJvb2xlYW4+KCkpXG5cbiAgY29uc3RydWN0b3Ioc291cmNlJDogTGlzdE1vZGVsPFJvdz4sIGNoaWxkQWNjZXNzb3I6IENoaWxkQXJyYXlQcm9wZXJ0aWVzT2Y8Um93PiB8ICgobm9kZTogUm93KSA9PiBSb3dbXSksIGJ1aWxkZXI/OiAobW9kZWw6IFRyZWVUYWJsZU1vZGVsPFJvdz4pID0+IHZvaWQpIHtcbiAgICBzdXBlcigpO1xuICAgIGlmIChidWlsZGVyKSBidWlsZGVyKHRoaXMpO1xuICAgIHRoaXMuY2hpbGRFeHRyYWN0b3IgPSBpc0Z1bmN0aW9uKGNoaWxkQWNjZXNzb3IpID8gY2hpbGRBY2Nlc3NvciA6IHJvdyA9PiByb3dbY2hpbGRBY2Nlc3Nvcl0gYXMgdW5rbm93biBhcyBSb3dbXTtcbiAgICB0aGlzLmFkZFJvd0NsYXNzKCdhdXAtbm9kZS1jb2xsYXBzZWQnLCByb3cgPT4gdGhpcy5pc0NvbGxhcHNlZChyb3cpKTtcbiAgICB0aGlzLnNldERhdGFTb3VyY2Uoc291cmNlJClcbiAgfVxuXG4gIGdldCBpc0V4cGFuZGVkUHJlZGljYXRlJCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNFeHBhbmRlZFByZWRpY2F0ZSQucmVhZG9ubHkkO1xuICB9XG5cbiAgYmluZFRvVGFibGUoZXhwYW5zaW9uTW9kZWw6IFRyZWVFeHBhbnNpb25Nb2RlbDxSb3c+LCBmaWx0ZXJlZFJvd3MkOiBMaXN0TW9kZWw8Um93PiwgdmlzaWJsZVJvd3MkOiBMaXN0TW9kZWw8Um93PiwgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHRoaXMudHJlZUV4cGFuc2lvbk1vZGVsID0gZXhwYW5zaW9uTW9kZWw7XG4gICAgLy8gVE9ETzogTW92ZSBhbGwgdGhlIGV4cGFuc2lvbiBtb2RlbCBzdHVmZiBvdXQgb2YgaGVyZSBhbmQgaGF2ZSB0aGluZ3MgdXNlIHRoZSBleHBhbnNpb24gbW9kZWwgZGlyZWN0bHlcbiAgICB0aGlzLl9pc0V4cGFuZGVkUHJlZGljYXRlJC5zZXREZWxlZ2F0ZSh0aGlzLnRyZWVFeHBhbnNpb25Nb2RlbC5pc0V4cGFuZGVkUHJlZGljYXRlJClcbiAgICB0aGlzLl9maWx0ZXJlZFJvd3MkLnNldERlbGVnYXRlKGZpbHRlcmVkUm93cyQpXG4gICAgdGhpcy5fdmlzaWJsZVJvd3MkLnNldERlbGVnYXRlKHZpc2libGVSb3dzJCk7XG4gIH1cblxuICB0cmVlQ29udHJvbENvbHVtbihidWlsZGVyOiAoY29sdW1uOiBUcmVlTGFiZWxDb2x1bW5Nb2RlbDxSb3c+KSA9PiB2b2lkKSB7XG4gICAgY29uc3QgY29sdW1uSWQgPSAndHJlZS1sYWJlbCc7XG4gICAgY29uc3QgY29sdW1uID0gbmV3IFRyZWVMYWJlbENvbHVtbk1vZGVsPFJvdz4oY29sdW1uSWQsIHRoaXMuY29sdW1uTWFuYWdlciwoKSA9PiB0aGlzLmdldENvbHVtblRleHRQcm9wZXJ0aWVzKGNvbHVtbklkKSwgdGhpcyk7XG4gICAgYnVpbGRlcihjb2x1bW4pO1xuICAgIHRoaXMuYWRkQ29sdW1uKGNvbHVtbik7XG4gIH1cblxuICBleHBhbmQobm9kZTogUm93KSB7XG4gICAgdGhpcy50cmVlRXhwYW5zaW9uTW9kZWwuZXhwYW5kKG5vZGUpO1xuICB9XG5cbiAgY29sbGFwc2Uobm9kZTogUm93KSB7XG4gICAgdGhpcy50cmVlRXhwYW5zaW9uTW9kZWwuY29sbGFwc2Uobm9kZSk7XG4gIH1cblxuICBpc0NvbGxhcHNlZChub2RlOiBSb3cpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50cmVlRXhwYW5zaW9uTW9kZWwuaXNDb2xsYXBzZWQobm9kZSk7XG4gIH1cblxuICBlbnN1cmVBbmNlc3RvcnNBbmRTZWxmVmlzaWJsZShub2RlOiBSb3cpIHtcbiAgICB0aGlzLnRyZWVFeHBhbnNpb25Nb2RlbC5lbnN1cmVBbmNlc3RvcnNBbmRTZWxmVmlzaWJsZShub2RlKTtcbiAgfVxuXG4gIGlzRXhwYW5kZWQocm93OiBSb3cpIHtcbiAgICByZXR1cm4gdGhpcy50cmVlRXhwYW5zaW9uTW9kZWwuaXNFeHBhbmRlZChyb3cpXG4gIH1cblxuICBhZGRTZWxlY3Rpb25Db2x1bW4oc2VsZWN0aW9uTW9kZWw/OiBTZWxlY3Rpb25Nb2RlbDxSb3c+LCBzaG93U2VsZWN0aW9uQ29sdW1uPzogVmFsdWVNb2RlbDxib29sZWFuPiB8IGJvb2xlYW4pOiBTZWxlY3Rpb25Db2x1bW5Nb2RlbDxSb3c+IHtcbiAgICByZXR1cm4gdGhpcy5fYWRkU2VsZWN0aW9uQ29sdW1uKHNlbGVjdGlvbk1vZGVsLCBzaG93U2VsZWN0aW9uQ29sdW1uKTtcbiAgfVxuXG4gIC8vIHNhdmVTZWxlY3Rpb24oKSB7XG4gIC8vICAgY29uc3Qgc2VsZWN0aW9uTW9kZWwgPSB0aGlzLmdldFNlbGVjdGlvbk1vZGVsKCk7XG4gIC8vICAgaWYgKHNlbGVjdGlvbk1vZGVsKSB7XG4gIC8vICAgICBsZXQgaWRzOiBhbnlbXSA9IFtdO1xuICAvLyAgICAgY29uc3Qgc2VsZWN0ZWRBcmVhID0gc2VsZWN0aW9uTW9kZWwubGVhZFNlbGVjdGlvbi52YWx1ZTtcbiAgLy8gICAgIGlmIChzZWxlY3RlZEFyZWEpIHtcbiAgLy8gICAgICAgaWRzLnB1c2goc2VsZWN0ZWRBcmVhLmlkKTtcbiAgLy8gICAgICAgaWRzID0gaWRzLmNvbmNhdChzZWxlY3RlZEFyZWEuc2libGluZ3NBZnRlcigpLm1hcChhID0+IGEuaWQpKTtcbiAgLy8gICAgICAgaWRzID0gaWRzLmNvbmNhdChzZWxlY3RlZEFyZWEuc2libGluZ3NCZWZvcmUoKS5yZXZlcnNlKCkubWFwKGEgPT4gYS5pZCkpO1xuICAvLyAgICAgICBpZHMgPSBpZHMuY29uY2F0KHNlbGVjdGVkQXJlYS5hbmNlc3RvcnNUb1pvbmUoKS5yZXZlcnNlKCkubWFwKGEgPT4gYS5pZCkpO1xuICAvLyAgICAgfVxuICAvLyAgICAgdGhpcy5fc3RvcmVkU2VsZWN0aW9uID0gaWRzO1xuICAvLyAgIH1cbiAgLy8gfVxuICAvL1xuICAvLyByZXN0b3JlU2VsZWN0aW9uKCkge1xuICAvLyAgIGNvbnN0IGFsbCA9IHRoaXMucm9vdE5vZGVNb2RlbC52YWx1ZS5zZWxmQW5kRGVzY2VuZGFudHMoKTtcbiAgLy8gICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX3N0b3JlZFNlbGVjdGlvbi5sZW5ndGg7IGkrKykge1xuICAvLyAgICAgY29uc3QgaWQgPSB0aGlzLl9zdG9yZWRTZWxlY3Rpb25baV07XG4gIC8vICAgICBjb25zdCBmb3VuZCA9IGFsbC5maW5kKGFyZWEgPT4gYXJlYS5pZCA9PT0gaWQpO1xuICAvLyAgICAgaWYgKGZvdW5kKSB7XG4gIC8vICAgICAgIHRoaXMuc2VsZWN0ZWRBcmVhSWQudmFsdWUgPSBmb3VuZC5pZDtcbiAgLy8gICAgICAgYnJlYWs7XG4gIC8vICAgICB9XG4gIC8vICAgfVxuICAvLyB9XG4gIC8vXG4gIC8vIGNvbGxhcHNlQWxsKGFyZWFzOiBUW10pIHtcbiAgLy8gICB0aGlzLmNvbGxhcHNlZEFyZWFJZHMudmFsdWUgPSBbXS5jb25jYXQodGhpcy5jb2xsYXBzZWRBcmVhSWRzLnZhbHVlLCBhcmVhcy5tYXAoYSA9PiBhLmlkKSk7XG5cbiAgLy8gfVxuICAvLyBkaXNhYmxlU2VsZWN0aW9uKGRpc2FibGU6IGJvb2xlYW4gPSB0cnVlKSB7XG4gIC8vICAgdGhpcy5fZGlzYWJsZVNlbGVjdGlvbi52YWx1ZSA9IGRpc2FibGU7XG5cblxuICAvLyB9XG59XG5cblxuZXhwb3J0IG5hbWVzcGFjZSBUcmVlVGFibGVNb2RlbCB7XG5cbiAgZXhwb3J0IGludGVyZmFjZSBPcHRpb25zPFQsIEsgZXh0ZW5kcyBrZXlvZiBUPiB7XG4gICAgc3RvcmVJZEluOiBNdXRhYmxlVmFsdWVNb2RlbDxLPjtcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIExhYmVsRmFjdG9yeTxSb3c+ID0gKG5vZGU6IFJvdykgPT4gc3RyaW5nO1xuICBleHBvcnQgdHlwZSBJY29uRmFjdG9yeTxSb3c+ID0gKG5vZGU6IFJvdywgZXhwYW5kZWQ6IGJvb2xlYW4sIGRlZmF1bHRJY29uOiBzdHJpbmcpID0+IHN0cmluZztcblxufVxuXG5cbi8vIGV4cG9ydCBjbGFzcyBGbGF0dGVuU3RyYXRlZ3k8VCBleHRlbmRzIFZpc2l0YWJsZVRyZWU8YW55Pj4gZXh0ZW5kcyBTZWxmQW5kRGVzY2VuZGFudHNWaXNpdG9yPFQ+IHtcbi8vXG4vLyAgIHByaXZhdGUgX2FyZWFzOiBUW10gPSBbXTtcbi8vICAgcHJpdmF0ZSBfY29sbGFwc2VkOiBTZXQ8VD47XG4vL1xuLy8gICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbGxhcHNlZElkczogVFtdKSB7XG4vLyAgICAgc3VwZXIoKTtcbi8vICAgICB0aGlzLl9jb2xsYXBzZWQgPSBuZXcgU2V0PFQ+KGNvbGxhcHNlZElkcyk7XG4vLyAgIH1cbi8vXG4vLyAgIHByb3RlY3RlZCBvblZpc2l0KGl0OiBUKSB7XG4vLyAgICAgdGhpcy5fYXJlYXMucHVzaChpdCk7XG4vLyAgIH1cbi8vXG4vLyAgIHByb3RlY3RlZCBzaG91bGRWaXNpdENoaWxkcmVuT2YoaXQ6IFQpOiBib29sZWFuIHtcbi8vICAgICByZXR1cm4gIXRoaXMuX2NvbGxhcHNlZC5oYXMoaXQpO1xuLy8gICB9XG4vL1xuLy8gICBnZXQgZmxhdHRlbmVkQXJlYXMoKTogVFtdIHtcbi8vICAgICByZXR1cm4gdGhpcy5fYXJlYXM7XG4vLyAgIH1cbi8vXG4vLyB9XG5cbi8vIGNsYXNzIERlY29yYXRvckNhY2hlIHtcbi8vXG4vLyAgICAgcHJpdmF0ZSBtYXAgPSBuZXcgTWFwPG51bWJlciwgVD4oKTtcbi8vXG4vLyAgICAgZ2V0KGFyZWE6VCk6IFQge1xuLy9cbi8vICAgICAgICAgaWYgKCFhcmVhKSByZXR1cm4gbnVsbDtcbi8vXG4vLyAgICAgICAgIGxldCBkZWNvcmF0ZWRBcmVhID0gdGhpcy5tYXAuZ2V0KGFyZWEuaWQpO1xuLy8gICAgICAgICBpZiAoIWRlY29yYXRlZEFyZWEpIHtcbi8vICAgICAgICAgICAgIGRlY29yYXRlZEFyZWEgPSBUcmVlTW9kZWwuQXJlYURlY29yYXRvci5kZWNvcmF0ZShhcmVhKTtcbi8vICAgICAgICAgICAgIHRoaXMubWFwLnNldChhcmVhLmlkLCBkZWNvcmF0ZWRBcmVhKTtcbi8vICAgICAgICAgfVxuLy8gICAgICAgICByZXR1cm4gZGVjb3JhdGVkQXJlYTtcbi8vICAgICB9XG4vL1xuLy8gICAgIGNsZWFyKCkge1xuLy8gICAgICAgICB0aGlzLm1hcC5jbGVhcigpO1xuLy8gICAgIH1cbi8vXG4vL1xuLy8gfVxuXG5cblxuXG4iXX0=
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS10YWJsZS1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci11aS1wb3dlcnVwcy9zcmMvbGliL2NvbXBvbmVudHMvdGFibGVzL3RyZWUtdGFibGUvdHJlZS10YWJsZS1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsb0JBQW9CLEVBQTJELE1BQU0sZ0JBQWdCLENBQUM7QUFFOUcsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUkzRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUkvRCxRQUFRO0FBQ1IsdUJBQXVCO0FBQ3ZCLG1DQUFtQztBQUNuQywwREFBMEQ7QUFDMUQsdURBQXVEO0FBQ3ZELCtHQUErRztBQUMvRyx1QkFBdUI7QUFDdkIsMkNBQTJDO0FBQzNDLDBGQUEwRjtBQUMxRixFQUFFO0FBQ0YsTUFBTSxPQUFPLGNBQW1DLFNBQVEsa0JBQXVCO0lBRXJFLGtCQUFrQixDQUEwQjtJQUNuQyxtQkFBbUIsQ0FBOEI7SUFDekQsY0FBYyxDQUFzQjtJQUVyQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxvQkFBb0IsRUFBMEIsQ0FBQyxDQUFBO0lBRTNHLFlBQVksT0FBdUIsRUFBRSxhQUFtRSxFQUFFLE9BQThDO1FBQ3RKLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxPQUFPO1lBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBcUIsQ0FBQztRQUNoSCxJQUFJ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XCI7XG5pbXBvcnQge0RlbGVnYXRpbmdWYWx1ZU1vZGVsLCBMaXN0TW9kZWwsIE11dGFibGVWYWx1ZU1vZGVsLCBTZWxlY3Rpb25Nb2RlbCwgVmFsdWVNb2RlbH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuXG5pbXBvcnQge2lzRnVuY3Rpb259IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge0Fic3RyYWN0VGFibGVNb2RlbH0gZnJvbSAnLi4vYWJzdHJhY3QtdGFibGUtbW9kZWwnO1xuaW1wb3J0IHtTZWxlY3Rpb25Db2x1bW5Nb2RlbH0gZnJvbSBcIi4uL2NvbHVtbi9zZWxlY3Rpb24tY29sdW1uLW1vZGVsXCI7XG5pbXBvcnQge0ZsYXR0ZW5lZFRyZWVMaXN0TW9kZWx9IGZyb20gJy4vZmxhdHRlbmVkLXRyZWUtbGlzdC1tb2RlbCc7XG5pbXBvcnQge1RyZWVFeHBhbnNpb25Nb2RlbH0gZnJvbSAnLi90cmVlLWV4cGFuc2lvbi1tb2RlbCc7XG5pbXBvcnQge1RyZWVMYWJlbENvbHVtbk1vZGVsfSBmcm9tICcuL3RyZWUtbGFiZWwtY29sdW1uLW1vZGVsJztcblxuZXhwb3J0IHR5cGUgQ2hpbGRBcnJheVByb3BlcnRpZXNPZjxUPiA9IHsgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyBUW10gPyBLIDogbmV2ZXIgfVtrZXlvZiBUXTtcblxuLy8gVE9ETzpcbi8vICAgIFNlbGVjdGlvbiBNb2RlbHM6XG4vLyAgICAgIC0gYXMgc2ltcGxlIG5hdmlnYXRpb24gdHJlZVxuLy8gICAgICAtIGFzIGVkaXRhYmxlIGdyaWQgKHNlbGVjdGUgYWxsLCBldmVuIGhpZGRlbiBldGM/KVxuLy8gICAgICAtIGZpeGluZyBzZWxlY3Rpb24gb24gdW5kZXJseWluZyBtb2RlbCBjaGFuZ2VzLlxuLy8gICAgICAtIHJlbmRlcmluZyBzZWxlY3Rpb246IHJvdyBoaWdobGlnaHRpbmcsIGNoZWNrYm94ZXMgKGluIHRoZSB0cmVlIHJlbmRlcmVyIG9yIGluIHNlcGFyYXRlIGNvbHVtbiksIGJvdGguXG4vLyAgICBFeHBhbnNpb24gTW9kZWxzOlxuLy8gICAgICAtIEFkZCBhYmlsaXR5IHRvIGF1dG8gc2hvdyB0byBkZXB0aFxuLy8gICAgICAtIEFkZCBhIHByZWRpY2F0ZSB0byBjaGVjayBkZWZhdWx0IGV4cGFuc2lvbiAoaS5lLiBoYXMgY2hpbGRyZW4gb2YgYSBjZXJ0YWluIHR5cGUpXG4vL1xuZXhwb3J0IGNsYXNzIFRyZWVUYWJsZU1vZGVsPFJvdyBleHRlbmRzIG9iamVjdD4gZXh0ZW5kcyBBYnN0cmFjdFRhYmxlTW9kZWw8Um93PiB7XG5cbiAgcHJpdmF0ZSB0cmVlRXhwYW5zaW9uTW9kZWw6IFRyZWVFeHBhbnNpb25Nb2RlbDxSb3c+O1xuICBwcml2YXRlIHJlYWRvbmx5IGZsYXR0ZW5lZERhdGFTb3VyY2U6IEZsYXR0ZW5lZFRyZWVMaXN0TW9kZWw8Um93PjtcbiAgcmVhZG9ubHkgY2hpbGRFeHRyYWN0b3I6IChyb3c6IFJvdykgPT4gUm93W107XG5cbiAgcHJpdmF0ZSBfaXNFeHBhbmRlZFByZWRpY2F0ZSQgPSB0aGlzLnJlZ2lzdGVyRGlzcG9zYWJsZShuZXcgRGVsZWdhdGluZ1ZhbHVlTW9kZWw8KG5vZGU6IFJvdykgPT4gYm9vbGVhbj4oKSlcblxuICBjb25zdHJ1Y3Rvcihzb3VyY2UkOiBMaXN0TW9kZWw8Um93PiwgY2hpbGRBY2Nlc3NvcjogQ2hpbGRBcnJheVByb3BlcnRpZXNPZjxSb3c+IHwgKChub2RlOiBSb3cpID0+IFJvd1tdKSwgYnVpbGRlcj86IChtb2RlbDogVHJlZVRhYmxlTW9kZWw8Um93PikgPT4gdm9pZCkge1xuICAgIHN1cGVyKCk7XG4gICAgaWYgKGJ1aWxkZXIpIGJ1aWxkZXIodGhpcyk7XG4gICAgdGhpcy5jaGlsZEV4dHJhY3RvciA9IGlzRnVuY3Rpb24oY2hpbGRBY2Nlc3NvcikgPyBjaGlsZEFjY2Vzc29yIDogcm93ID0+IHJvd1tjaGlsZEFjY2Vzc29yXSBhcyB1bmtub3duIGFzIFJvd1tdO1xuICAgIHRoaXMuYWRkUm93Q2xhc3MoJ2F1cC1ub2RlLWNvbGxhcHNlZCcsIHJvdyA9PiB0aGlzLmlzQ29sbGFwc2VkKHJvdykpO1xuICAgIHRoaXMuc2V0RGF0YVNvdXJjZShzb3VyY2UkKVxuICB9XG5cbiAgZ2V0IGlzRXhwYW5kZWRQcmVkaWNhdGUkKCkge1xuICAgIHJldHVybiB0aGlzLl9pc0V4cGFuZGVkUHJlZGljYXRlJC5yZWFkb25seSQ7XG4gIH1cblxuICBiaW5kVG9UYWJsZShleHBhbnNpb25Nb2RlbDogVHJlZUV4cGFuc2lvbk1vZGVsPFJvdz4sIGZpbHRlcmVkUm93cyQ6IExpc3RNb2RlbDxSb3c+LCB2aXNpYmxlUm93cyQ6IExpc3RNb2RlbDxSb3c+LCBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy50cmVlRXhwYW5zaW9uTW9kZWwgPSBleHBhbnNpb25Nb2RlbDtcbiAgICAvLyBUT0RPOiBNb3ZlIGFsbCB0aGUgZXhwYW5zaW9uIG1vZGVsIHN0dWZmIG91dCBvZiBoZXJlIGFuZCBoYXZlIHRoaW5ncyB1c2UgdGhlIGV4cGFuc2lvbiBtb2RlbCBkaXJlY3RseVxuICAgIHRoaXMuX2lzRXhwYW5kZWRQcmVkaWNhdGUkLnNldERlbGVnYXRlKHRoaXMudHJlZUV4cGFuc2lvbk1vZGVsLmlzRXhwYW5kZWRQcmVkaWNhdGUkKVxuICAgIHRoaXMuX2ZpbHRlcmVkUm93cyQuc2V0RGVsZWdhdGUoZmlsdGVyZWRSb3dzJClcbiAgICB0aGlzLl92aXNpYmxlUm93cyQuc2V0RGVsZWdhdGUodmlzaWJsZVJvd3MkKTtcbiAgfVxuXG4gIHRyZWVDb250cm9sQ29sdW1uKGJ1aWxkZXI6IChjb2x1bW46IFRyZWVMYWJlbENvbHVtbk1vZGVsPFJvdz4pID0+IHZvaWQpIHtcbiAgICBjb25zdCBjb2x1bW5JZCA9ICd0cmVlLWxhYmVsJztcbiAgICBjb25zdCBjb2x1bW4gPSBuZXcgVHJlZUxhYmVsQ29sdW1uTW9kZWw8Um93Pihjb2x1bW5JZCwgdGhpcy5jb2x1bW5NYW5hZ2VyLCgpID0+IHRoaXMuZ2V0Q29sdW1uVGV4dFByb3BlcnRpZXMoY29sdW1uSWQpLCB0aGlzKTtcbiAgICBidWlsZGVyKGNvbHVtbik7XG4gICAgdGhpcy5hZGRDb2x1bW4oY29sdW1uKTtcbiAgfVxuXG4gIGV4cGFuZChub2RlOiBSb3cpIHtcbiAgICB0aGlzLnRyZWVFeHBhbnNpb25Nb2RlbC5leHBhbmQobm9kZSk7XG4gIH1cblxuICBjb2xsYXBzZShub2RlOiBSb3cpIHtcbiAgICB0aGlzLnRyZWVFeHBhbnNpb25Nb2RlbC5jb2xsYXBzZShub2RlKTtcbiAgfVxuXG4gIGlzQ29sbGFwc2VkKG5vZGU6IFJvdyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRyZWVFeHBhbnNpb25Nb2RlbC5pc0NvbGxhcHNlZChub2RlKTtcbiAgfVxuXG4gIGVuc3VyZUFuY2VzdG9yc0FuZFNlbGZWaXNpYmxlKG5vZGU6IFJvdykge1xuICAgIHRoaXMudHJlZUV4cGFuc2lvbk1vZGVsLmVuc3VyZUFuY2VzdG9yc0FuZFNlbGZWaXNpYmxlKG5vZGUpO1xuICB9XG5cbiAgaXNFeHBhbmRlZChyb3c6IFJvdykge1xuICAgIHJldHVybiB0aGlzLnRyZWVFeHBhbnNpb25Nb2RlbC5pc0V4cGFuZGVkKHJvdylcbiAgfVxuXG4gIC8vIHNhdmVTZWxlY3Rpb24oKSB7XG4gIC8vICAgY29uc3Qgc2VsZWN0aW9uTW9kZWwgPSB0aGlzLmdldFNlbGVjdGlvbk1vZGVsKCk7XG4gIC8vICAgaWYgKHNlbGVjdGlvbk1vZGVsKSB7XG4gIC8vICAgICBsZXQgaWRzOiBhbnlbXSA9IFtdO1xuICAvLyAgICAgY29uc3Qgc2VsZWN0ZWRBcmVhID0gc2VsZWN0aW9uTW9kZWwubGVhZFNlbGVjdGlvbi52YWx1ZTtcbiAgLy8gICAgIGlmIChzZWxlY3RlZEFyZWEpIHtcbiAgLy8gICAgICAgaWRzLnB1c2goc2VsZWN0ZWRBcmVhLmlkKTtcbiAgLy8gICAgICAgaWRzID0gaWRzLmNvbmNhdChzZWxlY3RlZEFyZWEuc2libGluZ3NBZnRlcigpLm1hcChhID0+IGEuaWQpKTtcbiAgLy8gICAgICAgaWRzID0gaWRzLmNvbmNhdChzZWxlY3RlZEFyZWEuc2libGluZ3NCZWZvcmUoKS5yZXZlcnNlKCkubWFwKGEgPT4gYS5pZCkpO1xuICAvLyAgICAgICBpZHMgPSBpZHMuY29uY2F0KHNlbGVjdGVkQXJlYS5hbmNlc3RvcnNUb1pvbmUoKS5yZXZlcnNlKCkubWFwKGEgPT4gYS5pZCkpO1xuICAvLyAgICAgfVxuICAvLyAgICAgdGhpcy5fc3RvcmVkU2VsZWN0aW9uID0gaWRzO1xuICAvLyAgIH1cbiAgLy8gfVxuICAvL1xuICAvLyByZXN0b3JlU2VsZWN0aW9uKCkge1xuICAvLyAgIGNvbnN0IGFsbCA9IHRoaXMucm9vdE5vZGVNb2RlbC52YWx1ZS5zZWxmQW5kRGVzY2VuZGFudHMoKTtcbiAgLy8gICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX3N0b3JlZFNlbGVjdGlvbi5sZW5ndGg7IGkrKykge1xuICAvLyAgICAgY29uc3QgaWQgPSB0aGlzLl9zdG9yZWRTZWxlY3Rpb25baV07XG4gIC8vICAgICBjb25zdCBmb3VuZCA9IGFsbC5maW5kKGFyZWEgPT4gYXJlYS5pZCA9PT0gaWQpO1xuICAvLyAgICAgaWYgKGZvdW5kKSB7XG4gIC8vICAgICAgIHRoaXMuc2VsZWN0ZWRBcmVhSWQudmFsdWUgPSBmb3VuZC5pZDtcbiAgLy8gICAgICAgYnJlYWs7XG4gIC8vICAgICB9XG4gIC8vICAgfVxuICAvLyB9XG4gIC8vXG4gIC8vIGNvbGxhcHNlQWxsKGFyZWFzOiBUW10pIHtcbiAgLy8gICB0aGlzLmNvbGxhcHNlZEFyZWFJZHMudmFsdWUgPSBbXS5jb25jYXQodGhpcy5jb2xsYXBzZWRBcmVhSWRzLnZhbHVlLCBhcmVhcy5tYXAoYSA9PiBhLmlkKSk7XG5cbiAgLy8gfVxuICAvLyBkaXNhYmxlU2VsZWN0aW9uKGRpc2FibGU6IGJvb2xlYW4gPSB0cnVlKSB7XG4gIC8vICAgdGhpcy5fZGlzYWJsZVNlbGVjdGlvbi52YWx1ZSA9IGRpc2FibGU7XG5cblxuICAvLyB9XG59XG5cblxuZXhwb3J0IG5hbWVzcGFjZSBUcmVlVGFibGVNb2RlbCB7XG5cbiAgZXhwb3J0IGludGVyZmFjZSBPcHRpb25zPFQsIEsgZXh0ZW5kcyBrZXlvZiBUPiB7XG4gICAgc3RvcmVJZEluOiBNdXRhYmxlVmFsdWVNb2RlbDxLPjtcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIExhYmVsRmFjdG9yeTxSb3c+ID0gKG5vZGU6IFJvdykgPT4gc3RyaW5nO1xuICBleHBvcnQgdHlwZSBJY29uRmFjdG9yeTxSb3c+ID0gKG5vZGU6IFJvdywgZXhwYW5kZWQ6IGJvb2xlYW4sIGRlZmF1bHRJY29uOiBzdHJpbmcpID0+IHN0cmluZztcblxufVxuXG5cbi8vIGV4cG9ydCBjbGFzcyBGbGF0dGVuU3RyYXRlZ3k8VCBleHRlbmRzIFZpc2l0YWJsZVRyZWU8YW55Pj4gZXh0ZW5kcyBTZWxmQW5kRGVzY2VuZGFudHNWaXNpdG9yPFQ+IHtcbi8vXG4vLyAgIHByaXZhdGUgX2FyZWFzOiBUW10gPSBbXTtcbi8vICAgcHJpdmF0ZSBfY29sbGFwc2VkOiBTZXQ8VD47XG4vL1xuLy8gICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbGxhcHNlZElkczogVFtdKSB7XG4vLyAgICAgc3VwZXIoKTtcbi8vICAgICB0aGlzLl9jb2xsYXBzZWQgPSBuZXcgU2V0PFQ+KGNvbGxhcHNlZElkcyk7XG4vLyAgIH1cbi8vXG4vLyAgIHByb3RlY3RlZCBvblZpc2l0KGl0OiBUKSB7XG4vLyAgICAgdGhpcy5fYXJlYXMucHVzaChpdCk7XG4vLyAgIH1cbi8vXG4vLyAgIHByb3RlY3RlZCBzaG91bGRWaXNpdENoaWxkcmVuT2YoaXQ6IFQpOiBib29sZWFuIHtcbi8vICAgICByZXR1cm4gIXRoaXMuX2NvbGxhcHNlZC5oYXMoaXQpO1xuLy8gICB9XG4vL1xuLy8gICBnZXQgZmxhdHRlbmVkQXJlYXMoKTogVFtdIHtcbi8vICAgICByZXR1cm4gdGhpcy5fYXJlYXM7XG4vLyAgIH1cbi8vXG4vLyB9XG5cbi8vIGNsYXNzIERlY29yYXRvckNhY2hlIHtcbi8vXG4vLyAgICAgcHJpdmF0ZSBtYXAgPSBuZXcgTWFwPG51bWJlciwgVD4oKTtcbi8vXG4vLyAgICAgZ2V0KGFyZWE6VCk6IFQge1xuLy9cbi8vICAgICAgICAgaWYgKCFhcmVhKSByZXR1cm4gbnVsbDtcbi8vXG4vLyAgICAgICAgIGxldCBkZWNvcmF0ZWRBcmVhID0gdGhpcy5tYXAuZ2V0KGFyZWEuaWQpO1xuLy8gICAgICAgICBpZiAoIWRlY29yYXRlZEFyZWEpIHtcbi8vICAgICAgICAgICAgIGRlY29yYXRlZEFyZWEgPSBUcmVlTW9kZWwuQXJlYURlY29yYXRvci5kZWNvcmF0ZShhcmVhKTtcbi8vICAgICAgICAgICAgIHRoaXMubWFwLnNldChhcmVhLmlkLCBkZWNvcmF0ZWRBcmVhKTtcbi8vICAgICAgICAgfVxuLy8gICAgICAgICByZXR1cm4gZGVjb3JhdGVkQXJlYTtcbi8vICAgICB9XG4vL1xuLy8gICAgIGNsZWFyKCkge1xuLy8gICAgICAgICB0aGlzLm1hcC5jbGVhcigpO1xuLy8gICAgIH1cbi8vXG4vL1xuLy8gfVxuXG5cblxuXG4iXX0=