@one-paragon/angular-utilities 1.2.13 → 1.2.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/esm2022/table-builder/classes/TableBuilderConfig.mjs +1 -1
  2. package/esm2022/table-builder/classes/TableBuilderDataSource.mjs +6 -3
  3. package/esm2022/table-builder/classes/TableState.mjs +1 -2
  4. package/esm2022/table-builder/classes/table-builder-general-settings.mjs +49 -45
  5. package/esm2022/table-builder/classes/table-builder.mjs +2 -2
  6. package/esm2022/table-builder/classes/table-store.mjs +14 -9
  7. package/esm2022/table-builder/components/column-builder/column-builder.component.mjs +2 -2
  8. package/esm2022/table-builder/components/generic-table/generic-table.component.mjs +15 -3
  9. package/esm2022/table-builder/components/generic-table/paginator.component.mjs +3 -3
  10. package/esm2022/table-builder/components/table-container/table-container.mjs +4 -4
  11. package/esm2022/table-builder/components/table-container/virtual-scroll-container.mjs +9 -5
  12. package/esm2022/table-builder/services/table-template-service.mjs +2 -2
  13. package/esm2022/table-builder/services/transform-creator.mjs +3 -3
  14. package/fesm2022/one-paragon-angular-utilities.mjs +97 -72
  15. package/fesm2022/one-paragon-angular-utilities.mjs.map +1 -1
  16. package/package.json +1 -1
  17. package/table-builder/classes/TableBuilderConfig.d.ts +6 -4
  18. package/table-builder/classes/TableState.d.ts +0 -1
  19. package/table-builder/classes/table-builder-general-settings.d.ts +13 -6
  20. package/table-builder/classes/table-builder.d.ts +2 -2
  21. package/table-builder/classes/table-store.d.ts +4 -4
  22. package/table-builder/components/generic-table/generic-table.component.d.ts +2 -0
  23. package/table-builder/components/table-container/table-container-imports.d.ts +1 -1
  24. package/table-builder/components/table-container/table-container.d.ts +1 -1
  25. package/table-builder/components/table-container/virtual-scroll-container.d.ts +2 -1
  26. package/table-builder/directives/table-wrapper.directive.d.ts +1 -1
@@ -11,6 +11,7 @@ import { notNull, onceWhen } from '../../rxjs/rxjs-operators';
11
11
  import { NotPersistedTableSettings, PersistedTableSettings } from './table-builder-general-settings';
12
12
  import { replaceInArrayWithClone } from '../../utilities/array-helpers';
13
13
  import { isDifferent } from '../directives';
14
+ import { toObservable } from '@angular/core/rxjs-interop';
14
15
  import * as i0 from "@angular/core";
15
16
  export function stateIs(initializationState) {
16
17
  return (state) => state.initializationState === initializationState;
@@ -18,7 +19,14 @@ export function stateIs(initializationState) {
18
19
  export class TableStore extends ComponentStore {
19
20
  constructor() {
20
21
  const config = inject(TableBuilderConfigToken);
21
- super({ ...defaultTableState, ...config.defaultTableState });
22
+ const settingsFromConfig = {
23
+ persistedTableSettings: new PersistedTableSettings().merge(config.defaultTableSettings),
24
+ notPersistedTableSettings: new NotPersistedTableSettings().merge(config.defaultTableSettings),
25
+ };
26
+ if (config.defaultTableSettings?.pageSize) {
27
+ settingsFromConfig['pageSize'] = config.defaultTableSettings?.pageSize;
28
+ }
29
+ super({ ...defaultTableState, ...settingsFromConfig });
22
30
  }
23
31
  selectStateReady = this.select(state => state.initializationState).pipe(filter(i => i === InitializationState.Ready));
24
32
  getSavableState() {
@@ -50,7 +58,7 @@ export class TableStore extends ComponentStore {
50
58
  };
51
59
  $getUserDefinedWidth = (key) => this.selectSignal(state => state.userDefined.widths[key]);
52
60
  $getUserDefinedWidths = this.selectSignal(state => state.userDefined.widths);
53
- tableSettingsMinWidth = this.selectSignal(state => state.minColumnWidth);
61
+ tableSettingsMinWidth = this.selectSignal(state => state.notPersistedTableSettings.minColumnWidth);
54
62
  resetState = this.updater((state) => {
55
63
  const sorted = this.createPreSort(state.metaData);
56
64
  return ({ ...state, hiddenKeys: [], sorted, filters: {}, groupBy: [], userDefined: { widths: {}, order: {}, table: {} } });
@@ -287,8 +295,8 @@ export class TableStore extends ComponentStore {
287
295
  setTableSettings = this.updater((state, settings) => {
288
296
  const s = {
289
297
  ...state,
290
- persistedTableSettings: new PersistedTableSettings(settings),
291
- notPersistedTableSettings: new NotPersistedTableSettings(settings)
298
+ persistedTableSettings: state.persistedTableSettings.merge(settings),
299
+ notPersistedTableSettings: state.notPersistedTableSettings.merge(settings)
292
300
  };
293
301
  return s;
294
302
  });
@@ -296,10 +304,7 @@ export class TableStore extends ComponentStore {
296
304
  const ts = { ...state.persistedTableSettings, ...state.notPersistedTableSettings };
297
305
  return ts;
298
306
  });
299
- tableSettings$ = this.select(state => {
300
- const ts = { ...state.persistedTableSettings, ...state.notPersistedTableSettings };
301
- return ts;
302
- });
307
+ tableSettings$ = toObservable(this.tableSettings);
303
308
  props = this.selectSignal(s => s.props);
304
309
  setLinkMaps = this.updater((state, maps) => {
305
310
  return { ...state, linkMaps: maps };
@@ -380,4 +385,4 @@ function cleanPersistedState(state, pState) {
380
385
  const sorted = pState.sorted.filter(s => metas.some(m => m.key === s.active));
381
386
  return ({ ...pState, filters, sorted });
382
387
  }
383
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jbGFzc2VzL3RhYmxlLXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sMEJBQTBCLENBQUM7QUFDeEUsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEMsT0FBTyxFQUFFLGlCQUFpQixFQUFlLG1CQUFtQixFQUFFLFlBQVksRUFBbUMsTUFBTSxjQUFjLENBQUM7QUFDbEksT0FBTyxFQUFFLFVBQVUsRUFBYSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBNEIsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUc7QUFFekQsT0FBTyxFQUFZLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQVEsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3JHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBd0IseUJBQXlCLEVBQUUsc0JBQXNCLEVBQXdCLE1BQU0sa0NBQWtDLENBQUM7QUFDakosT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHNUMsTUFBTSxVQUFVLE9BQU8sQ0FBQyxtQkFBd0M7SUFDOUQs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O0FBRUQsU0FBUyxtQkFBbUIsQ0FBQyxLQUFpQixFQUFDLE1BQTJCO0lBQ3hFLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDcEosR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFTLENBQUMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFTLENBQUMsQ0FBQztRQUN6RCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNQLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDOUUsT0FBTyxDQUFDLEVBQUMsR0FBRyxNQUFNLEVBQUMsT0FBTyxFQUFDLE1BQU0sRUFBQyxDQUFDLENBQUE7QUFDckMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpZWxkVHlwZSwgTWV0YURhdGEsIFNvcnREZWYgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlcG9ydC1kZWYnO1xyXG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVmYXVsdFRhYmxlU3RhdGUsIEdyb3VwZWREYXRhLCBJbml0aWFsaXphdGlvblN0YXRlLCBrZXlzVG9EZWxldGUsIFBlcnNpc3RlZFRhYmxlU3RhdGUsIFRhYmxlU3RhdGUgfSBmcm9tICcuL1RhYmxlU3RhdGUnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBQcmVkaWNhdGUsIGNvbXB1dGVkLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVGFibGVCdWlsZGVyQ29uZmlnVG9rZW4gfSBmcm9tICcuL1RhYmxlQnVpbGRlckNvbmZpZyc7XHJcbmltcG9ydCB7IEN1c3RvbUZpbHRlciwgRmlsdGVySW5mbywgaXNDdXN0b21GaWx0ZXIsIGlzRmlsdGVySW5mbyB9IGZyb20gJy4vZmlsdGVyLWluZm8nO1xyXG5pbXBvcnQgeyBTb3J0LCBTb3J0RGlyZWN0aW9uIH0gIGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnIDtcclxuaW1wb3J0IHsgQ29tcG9uZW50U3RvcmUgfSBmcm9tICdAbmdyeC9jb21wb25lbnQtc3RvcmUnICA7XHJcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2RpY3Rpb25hcnknO1xyXG5pbXBvcnQgeyBkZWJvdW5jZSwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBsYXN0LCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xyXG5pbXBvcnQgeyBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgbm90TnVsbCwgb25jZVdoZW4gfSBmcm9tICcuLi8uLi9yeGpzL3J4anMtb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgR2VuZXJhbFRhYmxlU2V0dGluZ3MsIE5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MsIFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MsIFZpcnR1YWxTY3JvbGxPcHRpb25zIH0gZnJvbSAnLi90YWJsZS1idWlsZGVyLWdlbmVyYWwtc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyByZXBsYWNlSW5BcnJheVdpdGhDbG9uZSB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9hcnJheS1oZWxwZXJzJztcclxuaW1wb3J0IHsgaXNEaWZmZXJlbnQgfSBmcm9tICcuLi9kaXJlY3RpdmVzJztcclxuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlSXMoaW5pdGlhbGl6YXRpb25TdGF0ZTogSW5pdGlhbGl6YXRpb25TdGF0ZSkge1xyXG4gIHJldHVybiAoc3RhdGU6IFRhYmxlU3RhdGUpID0+IHN0YXRlLmluaXRpYWxpemF0aW9uU3RhdGUgPT09IGluaXRpYWxpemF0aW9uU3RhdGU7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFRhYmxlU3RvcmUgZXh0ZW5kcyBDb21wb25lbnRTdG9yZTxUYWJsZVN0YXRlPiB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICBjb25zdCBjb25maWcgPSBpbmplY3QoVGFibGVCdWlsZGVyQ29uZmlnVG9rZW4pO1xyXG5cclxuICAgc3VwZXIoIHsgLi4uZGVmYXVsdFRhYmxlU3RhdGUsIC4uLmNvbmZpZy5kZWZhdWx0VGFibGVTdGF0ZX0pO1xyXG4gIH1cclxuICBzZWxlY3RTdGF0ZVJlYWR5ID0gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuaW5pdGlhbGl6YXRpb25TdGF0ZSkucGlwZShmaWx0ZXIoaSA9PiBpID09PSBJbml0aWFsaXphdGlvblN0YXRlLlJlYWR5KSk7XHJcbiAgZ2V0U2F2YWJsZVN0YXRlKCkgOiBPYnNlcnZhYmxlPFBlcnNpc3RlZFRhYmxlU3RhdGU+IHtcclxuICAgIHJldHVybiAgdGhpcy5zdGF0ZSQucGlwZShcclxuICAgICAgZGVib3VuY2VUaW1lKDMwMCksXHJcbiAgICAgIG1hcCggcyA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwU2F2ZWFibGVTdGF0ZShzKTtcclxuICAgICAgfSksXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2F2YWJsZVN0YXRlU2lnbmFsID0gY29tcHV0ZWQoKCkgPT4ge1xyXG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlKCk7XHJcbiAgICByZXR1cm4gdGhpcy5tYXBTYXZlYWJsZVN0YXRlKHN0YXRlKTtcclxuICB9KTtcclxuXHJcbiAgcHJpdmF0ZSBtYXBTYXZlYWJsZVN0YXRlID0gKHM6IFBlcnNpc3RlZFRhYmxlU3RhdGUpID0+IHtcclxuICAgIGNvbnN0IHNhdmFibGVTdGF0ZSA9IHsuLi5zfSBhcyBQYXJ0aWFsPFRhYmxlU3RhdGU+O1xyXG4gICAga2V5c1RvRGVsZXRlLmZvckVhY2goa2V5ID0+IGRlbGV0ZSBzYXZhYmxlU3RhdGVba2V5XSk7XHJcbiAgICByZXR1cm4gc2F2YWJsZVN0YXRlIGFzIFBlcnNpc3RlZFRhYmxlU3RhdGU7XHJcbiAgfVxyXG5cclxuICBvbiA9IDxWPihzcmNPYnNlcnZhYmxlOiBPYnNlcnZhYmxlPFY+LCBmdW5jOiAob2JqOiBWKSA9PiB2b2lkKSA9PiB7XHJcbiAgICB0aGlzLmVmZmVjdCgoKSA9PiBzcmNPYnNlcnZhYmxlLnBpcGUoXHJcbiAgICAgIHRhcChmdW5jKVxyXG4gICAgKSk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IG1ldGFEYXRhJCA9IHRoaXMuc2VsZWN0KCBzdGF0ZSA9PiBzdGF0ZS5tZXRhRGF0YSk7XHJcbiAgJG1ldGFEYXRhID0gdGhpcy5zZWxlY3RTaWduYWwoIHN0YXRlID0+IHN0YXRlLm1ldGFEYXRhKTtcclxuICAkdXNlckRlZmluZWRPcmRlciA9IHRoaXMuc2VsZWN0U2lnbmFsKCBzdGF0ZSA9PiBzdGF0ZS51c2VyRGVmaW5lZC5vcmRlcik7XHJcbiAgJGhpZGRlbktleXMgPSB0aGlzLnNlbGVjdFNpZ25hbCggc3RhdGUgPT4gc3RhdGUuaGlkZGVuS2V5cyk7XHJcbiAgJG1ldGFEYXRhQXJyYXkgPSB0aGlzLnNlbGVjdFNpZ25hbChcclxuICAgIHRoaXMuJG1ldGFEYXRhLFxyXG4gICAgdGhpcy4kdXNlckRlZmluZWRPcmRlcixcclxuICAgIG9yZGVyTWV0YURhdGFcclxuICApO1xyXG5cclxuICBnZXRNZXRhRGF0YSQgPSAoa2V5OiBzdHJpbmcpIDogT2JzZXJ2YWJsZTxNZXRhRGF0YT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0KCBzdGF0ZSA9PiBzdGF0ZS5tZXRhRGF0YVtrZXldICApLnBpcGUoXHJcbiAgICAgIHRhcChtZXRhID0+IHtpZighbWV0YSljb25zb2xlLndhcm4oYE1ldGEgZGF0YSB3aXRoIGtleSAke2tleX0gbm90IGZvdW5kYCl9KSxcclxuICAgICAgbm90TnVsbCgpKVxyXG4gIH1cclxuXHJcbiAgJGdldFVzZXJEZWZpbmVkV2lkdGggPSAoa2V5OnN0cmluZykgPT4gdGhpcy5zZWxlY3RTaWduYWwoc3RhdGUgPT4gc3RhdGUudXNlckRlZmluZWQud2lkdGhzW2tleV0pO1xyXG4gICRnZXRVc2VyRGVmaW5lZFdpZHRocyA9IHRoaXMuc2VsZWN0U2lnbmFsKHN0YXRlID0+IHN0YXRlLnVzZXJEZWZpbmVkLndpZHRocyk7XHJcbiAgdGFibGVTZXR0aW5nc01pbldpZHRoID0gdGhpcy5zZWxlY3RTaWduYWwoc3RhdGUgPT4gc3RhdGUubWluQ29sdW1uV2lkdGgpO1xyXG5cclxuICByZWFkb25seSByZXNldFN0YXRlID0gdGhpcy51cGRhdGVyKChzdGF0ZSkgPT4ge1xyXG4gICAgY29uc3Qgc29ydGVkID0gdGhpcy5jcmVhdGVQcmVTb3J0KHN0YXRlLm1ldGFEYXRhKTtcclxuICAgIHJldHVybiAoey4uLnN0YXRlLCBoaWRkZW5LZXlzOiBbXSwgc29ydGVkLCBmaWx0ZXJzOiB7fSAsIGdyb3VwQnk6IFtdLCAgdXNlckRlZmluZWQ6IHsgd2lkdGhzOiB7fSwgb3JkZXI6IHt9LCB0YWJsZToge30gfSB9KTtcclxuICB9KTtcclxuXHJcbiAgcmVhZG9ubHkgc2hvd0NvbHVtbiA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGtleTogc3RyaW5nKSA9PiAoe1xyXG4gICAgLi4uc3RhdGUsXHJcbiAgICBoaWRkZW5LZXlzOiBzdGF0ZS5oaWRkZW5LZXlzLmZpbHRlciggayA9PiBrICE9PSBrZXkpLFxyXG4gIH0pKTtcclxuXHJcbiAgcmVhZG9ubHkgaGlkZUNvbHVtbiA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGtleTogc3RyaW5nKSA9PiAoe1xyXG4gICAgLi4uc3RhdGUsXHJcbiAgICBoaWRkZW5LZXlzOiBbLi4uc3RhdGUuaGlkZGVuS2V5cy5maWx0ZXIoIGsgPT4gayAhPT0ga2V5KSwga2V5XSxcclxuICB9KSk7XHJcblxyXG4gIHJlYWRvbmx5IHNldEhpZGRlbkNvbHVtbnMgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBkaXNwbGF5Q29sczoge2tleTogc3RyaW5nLCB2aXNpYmxlOiBib29sZWFufVtdKSA9PiB7XHJcbiAgICByZXR1cm4gKHsuLi5zdGF0ZSwgaGlkZGVuS2V5czogZGlzcGxheUNvbHMuZmlsdGVyKGQgPT4gIWQudmlzaWJsZSkubWFwKGQgPT4gZC5rZXkpfSlcclxuICB9KTtcclxuXHJcblxyXG4gIHNldFVzZXJEZWZpbmVkV2lkdGggPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLGNvbFdpZHRoczp7a2V5OiBzdHJpbmcsIHdpZHRoSW5QaXhlbDpudW1iZXJ9W10pID0+IHtcclxuICAgIGNvbnN0IHVzZXJEZWZpbmVkV2lkdGhzID0gey4uLnN0YXRlLnVzZXJEZWZpbmVkLndpZHRoc307XHJcbiAgICBjb2xXaWR0aHMuZm9yRWFjaChjdyA9PiB7XHJcbiAgICAgIHVzZXJEZWZpbmVkV2lkdGhzW2N3LmtleV0gPSBjdy53aWR0aEluUGl4ZWw7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB7Li4uc3RhdGUsIHVzZXJEZWZpbmVkOiB7Li4uc3RhdGUudXNlckRlZmluZWQsIHdpZHRoczp1c2VyRGVmaW5lZFdpZHRoc319O1xyXG4gIH0pO1xyXG5cclxuICBzZXRVc2VyRGVmaW5lZE9yZGVyID0gdGhpcy51cGRhdGVyKChzdGF0ZSxtb3ZlZDogeyBuZXdPcmRlcjogbnVtYmVyLCBvbGRPcmRlcjogbnVtYmVyIH0pPT57XHJcbiAgICBjb25zdCB7IG5ld09yZGVyLCBvbGRPcmRlciB9ID0gbW92ZWQ7XHJcbiAgICBjb25zdCBtZHNBcnIgPSBvcmRlcmVkU3RhdGVWaXNpYmxlTWV0YURhdGEoc3RhdGUpO1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KG1kc0Fyciwgb2xkT3JkZXIsIG5ld09yZGVyKTtcclxuXHJcbiAgICBjb25zdCB1c2VyRGVmaW5lZE9yZGVyID0gbWRzQXJyLnJlZHVjZSgoYWdncmVnYXRlOiBhbnksY3VycmVudCxpbmRleCkgPT4ge1xyXG4gICAgICBhZ2dyZWdhdGVbY3VycmVudC5rZXldID0gaW5kZXg7XHJcbiAgICAgIHJldHVybiBhZ2dyZWdhdGVcclxuICAgIH0se30pO1xyXG4gICAgcmV0dXJuKHsgLi4uc3RhdGUsIHVzZXJEZWZpbmVkOiB7IC4uLnN0YXRlLnVzZXJEZWZpbmVkLCBvcmRlcjogdXNlckRlZmluZWRPcmRlciB9IH0pXHJcbiAgfSlcclxuXHJcbiAgJGZpbHRlcnMgPSB0aGlzLnNlbGVjdFNpZ25hbChzdGF0ZSA9PiBzdGF0ZS5maWx0ZXJzKTtcclxuICByZWFkb25seSBmaWx0ZXJzJCA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLmZpbHRlcnMgKTtcclxuXHJcbiAgcmVhZG9ubHkgZ2V0RmlsdGVyJCA9IChmaWx0ZXJJZDogc3RyaW5nKSA6IE9ic2VydmFibGU8RmlsdGVySW5mbyB8IEN1c3RvbUZpbHRlciB8IHVuZGVmaW5lZD4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0KCBzdGF0ZSA9PiBzdGF0ZS5maWx0ZXJzW2ZpbHRlcklkXSApO1xyXG4gIH1cclxuICByZWFkb25seSBhZGRGaWx0ZXIgPSB0aGlzLnVwZGF0ZXIoIChzdGF0ZSwgZmlsdGVyOiBGaWx0ZXJJbmZvIHwgQ3VzdG9tRmlsdGVyICkgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYWRkRmlsdGVyc1RvU3RhdGUoc3RhdGUsIFtmaWx0ZXJdKTtcclxuICB9KTtcclxuXHJcbiAgcmVhZG9ubHkgYWRkRmlsdGVycyA9IHRoaXMudXBkYXRlcigoc3RhdGUsZmlsdGVyczooRmlsdGVySW5mbyB8IEN1c3RvbUZpbHRlciApW10pPT57XHJcbiAgICByZXR1cm4gdGhpcy5hZGRGaWx0ZXJzVG9TdGF0ZShzdGF0ZSwgZmlsdGVycyk7XHJcbiAgfSlcclxuXHJcblxyXG4gIHByaXZhdGUgYWRkRmlsdGVyc1RvU3RhdGUgPSAoc3RhdGU6VGFibGVTdGF0ZSwgZmlsdGVyczooRmlsdGVySW5mbyB8IEN1c3RvbUZpbHRlcilbXSkgOiBUYWJsZVN0YXRlID0+IHtcclxuXHJcbiAgICB2YXIgY3VzdG9tRmlsdGVycyA9IGZpbHRlcnMuZmlsdGVyKCAgaXNDdXN0b21GaWx0ZXIgKTtcclxuXHJcbiAgICB2YXIgZmlsdGVySW5mb3MgPSBmaWx0ZXJzLmZpbHRlcihpc0ZpbHRlckluZm8pO1xyXG5cclxuICAgIGNvbnN0IGZpbHRlcnNPYmogPSBmaWx0ZXJJbmZvc1xyXG4gICAgICAuZmlsdGVyKGZsdHIgPT4gT2JqZWN0LmtleXMoc3RhdGUubWV0YURhdGEpLnNvbWUoa2V5ID0+IGtleSA9PT0gZmx0ci5rZXkpIHx8IGNvbnNvbGUud2FybihgTWV0YSBkYXRhIHdpdGgga2V5ICR7Zmx0ci5rZXl9IG5vdCBmb3VuZGApKVxyXG4gICAgICAucmVkdWNlKChmaWx0ZXJzT2JqOiB7W2s6IHN0cmluZ106IGFueX0sZmlsdGVyKT0+e1xyXG4gICAgICAgIGlmICghZmlsdGVyLmZpbHRlcklkKSB7XHJcbiAgICAgICAgICBmaWx0ZXIuZmlsdGVySWQgPSB1dWlkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbHRlcnNPYmpbZmlsdGVyLmZpbHRlcklkXSA9IGZpbHRlcjtcclxuICAgICAgICByZXR1cm4gZmlsdGVyc09iajtcclxuICAgICAgfSx7fSk7XHJcblxyXG4gICAgY3VzdG9tRmlsdGVycy5mb3JFYWNoKCBmbHRyID0+IHtcclxuICAgICAgaWYoIWZsdHIuZmlsdGVySWQpIHtcclxuICAgICAgICBmbHRyLmZpbHRlcklkID0gdXVpZCgpO1xyXG4gICAgICB9XHJcbiAgICAgIGZpbHRlcnNPYmpbZmx0ci5maWx0ZXJJZF0gPSBmbHRyO1xyXG4gICAgfSlcclxuICAgIHJldHVybiB7XHJcbiAgICAgIC4uLnN0YXRlLFxyXG4gICAgICBmaWx0ZXJzIDogey4uLnN0YXRlLmZpbHRlcnMsIC4uLmZpbHRlcnNPYmogfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IHJlbW92ZUZpbHRlciA9IHRoaXMudXBkYXRlciggKHN0YXRlLCBmaWx0ZXJJZDogc3RyaW5nKSA9PiB7XHJcbiAgICBjb25zdCBmaWx0ZXJzQ29weSA9IHsgLi4uc3RhdGUuZmlsdGVycyB9O1xyXG4gICAgZGVsZXRlIGZpbHRlcnNDb3B5W2ZpbHRlcklkXTtcclxuICAgIHJldHVybiAoey4uLnN0YXRlLCBmaWx0ZXJzOiBmaWx0ZXJzQ29weSB9KTtcclxuICB9KTtcclxuXHJcbiAgcmVhZG9ubHkgcmVtb3ZlRmlsdGVycyA9IHRoaXMudXBkYXRlciggKHN0YXRlLCBmaWx0ZXJJZHM6IHN0cmluZ1tdKSA9PiB7XHJcbiAgICBjb25zdCBmaWx0ZXJzQ29weSA9IHsgLi4uc3RhdGUuZmlsdGVycyB9O1xyXG4gICAgZmlsdGVySWRzLmZvckVhY2goaWQgPT4geyBkZWxldGUgZmlsdGVyc0NvcHlbaWRdIH0pXHJcbiAgICByZXR1cm4gKHsuLi5zdGF0ZSwgZmlsdGVyczogZmlsdGVyc0NvcHkgfSk7XHJcbiAgfSk7XHJcblxyXG4gIHJlYWRvbmx5IGNsZWFyRmlsdGVycyA9IHRoaXMudXBkYXRlcigoc3RhdGUpPT5cclxuICAgICh7Li4uc3RhdGUsZmlsdGVyczp7fX0pKVxyXG5cclxuXHJcbiAgc2VsZWN0U29ydGVkID0gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuc29ydGVkKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKChmLHMpID0+ICFpc0RpZmZlcmVudChmLHMpKSk7XHJcbiAgcmVhZG9ubHkgc29ydCQgPSB0aGlzLnNlbGVjdCh0aGlzLnNlbGVjdFN0YXRlUmVhZHksIHRoaXMuc2VsZWN0U29ydGVkLCAoXyxzKSA9PiBzICk7XHJcbiAgXHJcbiAgY3JlYXRlUHJlU29ydCA9IChtZXRhRGF0YXM6IERpY3Rpb25hcnk8TWV0YURhdGE+KTogU29ydFtdID0+IHtcclxuICAgIHJldHVybiBPYmplY3QudmFsdWVzKG1ldGFEYXRhcykuZmlsdGVyKCggbWV0YURhdGEgKSA6IG1ldGFEYXRhIGlzIE1ldGFEYXRhICYge3ByZVNvcnQ6IFNvcnREZWZ9ID0+ICEhbWV0YURhdGEucHJlU29ydClcclxuICAgICAgLnNvcnQoKHsgIHByZVNvcnQ6IHBzMSAgfSwgeyBwcmVTb3J0OiBwczIgfSApID0+IChwczEucHJlY2VkZW5jZSB8fCBOdW1iZXIuTUFYX1ZBTFVFKSAtICggcHMyLnByZWNlZGVuY2UgfHwgTnVtYmVyLk1BWF9WQUxVRSkpXHJcbiAgICAgIC5tYXAoKCB7a2V5LCBwcmVTb3J0OiB7IGRpcmVjdGlvbiB9fSApID0+ICh7IGFjdGl2ZToga2V5LCBkaXJlY3Rpb24gfSkpXHJcbiAgfVxyXG5cclxuICByZWFkb25seSBzZXRTb3J0ID0gdGhpcy51cGRhdGVyPHtrZXk6IHN0cmluZywgZGlyZWN0aW9uPzogU29ydERpcmVjdGlvbn0+KChzdGF0ZSwge2tleSwgZGlyZWN0aW9ufSApID0+IHtcclxuICAgIGNvbnN0IHNvcnRBcnJheSA9IHN0YXRlLnNvcnRlZC5maWx0ZXIoIHMgPT4gcy5hY3RpdmUgIT09IGtleSApO1xyXG4gICAgaWYoZGlyZWN0aW9uKSB7XHJcbiAgICAgIHNvcnRBcnJheS51bnNoaWZ0KHthY3RpdmU6IGtleSwgZGlyZWN0aW9ufSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAuLi5zdGF0ZSxcclxuICAgICAgc29ydGVkOiBzb3J0QXJyYXksXHJcbiAgICB9O1xyXG4gIH0pO1xyXG5cclxuICByZWFkb25seSBzZXRBbGxTb3J0ID0gdGhpcy51cGRhdGVyKChzdGF0ZSxzb3J0QXJyYXk6U29ydFtdKT0+e1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLi4uc3RhdGUsXHJcbiAgICAgIHNvcnRlZDogc29ydEFycmF5LFxyXG4gICAgfTtcclxuICB9KTtcclxuXHJcbiAgdXBkYXRlU3RhdGVGdW5jID0gKHN0YXRlOiBUYWJsZVN0YXRlLCBpbmNvbWluZ1RhYmxlU3RhdGU6IFBhcnRpYWw8VGFibGVTdGF0ZT4pIDogVGFibGVTdGF0ZSA9PiB7XHJcbiAgICBjb25zdCBtZXRhRGF0YSA9IHN0YXRlLm1ldGFEYXRhO1xyXG4gICAgY29uc3Qgc29ydGVkID0gaW5jb21pbmdUYWJsZVN0YXRlLnNvcnRlZD8ubGVuZ3RoID8gaW5jb21pbmdUYWJsZVN0YXRlLnNvcnRlZFxyXG4gICAgICA6IHN0YXRlLmluaXRpYWxpemF0aW9uU3RhdGUgPT09IEluaXRpYWxpemF0aW9uU3RhdGUuQ3JlYXRlZCA/IHRoaXMuY3JlYXRlUHJlU29ydChtZXRhRGF0YSkgOiBzdGF0ZS5zb3J0ZWQ7XHJcbiAgICByZXR1cm4gey4uLnN0YXRlLCAuLi5pbmNvbWluZ1RhYmxlU3RhdGUsIG1ldGFEYXRhICwgc29ydGVkfTtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IHNldFBhZ2VTaXplID0gdGhpcy51cGRhdGVyKCAoc3RhdGUsIHBhZ2VTaXplOiBudW1iZXIpPT4gKHsgLi4uc3RhdGUsIHBhZ2VTaXplLCB1c2VyRGVmaW5lZDogeyAuLi5zdGF0ZS51c2VyRGVmaW5lZCwgcGFnZVNpemUgfSB9KSk7XHJcbiAgZ2V0UGFnZVNpemUgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS51c2VyRGVmaW5lZC5wYWdlU2l6ZSB8fCBzdGF0ZS5wYWdlU2l6ZSk7XHJcbiAgXHJcbiAgcmVhZG9ubHkgdXBkYXRlU3RhdGUgPSB0aGlzLnVwZGF0ZXI8UGFydGlhbDxUYWJsZVN0YXRlPj4odGhpcy51cGRhdGVTdGF0ZUZ1bmMpO1xyXG5cclxuXHJcblxyXG4gIHJlYWRvbmx5IHVwZGF0ZVN0YXRlRnJvbVBlcnNpc3RlZFN0YXRlID0gdGhpcy51cGRhdGVyKCAoIHN0YXRlOiBUYWJsZVN0YXRlLCBwZXJzaXN0ZWRTdGF0ZTogUGVyc2lzdGVkVGFibGVTdGF0ZSkgOiBUYWJsZVN0YXRlID0+IHtcclxuICAgIGNvbnN0IGluY29taW5nVGFibGVTdGF0ZTogUGFydGlhbDxUYWJsZVN0YXRlPiA9IGNsZWFuUGVyc2lzdGVkU3RhdGUoc3RhdGUscGVyc2lzdGVkU3RhdGUpO1xyXG4gICAgY29uc3QgbmV3U3RhdGUgPSAgdGhpcy51cGRhdGVTdGF0ZUZ1bmMoc3RhdGUsaW5jb21pbmdUYWJsZVN0YXRlKTtcclxuICAgIG5ld1N0YXRlLmluaXRpYWxpemF0aW9uU3RhdGUgPSBzdGF0ZS5pbml0aWFsaXphdGlvblN0YXRlID09PSBJbml0aWFsaXphdGlvblN0YXRlLk1ldGFEYXRhTG9hZGVkID8gSW5pdGlhbGl6YXRpb25TdGF0ZS5Mb2FkZWRGcm9tU3RvcmUgOiBzdGF0ZS5pbml0aWFsaXphdGlvblN0YXRlO1xyXG4gICAgcmV0dXJuIG5ld1N0YXRlO1xyXG4gIH0pO1xyXG5cclxuICBnZXRVc2VyRGVmaW5lZFRhYmxlU2l6ZSA9IHRoaXMuc2VsZWN0U2lnbmFsKHN0YXRlID0+IHN0YXRlLnVzZXJEZWZpbmVkLnRhYmxlLndpZHRoKTtcclxuICBnZXRVc2VyRGVmaW5lZFRhYmxlU2l6ZSQgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS51c2VyRGVmaW5lZC50YWJsZS53aWR0aCk7XHJcbiAgc2V0VGFibGVXaWR0aCA9IHRoaXMudXBkYXRlcigoc3RhdGUsIHdpZHRoSW5QaXhlbHM6bnVtYmVyKSA9PiAoey4uLnN0YXRlLCB1c2VyRGVmaW5lZDogeyAuLi5zdGF0ZS51c2VyRGVmaW5lZCwgdGFibGU6IHsgd2lkdGg6IHdpZHRoSW5QaXhlbHMgfSB9IH0pKSA7XHJcblxyXG4gIG1lcmdlTWV0YSA9IChvcmlnOiBNZXRhRGF0YSwgbWVyZ2U6IE1ldGFEYXRhKTogTWV0YURhdGEgPT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBrZXk6IG9yaWcua2V5LFxyXG4gICAgICAgIGRpc3BsYXlOYW1lOiBtZXJnZS5kaXNwbGF5TmFtZSA/PyBvcmlnLmRpc3BsYXlOYW1lLFxyXG4gICAgICAgIGZpZWxkVHlwZTogbWVyZ2UuZmllbGRUeXBlIHx8IG9yaWcuZmllbGRUeXBlLFxyXG4gICAgICAgIGFkZGl0aW9uYWw6IHsuLi5vcmlnLmFkZGl0aW9uYWwsIC4uLm1lcmdlLmFkZGl0aW9uYWx9LFxyXG4gICAgICAgIG9yZGVyOiBtZXJnZS5vcmRlciA/PyBvcmlnLm9yZGVyLFxyXG4gICAgICAgIHByZVNvcnQ6IG1lcmdlLnByZVNvcnQgPz8gb3JpZy5wcmVTb3J0LFxyXG4gICAgICAgIHdpZHRoOiBtZXJnZS53aWR0aCA/PyBvcmlnLndpZHRoLFxyXG4gICAgICAgIG5vRXhwb3J0OiBtZXJnZS5ub0V4cG9ydCB8fCBvcmlnLm5vRXhwb3J0LFxyXG4gICAgICAgIG5vRmlsdGVyOiBtZXJnZS5ub0ZpbHRlciB8fCBvcmlnLm5vRmlsdGVyLFxyXG4gICAgICAgIGN1c3RvbUNlbGw6IG1lcmdlLmN1c3RvbUNlbGwgPz8gb3JpZy5jdXN0b21DZWxsLFxyXG4gICAgICAgIHRyYW5zZm9ybTogbWVyZ2UudHJhbnNmb3JtID8/IG9yaWcudHJhbnNmb3JtLFxyXG4gICAgICAgIG1hcDogbWVyZ2UubWFwID8/IG9yaWcubWFwLFxyXG4gICAgICAgIGNsaWNrOiBtZXJnZS5jbGljayA/PyBvcmlnLmNsaWNrLFxyXG4gICAgICAgIGNsYXNzZXM6IG1lcmdlLmNsYXNzZXMgPz8gb3JpZy5jbGFzc2VzLFxyXG4gICAgICAgIG5vU29ydDogbWVyZ2Uubm9Tb3J0ID8/IG9yaWcubm9Tb3J0LFxyXG4gICAgICAgIHRlbXBsYXRlOiBtZXJnZS50ZW1wbGF0ZSA/PyBvcmlnLnRlbXBsYXRlLFxyXG4gICAgICAgIHRvb2xUaXA6IG1lcmdlLnRvb2xUaXAgPz8gb3JpZy50b29sVGlwLFxyXG4gICAgICAgIHVzZUljb246IG1lcmdlLnVzZUljb24gPz8gb3JpZy51c2VJY29uLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IHNldEluaXRpYWxpemF0aW9uU3RhdGUgPSB0aGlzLnVwZGF0ZXIoIChzdGF0ZSwgaW5pdGlhbGl6YXRpb25TdGF0ZTogIEluaXRpYWxpemF0aW9uU3RhdGUpID0+IHtcclxuICAgIHJldHVybiB7Li4uc3RhdGUsIGluaXRpYWxpemF0aW9uU3RhdGV9O1xyXG4gIH0pO1xyXG5cclxuICBydW5PbmNlV2hlbihwcmVkaWNhdGU6IFByZWRpY2F0ZTxUYWJsZVN0YXRlPiwgZnVuYzogKHN0YXRlOlRhYmxlU3RhdGUpID0+IHZvaWQpIHtcclxuICAgIGNvbnN0IG9icyA9IHRoaXMuc3RhdGUkLnBpcGUob25jZVdoZW4ocHJlZGljYXRlKSk7XHJcbiAgICB0aGlzLm9uKG9icywgKHN0YXRlKSA9PiB7XHJcbiAgICAgIGZ1bmMoc3RhdGUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblJlYWR5KCBmdW5jOiAoc3RhdGU6IFRhYmxlU3RhdGUpID0+IHZvaWQgKSB7XHJcbiAgICB0aGlzLnJ1bk9uY2VXaGVuKHN0YXRlSXMoSW5pdGlhbGl6YXRpb25TdGF0ZS5SZWFkeSksZnVuYyk7XHJcbiAgfVxyXG5cclxuICByZWFkb25seSBzZXRNZXRhRGF0YSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIG1kOiBNZXRhRGF0YVtdKSA9PiB7XHJcbiAgICBjb25zdCBtZXRhRGF0YSA9IG1kXHJcbiAgICAgIC5yZWR1Y2UoKHByZXY6IERpY3Rpb25hcnk8TWV0YURhdGE+LGN1cnIpID0+IHtcclxuICAgICAgICBpZihwcmV2W2N1cnIua2V5XSkge1xyXG4gICAgICAgICAgcHJldltjdXJyLmtleV0gPSB0aGlzLm1lcmdlTWV0YShwcmV2W2N1cnIua2V5XSxjdXJyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcHJldltjdXJyLmtleV0gPSBjdXJyO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcHJldjtcclxuICAgICAgfSAse30pO1xyXG4gICAgbGV0IHNvcnRlZCA9IHN0YXRlLnNvcnRlZDtcclxuICAgIGlmKHNvcnRlZC5sZW5ndGggPT09IDApIHtcclxuICAgICAgc29ydGVkID0gdGhpcy5jcmVhdGVQcmVTb3J0KG1ldGFEYXRhKTtcclxuICAgIH1cclxuICAgIGNvbnN0IG9yZGVyID0gdGhpcy5pbml0aWFsaXplT3JkZXIoc3RhdGUsIG1ldGFEYXRhKTtcclxuICAgIGNvbnN0IGluaXRpYWxpemF0aW9uU3RhdGUgPSBzdGF0ZS5pbml0aWFsaXphdGlvblN0YXRlID09IEluaXRpYWxpemF0aW9uU3RhdGUuQ3JlYXRlZCA/ICBJbml0aWFsaXphdGlvblN0YXRlLk1ldGFEYXRhTG9hZGVkIDogc3RhdGUuaW5pdGlhbGl6YXRpb25TdGF0ZTtcclxuICAgIHJldHVybiB7IC4uLnN0YXRlLCBpbml0aWFsaXphdGlvblN0YXRlLCBtZXRhRGF0YSwgc29ydGVkLCB1c2VyRGVmaW5lZDogeyAuLi5zdGF0ZS51c2VyRGVmaW5lZCwgb3JkZXI6IG9yZGVyfSB9O1xyXG4gIH0pO1xyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemVPcmRlciA9IChzdGF0ZTpUYWJsZVN0YXRlLG1kczogRGljdGlvbmFyeTxNZXRhRGF0YT4pIDogRGljdGlvbmFyeTxudW1iZXI+ID0+IHtcclxuICAgIGNvbnN0IHZpZXdhYmxlTWV0YURhdGFBcnIgPSBPYmplY3QudmFsdWVzKG1kcykuZmlsdGVyKGEgPT4gYS5maWVsZFR5cGUgIT09IEZpZWxkVHlwZS5IaWRkZW4pO1xyXG4gICAgbGV0IHVzZXJEZWZpbmVkT3JkZXIgPSBzdGF0ZS51c2VyRGVmaW5lZC5vcmRlcjtcclxuICAgIGlmKHZpZXdhYmxlTWV0YURhdGFBcnIuc29tZShtZXRhID0+IHVzZXJEZWZpbmVkT3JkZXJbbWV0YS5rZXldID09IG51bGwpKXtcclxuICAgICAgcmV0dXJuIHt9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdXNlckRlZmluZWRPcmRlcjtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUNvbGxhcHNlSGVhZGVyID0gdGhpcy51cGRhdGVyKChzdGF0ZSk9PntcclxuICAgIGNvbnN0IHRhYmxlU2V0dGluZ3MgPSB7Li4uc3RhdGUucGVyc2lzdGVkVGFibGVTZXR0aW5nc307XHJcbiAgICB0YWJsZVNldHRpbmdzLmNvbGxhcHNlSGVhZGVyID0gIXRhYmxlU2V0dGluZ3MuY29sbGFwc2VIZWFkZXI7XHJcbiAgICByZXR1cm4gKHsuLi5zdGF0ZSxwZXJzaXN0ZWRUYWJsZVNldHRpbmdzIDogbmV3IFBlcnNpc3RlZFRhYmxlU2V0dGluZ3ModGFibGVTZXR0aW5ncyl9KTtcclxuICB9KVxyXG5cclxuICB0b2dnbGVDb2xsYXBzZUZvb3RlciA9IHRoaXMudXBkYXRlcigoc3RhdGUpPT57XHJcbiAgICBjb25zdCB0YWJsZVNldHRpbmdzID0gey4uLnN0YXRlLnBlcnNpc3RlZFRhYmxlU2V0dGluZ3N9O1xyXG4gICAgdGFibGVTZXR0aW5ncy5jb2xsYXBzZUZvb3RlciA9ICF0YWJsZVNldHRpbmdzLmNvbGxhcHNlRm9vdGVyO1xyXG4gICAgcmV0dXJuICh7Li4uc3RhdGUscGVyc2lzdGVkVGFibGVTZXR0aW5ncyA6IG5ldyBQZXJzaXN0ZWRUYWJsZVNldHRpbmdzKHRhYmxlU2V0dGluZ3MpfSk7XHJcbiAgfSk7XHJcblxyXG4gICRjb2xsYXBzZUZvb3RlciA9IHRoaXMuc2VsZWN0U2lnbmFsKHN0YXRlID0+IHN0YXRlLnBlcnNpc3RlZFRhYmxlU2V0dGluZ3MuY29sbGFwc2VGb290ZXIpO1xyXG4gICRjb2xsYXBzZUhlYWRlciA9IHRoaXMuc2VsZWN0U2lnbmFsKHN0YXRlID0+IHN0YXRlLnBlcnNpc3RlZFRhYmxlU2V0dGluZ3MuY29sbGFwc2VIZWFkZXIpO1xyXG5cclxuICBhZGRHcm91cEJ5S2V5ID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgbWV0YURhdGFLZXk6IHN0cmluZykgPT4gKHtcclxuICAgIC4uLnN0YXRlLFxyXG4gICAgZ3JvdXBCeTogWy4uLnN0YXRlLmdyb3VwQnksIHsga2V5OiBtZXRhRGF0YUtleSwgZXhwYW5kZWRIZWFkZXJzOiBbXSB9XVxyXG4gIH0pKTtcclxuXHJcbiAgcmVtb3ZlR3JvdXBCeUtleSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGdyb3VwQnlLZXk6IHN0cmluZykgPT4gKHtcclxuICAgIC4uLnN0YXRlLFxyXG4gICAgZ3JvdXBCeTogc3RhdGUuZ3JvdXBCeS5maWx0ZXIoa2V5ID0+IGdyb3VwQnlLZXkgIT09IGtleS5rZXkpXHJcbiAgfSkpO1xyXG5cclxuICB1cGRhdGVFeHBhbmRlZEdyb3VwcyA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGRhdGE6IHtrZXk6IHN0cmluZywgZ3JvdXBLZXk6IHN0cmluZywgaXNFeHBhbmRlZDogYm9vbGVhbn0pID0+IHtcclxuICAgIGNvbnN0IGdiayA9IHJlcGxhY2VJbkFycmF5V2l0aENsb25lKHN0YXRlLmdyb3VwQnksIGsgPT4gay5rZXkgPT09IGRhdGEua2V5LCBnayA9PiB7XHJcbiAgICAgIGdrLmV4cGFuZGVkSGVhZGVycyA9IGRhdGEuaXNFeHBhbmRlZCA/IFsuLi5nay5leHBhbmRlZEhlYWRlcnMsIGRhdGEuZ3JvdXBLZXldIDogZ2suZXhwYW5kZWRIZWFkZXJzLmZpbHRlcihnID0+IGcgIT09IGRhdGEuZ3JvdXBLZXkpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gKHtcclxuICAgICAgLi4uc3RhdGUsXHJcbiAgICAgIGdyb3VwQnk6IGdia1xyXG4gICAgfSl9XHJcbiAgKTtcclxuXHJcbiAgZXhwYW5kQWxsT2ZHcm91cCA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGRhdGE6IHsgZ3JvdXBIZWFkZXJzQnlLZXk6IERpY3Rpb25hcnk8eyBncm91cE5hbWU6IHN0cmluZyB9W10+IH0pID0+IHtcclxuICAgIGNvbnN0IG5ld0dyb3VwZWREYXRhID0gc3RhdGUuZ3JvdXBCeS5tYXAoZ2IgPT4gKHtcclxuICAgICAga2V5OiBnYi5rZXksXHJcbiAgICAgIGV4cGFuZGVkSGVhZGVyczogZGF0YS5ncm91cEhlYWRlcnNCeUtleVtnYi5rZXldPy5tYXAoZyA9PiBnLmdyb3VwTmFtZSkgPz8gZ2IuZXhwYW5kZWRIZWFkZXJzXHJcbiAgICB9IGFzIEdyb3VwZWREYXRhKSk7XHJcbiAgICByZXR1cm4gKHsgLi4uc3RhdGUsIGdyb3VwQnk6IG5ld0dyb3VwZWREYXRhIH0pO1xyXG4gIH0pO1xyXG5cclxuICBjb2xsYXBzZUFsbCA9IHRoaXMudXBkYXRlcigoc3RhdGUpID0+ICh7XHJcbiAgICAuLi5zdGF0ZSxcclxuICAgIGdyb3VwQnk6IHN0YXRlLmdyb3VwQnkubWFwKGdiID0+ICh7IGtleTogZ2Iua2V5LCBleHBhbmRlZEhlYWRlcnM6IFtdIH0pKVxyXG4gIH0pKTtcclxuXHJcbiAgY29sbGFwc2VBbGxPZktleSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGRhdGE6IHsga2V5czogc3RyaW5nW10gfSkgPT4gKHtcclxuICAgIC4uLnN0YXRlLFxyXG4gICAgZ3JvdXBCeTogc3RhdGUuZ3JvdXBCeS5tYXAoZ2IgPT4gKHtcclxuICAgICAga2V5OiBnYi5rZXksXHJcbiAgICAgIGV4cGFuZGVkSGVhZGVyczogZGF0YS5rZXlzLmluY2x1ZGVzKGdiLmtleSkgPyBbXSA6IGdiLmV4cGFuZGVkSGVhZGVyc1xyXG4gICAgfSkpXHJcbiAgfSkpO1xyXG5cclxuICBncm91cEJ5S2V5cyQgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS5ncm91cEJ5Lm1hcChnYmsgPT4gZ2JrLmtleSkpXHJcbiAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZDxzdHJpbmdbXT4oKHByZXYsIGN1cnIpID0+IHByZXYubGVuZ3RoID09PSBjdXJyLmxlbmd0aCAmJiBjdXJyLmV2ZXJ5KChrLGkpID0+IHByZXZbaV0gPT09IGspKSk7XHJcblxyXG4gIGV4cGFuZGVkR3JvdXBzJCA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLmdyb3VwQnkpLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IHtcclxuICAgIGNvbnN0IGFhID0gYS5mbGF0TWFwKGcgPT4gZy5leHBhbmRlZEhlYWRlcnMpO1xyXG4gICAgY29uc3QgYmIgPSBiLmZsYXRNYXAoZyA9PiBnLmV4cGFuZGVkSGVhZGVycyk7XHJcbiAgICByZXR1cm4gYWEubGVuZ3RoID09PSBiYi5sZW5ndGggJiYgYWEuZXZlcnkoKGspID0+IGJiLmluY2x1ZGVzKGspKTtcclxuICB9KSk7XHJcbiAgXHJcbiAgc2V0VGFibGVTZXR0aW5ncyA9IHRoaXMudXBkYXRlcigoc3RhdGUsc2V0dGluZ3M6R2VuZXJhbFRhYmxlU2V0dGluZ3MpPT57XHJcbiAgICBjb25zdCBzOlRhYmxlU3RhdGUgPSB7XHJcbiAgICAgIC4uLnN0YXRlLFxyXG4gICAgICBwZXJzaXN0ZWRUYWJsZVNldHRpbmdzIDogbmV3IFBlcnNpc3RlZFRhYmxlU2V0dGluZ3Moc2V0dGluZ3MpLFxyXG4gICAgICBub3RQZXJzaXN0ZWRUYWJsZVNldHRpbmdzIDogbmV3IE5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3Moc2V0dGluZ3MpXHJcbiAgICAgIH07XHJcbiAgICByZXR1cm4gcztcclxuICB9KTtcclxuXHJcbiAgdGFibGVTZXR0aW5ncyA9IHRoaXMuc2VsZWN0U2lnbmFsKHN0YXRlID0+IHtcclxuICAgIGNvbnN0IHRzIDogUGVyc2lzdGVkVGFibGVTZXR0aW5ncyAmIE5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MgPVxyXG4gICAgICB7Li4uc3RhdGUucGVyc2lzdGVkVGFibGVTZXR0aW5ncywgLi4uc3RhdGUubm90UGVyc2lzdGVkVGFibGVTZXR0aW5nc307XHJcbiAgICByZXR1cm4gdHM7XHJcbiAgfSk7XHJcblxyXG4gIHRhYmxlU2V0dGluZ3MkID0gdGhpcy5zZWxlY3Qoc3RhdGUgPT4ge1xyXG4gICAgY29uc3QgdHMgOiBQZXJzaXN0ZWRUYWJsZVNldHRpbmdzICYgTm90UGVyc2lzdGVkVGFibGVTZXR0aW5ncyA9XHJcbiAgICAgIHsuLi5zdGF0ZS5wZXJzaXN0ZWRUYWJsZVNldHRpbmdzLC4uLnN0YXRlLm5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3N9O1xyXG4gICAgcmV0dXJuIHRzO1xyXG4gIH0pXHJcblxyXG4gIHByb3BzID0gdGhpcy5zZWxlY3RTaWduYWwocyA9PiBzLnByb3BzKTtcclxuXHJcbiAgc2V0TGlua01hcHMgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLG1hcHM6IGFueSk9PntcclxuICAgIHJldHVybiB7Li4uc3RhdGUsbGlua01hcHM6bWFwc307XHJcbiAgfSk7XHJcblxyXG4gIGdldExpbmtJbmZvID0gKG1kOk1ldGFEYXRhKSA9PiB0aGlzLnNlbGVjdFNpZ25hbChzdGF0ZSA9PiBzdGF0ZS5saW5rTWFwc1ttZC5rZXldKTtcclxuXHJcbiAgZ2V0SXNFeHBhbmRlZCA9IChjb2x1bW5LZXk6IHN0cmluZywgZ3JvdXBIZWFkZXJLZXk6IHN0cmluZykgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0U2lnbmFsKHN0YXRlID0+ICEhc3RhdGUuZ3JvdXBCeS5maWx0ZXIoZyA9PiBnLmtleSA9PT0gY29sdW1uS2V5ICYmIGcuZXhwYW5kZWRIZWFkZXJzLmluY2x1ZGVzKGdyb3VwSGVhZGVyS2V5KSkubGVuZ3RoKTtcclxuICB9XHJcbiAgJGlzVmlydHVhbCA9IHRoaXMuc2VsZWN0U2lnbmFsKHN0YXRlID0+IHN0YXRlLm5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MudXNlVmlydHVhbFNjcm9sbCA9PT0gdHJ1ZSB8fCAoc3RhdGUubm90UGVyc2lzdGVkVGFibGVTZXR0aW5ncy51c2VWaXJ0dWFsU2Nyb2xsIGFzIFZpcnR1YWxTY3JvbGxPcHRpb25zKT8udmlydHVhbEFzRGVmYXVsdCB8fCBzdGF0ZS5zaG93QWxsKTtcclxuICAkdmlld1R5cGUgPSB0aGlzLnNlbGVjdFNpZ25hbDxWaWV3VHlwZT4oc3RhdGUgPT4ge1xyXG4gICAgY29uc3QgdXNlUGFnaW5hdG9yID0gc3RhdGUubm90UGVyc2lzdGVkVGFibGVTZXR0aW5ncy51c2VQYWdpbmF0b3I7XHJcbiAgICBpZihzdGF0ZS5zaG93QWxsIHx8ICh0aGlzLiRpc1ZpcnR1YWwoKSAmJiAhdXNlUGFnaW5hdG9yKSl7XHJcbiAgICAgIHJldHVybiAndmlydHVhbCBhbGwnO1xyXG4gICAgfSBlbHNlIGlmKHRoaXMuJGlzVmlydHVhbCgpICYmIHVzZVBhZ2luYXRvcikge1xyXG4gICAgICByZXR1cm4gJ3ZpcnR1YWwgcGFnaW5hdG9yJztcclxuICAgIH0gZWxzZSBpZih1c2VQYWdpbmF0b3IpIHtcclxuICAgICAgcmV0dXJuICdwYWdpbmF0b3InO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICdhbGwnO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICAkb3JkZXJlZENvZGVWaXNpYmxlTWV0YURhdGFzID0gdGhpcy5zZWxlY3RTaWduYWwoXHJcbiAgICB0aGlzLiRtZXRhRGF0YUFycmF5LCAobWRzKSA9PiBtZHMuZmlsdGVyKG0gPT4gbS5maWVsZFR5cGUgIT09IEZpZWxkVHlwZS5IaWRkZW4pLFxyXG4gICAge2VxdWFsOiAoYTogTWV0YURhdGFbXSxiKSA9PiBiLmxlbmd0aCA9PT0gYS5sZW5ndGggJiYgYi5ldmVyeSgocyxpKSA9PiBhW2ldLmtleSA9PT0gcy5rZXkpfVxyXG4gIClcclxuXHJcbiAgJG9yZGVyZWRWaXNpYmxlQ29sdW1ucyA9IHRoaXMuc2VsZWN0U2lnbmFsKHRoaXMuJG9yZGVyZWRDb2RlVmlzaWJsZU1ldGFEYXRhcywgdGhpcy4kaGlkZGVuS2V5cyxcclxuICAgIChjcywgaGlkZGVuS2V5cykgPT4gY3MuZmlsdGVyKG0gPT4gIWhpZGRlbktleXMuaW5jbHVkZXMobS5rZXkpKS5tYXAobSA9PiBtLmtleSkpO1xyXG5cclxuICAkY3VycmVudFBhZ2UgPSB0aGlzLnNlbGVjdFNpZ25hbChzdGF0ZSA9PiBzdGF0ZS5jdXJyZW50UGFnZSk7XHJcbiAgJHBhZ2VTaXplID0gdGhpcy5zZWxlY3RTaWduYWwocyA9PiBzLnVzZXJEZWZpbmVkPy5wYWdlU2l6ZSB8fCBzLnBhZ2VTaXplKTtcclxuXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBvcmRlcmVkU3RhdGVWaXNpYmxlTWV0YURhdGEgPSAoc3RhdGU6IFRhYmxlU3RhdGUpID0+IHtcclxuICBjb25zdCBvcmRlcmVkID0gb3JkZXJTdGF0ZU1ldGFEYXRhKHN0YXRlKTtcclxuICBjb25zdCBvcmRlcmVkVmlzaWJsZSA9IG9yZGVyZWRcclxuICAgIC5maWx0ZXIobWV0YURhdGEgPT4gIXN0YXRlLmhpZGRlbktleXMuaW5jbHVkZXMobWV0YURhdGEua2V5KSAmJiBzdGF0ZS5tZXRhRGF0YVttZXRhRGF0YS5rZXldLmZpZWxkVHlwZSAhPT0gRmllbGRUeXBlLkhpZGRlbik7XHJcbiAgcmV0dXJuIG9yZGVyZWRWaXNpYmxlO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3Qgb3JkZXJlZENvZGVWaXNpYmxlTWV0YURhdGEgPSAoc3RhdGU6IFRhYmxlU3RhdGUpID0+XHJcbiAgb3JkZXJTdGF0ZU1ldGFEYXRhKHN0YXRlKS5maWx0ZXIobWQgPT4gbWQuZmllbGRUeXBlICE9PSBGaWVsZFR5cGUuSGlkZGVuKTtcclxuXHJcbmV4cG9ydCBjb25zdCBvcmRlclN0YXRlTWV0YURhdGEgPSAoc3RhdGU6VGFibGVTdGF0ZSkgPT4ge1xyXG4gIHJldHVybiBvcmRlck1ldGFEYXRhKHN0YXRlLm1ldGFEYXRhLCBzdGF0ZS51c2VyRGVmaW5lZC5vcmRlcik7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBvcmRlck1ldGFEYXRhID0gKG1ldGFEYXRhOiBEaWN0aW9uYXJ5PE1ldGFEYXRhPiwgdXNlckRlZmluZWQ6IERpY3Rpb25hcnk8bnVtYmVyPikgPT4ge1xyXG4gIGNvbnN0IHVzZXJPcmRlckFyciA9IE9iamVjdC5lbnRyaWVzKHVzZXJEZWZpbmVkKTtcclxuICByZXR1cm4gdXNlck9yZGVyQXJyLmxlbmd0aCA/XHJcbiAgIE9iamVjdC52YWx1ZXMobWV0YURhdGEpLnNvcnQoKGEsYik9PiB7XHJcbiAgICBjb25zdCBvcmRlckEgPSB1c2VyRGVmaW5lZFthLmtleV07XHJcbiAgICBjb25zdCBvcmRlckIgPSB1c2VyRGVmaW5lZFtiLmtleV07XHJcbiAgICByZXR1cm4gb3JkZXIob3JkZXJBLCBvcmRlckIpO1xyXG4gIH0pXHJcbiAgIDpcclxuICAgT2JqZWN0LnZhbHVlcyhtZXRhRGF0YSkuc29ydCgoYSxiKT0+IHtcclxuICAgIGNvbnN0IG9yZGVyQSA9IGEub3JkZXI7XHJcbiAgICBjb25zdCBvcmRlckIgPSBiLm9yZGVyO1xyXG4gICAgcmV0dXJuIG9yZGVyKG9yZGVyQSwgb3JkZXJCKTtcclxuICB9KVxyXG59XHJcblxyXG5mdW5jdGlvbiBvcmRlcihvcmRlckE6IG51bWJlciB8IHVuZGVmaW5lZCwgb3JkZXJCOiBudW1iZXIgfCB1bmRlZmluZWQpe1xyXG4gIGlmKG9yZGVyQSA9PSBudWxsICYmIG9yZGVyQiA9PSBudWxsKSB7XHJcbiAgICByZXR1cm4gMDtcclxuICB9XHJcbiAgaWYob3JkZXJBID09IG51bGwpIHtcclxuICAgIHJldHVybiAxO1xyXG4gIH1cclxuICBpZihvcmRlckIgPT0gbnVsbCkge1xyXG4gICAgcmV0dXJuIC0xO1xyXG4gIH1cclxuICByZXR1cm4gb3JkZXJBIC0gb3JkZXJCO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjbGVhblBlcnNpc3RlZFN0YXRlKHN0YXRlOiBUYWJsZVN0YXRlLHBTdGF0ZTogUGVyc2lzdGVkVGFibGVTdGF0ZSkge1xyXG4gIGNvbnN0IG1ldGFzID0gT2JqZWN0LnZhbHVlcyhzdGF0ZS5tZXRhRGF0YSk7XHJcbiAgY29uc3QgZmlsdGVycyA9IE9iamVjdC52YWx1ZXMocFN0YXRlLmZpbHRlcnMpLmZpbHRlcihmbHRyID0+IGlzQ3VzdG9tRmlsdGVyKGZsdHIpIHx8IG1ldGFzLnNvbWUobSA9PiBtLmtleSA9PT0gZmx0ci5rZXkpKS5yZWR1Y2UoKG9iajogYW55LCBmaWx0ZXIpID0+IHtcclxuICAgIG9ialtmaWx0ZXIuZmlsdGVySWQhXSA9IHBTdGF0ZS5maWx0ZXJzW2ZpbHRlci5maWx0ZXJJZCFdO1xyXG4gICAgcmV0dXJuIG9iajtcclxuICB9LCB7fSk7XHJcbiAgY29uc3Qgc29ydGVkID0gcFN0YXRlLnNvcnRlZC5maWx0ZXIocyA9PiBtZXRhcy5zb21lKG0gPT4gbS5rZXkgPT09IHMuYWN0aXZlKSk7XHJcbiAgcmV0dXJuICh7Li4ucFN0YXRlLGZpbHRlcnMsc29ydGVkfSlcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgVmlld1R5cGUgPSAndmlydHVhbCBwYWdpbmF0b3InIHwgJ3BhZ2luYXRvcicgfCAndmlydHVhbCBhbGwnIHwgJ2FsbCc7XHJcbiJdfQ==
388
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jbGFzc2VzL3RhYmxlLXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sMEJBQTBCLENBQUM7QUFDeEUsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEMsT0FBTyxFQUFFLGlCQUFpQixFQUFlLG1CQUFtQixFQUFFLFlBQVksRUFBbUMsTUFBTSxjQUFjLENBQUM7QUFDbEksT0FBTyxFQUFFLFVBQVUsRUFBYSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBNEIsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUc7QUFFekQsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3JGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBeUIseUJBQXlCLEVBQUUsc0JBQXNCLEVBQThDLE1BQU0sa0NBQWtDLENBQUM7QUFDeEssT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENB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QUFDO0lBQzlFLE9BQU8sQ0FBQyxFQUFDLEdBQUcsTUFBTSxFQUFDLE9BQU8sRUFBQyxNQUFNLEVBQUMsQ0FBQyxDQUFBO0FBQ3JDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWVsZFR5cGUsIE1ldGFEYXRhLCBTb3J0RGVmIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZXBvcnQtZGVmJztcclxuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlZmF1bHRUYWJsZVN0YXRlLCBHcm91cGVkRGF0YSwgSW5pdGlhbGl6YXRpb25TdGF0ZSwga2V5c1RvRGVsZXRlLCBQZXJzaXN0ZWRUYWJsZVN0YXRlLCBUYWJsZVN0YXRlIH0gZnJvbSAnLi9UYWJsZVN0YXRlJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgUHJlZGljYXRlLCBjb21wdXRlZCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRhYmxlQnVpbGRlckNvbmZpZ1Rva2VuIH0gZnJvbSAnLi9UYWJsZUJ1aWxkZXJDb25maWcnO1xyXG5pbXBvcnQgeyBDdXN0b21GaWx0ZXIsIEZpbHRlckluZm8sIGlzQ3VzdG9tRmlsdGVyLCBpc0ZpbHRlckluZm8gfSBmcm9tICcuL2ZpbHRlci1pbmZvJztcclxuaW1wb3J0IHsgU29ydCwgU29ydERpcmVjdGlvbiB9ICBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JyA7XHJcbmltcG9ydCB7IENvbXBvbmVudFN0b3JlIH0gZnJvbSAnQG5ncngvY29tcG9uZW50LXN0b3JlJyAgO1xyXG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9kaWN0aW9uYXJ5JztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xyXG5pbXBvcnQgeyBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgbm90TnVsbCwgb25jZVdoZW4gfSBmcm9tICcuLi8uLi9yeGpzL3J4anMtb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgTm9uRnVuY3Rpb25Qcm9wZXJ0aWVzLCBOb3RQZXJzaXN0ZWRUYWJsZVNldHRpbmdzLCBQZXJzaXN0ZWRUYWJsZVNldHRpbmdzLCBUYWJsZUJ1aWxkZXJTZXR0aW5ncywgVmlydHVhbFNjcm9sbE9wdGlvbnMgfSBmcm9tICcuL3RhYmxlLWJ1aWxkZXItZ2VuZXJhbC1zZXR0aW5ncyc7XHJcbmltcG9ydCB7IHJlcGxhY2VJbkFycmF5V2l0aENsb25lIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2FycmF5LWhlbHBlcnMnO1xyXG5pbXBvcnQgeyBpc0RpZmZlcmVudCB9IGZyb20gJy4uL2RpcmVjdGl2ZXMnO1xyXG5pbXBvcnQgeyB0b09ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc3RhdGVJcyhpbml0aWFsaXphdGlvblN0YXRlOiBJbml0aWFsaXphdGlvblN0YXRlKSB7XHJcbiAgcmV0dXJuIChzdGF0ZTogVGFibGVTdGF0ZSkgPT4gc3RhdGUuaW5pdGlhbGl6YXRpb25TdGF0ZSA9PT0gaW5pdGlhbGl6YXRpb25TdGF0ZTtcclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVGFibGVTdG9yZSBleHRlbmRzIENvbXBvbmVudFN0b3JlPFRhYmxlU3RhdGU+IHtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBjb25zdCBjb25maWcgPSBpbmplY3QoVGFibGVCdWlsZGVyQ29uZmlnVG9rZW4pO1xyXG4gICAgY29uc3Qgc2V0dGluZ3NGcm9tQ29uZmlnOiBQaWNrPFRhYmxlU3RhdGUsICdub3RQZXJzaXN0ZWRUYWJsZVNldHRpbmdzJyB8ICdwZXJzaXN0ZWRUYWJsZVNldHRpbmdzJz4gPVxyXG4gICAgICB7XHJcbiAgICAgICAgcGVyc2lzdGVkVGFibGVTZXR0aW5nczogbmV3IFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MoKS5tZXJnZShjb25maWcuZGVmYXVsdFRhYmxlU2V0dGluZ3MpLFxyXG4gICAgICAgIG5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3M6IG5ldyBOb3RQZXJzaXN0ZWRUYWJsZVNldHRpbmdzKCkubWVyZ2UoY29uZmlnLmRlZmF1bHRUYWJsZVNldHRpbmdzKSxcclxuICAgICAgfTtcclxuICAgIGlmKGNvbmZpZy5kZWZhdWx0VGFibGVTZXR0aW5ncz8ucGFnZVNpemUpe1xyXG4gICAgICBzZXR0aW5nc0Zyb21Db25maWdbJ3BhZ2VTaXplJ10gPSBjb25maWcuZGVmYXVsdFRhYmxlU2V0dGluZ3M/LnBhZ2VTaXplO1xyXG4gICAgfVxyXG4gICAgc3VwZXIoIHsgLi4uZGVmYXVsdFRhYmxlU3RhdGUsIC4uLnNldHRpbmdzRnJvbUNvbmZpZyB9KTtcclxuICB9XHJcbiAgc2VsZWN0U3RhdGVSZWFkeSA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLmluaXRpYWxpemF0aW9uU3RhdGUpLnBpcGUoZmlsdGVyKGkgPT4gaSA9PT0gSW5pdGlhbGl6YXRpb25TdGF0ZS5SZWFkeSkpO1xyXG4gIGdldFNhdmFibGVTdGF0ZSgpIDogT2JzZXJ2YWJsZTxQZXJzaXN0ZWRUYWJsZVN0YXRlPiB7XHJcbiAgICByZXR1cm4gIHRoaXMuc3RhdGUkLnBpcGUoXHJcbiAgICAgIGRlYm91bmNlVGltZSgzMDApLFxyXG4gICAgICBtYXAoIHMgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1hcFNhdmVhYmxlU3RhdGUocyk7XHJcbiAgICAgIH0pLFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFNhdmFibGVTdGF0ZVNpZ25hbCA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZSgpO1xyXG4gICAgcmV0dXJuIHRoaXMubWFwU2F2ZWFibGVTdGF0ZShzdGF0ZSk7XHJcbiAgfSk7XHJcblxyXG4gIHByaXZhdGUgbWFwU2F2ZWFibGVTdGF0ZSA9IChzOiBQZXJzaXN0ZWRUYWJsZVN0YXRlKSA9PiB7XHJcbiAgICBjb25zdCBzYXZhYmxlU3RhdGUgPSB7Li4uc30gYXMgUGFydGlhbDxUYWJsZVN0YXRlPjtcclxuICAgIGtleXNUb0RlbGV0ZS5mb3JFYWNoKGtleSA9PiBkZWxldGUgc2F2YWJsZVN0YXRlW2tleV0pO1xyXG4gICAgcmV0dXJuIHNhdmFibGVTdGF0ZSBhcyBQZXJzaXN0ZWRUYWJsZVN0YXRlO1xyXG4gIH1cclxuXHJcbiAgb24gPSA8Vj4oc3JjT2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTxWPiwgZnVuYzogKG9iajogVikgPT4gdm9pZCkgPT4ge1xyXG4gICAgdGhpcy5lZmZlY3QoKCkgPT4gc3JjT2JzZXJ2YWJsZS5waXBlKFxyXG4gICAgICB0YXAoZnVuYylcclxuICAgICkpO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICByZWFkb25seSBtZXRhRGF0YSQgPSB0aGlzLnNlbGVjdCggc3RhdGUgPT4gc3RhdGUubWV0YURhdGEpO1xyXG4gICRtZXRhRGF0YSA9IHRoaXMuc2VsZWN0U2lnbmFsKCBzdGF0ZSA9PiBzdGF0ZS5tZXRhRGF0YSk7XHJcbiAgJHVzZXJEZWZpbmVkT3JkZXIgPSB0aGlzLnNlbGVjdFNpZ25hbCggc3RhdGUgPT4gc3RhdGUudXNlckRlZmluZWQub3JkZXIpO1xyXG4gICRoaWRkZW5LZXlzID0gdGhpcy5zZWxlY3RTaWduYWwoIHN0YXRlID0+IHN0YXRlLmhpZGRlbktleXMpO1xyXG4gICRtZXRhRGF0YUFycmF5ID0gdGhpcy5zZWxlY3RTaWduYWwoXHJcbiAgICB0aGlzLiRtZXRhRGF0YSxcclxuICAgIHRoaXMuJHVzZXJEZWZpbmVkT3JkZXIsXHJcbiAgICBvcmRlck1ldGFEYXRhXHJcbiAgKTtcclxuXHJcbiAgZ2V0TWV0YURhdGEkID0gKGtleTogc3RyaW5nKSA6IE9ic2VydmFibGU8TWV0YURhdGE+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdCggc3RhdGUgPT4gc3RhdGUubWV0YURhdGFba2V5XSAgKS5waXBlKFxyXG4gICAgICB0YXAobWV0YSA9PiB7aWYoIW1ldGEpY29uc29sZS53YXJuKGBNZXRhIGRhdGEgd2l0aCBrZXkgJHtrZXl9IG5vdCBmb3VuZGApfSksXHJcbiAgICAgIG5vdE51bGwoKSlcclxuICB9XHJcblxyXG4gICRnZXRVc2VyRGVmaW5lZFdpZHRoID0gKGtleTpzdHJpbmcpID0+IHRoaXMuc2VsZWN0U2lnbmFsKHN0YXRlID0+IHN0YXRlLnVzZXJEZWZpbmVkLndpZHRoc1trZXldKTtcclxuICAkZ2V0VXNlckRlZmluZWRXaWR0aHMgPSB0aGlzLnNlbGVjdFNpZ25hbChzdGF0ZSA9PiBzdGF0ZS51c2VyRGVmaW5lZC53aWR0aHMpO1xyXG4gIHRhYmxlU2V0dGluZ3NNaW5XaWR0aCA9IHRoaXMuc2VsZWN0U2lnbmFsKHN0YXRlID0+IHN0YXRlLm5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MubWluQ29sdW1uV2lkdGgpO1xyXG5cclxuICByZWFkb25seSByZXNldFN0YXRlID0gdGhpcy51cGRhdGVyKChzdGF0ZSkgPT4ge1xyXG4gICAgY29uc3Qgc29ydGVkID0gdGhpcy5jcmVhdGVQcmVTb3J0KHN0YXRlLm1ldGFEYXRhKTtcclxuICAgIHJldHVybiAoey4uLnN0YXRlLCBoaWRkZW5LZXlzOiBbXSwgc29ydGVkLCBmaWx0ZXJzOiB7fSAsIGdyb3VwQnk6IFtdLCAgdXNlckRlZmluZWQ6IHsgd2lkdGhzOiB7fSwgb3JkZXI6IHt9LCB0YWJsZToge30gfSB9KTtcclxuICB9KTtcclxuXHJcbiAgcmVhZG9ubHkgc2hvd0NvbHVtbiA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGtleTogc3RyaW5nKSA9PiAoe1xyXG4gICAgLi4uc3RhdGUsXHJcbiAgICBoaWRkZW5LZXlzOiBzdGF0ZS5oaWRkZW5LZXlzLmZpbHRlciggayA9PiBrICE9PSBrZXkpLFxyXG4gIH0pKTtcclxuXHJcbiAgcmVhZG9ubHkgaGlkZUNvbHVtbiA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGtleTogc3RyaW5nKSA9PiAoe1xyXG4gICAgLi4uc3RhdGUsXHJcbiAgICBoaWRkZW5LZXlzOiBbLi4uc3RhdGUuaGlkZGVuS2V5cy5maWx0ZXIoIGsgPT4gayAhPT0ga2V5KSwga2V5XSxcclxuICB9KSk7XHJcblxyXG4gIHJlYWRvbmx5IHNldEhpZGRlbkNvbHVtbnMgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBkaXNwbGF5Q29sczoge2tleTogc3RyaW5nLCB2aXNpYmxlOiBib29sZWFufVtdKSA9PiB7XHJcbiAgICByZXR1cm4gKHsuLi5zdGF0ZSwgaGlkZGVuS2V5czogZGlzcGxheUNvbHMuZmlsdGVyKGQgPT4gIWQudmlzaWJsZSkubWFwKGQgPT4gZC5rZXkpfSlcclxuICB9KTtcclxuXHJcblxyXG4gIHNldFVzZXJEZWZpbmVkV2lkdGggPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLGNvbFdpZHRoczp7a2V5OiBzdHJpbmcsIHdpZHRoSW5QaXhlbDpudW1iZXJ9W10pID0+IHtcclxuICAgIGNvbnN0IHVzZXJEZWZpbmVkV2lkdGhzID0gey4uLnN0YXRlLnVzZXJEZWZpbmVkLndpZHRoc307XHJcbiAgICBjb2xXaWR0aHMuZm9yRWFjaChjdyA9PiB7XHJcbiAgICAgIHVzZXJEZWZpbmVkV2lkdGhzW2N3LmtleV0gPSBjdy53aWR0aEluUGl4ZWw7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB7Li4uc3RhdGUsIHVzZXJEZWZpbmVkOiB7Li4uc3RhdGUudXNlckRlZmluZWQsIHdpZHRoczp1c2VyRGVmaW5lZFdpZHRoc319O1xyXG4gIH0pO1xyXG5cclxuICBzZXRVc2VyRGVmaW5lZE9yZGVyID0gdGhpcy51cGRhdGVyKChzdGF0ZSxtb3ZlZDogeyBuZXdPcmRlcjogbnVtYmVyLCBvbGRPcmRlcjogbnVtYmVyIH0pPT57XHJcbiAgICBjb25zdCB7IG5ld09yZGVyLCBvbGRPcmRlciB9ID0gbW92ZWQ7XHJcbiAgICBjb25zdCBtZHNBcnIgPSBvcmRlcmVkU3RhdGVWaXNpYmxlTWV0YURhdGEoc3RhdGUpO1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KG1kc0Fyciwgb2xkT3JkZXIsIG5ld09yZGVyKTtcclxuXHJcbiAgICBjb25zdCB1c2VyRGVmaW5lZE9yZGVyID0gbWRzQXJyLnJlZHVjZSgoYWdncmVnYXRlOiBhbnksY3VycmVudCxpbmRleCkgPT4ge1xyXG4gICAgICBhZ2dyZWdhdGVbY3VycmVudC5rZXldID0gaW5kZXg7XHJcbiAgICAgIHJldHVybiBhZ2dyZWdhdGVcclxuICAgIH0se30pO1xyXG4gICAgcmV0dXJuKHsgLi4uc3RhdGUsIHVzZXJEZWZpbmVkOiB7IC4uLnN0YXRlLnVzZXJEZWZpbmVkLCBvcmRlcjogdXNlckRlZmluZWRPcmRlciB9IH0pXHJcbiAgfSlcclxuXHJcbiAgJGZpbHRlcnMgPSB0aGlzLnNlbGVjdFNpZ25hbChzdGF0ZSA9PiBzdGF0ZS5maWx0ZXJzKTtcclxuICByZWFkb25seSBmaWx0ZXJzJCA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLmZpbHRlcnMgKTtcclxuXHJcbiAgcmVhZG9ubHkgZ2V0RmlsdGVyJCA9IChmaWx0ZXJJZDogc3RyaW5nKSA6IE9ic2VydmFibGU8RmlsdGVySW5mbyB8IEN1c3RvbUZpbHRlciB8IHVuZGVmaW5lZD4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0KCBzdGF0ZSA9PiBzdGF0ZS5maWx0ZXJzW2ZpbHRlcklkXSApO1xyXG4gIH1cclxuICByZWFkb25seSBhZGRGaWx0ZXIgPSB0aGlzLnVwZGF0ZXIoIChzdGF0ZSwgZmlsdGVyOiBGaWx0ZXJJbmZvIHwgQ3VzdG9tRmlsdGVyICkgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYWRkRmlsdGVyc1RvU3RhdGUoc3RhdGUsIFtmaWx0ZXJdKTtcclxuICB9KTtcclxuXHJcbiAgcmVhZG9ubHkgYWRkRmlsdGVycyA9IHRoaXMudXBkYXRlcigoc3RhdGUsZmlsdGVyczooRmlsdGVySW5mbyB8IEN1c3RvbUZpbHRlciApW10pPT57XHJcbiAgICByZXR1cm4gdGhpcy5hZGRGaWx0ZXJzVG9TdGF0ZShzdGF0ZSwgZmlsdGVycyk7XHJcbiAgfSlcclxuXHJcblxyXG4gIHByaXZhdGUgYWRkRmlsdGVyc1RvU3RhdGUgPSAoc3RhdGU6VGFibGVTdGF0ZSwgZmlsdGVyczooRmlsdGVySW5mbyB8IEN1c3RvbUZpbHRlcilbXSkgOiBUYWJsZVN0YXRlID0+IHtcclxuXHJcbiAgICB2YXIgY3VzdG9tRmlsdGVycyA9IGZpbHRlcnMuZmlsdGVyKCAgaXNDdXN0b21GaWx0ZXIgKTtcclxuXHJcbiAgICB2YXIgZmlsdGVySW5mb3MgPSBmaWx0ZXJzLmZpbHRlcihpc0ZpbHRlckluZm8pO1xyXG5cclxuICAgIGNvbnN0IGZpbHRlcnNPYmogPSBmaWx0ZXJJbmZvc1xyXG4gICAgICAuZmlsdGVyKGZsdHIgPT4gT2JqZWN0LmtleXMoc3RhdGUubWV0YURhdGEpLnNvbWUoa2V5ID0+IGtleSA9PT0gZmx0ci5rZXkpIHx8IGNvbnNvbGUud2FybihgTWV0YSBkYXRhIHdpdGgga2V5ICR7Zmx0ci5rZXl9IG5vdCBmb3VuZGApKVxyXG4gICAgICAucmVkdWNlKChmaWx0ZXJzT2JqOiB7W2s6IHN0cmluZ106IGFueX0sZmlsdGVyKT0+e1xyXG4gICAgICAgIGlmICghZmlsdGVyLmZpbHRlcklkKSB7XHJcbiAgICAgICAgICBmaWx0ZXIuZmlsdGVySWQgPSB1dWlkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbHRlcnNPYmpbZmlsdGVyLmZpbHRlcklkXSA9IGZpbHRlcjtcclxuICAgICAgICByZXR1cm4gZmlsdGVyc09iajtcclxuICAgICAgfSx7fSk7XHJcblxyXG4gICAgY3VzdG9tRmlsdGVycy5mb3JFYWNoKCBmbHRyID0+IHtcclxuICAgICAgaWYoIWZsdHIuZmlsdGVySWQpIHtcclxuICAgICAgICBmbHRyLmZpbHRlcklkID0gdXVpZCgpO1xyXG4gICAgICB9XHJcbiAgICAgIGZpbHRlcnNPYmpbZmx0ci5maWx0ZXJJZF0gPSBmbHRyO1xyXG4gICAgfSlcclxuICAgIHJldHVybiB7XHJcbiAgICAgIC4uLnN0YXRlLFxyXG4gICAgICBmaWx0ZXJzIDogey4uLnN0YXRlLmZpbHRlcnMsIC4uLmZpbHRlcnNPYmogfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IHJlbW92ZUZpbHRlciA9IHRoaXMudXBkYXRlciggKHN0YXRlLCBmaWx0ZXJJZDogc3RyaW5nKSA9PiB7XHJcbiAgICBjb25zdCBmaWx0ZXJzQ29weSA9IHsgLi4uc3RhdGUuZmlsdGVycyB9O1xyXG4gICAgZGVsZXRlIGZpbHRlcnNDb3B5W2ZpbHRlcklkXTtcclxuICAgIHJldHVybiAoey4uLnN0YXRlLCBmaWx0ZXJzOiBmaWx0ZXJzQ29weSB9KTtcclxuICB9KTtcclxuXHJcbiAgcmVhZG9ubHkgcmVtb3ZlRmlsdGVycyA9IHRoaXMudXBkYXRlciggKHN0YXRlLCBmaWx0ZXJJZHM6IHN0cmluZ1tdKSA9PiB7XHJcbiAgICBjb25zdCBmaWx0ZXJzQ29weSA9IHsgLi4uc3RhdGUuZmlsdGVycyB9O1xyXG4gICAgZmlsdGVySWRzLmZvckVhY2goaWQgPT4geyBkZWxldGUgZmlsdGVyc0NvcHlbaWRdIH0pXHJcbiAgICByZXR1cm4gKHsuLi5zdGF0ZSwgZmlsdGVyczogZmlsdGVyc0NvcHkgfSk7XHJcbiAgfSk7XHJcblxyXG4gIHJlYWRvbmx5IGNsZWFyRmlsdGVycyA9IHRoaXMudXBkYXRlcigoc3RhdGUpPT5cclxuICAgICh7Li4uc3RhdGUsZmlsdGVyczp7fX0pKVxyXG5cclxuXHJcbiAgc2VsZWN0U29ydGVkID0gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuc29ydGVkKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKChmLHMpID0+ICFpc0RpZmZlcmVudChmLHMpKSk7XHJcbiAgcmVhZG9ubHkgc29ydCQgPSB0aGlzLnNlbGVjdCh0aGlzLnNlbGVjdFN0YXRlUmVhZHksIHRoaXMuc2VsZWN0U29ydGVkLCAoXyxzKSA9PiBzICk7XHJcbiAgXHJcbiAgY3JlYXRlUHJlU29ydCA9IChtZXRhRGF0YXM6IERpY3Rpb25hcnk8TWV0YURhdGE+KTogU29ydFtdID0+IHtcclxuICAgIHJldHVybiBPYmplY3QudmFsdWVzKG1ldGFEYXRhcykuZmlsdGVyKCggbWV0YURhdGEgKSA6IG1ldGFEYXRhIGlzIE1ldGFEYXRhICYge3ByZVNvcnQ6IFNvcnREZWZ9ID0+ICEhbWV0YURhdGEucHJlU29ydClcclxuICAgICAgLnNvcnQoKHsgIHByZVNvcnQ6IHBzMSAgfSwgeyBwcmVTb3J0OiBwczIgfSApID0+IChwczEucHJlY2VkZW5jZSB8fCBOdW1iZXIuTUFYX1ZBTFVFKSAtICggcHMyLnByZWNlZGVuY2UgfHwgTnVtYmVyLk1BWF9WQUxVRSkpXHJcbiAgICAgIC5tYXAoKCB7a2V5LCBwcmVTb3J0OiB7IGRpcmVjdGlvbiB9fSApID0+ICh7IGFjdGl2ZToga2V5LCBkaXJlY3Rpb24gfSkpXHJcbiAgfVxyXG5cclxuICByZWFkb25seSBzZXRTb3J0ID0gdGhpcy51cGRhdGVyPHtrZXk6IHN0cmluZywgZGlyZWN0aW9uPzogU29ydERpcmVjdGlvbn0+KChzdGF0ZSwge2tleSwgZGlyZWN0aW9ufSApID0+IHtcclxuICAgIGNvbnN0IHNvcnRBcnJheSA9IHN0YXRlLnNvcnRlZC5maWx0ZXIoIHMgPT4gcy5hY3RpdmUgIT09IGtleSApO1xyXG4gICAgaWYoZGlyZWN0aW9uKSB7XHJcbiAgICAgIHNvcnRBcnJheS51bnNoaWZ0KHthY3RpdmU6IGtleSwgZGlyZWN0aW9ufSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAuLi5zdGF0ZSxcclxuICAgICAgc29ydGVkOiBzb3J0QXJyYXksXHJcbiAgICB9O1xyXG4gIH0pO1xyXG5cclxuICByZWFkb25seSBzZXRBbGxTb3J0ID0gdGhpcy51cGRhdGVyKChzdGF0ZSxzb3J0QXJyYXk6U29ydFtdKT0+e1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLi4uc3RhdGUsXHJcbiAgICAgIHNvcnRlZDogc29ydEFycmF5LFxyXG4gICAgfTtcclxuICB9KTtcclxuXHJcbiAgdXBkYXRlU3RhdGVGdW5jID0gKHN0YXRlOiBUYWJsZVN0YXRlLCBpbmNvbWluZ1RhYmxlU3RhdGU6IFBhcnRpYWw8VGFibGVTdGF0ZT4pIDogVGFibGVTdGF0ZSA9PiB7XHJcbiAgICBjb25zdCBtZXRhRGF0YSA9IHN0YXRlLm1ldGFEYXRhO1xyXG4gICAgY29uc3Qgc29ydGVkID0gaW5jb21pbmdUYWJsZVN0YXRlLnNvcnRlZD8ubGVuZ3RoID8gaW5jb21pbmdUYWJsZVN0YXRlLnNvcnRlZFxyXG4gICAgICA6IHN0YXRlLmluaXRpYWxpemF0aW9uU3RhdGUgPT09IEluaXRpYWxpemF0aW9uU3RhdGUuQ3JlYXRlZCA/IHRoaXMuY3JlYXRlUHJlU29ydChtZXRhRGF0YSkgOiBzdGF0ZS5zb3J0ZWQ7XHJcbiAgICByZXR1cm4gey4uLnN0YXRlLCAuLi5pbmNvbWluZ1RhYmxlU3RhdGUsIG1ldGFEYXRhICwgc29ydGVkfTtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IHNldFBhZ2VTaXplID0gdGhpcy51cGRhdGVyKCAoc3RhdGUsIHBhZ2VTaXplOiBudW1iZXIpPT4gKHsgLi4uc3RhdGUsIHBhZ2VTaXplLCB1c2VyRGVmaW5lZDogeyAuLi5zdGF0ZS51c2VyRGVmaW5lZCwgcGFnZVNpemUgfSB9KSk7XHJcbiAgZ2V0UGFnZVNpemUgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS51c2VyRGVmaW5lZC5wYWdlU2l6ZSB8fCBzdGF0ZS5wYWdlU2l6ZSk7XHJcbiAgXHJcbiAgcmVhZG9ubHkgdXBkYXRlU3RhdGUgPSB0aGlzLnVwZGF0ZXI8UGFydGlhbDxUYWJsZVN0YXRlPj4odGhpcy51cGRhdGVTdGF0ZUZ1bmMpO1xyXG5cclxuXHJcblxyXG4gIHJlYWRvbmx5IHVwZGF0ZVN0YXRlRnJvbVBlcnNpc3RlZFN0YXRlID0gdGhpcy51cGRhdGVyKCAoIHN0YXRlOiBUYWJsZVN0YXRlLCBwZXJzaXN0ZWRTdGF0ZTogUGVyc2lzdGVkVGFibGVTdGF0ZSkgOiBUYWJsZVN0YXRlID0+IHtcclxuICAgIGNvbnN0IGluY29taW5nVGFibGVTdGF0ZTogUGFydGlhbDxUYWJsZVN0YXRlPiA9IGNsZWFuUGVyc2lzdGVkU3RhdGUoc3RhdGUscGVyc2lzdGVkU3RhdGUpO1xyXG4gICAgY29uc3QgbmV3U3RhdGUgPSAgdGhpcy51cGRhdGVTdGF0ZUZ1bmMoc3RhdGUsaW5jb21pbmdUYWJsZVN0YXRlKTtcclxuICAgIG5ld1N0YXRlLmluaXRpYWxpemF0aW9uU3RhdGUgPSBzdGF0ZS5pbml0aWFsaXphdGlvblN0YXRlID09PSBJbml0aWFsaXphdGlvblN0YXRlLk1ldGFEYXRhTG9hZGVkID8gSW5pdGlhbGl6YXRpb25TdGF0ZS5Mb2FkZWRGcm9tU3RvcmUgOiBzdGF0ZS5pbml0aWFsaXphdGlvblN0YXRlO1xyXG4gICAgcmV0dXJuIG5ld1N0YXRlO1xyXG4gIH0pO1xyXG5cclxuICBnZXRVc2VyRGVmaW5lZFRhYmxlU2l6ZSA9IHRoaXMuc2VsZWN0U2lnbmFsKHN0YXRlID0+IHN0YXRlLnVzZXJEZWZpbmVkLnRhYmxlLndpZHRoKTtcclxuICBnZXRVc2VyRGVmaW5lZFRhYmxlU2l6ZSQgPSB0aGlzLnNlbGVjdChzdGF0ZSA9PiBzdGF0ZS51c2VyRGVmaW5lZC50YWJsZS53aWR0aCk7XHJcbiAgc2V0VGFibGVXaWR0aCA9IHRoaXMudXBkYXRlcigoc3RhdGUsIHdpZHRoSW5QaXhlbHM6bnVtYmVyKSA9PiAoey4uLnN0YXRlLCB1c2VyRGVmaW5lZDogeyAuLi5zdGF0ZS51c2VyRGVmaW5lZCwgdGFibGU6IHsgd2lkdGg6IHdpZHRoSW5QaXhlbHMgfSB9IH0pKSA7XHJcblxyXG4gIG1lcmdlTWV0YSA9IChvcmlnOiBNZXRhRGF0YSwgbWVyZ2U6IE1ldGFEYXRhKTogTWV0YURhdGEgPT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBrZXk6IG9yaWcua2V5LFxyXG4gICAgICAgIGRpc3BsYXlOYW1lOiBtZXJnZS5kaXNwbGF5TmFtZSA/PyBvcmlnLmRpc3BsYXlOYW1lLFxyXG4gICAgICAgIGZpZWxkVHlwZTogbWVyZ2UuZmllbGRUeXBlIHx8IG9yaWcuZmllbGRUeXBlLFxyXG4gICAgICAgIGFkZGl0aW9uYWw6IHsuLi5vcmlnLmFkZGl0aW9uYWwsIC4uLm1lcmdlLmFkZGl0aW9uYWx9LFxyXG4gICAgICAgIG9yZGVyOiBtZXJnZS5vcmRlciA/PyBvcmlnLm9yZGVyLFxyXG4gICAgICAgIHByZVNvcnQ6IG1lcmdlLnByZVNvcnQgPz8gb3JpZy5wcmVTb3J0LFxyXG4gICAgICAgIHdpZHRoOiBtZXJnZS53aWR0aCA/PyBvcmlnLndpZHRoLFxyXG4gICAgICAgIG5vRXhwb3J0OiBtZXJnZS5ub0V4cG9ydCB8fCBvcmlnLm5vRXhwb3J0LFxyXG4gICAgICAgIG5vRmlsdGVyOiBtZXJnZS5ub0ZpbHRlciB8fCBvcmlnLm5vRmlsdGVyLFxyXG4gICAgICAgIGN1c3RvbUNlbGw6IG1lcmdlLmN1c3RvbUNlbGwgPz8gb3JpZy5jdXN0b21DZWxsLFxyXG4gICAgICAgIHRyYW5zZm9ybTogbWVyZ2UudHJhbnNmb3JtID8/IG9yaWcudHJhbnNmb3JtLFxyXG4gICAgICAgIG1hcDogbWVyZ2UubWFwID8/IG9yaWcubWFwLFxyXG4gICAgICAgIGNsaWNrOiBtZXJnZS5jbGljayA/PyBvcmlnLmNsaWNrLFxyXG4gICAgICAgIGNsYXNzZXM6IG1lcmdlLmNsYXNzZXMgPz8gb3JpZy5jbGFzc2VzLFxyXG4gICAgICAgIG5vU29ydDogbWVyZ2Uubm9Tb3J0ID8/IG9yaWcubm9Tb3J0LFxyXG4gICAgICAgIHRlbXBsYXRlOiBtZXJnZS50ZW1wbGF0ZSA/PyBvcmlnLnRlbXBsYXRlLFxyXG4gICAgICAgIHRvb2xUaXA6IG1lcmdlLnRvb2xUaXAgPz8gb3JpZy50b29sVGlwLFxyXG4gICAgICAgIHVzZUljb246IG1lcmdlLnVzZUljb24gPz8gb3JpZy51c2VJY29uLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IHNldEluaXRpYWxpemF0aW9uU3RhdGUgPSB0aGlzLnVwZGF0ZXIoIChzdGF0ZSwgaW5pdGlhbGl6YXRpb25TdGF0ZTogIEluaXRpYWxpemF0aW9uU3RhdGUpID0+IHtcclxuICAgIHJldHVybiB7Li4uc3RhdGUsIGluaXRpYWxpemF0aW9uU3RhdGV9O1xyXG4gIH0pO1xyXG5cclxuICBydW5PbmNlV2hlbihwcmVkaWNhdGU6IFByZWRpY2F0ZTxUYWJsZVN0YXRlPiwgZnVuYzogKHN0YXRlOlRhYmxlU3RhdGUpID0+IHZvaWQpIHtcclxuICAgIGNvbnN0IG9icyA9IHRoaXMuc3RhdGUkLnBpcGUob25jZVdoZW4ocHJlZGljYXRlKSk7XHJcbiAgICB0aGlzLm9uKG9icywgKHN0YXRlKSA9PiB7XHJcbiAgICAgIGZ1bmMoc3RhdGUpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblJlYWR5KCBmdW5jOiAoc3RhdGU6IFRhYmxlU3RhdGUpID0+IHZvaWQgKSB7XHJcbiAgICB0aGlzLnJ1bk9uY2VXaGVuKHN0YXRlSXMoSW5pdGlhbGl6YXRpb25TdGF0ZS5SZWFkeSksZnVuYyk7XHJcbiAgfVxyXG5cclxuICByZWFkb25seSBzZXRNZXRhRGF0YSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIG1kOiBNZXRhRGF0YVtdKSA9PiB7XHJcbiAgICBjb25zdCBtZXRhRGF0YSA9IG1kXHJcbiAgICAgIC5yZWR1Y2UoKHByZXY6IERpY3Rpb25hcnk8TWV0YURhdGE+LGN1cnIpID0+IHtcclxuICAgICAgICBpZihwcmV2W2N1cnIua2V5XSkge1xyXG4gICAgICAgICAgcHJldltjdXJyLmtleV0gPSB0aGlzLm1lcmdlTWV0YShwcmV2W2N1cnIua2V5XSxjdXJyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcHJldltjdXJyLmtleV0gPSBjdXJyO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcHJldjtcclxuICAgICAgfSAse30pO1xyXG4gICAgbGV0IHNvcnRlZCA9IHN0YXRlLnNvcnRlZDtcclxuICAgIGlmKHNvcnRlZC5sZW5ndGggPT09IDApIHtcclxuICAgICAgc29ydGVkID0gdGhpcy5jcmVhdGVQcmVTb3J0KG1ldGFEYXRhKTtcclxuICAgIH1cclxuICAgIGNvbnN0IG9yZGVyID0gdGhpcy5pbml0aWFsaXplT3JkZXIoc3RhdGUsIG1ldGFEYXRhKTtcclxuICAgIGNvbnN0IGluaXRpYWxpemF0aW9uU3RhdGUgPSBzdGF0ZS5pbml0aWFsaXphdGlvblN0YXRlID09IEluaXRpYWxpemF0aW9uU3RhdGUuQ3JlYXRlZCA/ICBJbml0aWFsaXphdGlvblN0YXRlLk1ldGFEYXRhTG9hZGVkIDogc3RhdGUuaW5pdGlhbGl6YXRpb25TdGF0ZTtcclxuICAgIHJldHVybiB7IC4uLnN0YXRlLCBpbml0aWFsaXphdGlvblN0YXRlLCBtZXRhRGF0YSwgc29ydGVkLCB1c2VyRGVmaW5lZDogeyAuLi5zdGF0ZS51c2VyRGVmaW5lZCwgb3JkZXI6IG9yZGVyfSB9O1xyXG4gIH0pO1xyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemVPcmRlciA9IChzdGF0ZTpUYWJsZVN0YXRlLG1kczogRGljdGlvbmFyeTxNZXRhRGF0YT4pIDogRGljdGlvbmFyeTxudW1iZXI+ID0+IHtcclxuICAgIGNvbnN0IHZpZXdhYmxlTWV0YURhdGFBcnIgPSBPYmplY3QudmFsdWVzKG1kcykuZmlsdGVyKGEgPT4gYS5maWVsZFR5cGUgIT09IEZpZWxkVHlwZS5IaWRkZW4pO1xyXG4gICAgbGV0IHVzZXJEZWZpbmVkT3JkZXIgPSBzdGF0ZS51c2VyRGVmaW5lZC5vcmRlcjtcclxuICAgIGlmKHZpZXdhYmxlTWV0YURhdGFBcnIuc29tZShtZXRhID0+IHVzZXJEZWZpbmVkT3JkZXJbbWV0YS5rZXldID09IG51bGwpKXtcclxuICAgICAgcmV0dXJuIHt9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdXNlckRlZmluZWRPcmRlcjtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUNvbGxhcHNlSGVhZGVyID0gdGhpcy51cGRhdGVyKChzdGF0ZSk9PntcclxuICAgIGNvbnN0IHRhYmxlU2V0dGluZ3MgPSB7Li4uc3RhdGUucGVyc2lzdGVkVGFibGVTZXR0aW5nc307XHJcbiAgICB0YWJsZVNldHRpbmdzLmNvbGxhcHNlSGVhZGVyID0gIXRhYmxlU2V0dGluZ3MuY29sbGFwc2VIZWFkZXI7XHJcbiAgICByZXR1cm4gKHsuLi5zdGF0ZSwgcGVyc2lzdGVkVGFibGVTZXR0aW5nczogbmV3IFBlcnNpc3RlZFRhYmxlU2V0dGluZ3ModGFibGVTZXR0aW5ncyl9KTtcclxuICB9KVxyXG5cclxuICB0b2dnbGVDb2xsYXBzZUZvb3RlciA9IHRoaXMudXBkYXRlcigoc3RhdGUpPT57XHJcbiAgICBjb25zdCB0YWJsZVNldHRpbmdzID0gey4uLnN0YXRlLnBlcnNpc3RlZFRhYmxlU2V0dGluZ3N9O1xyXG4gICAgdGFibGVTZXR0aW5ncy5jb2xsYXBzZUZvb3RlciA9ICF0YWJsZVNldHRpbmdzLmNvbGxhcHNlRm9vdGVyO1xyXG4gICAgcmV0dXJuICh7Li4uc3RhdGUscGVyc2lzdGVkVGFibGVTZXR0aW5nczogbmV3IFBlcnNpc3RlZFRhYmxlU2V0dGluZ3ModGFibGVTZXR0aW5ncyl9KTtcclxuICB9KTtcclxuXHJcbiAgJGNvbGxhcHNlRm9vdGVyID0gdGhpcy5zZWxlY3RTaWduYWwoc3RhdGUgPT4gc3RhdGUucGVyc2lzdGVkVGFibGVTZXR0aW5ncy5jb2xsYXBzZUZvb3Rlcik7XHJcbiAgJGNvbGxhcHNlSGVhZGVyID0gdGhpcy5zZWxlY3RTaWduYWwoc3RhdGUgPT4gc3RhdGUucGVyc2lzdGVkVGFibGVTZXR0aW5ncy5jb2xsYXBzZUhlYWRlcik7XHJcblxyXG4gIGFkZEdyb3VwQnlLZXkgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBtZXRhRGF0YUtleTogc3RyaW5nKSA9PiAoe1xyXG4gICAgLi4uc3RhdGUsXHJcbiAgICBncm91cEJ5OiBbLi4uc3RhdGUuZ3JvdXBCeSwgeyBrZXk6IG1ldGFEYXRhS2V5LCBleHBhbmRlZEhlYWRlcnM6IFtdIH1dXHJcbiAgfSkpO1xyXG5cclxuICByZW1vdmVHcm91cEJ5S2V5ID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgZ3JvdXBCeUtleTogc3RyaW5nKSA9PiAoe1xyXG4gICAgLi4uc3RhdGUsXHJcbiAgICBncm91cEJ5OiBzdGF0ZS5ncm91cEJ5LmZpbHRlcihrZXkgPT4gZ3JvdXBCeUtleSAhPT0ga2V5LmtleSlcclxuICB9KSk7XHJcblxyXG4gIHVwZGF0ZUV4cGFuZGVkR3JvdXBzID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgZGF0YToge2tleTogc3RyaW5nLCBncm91cEtleTogc3RyaW5nLCBpc0V4cGFuZGVkOiBib29sZWFufSkgPT4ge1xyXG4gICAgY29uc3QgZ2JrID0gcmVwbGFjZUluQXJyYXlXaXRoQ2xvbmUoc3RhdGUuZ3JvdXBCeSwgayA9PiBrLmtleSA9PT0gZGF0YS5rZXksIGdrID0+IHtcclxuICAgICAgZ2suZXhwYW5kZWRIZWFkZXJzID0gZGF0YS5pc0V4cGFuZGVkID8gWy4uLmdrLmV4cGFuZGVkSGVhZGVycywgZGF0YS5ncm91cEtleV0gOiBnay5leHBhbmRlZEhlYWRlcnMuZmlsdGVyKGcgPT4gZyAhPT0gZGF0YS5ncm91cEtleSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiAoe1xyXG4gICAgICAuLi5zdGF0ZSxcclxuICAgICAgZ3JvdXBCeTogZ2JrXHJcbiAgICB9KX1cclxuICApO1xyXG5cclxuICBleHBhbmRBbGxPZkdyb3VwID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgZGF0YTogeyBncm91cEhlYWRlcnNCeUtleTogRGljdGlvbmFyeTx7IGdyb3VwTmFtZTogc3RyaW5nIH1bXT4gfSkgPT4ge1xyXG4gICAgY29uc3QgbmV3R3JvdXBlZERhdGEgPSBzdGF0ZS5ncm91cEJ5Lm1hcChnYiA9PiAoe1xyXG4gICAgICBrZXk6IGdiLmtleSxcclxuICAgICAgZXhwYW5kZWRIZWFkZXJzOiBkYXRhLmdyb3VwSGVhZGVyc0J5S2V5W2diLmtleV0/Lm1hcChnID0+IGcuZ3JvdXBOYW1lKSA/PyBnYi5leHBhbmRlZEhlYWRlcnNcclxuICAgIH0gYXMgR3JvdXBlZERhdGEpKTtcclxuICAgIHJldHVybiAoeyAuLi5zdGF0ZSwgZ3JvdXBCeTogbmV3R3JvdXBlZERhdGEgfSk7XHJcbiAgfSk7XHJcblxyXG4gIGNvbGxhcHNlQWxsID0gdGhpcy51cGRhdGVyKChzdGF0ZSkgPT4gKHtcclxuICAgIC4uLnN0YXRlLFxyXG4gICAgZ3JvdXBCeTogc3RhdGUuZ3JvdXBCeS5tYXAoZ2IgPT4gKHsga2V5OiBnYi5rZXksIGV4cGFuZGVkSGVhZGVyczogW10gfSkpXHJcbiAgfSkpO1xyXG5cclxuICBjb2xsYXBzZUFsbE9mS2V5ID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgZGF0YTogeyBrZXlzOiBzdHJpbmdbXSB9KSA9PiAoe1xyXG4gICAgLi4uc3RhdGUsXHJcbiAgICBncm91cEJ5OiBzdGF0ZS5ncm91cEJ5Lm1hcChnYiA9PiAoe1xyXG4gICAgICBrZXk6IGdiLmtleSxcclxuICAgICAgZXhwYW5kZWRIZWFkZXJzOiBkYXRhLmtleXMuaW5jbHVkZXMoZ2Iua2V5KSA/IFtdIDogZ2IuZXhwYW5kZWRIZWFkZXJzXHJcbiAgICB9KSlcclxuICB9KSk7XHJcblxyXG4gIGdyb3VwQnlLZXlzJCA9IHRoaXMuc2VsZWN0KHN0YXRlID0+IHN0YXRlLmdyb3VwQnkubWFwKGdiayA9PiBnYmsua2V5KSlcclxuICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkPHN0cmluZ1tdPigocHJldiwgY3VycikgPT4gcHJldi5sZW5ndGggPT09IGN1cnIubGVuZ3RoICYmIGN1cnIuZXZlcnkoKGssaSkgPT4gcHJldltpXSA9PT0gaykpKTtcclxuXHJcbiAgZXhwYW5kZWRHcm91cHMkID0gdGhpcy5zZWxlY3Qoc3RhdGUgPT4gc3RhdGUuZ3JvdXBCeSkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgoYSwgYikgPT4ge1xyXG4gICAgY29uc3QgYWEgPSBhLmZsYXRNYXAoZyA9PiBnLmV4cGFuZGVkSGVhZGVycyk7XHJcbiAgICBjb25zdCBiYiA9IGIuZmxhdE1hcChnID0+IGcuZXhwYW5kZWRIZWFkZXJzKTtcclxuICAgIHJldHVybiBhYS5sZW5ndGggPT09IGJiLmxlbmd0aCAmJiBhYS5ldmVyeSgoaykgPT4gYmIuaW5jbHVkZXMoaykpO1xyXG4gIH0pKTtcclxuICBcclxuICBzZXRUYWJsZVNldHRpbmdzID0gdGhpcy51cGRhdGVyKChzdGF0ZSwgc2V0dGluZ3M6IFRhYmxlQnVpbGRlclNldHRpbmdzKT0+e1xyXG4gICAgY29uc3QgczpUYWJsZVN0YXRlID0ge1xyXG4gICAgICAuLi5zdGF0ZSxcclxuICAgICAgcGVyc2lzdGVkVGFibGVTZXR0aW5ncyA6IHN0YXRlLnBlcnNpc3RlZFRhYmxlU2V0dGluZ3MubWVyZ2Uoc2V0dGluZ3MpLFxyXG4gICAgICBub3RQZXJzaXN0ZWRUYWJsZVNldHRpbmdzIDogc3RhdGUubm90UGVyc2lzdGVkVGFibGVTZXR0aW5ncy5tZXJnZShzZXR0aW5ncylcclxuICAgICAgfTtcclxuICAgIHJldHVybiBzO1xyXG4gIH0pO1xyXG5cclxuICB0YWJsZVNldHRpbmdzID0gdGhpcy5zZWxlY3RTaWduYWwoc3RhdGUgPT4ge1xyXG4gICAgY29uc3QgdHMgOiBOb25GdW5jdGlvblByb3BlcnRpZXM8UGVyc2lzdGVkVGFibGVTZXR0aW5ncyAmIE5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3M+ID1cclxuICAgICAgey4uLnN0YXRlLnBlcnNpc3RlZFRhYmxlU2V0dGluZ3MsIC4uLnN0YXRlLm5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3N9O1xyXG4gICAgcmV0dXJuIHRzO1xyXG4gIH0pO1xyXG5cclxuICB0YWJsZVNldHRpbmdzJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLnRhYmxlU2V0dGluZ3MpO1xyXG5cclxuICBwcm9wcyA9IHRoaXMuc2VsZWN0U2lnbmFsKHMgPT4gcy5wcm9wcyk7XHJcblxyXG4gIHNldExpbmtNYXBzID0gdGhpcy51cGRhdGVyKChzdGF0ZSxtYXBzOiBhbnkpPT57XHJcbiAgICByZXR1cm4gey4uLnN0YXRlLGxpbmtNYXBzOm1hcHN9O1xyXG4gIH0pO1xyXG5cclxuICBnZXRMaW5rSW5mbyA9IChtZDpNZXRhRGF0YSkgPT4gdGhpcy5zZWxlY3RTaWduYWwoc3RhdGUgPT4gc3RhdGUubGlua01hcHNbbWQua2V5XSk7XHJcblxyXG4gIGdldElzRXhwYW5kZWQgPSAoY29sdW1uS2V5OiBzdHJpbmcsIGdyb3VwSGVhZGVyS2V5OiBzdHJpbmcpID0+IHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdFNpZ25hbChzdGF0ZSA9PiAhIXN0YXRlLmdyb3VwQnkuZmlsdGVyKGcgPT4gZy5rZXkgPT09IGNvbHVtbktleSAmJiBnLmV4cGFuZGVkSGVhZGVycy5pbmNsdWRlcyhncm91cEhlYWRlcktleSkpLmxlbmd0aCk7XHJcbiAgfVxyXG4gICRpc1ZpcnR1YWwgPSB0aGlzLnNlbGVjdFNpZ25hbChzdGF0ZSA9PiBzdGF0ZS5ub3RQZXJzaXN0ZWRUYWJsZVNldHRpbmdzLnVzZVZpcnR1YWxTY3JvbGwgPT09IHRydWUgfHwgKHN0YXRlLm5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MudXNlVmlydHVhbFNjcm9sbCBhcyBWaXJ0dWFsU2Nyb2xsT3B0aW9ucyk/LnZpcnR1YWxBc0RlZmF1bHQgfHwgc3RhdGUuc2hvd0FsbCk7XHJcbiAgJHZpZXdUeXBlID0gdGhpcy5zZWxlY3RTaWduYWw8Vmlld1R5cGU+KHN0YXRlID0+IHtcclxuICAgIGNvbnN0IHVzZVBhZ2luYXRvciA9IHN0YXRlLm5vdFBlcnNpc3RlZFRhYmxlU2V0dGluZ3MudXNlUGFnaW5hdG9yO1xyXG4gICAgaWYoc3RhdGUuc2hvd0FsbCB8fCAodGhpcy4kaXNWaXJ0dWFsKCkgJiYgIXVzZVBhZ2luYXRvcikpe1xyXG4gICAgICByZXR1cm4gJ3ZpcnR1YWwgYWxsJztcclxuICAgIH0gZWxzZSBpZih0aGlzLiRpc1ZpcnR1YWwoKSAmJiB1c2VQYWdpbmF0b3IpIHtcclxuICAgICAgcmV0dXJuICd2aXJ0dWFsIHBhZ2luYXRvcic7XHJcbiAgICB9IGVsc2UgaWYodXNlUGFnaW5hdG9yKSB7XHJcbiAgICAgIHJldHVybiAncGFnaW5hdG9yJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnYWxsJztcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgJG9yZGVyZWRDb2RlVmlzaWJsZU1ldGFEYXRhcyA9IHRoaXMuc2VsZWN0U2lnbmFsKFxyXG4gICAgdGhpcy4kbWV0YURhdGFBcnJheSwgKG1kcykgPT4gbWRzLmZpbHRlcihtID0+IG0uZmllbGRUeXBlICE9PSBGaWVsZFR5cGUuSGlkZGVuKSxcclxuICAgIHtlcXVhbDogKGE6IE1ldGFEYXRhW10sYikgPT4gYi5sZW5ndGggPT09IGEubGVuZ3RoICYmIGIuZXZlcnkoKHMsaSkgPT4gYVtpXS5rZXkgPT09IHMua2V5KX1cclxuICApXHJcblxyXG4gICRvcmRlcmVkVmlzaWJsZUNvbHVtbnMgPSB0aGlzLnNlbGVjdFNpZ25hbCh0aGlzLiRvcmRlcmVkQ29kZVZpc2libGVNZXRhRGF0YXMsIHRoaXMuJGhpZGRlbktleXMsXHJcbiAgICAoY3MsIGhpZGRlbktleXMpID0+IGNzLmZpbHRlcihtID0+ICFoaWRkZW5LZXlzLmluY2x1ZGVzKG0ua2V5KSkubWFwKG0gPT4gbS5rZXkpKTtcclxuXHJcbiAgJGN1cnJlbnRQYWdlID0gdGhpcy5zZWxlY3RTaWduYWwoc3RhdGUgPT4gc3RhdGUuY3VycmVudFBhZ2UpO1xyXG4gICRwYWdlU2l6ZSA9IHRoaXMuc2VsZWN0U2lnbmFsKHMgPT4gcy51c2VyRGVmaW5lZD8ucGFnZVNpemUgfHwgcy5wYWdlU2l6ZSk7XHJcblxyXG59XHJcblxyXG5leHBvcnQgY29uc3Qgb3JkZXJlZFN0YXRlVmlzaWJsZU1ldGFEYXRhID0gKHN0YXRlOiBUYWJsZVN0YXRlKSA9PiB7XHJcbiAgY29uc3Qgb3JkZXJlZCA9IG9yZGVyU3RhdGVNZXRhRGF0YShzdGF0ZSk7XHJcbiAgY29uc3Qgb3JkZXJlZFZpc2libGUgPSBvcmRlcmVkXHJcbiAgICAuZmlsdGVyKG1ldGFEYXRhID0+ICFzdGF0ZS5oaWRkZW5LZXlzLmluY2x1ZGVzKG1ldGFEYXRhLmtleSkgJiYgc3RhdGUubWV0YURhdGFbbWV0YURhdGEua2V5XS5maWVsZFR5cGUgIT09IEZpZWxkVHlwZS5IaWRkZW4pO1xyXG4gIHJldHVybiBvcmRlcmVkVmlzaWJsZTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IG9yZGVyZWRDb2RlVmlzaWJsZU1ldGFEYXRhID0gKHN0YXRlOiBUYWJsZVN0YXRlKSA9PlxyXG4gIG9yZGVyU3RhdGVNZXRhRGF0YShzdGF0ZSkuZmlsdGVyKG1kID0+IG1kLmZpZWxkVHlwZSAhPT0gRmllbGRUeXBlLkhpZGRlbik7XHJcblxyXG5leHBvcnQgY29uc3Qgb3JkZXJTdGF0ZU1ldGFEYXRhID0gKHN0YXRlOlRhYmxlU3RhdGUpID0+IHtcclxuICByZXR1cm4gb3JkZXJNZXRhRGF0YShzdGF0ZS5tZXRhRGF0YSwgc3RhdGUudXNlckRlZmluZWQub3JkZXIpO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3Qgb3JkZXJNZXRhRGF0YSA9IChtZXRhRGF0YTogRGljdGlvbmFyeTxNZXRhRGF0YT4sIHVzZXJEZWZpbmVkOiBEaWN0aW9uYXJ5PG51bWJlcj4pID0+IHtcclxuICBjb25zdCB1c2VyT3JkZXJBcnIgPSBPYmplY3QuZW50cmllcyh1c2VyRGVmaW5lZCk7XHJcbiAgcmV0dXJuIHVzZXJPcmRlckFyci5sZW5ndGggP1xyXG4gICBPYmplY3QudmFsdWVzKG1ldGFEYXRhKS5zb3J0KChhLGIpPT4ge1xyXG4gICAgY29uc3Qgb3JkZXJBID0gdXNlckRlZmluZWRbYS5rZXldO1xyXG4gICAgY29uc3Qgb3JkZXJCID0gdXNlckRlZmluZWRbYi5rZXldO1xyXG4gICAgcmV0dXJuIG9yZGVyKG9yZGVyQSwgb3JkZXJCKTtcclxuICB9KVxyXG4gICA6XHJcbiAgIE9iamVjdC52YWx1ZXMobWV0YURhdGEpLnNvcnQoKGEsYik9PiB7XHJcbiAgICBjb25zdCBvcmRlckEgPSBhLm9yZGVyO1xyXG4gICAgY29uc3Qgb3JkZXJCID0gYi5vcmRlcjtcclxuICAgIHJldHVybiBvcmRlcihvcmRlckEsIG9yZGVyQik7XHJcbiAgfSlcclxufVxyXG5cclxuZnVuY3Rpb24gb3JkZXIob3JkZXJBOiBudW1iZXIgfCB1bmRlZmluZWQsIG9yZGVyQjogbnVtYmVyIHwgdW5kZWZpbmVkKXtcclxuICBpZihvcmRlckEgPT0gbnVsbCAmJiBvcmRlckIgPT0gbnVsbCkge1xyXG4gICAgcmV0dXJuIDA7XHJcbiAgfVxyXG4gIGlmKG9yZGVyQSA9PSBudWxsKSB7XHJcbiAgICByZXR1cm4gMTtcclxuICB9XHJcbiAgaWYob3JkZXJCID09IG51bGwpIHtcclxuICAgIHJldHVybiAtMTtcclxuICB9XHJcbiAgcmV0dXJuIG9yZGVyQSAtIG9yZGVyQjtcclxufVxyXG5cclxuZnVuY3Rpb24gY2xlYW5QZXJzaXN0ZWRTdGF0ZShzdGF0ZTogVGFibGVTdGF0ZSxwU3RhdGU6IFBlcnNpc3RlZFRhYmxlU3RhdGUpIHtcclxuICBjb25zdCBtZXRhcyA9IE9iamVjdC52YWx1ZXMoc3RhdGUubWV0YURhdGEpO1xyXG4gIGNvbnN0IGZpbHRlcnMgPSBPYmplY3QudmFsdWVzKHBTdGF0ZS5maWx0ZXJzKS5maWx0ZXIoZmx0ciA9PiBpc0N1c3RvbUZpbHRlcihmbHRyKSB8fCBtZXRhcy5zb21lKG0gPT4gbS5rZXkgPT09IGZsdHIua2V5KSkucmVkdWNlKChvYmo6IGFueSwgZmlsdGVyKSA9PiB7XHJcbiAgICBvYmpbZmlsdGVyLmZpbHRlcklkIV0gPSBwU3RhdGUuZmlsdGVyc1tmaWx0ZXIuZmlsdGVySWQhXTtcclxuICAgIHJldHVybiBvYmo7XHJcbiAgfSwge30pO1xyXG4gIGNvbnN0IHNvcnRlZCA9IHBTdGF0ZS5zb3J0ZWQuZmlsdGVyKHMgPT4gbWV0YXMuc29tZShtID0+IG0ua2V5ID09PSBzLmFjdGl2ZSkpO1xyXG4gIHJldHVybiAoey4uLnBTdGF0ZSxmaWx0ZXJzLHNvcnRlZH0pXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFZpZXdUeXBlID0gJ3ZpcnR1YWwgcGFnaW5hdG9yJyB8ICdwYWdpbmF0b3InIHwgJ3ZpcnR1YWwgYWxsJyB8ICdhbGwnO1xyXG4iXX0=
@@ -90,7 +90,7 @@ export class ColumnBuilderComponent {
90
90
  ? this.state.getLinkInfo(this.metaData)()
91
91
  :
92
92
  this.metaData.fieldType === FieldType.Array
93
- ? this.metaData.additional?.limit || this.tableConfig?.arrayInfo?.arrayStyle
93
+ ? this.metaData.additional?.limit || this.tableConfig?.arrayDefaults?.arrayStyle
94
94
  : undefined;
95
95
  }
96
96
  furtherSetUp() {
@@ -131,4 +131,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
131
131
  type: ViewChild,
132
132
  args: ['body']
133
133
  }] } });
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWJ1aWxkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy9jb2x1bW4tYnVpbGRlci9jb2x1bW4tYnVpbGRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2NvbHVtbi1idWlsZGVyL2NvbHVtbi1idWlsZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQWUsU0FBUyxFQUFxQixRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxSSxPQUFPLEVBQW1CLFNBQVMsRUFBWSxNQUFNLDZCQUE2QixDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWpGLE9BQU8sRUFBdUIscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU5RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXBGLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFD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REEsdWlCRDNCSSxjQUFjLDRuQkFBRSxnQkFBZ0Isb0pBQUUscUJBQXFCLHVGQUFFLFlBQVksNkNBQUUsZUFBZSxvRkFDdEYsMkJBQTJCLDJHQUFFLGNBQWMsK2xCQUFFLGFBQWEsaVBBQUUsYUFBYSxrREFBRSxtQkFBbUIsNEVBQzlGLFNBQVMsNkNBQUUsZ0JBQWdCLDZUQUFFLFlBQVksNEZBQUUsZUFBZSwrQ0FBRSxZQUFZLDRDQUFFLFdBQVcsb0NBUHhFO1lBQ2IsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUU7U0FDckQ7OzJGQVFVLHNCQUFzQjtrQkFkbEMsU0FBUztzQ0FHUyx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQzt3QkFDYixFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRTtxQkFDckQsY0FDVyxJQUFJLFdBQ1A7d0JBQ1AsY0FBYyxFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLFlBQVksRUFBRSxlQUFlO3dCQUN0RiwyQkFBMkIsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxtQkFBbUI7d0JBQzlGLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxXQUFXO3FCQUN0Rjs4QkFTd0IsU0FBUztzQkFBakMsU0FBUzt1QkFBQyxZQUFZO2dCQUNKLFlBQVk7c0JBQTlCLFNBQVM7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIE9uSW5pdCwgUHJlZGljYXRlLCBJbmplY3RvciwgY29tcHV0ZWQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBcnJheUFkZGl0aW9uYWwsIEZpZWxkVHlwZSwgTWV0YURhdGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3JlcG9ydC1kZWYnO1xyXG5pbXBvcnQgeyBNYXRDb2x1bW5EZWYsIE1hdFRhYmxlLCBNYXRUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDdXN0b21DZWxsRGlyZWN0aXZlLCBSZXNpemVDb2x1bW5EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcclxuaW1wb3J0IHsgRmlsdGVySW5mbyB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZmlsdGVyLWluZm8nO1xyXG5pbXBvcnQgeyBUcmFuc2Zvcm1DcmVhdG9yIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNmb3JtLWNyZWF0b3InO1xyXG5pbXBvcnQgeyBUYWJsZVN0b3JlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy90YWJsZS1zdG9yZSc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVGFibGVUZW1wbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90YWJsZS10ZW1wbGF0ZS1zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2RrRHJvcExpc3QsIENES19EUk9QX0xJU1QsIERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICdAbmdyeC9lbnRpdHknO1xyXG5pbXBvcnQgeyBBc3luY1BpcGUsIEN1cnJlbmN5UGlwZSwgRGVjaW1hbFBpcGUsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb25kaXRpb25hbENsYXNzZXNEaXJlY3RpdmUsIEZ1bmN0aW9uUGlwZSwgU3BhY2VDYXNlUGlwZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxpdGllcyc7XHJcbmltcG9ydCB7IE1hdFNvcnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgSGVhZGVyTWVudUNvbXBvbmVudCB9IGZyb20gJy4uL2hlYWRlci1tZW51L2hlYWRlci1tZW51LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgTGV0RGlyZWN0aXZlIH0gZnJvbSAnQG5ncngvY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29sdW1uVG90YWxQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvY29sdW1uLXRvdGFsLnBpcGUnO1xyXG5pbXBvcnQgeyBTdHlsZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi91dGlsaXRpZXMvZGlyZWN0aXZlcy9zdHlsZXInO1xyXG5pbXBvcnQgeyBjb2x1bW5TdHlsZXMgfSBmcm9tICcuL2NvbHVtbi1oZWxwZXJzJztcclxuaW1wb3J0IHsgVGFibGVCdWlsZGVyQ29uZmlnVG9rZW4gfSBmcm9tICcuLi8uLi9jbGFzc2VzL1RhYmxlQnVpbGRlckNvbmZpZyc7XHJcbmltcG9ydCB7IExpbmtJbmZvIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbGluay1jcmVhdG9yLnNlcnZpY2UnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2x1bW4tYnVpbGRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29sdW1uLWJ1aWxkZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICB2aWV3UHJvdmlkZXJzOiBbXHJcbiAgICB7IHByb3ZpZGU6IENES19EUk9QX0xJU1QsIHVzZUV4aXN0aW5nOiBDZGtEcm9wTGlzdCB9LFxyXG4gIF0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBNYXRUYWJsZU1vZHVsZSwgTmdUZW1wbGF0ZU91dGxldCwgUmVzaXplQ29sdW1uRGlyZWN0aXZlLCBGdW5jdGlvblBpcGUsIFN0eWxlckRpcmVjdGl2ZSxcclxuICAgIENvbmRpdGlvbmFsQ2xhc3Nlc0RpcmVjdGl2ZSwgRHJhZ0Ryb3BNb2R1bGUsIE1hdFNvcnRNb2R1bGUsIFNwYWNlQ2FzZVBpcGUsIEhlYWRlck1lbnVDb21wb25lbnQsXHJcbiAgICBBc3luY1BpcGUsIE1hdFRvb2x0aXBNb2R1bGUsIExldERpcmVjdGl2ZSwgQ29sdW1uVG90YWxQaXBlLCBDdXJyZW5jeVBpcGUsIERlY2ltYWxQaXBlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29sdW1uQnVpbGRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHJpdmF0ZSB0cmFuc2Zvcm1DcmVhdG9yID0gaW5qZWN0KFRyYW5zZm9ybUNyZWF0b3IpO1xyXG4gIHByaXZhdGUgdGFibGUgPSBpbmplY3Q8TWF0VGFibGU8YW55Pj4oTWF0VGFibGUpO1xyXG4gIHByaXZhdGUgc3RhdGUgPSBpbmplY3QoVGFibGVTdG9yZSk7XHJcbiAgcHJpdmF0ZSB0ZW1wbGF0ZVNlcnZpY2UgPSBpbmplY3QoVGFibGVUZW1wbGF0ZVNlcnZpY2UpO1xyXG4gIHByb3RlY3RlZCBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XHJcblxyXG4gIEBWaWV3Q2hpbGQoTWF0Q29sdW1uRGVmKSBjb2x1bW5EZWYhOiBNYXRDb2x1bW5EZWY7XHJcbiAgQFZpZXdDaGlsZCgnYm9keScpIGJvZHlUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgdGFibGVDb25maWcgPSBpbmplY3QoVGFibGVCdWlsZGVyQ29uZmlnVG9rZW4pO1xyXG4gIEZpZWxkVHlwZSA9IEZpZWxkVHlwZTtcclxuICBmaWx0ZXIhOiBQYXJ0aWFsPEZpbHRlckluZm8+O1xyXG4gIF9tZXRhRGF0YSE6IE1ldGFEYXRhO1xyXG4gIGdldCBtZXRhRGF0YSgpe1xyXG4gICAgcmV0dXJuIHRoaXMuX21ldGFEYXRhO1xyXG4gIH1cclxuICBzZXQgbWV0YURhdGEobWQ6IE1ldGFEYXRhKXtcclxuICAgIGlmKHRoaXMubWV0YURhdGEgJiYgdGhpcy5tZXRhRGF0YS5maWVsZFR5cGUgIT09IG1kLmZpZWxkVHlwZSl7XHJcbiAgICAgIHRoaXMuX21ldGFEYXRhID0gbWQ7XHJcbiAgICAgIHRoaXMuaW5pdGlhbFNldFVwKCk7XHJcbiAgICAgIHRoaXMuZnVydGhlclNldFVwKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9tZXRhRGF0YSA9IG1kO1xyXG4gICAgfVxyXG4gIH1cclxuICBjdXN0b21DZWxsPzogQ3VzdG9tQ2VsbERpcmVjdGl2ZSA9IHVuZGVmaW5lZDtcclxuICBkYXRhJCE6IE9ic2VydmFibGU8YW55W10+O1xyXG5cclxuICBvdXRlclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBpbm5lclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuICB0cmFuc2Zvcm0hOiAobzogYW55LCAuLi5hcmdzOiBhbnlbXSk9PiBhbnkgO1xyXG5cclxuICBnZXRJbm5lclRlbXBsYXRlKCkgOlRlbXBsYXRlUmVmPGFueT4ge1xyXG4gICAgaWYodGhpcy5tZXRhRGF0YS50ZW1wbGF0ZSkgcmV0dXJuIHRoaXMubWV0YURhdGEudGVtcGxhdGU7XHJcbiAgICBpZiAodGhpcy5jdXN0b21DZWxsPy5UZW1wbGF0ZVJlZikgIHJldHVybiB0aGlzLmN1c3RvbUNlbGwuVGVtcGxhdGVSZWY7XHJcbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZVNlcnZpY2UuZ2V0VGVtcGxhdGUodGhpcy5tZXRhRGF0YSk7XHJcbiAgfVxyXG4gIHNob3dGaWx0ZXJzJCE6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbiAgZ2V0T3V0ZXJUZW1wbGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmN1c3RvbUNlbGw/LmNvbHVtbkRlZj8uY2VsbD8udGVtcGxhdGUgPz8gdGhpcy5ib2R5VGVtcGxhdGU7XHJcbiAgfVxyXG4gIGNsYXNzZXM/OiBEaWN0aW9uYXJ5PFByZWRpY2F0ZTxhbnk+PjtcclxuICBzdHlsZXMgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gY29sdW1uU3R5bGVzKHRoaXMubWV0YURhdGEsIHRoaXMuc3RhdGUuJGdldFVzZXJEZWZpbmVkV2lkdGgodGhpcy5tZXRhRGF0YS5rZXkpKCksIHRoaXMuc3RhdGUudGFibGVTZXR0aW5nc01pbldpZHRoKCkpO1xyXG4gIH0pXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmluaXRpYWxTZXRVcCgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5mdXJ0aGVyU2V0VXAoKTtcclxuICAgIHRoaXMudGFibGUuYWRkQ29sdW1uRGVmKHRoaXMuY29sdW1uRGVmKTtcclxuICB9XHJcblxyXG4gIGluaXRpYWxTZXRVcCgpe1xyXG4gICAgaWYodGhpcy5tZXRhRGF0YS5maWVsZFR5cGUgPT09IEZpZWxkVHlwZS5DdXJyZW5jeSkge1xyXG4gICAgICB0aGlzLmNsYXNzZXMgPSB7XHJcbiAgICAgICAgWyduZWdhdGl2ZS1jdXJyZW5jeSddOiAoZWxlbWVudCkgPT4gZWxlbWVudFt0aGlzLm1ldGFEYXRhLmtleV0gPCAwLFxyXG4gICAgICAgIC4uLnRoaXMubWV0YURhdGEuY2xhc3Nlc1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5jbGFzc2VzID0gdGhpcy5tZXRhRGF0YS5jbGFzc2VzO1xyXG4gICAgfVxyXG4gICAgdGhpcy5maWx0ZXIgPSB7a2V5OiB0aGlzLm1ldGFEYXRhLmtleSwgZmllbGRUeXBlOiB0aGlzLm1ldGFEYXRhLmZpZWxkVHlwZX07XHJcblxyXG4gICAgdGhpcy5zaG93RmlsdGVycyQgPSB0aGlzLnN0YXRlLnRhYmxlU2V0dGluZ3MkLnBpcGUobWFwKHNldHRpbmdzID0+ICEoc2V0dGluZ3MuaGlkZUNvbHVtbkhlYWRlckZpbHRlcnMgfHwgdGhpcy5tZXRhRGF0YS5ub0ZpbHRlcikpKTtcclxuICAgIHRoaXMuYWRkaXRpb25hbCA9IHRoaXMubWV0YURhdGEuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuTGlua1xyXG4gICAgICA/IHRoaXMuc3RhdGUuZ2V0TGlua0luZm8odGhpcy5tZXRhRGF0YSkoKVxyXG4gICAgICA6XHJcbiAgICAgIHRoaXMubWV0YURhdGEuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuQXJyYXlcclxuICAgICAgPyAodGhpcy5tZXRhRGF0YS5hZGRpdGlvbmFsIGFzIEFycmF5QWRkaXRpb25hbCk/LmxpbWl0IHx8IHRoaXMudGFibGVDb25maWc/LmFycmF5SW5mbz8uYXJyYXlTdHlsZVxyXG4gICAgICA6IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGZ1cnRoZXJTZXRVcCgpe1xyXG4gICAgdGhpcy5vdXRlclRlbXBsYXRlID0gdGhpcy5nZXRPdXRlclRlbXBsYXRlKCk7XHJcbiAgICB0aGlzLmlubmVyVGVtcGxhdGUgPSB0aGlzLmdldElubmVyVGVtcGxhdGUoKTtcclxuICAgIHRoaXMudHJhbnNmb3JtID0gdGhpcy50cmFuc2Zvcm1DcmVhdG9yLmNyZWF0ZVRyYW5zZm9ybWVyKHRoaXMubWV0YURhdGEpO1xyXG4gIH1cclxuXHJcbiAgY2VsbENsaWNrZWQoZWxlbWVudDogYW55LCBrZXk6IHN0cmluZykge1xyXG4gICAgaWYodGhpcy5tZXRhRGF0YS5jbGljaykge1xyXG4gICAgICB0aGlzLm1ldGFEYXRhLmNsaWNrKGVsZW1lbnQsa2V5KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFRvb2x0aXAgPSAoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICBpZih0eXBlb2YgdGhpcy5tZXRhRGF0YS50b29sVGlwID09PSAnc3RyaW5nJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5tZXRhRGF0YS50b29sVGlwO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMubWV0YURhdGEudG9vbFRpcCEoZWxlbWVudCk7XHJcbiAgfVxyXG5cclxuICBhZGRpdGlvbmFsOiBMaW5rSW5mbyB8IG51bWJlciB8IHVuZGVmaW5lZDtcclxufVxyXG4iLCI8bmctY29udGFpbmVyIFttYXRDb2x1bW5EZWZdPVwibWV0YURhdGEua2V5XCIgKm5ncnhMZXQ9XCJzdHlsZXMoKSBhcyBzdHlsZXNcIiA+XHJcblxyXG4gIDwhLS0gaGVhZGVyIC0tPlxyXG4gIDxuZy10ZW1wbGF0ZSBtYXRIZWFkZXJDZWxsRGVmICNteUhlYWRlcj5cclxuICAgIDxtYXQtaGVhZGVyLWNlbGwgY2RrRHJhZyBbc3R5bGVdPSdzdHlsZXMuaGVhZGVyJyByZXNpemVDb2x1bW4gW2tleV09XCJtZXRhRGF0YS5rZXlcIiBjbGFzcz1cImNvbHVtbi1oZWFkXCJcclxuICAgICAgW2NsYXNzXT0nbWV0YURhdGEuYWRkaXRpb25hbD8uY29sdW1uUGFydENsYXNzZXM/LmhlYWRlcic+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItY29udGFpbmVyXCIgY2RrRHJhZ0hhbmRsZT5cclxuICAgICAgICBAaWYoIWN1c3RvbUNlbGw/LmNvbHVtbkRlZj8uaGVhZGVyQ2VsbClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIEBpZihtZXRhRGF0YS5maWVsZFR5cGUgIT09IEZpZWxkVHlwZS5Ob3RNYXBwZWQpe1xyXG4gICAgICAgICAgICAgIDxkaXYgbWF0LXNvcnQtaGVhZGVyIFtkaXNhYmxlZF09XCJtZXRhRGF0YS5ub1NvcnRcIiBzdHlsZT1cIndpZHRoOiAxMDAlXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBtZXRhRGF0YS5kaXNwbGF5TmFtZSA/ICBtZXRhRGF0YS5kaXNwbGF5TmFtZSA6ICggbWV0YURhdGEua2V5IHwgc3BhY2VDYXNlICkgfX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfSBAZWxzZSBpZihtZXRhRGF0YS5maWVsZFR5cGUgPT09IEZpZWxkVHlwZS5Ob3RNYXBwZWQpe1xyXG4gICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDogMTAwJVwiPlxyXG4gICAgICAgICAgICAgICAge3sgbWV0YURhdGEuZGlzcGxheU5hbWUgPyAgbWV0YURhdGEuZGlzcGxheU5hbWUgOiAoIG1ldGFEYXRhLmtleSB8IHNwYWNlQ2FzZSApIH19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgQGlmKChzaG93RmlsdGVycyQgfCBhc3luYykpe1xyXG4gICAgICAgICAgICAgIDx0Yi1oZWFkZXItbWVudSAjbWVudSBbbWV0YURhdGFdPSdtZXRhRGF0YScgLz5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBAZWxzZVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21DZWxsIS5jb2x1bW5EZWYhLmhlYWRlckNlbGwudGVtcGxhdGU7IGNvbnRleHQ6IHttZXRhRGF0YTogbWV0YURhdGEsIHN0eWxlczogIHN0eWxlcy5oZWFkZXJ9IFwiPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbWF0LWhlYWRlci1jZWxsPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDwhLS0gYm9keSAtLT5cclxuICA8bmctY29udGFpbmVyICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7XCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwib3V0ZXJUZW1wbGF0ZTsgY29udGV4dDogeyBtZXRhRGF0YTogbWV0YURhdGEsIGVsZW1lbnQ6IGVsZW1lbnQgLCBzdHlsZXM6IHN0eWxlcy5ib2R5LCAkaW1wbGljaXQ6IGVsZW1lbnQgfVwiLz5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctdGVtcGxhdGUgI2JvZHkgbGV0LWVsZW1lbnQ9J2VsZW1lbnQnID5cclxuICAgIDxtYXQtY2VsbCAgW21hdFRvb2x0aXBdPVwibWV0YURhdGEudG9vbFRpcCA/IChnZXRUb29sdGlwIHwgZnVuYyA6IGVsZW1lbnQpIDogJydcIiAgW2NvbmRpdGlvbmFsQ2xhc3Nlc109J21ldGFEYXRhLmNsYXNzZXMnIFtlbGVtZW50XT0nZWxlbWVudCcgW3N0eWxlcl09J3N0eWxlcy5ib2R5JyAoY2xpY2spPSdjZWxsQ2xpY2tlZChlbGVtZW50LCBtZXRhRGF0YS5rZXkpJyA+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbm5lclRlbXBsYXRlOyBjb250ZXh0OiB7IHZhbHVlOiAodHJhbnNmb3JtIHwgZnVuYyA6IGVsZW1lbnQpLCBlbGVtZW50OiBlbGVtZW50LCBhZGRpdGlvbmFsOiBhZGRpdGlvbmFsLCAkaW1wbGljaXQ6IGVsZW1lbnQgfTsgSW5qZWN0b3I6IGluamVjdG9yXCIgLz5cclxuICAgIDwvbWF0LWNlbGw+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgPCEtLSBmb290ZXIgLS0+XHJcbiAgPG5nLXRlbXBsYXRlIG1hdEZvb3RlckNlbGxEZWY+XHJcbiAgICBAaWYoY3VzdG9tQ2VsbD8uY29sdW1uRGVmPy5mb290ZXJDZWxsKXtcclxuICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImN1c3RvbUNlbGwhLmNvbHVtbkRlZiEuZm9vdGVyQ2VsbC50ZW1wbGF0ZTsgY29udGV4dDoge21ldGFEYXRhOiBtZXRhRGF0YSwgZGF0YTogZGF0YSQsIHN0eWxlcyA6IHN0eWxlcy5mb290ZXIgfVwiLz5cclxuICAgIH0gQGVsc2Uge1xyXG4gICAgICA8bWF0LWZvb3Rlci1jZWxsICBbc3R5bGVdPSdzdHlsZXMuZm9vdGVyJyAqbmdyeExldD1cImRhdGEkIGFzIGRhdGFcIiBbY2xhc3NdPSdtZXRhRGF0YS5hZGRpdGlvbmFsPy5jb2x1bW5QYXJ0Q2xhc3Nlcz8uZm9vdGVyJz5cclxuICAgICAgICBAaWYoISFkYXRhPy5sZW5ndGggJiYgbWV0YURhdGEuYWRkaXRpb25hbD8uZm9vdGVyKXtcclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYm9sZFwiPlxyXG4gICAgICAgICAgICBAc3dpdGNoIChtZXRhRGF0YS5maWVsZFR5cGUpIHtcclxuICAgICAgICAgICAgICBAY2FzZSAoRmllbGRUeXBlLkN1cnJlbmN5KSB7IHt7IGRhdGEgfCBjb2x1bW5Ub3RhbDogbWV0YURhdGEgfCBjdXJyZW5jeSB9fSB9XHJcbiAgICAgICAgICAgICAgQGNhc2UgKEZpZWxkVHlwZS5OdW1iZXIpIHsge3sgZGF0YSB8IGNvbHVtblRvdGFsOiBtZXRhRGF0YSB8IG51bWJlciB9fSB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICB9XHJcblxyXG4gICAgICA8L21hdC1mb290ZXItY2VsbD5cclxuICAgIH1cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L25nLWNvbnRhaW5lcj5cclxuIl19
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWJ1aWxkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy9jb2x1bW4tYnVpbGRlci9jb2x1bW4tYnVpbGRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2NvbHVtbi1idWlsZGVyL2NvbHVtbi1idWlsZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQWUsU0FBUyxFQUFxQixRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxSSxPQUFPLEVBQW1CLFNBQVMsRUFBWSxNQUFNLDZCQUE2QixDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWpGLE9BQU8sRUFBdUIscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU5RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXBGLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFD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REEsdWlCRDNCSSxjQUFjLDRuQkFBRSxnQkFBZ0Isb0pBQUUscUJBQXFCLHVGQUFFLFlBQVksNkNBQUUsZUFBZSxvRkFDdEYsMkJBQTJCLDJHQUFFLGNBQWMsK2xCQUFFLGFBQWEsaVBBQUUsYUFBYSxrREFBRSxtQkFBbUIsNEVBQzlGLFNBQVMsNkNBQUUsZ0JBQWdCLDZUQUFFLFlBQVksNEZBQUUsZUFBZSwrQ0FBRSxZQUFZLDRDQUFFLFdBQVcsb0NBUHhFO1lBQ2IsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUU7U0FDckQ7OzJGQVFVLHNCQUFzQjtrQkFkbEMsU0FBUztzQ0FHUyx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQzt3QkFDYixFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRTtxQkFDckQsY0FDVyxJQUFJLFdBQ1A7d0JBQ1AsY0FBYyxFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLFlBQVksRUFBRSxlQUFlO3dCQUN0RiwyQkFBMkIsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxtQkFBbUI7d0JBQzlGLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxXQUFXO3FCQUN0Rjs4QkFTd0IsU0FBUztzQkFBakMsU0FBUzt1QkFBQyxZQUFZO2dCQUNKLFlBQVk7c0JBQTlCLFNBQVM7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIE9uSW5pdCwgUHJlZGljYXRlLCBJbmplY3RvciwgY29tcHV0ZWQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBcnJheUFkZGl0aW9uYWwsIEZpZWxkVHlwZSwgTWV0YURhdGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3JlcG9ydC1kZWYnO1xyXG5pbXBvcnQgeyBNYXRDb2x1bW5EZWYsIE1hdFRhYmxlLCBNYXRUYWJsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDdXN0b21DZWxsRGlyZWN0aXZlLCBSZXNpemVDb2x1bW5EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcclxuaW1wb3J0IHsgRmlsdGVySW5mbyB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZmlsdGVyLWluZm8nO1xyXG5pbXBvcnQgeyBUcmFuc2Zvcm1DcmVhdG9yIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNmb3JtLWNyZWF0b3InO1xyXG5pbXBvcnQgeyBUYWJsZVN0b3JlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy90YWJsZS1zdG9yZSc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVGFibGVUZW1wbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90YWJsZS10ZW1wbGF0ZS1zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2RrRHJvcExpc3QsIENES19EUk9QX0xJU1QsIERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XHJcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICdAbmdyeC9lbnRpdHknO1xyXG5pbXBvcnQgeyBBc3luY1BpcGUsIEN1cnJlbmN5UGlwZSwgRGVjaW1hbFBpcGUsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb25kaXRpb25hbENsYXNzZXNEaXJlY3RpdmUsIEZ1bmN0aW9uUGlwZSwgU3BhY2VDYXNlUGlwZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxpdGllcyc7XHJcbmltcG9ydCB7IE1hdFNvcnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcclxuaW1wb3J0IHsgSGVhZGVyTWVudUNvbXBvbmVudCB9IGZyb20gJy4uL2hlYWRlci1tZW51L2hlYWRlci1tZW51LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuaW1wb3J0IHsgTGV0RGlyZWN0aXZlIH0gZnJvbSAnQG5ncngvY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29sdW1uVG90YWxQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvY29sdW1uLXRvdGFsLnBpcGUnO1xyXG5pbXBvcnQgeyBTdHlsZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi91dGlsaXRpZXMvZGlyZWN0aXZlcy9zdHlsZXInO1xyXG5pbXBvcnQgeyBjb2x1bW5TdHlsZXMgfSBmcm9tICcuL2NvbHVtbi1oZWxwZXJzJztcclxuaW1wb3J0IHsgVGFibGVCdWlsZGVyQ29uZmlnVG9rZW4gfSBmcm9tICcuLi8uLi9jbGFzc2VzL1RhYmxlQnVpbGRlckNvbmZpZyc7XHJcbmltcG9ydCB7IExpbmtJbmZvIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbGluay1jcmVhdG9yLnNlcnZpY2UnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2x1bW4tYnVpbGRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29sdW1uLWJ1aWxkZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICB2aWV3UHJvdmlkZXJzOiBbXHJcbiAgICB7IHByb3ZpZGU6IENES19EUk9QX0xJU1QsIHVzZUV4aXN0aW5nOiBDZGtEcm9wTGlzdCB9LFxyXG4gIF0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBNYXRUYWJsZU1vZHVsZSwgTmdUZW1wbGF0ZU91dGxldCwgUmVzaXplQ29sdW1uRGlyZWN0aXZlLCBGdW5jdGlvblBpcGUsIFN0eWxlckRpcmVjdGl2ZSxcclxuICAgIENvbmRpdGlvbmFsQ2xhc3Nlc0RpcmVjdGl2ZSwgRHJhZ0Ryb3BNb2R1bGUsIE1hdFNvcnRNb2R1bGUsIFNwYWNlQ2FzZVBpcGUsIEhlYWRlck1lbnVDb21wb25lbnQsXHJcbiAgICBBc3luY1BpcGUsIE1hdFRvb2x0aXBNb2R1bGUsIExldERpcmVjdGl2ZSwgQ29sdW1uVG90YWxQaXBlLCBDdXJyZW5jeVBpcGUsIERlY2ltYWxQaXBlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29sdW1uQnVpbGRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHJpdmF0ZSB0cmFuc2Zvcm1DcmVhdG9yID0gaW5qZWN0KFRyYW5zZm9ybUNyZWF0b3IpO1xyXG4gIHByaXZhdGUgdGFibGUgPSBpbmplY3Q8TWF0VGFibGU8YW55Pj4oTWF0VGFibGUpO1xyXG4gIHByaXZhdGUgc3RhdGUgPSBpbmplY3QoVGFibGVTdG9yZSk7XHJcbiAgcHJpdmF0ZSB0ZW1wbGF0ZVNlcnZpY2UgPSBpbmplY3QoVGFibGVUZW1wbGF0ZVNlcnZpY2UpO1xyXG4gIHByb3RlY3RlZCBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XHJcblxyXG4gIEBWaWV3Q2hpbGQoTWF0Q29sdW1uRGVmKSBjb2x1bW5EZWYhOiBNYXRDb2x1bW5EZWY7XHJcbiAgQFZpZXdDaGlsZCgnYm9keScpIGJvZHlUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgdGFibGVDb25maWcgPSBpbmplY3QoVGFibGVCdWlsZGVyQ29uZmlnVG9rZW4pO1xyXG4gIEZpZWxkVHlwZSA9IEZpZWxkVHlwZTtcclxuICBmaWx0ZXIhOiBQYXJ0aWFsPEZpbHRlckluZm8+O1xyXG4gIF9tZXRhRGF0YSE6IE1ldGFEYXRhO1xyXG4gIGdldCBtZXRhRGF0YSgpe1xyXG4gICAgcmV0dXJuIHRoaXMuX21ldGFEYXRhO1xyXG4gIH1cclxuICBzZXQgbWV0YURhdGEobWQ6IE1ldGFEYXRhKXtcclxuICAgIGlmKHRoaXMubWV0YURhdGEgJiYgdGhpcy5tZXRhRGF0YS5maWVsZFR5cGUgIT09IG1kLmZpZWxkVHlwZSl7XHJcbiAgICAgIHRoaXMuX21ldGFEYXRhID0gbWQ7XHJcbiAgICAgIHRoaXMuaW5pdGlhbFNldFVwKCk7XHJcbiAgICAgIHRoaXMuZnVydGhlclNldFVwKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9tZXRhRGF0YSA9IG1kO1xyXG4gICAgfVxyXG4gIH1cclxuICBjdXN0b21DZWxsPzogQ3VzdG9tQ2VsbERpcmVjdGl2ZSA9IHVuZGVmaW5lZDtcclxuICBkYXRhJCE6IE9ic2VydmFibGU8YW55W10+O1xyXG5cclxuICBvdXRlclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuICBpbm5lclRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuICB0cmFuc2Zvcm0hOiAobzogYW55LCAuLi5hcmdzOiBhbnlbXSk9PiBhbnkgO1xyXG5cclxuICBnZXRJbm5lclRlbXBsYXRlKCkgOlRlbXBsYXRlUmVmPGFueT4ge1xyXG4gICAgaWYodGhpcy5tZXRhRGF0YS50ZW1wbGF0ZSkgcmV0dXJuIHRoaXMubWV0YURhdGEudGVtcGxhdGU7XHJcbiAgICBpZiAodGhpcy5jdXN0b21DZWxsPy5UZW1wbGF0ZVJlZikgIHJldHVybiB0aGlzLmN1c3RvbUNlbGwuVGVtcGxhdGVSZWY7XHJcbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZVNlcnZpY2UuZ2V0VGVtcGxhdGUodGhpcy5tZXRhRGF0YSk7XHJcbiAgfVxyXG4gIHNob3dGaWx0ZXJzJCE6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcbiAgZ2V0T3V0ZXJUZW1wbGF0ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmN1c3RvbUNlbGw/LmNvbHVtbkRlZj8uY2VsbD8udGVtcGxhdGUgPz8gdGhpcy5ib2R5VGVtcGxhdGU7XHJcbiAgfVxyXG4gIGNsYXNzZXM/OiBEaWN0aW9uYXJ5PFByZWRpY2F0ZTxhbnk+PjtcclxuICBzdHlsZXMgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gY29sdW1uU3R5bGVzKHRoaXMubWV0YURhdGEsIHRoaXMuc3RhdGUuJGdldFVzZXJEZWZpbmVkV2lkdGgodGhpcy5tZXRhRGF0YS5rZXkpKCksIHRoaXMuc3RhdGUudGFibGVTZXR0aW5nc01pbldpZHRoKCkpO1xyXG4gIH0pXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmluaXRpYWxTZXRVcCgpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5mdXJ0aGVyU2V0VXAoKTtcclxuICAgIHRoaXMudGFibGUuYWRkQ29sdW1uRGVmKHRoaXMuY29sdW1uRGVmKTtcclxuICB9XHJcblxyXG4gIGluaXRpYWxTZXRVcCgpe1xyXG4gICAgaWYodGhpcy5tZXRhRGF0YS5maWVsZFR5cGUgPT09IEZpZWxkVHlwZS5DdXJyZW5jeSkge1xyXG4gICAgICB0aGlzLmNsYXNzZXMgPSB7XHJcbiAgICAgICAgWyduZWdhdGl2ZS1jdXJyZW5jeSddOiAoZWxlbWVudCkgPT4gZWxlbWVudFt0aGlzLm1ldGFEYXRhLmtleV0gPCAwLFxyXG4gICAgICAgIC4uLnRoaXMubWV0YURhdGEuY2xhc3Nlc1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5jbGFzc2VzID0gdGhpcy5tZXRhRGF0YS5jbGFzc2VzO1xyXG4gICAgfVxyXG4gICAgdGhpcy5maWx0ZXIgPSB7a2V5OiB0aGlzLm1ldGFEYXRhLmtleSwgZmllbGRUeXBlOiB0aGlzLm1ldGFEYXRhLmZpZWxkVHlwZX07XHJcblxyXG4gICAgdGhpcy5zaG93RmlsdGVycyQgPSB0aGlzLnN0YXRlLnRhYmxlU2V0dGluZ3MkLnBpcGUobWFwKHNldHRpbmdzID0+ICEoc2V0dGluZ3MuaGlkZUNvbHVtbkhlYWRlckZpbHRlcnMgfHwgdGhpcy5tZXRhRGF0YS5ub0ZpbHRlcikpKTtcclxuICAgIHRoaXMuYWRkaXRpb25hbCA9IHRoaXMubWV0YURhdGEuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuTGlua1xyXG4gICAgICA/IHRoaXMuc3RhdGUuZ2V0TGlua0luZm8odGhpcy5tZXRhRGF0YSkoKVxyXG4gICAgICA6XHJcbiAgICAgIHRoaXMubWV0YURhdGEuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuQXJyYXlcclxuICAgICAgPyAodGhpcy5tZXRhRGF0YS5hZGRpdGlvbmFsIGFzIEFycmF5QWRkaXRpb25hbCk/LmxpbWl0IHx8IHRoaXMudGFibGVDb25maWc/LmFycmF5RGVmYXVsdHM/LmFycmF5U3R5bGVcclxuICAgICAgOiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBmdXJ0aGVyU2V0VXAoKXtcclxuICAgIHRoaXMub3V0ZXJUZW1wbGF0ZSA9IHRoaXMuZ2V0T3V0ZXJUZW1wbGF0ZSgpO1xyXG4gICAgdGhpcy5pbm5lclRlbXBsYXRlID0gdGhpcy5nZXRJbm5lclRlbXBsYXRlKCk7XHJcbiAgICB0aGlzLnRyYW5zZm9ybSA9IHRoaXMudHJhbnNmb3JtQ3JlYXRvci5jcmVhdGVUcmFuc2Zvcm1lcih0aGlzLm1ldGFEYXRhKTtcclxuICB9XHJcblxyXG4gIGNlbGxDbGlja2VkKGVsZW1lbnQ6IGFueSwga2V5OiBzdHJpbmcpIHtcclxuICAgIGlmKHRoaXMubWV0YURhdGEuY2xpY2spIHtcclxuICAgICAgdGhpcy5tZXRhRGF0YS5jbGljayhlbGVtZW50LGtleSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRUb29sdGlwID0gKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgaWYodHlwZW9mIHRoaXMubWV0YURhdGEudG9vbFRpcCA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubWV0YURhdGEudG9vbFRpcDtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLm1ldGFEYXRhLnRvb2xUaXAhKGVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgYWRkaXRpb25hbDogTGlua0luZm8gfCBudW1iZXIgfCB1bmRlZmluZWQ7XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciBbbWF0Q29sdW1uRGVmXT1cIm1ldGFEYXRhLmtleVwiICpuZ3J4TGV0PVwic3R5bGVzKCkgYXMgc3R5bGVzXCIgPlxyXG5cclxuICA8IS0tIGhlYWRlciAtLT5cclxuICA8bmctdGVtcGxhdGUgbWF0SGVhZGVyQ2VsbERlZiAjbXlIZWFkZXI+XHJcbiAgICA8bWF0LWhlYWRlci1jZWxsIGNka0RyYWcgW3N0eWxlXT0nc3R5bGVzLmhlYWRlcicgcmVzaXplQ29sdW1uIFtrZXldPVwibWV0YURhdGEua2V5XCIgY2xhc3M9XCJjb2x1bW4taGVhZFwiXHJcbiAgICAgIFtjbGFzc109J21ldGFEYXRhLmFkZGl0aW9uYWw/LmNvbHVtblBhcnRDbGFzc2VzPy5oZWFkZXInPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWNvbnRhaW5lclwiIGNka0RyYWdIYW5kbGU+XHJcbiAgICAgICAgQGlmKCFjdXN0b21DZWxsPy5jb2x1bW5EZWY/LmhlYWRlckNlbGwpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBAaWYobWV0YURhdGEuZmllbGRUeXBlICE9PSBGaWVsZFR5cGUuTm90TWFwcGVkKXtcclxuICAgICAgICAgICAgICA8ZGl2IG1hdC1zb3J0LWhlYWRlciBbZGlzYWJsZWRdPVwibWV0YURhdGEubm9Tb3J0XCIgc3R5bGU9XCJ3aWR0aDogMTAwJVwiPlxyXG4gICAgICAgICAgICAgICAge3sgbWV0YURhdGEuZGlzcGxheU5hbWUgPyAgbWV0YURhdGEuZGlzcGxheU5hbWUgOiAoIG1ldGFEYXRhLmtleSB8IHNwYWNlQ2FzZSApIH19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH0gQGVsc2UgaWYobWV0YURhdGEuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuTm90TWFwcGVkKXtcclxuICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6IDEwMCVcIj5cclxuICAgICAgICAgICAgICAgIHt7IG1ldGFEYXRhLmRpc3BsYXlOYW1lID8gIG1ldGFEYXRhLmRpc3BsYXlOYW1lIDogKCBtZXRhRGF0YS5rZXkgfCBzcGFjZUNhc2UgKSB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIEBpZigoc2hvd0ZpbHRlcnMkIHwgYXN5bmMpKXtcclxuICAgICAgICAgICAgICA8dGItaGVhZGVyLW1lbnUgI21lbnUgW21ldGFEYXRhXT0nbWV0YURhdGEnIC8+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgQGVsc2VcclxuICAgICAgICB7XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tQ2VsbCEuY29sdW1uRGVmIS5oZWFkZXJDZWxsLnRlbXBsYXRlOyBjb250ZXh0OiB7bWV0YURhdGE6IG1ldGFEYXRhLCBzdHlsZXM6ICBzdHlsZXMuaGVhZGVyfSBcIj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L21hdC1oZWFkZXItY2VsbD5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8IS0tIGJvZHkgLS0+XHJcbiAgPG5nLWNvbnRhaW5lciAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50O1wiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm91dGVyVGVtcGxhdGU7IGNvbnRleHQ6IHsgbWV0YURhdGE6IG1ldGFEYXRhLCBlbGVtZW50OiBlbGVtZW50ICwgc3R5bGVzOiBzdHlsZXMuYm9keSwgJGltcGxpY2l0OiBlbGVtZW50IH1cIi8+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLXRlbXBsYXRlICNib2R5IGxldC1lbGVtZW50PSdlbGVtZW50JyA+XHJcbiAgICA8bWF0LWNlbGwgIFttYXRUb29sdGlwXT1cIm1ldGFEYXRhLnRvb2xUaXAgPyAoZ2V0VG9vbHRpcCB8IGZ1bmMgOiBlbGVtZW50KSA6ICcnXCIgIFtjb25kaXRpb25hbENsYXNzZXNdPSdtZXRhRGF0YS5jbGFzc2VzJyBbZWxlbWVudF09J2VsZW1lbnQnIFtzdHlsZXJdPSdzdHlsZXMuYm9keScgKGNsaWNrKT0nY2VsbENsaWNrZWQoZWxlbWVudCwgbWV0YURhdGEua2V5KScgPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5uZXJUZW1wbGF0ZTsgY29udGV4dDogeyB2YWx1ZTogKHRyYW5zZm9ybSB8IGZ1bmMgOiBlbGVtZW50KSwgZWxlbWVudDogZWxlbWVudCwgYWRkaXRpb25hbDogYWRkaXRpb25hbCwgJGltcGxpY2l0OiBlbGVtZW50IH07IEluamVjdG9yOiBpbmplY3RvclwiIC8+XHJcbiAgICA8L21hdC1jZWxsPlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDwhLS0gZm9vdGVyIC0tPlxyXG4gIDxuZy10ZW1wbGF0ZSBtYXRGb290ZXJDZWxsRGVmPlxyXG4gICAgQGlmKGN1c3RvbUNlbGw/LmNvbHVtbkRlZj8uZm9vdGVyQ2VsbCl7XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21DZWxsIS5jb2x1bW5EZWYhLmZvb3RlckNlbGwudGVtcGxhdGU7IGNvbnRleHQ6IHttZXRhRGF0YTogbWV0YURhdGEsIGRhdGE6IGRhdGEkLCBzdHlsZXMgOiBzdHlsZXMuZm9vdGVyIH1cIi8+XHJcbiAgICB9IEBlbHNlIHtcclxuICAgICAgPG1hdC1mb290ZXItY2VsbCAgW3N0eWxlXT0nc3R5bGVzLmZvb3RlcicgKm5ncnhMZXQ9XCJkYXRhJCBhcyBkYXRhXCIgW2NsYXNzXT0nbWV0YURhdGEuYWRkaXRpb25hbD8uY29sdW1uUGFydENsYXNzZXM/LmZvb3Rlcic+XHJcbiAgICAgICAgQGlmKCEhZGF0YT8ubGVuZ3RoICYmIG1ldGFEYXRhLmFkZGl0aW9uYWw/LmZvb3Rlcil7XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJvbGRcIj5cclxuICAgICAgICAgICAgQHN3aXRjaCAobWV0YURhdGEuZmllbGRUeXBlKSB7XHJcbiAgICAgICAgICAgICAgQGNhc2UgKEZpZWxkVHlwZS5DdXJyZW5jeSkgeyB7eyBkYXRhIHwgY29sdW1uVG90YWw6IG1ldGFEYXRhIHwgY3VycmVuY3kgfX0gfVxyXG4gICAgICAgICAgICAgIEBjYXNlIChGaWVsZFR5cGUuTnVtYmVyKSB7IHt7IGRhdGEgfCBjb2x1bW5Ub3RhbDogbWV0YURhdGEgfCBudW1iZXIgfX0gfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgPC9tYXQtZm9vdGVyLWNlbGw+XHJcbiAgICB9XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==