@openziti/ziti-console-lib 0.12.9 → 0.12.11

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 (67) hide show
  1. package/assets/html/index.htm +51 -8
  2. package/assets/styles/global.scss +1 -0
  3. package/assets/svgs/identity-marker.svg +8 -0
  4. package/assets/svgs/router-marker.svg +7 -0
  5. package/esm2022/lib/features/data-table/cells/table-cell-select/table-cell-select.component.mjs +18 -5
  6. package/esm2022/lib/features/data-table/data-table.component.mjs +5 -3
  7. package/esm2022/lib/features/preview-list/preview-list.component.mjs +13 -3
  8. package/esm2022/lib/features/preview-selections/preview-selections.component.mjs +1 -1
  9. package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.component.mjs +1 -1
  10. package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.mjs +1 -1
  11. package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.service.mjs +3 -1
  12. package/esm2022/lib/features/projectable-forms/form-header/form-header.component.mjs +2 -2
  13. package/esm2022/lib/features/projectable-forms/identity/identity-form.component.mjs +35 -13
  14. package/esm2022/lib/features/projectable-forms/service/service-form.component.mjs +4 -4
  15. package/esm2022/lib/features/projectable-forms/service/service-form.service.mjs +51 -12
  16. package/esm2022/lib/features/projectable-forms/service/simple-service/simple-service.component.mjs +16 -5
  17. package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.mjs +1 -1
  18. package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.service.mjs +3 -1
  19. package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.component.mjs +1 -1
  20. package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.service.mjs +4 -2
  21. package/esm2022/lib/features/projectable-forms/session/session-form.component.mjs +3 -3
  22. package/esm2022/lib/features/wrappers/zac-wrapper.service.mjs +2 -2
  23. package/esm2022/lib/pages/auth-policies/auth-policies-page.service.mjs +3 -3
  24. package/esm2022/lib/pages/edge-router-policies/edge-router-policies-page.component.mjs +6 -1
  25. package/esm2022/lib/pages/identities/identities-page.component.mjs +3 -9
  26. package/esm2022/lib/pages/identities/identities-page.service.mjs +50 -1
  27. package/esm2022/lib/pages/services/services-page.component.mjs +2 -13
  28. package/esm2022/lib/pages/services/services-page.service.mjs +35 -2
  29. package/esm2022/lib/pages/terminators/terminators-page.component.mjs +7 -5
  30. package/esm2022/lib/services/ziti-controller-data.service.mjs +4 -4
  31. package/esm2022/lib/services/ziti-data.service.mjs +1 -1
  32. package/esm2022/lib/shared/list-page-component.class.mjs +4 -1
  33. package/esm2022/lib/shared/list-page-service.class.mjs +5 -2
  34. package/esm2022/lib/version.mjs +2 -2
  35. package/fesm2022/openziti-ziti-console-lib.mjs +255 -77
  36. package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
  37. package/lib/features/data-table/cells/table-cell-select/table-cell-select.component.d.ts +2 -6
  38. package/lib/features/data-table/cells/table-cell-select/table-cell-select.component.d.ts.map +1 -1
  39. package/lib/features/data-table/data-table.component.d.ts +1 -0
  40. package/lib/features/data-table/data-table.component.d.ts.map +1 -1
  41. package/lib/features/preview-list/preview-list.component.d.ts +3 -1
  42. package/lib/features/preview-list/preview-list.component.d.ts.map +1 -1
  43. package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.service.d.ts.map +1 -1
  44. package/lib/features/projectable-forms/identity/identity-form.component.d.ts +1 -0
  45. package/lib/features/projectable-forms/identity/identity-form.component.d.ts.map +1 -1
  46. package/lib/features/projectable-forms/service/service-form.service.d.ts +9 -3
  47. package/lib/features/projectable-forms/service/service-form.service.d.ts.map +1 -1
  48. package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts +1 -5
  49. package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts.map +1 -1
  50. package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.service.d.ts.map +1 -1
  51. package/lib/features/projectable-forms/service-policy/service-policy-form.service.d.ts.map +1 -1
  52. package/lib/pages/edge-router-policies/edge-router-policies-page.component.d.ts.map +1 -1
  53. package/lib/pages/identities/identities-page.component.d.ts +0 -2
  54. package/lib/pages/identities/identities-page.component.d.ts.map +1 -1
  55. package/lib/pages/identities/identities-page.service.d.ts +3 -0
  56. package/lib/pages/identities/identities-page.service.d.ts.map +1 -1
  57. package/lib/pages/services/services-page.component.d.ts +0 -3
  58. package/lib/pages/services/services-page.component.d.ts.map +1 -1
  59. package/lib/pages/services/services-page.service.d.ts +2 -0
  60. package/lib/pages/services/services-page.service.d.ts.map +1 -1
  61. package/lib/services/ziti-controller-data.service.d.ts +1 -1
  62. package/lib/services/ziti-controller-data.service.d.ts.map +1 -1
  63. package/lib/services/ziti-data.service.d.ts +1 -1
  64. package/lib/services/ziti-data.service.d.ts.map +1 -1
  65. package/lib/shared/list-page-component.class.d.ts.map +1 -1
  66. package/lib/shared/list-page-service.class.d.ts.map +1 -1
  67. package/package.json +1 -1
@@ -69,6 +69,7 @@ class DataTableComponent {
69
69
  this.pageChanged = new EventEmitter();
70
70
  this._view = 'list';
71
71
  this.filterOptions = [];
72
+ this.appendAttributeHash = true;
72
73
  this.attributesColumn = '';
73
74
  this.dateTimeColumn = '';
74
75
  this.dateTimeFilterLabel = '';
@@ -284,6 +285,7 @@ class DataTableComponent {
284
285
  }, 100);
285
286
  }
286
287
  else if (type === 'ATTRIBUTE') {
288
+ this.appendAttributeHash = headerComponentParams.appendAttributeHash !== false;
287
289
  this.attributesColumn = columnId;
288
290
  this.roleAttributes = headerComponentParams?.getRoleAttributes();
289
291
  this.namedAttributes = headerComponentParams?.getNamedAttributes();
@@ -371,8 +373,8 @@ class DataTableComponent {
371
373
  label += ', ';
372
374
  value += ', ';
373
375
  }
374
- label += '#' + attr;
375
- value += '%23' + attr;
376
+ label += ((this.appendAttributeHash ? '#' : '') + attr);
377
+ value += ((this.appendAttributeHash ? '%23' : '') + attr);
376
378
  });
377
379
  }
378
380
  else {
@@ -914,4 +916,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
914
916
  }], refreshCount: [{
915
917
  type: Input
916
918
  }] } });
917
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvZGF0YS10YWJsZS9kYXRhLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9kYXRhLXRhYmxlL2RhdGEtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFFRixPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixpQ0FBaUM7QUFDakMsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUE7QUFFM0IsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sc0VBQXNFLENBQUM7QUFDakgsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sb0VBQW9FLENBQUM7QUFDOUcsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sZ0VBQWdFLENBQUM7QUFDeEcsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sdURBQXVELENBQUM7QUFDL0YsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFFekYsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0scURBQXFELENBQUM7QUFFNUYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFFbEMsTUFLYSxrQkFBa0I7SUFRN0IsSUFBYSxPQUFPLENBQUUsRUFBVTtRQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLE9B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RyxXQUFXO3NCQUFwQixNQUFNO2dCQXFIbUMsUUFBUTtzQkFBakQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNkLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFDSyxjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFxQmQsaUJBQWlCO3NCQUE3QixLQUFLO2dCQVNPLFlBQVk7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICAgIENvcHlyaWdodCBOZXRGb3VuZHJ5IEluYy5cblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLy8gSW1wb3J0IHRoZSByZXNpemVkIGV2ZW50IG1vZGVsXG5pbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuXG5pbXBvcnQge1RhYmxlQ29sdW1uRGVmYXVsdENvbXBvbmVudH0gZnJvbSBcIi4vY29sdW1uLWhlYWRlcnMvdGFibGUtY29sdW1uLWRlZmF1bHQvdGFibGUtY29sdW1uLWRlZmF1bHQuY29tcG9uZW50XCI7XG5pbXBvcnQge1RhYmxlQ29sdW1uU2VsZWN0Q29tcG9uZW50fSBmcm9tIFwiLi9jb2x1bW4taGVhZGVycy90YWJsZS1jb2x1bW4tc2VsZWN0L3RhYmxlLWNvbHVtbi1zZWxlY3QuY29tcG9uZW50XCI7XG5pbXBvcnQge1RhYmxlQ29sdW1uTWVudUNvbXBvbmVudH0gZnJvbSBcIi4vY29sdW1uLWhlYWRlcnMvdGFibGUtY29sdW1uLW1lbnUvdGFibGUtY29sdW1uLW1lbnUuY29tcG9uZW50XCI7XG5pbXBvcnQge1RhYmxlQ2VsbFNlbGVjdENvbXBvbmVudH0gZnJvbSBcIi4vY2VsbHMvdGFibGUtY2VsbC1zZWxlY3QvdGFibGUtY2VsbC1zZWxlY3QuY29tcG9uZW50XCI7XG5pbXBvcnQge1RhYmxlQ2VsbE1lbnVDb21wb25lbnR9IGZyb20gXCIuL2NlbGxzL3RhYmxlLWNlbGwtbWVudS90YWJsZS1jZWxsLW1lbnUuY29tcG9uZW50XCI7XG5pbXBvcnQge0RhdGFUYWJsZVNlcnZpY2V9IGZyb20gXCIuL2RhdGEtdGFibGUuc2VydmljZVwiO1xuaW1wb3J0IHtUYWJsZUNlbGxUb2tlbkNvbXBvbmVudH0gZnJvbSBcIi4vY2VsbHMvdGFibGUtY2VsbC10b2tlbi90YWJsZS1jZWxsLXRva2VuLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtEYXRhVGFibGVGaWx0ZXJTZXJ2aWNlLCBGaWx0ZXJPYmp9IGZyb20gXCIuL2RhdGEtdGFibGUtZmlsdGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZGF0YS10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHJvd0RhdGE6IGFueTtcbiAgQElucHV0KCkgZXhwYW5kUm93RGF0YTogYW55O1xuICBASW5wdXQoKSBjb2xsYXBzZVJvd0RhdGE6IGFueTtcbiAgQElucHV0KCkgcm93VmFsaWRhdGlvbjogYW55O1xuICAvLyBASW5wdXQoKSBjb2x1bW5GaWx0ZXJzOiBhbnk7XG4gIEBJbnB1dCgpIGlzVGltZVNlYXJjaEF2YWlsYWJsZTogYm9vbGVhbjtcbiAgQElucHV0KCkgaXNMb2FkaW5nOiBhbnk7XG4gIEBJbnB1dCgpIHNldCB0YWJsZUlkKCBpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5zdmMudGFibGVJZCA9IGlkO1xuICAgIHRoaXMudXBkYXRlRW50aXR5VHlwZUxhYmVsKClcbiAgfVxuICBASW5wdXQoKSBvcHRpb25zID0ge25vU2VsZWN0OiBmYWxzZSwgbm9NZW51OiBmYWxzZX07XG4gIEBJbnB1dCgpIHZhbGlkYXRlU2VydmljZTogYW55O1xuICBASW5wdXQoKSByb3dzVG9nZ2xlZDogYW55O1xuICBASW5wdXQoKSB0YWJsZVJlZnJlc2hDb3VudDogYW55O1xuICBASW5wdXQoKSBzZXQgdmlldyh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fdmlldyA9IHZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHNlcnZlclNpZGVEYXRhU291cmNlOiBhbnk7XG4gIEBJbnB1dCgpIGFsbG93RG93bmxvYWQ6IGJvb2xlYW47XG4gIC8vIEBJbnB1dCgpIGZpbHRlcnM6IGFueTtcbiAgQElucHV0KCkgc3RhcnRDb3VudDogYW55O1xuICBASW5wdXQoKSBlbmRDb3VudDogYW55O1xuICBASW5wdXQoKSB0b3RhbENvdW50OiBhbnk7XG4gIEBJbnB1dCgpIGVtcHR5TXNnOiBhbnk7XG4gIEBJbnB1dCgpIGZpbHRlckFwcGxpZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgbWVudUl0ZW1zOiBhbnkgPSBbXTtcbiAgQElucHV0KCkgaGVhZGVyQWN0aW9uczogYW55ID0gW107XG4gIEBJbnB1dCgpIG5vSXRlbXNDbGFzczogYW55ID0gJ2JhY2tncm91bmQtaW1hZ2U6IHVybChcIi9hc3NldHMvc3Zncy9Ob19DbGllbnRzLnN2Z1wiKSc7XG4gIEBJbnB1dCgpIGVudGl0eVR5cGVOYW1lID0gJ0lkZW50aXRpZXMnO1xuICBASW5wdXQoKSBzaG93Tm9JdGVtc0FkZCA9IHRydWU7XG4gIEBJbnB1dCgpIGN1cnJlbnRQYWdlID0gMTtcbiAgQElucHV0KCkgbm9JdGVtc0ltYWdlID0gJ25vZGF0YSc7XG4gIEBJbnB1dCgpIHJvd0hlaWdodCA9IHRoaXMucmVtVG9QeCgzLjEyNSk7XG4gIEBJbnB1dCgpIGZpbHRlck5hbWUgPSAnbmFtZSc7XG4gIEBJbnB1dCgpIGZpbHRlckNvbHVtbiA9ICduYW1lJztcbiAgQE91dHB1dCgpIGFjdGlvblJlcXVlc3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBhY3Rpb246IHN0cmluZzsgaXRlbT86IGFueSB9PigpO1xuICAvLyBAT3V0cHV0KCkgZmlsdGVyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGdyaWRSZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGRyYWdTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGRyYWdMZWF2ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIF92aWV3ID0gJ2xpc3QnO1xuICBmcmFtZXdvcmtDb21wb25lbnRzO1xuICBncmlkTW9kdWxlcztcbiAgZ3JpZE9wdGlvbnM7XG4gIHZpc2libGVDb2x1bW5zO1xuICBoaWRkZW5Db2x1bW5zO1xuICB2aXNpYmxlQ29sdW1uSWRzO1xuICBoaWRkZW5Db2x1bW5JZHM7XG4gIG1lcmdlZENvbHVtbkRlZmluaXRpb25zO1xuICBvcGVuTWVudTtcbiAgb3BlbkhlYWRlck1lbnU7XG4gIGZpbHRlck9wdGlvbnM6IGFueSA9IFtdO1xuICBzaG93RmlsdGVyT3B0aW9ucztcbiAgc2hvd0RhdGVUaW1lUGlja2VyO1xuICBzaG93VGFnU2VsZWN0b3I7XG4gIGF0dHJpYnV0ZXNDb2x1bW4gPSAnJztcbiAgZGF0ZVRpbWVDb2x1bW4gPSAnJztcbiAgZGF0ZVRpbWVGaWx0ZXJMYWJlbCA9ICcnO1xuICBzZWxlY3RlZFJhbmdlID0gJyc7XG4gIGRhdGVWYWx1ZTtcbiAgbWVudUxlZnQ7XG4gIG1lbnVUb3A7XG4gIGdyaWRSZW5kZXJlZDtcbiAgcmVzaXplSGFuZGxlckluaXQgPSBmYWxzZTtcbiAgcmVzaXplR3JpZENvbHVtbnNEZWJvdW5jZWQ7XG4gIHNlbGVjdGVkSXRlbTogYW55ID0ge1xuICAgIGFjdGlvbkxpc3Q6IFtdLFxuICB9O1xuICBlbnRpdHlUeXBlTGFiZWwgPSAnJ1xuICBjb2x1bW5GaWx0ZXJzOmFueSA9IHt9O1xuICByb2xlQXR0cmlidXRlczogYW55W10gPSBbXTtcbiAgbmFtZWRBdHRyaWJ1dGVzOiBhbnlbXSA9IFtdO1xuICBzZWxlY3RlZFJvbGVBdHRyaWJ1dGVzOiBhbnlbXSA9IFtdO1xuICBzZWxlY3RlZE5hbWVkQXR0cmlidXRlczogYW55W10gPSBbXTtcbiAgLy8gYXBwbGllZEZpbHRlcnMgPSBbXTtcbiAgYXV0b0dyb3VwQ29sdW1uRGVmO1xuICBjdXJyZW50SGVhZGVyQ29tcG9uZW50UGFyYW1zOiBhbnkgPSB7fTtcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgcHVibGljIG1lbnVDb2x1bW5EZWZpbml0aW9uID0ge1xuICAgIGNvbElkOiAneml0aS1hZy1tZW51JyxcbiAgICBmaWVsZDogJ3ppdGktYWctbWVudScsXG4gICAgcmVzaXphYmxlOiBmYWxzZSxcbiAgICB3aWR0aDogdGhpcy5yZW1Ub1B4KDMuMTI1KSxcbiAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgbG9ja1Bvc2l0aW9uOiB0cnVlLFxuICAgIHN1cHByZXNzTW92YWJsZTogdHJ1ZSxcbiAgICBoZWFkZXJDbGFzczogJ21lbnVIZWFkZXInLFxuICAgIGNlbGxDbGFzczogJ3RDb2wgY2VsbE1lbnUnLFxuICAgIGNlbGxSZW5kZXJlcjogJ2NlbGxNZW51Q29tcG9uZW50JyxcbiAgICBjZWxsUmVuZGVyZXJQYXJhbXM6IHtcbiAgICAgIG9wZW5NZW51OiAoJGV2ZW50LCBpdGVtKSA9PiB7XG4gICAgICAgIHRoaXMub3BlbkFjdGlvbk1lbnUoJGV2ZW50LCBpdGVtKTtcbiAgICAgIH0sXG4gICAgICBjbG9zZU1lbnU6IChldmVudCkgPT4ge1xuICAgICAgICB0aGlzLmNsb3NlQWN0aW9uTWVudSgpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIHN1cHByZXNzU2l6ZVRvRml0OiB0cnVlLFxuICAgIHBpbm5lZDogJ3JpZ2h0JyxcbiAgICBoZWFkZXJDb21wb25lbnQ6IFRhYmxlQ29sdW1uTWVudUNvbXBvbmVudCxcbiAgICBoZWFkZXJDb21wb25lbnRQYXJhbXM6IHtcbiAgICAgIG9wZW5IZWFkZXJNZW51OiAoJGV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMub3BlbkhlYWRlckFjdGlvbk1lbnUoJGV2ZW50KTtcbiAgICAgIH0sXG4gICAgICBjbG9zZU1lbnU6IChldmVudCkgPT4ge1xuICAgICAgICB0aGlzLmNsb3NlQWN0aW9uTWVudSgpO1xuICAgICAgfSxcbiAgICB9LFxuICB9O1xuICBwcml2YXRlIF9pbml0aWFsQ29sdW1uRGVmcztcbiAgcHJpdmF0ZSBfcmVmcmVzaENlbGxzRGVib3VuY2VkO1xuICBwcml2YXRlIF9vbkNvbHVtbnNSZXNpemVkRGVib3VuY2VkO1xuICBwcml2YXRlIF9zYXZlQ29sdW1uU3RhdGVEZWJvdW5jZWQ7XG5cbiAgcHJpdmF0ZSBzZWxlY3RDb2x1bW5EZWZpbml0aW9uID0ge1xuICAgIGNvbElkOiAneml0aS1hZy1zZWxlY3RlZCcsXG4gICAgZmllbGQ6ICd6aXRpLWFnLXNlbGVjdGVkJyxcbiAgICBzdXBwcmVzc1NpemVUb0ZpdDogdHJ1ZSxcbiAgICBsb2NrUG9zaXRpb246IHRydWUsXG4gICAgc3VwcHJlc3NNb3ZhYmxlOiB0cnVlLFxuICAgIHJlc2l6YWJsZTogZmFsc2UsXG4gICAgcGlubmVkOiAnbGVmdCcsXG4gICAgd2lkdGg6IHRoaXMucmVtVG9QeCgzLjc1KSxcbiAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgaGVhZGVyQ2xhc3M6ICdzZWxlY3RIZWFkZXInLFxuICAgIGNlbGxDbGFzczogJ3RDb2wnLFxuICAgIGNlbGxSZW5kZXJlcjogJ2NlbGxTZWxlY3RDb21wb25lbnQnLFxuICAgIGNlbGxSZW5kZXJlclBhcmFtczoge1xuICAgICAgdG9nZ2xlSXRlbTogKGl0ZW0pID0+IHtcbiAgICAgICAgaXRlbS5zZWxlY3RlZCA9ICFpdGVtLnNlbGVjdGVkO1xuICAgICAgICB0aGlzLnN2Yy5ncmlkT2JqLmFwaS56aXRpQWxsVG9nZ2xlZCA9IF8uZXZlcnkodGhpcy5yb3dEYXRhLCB7c2VsZWN0ZWQ6IHRydWV9KTtcbiAgICAgICAgXy5kZWZlcigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zdmMuZ3JpZE9iai5hcGkucmVmcmVzaENlbGxzKHtmb3JjZTogdHJ1ZX0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hY3Rpb25SZXF1ZXN0ZWQuZW1pdCh7YWN0aW9uOiAndG9nZ2xlSXRlbScsIGl0ZW06IGl0ZW19KTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICBoZWFkZXJDb21wb25lbnQ6IFRhYmxlQ29sdW1uU2VsZWN0Q29tcG9uZW50LFxuICAgIGhlYWRlckNvbXBvbmVudFBhcmFtczoge1xuICAgICAgdG9nZ2xlQWxsOiAoc2VsZWN0ZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnN2Yy5ncmlkT2JqKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIF8uZm9yRWFjaCh0aGlzLnJvd0RhdGEsIChyb3cpID0+IHtcbiAgICAgICAgICByb3cuc2VsZWN0ZWQgPSBzZWxlY3RlZDtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWN0aW9uUmVxdWVzdGVkLmVtaXQoe2FjdGlvbjogJ3RvZ2dsZUFsbCd9KTtcbiAgICAgICAgXy5kZWZlcigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zdmMuZ3JpZE9iai5hcGkucmVmcmVzaENlbGxzKHtmb3JjZTogdHJ1ZX0pO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcblxuICBAVmlld0NoaWxkKCdjYWxlbmRhcicsIHsgc3RhdGljOiBmYWxzZSB9KSBjYWxlbmRhcjogYW55O1xuICBAVmlld0NoaWxkKCdjb250ZXh0TWVudScpIGNvbnRleHRNZW51O1xuICBAVmlld0NoaWxkKCd0YWJsZUNvbnRhaW5lcicpIHRhYmxlQ29udGFpbmVyOiBFbGVtZW50UmVmO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzdmM6IERhdGFUYWJsZVNlcnZpY2UsIHByaXZhdGUgdGFibGVGaWx0ZXJTZXJ2aWNlOiBEYXRhVGFibGVGaWx0ZXJTZXJ2aWNlKSB7XG4gICAgdGhpcy5yZXNpemVHcmlkQ29sdW1uc0RlYm91bmNlZCA9IF8uZGVib3VuY2UodGhpcy5zdmMucmVzaXplR3JpZENvbHVtbnMuYmluZCh0aGlzLnN2YyksIDIwLCB7bGVhZGluZzogdHJ1ZX0pO1xuICAgIHRoaXMuX3JlZnJlc2hDZWxsc0RlYm91bmNlZCA9IF8uZGVib3VuY2UodGhpcy5zdmMucmVmcmVzaENlbGxzLmJpbmQodGhpcy5zdmMpLCA1MCk7XG4gICAgdGhpcy5fb25Db2x1bW5zUmVzaXplZERlYm91bmNlZCA9IF8uZGVib3VuY2UodGhpcy5zdmMub25Db2x1bW5zUmVzaXplZC5iaW5kKHRoaXMuc3ZjKSwgNDAwKTtcbiAgICB0aGlzLl9zYXZlQ29sdW1uU3RhdGVEZWJvdW5jZWQgPSBfLmRlYm91bmNlKHRoaXMuc3ZjLnNhdmVDb2x1bW5TdGF0ZS5iaW5kKHRoaXMuc3ZjKSwgNDAwKTtcbiAgfVxuXG4gIGhpZGVNZW51SXRlbShtZW51SXRlbSwgc2VsZWN0ZWRJdGVtKSB7XG4gICAgICBpZiAoXy5pc0Z1bmN0aW9uKG1lbnVJdGVtLmhpZGRlbikpIHtcbiAgICAgICAgICByZXR1cm4gbWVudUl0ZW0uaGlkZGVuKHNlbGVjdGVkSXRlbSk7XG4gICAgICB9IGVsc2UgaWYgKF8uaXNCb29sZWFuKG1lbnVJdGVtLmhpZGRlbikpIHtcbiAgICAgICAgICByZXR1cm4gbWVudUl0ZW0uaGlkZGVuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gIXNlbGVjdGVkSXRlbS5hY3Rpb25MaXN0LmluY2x1ZGVzKG1lbnVJdGVtLmFjdGlvbik7XG4gICAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jb2x1bW5EZWZpbml0aW9ucztcblxuICBASW5wdXQoKSBzZXQgY29sdW1uRGVmaW5pdGlvbnModmFsdWU6IGFueSkge1xuICAgIHRoaXMuX2NvbHVtbkRlZmluaXRpb25zID0gdmFsdWU7XG5cbiAgfVxuXG4gIGdldCBzaG93RmlsdGVyQmFyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl92aWV3ICE9PSAndXBsb2FkJyAmJiB0aGlzLl92aWV3ICE9PSAncHJvY2Vzcyc7XG4gIH1cblxuICBASW5wdXQoKSBzZXQgcmVmcmVzaENvdW50KHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAoIXRoaXMuc3ZjLmdyaWRPYmopIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXy5kZWZlcigoKSA9PiB7XG4gICAgICB0aGlzLnN2Yy5ncmlkT2JqLmFwaS5yZWRyYXdSb3dzKCk7XG4gICAgICB0aGlzLnN2Yy5ncmlkT2JqLmFwaS5yZWZyZXNoQ2VsbHMoe2ZvcmNlOiB0cnVlfSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgc2hvd1RhYmxlKCkge1xuICAgIGNvbnN0IF9zaG93VGFibGUgPSB0aGlzLmlzTG9hZGluZyB8fCB0aGlzLmZpbHRlckFwcGxpZWQgfHwgdGhpcy5yb3dEYXRhPy5sZW5ndGggPiAwO1xuICAgIGlmIChfc2hvd1RhYmxlICYmICF0aGlzLnJlc2l6ZUhhbmRsZXJJbml0KSB7XG4gICAgICB0aGlzLl9pbml0R3JpZFJlc2l6ZUhhbmRsZXIoKTtcbiAgICB9XG4gICAgcmV0dXJuIF9zaG93VGFibGU7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZyYW1ld29ya0NvbXBvbmVudHMgPSB7XG4gICAgICBjZWxsU2VsZWN0Q29tcG9uZW50OiBUYWJsZUNlbGxTZWxlY3RDb21wb25lbnQsXG4gICAgICBjZWxsTWVudUNvbXBvbmVudDogVGFibGVDZWxsTWVudUNvbXBvbmVudCxcbiAgICAgIGNlbGxUb2tlbkNvbXBvbmVudDogVGFibGVDZWxsVG9rZW5Db21wb25lbnQsXG4gICAgICBoZWFkZXJDZWxsU2VsZWN0Q29tcG9uZW50OiBUYWJsZUNvbHVtblNlbGVjdENvbXBvbmVudCxcbiAgICAgIGhlYWRlckhlYWRlck1lbnVDb21wb25lbnQ6IFRhYmxlQ29sdW1uTWVudUNvbXBvbmVudCxcbiAgICAgIGhlYWRlckRlZmF1bHRDb21wb25lbnQ6IFRhYmxlQ29sdW1uRGVmYXVsdENvbXBvbmVudCxcbiAgICB9O1xuXG4gICAgdGhpcy5hdXRvR3JvdXBDb2x1bW5EZWYgPSB7XG4gICAgICBmaWVsZDogJ3Byb2Nlc3NUcmVlJyxcbiAgICAgIGhlYWRlck5hbWU6ICdQcm9jZXNzIE5hbWUnLFxuICAgICAgY2VsbFJlbmRlcmVyOiAnY2VsbFJlc291cmNlU3RhdHVzQ29tcG9uZW50JyxcbiAgICAgIHJlc2l6YWJsZTogdHJ1ZSxcbiAgICAgIGNlbGxSZW5kZXJlclBhcmFtczoge3Jlc291cmNlVHlwZTogJ3Byb2Nlc3MtZXhlY3V0aW9uJ30sXG4gICAgICBoZWFkZXJDb21wb25lbnRGcmFtZXdvcms6IFRhYmxlQ29sdW1uRGVmYXVsdENvbXBvbmVudCxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuX2NvbHVtbkRlZmluaXRpb25zKSB7XG4gICAgICB0aGlzLl9hZGRDb2x1bW5FdmVudHMoKTtcbiAgICAgIHRoaXMuX2FkZERlZmF1bHRDb2x1bW5EZWZzKCk7XG4gICAgICB0aGlzLl9zdG9yZUluaXRpYWxDb2x1bW5EZWZzKCk7XG4gICAgICB0aGlzLl9zZXRDb2x1bW5XaWR0aHMoKTtcbiAgICAgIHRoaXMuX3NldENvbHVtbk9yZGVyQW5kVmlzaWJpbGl0eSgpO1xuICAgICAgdGhpcy5faW5pdENvbHVtblZpc2liaWxpdHkoKTtcbiAgICAgIHRoaXMuX2luaXRHcmlkT3B0aW9ucygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN2Yy5ncmlkT2JqICYmIGNoYW5nZXMucm93RGF0YSkge1xuICAgICAgdGhpcy5fcmVmcmVzaENlbGxzRGVib3VuY2VkKGNoYW5nZXMucm93RGF0YSk7XG4gICAgfVxuICB9XG5cbiAgY29sdW1uVmlzaWJpbGl0eUNoYW5nZWQoZXZlbnQpIHtcbiAgICB0aGlzLnNldENvbHVtblZpc2liaWxpdHlDb2x1bW4oZXZlbnQ/LmNvbHVtbiwgZXZlbnQ/LnZpc2libGUpO1xuICB9XG5cbiAgb3BlbkFjdGlvbk1lbnUoZXZlbnQsIGl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IGl0ZW07XG4gICAgdGhpcy5vcGVuTWVudSA9IHRydWU7XG4gICAgXy5kZWxheSgoKSA9PiB7XG4gICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmNvbnRleHRNZW51Py5uYXRpdmVFbGVtZW50Py5vZmZzZXRIZWlnaHQgfHwgMTIwO1xuICAgICAgY29uc3Qgd2luZG93T2Zmc2V0ID0gd2luZG93LmlubmVySGVpZ2h0IC0gZXZlbnQuY2xpZW50WTtcbiAgICAgIGNvbnN0IG1lbnVPZmZzZXQgPSB3aW5kb3dPZmZzZXQgPD0gaGVpZ2h0ID8gaGVpZ2h0IC0gd2luZG93T2Zmc2V0IDogMDtcbiAgICAgIHRoaXMubWVudUxlZnQgPSBldmVudC5jbGllbnRYIC0gMTAwO1xuICAgICAgdGhpcy5tZW51VG9wID0gZXZlbnQuY2xpZW50WSArIDUgLSBtZW51T2Zmc2V0O1xuICAgIH0sIDEwKTtcbiAgfVxuXG4gIG9uR3JpZFJlYWR5KHBhcmFtcykge1xuICAgIHRoaXMuZ3JpZFJlYWR5LmVtaXQocGFyYW1zKTtcbiAgfVxuXG4gIHJlc2V0VGFibGVDb2x1bW5zKCkge1xuICAgIGlmICghdGhpcy5zdmMuZ3JpZE9iaikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm1lcmdlZENvbHVtbkRlZmluaXRpb25zID0gXy5jbG9uZURlZXAodGhpcy5faW5pdGlhbENvbHVtbkRlZnMpO1xuICAgIHRoaXMuc3ZjLmdyaWRPYmouYXBpLnNldENvbHVtbkRlZnModGhpcy5tZXJnZWRDb2x1bW5EZWZpbml0aW9ucyk7XG4gICAgdGhpcy5zdmMucmVzZXRDb29raWVDb25maWcoKTtcbiAgICB0aGlzLnN2Yy5ncmlkT2JqLmFwaS5yZXNldENvbHVtblN0YXRlKCk7XG4gICAgXy5kZWZlcigoKSA9PiB7XG4gICAgICB0aGlzLl91cGRhdGVIaWRkZW5Db2x1bW5zKCk7XG4gICAgICB0aGlzLnN2Yy5yZXNpemVHcmlkQ29sdW1ucygpO1xuICAgIH0pO1xuICB9XG5cbiAgb3BlbkhlYWRlckFjdGlvbk1lbnUoZXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLm1lbnVMZWZ0ID0gZXZlbnQuY2xpZW50WCAtIDE1MDtcbiAgICB0aGlzLm1lbnVUb3AgPSBldmVudC5jbGllbnRZICsgNTtcbiAgICBfLmRlbGF5KCgpID0+IHtcbiAgICAgIHRoaXMub3BlbkhlYWRlck1lbnUgPSB0cnVlO1xuICAgIH0sIDEwMCk7XG4gIH1cblxuICBjbG9zZUFjdGlvbk1lbnUoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSB7XG4gICAgICBhY3Rpb25MaXN0OiBbXSxcbiAgICB9O1xuICAgIHRoaXMub3Blbk1lbnUgPSBmYWxzZTtcbiAgICB0aGlzLm9wZW5IZWFkZXJNZW51ID0gZmFsc2U7XG4gIH1cblxuICBvcGVuSGVhZGVyRmlsdGVyKGV2ZW50LCBvcHRpb25zLCB0eXBlLCBjb2x1bW5JZCwgZmlsdGVyTGFiZWwsIGhlYWRlckNvbXBvbmVudFBhcmFtcyk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVyT3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy5tZW51TGVmdCA9IGV2ZW50LmNsaWVudFg7XG4gICAgdGhpcy5tZW51VG9wID0gZXZlbnQuY2xpZW50WSArIDEwO1xuICAgIGlmICh0eXBlID09PSAnREFURVRJTUUnKSB7XG4gICAgICB0aGlzLmRhdGVUaW1lQ29sdW1uID0gY29sdW1uSWQ7XG4gICAgICB0aGlzLmRhdGVUaW1lRmlsdGVyTGFiZWwgPSBmaWx0ZXJMYWJlbCB8fCAnRGF0ZTogJztcbiAgICAgIF8uZGVsYXkoKCkgPT4ge1xuICAgICAgICB0aGlzLnNob3dEYXRlVGltZVBpY2tlciA9IHRydWU7XG4gICAgICB9LCAxMCk7XG4gICAgICBfLmRlbGF5KCgpID0+IHtcbiAgICAgICAgdGhpcy5jYWxlbmRhci50b2dnbGUoKTtcbiAgICAgIH0sIDEwMCk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnQVRUUklCVVRFJykge1xuICAgICAgdGhpcy5hdHRyaWJ1dGVzQ29sdW1uID0gY29sdW1uSWQ7XG4gICAgICB0aGlzLnJvbGVBdHRyaWJ1dGVzID0gaGVhZGVyQ29tcG9uZW50UGFyYW1zPy5nZXRSb2xlQXR0cmlidXRlcygpO1xuICAgICAgdGhpcy5uYW1lZEF0dHJpYnV0ZXMgPSBoZWFkZXJDb21wb25lbnRQYXJhbXM/LmdldE5hbWVkQXR0cmlidXRlcygpO1xuICAgICAgdGhpcy5zZWxlY3RlZFJvbGVBdHRyaWJ1dGVzID0gaGVhZGVyQ29tcG9uZW50UGFyYW1zLmdldFNlbGVjdGVkUm9sZUF0dHJpYnV0ZXMoKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWROYW1lZEF0dHJpYnV0ZXMgPSBoZWFkZXJDb21wb25lbnRQYXJhbXMuZ2V0U2VsZWN0ZWROYW1lZEF0dHJpYnV0ZXMoKTtcbiAgICAgIHRoaXMuZGF0ZVRpbWVGaWx0ZXJMYWJlbCA9IGZpbHRlckxhYmVsO1xuICAgICAgdGhpcy5jdXJyZW50SGVhZGVyQ29tcG9uZW50UGFyYW1zID0gaGVhZGVyQ29tcG9uZW50UGFyYW1zO1xuICAgICAgXy5kZWxheSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2hvd1RhZ1NlbGVjdG9yID0gdHJ1ZTtcbiAgICAgIH0sIDEwMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIF8uZGVmZXIoKCkgPT4ge1xuICAgICAgICB0aGlzLnNob3dGaWx0ZXJPcHRpb25zID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNldERhdGVSYW5nZUZpbHRlcihyYW5nZSkge1xuICAgIGxldCBzdGFydERhdGU7XG4gICAgbGV0IGxhYmVsO1xuICAgIGxldCBlbmREYXRlID0gbW9tZW50KCk7XG4gICAgbGV0IGNsb3NlQ2FsZW5kYXIgPSB0cnVlO1xuICAgIHRoaXMuc2VsZWN0ZWRSYW5nZSA9IHJhbmdlO1xuICAgIHN3aXRjaCAocmFuZ2UpIHtcbiAgICAgIGNhc2UgJ2hvdXInOlxuICAgICAgICBzdGFydERhdGUgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAnaG91cnMnKTtcbiAgICAgICAgbGFiZWwgPSAnTGFzdCBIb3VyJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdkYXknOlxuICAgICAgICBzdGFydERhdGUgPSBtb21lbnQoKS5zdWJ0cmFjdCgyNCwgJ2hvdXJzJyk7XG4gICAgICAgIGxhYmVsID0gJ0xhc3QgRGF5JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgc3RhcnREYXRlID0gbW9tZW50KCkuc3VidHJhY3QoNywgJ2RheXMnKTtcbiAgICAgICAgbGFiZWwgPSAnTGFzdCBXZWVrJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdtb250aCc6XG4gICAgICAgIHN0YXJ0RGF0ZSA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICdtb250aCcpO1xuICAgICAgICBsYWJlbCA9ICdMYXN0IE1vbnRoJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjdXN0b20nOlxuICAgICAgICBpZiAoIXRoaXMuZGF0ZVZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHN0YXJ0RGF0ZSA9IG1vbWVudCh0aGlzLmRhdGVWYWx1ZVswXSk7XG4gICAgICAgIGlmICh0aGlzLmRhdGVWYWx1ZVsxXSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuZGF0ZVZhbHVlWzFdICE9PSBudWxsKSB7XG4gICAgICAgICAgZW5kRGF0ZSA9IG1vbWVudCh0aGlzLmRhdGVWYWx1ZVsxXSk7XG4gICAgICAgIH1cbiAgICAgICAgbGFiZWwgPSAnQ3VzdG9tJztcbiAgICAgICAgY2xvc2VDYWxlbmRhciA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHN0YXJ0RGF0ZSA9IG1vbWVudCgpLnN1YnRyYWN0KDI0LCAnaG91cnMnKTtcbiAgICAgICAgbGFiZWwgPSAnTGFzdCBEYXknO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgY29uc3Qgc3RhcnREYXRlUmFuZ2UgPSBlbmNvZGVVUklDb21wb25lbnQoc3RhcnREYXRlLnRvSVNPU3RyaW5nKCkpO1xuICAgIGNvbnN0IGVuZERhdGVSYW5nZSA9IGVuY29kZVVSSUNvbXBvbmVudChlbmREYXRlLnRvSVNPU3RyaW5nKCkpO1xuICAgIHRoaXMuY29sdW1uRmlsdGVyc1t0aGlzLmRhdGVUaW1lQ29sdW1uXSA9IFtzdGFydERhdGVSYW5nZSwgZW5kRGF0ZVJhbmdlXTtcblxuICAgIGlmIChjbG9zZUNhbGVuZGFyKSB7XG4gICAgICB0aGlzLmNhbGVuZGFyLnRvZ2dsZSgpO1xuICAgIH1cbiAgICBpZiAocmFuZ2UgIT09ICdjdXN0b20nKSB7XG4gICAgICB0aGlzLmRhdGVWYWx1ZSA9IFtzdGFydERhdGUudG9EYXRlKCksIGVuZERhdGUudG9EYXRlKCldO1xuICAgIH1cbiAgICBjb25zdCBmaWx0ZXJPYmo6IEZpbHRlck9iaiA9IHtcbiAgICAgIGNvbHVtbklkOiB0aGlzLmRhdGVUaW1lQ29sdW1uLFxuICAgICAgdmFsdWU6IFtzdGFydERhdGVSYW5nZSwgZW5kRGF0ZVJhbmdlXSxcbiAgICAgIGxhYmVsOiBsYWJlbCxcbiAgICAgIGZpbHRlck5hbWU6IHRoaXMuZGF0ZVRpbWVGaWx0ZXJMYWJlbCxcbiAgICAgIHR5cGU6ICdEQVRFVElNRSdcbiAgICB9O1xuXG4gICAgdGhpcy50YWJsZUZpbHRlclNlcnZpY2UudXBkYXRlRmlsdGVyKGZpbHRlck9iaik7XG4gIH1cblxuICB0YWdTZWxlY3Rpb25DaGFuZ2VkKGV2ZW50LCBpc1JvbGUpIHtcbiAgICBsZXQgbGFiZWwgPSAnJztcbiAgICBsZXQgdmFsdWUgPSAnJztcbiAgICBpZiAoaXNSb2xlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkTmFtZWRBdHRyaWJ1dGVzID0gW107XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFJvbGVBdHRyaWJ1dGVzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvbGVBdHRyaWJ1dGVzID0gW18ubGFzdCh0aGlzLnNlbGVjdGVkUm9sZUF0dHJpYnV0ZXMpXTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRSb2xlQXR0cmlidXRlcy5mb3JFYWNoKChhdHRyLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgICAgbGFiZWwgKz0gJywgJztcbiAgICAgICAgICB2YWx1ZSArPSAnLCAnO1xuICAgICAgICB9XG4gICAgICAgIGxhYmVsICs9ICcjJyArIGF0dHI7XG4gICAgICAgIHZhbHVlICs9ICclMjMnICsgYXR0cjtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkUm9sZUF0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIGNvbnN0IGF0dHJJZE1hcCA9IHRoaXMuY3VycmVudEhlYWRlckNvbXBvbmVudFBhcmFtcy5nZXROYW1lZEF0dHJpYnV0ZXNNYXAoKTtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkTmFtZWRBdHRyaWJ1dGVzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZE5hbWVkQXR0cmlidXRlcyA9IFtfLmxhc3QodGhpcy5zZWxlY3RlZE5hbWVkQXR0cmlidXRlcyldO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWxlY3RlZE5hbWVkQXR0cmlidXRlcy5mb3JFYWNoKChhdHRyLCBpbmRleCkgPT4ge1xuICAgICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgICAgbGFiZWwgKz0gJywgJztcbiAgICAgICAgICB2YWx1ZSArPSAnLCAnO1xuICAgICAgICB9XG4gICAgICAgIGxhYmVsICs9ICdAJyArIGF0dHI7XG4gICAgICAgIHZhbHVlICs9ICclNDAnICsgYXR0cklkTWFwW2F0dHJdO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGZpbHRlck9iajogRmlsdGVyT2JqID0ge1xuICAgICAgY29sdW1uSWQ6IHRoaXMuYXR0cmlidXRlc0NvbHVtbixcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGxhYmVsOiBsYWJlbCxcbiAgICAgIGZpbHRlck5hbWU6IHRoaXMuZGF0ZVRpbWVGaWx0ZXJMYWJlbCxcbiAgICAgIHR5cGU6ICdBVFRSSUJVVEUnXG4gICAgfTtcbiAgICB0aGlzLmN1cnJlbnRIZWFkZXJDb21wb25lbnRQYXJhbXMuc2V0U2VsZWN0ZWRSb2xlQXR0cmlidXRlcyh0aGlzLnNlbGVjdGVkUm9sZUF0dHJpYnV0ZXMpO1xuICAgIHRoaXMuY3VycmVudEhlYWRlckNvbXBvbmVudFBhcmFtcy5zZXRTZWxlY3RlZE5hbWVkQXR0cmlidXRlcyh0aGlzLnNlbGVjdGVkTmFtZWRBdHRyaWJ1dGVzKTtcbiAgICB0aGlzLnRhYmxlRmlsdGVyU2VydmljZS51cGRhdGVGaWx0ZXIoZmlsdGVyT2JqKTtcbiAgfVxuXG4gIGFwcGx5RmlsdGVyKGV2ZW50LCBmaWx0ZXIpIHtcbiAgICB0aGlzLnRhYmxlRmlsdGVyU2VydmljZS51cGRhdGVGaWx0ZXIoZmlsdGVyKTtcbiAgICB0aGlzLmNsb3NlSGVhZGVyRmlsdGVyKGV2ZW50KTtcbiAgfVxuXG4gIGNsb3NlSGVhZGVyRmlsdGVyKGV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5zaG93RmlsdGVyT3B0aW9ucyA9IGZhbHNlO1xuICB9XG5cbiAgY2xvc2VEYXRlVGltZShldmVudCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0RhdGVUaW1lUGlja2VyID0gZmFsc2U7XG4gIH1cblxuICBjbG9zZVRhZ1NlbGVjdG9yKGV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5zaG93VGFnU2VsZWN0b3IgPSBmYWxzZTtcbiAgfVxuXG4gIG9wZW5DcmVhdGUoKSB7XG4gICAgdGhpcy5hY3Rpb25SZXF1ZXN0ZWQuZW1pdCh7YWN0aW9uOiAnY3JlYXRlJ30pO1xuICB9XG5cbiAgYW55U2VsZWN0ZWQoKSB7XG4gICAgcmV0dXJuIF8uc29tZSh0aGlzLnJvd0RhdGEsIHtzZWxlY3RlZDogdHJ1ZX0pO1xuICB9XG5cbiAgc2hvd0Rvd25sb2FkKCkge1xuICAgIHJldHVybiB0aGlzLmFsbG93RG93bmxvYWQgJiYgdGhpcy5fdmlldyAhPT0gJ3Byb2Nlc3MnO1xuICB9XG5cbiAgX2luaXRHcmlkUmVzaXplSGFuZGxlcigpIHtcbiAgICBpZiAoIXRoaXMudGFibGVDb250YWluZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoZW50cmllcyA9PiB7XG4gICAgICB0aGlzLnJlc2l6ZUdyaWRDb2x1bW5zRGVib3VuY2VkKCk7XG4gICAgfSk7XG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLnRhYmxlQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMucmVzaXplSGFuZGxlckluaXQgPSB0cnVlO1xuICB9XG5cbiAgX2luaXRHcmlkT3B0aW9ucygpIHtcbiAgICB0aGlzLmdyaWRPcHRpb25zID0ge1xuICAgICAgcGFnaW5hdGlvbjogZmFsc2UsXG4gICAgICByb3dTZWxlY3Rpb246ICdzaW5nbGUnLFxuICAgICAgcm93Q2xhc3M6ICd6aXRpLXRhYmxlLXJvdycsXG4gICAgICByb3dIZWlnaHQ6IHRoaXMucm93SGVpZ2h0LFxuICAgICAgaW1tdXRhYmxlRGF0YTogdHJ1ZSxcbiAgICAgIHN1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb246IHRydWUsXG4gICAgICBzdXBwcmVzc0hvcml6b250YWxTY3JvbGw6IGZhbHNlLFxuICAgICAgc3RvcEVkaXRpbmdXaGVuR3JpZExvc2VzRm9jdXM6IHRydWUsXG4gICAgICBzdXBwcmVzc1Byb3BlcnR5TmFtZXNDaGVjazogdHJ1ZSxcbiAgICAgIGFuaW1hdGVSb3dzOiB0cnVlLFxuICAgICAgZGVmYXVsdENvbERlZjoge1xuICAgICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICAgIGZpbHRlcjogZmFsc2UsIC8vIHNldCBmaWx0ZXJpbmcgb24gZm9yIGFsbCBjb2x1bW5zXG4gICAgICB9LFxuICAgICAgb25Sb3dEcmFnTW92ZTogKHBhcmFtcykgPT4ge1xuICAgICAgICB0aGlzLmRyYWdTdGFydC5lbWl0KHBhcmFtcyk7XG4gICAgICB9LFxuICAgICAgb25Sb3dEcmFnTGVhdmU6IChwYXJhbXMpID0+IHtcbiAgICAgICAgdGhpcy5kcmFnTGVhdmUuZW1pdChwYXJhbXMpO1xuICAgICAgfSxcbiAgICAgIG9uUm93RHJhZ0VuZDogKCkgPT4ge1xuICAgICAgICAkKCcuYXR0cmlidXRlLWl0ZW0nKS5zaG93KCk7XG4gICAgICAgICQoJy5kcmFnLWhvdmVyJykucmVtb3ZlQ2xhc3MoJ2RyYWctaG92ZXInKTtcbiAgICAgICAgJCgnI0NvbHVtblZpc2liaWxpdHlIZWFkZXInKS50cmlnZ2VyKCdjbGljaycpO1xuICAgICAgICAkKCcubmV3LWF0dHJpYnV0ZS10YXJnZXQnKS5oaWRlKCk7XG4gICAgICB9LFxuICAgICAgcm93Q2xhc3NSdWxlczoge1xuICAgICAgICAvLyByb3cgc3R5bGUgZnVuY3Rpb25cbiAgICAgICAgJ3Jvdy1pbnZhbGlkJzogZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgICAgIHJldHVybiBfLmdldChwYXJhbXMsICdkYXRhLmludmFsaWQnKTtcbiAgICAgICAgfSxcbiAgICAgICAgJ3Jvdy1jb3BpZWQnOiBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICAgICAgcmV0dXJuIF8uZ2V0KHBhcmFtcywgJ2RhdGEuY29waWVkJyk7XG4gICAgICAgIH0sXG4gICAgICAgICdyb3ctY2hpbGQtc3ViLXByb2Nlc3MnOiBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgcGFyYW1zLmFwaS52aWV3ID09PSAncHJvY2VzcycgJiZcbiAgICAgICAgICAgICAgIV8uZ2V0KHBhcmFtcywgJ2RhdGEuaXNSb290JykgJiZcbiAgICAgICAgICAgICAgIV8uaXNFbXB0eShfLmdldChwYXJhbXMsICdkYXRhLnN1YnByb2Nlc3NJZCcpKVxuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgICdyb3ctY2hpbGQnOiBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgKHBhcmFtcy5hcGkudmlldyA9PT0gJ3Byb2Nlc3MnIHx8IHBhcmFtcy5hcGkudmlldyA9PT0gJ3VzZXItcm9sZXMnKSAmJlxuICAgICAgICAgICAgICAhXy5nZXQocGFyYW1zLCAnZGF0YS5pc1Jvb3QnKSAmJlxuICAgICAgICAgICAgICAhXy5pc0VtcHR5KF8uZ2V0KHBhcmFtcywgJ2RhdGEucGFyZW50SWQnKSlcbiAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICAncm93LWNoaWxkLXNlY29uZCc6IGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICBwYXJhbXMuYXBpLnZpZXcgPT09ICdwcm9jZXNzJyAmJlxuICAgICAgICAgICAgICAhXy5nZXQocGFyYW1zLCAnZGF0YS5pc1Jvb3QnKSAmJlxuICAgICAgICAgICAgICBfLmdldChwYXJhbXMsICdkYXRhLmlzUGFyYWxsZWwnKVxuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgICdyb3ctY2hpbGQtZXZlbic6IGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAocGFyYW1zLmFwaS52aWV3ID09PSAncHJvY2VzcycgfHwgcGFyYW1zLmFwaS52aWV3ID09PSAndXNlci1yb2xlcycpICYmXG4gICAgICAgICAgICAgIF8uZ2V0KHBhcmFtcywgJ2RhdGEucGFyZW50SW5kZXgnKSAlIDIgPiAwXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgJ3Jvdy1jaGlsZC1vZGQnOiBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgKHBhcmFtcy5hcGkudmlldyA9PT0gJ3Byb2Nlc3MnIHx8IHBhcmFtcy5hcGkudmlldyA9PT0gJ3VzZXItcm9sZXMnKSAmJlxuICAgICAgICAgICAgICBfLmdldChwYXJhbXMsICdkYXRhLnBhcmVudEluZGV4JykgJSAyID09PSAwXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgJ3Jvdy1jaGlsZC13YXJuJzogZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgICAgIHJldHVybiBwYXJhbXMuYXBpLnZpZXcgPT09ICdwcm9jZXNzJyAmJiBfLmdldChwYXJhbXMsICdkYXRhLnN0YXRlJykgPT09ICdXQVJOSU5HJztcbiAgICAgICAgfSxcbiAgICAgICAgJ3Jvdy1jaGlsZC1oZWFkZXInOiBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICAgICAgcmV0dXJuIHBhcmFtcy5hcGkudmlldyA9PT0gJ3Byb2Nlc3MnICYmIF8uZ2V0KHBhcmFtcywgJ2RhdGEucm93VHlwZScpID09PSAnc3RlcC1oZWFkZXInO1xuICAgICAgICB9LFxuICAgICAgICAncm93LXJvbGUtaXRlbSc6IGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgICByZXR1cm4gXy5nZXQocGFyYW1zLCAnZGF0YS5yb2xlSXRlbScpO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGdldFJvd0hlaWdodDogKHBhcmFtcykgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yZW1Ub1B4KDMuMTI1KTtcbiAgICAgIH0sXG4gICAgICBvbkNlbGxFZGl0aW5nU3RvcHBlZDogKGV2ZW50T2JqKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy52YWxpZGF0ZVNlcnZpY2UpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmllbGQgPSBfLmdldChldmVudE9iaiwgJ2NvbERlZi5maWVsZCcsICcnKTtcbiAgICAgICAgaWYgKF8uaW5jbHVkZXMoZmllbGQudG9Mb3dlckNhc2UoKSwgJ2F0dHJpYnV0ZScpKSB7XG4gICAgICAgICAgY29uc3QgbmV3VmFsID0gZXZlbnRPYmoubmV3VmFsdWUuc3BsaXQoJywnKTtcbiAgICAgICAgICBfLnNldChldmVudE9iaiwgYGRhdGEuJHtmaWVsZH1gLCBuZXdWYWwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIF8uc2V0KGV2ZW50T2JqLCBgZGF0YS4ke2ZpZWxkfWAsIGV2ZW50T2JqLm5ld1ZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl92YWxpZGF0ZVRhYmxlKGV2ZW50T2JqKTtcbiAgICAgIH0sXG4gICAgICBnZXRSb3dOb2RlSWQ6IChkYXRhKSA9PiBkYXRhLm5hbWUsXG4gICAgICBvbkJvZHlTY3JvbGw6IChzY3JvbGxlcikgPT4ge1xuICAgICAgICB0aGlzLl9oYW5kbGVUYWJsZVNjcm9sbChzY3JvbGxlcik7XG4gICAgICB9LFxuICAgICAgb25HcmlkUmVhZHk6IChncmlkKSA9PiB7XG4gICAgICAgIGdyaWQuYXBpLnppdGlBbGxUb2dnbGVkID0gZmFsc2U7XG4gICAgICAgIGdyaWQuYXBpLnppdGlIaWRlQ29sdW1uID0gdGhpcy5zZXRDb2x1bW5WaXNpYmlsaXR5Q29sdW1uLmJpbmQodGhpcyk7XG4gICAgICAgIGdyaWQuYXBpLnZhbGlkYXRlVGFibGUgPSB0aGlzLl92YWxpZGF0ZVRhYmxlLmJpbmQodGhpcyk7XG4gICAgICAgIGdyaWQuYXBpLnZpZXcgPSB0aGlzLl92aWV3O1xuICAgICAgICBncmlkLmFwaS56aXRpUm93RGF0YSA9IHRoaXMucm93RGF0YTtcbiAgICAgICAgZ3JpZC5hcGkub3BlbkhlYWRlckZpbHRlciA9IHRoaXMub3BlbkhlYWRlckZpbHRlci5iaW5kKHRoaXMpO1xuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICAgICAgZ3JpZC5hcGkucm93c1RvZ2dsZWQgPSB0aGlzLnJvd3NUb2dnbGVkID8gdGhpcy5yb3dzVG9nZ2xlZC5iaW5kKHRoaXMpIDogKCkgPT4ge307XG4gICAgICAgIGlmICh0aGlzLnNlcnZlclNpZGVEYXRhU291cmNlKSB7XG4gICAgICAgICAgZ3JpZC5hcGkuc2V0U2VydmVyU2lkZURhdGFzb3VyY2UodGhpcy5zZXJ2ZXJTaWRlRGF0YVNvdXJjZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdmMuZ3JpZE9iaiA9IGdyaWQ7XG4gICAgICAgIF8uZGVmZXIodGhpcy5fYXBwbHlDb2x1bW5TdGF0ZS5iaW5kKHRoaXMpKTtcbiAgICAgIH0sXG4gICAgICBvbkNvbHVtblZpc2libGU6IChldmVudE9iaikgPT4ge1xuICAgICAgICBpZiAoIWV2ZW50T2JqLmNvbHVtbikge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtblZpc2liaWxpdHkoZXZlbnRPYmouY29sdW1uLmNvbERlZi5jb2xJZCwgZXZlbnRPYmoudmlzaWJsZSk7XG4gICAgICAgIGlmIChldmVudE9iai52aXNpYmxlKSB7XG4gICAgICAgICAgdGhpcy5zdmMuZ3JpZE9iai5hcGkubW92ZUNvbHVtbnMoXG4gICAgICAgICAgICAgIFtldmVudE9iai5jb2x1bW4uY29sRGVmLmNvbElkXSxcbiAgICAgICAgICAgICAgdGhpcy5tZXJnZWRDb2x1bW5EZWZpbml0aW9ucy5sZW5ndGggLSAxXG4gICAgICAgICAgKTtcbiAgICAgICAgICBfLmRlZmVyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3ZjLmdyaWRPYmouYXBpLmVuc3VyZUNvbHVtblZpc2libGUoZXZlbnRPYmouY29sdW1uLmNvbERlZi5jb2xJZCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdXBkYXRlR3JpZENvbHVtbnMoKTtcbiAgICAgICAgdGhpcy5zdmMuc2F2ZUNvbHVtblN0YXRlKCk7XG4gICAgICB9LFxuICAgICAgb25GaXJzdERhdGFSZW5kZXJlZDogKGV2ZW50T2JqKSA9PiB7XG4gICAgICAgIHRoaXMuc3ZjLnJlc2l6ZUdyaWRDb2x1bW5zKCk7XG4gICAgICAgIHRoaXMuZ3JpZFJlbmRlcmVkID0gdHJ1ZTtcbiAgICAgIH0sXG4gICAgICBvbkNvbHVtblBpbm5lZDogKGV2ZW50T2JqKSA9PiB7XG4gICAgICAgIGlmICghZXZlbnRPYmouY29sdW1uKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbElkID0gZXZlbnRPYmouY29sdW1uLmNvbERlZi5jb2xJZDtcbiAgICAgICAgY29uc3QgcGlubmVkID0gZXZlbnRPYmoucGlubmVkID09PSAnbGVmdCc7XG4gICAgICAgIHRoaXMubWVyZ2VkQ29sdW1uRGVmaW5pdGlvbnMgPSBfLm1hcCh0aGlzLm1lcmdlZENvbHVtbkRlZmluaXRpb25zLCAoY29sRGVmKSA9PiB7XG4gICAgICAgICAgaWYgKGNvbERlZi5jb2xJZCA9PT0gY29sSWQpIHtcbiAgICAgICAgICAgIGNvbERlZi5sb2NrUG9zaXRpb24gPSBwaW5uZWQ7XG4gICAgICAgICAgICBjb2xEZWYuc3VwcHJlc3NNb3ZhYmxlID0gcGlubmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gY29sRGVmO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fdXBkYXRlR3JpZENvbHVtbnMoKTtcbiAgICAgICAgdGhpcy5zdmMucmVzaXplR3JpZENvbHVtbnMoKTtcbiAgICAgICAgdGhpcy5zdmMuc2F2ZUNvbHVtblN0YXRlKCk7XG4gICAgICB9LFxuICAgICAgb25Db2x1bW5SZXNpemVkOiAoZXZlbnRPYmopID0+IHtcbiAgICAgICAgaWYgKCFldmVudE9iai5jb2x1bW4gfHwgZXZlbnRPYmouc291cmNlID09PSAnc2l6ZUNvbHVtbnNUb0ZpdCcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fb25Db2x1bW5zUmVzaXplZERlYm91bmNlZChldmVudE9iai5jb2x1bW4pO1xuICAgICAgfSxcbiAgICAgIG9uQ29sdW1uTW92ZWQ6IChldmVudE9iaikgPT4ge1xuICAgICAgICB0aGlzLl9zYXZlQ29sdW1uU3RhdGVEZWJvdW5jZWQoKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIF92YWxpZGF0ZVRhYmxlKGV2ZW50T2JqKSB7XG4gICAgdGhpcy5yb3dEYXRhW2V2ZW50T2JqLnJvd0luZGV4XSA9IGV2ZW50T2JqLmRhdGE7XG4gICAgXy5kZWxheSgoKSA9PiB7XG4gICAgICB0aGlzLnZhbGlkYXRlU2VydmljZSh0aGlzLnJvd0RhdGEpO1xuICAgICAgXy5kZWxheSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3ZjLmdyaWRPYmouYXBpLnJlZnJlc2hDZWxscyh7Zm9yY2U6IHRydWV9KTtcbiAgICAgICAgdGhpcy5zdmMuZ3JpZE9iai5hcGkucmVkcmF3Um93cygpO1xuICAgICAgfSwgNTApO1xuICAgIH0sIDUwKTtcbiAgfVxuXG4gIF9hcHBseUNvbHVtblN0YXRlKCkge1xuICAgIGNvbnN0IHRhYmxlU3RhdGVDb29raWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShgeml0aV8ke3RoaXMuc3ZjLnRhYmxlSWR9X3RhYmxlX3N0YXRlYCk7XG4gICAgY29uc3QgdGFibGVTdGF0ZSA9IEpTT04ucGFyc2UodGFibGVTdGF0ZUNvb2tpZSk7XG4gICAgaWYgKHRhYmxlU3RhdGUpIHtcbiAgICAgIHRoaXMuc3ZjLmdyaWRPYmouYXBpLmFwcGx5Q29sdW1uU3RhdGUoe3N0YXRlOiB0YWJsZVN0YXRlfSk7XG4gICAgICB0aGlzLl91cGRhdGVIaWRkZW5Db2x1bW5zKCk7XG4gICAgfVxuICB9XG5cbiAgX2FkZENvbHVtbkV2ZW50cygpIHtcbiAgICB0aGlzLl9jb2x1bW5EZWZpbml0aW9ucyA9IF8ubWFwKHRoaXMuX2NvbHVtbkRlZmluaXRpb25zLCAoY29sRGVmKSA9PiB7XG4gICAgICBjb2xEZWYucGluQ29sdW1uID0gdGhpcy5zdmMucGluQ29sdW1uLmJpbmQodGhpcy5zdmMpO1xuICAgICAgY29sRGVmLmNlbGxDbGFzcyA9IHRoaXMuX2dldENlbGxTdHlsZS5iaW5kKHRoaXMpO1xuICAgICAgcmV0dXJuIGNvbERlZjtcbiAgICB9KTtcbiAgfVxuXG4gIF9nZXRDZWxsU3R5bGUocGFyYW1zKSB7XG4gICAgaWYgKCF0aGlzLnJvd1ZhbGlkYXRpb24gfHwgdGhpcy5yb3dWYWxpZGF0aW9uLmxlbmd0aCA8PSAwKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGNvbnN0IHZhbGlkYXRpb25SZXN1bHQgPSB0aGlzLnJvd1ZhbGlkYXRpb25bcGFyYW1zLm5vZGUucm93SW5kZXhdO1xuICAgIGlmICghdmFsaWRhdGlvblJlc3VsdCB8fCAhdmFsaWRhdGlvblJlc3VsdC5lcnJvcnMpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgY29uc3QgZmllbGQgPSBfLmdldChwYXJhbXMsICdjb2xEZWYuZmllbGQnLCAnJyk7XG4gICAgaWYgKHZhbGlkYXRpb25SZXN1bHQuZXJyb3JzW2ZpZWxkXSkge1xuICAgICAgcmV0dXJuICd6aXRpLXRhYmxlLWNlbGwtZXJyb3InO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgdXBkYXRlQ29sdW1uVmlzaWJpbGl0eShjb2xJZCwgdmlzaWJsZSkge1xuICAgIHRoaXMuX2NvbHVtbkRlZmluaXRpb25zID0gXy5tYXAodGhpcy5fY29sdW1uRGVmaW5pdGlvbnMsIChjb2xEZWYpID0+IHtcbiAgICAgIGlmIChjb2xEZWYuY29sSWQgPT09IGNvbElkKSB7XG4gICAgICAgIGNvbERlZi5oaWRlID0gIXZpc2libGU7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29sRGVmO1xuICAgIH0pO1xuICAgIGZvciAoY29uc3QgY29sRGVmIG9mIHRoaXMubWVyZ2VkQ29sdW1uRGVmaW5pdGlvbnMpIHtcbiAgICAgIGlmIChjb2xEZWYuY29sSWQgPT09IGNvbElkKSB7XG4gICAgICAgIGNvbERlZi5oaWRlID0gIXZpc2libGU7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX3VwZGF0ZUhpZGRlbkNvbHVtbnMoKTtcbiAgICB0aGlzLnN2Yy5yZXNpemVHcmlkQ29sdW1ucygpO1xuICB9XG5cbiAgdXBkYXRlRW50aXR5VHlwZUxhYmVsKCkge1xuICAgIHN3aXRjaCh0aGlzLnN2Yy50YWJsZUlkKSB7XG4gICAgICBjYXNlICdhcGktc2Vzc2lvbnMnOlxuICAgICAgICB0aGlzLmVudGl0eVR5cGVMYWJlbCA9ICdBUEkgU2Vzc2lvbnMnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2F1dGgtcG9saWNpZXMnOlxuICAgICAgICB0aGlzLmVudGl0eVR5cGVMYWJlbCA9ICdBdXRoIFBvbGljaWVzJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjZXJ0aWZpY2F0ZS1hdXRob3JpdGllcyc6XG4gICAgICAgIHRoaXMuZW50aXR5VHlwZUxhYmVsID0gJ0NlcnRpZmljYXRlIEF1dGhvcml0aWVzJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdleHQtand0LXNpZ25lcnMnOlxuICAgICAgICB0aGlzLmVudGl0eVR5cGVMYWJlbCA9ICdFeHRlcm5hbCBKV1QgU2lnbmVycyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaWRlbnRpdGllcyc6XG4gICAgICAgIHRoaXMuZW50aXR5VHlwZUxhYmVsID0gJ0lkZW50aXRpZXMnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3Bvc3R1cmUtY2hlY2tzJzpcbiAgICAgICAgdGhpcy5lbnRpdHlUeXBlTGFiZWwgPSAnUG9zdHVyZSBDaGVja3MnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2VkZ2Utcm91dGVycyc6XG4gICAgICAgIHRoaXMuZW50aXR5VHlwZUxhYmVsID0gJ0VkZ2UgUm91dGVycyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc2VydmljZXMnOlxuICAgICAgICB0aGlzLmVudGl0eVR5cGVMYWJlbCA9ICdTZXJ2aWNlcyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY29uZmlndXJhdGlvbnMnOlxuICAgICAgICB0aGlzLmVudGl0eVR5cGVMYWJlbCA9ICdDb25maWdzJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjb25maWctdHlwZXMnOlxuICAgICAgICB0aGlzLmVudGl0eVR5cGVMYWJlbCA9ICdDb25maWcgVHlwZXMnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NlcnZpY2UtcG9saWNpZXMnOlxuICAgICAgICB0aGlzLmVudGl0eVR5cGVMYWJlbCA9ICdTZXJ2aWNlIFBvbGljaWVzJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdlZGdlLXJvdXRlci1wb2xpY2llcyc6XG4gICAgICAgIHRoaXMuZW50aXR5VHlwZUxhYmVsID0gJ0VkZ2UgUm91dGVyIFBvbGljaWVzJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzZXJ2aWNlLWVkZ2Utcm91dGVyLXBvbGljaWVzJzpcbiAgICAgICAgdGhpcy5lbnRpdHlUeXBlTGFiZWwgPSAnU2VydmljZSBFZGdlIFJvdXRlciBQb2xpY2llcyc7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdzZXNzaW9ucyc6XG4gICAgICAgIHRoaXMuZW50aXR5VHlwZUxhYmVsID0gJ1Nlc3Npb25zJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0ZXJtaW5hdG9ycyc6XG4gICAgICAgIHRoaXMuZW50aXR5VHlwZUxhYmVsID0gJ1Rlcm1pbmF0b3JzJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0cmFuc2l0LXJvdXRlcnMnOlxuICAgICAgICB0aGlzLmVudGl0eVR5cGVMYWJlbCA9ICdUcmFuc2l0IFJvdXRlcnMnO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBzZXRDb2x1bW5WaXNpYmlsaXR5Q29sdW1uKGNvbHVtbiwgdmlzaWJsZSkge1xuICAgIHRoaXMuc3ZjLmdyaWRPYmouYXBpLnNldENvbHVtbnNWaXNpYmxlKFtjb2x1bW4uY29sSWRdLCB2aXNpYmxlKTtcbiAgICB0aGlzLnN2Yy5ncmlkT2JqLmFwaS5yZWZyZXNoSGVhZGVyKCk7XG4gICAgXy5kZWZlcigoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtblZpc2liaWxpdHkoY29sdW1uLmNvbElkLCB2aXNpYmxlKTtcbiAgICB9KTtcbiAgfVxuXG4gIF91cGRhdGVIaWRkZW5Db2x1bW5zKCkge1xuICAgIGNvbnN0IGdyaWRDb2x1bW5EZWZzID0gdGhpcy5zdmMuZ3JpZE9iaj8uYXBpPy5jb2x1bW5Nb2RlbD8uZ3JpZENvbHVtbnM7XG4gICAgY29uc3QgdmlzaWJsZUdyaWRDb2x1bW5zID0gZ3JpZENvbHVtbkRlZnMuZmlsdGVyKChjb2wpID0+IGNvbC52aXNpYmxlKTtcbiAgICBjb25zdCBoaWRkZW5HcmlkQ29sdW1ucyA9IGdyaWRDb2x1bW5EZWZzLmZpbHRlcigoY29sKSA9PiAhY29sLnZpc2libGUpO1xuICAgIHRoaXMudmlzaWJsZUNvbHVtbnMgPSBfLm1hcCh2aXNpYmxlR3JpZENvbHVtbnMsICdjb2xEZWYnKTtcbiAgICB0aGlzLnZpc2libGVDb2x1bW5JZHMgPSBfLm1hcCh0aGlzLnZpc2libGVDb2x1bW5zLCAnZmllbGQnKTtcbiAgICB0aGlzLmhpZGRlbkNvbHVtbnMgPSBfLm1hcChoaWRkZW5HcmlkQ29sdW1ucywgJ2NvbERlZicpO1xuICAgIHRoaXMuaGlkZGVuQ29sdW1uSWRzID0gXy5tYXAodGhpcy5oaWRkZW5Db2x1bW5zLCAnZmllbGQnKTtcbiAgfVxuXG4gIGFkZEhlYWRlck1lbnUoY29sdW1uRGVmcyA9IFtdKSB7XG4gICAgY29sdW1uRGVmcy5mb3JFYWNoKChjb2x1bW5EZWYpID0+IHtcbiAgICAgIGlmIChjb2x1bW5EZWYudXNlSGVhZGVyTWVudSkge1xuICAgICAgICBjb2x1bW5EZWYuaGVhZGVyQ29tcG9uZW50UGFyYW1zID0ge1xuICAgICAgICAgIG9wZW5IZWFkZXJNZW51OiAoJGV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9wZW5IZWFkZXJBY3Rpb25NZW51KCRldmVudCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjbG9zZU1lbnU6IChldmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jbG9zZUFjdGlvbk1lbnUoKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgX2FkZERlZmF1bHRDb2x1bW5EZWZzKCkge1xuICAgIHRoaXMuYWRkSGVhZGVyTWVudSh0aGlzLl9jb2x1bW5EZWZpbml0aW9ucyk7XG4gICAgdGhpcy5tZXJnZWRDb2x1bW5EZWZpbml0aW9ucyA9IF8uY2xvbmVEZWVwKHRoaXMuX2NvbHVtbkRlZmluaXRpb25zKTtcbiAgICBpZiAodGhpcy5fdmlldyA9PT0gJ3Byb2Nlc3MnKSB7XG4gICAgICBjb25zdCBjZWxsUGFyYW1zID0gXy5jbG9uZURlZXAodGhpcy5tZW51Q29sdW1uRGVmaW5pdGlvbi5jZWxsUmVuZGVyZXJQYXJhbXMpO1xuICAgICAgdGhpcy5tZXJnZWRDb2x1bW5EZWZpbml0aW9uc1t0aGlzLm1lcmdlZENvbHVtbkRlZmluaXRpb25zLmxlbmd0aCAtIDFdLmNlbGxSZW5kZXJlclBhcmFtcyA9IF8ubWVyZ2UoXG4gICAgICAgICAgdGhpcy5tZXJnZWRDb2x1bW5EZWZpbml0aW9uc1t0aGlzLm1lcmdlZENvbHVtbkRlZmluaXRpb25zLmxlbmd0aCAtIDFdLmNlbGxSZW5kZXJlclBhcmFtcyxcbiAgICAgICAgICBjZWxsUGFyYW1zXG4gICAgICApO1xuICAgICAgdGhpcy5tZXJnZWRDb2x1bW5EZWZpbml0aW9uc1t0aGlzLm1lcmdlZENvbHVtbkRlZmluaXRpb25zLmxlbmd0aCAtIDFdLmhlYWRlckNvbXBvbmVudFBhcmFtcyA9XG4gICAgICAgICAgdGhpcy5tZW51Q29sdW1uRGVmaW5pdGlvbi5oZWFkZXJDb21wb25lbnRQYXJhbXM7XG4gICAgfSBlbHNlIGlmICggKHRoaXMub3B0aW9ucy5ub1NlbGVjdCAmJiB0aGlzLm9wdGlvbnMubm9NZW51KSkge1xuICAgICAgLy8gRG9uJ3QgYWRkIGFueSBhZGRpdGlvbmFsIGNvbHVtbnNcbiAgICB9IGVsc2UgaWYgKCAodGhpcy5vcHRpb25zLm5vU2VsZWN0ICYmICF0aGlzLm9wdGlvbnMubm9NZW51KSkge1xuICAgICAgdGhpcy5tZXJnZWRDb2x1bW5EZWZpbml0aW9ucy5wdXNoKHRoaXMubWVudUNvbHVtbkRlZmluaXRpb24pO1xuICAgIH0gZWxzZSBpZiAoICF0aGlzLm9wdGlvbnMubm9TZWxlY3QgJiYgdGhpcy5vcHRpb25zLm5vTWVudSkge1xuICAgICAgdGhpcy5tZXJnZWRDb2x1bW5EZWZpbml0aW9ucy5wdXNoKHRoaXMuc2VsZWN0Q29sdW1uRGVmaW5pdGlvbik7XG4gICAgfSAgZWxzZSBpZiAodGhpcy5fdmlldyAhPT0gJ3VwbG9hZCcpIHtcbiAgICAgIHRoaXMubWVyZ2VkQ29sdW1uRGVmaW5pdGlvbnMuc3BsaWNlKDAsIDAsIHRoaXMuc2VsZWN0Q29sdW1uRGVmaW5pdGlvbik7XG4gICAgICB0aGlzLm1lcmdlZENvbHVtbkRlZmluaXRpb25zLnB1c2godGhpcy5tZW51Q29sdW1uRGVmaW5pdGlvbik7XG4gICAgfVxuICB9XG5cbiAgX3N0b3JlSW5pdGlhbENvbHVtbkRlZnMoKSB7XG4gICAgdGhpcy5faW5pdGlhbENvbHVtbkRlZnMgPSBfLmNsb25lRGVlcCh0aGlzLm1lcmdlZENvbHVtbkRlZmluaXRpb25zKTtcbiAgfVxuXG4gIF9pbml0Q29sdW1uVmlzaWJpbGl0eSgpIHtcbiAgICB0aGlzLnZpc2libGVDb2x1bW5zID0gdGhpcy5fY29sdW1uRGVmaW5pdGlvbnMuZmlsdGVyKChjb2wpID0+ICFjb2wuaGlkZSk7XG4gICAgdGhpcy5oaWRkZW5Db2x1bW5zID0gdGhpcy5fY29sdW1uRGVmaW5pdGlvbnMuZmlsdGVyKChjb2wpID0+IGNvbC5oaWRlKTtcbiAgICB0aGlzLnZpc2libGVDb2x1bW5JZHMgPSBfLm1hcCh0aGlzLnZpc2libGVDb2x1bW5zLCAnZmllbGQnKTtcbiAgfVxuXG4gIF91cGRhdGVHcmlkQ29sdW1ucygpIHtcbiAgICB0aGlzLl9zZXRDb2x1bW5XaWR0aHMoKTtcbiAgICB0aGlzLnN2Yy5ncmlkT2JqLmFwaS5zZXRDb2x1bW5EZWZzKHRoaXMubWVyZ2VkQ29sdW1uRGVmaW5pdGlvbnMpO1xuICAgIHRoaXMuc3ZjLmdyaWRPYmouYXBpLnJlZnJlc2hIZWFkZXIoKTtcbiAgfVxuXG4gIF9zZXRDb2x1bW5XaWR0aHMoKSB7XG4gICAgaWYgKHRoaXMuX3ZpZXcgPT09ICd1cGxvYWQnIHx8IHRoaXMuX3ZpZXcgPT09ICdwcm9jZXNzJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjb2xXaWR0aHNDb29raWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShgeml0aV8ke3RoaXMuc3ZjLnRhYmxlSWR9X2NvbHVtbl93aWR0aHNgKTtcbiAgICBpZiAoIV8uaXNFbXB0eShjb2xXaWR0aHNDb29raWUpKSB7XG4gICAgICBjb25zdCBjb2xXaWR0aHMgPSBKU09OLnBhcnNlKGNvbFdpZHRoc0Nvb2tpZSk7XG4gICAgICBfLmZvckVhY2goY29sV2lkdGhzLCAoY29sV2lkdGgsIGNvbElkKSA9PiB7XG4gICAgICAgIF8uZm9yRWFjaCh0aGlzLm1lcmdlZENvbHVtbkRlZmluaXRpb25zLCAoY29sRGVmKSA9PiB7XG4gICAgICAgICAgaWYgKGNvbERlZi5jb2xJZCA9PT0gY29sSWQpIHtcbiAgICAgICAgICAgIGNvbERlZi53aWR0aCA9IGNvbFdpZHRoO1xuICAgICAgICAgICAgY29sRGVmLnN1cHByZXNzU2l6ZVRvRml0ID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgX3NldENvbHVtbk9yZGVyQW5kVmlzaWJpbGl0eSgpIHtcbiAgICBpZiAodGhpcy5fdmlldyA9PT0gJ3VwbG9hZCcgfHwgdGhpcy5fdmlldyA9PT0gJ3Byb2Nlc3MnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHRhYmxlU3RhdGVDb29raWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShgeml0aV8ke3RoaXMuc3ZjLnRhYmxlSWR9X3RhYmxlX3N0YXRlYCk7XG4gICAgaWYgKCFfLmlzRW1wdHkodGFibGVTdGF0ZUNvb2tpZSkgfHwgdHlwZW9mIHRhYmxlU3RhdGVDb29raWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zdCBjb2xTdGF0ZXMgPSBKU09OLnBhcnNlKHRhYmxlU3RhdGVDb29raWUpO1xuICAgICAgY29uc3QgY29sdW1uSW5kZXhlcyA9IFtdO1xuICAgICAgXy5mb3JFYWNoKGNvbFN0YXRlcywgKGNvbFN0YXRlKSA9PiB7XG4gICAgICAgIF8uZm9yRWFjaCh0aGlzLm1lcmdlZENvbHVtbkRlZmluaXRpb25zLCAoY29sRGVmKSA9PiB7XG4gICAgICAgICAgaWYgKGNvbERlZi5jb2xJZCA9PT0gY29sU3RhdGUuY29sSWQpIHtcbiAgICAgICAgICAgIGNvbHVtbkluZGV4ZXMucHVzaChjb2xEZWYpO1xuICAgICAgICAgICAgY29sRGVmLmhpZGUgPSBjb2xTdGF0ZS5oaWRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIF8uZm9yRWFjaCh0aGlzLm1lcmdlZENvbHVtbkRlZmluaXRpb25zLCAoY29sRGVmKSA9PiB7XG4gICAgICAgIGxldCBjb2xGb3VuZCA9IGZhbHNlO1xuICAgICAgICBfLmZvckVhY2goY29sdW1uSW5kZXhlcywgKGNvbEluZGV4KSA9PiB7XG4gICAgICAgICAgaWYgKGNvbERlZi5jb2xJZCA9PT0gY29sSW5kZXguY29sSWQpIHtcbiAgICAgICAgICAgIGNvbEZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIWNvbEZvdW5kKSB7XG4gICAgICAgICAgY29sdW1uSW5kZXhlcy5wdXNoKGNvbERlZik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5tZXJnZWRDb2x1bW5EZWZpbml0aW9ucyA9IGNvbHVtbkluZGV4ZXM7XG4gICAgfVxuICB9XG5cbiAgX2hhbmRsZVRhYmxlU2Nyb2xsKHNjcm9sbGVyKTogdm9pZCB7XG4gICAgY29uc3Qgc2Nyb2xsV2lkdGggPSAkKCcuYWctY2VudGVyLWNvbHMtY29udGFpbmVyJykud2lkdGgoKTtcbiAgICBjb25zdCB2aWV3V2lkdGggPSAkKCcuYWctY2VudGVyLWNvbHMtdmlld3BvcnQnKS53aWR0aCgpO1xuICAgIGNvbnN0IHNjcm9sbGFibGVXaWR0aCA9IHNjcm9sbFdpZHRoIC0gdmlld1dpZHRoO1xuICAgIGlmIChzY3JvbGxlci5sZWZ0ID4gMCkge1xuICAgICAgJCgnLmFnLXBpbm5lZC1sZWZ0LWNvbHMtY29udGFpbmVyJykuYWRkQ2xhc3MoJ2FnLXBpbm5lZC1sZWZ0LXNoYWRvdycpO1xuICAgIH0gZWxzZSB7XG4gICAgICAkKCcuYWctcGlubmVkLWxlZnQtY29scy1jb250YWluZXInKS5yZW1vdmVDbGFzcygnYWctcGlubmVkLWxlZnQtc2hhZG93Jyk7XG4gICAgfVxuICAgIGlmIChzY3JvbGxlci5sZWZ0IDwgc2Nyb2xsYWJsZVdpZHRoIC0gMikge1xuICAgICAgJCgnLmFnLXBpbm5lZC1yaWdodC1jb2xzLWNvbnRhaW5lcicpLmFkZENsYXNzKCdhZy1waW5uZWQtcmlnaHQtc2hhZG93Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICQoJy5hZy1waW5uZWQtcmlnaHQtY29scy1jb250YWluZXInKS5yZW1vdmVDbGFzcygnYWctcGlubmVkLXJpZ2h0LXNoYWRvdycpO1xuICAgIH1cbiAgfVxuXG4gIHJlbVRvUHgocmVtVmFsdWUpIHtcbiAgICBjb25zdCByb290Rm9udFNpemU6IGFueSA9IHBhcnNlRmxvYXQod2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5mb250U2l6ZSk7XG4gICAgcmV0dXJuIHJlbVZhbHVlICogcm9vdEZvbnRTaXplO1xuICB9O1xufVxuIiwiPGRpdiAjdGFibGVDb250YWluZXIgY2xhc3M9XCJkYXRhLXRhYmxlLWNvbnRhaW5lclwiICpuZ0lmPVwic2hvd1RhYmxlO2Vsc2Ugbm9kYXRhXCI+XG4gICAgPGxpYi10YWJsZS1maWx0ZXItYmFyXG4gICAgICAgICAgICBbc3RhcnRDb3VudF09XCJzdGFydENvdW50XCJcbiAgICAgICAgICAgIFtlbmRDb3VudF09XCJlbmRDb3VudFwiXG4gICAgICAgICAgICBbdG90YWxDb3VudF09XCJ0b3RhbENvdW50XCJcbiAgICAgICAgICAgIFtjdXJyZW50UGFnZV09XCJjdXJyZW50UGFnZVwiXG4gICAgICAgICAgICBbZmlsdGVyTmFtZV09XCJmaWx0ZXJOYW1lXCJcbiAgICAgICAgICAgIFtmaWx0ZXJDb2x1bW5dPVwiZmlsdGVyQ29sdW1uXCJcbiAgICA+PC9saWItdGFibGUtZmlsdGVyLWJhcj5cbiAgICA8bGliLXRhYmxlLWhpZGRlbi1jb2x1bW5zLWJhclxuICAgICAgICAgICAgKm5nSWY9XCJncmlkUmVuZGVyZWQgJiYgc2hvd0ZpbHRlckJhclwiXG4gICAgICAgICAgICBbaGlkZGVuQ29sdW1uc109XCJoaWRkZW5Db2x1bW5zXCJcbiAgICAgICAgICAgIChjb2x1bW5WaXNpYmlsaXR5Q2hhbmdlZCk9XCJjb2x1bW5WaXNpYmlsaXR5Q2hhbmdlZCgkZXZlbnQpXCJcbiAgICA+PC9saWItdGFibGUtaGlkZGVuLWNvbHVtbnMtYmFyPlxuICAgIDxkaXYgKHJlc2l6ZSk9XCJyZXNpemVHcmlkQ29sdW1uc0RlYm91bmNlZCgkZXZlbnQpXCIgY2xhc3M9XCJ6aXRpLWFnLWdyaWRcIiBpZD1cIkl0ZW1UYWJsZVwiPlxuICAgICAgICA8YWctZ3JpZC1hbmd1bGFyXG4gICAgICAgICAgICAjbmZBZ0dyaWRcbiAgICAgICAgICAgIFtjb2x1bW5EZWZzXT1cIm1lcmdlZENvbHVtbkRlZmluaXRpb25zXCJcbiAgICAgICAgICAgIFtjb21wb25lbnRzXT1cImZyYW1ld29ya0NvbXBvbmVudHNcIlxuICAgICAgICAgICAgW2dldERhdGFQYXRoXT1cInN2Yy5nZXREYXRhUGF0aFwiXG4gICAgICAgICAgICBbZ2V0Um93SWRdPVwic3ZjLmdldFJvd05vZGVJZFwiXG4gICAgICAgICAgICBbZ3JpZE9wdGlvbnNdPVwiZ3JpZE9wdGlvbnNcIlxuICAgICAgICAgICAgW21vZHVsZXNdPVwiZ3JpZE1vZHVsZXNcIlxuICAgICAgICAgICAgW3Jvd0RhdGFdPVwicm93RGF0YVwiXG4gICAgICAgICAgICBbdG9vbHRpcEhpZGVEZWxheV09XCIyMDAwMFwiXG4gICAgICAgICAgICBbdG9vbHRpcFNob3dEZWxheV09XCIwXCJcbiAgICAgICAgICAgIChncmlkUmVhZHkpPVwib25HcmlkUmVhZHkoJGV2ZW50KVwiXG4gICAgICAgICAgICBjbGFzcz1cInppdGktYWctZ3JpZC10YWJsZSBhZy10aGVtZS1hbHBpbmUgcm93c1wiXG4gICAgICAgICAgICBpZD1cIkl0ZW1HcmlkXCJcbiAgICAgICAgPlxuICAgICAgICA8L2FnLWdyaWQtYW5ndWxhcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7IG9wZW46IG9wZW5IZWFkZXJNZW51IH1cIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwieyBsZWZ0OiBtZW51TGVmdCArICdweCcsIHRvcDogbWVudVRvcCArICdweCcgfVwiXG4gICAgICAgICAgICBjbGFzcz1cInRNZW51IGFjdGlvbi1tZW51IGhlYWRlci1tZW51XCJcbiAgICAgICAgICAgIGlkPVwiSGVhZGVyQWN0aW9uTWVudVwiXG4gICAgPlxuICAgICAgICA8ZGl2IChjbGljayk9XCJyZXNldFRhYmxlQ29sdW1ucygpXCIgY2xhc3M9XCJ0QWN0aW9uUm93XCIgaWQ9XCJSZXNldFRhYmxlQnV0dG9uXCI+UmVzdG9yZSBEZWZhdWx0IFRhYmxlPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBoZWFkZXJBY3Rpb24gb2YgaGVhZGVyQWN0aW9uc1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uUmVxdWVzdGVkLmVtaXQoeyBhY3Rpb246IGhlYWRlckFjdGlvbi5hY3Rpb24gfSlcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0QWN0aW9uUm93XCJcbiAgICAgICAgICAgIGlkPVwiUmVzZXRUYWJsZUJ1dHRvblwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7aGVhZGVyQWN0aW9uLm5hbWUgfHwgaGVhZGVyQWN0aW9uLmxhYmVsfX1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBvcGVuOiBvcGVuTWVudSB9XCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgbGVmdDogbWVudUxlZnQgKyAncHgnLCB0b3A6IG1lbnVUb3AgKyAncHgnIH1cIlxuICAgICAgICAgICAgY2xhc3M9XCJ0TWVudSBhY3Rpb24tbWVudSBpdGVtLW1lbnVcIlxuICAgICAgICAgICAgaWQ9XCJSb3dBY3Rpb25NZW51XCJcbiAgICAgICAgICAgICNjb250ZXh0TWVudVxuICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBtZW51SXRlbSBvZiBtZW51SXRlbXNcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3Rpb25SZXF1ZXN0ZWQuZW1pdCh7IGFjdGlvbjogbWVudUl0ZW0uYWN0aW9uLCBpdGVtOiBzZWxlY3RlZEl0ZW0gfSlcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnbWVudS1pdGVtLWhpZGRlbic6IGhpZGVNZW51SXRlbShtZW51SXRlbSwgc2VsZWN0ZWRJdGVtKSB9XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRBY3Rpb25Sb3dcIlxuICAgICAgICAgICAgICAgIGlkPVwiVGFibGVBY3Rpb25CdXR0b25fe3ttZW51SXRlbS5hY3Rpb259fVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7bWVudUl0ZW0ubmFtZSB8fCBtZW51SXRlbS5sYWJlbH19XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgICAgICAgIChjbGlja091dHNpZGUpPVwiY2xvc2VIZWFkZXJGaWx0ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7IG9wZW46IHNob3dGaWx0ZXJPcHRpb25zIH1cIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwieyBsZWZ0OiBtZW51TGVmdCArICdweCcsIHRvcDogbWVudVRvcCArICdweCcgfVwiXG4gICAgICAgICAgICBjbGFzcz1cInRNZW51IGFjdGlvbi1tZW51IGhlYWRlci1tZW51XCJcbiAgICAgICAgICAgIGlkPVwiSGVhZGVyRmlsdGVyT3B0aW9uc1wiXG4gICAgPlxuICAgICAgICA8ZGl2IChjbGljayk9XCJhcHBseUZpbHRlcigkZXZlbnQsIGZpbHRlcilcIiAqbmdGb3I9XCJsZXQgZmlsdGVyIG9mIGZpbHRlck9wdGlvbnNcIiBjbGFzcz1cInRBY3Rpb25Sb3dcIiBbbmdDbGFzc109XCJ7J2hhcy1pY29uJzogZmlsdGVyLmljb259XCIgW2lkXT1cImZpbHRlci5jb2x1bW5JZFwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWx0ZXIuYnViYmxlQ2xhc3NcIiBbbmdDbGFzc109XCJmaWx0ZXIuYnViYmxlQ2xhc3NcIiBjbGFzcz1cImJ1YmJsZVwiPlxuICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJmaWx0ZXIuc2hvd0xvYWRlclwiIGNsYXNzPVwiY2lyY3VsYXJcIiB2aWV3Qm94PVwiMjUgMjUgNTAgNTBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGNpcmNsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGF0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3g9XCI1MFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3k9XCI1MFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI9XCIyMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLW1pdGVybGltaXQ9XCIxMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiM1wiXG4gICAgICAgICAgICAgICAgICAgID48L2NpcmNsZT5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmlsdGVyLmljb25cIiBjbGFzcz1cIm9zLWljb24ge3tmaWx0ZXIuaWNvbn19XCI+PC9zcGFuPlxuICAgICAgICAgICAge3sgZmlsdGVyLmxhYmVsIH19XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJzaG93RGF0ZVRpbWVQaWNrZXJcIiBjbGFzcz1cImRhdGUtdGltZS1jb250YWluZXIgZGF0YS10YWJsZS1kYXRlLXRpbWVcIiBbbmdTdHlsZV09XCJ7IGxlZnQ6IG1lbnVMZWZ0ICsgJ3B4JywgdG9wOiBtZW51VG9wICsgJ3B4JyB9XCIgKGNsaWNrT3V0c2lkZSk9XCJjbG9zZURhdGVUaW1lKCRldmVudClcIj5cbiAgICA8cC1jYWxlbmRhclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkYXRlVmFsdWVcIlxuICAgICAgICAgICAgKG9uU2VsZWN0KT1cInNldERhdGVSYW5nZUZpbHRlcignY3VzdG9tJylcIlxuICAgICAgICAgICAgZGF0ZUZvcm1hdD1cIm1tL2RkL3l5XCJcbiAgICAgICAgICAgIHNlbGVjdGlvbk1vZGU9XCJyYW5nZVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBUaW1lIFJhbmdlXCJcbiAgICAgICAgICAgICNjYWxlbmRhclxuICAgID5cbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1idXR0b24tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0b2dnbGVCdXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie3NlbGVjdGVkOiBzZWxlY3RlZFJhbmdlID09PSAnaG91cid9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXREYXRlUmFuZ2VGaWx0ZXIoJ2hvdXInKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBMYXN0IEhvdXJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRvZ2dsZUJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0RGF0ZVJhbmdlRmlsdGVyKCdkYXknKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7c2VsZWN0ZWQ6IHNlbGVjdGVkUmFuZ2UgPT09ICdkYXknfVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBMYXN0IERheVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidG9nZ2xlQnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXREYXRlUmFuZ2VGaWx0ZXIoJ3dlZWsnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7c2VsZWN0ZWQ6IHNlbGVjdGVkUmFuZ2UgPT09ICd3ZWVrJ31cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgTGFzdCBXZWVrXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0b2dnbGVCdXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldERhdGVSYW5nZUZpbHRlcignbW9udGgnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7c2VsZWN0ZWQ6IHNlbGVjdGVkUmFuZ2UgPT09ICdtb250aCd9XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIExhc3QgTW9udGhcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvcC1jYWxlbmRhcj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwic2hvd1RhZ1NlbGVjdG9yXCIgY2xhc3M9XCJ0YWctc2VsZWN0b3ItY29udGFpbmVyIGRhdGEtdGFibGUtdGFnLXNlbGVjdG9yXCIgW25nU3R5bGVdPVwieyBsZWZ0OiBtZW51TGVmdCArICdweCcsIHRvcDogbWVudVRvcCArICdweCcgfVwiIChjbGlja091dHNpZGUpPVwiY2xvc2VUYWdTZWxlY3RvcigkZXZlbnQpXCI+XG4gICAgPGRpdiBjbGFzcz1cImJ1dHRvbkJhbGwgaWNvbi1jbG9zZVwiIChjbGljayk9XCJjbG9zZVRhZ1NlbGVjdG9yKCRldmVudClcIj48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwidGFnLXNlbGVjdG9yLWxhYmVsXCI+XG4gICAgICAgIDxzcGFuPlNlbGVjdCBhbiBBdHRyaWJ1dGU6PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxsaWItdGFnLXNlbGVjdG9yXG4gICAgICAgIFtmb2N1c09uSW5pdF09XCJ0cnVlXCJcbiAgICAgICAgW2F2YWlsYWJsZVJvbGVBdHRyaWJ1dGVzXT1cInJvbGVBdHRyaWJ1dGVzXCJcbiAgICAgICAgW2F2YWlsYWJsZU5hbWVkQXR0cmlidXRlc109XCJuYW1lZEF0dHJpYnV0ZXNcIlxuICAgICAgICBbKHNlbGVjdGVkUm9sZUF0dHJpYnV0ZXMpXT1cInNlbGVjdGVkUm9sZUF0dHJpYnV0ZXNcIlxuICAgICAgICBbKHNlbGVjdGVkTmFtZWRBdHRyaWJ1dGVzKV09XCJzZWxlY3RlZE5hbWVkQXR0cmlidXRlc1wiXG4gICAgICAgIChzZWxlY3RlZE5hbWVkQXR0cmlidXRlc0NoYW5nZSk9XCJ0YWdTZWxlY3Rpb25DaGFuZ2VkKCRldmVudCwgZmFsc2UpXCJcbiAgICAgICAgKHNlbGVjdGVkUm9sZUF0dHJpYnV0ZXNDaGFuZ2UpPVwidGFnU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQsIHRydWUpXCJcbiAgICA+PC9saWItdGFnLXNlbGVjdG9yPlxuPC9kaXY+XG48bmctdGVtcGxhdGUgI25vZGF0YT5cbiAgICA8bGliLW5vLWl0ZW1zXG4gICAgICAgIChjbGlja0VtaXQpPVwib3BlbkNyZWF0ZSgpXCJcbiAgICAgICAgW2ltYWdlXT1cIm5vSXRlbXNJbWFnZVwiXG4gICAgICAgIFtpc0VtcHR5XT1cIiFyb3dEYXRhIHx8IHJvd0RhdGEubGVuZ3RoID09PSAwXCJcbiAgICAgICAgW3R5cGVOYW1lXT1cInRoaXMuZW50aXR5VHlwZUxhYmVsXCJcbiAgICAgICAgW2hhc0FkZF09XCJzaG93Tm9JdGVtc0FkZFwiXG4gICAgPjwvbGliLW5vLWl0ZW1zPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
919
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvZGF0YS10YWJsZS9kYXRhLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9kYXRhLXRhYmxlL2RhdGEtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFFRixPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixpQ0FBaUM7QUFDakMsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUE7QUFFM0IsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sc0VBQXNFLENBQUM7QUFDakgsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sb0VBQW9FLENBQUM7QUFDOUcsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sZ0VBQWdFLENBQUM7QUFDeEcsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sdURBQXVELENBQUM7QUFDL0YsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFFekYsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0scURBQXFELENBQUM7QUFFNUYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFFbEMsTUFLYSxrQkFBa0I7SUFRN0IsSUFBYSxPQUFPLENBQUUsRUFBVTtRQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLE9B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Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0ksZUFBZTtzQkFBeEIsTUFBTTtnQkFFRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQXNIbUMsUUFBUTtzQkFBakQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNkLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFDSyxjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFxQmQsaUJBQWlCO3NCQUE3QixLQUFLO2dCQVNPLFlBQVk7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICAgIENvcHlyaWdodCBOZXRGb3VuZHJ5IEluYy5cblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLy8gSW1wb3J0IHRoZSByZXNpemVkIGV2ZW50IG1vZGVsXG5pbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50J1xuXG5pbXBvcnQge1RhYmxlQ29sdW1uRGVmYXVsdENvbXBvbmVudH0gZnJvbSBcIi4vY29sdW1uLWhlYWRlcnMvdGFibGUtY29sdW1uLWRlZmF1bHQvdGFibGUtY29sdW1uLWRlZmF1bHQuY29tcG9uZW50XCI7XG5pbXBvcnQge1RhYmxlQ29sdW1uU2VsZWN0Q29tcG9uZW50fSBmcm9tIFwiLi9jb2x1bW4taGVhZGVycy90YWJsZS1jb2x1bW4tc2VsZWN0L3RhYmxlLWNvbHVtbi1zZWxlY3QuY29tcG9uZW50XCI7XG5pbXBvcnQge1RhYmxlQ29sdW1uTWVudUNvbXBvbmVudH0gZnJvbSBcIi4vY29sdW1uLWhlYWRlcnMvdGFibGUtY29sdW1uLW1lbnUvdGFibGUtY29sdW1uLW1lbnUuY29tcG9uZW50XCI7XG5pbXBvcnQge1RhYmxlQ2VsbFNlbGVjdENvbXBvbmVudH0gZnJvbSBcIi4vY2VsbHMvdGFibGUtY2VsbC1zZWxlY3QvdGFibGUtY2VsbC1zZWxlY3QuY29tcG9uZW50XCI7XG5pbXBvcnQge1RhYmxlQ2VsbE1lbnVDb21wb25lbnR9IGZyb20gXCIuL2NlbGxzL3RhYmxlLWNlbGwtbWVudS90YWJsZS1jZWxsLW1lbnUuY29tcG9uZW50XCI7XG5pbXBvcnQge0RhdGFUYWJsZVNlcnZpY2V9IGZyb20gXCIuL2RhdGEtdGFibGUuc2VydmljZVwiO1xuaW1wb3J0IHtUYWJsZUNlbGxUb2tlbkNvbXBvbmVudH0gZnJvbSBcIi4vY2VsbHMvdGFibGUtY2VsbC10b2tlbi90YWJsZS1jZWxsLXRva2VuLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtEYXRhVGFibGVGaWx0ZXJTZXJ2aWNlLCBGaWx0ZXJPYmp9IGZyb20gXCIuL2RhdGEtdGFibGUtZmlsdGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tIFwicnhqc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZGF0YS10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0YS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHJvd0RhdGE6IGFueTtcbiAgQElucHV0KCkgZXhwYW5kUm93RGF0YTogYW55O1xuICBASW5wdXQoKSBjb2xsYXBzZVJvd0RhdGE6IGFueTtcbiAgQElucHV0KCkgcm93VmFsaWRhdGlvbjogYW55O1xuICAvLyBASW5wdXQoKSBjb2x1bW5GaWx0ZXJzOiBhbnk7XG4gIEBJbnB1dCgpIGlzVGltZVNlYXJjaEF2YWlsYWJsZTogYm9vbGVhbjtcbiAgQElucHV0KCkgaXNMb2FkaW5nOiBhbnk7XG4gIEBJbnB1dCgpIHNldCB0YWJsZUlkKCBpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5zdmMudGFibGVJZCA9IGlkO1xuICAgIHRoaXMudXBkYXRlRW50aXR5VHlwZUxhYmVsKClcbiAgfVxuICBASW5wdXQoKSBvcHRpb25zID0ge25vU2VsZWN0OiBmYWxzZSwgbm9NZW51OiBmYWxzZX07XG4gIEBJbnB1dCgpIHZhbGlkYXRlU2VydmljZTogYW55O1xuICBASW5wdXQoKSByb3dzVG9nZ2xlZDogYW55O1xuICBASW5wdXQoKSB0YWJsZVJlZnJlc2hDb3VudDogYW55O1xuICBASW5wdXQoKSBzZXQgdmlldyh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fdmlldyA9IHZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHNlcnZlclNpZGVEYXRhU291cmNlOiBhbnk7XG4gIEBJbnB1dCgpIGFsbG93RG93bmxvYWQ6IGJvb2xlYW47XG4gIC8vIEBJbnB1dCgpIGZpbHRlcnM6IGFueTtcbiAgQElucHV0KCkgc3RhcnRDb3VudDogYW55O1xuICBASW5wdXQoKSBlbmRDb3VudDogYW55O1xuICBASW5wdXQoKSB0b3RhbENvdW50OiBhbnk7XG4gIEBJbnB1dCgpIGVtcHR5TXNnOiBhbnk7XG4gIEBJbnB1dCgpIGZpbHRlckFwcGxpZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgbWVudUl0ZW1zOiBhbnkgPSBbXTtcbiAgQElucHV0KCkgaGVhZGVyQWN0aW9uczogYW55ID0gW107XG4gIEBJbnB1dCgpIG5vSXRlbXNDbGFzczogYW55ID0gJ2JhY2tncm91bmQtaW1hZ2U6IHVybChcIi9hc3NldHMvc3Zncy9Ob19DbGllbnRzLnN2Z1wiKSc7XG4gIEBJbnB1dCgpIGVudGl0eVR5cGVOYW1lID0gJ0lkZW50aXRpZXMnO1xuICBASW5wdXQoKSBzaG93Tm9JdGVtc0FkZCA9IHRydWU7XG4gIEBJbnB1dCgpIGN1cnJlbnRQYWdlID0gMTtcbiAgQElucHV0KCkgbm9JdGVtc0ltYWdlID0gJ25vZGF0YSc7XG4gIEBJbnB1dCgpIHJvd0hlaWdodCA9IHRoaXMucmVtVG9QeCgzLjEyNSk7XG4gIEBJbnB1dCgpIGZpbHRlck5hbWUgPSAnbmFtZSc7XG4gIEBJbnB1dCgpIGZpbHRlckNvbHVtbiA9ICduYW1lJztcbiAgQE91dHB1dCgpIGFjdGlvblJlcXVlc3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBhY3Rpb246IHN0cmluZzsgaXRlbT86IGFueSB9PigpO1xuICAvLyBAT3V0cHV0KCkgZmlsdGVyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGdyaWRSZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGRyYWdTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGRyYWdMZWF2ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIF92aWV3ID0gJ2xpc3QnO1xuICBmcmFtZXdvcmtDb21wb25lbnRzO1xuICBncmlkTW9kdWxlcztcbiAgZ3JpZE9wdGlvbnM7XG4gIHZpc2libGVDb2x1bW5zO1xuICBoaWRkZW5Db2x1bW5zO1xuICB2aXNpYmxlQ29sdW1uSWRzO1xuICBoaWRkZW5Db2x1bW5JZHM7XG4gIG1lcmdlZENvbHVtbkRlZmluaXRpb25zO1xuICBvcGVuTWVudTtcbiAgb3BlbkhlYWRlck1lbnU7XG4gIGZpbHRlck9wdGlvbnM6IGFueSA9IFtdO1xuICBzaG93RmlsdGVyT3B0aW9ucztcbiAgc2hvd0RhdGVUaW1lUGlja2VyO1xuICBzaG93VGFnU2VsZWN0b3I7XG4gIGFwcGVuZEF0dHJpYnV0ZUhhc2ggPSB0cnVlO1xuICBhdHRyaWJ1dGVzQ29sdW1uID0gJyc7XG4gIGRhdGVUaW1lQ29sdW1uID0gJyc7XG4gIGRhdGVUaW1lRmlsdGVyTGFiZWwgPSAnJztcbiAgc2VsZWN0ZWRSYW5nZSA9ICcnO1xuICBkYXRlVmFsdWU7XG4gIG1lbnVMZWZ0O1xuICBtZW51VG9wO1xuICBncmlkUmVuZGVyZWQ7XG4gIHJlc2l6ZUhhbmRsZXJJbml0ID0gZmFsc2U7XG4gIHJlc2l6ZUdyaWRDb2x1bW5zRGVib3VuY2VkO1xuICBzZWxlY3RlZEl0ZW06IGFueSA9IHtcbiAgICBhY3Rpb25MaXN0OiBbXSxcbiAgfTtcbiAgZW50aXR5VHlwZUxhYmVsID0gJydcbiAgY29sdW1uRmlsdGVyczphbnkgPSB7fTtcbiAgcm9sZUF0dHJpYnV0ZXM6IGFueVtdID0gW107XG4gIG5hbWVkQXR0cmlidXRlczogYW55W10gPSBbXTtcbiAgc2VsZWN0ZWRSb2xlQXR0cmlidXRlczogYW55W10gPSBbXTtcbiAgc2VsZWN0ZWROYW1lZEF0dHJpYnV0ZXM6IGFueVtdID0gW107XG4gIC8vIGFwcGxpZWRGaWx0ZXJzID0gW107XG4gIGF1dG9Hcm91cENvbHVtbkRlZjtcbiAgY3VycmVudEhlYWRlckNvbXBvbmVudFBhcmFtczogYW55ID0ge307XG4gIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHB1YmxpYyBtZW51Q29sdW1uRGVmaW5pdGlvbiA9IHtcbiAgICBjb2xJZDogJ3ppdGktYWctbWVudScsXG4gICAgZmllbGQ6ICd6aXRpLWFnLW1lbnUnLFxuICAgIHJlc2l6YWJsZTogZmFsc2UsXG4gICAgd2lkdGg6IHRoaXMucmVtVG9QeCgzLjEyNSksXG4gICAgc29ydGFibGU6IGZhbHNlLFxuICAgIGxvY2tQb3NpdGlvbjogdHJ1ZSxcbiAgICBzdXBwcmVzc01vdmFibGU6IHRydWUsXG4gICAgaGVhZGVyQ2xhc3M6ICdtZW51SGVhZGVyJyxcbiAgICBjZWxsQ2xhc3M6ICd0Q29sIGNlbGxNZW51JyxcbiAgICBjZWxsUmVuZGVyZXI6ICdjZWxsTWVudUNvbXBvbmVudCcsXG4gICAgY2VsbFJlbmRlcmVyUGFyYW1zOiB7XG4gICAgICBvcGVuTWVudTogKCRldmVudCwgaXRlbSkgPT4ge1xuICAgICAgICB0aGlzLm9wZW5BY3Rpb25NZW51KCRldmVudCwgaXRlbSk7XG4gICAgICB9LFxuICAgICAgY2xvc2VNZW51OiAoZXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5jbG9zZUFjdGlvbk1lbnUoKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICBzdXBwcmVzc1NpemVUb0ZpdDogdHJ1ZSxcbiAgICBwaW5uZWQ6ICdyaWdodCcsXG4gICAgaGVhZGVyQ29tcG9uZW50OiBUYWJsZUNvbHVtbk1lbnVDb21wb25lbnQsXG4gICAgaGVhZGVyQ29tcG9uZW50UGFyYW1zOiB7XG4gICAgICBvcGVuSGVhZGVyTWVudTogKCRldmVudCkgPT4ge1xuICAgICAgICB0aGlzLm9wZW5IZWFkZXJBY3Rpb25NZW51KCRldmVudCk7XG4gICAgICB9LFxuICAgICAgY2xvc2VNZW51OiAoZXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5jbG9zZUFjdGlvbk1lbnUoKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbiAgcHJpdmF0ZSBfaW5pdGlhbENvbHVtbkRlZnM7XG4gIHByaXZhdGUgX3JlZnJlc2hDZWxsc0RlYm91bmNlZDtcbiAgcHJpdmF0ZSBfb25Db2x1bW5zUmVzaXplZERlYm91bmNlZDtcbiAgcHJpdmF0ZSBfc2F2ZUNvbHVtblN0YXRlRGVib3VuY2VkO1xuXG4gIHByaXZhdGUgc2VsZWN0Q29sdW1uRGVmaW5pdGlvbiA9IHtcbiAgICBjb2xJZDogJ3ppdGktYWctc2VsZWN0ZWQnLFxuICAgIGZpZWxkOiAneml0aS1hZy1zZWxlY3RlZCcsXG4gICAgc3VwcHJlc3NTaXplVG9GaXQ6IHRydWUsXG4gICAgbG9ja1Bvc2l0aW9uOiB0cnVlLFxuICAgIHN1cHByZXNzTW92YWJsZTogdHJ1ZSxcbiAgICByZXNpemFibGU6IGZhbHNlLFxuICAgIHBpbm5lZDogJ2xlZnQnLFxuICAgIHdpZHRoOiB0aGlzLnJlbVRvUHgoMy43NSksXG4gICAgc29ydGFibGU6IGZhbHNlLFxuICAgIGhlYWRlckNsYXNzOiAnc2VsZWN0SGVhZGVyJyxcbiAgICBjZWxsQ2xhc3M6ICd0Q29sJyxcbiAgICBjZWxsUmVuZGVyZXI6ICdjZWxsU2VsZWN0Q29tcG9uZW50JyxcbiAgICBjZWxsUmVuZGVyZXJQYXJhbXM6IHtcbiAgICAgIHRvZ2dsZUl0ZW06IChpdGVtKSA9PiB7XG4gICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSAhaXRlbS5zZWxlY3RlZDtcbiAgICAgICAgdGhpcy5zdmMuZ3JpZE9iai5hcGkueml0aUFsbFRvZ2dsZWQgPSBfLmV2ZXJ5KHRoaXMucm93RGF0YSwge3NlbGVjdGVkOiB0cnVlfSk7XG4gICAgICAgIF8uZGVmZXIoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc3ZjLmdyaWRPYmouYXBpLnJlZnJlc2hDZWxscyh7Zm9yY2U6IHRydWV9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWN0aW9uUmVxdWVzdGVkLmVtaXQoe2FjdGlvbjogJ3RvZ2dsZUl0ZW0nLCBpdGVtOiBpdGVtfSk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgaGVhZGVyQ29tcG9uZW50OiBUYWJsZUNvbHVtblNlbGVjdENvbXBvbmVudCxcbiAgICBoZWFkZXJDb21wb25lbnRQYXJhbXM6IHtcbiAgICAgIHRvZ2dsZUFsbDogKHNlbGVjdGVkOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5zdmMuZ3JpZE9iaikge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBfLmZvckVhY2godGhpcy5yb3dEYXRhLCAocm93KSA9PiB7XG4gICAgICAgICAgcm93LnNlbGVjdGVkID0gc2VsZWN0ZWQ7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFjdGlvblJlcXVlc3RlZC5lbWl0KHthY3Rpb246ICd0b2dnbGVBbGwnfSk7XG4gICAgICAgIF8uZGVmZXIoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc3ZjLmdyaWRPYmouYXBpLnJlZnJlc2hDZWxscyh7Zm9yY2U6IHRydWV9KTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgIH0sXG4gIH07XG5cbiAgQFZpZXdDaGlsZCgnY2FsZW5kYXInLCB7IHN0YXRpYzogZmFsc2UgfSkgY2FsZW5kYXI6IGFueTtcbiAgQFZpZXdDaGlsZCgnY29udGV4dE1lbnUnKSBjb250ZXh0TWVudTtcbiAgQFZpZXdDaGlsZCgndGFibGVDb250YWluZXInKSB0YWJsZUNvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgc3ZjOiBEYXRhVGFibGVTZXJ2aWNlLCBwcml2YXRlIHRhYmxlRmlsdGVyU2VydmljZTogRGF0YVRhYmxlRmlsdGVyU2VydmljZSkge1xuICAgIHRoaXMucmVzaXplR3JpZENvbHVtbnNEZWJvdW5jZWQgPSBfLmRlYm91bmNlKHRoaXMuc3ZjLnJlc2l6ZUdyaWRDb2x1bW5zLmJpbmQodGhpcy5zdmMpLCAyMCwge2xlYWRpbmc6IHRydWV9KTtcbiAgICB0aGlzLl9yZWZyZXNoQ2VsbHNEZWJvdW5jZWQgPSBfLmRlYm91bmNlKHRoaXMuc3ZjLnJlZnJlc2hDZWxscy5iaW5kKHRoaXMuc3ZjKSwgNTApO1xuICAgIHRoaXMuX29uQ29sdW1uc1Jlc2l6ZWREZWJvdW5jZWQgPSBfLmRlYm91bmNlKHRoaXMuc3ZjLm9uQ29sdW1uc1Jlc2l6ZWQuYmluZCh0aGlzLnN2YyksIDQwMCk7XG4gICAgdGhpcy5fc2F2ZUNvbHVtblN0YXRlRGVib3VuY2VkID0gXy5kZWJvdW5jZSh0aGlzLnN2Yy5zYXZlQ29sdW1uU3RhdGUuYmluZCh0aGlzLnN2YyksIDQwMCk7XG4gIH1cblxuICBoaWRlTWVudUl0ZW0obWVudUl0ZW0sIHNlbGVjdGVkSXRlbSkge1xuICAgICAgaWYgKF8uaXNGdW5jdGlvbihtZW51SXRlbS5oaWRkZW4pKSB7XG4gICAgICAgICAgcmV0dXJuIG1lbnVJdGVtLmhpZGRlbihzZWxlY3RlZEl0ZW0pO1xuICAgICAgfSBlbHNlIGlmIChfLmlzQm9vbGVhbihtZW51SXRlbS5oaWRkZW4pKSB7XG4gICAgICAgICAgcmV0dXJuIG1lbnVJdGVtLmhpZGRlbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuICFzZWxlY3RlZEl0ZW0uYWN0aW9uTGlzdC5pbmNsdWRlcyhtZW51SXRlbS5hY3Rpb24pO1xuICAgICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY29sdW1uRGVmaW5pdGlvbnM7XG5cbiAgQElucHV0KCkgc2V0IGNvbHVtbkRlZmluaXRpb25zKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLl9jb2x1bW5EZWZpbml0aW9ucyA9IHZhbHVlO1xuXG4gIH1cblxuICBnZXQgc2hvd0ZpbHRlckJhcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdmlldyAhPT0gJ3VwbG9hZCcgJiYgdGhpcy5fdmlldyAhPT0gJ3Byb2Nlc3MnO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHJlZnJlc2hDb3VudCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLnN2Yy5ncmlkT2JqKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIF8uZGVmZXIoKCkgPT4ge1xuICAgICAgdGhpcy5zdmMuZ3JpZE9iai5hcGkucmVkcmF3Um93cygpO1xuICAgICAgdGhpcy5zdmMuZ3JpZE9iai5hcGkucmVmcmVzaENlbGxzKHtmb3JjZTogdHJ1ZX0pO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IHNob3dUYWJsZSgpIHtcbiAgICBjb25zdCBfc2hvd1RhYmxlID0gdGhpcy5pc0xvYWRpbmcgfHwgdGhpcy5maWx0ZXJBcHBsaWVkIHx8IHRoaXMucm93RGF0YT8ubGVuZ3RoID4gMDtcbiAgICBpZiAoX3Nob3dUYWJsZSAmJiAhdGhpcy5yZXNpemVIYW5kbGVySW5pdCkge1xuICAgICAgdGhpcy5faW5pdEdyaWRSZXNpemVIYW5kbGVyKCk7XG4gICAgfVxuICAgIHJldHVybiBfc2hvd1RhYmxlO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5mcmFtZXdvcmtDb21wb25lbnRzID0ge1xuICAgICAgY2VsbFNlbGVjdENvbXBvbmVudDogVGFibGVDZWxsU2VsZWN0Q29tcG9uZW50LFxuICAgICAgY2VsbE1lbnVDb21wb25lbnQ6IFRhYmxlQ2VsbE1lbnVDb21wb25lbnQsXG4gICAgICBjZWxsVG9rZW5Db21wb25lbnQ6IFRhYmxlQ2VsbFRva2VuQ29tcG9uZW50LFxuICAgICAgaGVhZGVyQ2VsbFNlbGVjdENvbXBvbmVudDogVGFibGVDb2x1bW5TZWxlY3RDb21wb25lbnQsXG4gICAgICBoZWFkZXJIZWFkZXJNZW51Q29tcG9uZW50OiBUYWJsZUNvbHVtbk1lbnVDb21wb25lbnQsXG4gICAgICBoZWFkZXJEZWZhdWx0Q29tcG9uZW50OiBUYWJsZUNvbHVtbkRlZmF1bHRDb21wb25lbnQsXG4gICAgfTtcblxuICAgIHRoaXMuYXV0b0dyb3VwQ29sdW1uRGVmID0ge1xuICAgICAgZmllbGQ6ICdwcm9jZXNzVHJlZScsXG4gICAgICBoZWFkZXJOYW1lOiAnUHJvY2VzcyBOYW1lJyxcbiAgICAgIGNlbGxSZW5kZXJlcjogJ2NlbGxSZXNvdXJjZVN0YXR1c0NvbXBvbmVudCcsXG4gICAgICByZXNpemFibGU6IHRydWUsXG4gICAgICBjZWxsUmVuZGVyZXJQYXJhbXM6IHtyZXNvdXJjZVR5cGU6ICdwcm9jZXNzLWV4ZWN1dGlvbid9LFxuICAgICAgaGVhZGVyQ29tcG9uZW50RnJhbWV3b3JrOiBUYWJsZUNvbHVtbkRlZmF1bHRDb21wb25lbnQsXG4gICAgfTtcblxuICAgIGlmICh0aGlzLl9jb2x1bW5EZWZpbml0aW9ucykge1xuICAgICAgdGhpcy5fYWRkQ29sdW1uRXZlbnRzKCk7XG4gICAgICB0aGlzLl9hZGREZWZhdWx0Q29sdW1uRGVmcygpO1xuICAgICAgdGhpcy5fc3RvcmVJbml0aWFsQ29sdW1uRGVmcygpO1xuICAgICAgdGhpcy5fc2V0Q29sdW1uV2lkdGhzKCk7XG4gICAgICB0aGlzLl9zZXRDb2x1bW5PcmRlckFuZFZpc2liaWxpdHkoKTtcbiAgICAgIHRoaXMuX2luaXRDb2x1bW5WaXNpYmlsaXR5KCk7XG4gICAgICB0aGlzLl9pbml0R3JpZE9wdGlvbnMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdmMuZ3JpZE9iaiAmJiBjaGFuZ2VzLnJvd0RhdGEpIHtcbiAgICAgIHRoaXMuX3JlZnJlc2hDZWxsc0RlYm91bmNlZChjaGFuZ2VzLnJvd0RhdGEpO1xuICAgIH1cbiAgfVxuXG4gIGNvbHVtblZpc2liaWxpdHlDaGFuZ2VkKGV2ZW50KSB7XG4gICAgdGhpcy5zZXRDb2x1bW5WaXNpYmlsaXR5Q29sdW1uKGV2ZW50Py5jb2x1bW4sIGV2ZW50Py52aXNpYmxlKTtcbiAgfVxuXG4gIG9wZW5BY3Rpb25NZW51KGV2ZW50LCBpdGVtKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBpdGVtO1xuICAgIHRoaXMub3Blbk1lbnUgPSB0cnVlO1xuICAgIF8uZGVsYXkoKCkgPT4ge1xuICAgICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5jb250ZXh0TWVudT8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0SGVpZ2h0IHx8IDEyMDtcbiAgICAgIGNvbnN0IHdpbmRvd09mZnNldCA9IHdpbmRvdy5pbm5lckhlaWdodCAtIGV2ZW50LmNsaWVudFk7XG4gICAgICBjb25zdCBtZW51T2Zmc2V0ID0gd2luZG93T2Zmc2V0IDw9IGhlaWdodCA/IGhlaWdodCAtIHdpbmRvd09mZnNldCA6IDA7XG4gICAgICB0aGlzLm1lbnVMZWZ0ID0gZXZlbnQuY2xpZW50WCAtIDEwMDtcbiAgICAgIHRoaXMubWVudVRvcCA9IGV2ZW50LmNsaWVudFkgKyA1IC0gbWVudU9mZnNldDtcbiAgICB9LCAxMCk7XG4gIH1cblxuICBvbkdyaWRSZWFkeShwYXJhbXMpIHtcbiAgICB0aGlzLmdyaWRSZWFkeS5lbWl0KHBhcmFtcyk7XG4gIH1cblxuICByZXNldFRhYmxlQ29sdW1ucygpIHtcbiAgICBpZiAoIXRoaXMuc3ZjLmdyaWRPYmopIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5tZXJnZWRDb2x1bW5EZWZpbml0aW9ucyA9IF8uY2xvbmVEZWVwKHRoaXMuX2luaXRpYWxDb2x1bW5EZWZzKTtcbiAgICB0aGlzLnN2Yy5ncmlkT2JqLmFwaS5zZXRDb2x1bW5EZWZzKHRoaXMubWVyZ2VkQ29sdW1uRGVmaW5pdGlvbnMpO1xuICAgIHRoaXMuc3ZjLnJlc2V0Q29va2llQ29uZmlnKCk7XG4gICAgdGhpcy5zdmMuZ3JpZE9iai5hcGkucmVzZXRDb2x1bW5TdGF0ZSgpO1xuICAgIF8uZGVmZXIoKCkgPT4ge1xuICAgICAgdGhpcy5fdXBkYXRlSGlkZGVuQ29sdW1ucygpO1xuICAgICAgdGhpcy5zdmMucmVzaXplR3JpZENvbHVtbnMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9wZW5IZWFkZXJBY3Rpb25NZW51KGV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5tZW51TGVmdCA9IGV2ZW50LmNsaWVudFggLSAxNTA7XG4gICAgdGhpcy5tZW51VG9wID0gZXZlbnQuY2xpZW50WSArIDU7XG4gICAgXy5kZWxheSgoKSA9PiB7XG4gICAgICB0aGlzLm9wZW5IZWFkZXJNZW51ID0gdHJ1ZTtcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgY2xvc2VBY3Rpb25NZW51KCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0ge1xuICAgICAgYWN0aW9uTGlzdDogW10sXG4gICAgfTtcbiAgICB0aGlzLm9wZW5NZW51ID0gZmFsc2U7XG4gICAgdGhpcy5vcGVuSGVhZGVyTWVudSA9IGZhbHNlO1xuICB9XG5cbiAgb3BlbkhlYWRlckZpbHRlcihldmVudCwgb3B0aW9ucywgdHlwZSwgY29sdW1uSWQsIGZpbHRlckxhYmVsLCBoZWFkZXJDb21wb25lbnRQYXJhbXMpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlck9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMubWVudUxlZnQgPSBldmVudC5jbGllbnRYO1xuICAgIHRoaXMubWVudVRvcCA9IGV2ZW50LmNsaWVudFkgKyAxMDtcbiAgICBpZiAodHlwZSA9PT0gJ0RBVEVUSU1FJykge1xuICAgICAgdGhpcy5kYXRlVGltZUNvbHVtbiA9IGNvbHVtbklkO1xuICAgICAgdGhpcy5kYXRlVGltZUZpbHRlckxhYmVsID0gZmlsdGVyTGFiZWwgfHwgJ0RhdGU6ICc7XG4gICAgICBfLmRlbGF5KCgpID0+IHtcbiAgICAgICAgdGhpcy5zaG93RGF0ZVRpbWVQaWNrZXIgPSB0cnVlO1xuICAgICAgfSwgMTApO1xuICAgICAgXy5kZWxheSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2FsZW5kYXIudG9nZ2xlKCk7XG4gICAgICB9LCAxMDApO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ0FUVFJJQlVURScpIHtcbiAgICAgIHRoaXMuYXBwZW5kQXR0cmlidXRlSGFzaCA9IGhlYWRlckNvbXBvbmVudFBhcmFtcy5hcHBlbmRBdHRyaWJ1dGVIYXNoICE9PSBmYWxzZTtcbiAgICAgIHRoaXMuYXR0cmlidXRlc0NvbHVtbiA9IGNvbHVtbklkO1xuICAgICAgdGhpcy5yb2xlQXR0cmlidXRlcyA9IGhlYWRlckNvbXBvbmVudFBhcmFtcz8uZ2V0Um9sZUF0dHJpYnV0ZXMoKTtcbiAgICAgIHRoaXMubmFtZWRBdHRyaWJ1dGVzID0gaGVhZGVyQ29tcG9uZW50UGFyYW1zPy5nZXROYW1lZEF0dHJpYnV0ZXMoKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb2xlQXR0cmlidXRlcyA9IGhlYWRlckNvbXBvbmVudFBhcmFtcy5nZXRTZWxlY3RlZFJvbGVBdHRyaWJ1dGVzKCk7XG4gICAgICB0aGlzLnNlbGVjdGVkTmFtZWRBdHRyaWJ1dGVzID0gaGVhZGVyQ29tcG9uZW50UGFyYW1zLmdldFNlbGVjdGVkTmFtZWRBdHRyaWJ1dGVzKCk7XG4gICAgICB0aGlzLmRhdGVUaW1lRmlsdGVyTGFiZWwgPSBmaWx0ZXJMYWJlbDtcbiAgICAgIHRoaXMuY3VycmVudEhlYWRlckNvbXBvbmVudFBhcmFtcyA9IGhlYWRlckNvbXBvbmVudFBhcmFtcztcbiAgICAgIF8uZGVsYXkoKCkgPT4ge1xuICAgICAgICB0aGlzLnNob3dUYWdTZWxlY3RvciA9IHRydWU7XG4gICAgICB9LCAxMDApO1xuICAgIH0gZWxzZSB7XG4gICAgICBfLmRlZmVyKCgpID0+IHtcbiAgICAgICAgdGhpcy5zaG93RmlsdGVyT3B0aW9ucyA9IHRydWU7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzZXREYXRlUmFuZ2VGaWx0ZXIocmFuZ2UpIHtcbiAgICBsZXQgc3RhcnREYXRlO1xuICAgIGxldCBsYWJlbDtcbiAgICBsZXQgZW5kRGF0ZSA9IG1vbWVudCgpO1xuICAgIGxldCBjbG9zZUNhbGVuZGFyID0gdHJ1ZTtcbiAgICB0aGlzLnNlbGVjdGVkUmFuZ2UgPSByYW5nZTtcbiAgICBzd2l0Y2ggKHJhbmdlKSB7XG4gICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgc3RhcnREYXRlID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ2hvdXJzJyk7XG4gICAgICAgIGxhYmVsID0gJ0xhc3QgSG91cic7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGF5JzpcbiAgICAgICAgc3RhcnREYXRlID0gbW9tZW50KCkuc3VidHJhY3QoMjQsICdob3VycycpO1xuICAgICAgICBsYWJlbCA9ICdMYXN0IERheSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgIHN0YXJ0RGF0ZSA9IG1vbWVudCgpLnN1YnRyYWN0KDcsICdkYXlzJyk7XG4gICAgICAgIGxhYmVsID0gJ0xhc3QgV2Vlayc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICBzdGFydERhdGUgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAnbW9udGgnKTtcbiAgICAgICAgbGFiZWwgPSAnTGFzdCBNb250aCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY3VzdG9tJzpcbiAgICAgICAgaWYgKCF0aGlzLmRhdGVWYWx1ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzdGFydERhdGUgPSBtb21lbnQodGhpcy5kYXRlVmFsdWVbMF0pO1xuICAgICAgICBpZiAodGhpcy5kYXRlVmFsdWVbMV0gIT09IHVuZGVmaW5lZCAmJiB0aGlzLmRhdGVWYWx1ZVsxXSAhPT0gbnVsbCkge1xuICAgICAgICAgIGVuZERhdGUgPSBtb21lbnQodGhpcy5kYXRlVmFsdWVbMV0pO1xuICAgICAgICB9XG4gICAgICAgIGxhYmVsID0gJ0N1c3RvbSc7XG4gICAgICAgIGNsb3NlQ2FsZW5kYXIgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBzdGFydERhdGUgPSBtb21lbnQoKS5zdWJ0cmFjdCgyNCwgJ2hvdXJzJyk7XG4gICAgICAgIGxhYmVsID0gJ0xhc3QgRGF5JztcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNvbnN0IHN0YXJ0RGF0ZVJhbmdlID0gZW5jb2RlVVJJQ29tcG9uZW50KHN0YXJ0RGF0ZS50b0lTT1N0cmluZygpKTtcbiAgICBjb25zdCBlbmREYXRlUmFuZ2UgPSBlbmNvZGVVUklDb21wb25lbnQoZW5kRGF0ZS50b0lTT1N0cmluZygpKTtcbiAgICB0aGlzLmNvbHVtbkZpbHRlcnNbdGhpcy5kYXRlVGltZUNvbHVtbl0gPSBbc3RhcnREYXRlUmFuZ2UsIGVuZERhdGVSYW5nZV07XG5cbiAgICBpZiAoY2xvc2VDYWxlbmRhcikge1xuICAgICAgdGhpcy5jYWxlbmRhci50b2dnbGUoKTtcbiAgICB9XG4gICAgaWYgKHJhbmdlICE9PSAnY3VzdG9tJykge1xuICAgICAgdGhpcy5kYXRlVmFsdWUgPSBbc3RhcnREYXRlLnRvRGF0ZSgpLCBlbmREYXRlLnRvRGF0ZSgpXTtcbiAgICB9XG4gICAgY29uc3QgZmlsdGVyT2JqOiBGaWx0ZXJPYmogPSB7XG4gICAgICBjb2x1bW5JZDogdGhpcy5kYXRlVGltZUNvbHVtbixcbiAgICAgIHZhbHVlOiBbc3RhcnREYXRlUmFuZ2UsIGVuZERhdGVSYW5nZV0sXG4gICAgICBsYWJlbDogbGFiZWwsXG4gICAgICBmaWx0ZXJOYW1lOiB0aGlzLmRhdGVUaW1lRmlsdGVyTGFiZWwsXG4gICAgICB0eXBlOiAnREFURVRJTUUnXG4gICAgfTtcblxuICAgIHRoaXMudGFibGVGaWx0ZXJTZXJ2aWNlLnVwZGF0ZUZpbHRlcihmaWx0ZXJPYmopO1xuICB9XG5cbiAgdGFnU2VsZWN0aW9uQ2hhbmdlZChldmVudCwgaXNSb2xlKSB7XG4gICAgbGV0IGxhYmVsID0gJyc7XG4gICAgbGV0IHZhbHVlID0gJyc7XG4gICAgaWYgKGlzUm9sZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZE5hbWVkQXR0cmlidXRlcyA9IFtdO1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRSb2xlQXR0cmlidXRlcy5sZW5ndGggPiAxKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb2xlQXR0cmlidXRlcyA9IFtfLmxhc3QodGhpcy5zZWxlY3RlZFJvbGVBdHRyaWJ1dGVzKV07XG4gICAgICB9XG4gICAgICB0aGlzLnNlbGVjdGVkUm9sZUF0dHJpYnV0ZXMuZm9yRWFjaCgoYXR0ciwgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICAgIGxhYmVsICs9ICcsICc7XG4gICAgICAgICAgdmFsdWUgKz0gJywgJztcbiAgICAgICAgfVxuICAgICAgICBsYWJlbCArPSAoKHRoaXMuYXBwZW5kQXR0cmlidXRlSGFzaCA/ICcjJyA6ICcnKSArIGF0dHIpO1xuICAgICAgICB2YWx1ZSArPSAoKHRoaXMuYXBwZW5kQXR0cmlidXRlSGFzaCA/ICclMjMnIDogJycpICsgYXR0cik7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvbGVBdHRyaWJ1dGVzID0gW107XG4gICAgICBjb25zdCBhdHRySWRNYXAgPSB0aGlzLmN1cnJlbnRIZWFkZXJDb21wb25lbnRQYXJhbXMuZ2V0TmFtZWRBdHRyaWJ1dGVzTWFwKCk7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZE5hbWVkQXR0cmlidXRlcy5sZW5ndGggPiAxKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWROYW1lZEF0dHJpYnV0ZXMgPSBbXy5sYXN0KHRoaXMuc2VsZWN0ZWROYW1lZEF0dHJpYnV0ZXMpXTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWROYW1lZEF0dHJpYnV0ZXMuZm9yRWFjaCgoYXR0ciwgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICAgIGxhYmVsICs9ICcsICc7XG4gICAgICAgICAgdmFsdWUgKz0gJywgJztcbiAgICAgICAgfVxuICAgICAgICBsYWJlbCArPSAnQCcgKyBhdHRyO1xuICAgICAgICB2YWx1ZSArPSAnJTQwJyArIGF0dHJJZE1hcFthdHRyXTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBmaWx0ZXJPYmo6IEZpbHRlck9iaiA9IHtcbiAgICAgIGNvbHVtbklkOiB0aGlzLmF0dHJpYnV0ZXNDb2x1bW4sXG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBsYWJlbDogbGFiZWwsXG4gICAgICBmaWx0ZXJOYW1lOiB0aGlzLmRhdGVUaW1lRmlsdGVyTGFiZWwsXG4gICAgICB0eXBlOiAnQVRUUklCVVRFJ1xuICAgIH07XG4gICAgdGhpcy5jdXJyZW50SGVhZGVyQ29tcG9uZW50UGFyYW1zLnNldFNlbGVjdGVkUm9sZUF0dHJpYnV0ZXModGhpcy5zZWxlY3RlZFJvbGVBdHRyaWJ1dGVzKTtcbiAgICB0aGlzLmN1cnJlbnRIZWFkZXJDb21wb25lbnRQYXJhbXMuc2V0U2VsZWN0ZWROYW1lZEF0dHJpYnV0ZXModGhpcy5zZWxlY3RlZE5hbWVkQXR0cmlidXRlcyk7XG4gICAgdGhpcy50YWJsZUZpbHRlclNlcnZpY2UudXBkYXRlRmlsdGVyKGZpbHRlck9iaik7XG4gIH1cblxuICBhcHBseUZpbHRlcihldmVudCwgZmlsdGVyKSB7XG4gICAgdGhpcy50YWJsZUZpbHRlclNlcnZpY2UudXBkYXRlRmlsdGVyKGZpbHRlcik7XG4gICAgdGhpcy5jbG9zZUhlYWRlckZpbHRlcihldmVudCk7XG4gIH1cblxuICBjbG9zZUhlYWRlckZpbHRlcihldmVudCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0ZpbHRlck9wdGlvbnMgPSBmYWxzZTtcbiAgfVxuXG4gIGNsb3NlRGF0ZVRpbWUoZXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dEYXRlVGltZVBpY2tlciA9IGZhbHNlO1xuICB9XG5cbiAgY2xvc2VUYWdTZWxlY3RvcihldmVudCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd1RhZ1NlbGVjdG9yID0gZmFsc2U7XG4gIH1cblxuICBvcGVuQ3JlYXRlKCkge1xuICAgIHRoaXMuYWN0aW9uUmVxdWVzdGVkLmVtaXQoe2FjdGlvbjogJ2NyZWF0ZSd9KTtcbiAgfVxuXG4gIGFueVNlbGVjdGVkKCkge1xuICAgIHJldHVybiBfLnNvbWUodGhpcy5yb3dEYXRhLCB7c2VsZWN0ZWQ6IHRydWV9KTtcbiAgfVxuXG4gIHNob3dEb3dubG9hZCgpIHtcbiAgICByZXR1cm4gdGhpcy5hbGxvd0Rvd25sb2FkICYmIHRoaXMuX3ZpZXcgIT09ICdwcm9jZXNzJztcbiAgfVxuXG4gIF9pbml0R3JpZFJlc2l6ZUhhbmRsZXIoKSB7XG4gICAgaWYgKCF0aGlzLnRhYmxlQ29udGFpbmVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGVudHJpZXMgPT4ge1xuICAgICAgdGhpcy5yZXNpemVHcmlkQ29sdW1uc0RlYm91bmNlZCgpO1xuICAgIH0pO1xuICAgIG9ic2VydmVyLm9ic2VydmUodGhpcy50YWJsZUNvbnRhaW5lci5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLnJlc2l6ZUhhbmRsZXJJbml0ID0gdHJ1ZTtcbiAgfVxuXG4gIF9pbml0R3JpZE9wdGlvbnMoKSB7XG4gICAgdGhpcy5ncmlkT3B0aW9ucyA9IHtcbiAgICAgIHBhZ2luYXRpb246IGZhbHNlLFxuICAgICAgcm93U2VsZWN0aW9uOiAnc2luZ2xlJyxcbiAgICAgIHJvd0NsYXNzOiAneml0aS10YWJsZS1yb3cnLFxuICAgICAgcm93SGVpZ2h0OiB0aGlzLnJvd0hlaWdodCxcbiAgICAgIGltbXV0YWJsZURhdGE6IHRydWUsXG4gICAgICBzdXBwcmVzc1Jvd0NsaWNrU2VsZWN0aW9uOiB0cnVlLFxuICAgICAgc3VwcHJlc3NIb3Jpem9udGFsU2Nyb2xsOiBmYWxzZSxcbiAgICAgIHN0b3BFZGl0aW5nV2hlbkdyaWRMb3Nlc0ZvY3VzOiB0cnVlLFxuICAgICAgc3VwcHJlc3NQcm9wZXJ0eU5hbWVzQ2hlY2s6IHRydWUsXG4gICAgICBhbmltYXRlUm93czogdHJ1ZSxcbiAgICAgIGRlZmF1bHRDb2xEZWY6IHtcbiAgICAgICAgc29ydGFibGU6IGZhbHNlLFxuICAgICAgICBmaWx0ZXI6IGZhbHNlLCAvLyBzZXQgZmlsdGVyaW5nIG9uIGZvciBhbGwgY29sdW1uc1xuICAgICAgfSxcbiAgICAgIG9uUm93RHJhZ01vdmU6IChwYXJhbXMpID0+IHtcbiAgICAgICAgdGhpcy5kcmFnU3RhcnQuZW1pdChwYXJhbXMpO1xuICAgICAgfSxcbiAgICAgIG9uUm93RHJhZ0xlYXZlOiAocGFyYW1zKSA9PiB7XG4gICAgICAgIHRoaXMuZHJhZ0xlYXZlLmVtaXQocGFyYW1zKTtcbiAgICAgIH0sXG4gICAgICBvblJvd0RyYWdFbmQ6ICgpID0+IHtcbiAgICAgICAgJCgnLmF0dHJpYnV0ZS1pdGVtJykuc2hvdygpO1xuICAgICAgICAkKCcuZHJhZy1ob3ZlcicpLnJlbW92ZUNsYXNzKCdkcmFnLWhvdmVyJyk7XG4gICAgICAgICQoJyNDb2x1bW5WaXNpYmlsaXR5SGVhZGVyJykudHJpZ2dlcignY2xpY2snKTtcbiAgICAgICAgJCgnLm5ldy1hdHRyaWJ1dGUtdGFyZ2V0JykuaGlkZSgpO1xuICAgICAgfSxcbiAgICAgIHJvd0NsYXNzUnVsZXM6IHtcbiAgICAgICAgLy8gcm93IHN0eWxlIGZ1bmN0aW9uXG4gICAgICAgICdyb3ctaW52YWxpZCc6IGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgICByZXR1cm4gXy5nZXQocGFyYW1zLCAnZGF0YS5pbnZhbGlkJyk7XG4gICAgICAgIH0sXG4gICAgICAgICdyb3ctY29waWVkJzogZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgICAgIHJldHVybiBfLmdldChwYXJhbXMsICdkYXRhLmNvcGllZCcpO1xuICAgICAgICB9LFxuICAgICAgICAncm93LWNoaWxkLXN1Yi1wcm9jZXNzJzogZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIHBhcmFtcy5hcGkudmlldyA9PT0gJ3Byb2Nlc3MnICYmXG4gICAgICAgICAgICAgICFfLmdldChwYXJhbXMsICdkYXRhLmlzUm9vdCcpICYmXG4gICAgICAgICAgICAgICFfLmlzRW1wdHkoXy5nZXQocGFyYW1zLCAnZGF0YS5zdWJwcm9jZXNzSWQnKSlcbiAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICAncm93LWNoaWxkJzogZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIChwYXJhbXMuYXBpLnZpZXcgPT09ICdwcm9jZXNzJyB8fCBwYXJhbXMuYXBpLnZpZXcgPT09ICd1c2VyLXJvbGVzJykgJiZcbiAgICAgICAgICAgICAgIV8uZ2V0KHBhcmFtcywgJ2RhdGEuaXNSb290JykgJiZcbiAgICAgICAgICAgICAgIV8uaXNFbXB0eShfLmdldChwYXJhbXMsICdkYXRhLnBhcmVudElkJykpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgJ3Jvdy1jaGlsZC1zZWNvbmQnOiBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgcGFyYW1zLmFwaS52aWV3ID09PSAncHJvY2VzcycgJiZcbiAgICAgICAgICAgICAgIV8uZ2V0KHBhcmFtcywgJ2RhdGEuaXNSb290JykgJiZcbiAgICAgICAgICAgICAgXy5nZXQocGFyYW1zLCAnZGF0YS5pc1BhcmFsbGVsJylcbiAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICAncm93LWNoaWxkLWV2ZW4nOiBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgKHBhcmFtcy5hcGkudmlldyA9PT0gJ3Byb2Nlc3MnIHx8IHBhcmFtcy5hcGkudmlldyA9PT0gJ3VzZXItcm9sZXMnKSAmJlxuICAgICAgICAgICAgICBfLmdldChwYXJhbXMsICdkYXRhLnBhcmVudEluZGV4JykgJSAyID4gMFxuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgICdyb3ctY2hpbGQtb2RkJzogZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIChwYXJhbXMuYXBpLnZpZXcgPT09ICdwcm9jZXNzJyB8fCBwYXJhbXMuYXBpLnZpZXcgPT09ICd1c2VyLXJvbGVzJykgJiZcbiAgICAgICAgICAgICAgXy5nZXQocGFyYW1zLCAnZGF0YS5wYXJlbnRJbmRleCcpICUgMiA9PT0gMFxuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgICdyb3ctY2hpbGQtd2Fybic6IGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgICByZXR1cm4gcGFyYW1zLmFwaS52aWV3ID09PSAncHJvY2VzcycgJiYgXy5nZXQocGFyYW1zLCAnZGF0YS5zdGF0ZScpID09PSAnV0FSTklORyc7XG4gICAgICAgIH0sXG4gICAgICAgICdyb3ctY2hpbGQtaGVhZGVyJzogZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgICAgIHJldHVybiBwYXJhbXMuYXBpLnZpZXcgPT09ICdwcm9jZXNzJyAmJiBfLmdldChwYXJhbXMsICdkYXRhLnJvd1R5cGUnKSA9PT0gJ3N0ZXAtaGVhZGVyJztcbiAgICAgICAgfSxcbiAgICAgICAgJ3Jvdy1yb2xlLWl0ZW0nOiBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICAgICAgcmV0dXJuIF8uZ2V0KHBhcmFtcywgJ2RhdGEucm9sZUl0ZW0nKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBnZXRSb3dIZWlnaHQ6IChwYXJhbXMpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVtVG9QeCgzLjEyNSk7XG4gICAgICB9LFxuICAgICAgb25DZWxsRWRpdGluZ1N0b3BwZWQ6IChldmVudE9iaikgPT4ge1xuICAgICAgICBpZiAoIXRoaXMudmFsaWRhdGVTZXJ2aWNlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpZWxkID0gXy5nZXQoZXZlbnRPYmosICdjb2xEZWYuZmllbGQnLCAnJyk7XG4gICAgICAgIGlmIChfLmluY2x1ZGVzKGZpZWxkLnRvTG93ZXJDYXNlKCksICdhdHRyaWJ1dGUnKSkge1xuICAgICAgICAgIGNvbnN0IG5ld1ZhbCA9IGV2ZW50T2JqLm5ld1ZhbHVlLnNwbGl0KCcsJyk7XG4gICAgICAgICAgXy5zZXQoZXZlbnRPYmosIGBkYXRhLiR7ZmllbGR9YCwgbmV3VmFsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfLnNldChldmVudE9iaiwgYGRhdGEuJHtmaWVsZH1gLCBldmVudE9iai5uZXdWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdmFsaWRhdGVUYWJsZShldmVudE9iaik7XG4gICAgICB9LFxuICAgICAgZ2V0Um93Tm9kZUlkOiAoZGF0YSkgPT4gZGF0YS5uYW1lLFxuICAgICAgb25Cb2R5U2Nyb2xsOiAoc2Nyb2xsZXIpID0+IHtcbiAgICAgICAgdGhpcy5faGFuZGxlVGFibGVTY3JvbGwoc2Nyb2xsZXIpO1xuICAgICAgfSxcbiAgICAgIG9uR3JpZFJlYWR5OiAoZ3JpZCkgPT4ge1xuICAgICAgICBncmlkLmFwaS56aXRpQWxsVG9nZ2xlZCA9IGZhbHNlO1xuICAgICAgICBncmlkLmFwaS56aXRpSGlkZUNvbHVtbiA9IHRoaXMuc2V0Q29sdW1uVmlzaWJpbGl0eUNvbHVtbi5iaW5kKHRoaXMpO1xuICAgICAgICBncmlkLmFwaS52YWxpZGF0ZVRhYmxlID0gdGhpcy5fdmFsaWRhdGVUYWJsZS5iaW5kKHRoaXMpO1xuICAgICAgICBncmlkLmFwaS52aWV3ID0gdGhpcy5fdmlldztcbiAgICAgICAgZ3JpZC5hcGkueml0aVJvd0RhdGEgPSB0aGlzLnJvd0RhdGE7XG4gICAgICAgIGdyaWQuYXBpLm9wZW5IZWFkZXJGaWx0ZXIgPSB0aGlzLm9wZW5IZWFkZXJGaWx0ZXIuYmluZCh0aGlzKTtcblxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgICAgIGdyaWQuYXBpLnJvd3NUb2dnbGVkID0gdGhpcy5yb3dzVG9nZ2xlZCA/IHRoaXMucm93c1RvZ2dsZWQuYmluZCh0aGlzKSA6ICgpID0+IHt9O1xuICAgICAgICBpZiAodGhpcy5zZXJ2ZXJTaWRlRGF0YVNvdXJjZSkge1xuICAgICAgICAgIGdyaWQuYXBpLnNldFNlcnZlclNpZGVEYXRhc291cmNlKHRoaXMuc2VydmVyU2lkZURhdGFTb3VyY2UpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3ZjLmdyaWRPYmogPSBncmlkO1xuICAgICAgICBfLmRlZmVyKHRoaXMuX2FwcGx5Q29sdW1uU3RhdGUuYmluZCh0aGlzKSk7XG4gICAgICB9LFxuICAgICAgb25Db2x1bW5WaXNpYmxlOiAoZXZlbnRPYmopID0+IHtcbiAgICAgICAgaWYgKCFldmVudE9iai5jb2x1bW4pIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVDb2x1bW5WaXNpYmlsaXR5KGV2ZW50T2JqLmNvbHVtbi5jb2xEZWYuY29sSWQsIGV2ZW50T2JqLnZpc2libGUpO1xuICAgICAgICBpZiAoZXZlbnRPYmoudmlzaWJsZSkge1xuICAgICAgICAgIHRoaXMuc3ZjLmdyaWRPYmouYXBpLm1vdmVDb2x1bW5zKFxuICAgICAgICAgICAgICBbZXZlbnRPYmouY29sdW1uLmNvbERlZi5jb2xJZF0sXG4gICAgICAgICAgICAgIHRoaXMubWVyZ2VkQ29sdW1uRGVmaW5pdGlvbnMubGVuZ3RoIC0gMVxuICAgICAgICAgICk7XG4gICAgICAgICAgXy5kZWZlcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN2Yy5ncmlkT2JqLmFwaS5lbnN1cmVDb2x1bW5WaXNpYmxlKGV2ZW50T2JqLmNvbHVtbi5jb2xEZWYuY29sSWQpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3VwZGF0ZUdyaWRDb2x1bW5zKCk7XG4gICAgICAgIHRoaXMuc3ZjLnNhdmVDb2x1bW5TdGF0ZSgpO1xuICAgICAgfSxcbiAgICAgIG9uRmlyc3REYXRhUmVuZGVyZWQ6IChldmVudE9iaikgPT4ge1xuICAgICAgICB0aGlzLnN2Yy5yZXNpemVHcmlkQ29sdW1ucygpO1xuICAgICAgICB0aGlzLmdyaWRSZW5kZXJlZCA9IHRydWU7XG4gICAgICB9LFxuICAgICAgb25Db2x1bW5QaW5uZWQ6IChldmVudE9iaikgPT4ge1xuICAgICAgICBpZiAoIWV2ZW50T2JqLmNvbHVtbikge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb2xJZCA9IGV2ZW50T2JqLmNvbHVtbi5jb2xEZWYuY29sSWQ7XG4gICAgICAgIGNvbnN0IHBpbm5lZCA9IGV2ZW50T2JqLnBpbm5lZCA9PT0gJ2xlZnQnO1xuICAgICAgICB0aGlzLm1lcmdlZENvbHVtbkRlZmluaXRpb25zID0gXy5tYXAodGhpcy5tZXJnZWRDb2x1bW5EZWZpbml0aW9ucywgKGNvbERlZikgPT4ge1xuICAgICAgICAgIGlmIChjb2xEZWYuY29sSWQgPT09IGNvbElkKSB7XG4gICAgICAgICAgICBjb2xEZWYubG9ja1Bvc2l0aW9uID0gcGlubmVkO1xuICAgICAgICAgICAgY29sRGVmLnN1cHByZXNzTW92YWJsZSA9IHBpbm5lZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGNvbERlZjtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUdyaWRDb2x1bW5zKCk7XG4gICAgICAgIHRoaXMuc3ZjLnJlc2l6ZUdyaWRDb2x1bW5zKCk7XG4gICAgICAgIHRoaXMuc3ZjLnNhdmVDb2x1bW5TdGF0ZSgpO1xuICAgICAgfSxcbiAgICAgIG9uQ29sdW1uUmVzaXplZDogKGV2ZW50T2JqKSA9PiB7XG4gICAgICAgIGlmICghZXZlbnRPYmouY29sdW1uIHx8IGV2ZW50T2JqLnNvdXJjZSA9PT0gJ3NpemVDb2x1bW5zVG9GaXQnKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX29uQ29sdW1uc1Jlc2l6ZWREZWJvdW5jZWQoZXZlbnRPYmouY29sdW1uKTtcbiAgICAgIH0sXG4gICAgICBvbkNvbHVtbk1vdmVkOiAoZXZlbnRPYmopID0+IHtcbiAgICAgICAgdGhpcy5fc2F2ZUNvbHVtblN0YXRlRGVib3VuY2VkKCk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBfdmFsaWRhdGVUYWJsZShldmVudE9iaikge1xuICAgIHRoaXMucm93RGF0YVtldmVudE9iai5yb3dJbmRleF0gPSBldmVudE9iai5kYXRhO1xuICAgIF8uZGVsYXkoKCkgPT4ge1xuICAgICAgdGhpcy52YWxpZGF0ZVNlcnZpY2UodGhpcy5yb3dEYXRhKTtcbiAgICAgIF8uZGVsYXkoKCkgPT4ge1xuICAgICAgICB0aGlzLnN2Yy5ncmlkT2JqLmFwaS5yZWZyZXNoQ2VsbHMoe2ZvcmNlOiB0cnVlfSk7XG4gICAgICAgIHRoaXMuc3ZjLmdyaWRPYmouYXBpLnJlZHJhd1Jvd3MoKTtcbiAgICAgIH0sIDUwKTtcbiAgICB9LCA1MCk7XG4gIH1cblxuICBfYXBwbHlDb2x1bW5TdGF0ZSgpIHtcbiAgICBjb25zdCB0YWJsZVN0YXRlQ29va2llID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oYHppdGlfJHt0aGlzLnN2Yy50YWJsZUlkfV90YWJsZV9zdGF0ZWApO1xuICAgIGNvbnN0IHRhYmxlU3RhdGUgPSBKU09OLnBhcnNlKHRhYmxlU3RhdGVDb29raWUpO1xuICAgIGlmICh0YWJsZVN0YXRlKSB7XG4gICAgICB0aGlzLnN2Yy5ncmlkT2JqLmFwaS5hcHBseUNvbHVtblN0YXRlKHtzdGF0ZTogdGFibGVTdGF0ZX0pO1xuICAgICAgdGhpcy5fdXBkYXRlSGlkZGVuQ29sdW1ucygpO1xuICAgIH1cbiAgfVxuXG4gIF9hZGRDb2x1bW5FdmVudHMoKSB7XG4gICAgdGhpcy5fY29sdW1uRGVmaW5pdGlvbnMgPSBfLm1hcCh0aGlzLl9jb2x1bW5EZWZpbml0aW9ucywgKGNvbERlZikgPT4ge1xuICAgICAgY29sRGVmLnBpbkNvbHVtbiA9IHRoaXMuc3ZjLnBpbkNvbHVtbi5iaW5kKHRoaXMuc3ZjKTtcbiAgICAgIGNvbERlZi5jZWxsQ2xhc3MgPSB0aGlzLl9nZXRDZWxsU3R5bGUuYmluZCh0aGlzKTtcbiAgICAgIHJldHVybiBjb2xEZWY7XG4gICAgfSk7XG4gIH1cblxuICBfZ2V0Q2VsbFN0eWxlKHBhcmFtcykge1xuICAgIGlmICghdGhpcy5yb3dWYWxpZGF0aW9uIHx8IHRoaXMucm93VmFsaWRhdGlvbi5sZW5ndGggPD0gMCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gdGhpcy5yb3dWYWxpZGF0aW9uW3BhcmFtcy5ub2RlLnJvd0luZGV4XTtcbiAgICBpZiAoIXZhbGlkYXRpb25SZXN1bHQgfHwgIXZhbGlkYXRpb25SZXN1bHQuZXJyb3JzKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGNvbnN0IGZpZWxkID0gXy5nZXQocGFyYW1zLCAnY29sRGVmLmZpZWxkJywgJycpO1xuICAgIGlmICh2YWxpZGF0aW9uUmVzdWx0LmVycm9yc1tmaWVsZF0pIHtcbiAgICAgIHJldHVybiAneml0aS10YWJsZS1jZWxsLWVycm9yJztcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIHVwZGF0ZUNvbHVtblZpc2liaWxpdHkoY29sSWQsIHZpc2libGUpIHtcbiAgICB0aGlzLl9jb2x1bW5EZWZpbml0aW9ucyA9IF8ubWFwKHRoaXMuX2NvbHVtbkRlZmluaXRpb25zLCAoY29sRGVmKSA9PiB7XG4gICAgICBpZiAoY29sRGVmLmNvbElkID09PSBjb2xJZCkge1xuICAgICAgICBjb2xEZWYuaGlkZSA9ICF2aXNpYmxlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbERlZjtcbiAgICB9KTtcbiAgICBmb3IgKGNvbnN0IGNvbERlZiBvZiB0aGlzLm1lcmdlZENvbHVtbkRlZmluaXRpb25zKSB7XG4gICAgICBpZiAoY29sRGVmLmNvbElkID09PSBjb2xJZCkge1xuICAgICAgICBjb2xEZWYuaGlkZSA9ICF2aXNpYmxlO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLl91cGRhdGVIaWRkZW5Db2x1bW5zKCk7XG4gICAgdGhpcy5zdmMucmVzaXplR3JpZENvbHVtbnMoKTtcbiAgfVxuXG4gIHVwZGF0ZUVudGl0eVR5cGVMYWJlbCgpIHtcbiAgICBzd2l0Y2godGhpcy5zdmMudGFibGVJZCkge1xuICAgICAgY2FzZSAnYXBpLXNlc3Npb25zJzpcbiAgICAgICAgdGhpcy5lbnRpdHlUeXBlTGFiZWwgPSAnQVBJIFNlc3Npb25zJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhdXRoLXBvbGljaWVzJzpcbiAgICAgICAgdGhpcy5lbnRpdHlUeXBlTGFiZWwgPSAnQXV0aCBQb2xpY2llcyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY2VydGlmaWNhdGUtYXV0aG9yaXRpZXMnOlxuICAgICAgICB0aGlzLmVudGl0eVR5cGVMYWJlbCA9ICdDZXJ0aWZpY2F0ZSBBdXRob3JpdGllcyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZXh0LWp3dC1zaWduZXJzJzpcbiAgICAgICAgdGhpcy5lbnRpdHlUeXBlTGFiZWwgPSAnRXh0ZXJuYWwgSldUIFNpZ25lcnMnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2lkZW50aXRpZXMnOlxuICAgICAgICB0aGlzLmVudGl0eVR5cGVMYWJlbCA9ICdJZGVudGl0aWVzJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdwb3N0dXJlLWNoZWNrcyc6XG4gICAgICAgIHRoaXMuZW50aXR5VHlwZUxhYmVsID0gJ1Bvc3R1cmUgQ2hlY2tzJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdlZGdlLXJvdXRlcnMnOlxuICAgICAgICB0aGlzLmVudGl0eVR5cGVMYWJlbCA9ICdFZGdlIFJvdXRlcnMnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NlcnZpY2VzJzpcbiAgICAgICAgdGhpcy5lbnRpdHlUeXBlTGFiZWwgPSAnU2VydmljZXMnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NvbmZpZ3VyYXRpb25zJzpcbiAgICAgICAgdGhpcy5lbnRpdHlUeXBlTGFiZWwgPSAnQ29uZmlncyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY29uZmlnLXR5cGVzJzpcbiAgICAgICAgdGhpcy5lbnRpdHlUeXBlTGFiZWwgPSAnQ29uZmlnIFR5cGVzJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzZXJ2aWNlLXBvbGljaWVzJzpcbiAgICAgICAgdGhpcy5lbnRpdHlUeXBlTGFiZWwgPSAnU2VydmljZSBQb2xpY2llcyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZWRnZS1yb3V0ZXItcG9saWNpZXMnOlxuICAgICAgICB0aGlzLmVudGl0eVR5cGVMYWJlbCA9ICdFZGdlIFJvdXRlciBQb2xpY2llcyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc2VydmljZS1lZGdlLXJvdXRlci1wb2xpY2llcyc6XG4gICAgICAgIHRoaXMuZW50aXR5VHlwZUxhYmVsID0gJ1NlcnZpY2UgRWRnZSBSb3V0ZXIgUG9saWNpZXMnO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnc2Vzc2lvbnMnOlxuICAgICAgICB0aGlzLmVudGl0eVR5cGVMYWJlbCA9ICdTZXNzaW9ucyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndGVybWluYXRvcnMnOlxuICAgICAgICB0aGlzLmVudGl0eVR5cGVMYWJlbCA9ICdUZXJtaW5hdG9ycyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndHJhbnNpdC1yb3V0ZXJzJzpcbiAgICAgICAgdGhpcy5lbnRpdHlUeXBlTGFiZWwgPSAnVHJhbnNpdCBSb3V0ZXJzJztcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgc2V0Q29sdW1uVmlzaWJpbGl0eUNvbHVtbihjb2x1bW4sIHZpc2libGUpIHtcbiAgICB0aGlzLnN2Yy5ncmlkT2JqLmFwaS5zZXRDb2x1bW5zVmlzaWJsZShbY29sdW1uLmNvbElkXSwgdmlzaWJsZSk7XG4gICAgdGhpcy5zdmMuZ3JpZE9iai5hcGkucmVmcmVzaEhlYWRlcigpO1xuICAgIF8uZGVmZXIoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVDb2x1bW5WaXNpYmlsaXR5KGNvbHVtbi5jb2xJZCwgdmlzaWJsZSk7XG4gICAgfSk7XG4gIH1cblxuICBfdXBkYXRlSGlkZGVuQ29sdW1ucygpIHtcbiAgICBjb25zdCBncmlkQ29sdW1uRGVmcyA9IHRoaXMuc3ZjLmdyaWRPYmo/LmFwaT8uY29sdW1uTW9kZWw/LmdyaWRDb2x1bW5zO1xuICAgIGNvbnN0IHZpc2libGVHcmlkQ29sdW1ucyA9IGdyaWRDb2x1bW5EZWZzLmZpbHRlcigoY29sKSA9PiBjb2wudmlzaWJsZSk7XG4gICAgY29uc3QgaGlkZGVuR3JpZENvbHVtbnMgPSBncmlkQ29sdW1uRGVmcy5maWx0ZXIoKGNvbCkgPT4gIWNvbC52aXNpYmxlKTtcbiAgICB0aGlzLnZpc2libGVDb2x1bW5zID0gXy5tYXAodmlzaWJsZUdyaWRDb2x1bW5zLCAnY29sRGVmJyk7XG4gICAgdGhpcy52aXNpYmxlQ29sdW1uSWRzID0gXy5tYXAodGhpcy52aXNpYmxlQ29sdW1ucywgJ2ZpZWxkJyk7XG4gICAgdGhpcy5oaWRkZW5Db2x1bW5zID0gXy5tYXAoaGlkZGVuR3JpZENvbHVtbnMsICdjb2xEZWYnKTtcbiAgICB0aGlzLmhpZGRlbkNvbHVtbklkcyA9IF8ubWFwKHRoaXMuaGlkZGVuQ29sdW1ucywgJ2ZpZWxkJyk7XG4gIH1cblxuICBhZGRIZWFkZXJNZW51KGNvbHVtbkRlZnMgPSBbXSkge1xuICAgIGNvbHVtbkRlZnMuZm9yRWFjaCgoY29sdW1uRGVmKSA9PiB7XG4gICAgICBpZiAoY29sdW1uRGVmLnVzZUhlYWRlck1lbnUpIHtcbiAgICAgICAgY29sdW1uRGVmLmhlYWRlckNvbXBvbmVudFBhcmFtcyA9IHtcbiAgICAgICAgICBvcGVuSGVhZGVyTWVudTogKCRldmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vcGVuSGVhZGVyQWN0aW9uTWVudSgkZXZlbnQpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY2xvc2VNZW51OiAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VBY3Rpb25NZW51KCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIF9hZGREZWZhdWx0Q29sdW1uRGVmcygpIHtcbiAgICB0aGlzLmFkZEhlYWRlck1lbnUodGhpcy5fY29sdW1uRGVmaW5pdGlvbnMpO1xuICAgIHRoaXMubWVyZ2VkQ29sdW1uRGVmaW5pdGlvbnMgPSBfLmNsb25lRGVlcCh0aGlzLl9jb2x1bW5EZWZpbml0aW9ucyk7XG4gICAgaWYgKHRoaXMuX3ZpZXcgPT09ICdwcm9jZXNzJykge1xuICAgICAgY29uc3QgY2VsbFBhcmFtcyA9IF8uY2xvbmVEZWVwKHRoaXMubWVudUNvbHVtbkRlZmluaXRpb24uY2VsbFJlbmRlcmVyUGFyYW1zKTtcbiAgICAgIHRoaXMubWVyZ2VkQ29sdW1uRGVmaW5pdGlvbnNbdGhpcy5tZXJnZWRDb2x1bW5EZWZpbml0aW9ucy5sZW5ndGggLSAxXS5jZWxsUmVuZGVyZXJQYXJhbXMgPSBfLm1lcmdlKFxuICAgICAgICAgIHRoaXMubWVyZ2VkQ29sdW1uRGVmaW5pdGlvbnNbdGhpcy5tZXJnZWRDb2x1bW5EZWZpbml0aW9ucy5sZW5ndGggLSAxXS5jZWxsUmVuZGVyZXJQYXJhbXMsXG4gICAgICAgICAgY2VsbFBhcmFtc1xuICAgICAgKTtcbiAgICAgIHRoaXMubWVyZ2VkQ29sdW1uRGVmaW5pdGlvbnNbdGhpcy5tZXJnZWRDb2x1bW5EZWZpbml0aW9ucy5sZW5ndGggLSAxXS5oZWFkZXJDb21wb25lbnRQYXJhbXMgPVxuICAgICAgICAgIHRoaXMubWVudUNvbHVtbkRlZmluaXRpb24uaGVhZGVyQ29tcG9uZW50UGFyYW1zO1xuICAgIH0gZWxzZSBpZiAoICh0aGlzLm9wdGlvbnMubm9TZWxlY3QgJiYgdGhpcy5vcHRpb25zLm5vTWVudSkpIHtcbiAgICAgIC8vIERvbid0IGFkZCBhbnkgYWRkaXRpb25hbCBjb2x1bW5zXG4gICAgfSBlbHNlIGlmICggKHRoaXMub3B0aW9ucy5ub1NlbGVjdCAmJiAhdGhpcy5vcHRpb25zLm5vTWVudSkpIHtcbiAgICAgIHRoaXMubWVyZ2VkQ29sdW1uRGVmaW5pdGlvbnMucHVzaCh0aGlzLm1lbnVDb2x1bW5EZWZpbml0aW9uKTtcbiAgICB9IGVsc2UgaWYgKCAhdGhpcy5vcHRpb25zLm5vU2VsZWN0ICYmIHRoaXMub3B0aW9ucy5ub01lbnUpIHtcbiAgICAgIHRoaXMubWVyZ2VkQ29sdW1uRGVmaW5pdGlvbnMucHVzaCh0aGlzLnNlbGVjdENvbHVtbkRlZmluaXRpb24pO1xuICAgIH0gIGVsc2UgaWYgKHRoaXMuX3ZpZXcgIT09ICd1cGxvYWQnKSB7XG4gICAgICB0aGlzLm1lcmdlZENvbHVtbkRlZmluaXRpb25zLnNwbGljZSgwLCAwLCB0aGlzLnNlbGVjdENvbHVtbkRlZmluaXRpb24pO1xuICAgICAgdGhpcy5tZXJnZWRDb2x1bW5EZWZpbml0aW9ucy5wdXNoKHRoaXMubWVudUNvbHVtbkRlZmluaXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIF9zdG9yZUluaXRpYWxDb2x1bW5EZWZzKCkge1xuICAgIHRoaXMuX2luaXRpYWxDb2x1bW5EZWZzID0gXy5jbG9uZURlZXAodGhpcy5tZXJnZWRDb2x1bW5EZWZpbml0aW9ucyk7XG4gIH1cblxuICBfaW5pdENvbHVtblZpc2liaWxpdHkoKSB7XG4gICAgdGhpcy52aXNpYmxlQ29sdW1ucyA9IHRoaXMuX2NvbHVtbkRlZmluaXRpb25zLmZpbHRlcigoY29sKSA9PiAhY29sLmhpZGUpO1xuICAgIHRoaXMuaGlkZGVuQ29sdW1ucyA9IHRoaXMuX2NvbHVtbkRlZmluaXRpb25zLmZpbHRlcigoY29sKSA9PiBjb2wuaGlkZSk7XG4gICAgdGhpcy52aXNpYmxlQ29sdW1uSWRzID0gXy5tYXAodGhpcy52aXNpYmxlQ29sdW1ucywgJ2ZpZWxkJyk7XG4gIH1cblxuICBfdXBkYXRlR3JpZENvbHVtbnMoKSB7XG4gICAgdGhpcy5fc2V0Q29sdW1uV2lkdGhzKCk7XG4gICAgdGhpcy5zdmMuZ3JpZE9iai5hcGkuc2V0Q29sdW1uRGVmcyh0aGlzLm1lcmdlZENvbHVtbkRlZmluaXRpb25zKTtcbiAgICB0aGlzLnN2Yy5ncmlkT2JqLmFwaS5yZWZyZXNoSGVhZGVyKCk7XG4gIH1cblxuICBfc2V0Q29sdW1uV2lkdGhzKCkge1xuICAgIGlmICh0aGlzLl92aWV3ID09PSAndXBsb2FkJyB8fCB0aGlzLl92aWV3ID09PSAncHJvY2VzcycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29sV2lkdGhzQ29va2llID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oYHppdGlfJHt0aGlzLnN2Yy50YWJsZUlkfV9jb2x1bW5fd2lkdGhzYCk7XG4gICAgaWYgKCFfLmlzRW1wdHkoY29sV2lkdGhzQ29va2llKSkge1xuICAgICAgY29uc3QgY29sV2lkdGhzID0gSlNPTi5wYXJzZShjb2xXaWR0aHNDb29raWUpO1xuICAgICAgXy5mb3JFYWNoKGNvbFdpZHRocywgKGNvbFdpZHRoLCBjb2xJZCkgPT4ge1xuICAgICAgICBfLmZvckVhY2godGhpcy5tZXJnZWRDb2x1bW5EZWZpbml0aW9ucywgKGNvbERlZikgPT4ge1xuICAgICAgICAgIGlmIChjb2xEZWYuY29sSWQgPT09IGNvbElkKSB7XG4gICAgICAgICAgICBjb2xEZWYud2lkdGggPSBjb2xXaWR0aDtcbiAgICAgICAgICAgIGNvbERlZi5zdXBwcmVzc1NpemVUb0ZpdCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIF9zZXRDb2x1bW5PcmRlckFuZFZpc2liaWxpdHkoKSB7XG4gICAgaWYgKHRoaXMuX3ZpZXcgPT09ICd1cGxvYWQnIHx8IHRoaXMuX3ZpZXcgPT09ICdwcm9jZXNzJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB0YWJsZVN0YXRlQ29va2llID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oYHppdGlfJHt0aGlzLnN2Yy50YWJsZUlkfV90YWJsZV9zdGF0ZWApO1xuICAgIGlmICghXy5pc0VtcHR5KHRhYmxlU3RhdGVDb29raWUpIHx8IHR5cGVvZiB0YWJsZVN0YXRlQ29va2llID09PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc3QgY29sU3RhdGVzID0gSlNPTi5wYXJzZSh0YWJsZVN0YXRlQ29va2llKTtcbiAgICAgIGNvbnN0IGNvbHVtbkluZGV4ZXMgPSBbXTtcbiAgICAgIF8uZm9yRWFjaChjb2xTdGF0ZXMsIChjb2xTdGF0ZSkgPT4ge1xuICAgICAgICBfLmZvckVhY2godGhpcy5tZXJnZWRDb2x1bW5EZWZpbml0aW9ucywgKGNvbERlZikgPT4ge1xuICAgICAgICAgIGlmIChjb2xEZWYuY29sSWQgPT09IGNvbFN0YXRlLmNvbElkKSB7XG4gICAgICAgICAgICBjb2x1bW5JbmRleGVzLnB1c2goY29sRGVmKTtcbiAgICAgICAgICAgIGNvbERlZi5oaWRlID0gY29sU3RhdGUuaGlkZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBfLmZvckVhY2godGhpcy5tZXJnZWRDb2x1bW5EZWZpbml0aW9ucywgKGNvbERlZikgPT4ge1xuICAgICAgICBsZXQgY29sRm91bmQgPSBmYWxzZTtcbiAgICAgICAgXy5mb3JFYWNoKGNvbHVtbkluZGV4ZXMsIChjb2xJbmRleCkgPT4ge1xuICAgICAgICAgIGlmIChjb2xEZWYuY29sSWQgPT09IGNvbEluZGV4LmNvbElkKSB7XG4gICAgICAgICAgICBjb2xGb3VuZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCFjb2xGb3VuZCkge1xuICAgICAgICAgIGNvbHVtbkluZGV4ZXMucHVzaChjb2xEZWYpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMubWVyZ2VkQ29sdW1uRGVmaW5pdGlvbnMgPSBjb2x1bW5JbmRleGVzO1xuICAgIH1cbiAgfVxuXG4gIF9oYW5kbGVUYWJsZVNjcm9sbChzY3JvbGxlcik6IHZvaWQge1xuICAgIGNvbnN0IHNjcm9sbFdpZHRoID0gJCgnLmFnLWNlbnRlci1jb2xzLWNvbnRhaW5lcicpLndpZHRoKCk7XG4gICAgY29uc3Qgdmlld1dpZHRoID0gJCgnLmFnLWNlbnRlci1jb2xzLXZpZXdwb3J0Jykud2lkdGgoKTtcbiAgICBjb25zdCBzY3JvbGxhYmxlV2lkdGggPSBzY3JvbGxXaWR0aCAtIHZpZXdXaWR0aDtcbiAgICBpZiAoc2Nyb2xsZXIubGVmdCA+IDApIHtcbiAgICAgICQoJy5hZy1waW5uZWQtbGVmdC1jb2xzLWNvbnRhaW5lcicpLmFkZENsYXNzKCdhZy1waW5uZWQtbGVmdC1zaGFkb3cnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgJCgnLmFnLXBpbm5lZC1sZWZ0LWNvbHMtY29udGFpbmVyJykucmVtb3ZlQ2xhc3MoJ2FnLXBpbm5lZC1sZWZ0LXNoYWRvdycpO1xuICAgIH1cbiAgICBpZiAoc2Nyb2xsZXIubGVmdCA8IHNjcm9sbGFibGVXaWR0aCAtIDIpIHtcbiAgICAgICQoJy5hZy1waW5uZWQtcmlnaHQtY29scy1jb250YWluZXInKS5hZGRDbGFzcygnYWctcGlubmVkLXJpZ2h0LXNoYWRvdycpO1xuICAgIH0gZWxzZSB7XG4gICAgICAkKCcuYWctcGlubmVkLXJpZ2h0LWNvbHMtY29udGFpbmVyJykucmVtb3ZlQ2xhc3MoJ2FnLXBpbm5lZC1yaWdodC1zaGFkb3cnKTtcbiAgICB9XG4gIH1cblxuICByZW1Ub1B4KHJlbVZhbHVlKSB7XG4gICAgY29uc3Qgcm9vdEZvbnRTaXplOiBhbnkgPSBwYXJzZUZsb2F0KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuZm9udFNpemUpO1xuICAgIHJldHVybiByZW1WYWx1ZSAqIHJvb3RGb250U2l6ZTtcbiAgfTtcbn1cbiIsIjxkaXYgI3RhYmxlQ29udGFpbmVyIGNsYXNzPVwiZGF0YS10YWJsZS1jb250YWluZXJcIiAqbmdJZj1cInNob3dUYWJsZTtlbHNlIG5vZGF0YVwiPlxuICAgIDxsaWItdGFibGUtZmlsdGVyLWJhclxuICAgICAgICAgICAgW3N0YXJ0Q291bnRdPVwic3RhcnRDb3VudFwiXG4gICAgICAgICAgICBbZW5kQ291bnRdPVwiZW5kQ291bnRcIlxuICAgICAgICAgICAgW3RvdGFsQ291bnRdPVwidG90YWxDb3VudFwiXG4gICAgICAgICAgICBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIlxuICAgICAgICAgICAgW2ZpbHRlck5hbWVdPVwiZmlsdGVyTmFtZVwiXG4gICAgICAgICAgICBbZmlsdGVyQ29sdW1uXT1cImZpbHRlckNvbHVtblwiXG4gICAgPjwvbGliLXRhYmxlLWZpbHRlci1iYXI+XG4gICAgPGxpYi10YWJsZS1oaWRkZW4tY29sdW1ucy1iYXJcbiAgICAgICAgICAgICpuZ0lmPVwiZ3JpZFJlbmRlcmVkICYmIHNob3dGaWx0ZXJCYXJcIlxuICAgICAgICAgICAgW2hpZGRlbkNvbHVtbnNdPVwiaGlkZGVuQ29sdW1uc1wiXG4gICAgICAgICAgICAoY29sdW1uVmlzaWJpbGl0eUNoYW5nZWQpPVwiY29sdW1uVmlzaWJpbGl0eUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgPjwvbGliLXRhYmxlLWhpZGRlbi1jb2x1bW5zLWJhcj5cbiAgICA8ZGl2IChyZXNpemUpPVwicmVzaXplR3JpZENvbHVtbnNEZWJvdW5jZWQoJGV2ZW50KVwiIGNsYXNzPVwieml0aS1hZy1ncmlkXCIgaWQ9XCJJdGVtVGFibGVcIj5cbiAgICAgICAgPGFnLWdyaWQtYW5ndWxhclxuICAgICAgICAgICAgI25mQWdHcmlkXG4gICAgICAgICAgICBbY29sdW1uRGVmc109XCJtZXJnZWRDb2x1bW5EZWZpbml0aW9uc1wiXG4gICAgICAgICAgICBbY29tcG9uZW50c109XCJmcmFtZXdvcmtDb21wb25lbnRzXCJcbiAgICAgICAgICAgIFtnZXREYXRhUGF0aF09XCJzdmMuZ2V0RGF0YVBhdGhcIlxuICAgICAgICAgICAgW2dldFJvd0lkXT1cInN2Yy5nZXRSb3dOb2RlSWRcIlxuICAgICAgICAgICAgW2dyaWRPcHRpb25zXT1cImdyaWRPcHRpb25zXCJcbiAgICAgICAgICAgIFttb2R1bGVzXT1cImdyaWRNb2R1bGVzXCJcbiAgICAgICAgICAgIFtyb3dEYXRhXT1cInJvd0RhdGFcIlxuICAgICAgICAgICAgW3Rvb2x0aXBIaWRlRGVsYXldPVwiMjAwMDBcIlxuICAgICAgICAgICAgW3Rvb2x0aXBTaG93RGVsYXldPVwiMFwiXG4gICAgICAgICAgICAoZ3JpZFJlYWR5KT1cIm9uR3JpZFJlYWR5KCRldmVudClcIlxuICAgICAgICAgICAgY2xhc3M9XCJ6aXRpLWFnLWdyaWQtdGFibGUgYWctdGhlbWUtYWxwaW5lIHJvd3NcIlxuICAgICAgICAgICAgaWQ9XCJJdGVtR3JpZFwiXG4gICAgICAgID5cbiAgICAgICAgPC9hZy1ncmlkLWFuZ3VsYXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBvcGVuOiBvcGVuSGVhZGVyTWVudSB9XCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgbGVmdDogbWVudUxlZnQgKyAncHgnLCB0b3A6IG1lbnVUb3AgKyAncHgnIH1cIlxuICAgICAgICAgICAgY2xhc3M9XCJ0TWVudSBhY3Rpb24tbWVudSBoZWFkZXItbWVudVwiXG4gICAgICAgICAgICBpZD1cIkhlYWRlckFjdGlvbk1lbnVcIlxuICAgID5cbiAgICAgICAgPGRpdiAoY2xpY2spPVwicmVzZXRUYWJsZUNvbHVtbnMoKVwiIGNsYXNzPVwidEFjdGlvblJvd1wiIGlkPVwiUmVzZXRUYWJsZUJ1dHRvblwiPlJlc3RvcmUgRGVmYXVsdCBUYWJsZTwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgaGVhZGVyQWN0aW9uIG9mIGhlYWRlckFjdGlvbnNcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGlvblJlcXVlc3RlZC5lbWl0KHsgYWN0aW9uOiBoZWFkZXJBY3Rpb24uYWN0aW9uIH0pXCJcbiAgICAgICAgICAgIGNsYXNzPVwidEFjdGlvblJvd1wiXG4gICAgICAgICAgICBpZD1cIlJlc2V0VGFibGVCdXR0b25cIlxuICAgICAgICA+XG4gICAgICAgICAgICB7e2hlYWRlckFjdGlvbi5uYW1lIHx8IGhlYWRlckFjdGlvbi5sYWJlbH19XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgb3Blbjogb3Blbk1lbnUgfVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGxlZnQ6IG1lbnVMZWZ0ICsgJ3B4JywgdG9wOiBtZW51VG9wICsgJ3B4JyB9XCJcbiAgICAgICAgICAgIGNsYXNzPVwidE1lbnUgYWN0aW9uLW1lbnUgaXRlbS1tZW51XCJcbiAgICAgICAgICAgIGlkPVwiUm93QWN0aW9uTWVudVwiXG4gICAgICAgICAgICAjY29udGV4dE1lbnVcbiAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbWVudUl0ZW0gb2YgbWVudUl0ZW1zXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uUmVxdWVzdGVkLmVtaXQoeyBhY3Rpb246IG1lbnVJdGVtLmFjdGlvbiwgaXRlbTogc2VsZWN0ZWRJdGVtIH0pXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J21lbnUtaXRlbS1oaWRkZW4nOiBoaWRlTWVudUl0ZW0obWVudUl0ZW0sIHNlbGVjdGVkSXRlbSkgfVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0QWN0aW9uUm93XCJcbiAgICAgICAgICAgICAgICBpZD1cIlRhYmxlQWN0aW9uQnV0dG9uX3t7bWVudUl0ZW0uYWN0aW9ufX1cIlxuICAgICAgICA+XG4gICAgICAgICAgICB7e21lbnVJdGVtLm5hbWUgfHwgbWVudUl0ZW0ubGFiZWx9fVxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICAgICAgICAoY2xpY2tPdXRzaWRlKT1cImNsb3NlSGVhZGVyRmlsdGVyKCRldmVudClcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBvcGVuOiBzaG93RmlsdGVyT3B0aW9ucyB9XCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgbGVmdDogbWVudUxlZnQgKyAncHgnLCB0b3A6IG1lbnVUb3AgKyAncHgnIH1cIlxuICAgICAgICAgICAgY2xhc3M9XCJ0TWVudSBhY3Rpb24tbWVudSBoZWFkZXItbWVudVwiXG4gICAgICAgICAgICBpZD1cIkhlYWRlckZpbHRlck9wdGlvbnNcIlxuICAgID5cbiAgICAgICAgPGRpdiAoY2xpY2spPVwiYXBwbHlGaWx0ZXIoJGV2ZW50LCBmaWx0ZXIpXCIgKm5nRm9yPVwibGV0IGZpbHRlciBvZiBmaWx0ZXJPcHRpb25zXCIgY2xhc3M9XCJ0QWN0aW9uUm93XCIgW25nQ2xhc3NdPVwieydoYXMtaWNvbic6IGZpbHRlci5pY29ufVwiIFtpZF09XCJmaWx0ZXIuY29sdW1uSWRcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmlsdGVyLmJ1YmJsZUNsYXNzXCIgW25nQ2xhc3NdPVwiZmlsdGVyLmJ1YmJsZUNsYXNzXCIgY2xhc3M9XCJidWJibGVcIj5cbiAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZmlsdGVyLnNob3dMb2FkZXJcIiBjbGFzcz1cImNpcmN1bGFyXCIgdmlld0JveD1cIjI1IDI1IDUwIDUwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBhdGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN4PVwiNTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN5PVwiNTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByPVwiMjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1taXRlcmxpbWl0PVwiMTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjNcIlxuICAgICAgICAgICAgICAgICAgICA+PC9jaXJjbGU+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpbHRlci5pY29uXCIgY2xhc3M9XCJvcy1pY29uIHt7ZmlsdGVyLmljb259fVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIHt7IGZpbHRlci5sYWJlbCB9fVxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwic2hvd0RhdGVUaW1lUGlja2VyXCIgY2xhc3M9XCJkYXRlLXRpbWUtY29udGFpbmVyIGRhdGEtdGFibGUtZGF0ZS10aW1lXCIgW25nU3R5bGVdPVwieyBsZWZ0OiBtZW51TGVmdCArICdweCcsIHRvcDogbWVudVRvcCArICdweCcgfVwiIChjbGlja091dHNpZGUpPVwiY2xvc2VEYXRlVGltZSgkZXZlbnQpXCI+XG4gICAgPHAtY2FsZW5kYXJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGF0ZVZhbHVlXCJcbiAgICAgICAgICAgIChvblNlbGVjdCk9XCJzZXREYXRlUmFuZ2VGaWx0ZXIoJ2N1c3RvbScpXCJcbiAgICAgICAgICAgIGRhdGVGb3JtYXQ9XCJtbS9kZC95eVwiXG4gICAgICAgICAgICBzZWxlY3Rpb25Nb2RlPVwicmFuZ2VcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgVGltZSBSYW5nZVwiXG4gICAgICAgICAgICAjY2FsZW5kYXJcbiAgICA+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItYnV0dG9uLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidG9nZ2xlQnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntzZWxlY3RlZDogc2VsZWN0ZWRSYW5nZSA9PT0gJ2hvdXInfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0RGF0ZVJhbmdlRmlsdGVyKCdob3VyJylcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgTGFzdCBIb3VyXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0b2dnbGVCdXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldERhdGVSYW5nZUZpbHRlcignZGF5JylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie3NlbGVjdGVkOiBzZWxlY3RlZFJhbmdlID09PSAnZGF5J31cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgTGFzdCBEYXlcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRvZ2dsZUJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0RGF0ZVJhbmdlRmlsdGVyKCd3ZWVrJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie3NlbGVjdGVkOiBzZWxlY3RlZFJhbmdlID09PSAnd2Vlayd9XCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIExhc3QgV2Vla1xuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidG9nZ2xlQnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXREYXRlUmFuZ2VGaWx0ZXIoJ21vbnRoJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie3NlbGVjdGVkOiBzZWxlY3RlZFJhbmdlID09PSAnbW9udGgnfVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBMYXN0IE1vbnRoXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3AtY2FsZW5kYXI+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cInNob3dUYWdTZWxlY3RvclwiIGNsYXNzPVwidGFnLXNlbGVjdG9yLWNvbnRhaW5lciBkYXRhLXRhYmxlLXRhZy1zZWxlY3RvclwiIFtuZ1N0eWxlXT1cInsgbGVmdDogbWVudUxlZnQgKyAncHgnLCB0b3A6IG1lbnVUb3AgKyAncHgnIH1cIiAoY2xpY2tPdXRzaWRlKT1cImNsb3NlVGFnU2VsZWN0b3IoJGV2ZW50KVwiPlxuICAgIDxkaXYgY2xhc3M9XCJidXR0b25CYWxsIGljb24tY2xvc2VcIiAoY2xpY2spPVwiY2xvc2VUYWdTZWxlY3RvcigkZXZlbnQpXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInRhZy1zZWxlY3Rvci1sYWJlbFwiPlxuICAgICAgICA8c3Bhbj5TZWxlY3QgYW4gQXR0cmlidXRlOjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8bGliLXRhZy1zZWxlY3RvclxuICAgICAgICBbZm9jdXNPbkluaXRdPVwidHJ1ZVwiXG4gICAgICAgIFthdmFpbGFibGVSb2xlQXR0cmlidXRlc109XCJyb2xlQXR0cmlidXRlc1wiXG4gICAgICAgIFthdmFpbGFibGVOYW1lZEF0dHJpYnV0ZXNdPVwibmFtZWRBdHRyaWJ1dGVzXCJcbiAgICAgICAgWyhzZWxlY3RlZFJvbGVBdHRyaWJ1dGVzKV09XCJzZWxlY3RlZFJvbGVBdHRyaWJ1dGVzXCJcbiAgICAgICAgWyhzZWxlY3RlZE5hbWVkQXR0cmlidXRlcyldPVwic2VsZWN0ZWROYW1lZEF0dHJpYnV0ZXNcIlxuICAgICAgICAoc2VsZWN0ZWROYW1lZEF0dHJpYnV0ZXNDaGFuZ2UpPVwidGFnU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQsIGZhbHNlKVwiXG4gICAgICAgIChzZWxlY3RlZFJvbGVBdHRyaWJ1dGVzQ2hhbmdlKT1cInRhZ1NlbGVjdGlvbkNoYW5nZWQoJGV2ZW50LCB0cnVlKVwiXG4gICAgPjwvbGliLXRhZy1zZWxlY3Rvcj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNub2RhdGE+XG4gICAgPGxpYi1uby1pdGVtc1xuICAgICAgICAoY2xpY2tFbWl0KT1cIm9wZW5DcmVhdGUoKVwiXG4gICAgICAgIFtpbWFnZV09XCJub0l0ZW1zSW1hZ2VcIlxuICAgICAgICBbaXNFbXB0eV09XCIhcm93RGF0YSB8fCByb3dEYXRhLmxlbmd0aCA9PT0gMFwiXG4gICAgICAgIFt0eXBlTmFtZV09XCJ0aGlzLmVudGl0eVR5cGVMYWJlbFwiXG4gICAgICAgIFtoYXNBZGRdPVwic2hvd05vSXRlbXNBZGRcIlxuICAgID48L2xpYi1uby1pdGVtcz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -32,8 +32,10 @@ class PreviewListComponent {
32
32
  this.allowRemove = false;
33
33
  this.tooltip = '';
34
34
  this.showfilter = true;
35
+ this.localFilter = true;
35
36
  this.itemSelected = new EventEmitter();
36
37
  this.itemRemoved = new EventEmitter();
38
+ this.filterChanged = new EventEmitter();
37
39
  this.previewItems = [];
38
40
  this.hideOption = 'asdf';
39
41
  this.filterFor = '';
@@ -57,6 +59,10 @@ class PreviewListComponent {
57
59
  this.sort();
58
60
  }
59
61
  onKeydownEvent() {
62
+ if (!this.localFilter) {
63
+ this.filterChanged.emit(this.filterFor);
64
+ return;
65
+ }
60
66
  this.previewItems = [];
61
67
  for (let i = 0; i < this.allNames.length; i++) {
62
68
  if (!isEmpty(this.allNames)) {
@@ -112,12 +118,12 @@ class PreviewListComponent {
112
118
  return './' + hrefVal;
113
119
  }
114
120
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PreviewListComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
115
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PreviewListComponent, selector: "lib-preview-list", inputs: { label: "label", clickable: "clickable", isLoading: "isLoading", allNames: "allNames", items: "items", allowRemove: "allowRemove", tooltip: "tooltip", showfilter: "showfilter" }, outputs: { itemSelected: "itemSelected", itemRemoved: "itemRemoved" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"listBox row\">\n <input *ngIf=\"showfilter\" (keyup)=\"onKeydownEvent()\" [(ngModel)]=\"filterFor\" placeholder=\"Type to Filter\"/>\n <div class=\"text row\">\n <div *ngIf=\"previewItems.length <= 0\" class=\"listText\">\n <span class=\"preview-name preview-placeholder\">no items to display...</span>\n </div>\n <div (click)=\"selected(item)\" *ngFor=\"let item of previewItems\" [ngClass]=\"{ clickable: clickable }\" class=\"listText\">\n <div *ngIf=\"allowRemove\" class=\"icon-clear\" (click)=\"remove(item)\"></div>\n <span *ngIf=\"!item.href\" class=\"preview-name\" matTooltip=\"{{tooltip}}\" matTooltipPosition=\"below\" matTooltipShowDelay=\"1000\">{{ item.name || item }}</span>\n <a *ngIf=\"item.href\" [href]=\"getHrefVal(item.href)\" (click)=\"linkClicked($event, item)\" class=\"{{item.linkClass ? item.linkClass : ''}}\" matTooltip=\"{{tooltip}}\" matTooltipShowDelay=\"1000\" matTooltipPosition=\"below\">\n <span *ngIf=\"item.name\" class=\"preview-name\">{{ item.name }}<div *ngIf=\"item.iconClass\" class=\"preview-item-icon {{item.iconClass}}\" (click)=\"remove(item)\"></div></span>\n </a>\n </div>\n </div>\n</div>\n<div *ngIf=\"isLoading\" class=\"spinner-container\">\n <span class=\"spinner\"></span>\n</div>\n", styles: [":host{display:flex;flex-direction:column;height:100%;position:relative}.counter{background-color:#4c5566;color:var(--white);position:absolute;right:0rem}.listBox{background-color:var(--stroke);padding:.625rem;border-radius:var(--inputBorderRadius);height:100%;min-height:3.75rem}.listBox input{height:2.5rem;border-radius:1.6875rem;font-size:.875rem;font-weight:600;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAuCAYAAABTTPsKAAAD4klEQVRYhc2ZyYsUSRSHvypLbRfGDfWgzngYFRR3EUQPOm5oOyMuKIoo4kk9iAriQfAPcAMvKuJBPAyiXmbAwWVUFGEYmMHlIi24ogd3cW3trpYnv4CooLKrKiuzqn5QUBmZEe/Lly9fvIjMPH36CmA4cABYAHSnsdQK/AVsBR4Y8E/ATaA30KXBYJ3agffA+Cywt8FhEZsx7jUPf/bC4BNwuc5woWYBPdTWmgti9hSwrv6MBToOrFVD92xwsqOOYFEqYAqBGzGOC5gshv07aANuNZCnM8A4IOcacsEFdjyp9lzly0KipZEBA7VYSKwEfpf7nTqU4uqpHkWYVlkInAR+ATZ4AZ4HmoErdQKeCVz0eGymO2asrpawE38D0xXHdjcfFM93aww7Avgf6CUPWyK4Dsw2cJfW7A4WA4/1P6NHcgHoV0PYfrLpwqFdTIv1vyAPvwXmyLMd8voQ4A+gaw1gu8rWENl2T3mO2AiBTfeARYphFB7TgMM1AD4sWy7V5sVyz78oBDZd0wvoZHe7HtiWIuw22fBntQ1iKVAxYFRw7PE8nVEZ2pwCbLPGdimsXbaPF7vYZYmi54A/gfneY7JSdCpwOyHYscC/QJOOLSOcA36NKg+iPIw6rNBM2Ka2bnqLBycAO1hjdfNgW2QzspbpDNj0EZintzSv6wdojdVUom9natIYAzRmXjbmyWakSgGbnigsnJdzepQngqmzXGXUd6wXam2y8aTUGOUAm/4DVnvHZmgpsDsG8G719SvF1bJRUuUCm84Au7zMkfWMl6sl6uPs5jXmmXIH6CxLRMkqu+Weh94BPwJvSvTrAzwCftCxhcFpq8AqMR4W8OXIFqk/AxPUv0lJfl/Q114gP4yGAT092BtxFrxxgL8Ay4D7OrYa4LciwKOBNRHrxKye0pdKjVcSw74eBSuV4RHXtUW0W9+HcQzHBUaVlFPUflxU+4eI9pKqBriUDqm+db9nSQwaJ4bLldUDOzyn9G904KHAxKRtpBkSpsQ3ZNL0sG1EW9r6quNw2R5Lab90vbX67ZXUS5cUcJTnZmjqtjQ2KAlD1QB/9v4PVAETbgnk5OWeSYQDVQKf9WayjKbnO9oxT03VAO8HrgZbAubpS1pU2tLHKrh/VOtGTdMVqdqQmAvs1Eo37z32LarGWrXXMAV4WW9gBGlL8sn2DS1YRo3U57TNScUvCWYJAxsDHPXarKy00vMgcD6pD5ZJ5mELkU3AQuC15+2stk/7JmEkjYnDlu+jtL/rpuZwRn0Rd/C0Zrrn+m69UauK71ulkt2EbU7HUtrFzxF9BXLpzzZLtusDZuUCvgHvMdO9Y7xsIwAAAABJRU5ErkJggg==);background-size:auto 1.3125rem;background-position:top .5rem right .75rem;background-repeat:no-repeat;margin-bottom:.625rem;padding-left:.875rem}.text{overflow-y:scroll;height:100%}.listText{width:100%;position:relative;float:left;font-size:.875rem;font-weight:600;padding-left:.625rem;padding-right:.625rem;margin-bottom:.125rem;color:var(--primary);display:flex;flex-direction:row;align-items:center;gap:.3125rem}.listText a{color:var(--primary);display:flex;flex-direction:row;align-items:center}.listText a:hover .preview-item-icon{text-decoration:underline}.listText .icon-clear{margin-top:.125rem}.listText .icon-clear:hover{color:var(--background)}::-webkit-scrollbar-thumb{background-color:var(--background)!important}.clickable{color:var(--primary);cursor:pointer}.clickable:hover,.clickable:focus{filter:brightness(90%)}.clickable:active{color:var(--icon);transform:translateY(.0625rem)}.clickable .preview-name:hover,.clickable .preview-name:focus{text-decoration:underline}.clickable .preview-name:active{text-decoration:underline}.preview-name{white-space:pre}.preview-name.preview-placeholder{font-style:italic}.preview-item-icon{margin-left:.4375rem;font-family:zac!important}.preview-more-results{margin-top:.3125rem}.spinner-container{position:absolute;display:flex;align-items:center;justify-content:center;width:100%;height:100%}.spinner-container .spinner{display:inline-block;width:2rem;height:2rem;border-radius:50%;background:transparent;border-top:.3125rem solid var(--tableText);border-right:.3125rem solid var(--tableText);border-bottom:.3125rem solid transparent;border-left:.3125rem solid transparent;animation:loading .5s infinite linear;opacity:.7}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] }); }
121
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PreviewListComponent, selector: "lib-preview-list", inputs: { label: "label", clickable: "clickable", isLoading: "isLoading", allNames: "allNames", items: "items", allowRemove: "allowRemove", tooltip: "tooltip", showfilter: "showfilter", localFilter: "localFilter" }, outputs: { itemSelected: "itemSelected", itemRemoved: "itemRemoved", filterChanged: "filterChanged" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"listBox row\">\n <input *ngIf=\"showfilter\" (keyup)=\"onKeydownEvent()\" [(ngModel)]=\"filterFor\" placeholder=\"Type to Filter\"/>\n <div class=\"text row\">\n <div *ngIf=\"previewItems.length <= 0\" class=\"listText\">\n <span class=\"preview-name preview-placeholder no-items-preview\">no items to display...</span>\n </div>\n <div (click)=\"selected(item)\" *ngFor=\"let item of previewItems\" [ngClass]=\"{ clickable: clickable }\" class=\"listText\">\n <div *ngIf=\"allowRemove\" class=\"icon-clear\" (click)=\"remove(item)\"></div>\n <span *ngIf=\"!item.href\" class=\"preview-name\" matTooltip=\"{{tooltip}}\" matTooltipPosition=\"below\" matTooltipShowDelay=\"1000\">{{ item.name || item }}</span>\n <a *ngIf=\"item.href\" [href]=\"getHrefVal(item.href)\" (click)=\"linkClicked($event, item)\" class=\"{{item.linkClass ? item.linkClass : ''}}\" matTooltip=\"{{tooltip}}\" matTooltipShowDelay=\"1000\" matTooltipPosition=\"below\">\n <span *ngIf=\"item.name\" class=\"preview-name\">{{ item.name }}<div *ngIf=\"item.iconClass\" class=\"preview-item-icon {{item.iconClass}}\" (click)=\"remove(item)\"></div></span>\n </a>\n </div>\n </div>\n</div>\n<div *ngIf=\"isLoading\" class=\"spinner-container\">\n <span class=\"spinner\"></span>\n</div>\n", styles: [":host{display:flex;flex-direction:column;height:100%;position:relative}.counter{background-color:#4c5566;color:var(--white);position:absolute;right:0rem}.listBox{background-color:var(--stroke);padding:.625rem;border-radius:var(--inputBorderRadius);height:100%;min-height:3.75rem}.listBox input{height:2.5rem;border-radius:1.6875rem;font-size:.875rem;font-weight:600;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAuCAYAAABTTPsKAAAD4klEQVRYhc2ZyYsUSRSHvypLbRfGDfWgzngYFRR3EUQPOm5oOyMuKIoo4kk9iAriQfAPcAMvKuJBPAyiXmbAwWVUFGEYmMHlIi24ogd3cW3trpYnv4CooLKrKiuzqn5QUBmZEe/Lly9fvIjMPH36CmA4cABYAHSnsdQK/AVsBR4Y8E/ATaA30KXBYJ3agffA+Cywt8FhEZsx7jUPf/bC4BNwuc5woWYBPdTWmgti9hSwrv6MBToOrFVD92xwsqOOYFEqYAqBGzGOC5gshv07aANuNZCnM8A4IOcacsEFdjyp9lzly0KipZEBA7VYSKwEfpf7nTqU4uqpHkWYVlkInAR+ATZ4AZ4HmoErdQKeCVz0eGymO2asrpawE38D0xXHdjcfFM93aww7Avgf6CUPWyK4Dsw2cJfW7A4WA4/1P6NHcgHoV0PYfrLpwqFdTIv1vyAPvwXmyLMd8voQ4A+gaw1gu8rWENl2T3mO2AiBTfeARYphFB7TgMM1AD4sWy7V5sVyz78oBDZd0wvoZHe7HtiWIuw22fBntQ1iKVAxYFRw7PE8nVEZ2pwCbLPGdimsXbaPF7vYZYmi54A/gfneY7JSdCpwOyHYscC/QJOOLSOcA36NKg+iPIw6rNBM2Ka2bnqLBycAO1hjdfNgW2QzspbpDNj0EZintzSv6wdojdVUom9natIYAzRmXjbmyWakSgGbnigsnJdzepQngqmzXGXUd6wXam2y8aTUGOUAm/4DVnvHZmgpsDsG8G719SvF1bJRUuUCm84Au7zMkfWMl6sl6uPs5jXmmXIH6CxLRMkqu+Weh94BPwJvSvTrAzwCftCxhcFpq8AqMR4W8OXIFqk/AxPUv0lJfl/Q114gP4yGAT092BtxFrxxgL8Ay4D7OrYa4LciwKOBNRHrxKye0pdKjVcSw74eBSuV4RHXtUW0W9+HcQzHBUaVlFPUflxU+4eI9pKqBriUDqm+db9nSQwaJ4bLldUDOzyn9G904KHAxKRtpBkSpsQ3ZNL0sG1EW9r6quNw2R5Lab90vbX67ZXUS5cUcJTnZmjqtjQ2KAlD1QB/9v4PVAETbgnk5OWeSYQDVQKf9WayjKbnO9oxT03VAO8HrgZbAubpS1pU2tLHKrh/VOtGTdMVqdqQmAvs1Eo37z32LarGWrXXMAV4WW9gBGlL8sn2DS1YRo3U57TNScUvCWYJAxsDHPXarKy00vMgcD6pD5ZJ5mELkU3AQuC15+2stk/7JmEkjYnDlu+jtL/rpuZwRn0Rd/C0Zrrn+m69UauK71ulkt2EbU7HUtrFzxF9BXLpzzZLtusDZuUCvgHvMdO9Y7xsIwAAAABJRU5ErkJggg==);background-size:auto 1.3125rem;background-position:top .5rem right .75rem;background-repeat:no-repeat;margin-bottom:.625rem;padding-left:.875rem}.text{overflow-y:scroll;height:100%}.listText{width:100%;position:relative;float:left;font-size:.875rem;font-weight:600;padding-left:.625rem;padding-right:.625rem;margin-bottom:.125rem;color:var(--primary);display:flex;flex-direction:row;align-items:center;gap:.3125rem}.listText a{color:var(--primary);display:flex;flex-direction:row;align-items:center}.listText a:hover .preview-item-icon{text-decoration:underline}.listText .icon-clear{margin-top:.125rem}.listText .icon-clear:hover{color:var(--background)}::-webkit-scrollbar-thumb{background-color:var(--background)!important}.clickable{color:var(--primary);cursor:pointer}.clickable:hover,.clickable:focus{filter:brightness(90%)}.clickable:active{color:var(--icon);transform:translateY(.0625rem)}.clickable .preview-name:hover,.clickable .preview-name:focus{text-decoration:underline}.clickable .preview-name:active{text-decoration:underline}.preview-name{white-space:pre}.preview-name.preview-placeholder{font-style:italic}.preview-name.no-items-preview{font-weight:400}.preview-item-icon{margin-left:.4375rem;font-family:zac!important}.preview-more-results{margin-top:.3125rem}.preview-more-results .preview-name{font-weight:600;border-top-width:1px;text-transform:uppercase;font-size:.825rem;font-style:italic}.preview-more-results .preview-name:after{content:\"\\e939\";font-family:icomoon!important;font-style:normal}.spinner-container{position:absolute;display:flex;align-items:center;justify-content:center;width:100%;height:100%}.spinner-container .spinner{display:inline-block;width:2rem;height:2rem;border-radius:50%;background:transparent;border-top:.3125rem solid var(--tableText);border-right:.3125rem solid var(--tableText);border-bottom:.3125rem solid transparent;border-left:.3125rem solid transparent;animation:loading .5s infinite linear;opacity:.7}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] }); }
116
122
  }
117
123
  export { PreviewListComponent };
118
124
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PreviewListComponent, decorators: [{
119
125
  type: Component,
120
- args: [{ selector: 'lib-preview-list', template: "<div class=\"listBox row\">\n <input *ngIf=\"showfilter\" (keyup)=\"onKeydownEvent()\" [(ngModel)]=\"filterFor\" placeholder=\"Type to Filter\"/>\n <div class=\"text row\">\n <div *ngIf=\"previewItems.length <= 0\" class=\"listText\">\n <span class=\"preview-name preview-placeholder\">no items to display...</span>\n </div>\n <div (click)=\"selected(item)\" *ngFor=\"let item of previewItems\" [ngClass]=\"{ clickable: clickable }\" class=\"listText\">\n <div *ngIf=\"allowRemove\" class=\"icon-clear\" (click)=\"remove(item)\"></div>\n <span *ngIf=\"!item.href\" class=\"preview-name\" matTooltip=\"{{tooltip}}\" matTooltipPosition=\"below\" matTooltipShowDelay=\"1000\">{{ item.name || item }}</span>\n <a *ngIf=\"item.href\" [href]=\"getHrefVal(item.href)\" (click)=\"linkClicked($event, item)\" class=\"{{item.linkClass ? item.linkClass : ''}}\" matTooltip=\"{{tooltip}}\" matTooltipShowDelay=\"1000\" matTooltipPosition=\"below\">\n <span *ngIf=\"item.name\" class=\"preview-name\">{{ item.name }}<div *ngIf=\"item.iconClass\" class=\"preview-item-icon {{item.iconClass}}\" (click)=\"remove(item)\"></div></span>\n </a>\n </div>\n </div>\n</div>\n<div *ngIf=\"isLoading\" class=\"spinner-container\">\n <span class=\"spinner\"></span>\n</div>\n", styles: [":host{display:flex;flex-direction:column;height:100%;position:relative}.counter{background-color:#4c5566;color:var(--white);position:absolute;right:0rem}.listBox{background-color:var(--stroke);padding:.625rem;border-radius:var(--inputBorderRadius);height:100%;min-height:3.75rem}.listBox input{height:2.5rem;border-radius:1.6875rem;font-size:.875rem;font-weight:600;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAuCAYAAABTTPsKAAAD4klEQVRYhc2ZyYsUSRSHvypLbRfGDfWgzngYFRR3EUQPOm5oOyMuKIoo4kk9iAriQfAPcAMvKuJBPAyiXmbAwWVUFGEYmMHlIi24ogd3cW3trpYnv4CooLKrKiuzqn5QUBmZEe/Lly9fvIjMPH36CmA4cABYAHSnsdQK/AVsBR4Y8E/ATaA30KXBYJ3agffA+Cywt8FhEZsx7jUPf/bC4BNwuc5woWYBPdTWmgti9hSwrv6MBToOrFVD92xwsqOOYFEqYAqBGzGOC5gshv07aANuNZCnM8A4IOcacsEFdjyp9lzly0KipZEBA7VYSKwEfpf7nTqU4uqpHkWYVlkInAR+ATZ4AZ4HmoErdQKeCVz0eGymO2asrpawE38D0xXHdjcfFM93aww7Avgf6CUPWyK4Dsw2cJfW7A4WA4/1P6NHcgHoV0PYfrLpwqFdTIv1vyAPvwXmyLMd8voQ4A+gaw1gu8rWENl2T3mO2AiBTfeARYphFB7TgMM1AD4sWy7V5sVyz78oBDZd0wvoZHe7HtiWIuw22fBntQ1iKVAxYFRw7PE8nVEZ2pwCbLPGdimsXbaPF7vYZYmi54A/gfneY7JSdCpwOyHYscC/QJOOLSOcA36NKg+iPIw6rNBM2Ka2bnqLBycAO1hjdfNgW2QzspbpDNj0EZintzSv6wdojdVUom9natIYAzRmXjbmyWakSgGbnigsnJdzepQngqmzXGXUd6wXam2y8aTUGOUAm/4DVnvHZmgpsDsG8G719SvF1bJRUuUCm84Au7zMkfWMl6sl6uPs5jXmmXIH6CxLRMkqu+Weh94BPwJvSvTrAzwCftCxhcFpq8AqMR4W8OXIFqk/AxPUv0lJfl/Q114gP4yGAT092BtxFrxxgL8Ay4D7OrYa4LciwKOBNRHrxKye0pdKjVcSw74eBSuV4RHXtUW0W9+HcQzHBUaVlFPUflxU+4eI9pKqBriUDqm+db9nSQwaJ4bLldUDOzyn9G904KHAxKRtpBkSpsQ3ZNL0sG1EW9r6quNw2R5Lab90vbX67ZXUS5cUcJTnZmjqtjQ2KAlD1QB/9v4PVAETbgnk5OWeSYQDVQKf9WayjKbnO9oxT03VAO8HrgZbAubpS1pU2tLHKrh/VOtGTdMVqdqQmAvs1Eo37z32LarGWrXXMAV4WW9gBGlL8sn2DS1YRo3U57TNScUvCWYJAxsDHPXarKy00vMgcD6pD5ZJ5mELkU3AQuC15+2stk/7JmEkjYnDlu+jtL/rpuZwRn0Rd/C0Zrrn+m69UauK71ulkt2EbU7HUtrFzxF9BXLpzzZLtusDZuUCvgHvMdO9Y7xsIwAAAABJRU5ErkJggg==);background-size:auto 1.3125rem;background-position:top .5rem right .75rem;background-repeat:no-repeat;margin-bottom:.625rem;padding-left:.875rem}.text{overflow-y:scroll;height:100%}.listText{width:100%;position:relative;float:left;font-size:.875rem;font-weight:600;padding-left:.625rem;padding-right:.625rem;margin-bottom:.125rem;color:var(--primary);display:flex;flex-direction:row;align-items:center;gap:.3125rem}.listText a{color:var(--primary);display:flex;flex-direction:row;align-items:center}.listText a:hover .preview-item-icon{text-decoration:underline}.listText .icon-clear{margin-top:.125rem}.listText .icon-clear:hover{color:var(--background)}::-webkit-scrollbar-thumb{background-color:var(--background)!important}.clickable{color:var(--primary);cursor:pointer}.clickable:hover,.clickable:focus{filter:brightness(90%)}.clickable:active{color:var(--icon);transform:translateY(.0625rem)}.clickable .preview-name:hover,.clickable .preview-name:focus{text-decoration:underline}.clickable .preview-name:active{text-decoration:underline}.preview-name{white-space:pre}.preview-name.preview-placeholder{font-style:italic}.preview-item-icon{margin-left:.4375rem;font-family:zac!important}.preview-more-results{margin-top:.3125rem}.spinner-container{position:absolute;display:flex;align-items:center;justify-content:center;width:100%;height:100%}.spinner-container .spinner{display:inline-block;width:2rem;height:2rem;border-radius:50%;background:transparent;border-top:.3125rem solid var(--tableText);border-right:.3125rem solid var(--tableText);border-bottom:.3125rem solid transparent;border-left:.3125rem solid transparent;animation:loading .5s infinite linear;opacity:.7}\n"] }]
126
+ args: [{ selector: 'lib-preview-list', template: "<div class=\"listBox row\">\n <input *ngIf=\"showfilter\" (keyup)=\"onKeydownEvent()\" [(ngModel)]=\"filterFor\" placeholder=\"Type to Filter\"/>\n <div class=\"text row\">\n <div *ngIf=\"previewItems.length <= 0\" class=\"listText\">\n <span class=\"preview-name preview-placeholder no-items-preview\">no items to display...</span>\n </div>\n <div (click)=\"selected(item)\" *ngFor=\"let item of previewItems\" [ngClass]=\"{ clickable: clickable }\" class=\"listText\">\n <div *ngIf=\"allowRemove\" class=\"icon-clear\" (click)=\"remove(item)\"></div>\n <span *ngIf=\"!item.href\" class=\"preview-name\" matTooltip=\"{{tooltip}}\" matTooltipPosition=\"below\" matTooltipShowDelay=\"1000\">{{ item.name || item }}</span>\n <a *ngIf=\"item.href\" [href]=\"getHrefVal(item.href)\" (click)=\"linkClicked($event, item)\" class=\"{{item.linkClass ? item.linkClass : ''}}\" matTooltip=\"{{tooltip}}\" matTooltipShowDelay=\"1000\" matTooltipPosition=\"below\">\n <span *ngIf=\"item.name\" class=\"preview-name\">{{ item.name }}<div *ngIf=\"item.iconClass\" class=\"preview-item-icon {{item.iconClass}}\" (click)=\"remove(item)\"></div></span>\n </a>\n </div>\n </div>\n</div>\n<div *ngIf=\"isLoading\" class=\"spinner-container\">\n <span class=\"spinner\"></span>\n</div>\n", styles: [":host{display:flex;flex-direction:column;height:100%;position:relative}.counter{background-color:#4c5566;color:var(--white);position:absolute;right:0rem}.listBox{background-color:var(--stroke);padding:.625rem;border-radius:var(--inputBorderRadius);height:100%;min-height:3.75rem}.listBox input{height:2.5rem;border-radius:1.6875rem;font-size:.875rem;font-weight:600;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAuCAYAAABTTPsKAAAD4klEQVRYhc2ZyYsUSRSHvypLbRfGDfWgzngYFRR3EUQPOm5oOyMuKIoo4kk9iAriQfAPcAMvKuJBPAyiXmbAwWVUFGEYmMHlIi24ogd3cW3trpYnv4CooLKrKiuzqn5QUBmZEe/Lly9fvIjMPH36CmA4cABYAHSnsdQK/AVsBR4Y8E/ATaA30KXBYJ3agffA+Cywt8FhEZsx7jUPf/bC4BNwuc5woWYBPdTWmgti9hSwrv6MBToOrFVD92xwsqOOYFEqYAqBGzGOC5gshv07aANuNZCnM8A4IOcacsEFdjyp9lzly0KipZEBA7VYSKwEfpf7nTqU4uqpHkWYVlkInAR+ATZ4AZ4HmoErdQKeCVz0eGymO2asrpawE38D0xXHdjcfFM93aww7Avgf6CUPWyK4Dsw2cJfW7A4WA4/1P6NHcgHoV0PYfrLpwqFdTIv1vyAPvwXmyLMd8voQ4A+gaw1gu8rWENl2T3mO2AiBTfeARYphFB7TgMM1AD4sWy7V5sVyz78oBDZd0wvoZHe7HtiWIuw22fBntQ1iKVAxYFRw7PE8nVEZ2pwCbLPGdimsXbaPF7vYZYmi54A/gfneY7JSdCpwOyHYscC/QJOOLSOcA36NKg+iPIw6rNBM2Ka2bnqLBycAO1hjdfNgW2QzspbpDNj0EZintzSv6wdojdVUom9natIYAzRmXjbmyWakSgGbnigsnJdzepQngqmzXGXUd6wXam2y8aTUGOUAm/4DVnvHZmgpsDsG8G719SvF1bJRUuUCm84Au7zMkfWMl6sl6uPs5jXmmXIH6CxLRMkqu+Weh94BPwJvSvTrAzwCftCxhcFpq8AqMR4W8OXIFqk/AxPUv0lJfl/Q114gP4yGAT092BtxFrxxgL8Ay4D7OrYa4LciwKOBNRHrxKye0pdKjVcSw74eBSuV4RHXtUW0W9+HcQzHBUaVlFPUflxU+4eI9pKqBriUDqm+db9nSQwaJ4bLldUDOzyn9G904KHAxKRtpBkSpsQ3ZNL0sG1EW9r6quNw2R5Lab90vbX67ZXUS5cUcJTnZmjqtjQ2KAlD1QB/9v4PVAETbgnk5OWeSYQDVQKf9WayjKbnO9oxT03VAO8HrgZbAubpS1pU2tLHKrh/VOtGTdMVqdqQmAvs1Eo37z32LarGWrXXMAV4WW9gBGlL8sn2DS1YRo3U57TNScUvCWYJAxsDHPXarKy00vMgcD6pD5ZJ5mELkU3AQuC15+2stk/7JmEkjYnDlu+jtL/rpuZwRn0Rd/C0Zrrn+m69UauK71ulkt2EbU7HUtrFzxF9BXLpzzZLtusDZuUCvgHvMdO9Y7xsIwAAAABJRU5ErkJggg==);background-size:auto 1.3125rem;background-position:top .5rem right .75rem;background-repeat:no-repeat;margin-bottom:.625rem;padding-left:.875rem}.text{overflow-y:scroll;height:100%}.listText{width:100%;position:relative;float:left;font-size:.875rem;font-weight:600;padding-left:.625rem;padding-right:.625rem;margin-bottom:.125rem;color:var(--primary);display:flex;flex-direction:row;align-items:center;gap:.3125rem}.listText a{color:var(--primary);display:flex;flex-direction:row;align-items:center}.listText a:hover .preview-item-icon{text-decoration:underline}.listText .icon-clear{margin-top:.125rem}.listText .icon-clear:hover{color:var(--background)}::-webkit-scrollbar-thumb{background-color:var(--background)!important}.clickable{color:var(--primary);cursor:pointer}.clickable:hover,.clickable:focus{filter:brightness(90%)}.clickable:active{color:var(--icon);transform:translateY(.0625rem)}.clickable .preview-name:hover,.clickable .preview-name:focus{text-decoration:underline}.clickable .preview-name:active{text-decoration:underline}.preview-name{white-space:pre}.preview-name.preview-placeholder{font-style:italic}.preview-name.no-items-preview{font-weight:400}.preview-item-icon{margin-left:.4375rem;font-family:zac!important}.preview-more-results{margin-top:.3125rem}.preview-more-results .preview-name{font-weight:600;border-top-width:1px;text-transform:uppercase;font-size:.825rem;font-style:italic}.preview-more-results .preview-name:after{content:\"\\e939\";font-family:icomoon!important;font-style:normal}.spinner-container{position:absolute;display:flex;align-items:center;justify-content:center;width:100%;height:100%}.spinner-container .spinner{display:inline-block;width:2rem;height:2rem;border-radius:50%;background:transparent;border-top:.3125rem solid var(--tableText);border-right:.3125rem solid var(--tableText);border-bottom:.3125rem solid transparent;border-left:.3125rem solid transparent;animation:loading .5s infinite linear;opacity:.7}\n"] }]
121
127
  }], ctorParameters: function () { return [{ type: i1.Router }]; }, propDecorators: { label: [{
122
128
  type: Input
123
129
  }], clickable: [{
@@ -134,9 +140,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
134
140
  type: Input
135
141
  }], showfilter: [{
136
142
  type: Input
143
+ }], localFilter: [{
144
+ type: Input
137
145
  }], itemSelected: [{
138
146
  type: Output
139
147
  }], itemRemoved: [{
140
148
  type: Output
149
+ }], filterChanged: [{
150
+ type: Output
141
151
  }] } });
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9wcmV2aWV3LWxpc3QvcHJldmlldy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9wcmV2aWV3LWxpc3QvcHJldmlldy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sUUFBUSxDQUFDOzs7Ozs7QUFHL0IsTUFLYSxvQkFBb0I7SUFnQi9CLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBZmxDLDhCQUE4QjtRQUNkLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxnQkFBVyxHQUFHLEtBQUssQ0FBQTtRQUNuQixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsZUFBVSxHQUFHLElBQUksQ0FBQztRQUNqQixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDMUMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzVDLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxNQUFNLENBQUM7UUFDNUIsY0FBUyxHQUFHLEVBQUUsQ0FBQztJQUVzQixDQUFDO0lBRXRDLFFBQVE7UUFD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QUMsU0FBUyxFQUFFO1lBQ25CLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFJO1FBQ2IsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUcsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDOUIsT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDNUI7UUFDRCxPQUFPLElBQUksR0FBRyxPQUFPLENBQUM7SUFDeEIsQ0FBQzsrR0E3RlUsb0JBQW9CO21HQUFwQixvQkFBb0IsZ1ZDekJqQyxrMUNBa0JBOztTRE9hLG9CQUFvQjs0RkFBcEIsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQjs2RkFNWixLQUFLO3NCQUFwQixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgQ29weXJpZ2h0IE5ldEZvdW5kcnkgSW5jLlxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtpc0VtcHR5fSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXByZXZpZXctbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcmV2aWV3LWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcmV2aWV3LWxpc3QuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQcmV2aWV3TGlzdENvbXBvbmVudCB7XG4gIC8vQElucHV0KCkgaGlkZU9wdGlvbjogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgbGFiZWwgPSAnJztcbiAgQElucHV0KCkgcHVibGljIGNsaWNrYWJsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBpc0xvYWRpbmcgPSBmYWxzZTtcbiAgQElucHV0KCkgYWxsTmFtZXMgPSBbXTtcbiAgQElucHV0KCkgaXRlbXMgPSBbXTtcbiAgQElucHV0KCkgYWxsb3dSZW1vdmUgPSBmYWxzZVxuICBASW5wdXQoKSB0b29sdGlwID0gJyc7XG4gIEBJbnB1dCgpIHNob3dmaWx0ZXIgPSB0cnVlO1xuICBAT3V0cHV0KCkgaXRlbVNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBpdGVtUmVtb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBwdWJsaWMgcHJldmlld0l0ZW1zID0gW107XG4gIHByaXZhdGUgaGlkZU9wdGlvbiA9ICdhc2RmJztcbiAgZmlsdGVyRm9yID0gJyc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldFByZXZpZXdJdGVtcygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgdGhpcy5zZXRQcmV2aWV3SXRlbXMoKTtcbiAgICB0aGlzLnNvcnQoKTtcbiAgfVxuXG4gIHNldFByZXZpZXdJdGVtcygpIHtcbiAgICB0aGlzLnByZXZpZXdJdGVtcyA9IFtdO1xuICAgIGlmICghaXNFbXB0eSh0aGlzLmFsbE5hbWVzKSkge1xuICAgICAgdGhpcy5wcmV2aWV3SXRlbXMucHVzaCguLi50aGlzLmFsbE5hbWVzKTtcbiAgICAgIHRoaXMucHJldmlld0l0ZW1zID0gdGhpcy5wcmV2aWV3SXRlbXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9PSB0aGlzLmhpZGVPcHRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByZXZpZXdJdGVtcy5wdXNoKC4uLnRoaXMuaXRlbXMpO1xuICAgIH1cbiAgICB0aGlzLnNvcnQoKTtcbiAgfVxuXG4gIG9uS2V5ZG93bkV2ZW50KCkge1xuICAgIHRoaXMucHJldmlld0l0ZW1zID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmFsbE5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoIWlzRW1wdHkodGhpcy5hbGxOYW1lcykpIHtcbiAgICAgICAgaWYgKHRoaXMuYWxsTmFtZXNbaV0uaW5kZXhPZih0aGlzLmZpbHRlckZvcikgPj0gMCkge1xuICAgICAgICAgIHRoaXMucHJldmlld0l0ZW1zLnB1c2godGhpcy5hbGxOYW1lc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLml0ZW1zW2ldLm5hbWUuaW5kZXhPZih0aGlzLmZpbHRlckZvcikgPj0gMCkge1xuICAgICAgICAgIHRoaXMucHJldmlld0l0ZW1zLnB1c2godGhpcy5pdGVtc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5zb3J0KCk7XG4gIH1cblxuICBzb3J0KCkge1xuICAgIHRoaXMucHJldmlld0l0ZW1zLnNvcnQoKGl0ZW0xLCBpdGVtMikgPT4gIHtcbiAgICAgIGlmIChpdGVtMS5za2lwU29ydCkge1xuICAgICAgICByZXR1cm4gaXRlbTEubmFtZTtcbiAgICAgIH0gZWxzZSBpZiAoaXRlbTIuc2tpcFNvcnQpIHtcbiAgICAgICAgcmV0dXJuICBpdGVtMi5uYW1lO1xuICAgICAgfSBlbHNlIGlmIChpdGVtMS5uYW1lKSB7XG4gICAgICAgIHJldHVybiBpdGVtMS5uYW1lLmxvY2FsZUNvbXBhcmUoaXRlbTIubmFtZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBpdGVtMS5sb2NhbGVDb21wYXJlKGl0ZW0yKVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc2VsZWN0ZWQoaXRlbTogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLmNsaWNrYWJsZSkgIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5pdGVtU2VsZWN0ZWQuZW1pdChpdGVtKTtcbiAgfVxuXG4gIHJlbW92ZShpdGVtKSB7XG4gICAgdGhpcy5pdGVtUmVtb3ZlZC5lbWl0KGl0ZW0pO1xuICB9XG5cbiAgbGlua0NsaWNrZWQoZXZlbnQsIGl0ZW0pIHtcbiAgICBpZiAoIXRoaXMuY2xpY2thYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoaXRlbS5ocmVmKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgZ2V0SHJlZlZhbChocmVmKSB7XG4gICAgbGV0IGhyZWZWYWwgPSBocmVmO1xuICAgIGlmKGhyZWZWYWw/LmluZGV4T2YoJy8nKSA9PT0gMCkge1xuICAgICAgaHJlZlZhbCA9IGhyZWZWYWwuc2xpY2UoMSk7XG4gICAgfVxuICAgIHJldHVybiAnLi8nICsgaHJlZlZhbDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImxpc3RCb3ggcm93XCI+XG4gICAgPGlucHV0ICpuZ0lmPVwic2hvd2ZpbHRlclwiIChrZXl1cCk9XCJvbktleWRvd25FdmVudCgpXCIgWyhuZ01vZGVsKV09XCJmaWx0ZXJGb3JcIiBwbGFjZWhvbGRlcj1cIlR5cGUgdG8gRmlsdGVyXCIvPlxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0IHJvd1wiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwicHJldmlld0l0ZW1zLmxlbmd0aCA8PSAwXCIgY2xhc3M9XCJsaXN0VGV4dFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcmV2aWV3LW5hbWUgcHJldmlldy1wbGFjZWhvbGRlclwiPm5vIGl0ZW1zIHRvIGRpc3BsYXkuLi48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IChjbGljayk9XCJzZWxlY3RlZChpdGVtKVwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIHByZXZpZXdJdGVtc1wiIFtuZ0NsYXNzXT1cInsgY2xpY2thYmxlOiBjbGlja2FibGUgfVwiIGNsYXNzPVwibGlzdFRleHRcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhbGxvd1JlbW92ZVwiIGNsYXNzPVwiaWNvbi1jbGVhclwiIChjbGljayk9XCJyZW1vdmUoaXRlbSlcIj48L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWl0ZW0uaHJlZlwiIGNsYXNzPVwicHJldmlldy1uYW1lXCIgbWF0VG9vbHRpcD1cInt7dG9vbHRpcH19XCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYmVsb3dcIiBtYXRUb29sdGlwU2hvd0RlbGF5PVwiMTAwMFwiPnt7IGl0ZW0ubmFtZSB8fCBpdGVtIH19PC9zcGFuPlxuICAgICAgICAgICAgPGEgKm5nSWY9XCJpdGVtLmhyZWZcIiBbaHJlZl09XCJnZXRIcmVmVmFsKGl0ZW0uaHJlZilcIiAoY2xpY2spPVwibGlua0NsaWNrZWQoJGV2ZW50LCBpdGVtKVwiIGNsYXNzPVwie3tpdGVtLmxpbmtDbGFzcyA/IGl0ZW0ubGlua0NsYXNzIDogJyd9fVwiIG1hdFRvb2x0aXA9XCJ7e3Rvb2x0aXB9fVwiIG1hdFRvb2x0aXBTaG93RGVsYXk9XCIxMDAwXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYmVsb3dcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0ubmFtZVwiIGNsYXNzPVwicHJldmlldy1uYW1lXCI+e3sgaXRlbS5uYW1lIH19PGRpdiAqbmdJZj1cIml0ZW0uaWNvbkNsYXNzXCIgY2xhc3M9XCJwcmV2aWV3LWl0ZW0taWNvbiB7e2l0ZW0uaWNvbkNsYXNzfX1cIiAoY2xpY2spPVwicmVtb3ZlKGl0ZW0pXCI+PC9kaXY+PC9zcGFuPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiAqbmdJZj1cImlzTG9hZGluZ1wiIGNsYXNzPVwic3Bpbm5lci1jb250YWluZXJcIj5cbiAgICA8c3BhbiBjbGFzcz1cInNwaW5uZXJcIj48L3NwYW4+XG48L2Rpdj5cbiJdfQ==
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9wcmV2aWV3LWxpc3QvcHJldmlldy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9wcmV2aWV3LWxpc3QvcHJldmlldy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sUUFBUSxDQUFDOzs7Ozs7QUFHL0IsTUFLYSxvQkFBb0I7SUFrQi9CLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBakJsQyw4QkFBOEI7UUFDZCxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUN6QixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsZ0JBQVcsR0FBRyxLQUFLLENBQUE7UUFDbkIsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFDbEIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzFDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN6QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDOUMsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDakIsZUFBVSxH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WyIvKlxuICAgIENvcHlyaWdodCBOZXRGb3VuZHJ5IEluYy5cblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7aXNFbXB0eX0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7Um91dGVyfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1wcmV2aWV3LWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHJldmlldy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJldmlldy1saXN0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUHJldmlld0xpc3RDb21wb25lbnQge1xuICAvL0BJbnB1dCgpIGhpZGVPcHRpb246IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGxhYmVsID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBjbGlja2FibGUgPSBmYWxzZTtcbiAgQElucHV0KCkgaXNMb2FkaW5nID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFsbE5hbWVzID0gW107XG4gIEBJbnB1dCgpIGl0ZW1zID0gW107XG4gIEBJbnB1dCgpIGFsbG93UmVtb3ZlID0gZmFsc2VcbiAgQElucHV0KCkgdG9vbHRpcCA9ICcnO1xuICBASW5wdXQoKSBzaG93ZmlsdGVyID0gdHJ1ZTtcbiAgQElucHV0KCkgbG9jYWxGaWx0ZXIgPSB0cnVlO1xuICBAT3V0cHV0KCkgaXRlbVNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBpdGVtUmVtb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgZmlsdGVyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBwdWJsaWMgcHJldmlld0l0ZW1zID0gW107XG4gIHByaXZhdGUgaGlkZU9wdGlvbiA9ICdhc2RmJztcbiAgZmlsdGVyRm9yID0gJyc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldFByZXZpZXdJdGVtcygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgdGhpcy5zZXRQcmV2aWV3SXRlbXMoKTtcbiAgICB0aGlzLnNvcnQoKTtcbiAgfVxuXG4gIHNldFByZXZpZXdJdGVtcygpIHtcbiAgICB0aGlzLnByZXZpZXdJdGVtcyA9IFtdO1xuICAgIGlmICghaXNFbXB0eSh0aGlzLmFsbE5hbWVzKSkge1xuICAgICAgdGhpcy5wcmV2aWV3SXRlbXMucHVzaCguLi50aGlzLmFsbE5hbWVzKTtcbiAgICAgIHRoaXMucHJldmlld0l0ZW1zID0gdGhpcy5wcmV2aWV3SXRlbXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9PSB0aGlzLmhpZGVPcHRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByZXZpZXdJdGVtcy5wdXNoKC4uLnRoaXMuaXRlbXMpO1xuICAgIH1cbiAgICB0aGlzLnNvcnQoKTtcbiAgfVxuXG4gIG9uS2V5ZG93bkV2ZW50KCkge1xuICAgIGlmICghdGhpcy5sb2NhbEZpbHRlcikge1xuICAgICAgdGhpcy5maWx0ZXJDaGFuZ2VkLmVtaXQodGhpcy5maWx0ZXJGb3IpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnByZXZpZXdJdGVtcyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hbGxOYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFpc0VtcHR5KHRoaXMuYWxsTmFtZXMpKSB7XG4gICAgICAgIGlmICh0aGlzLmFsbE5hbWVzW2ldLmluZGV4T2YodGhpcy5maWx0ZXJGb3IpID49IDApIHtcbiAgICAgICAgICB0aGlzLnByZXZpZXdJdGVtcy5wdXNoKHRoaXMuYWxsTmFtZXNbaV0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5pdGVtc1tpXS5uYW1lLmluZGV4T2YodGhpcy5maWx0ZXJGb3IpID49IDApIHtcbiAgICAgICAgICB0aGlzLnByZXZpZXdJdGVtcy5wdXNoKHRoaXMuaXRlbXNbaV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc29ydCgpO1xuICB9XG5cbiAgc29ydCgpIHtcbiAgICB0aGlzLnByZXZpZXdJdGVtcy5zb3J0KChpdGVtMSwgaXRlbTIpID0+ICB7XG4gICAgICBpZiAoaXRlbTEuc2tpcFNvcnQpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0xLm5hbWU7XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0yLnNraXBTb3J0KSB7XG4gICAgICAgIHJldHVybiAgaXRlbTIubmFtZTtcbiAgICAgIH0gZWxzZSBpZiAoaXRlbTEubmFtZSkge1xuICAgICAgICByZXR1cm4gaXRlbTEubmFtZS5sb2NhbGVDb21wYXJlKGl0ZW0yLm5hbWUpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gaXRlbTEubG9jYWxlQ29tcGFyZShpdGVtMilcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNlbGVjdGVkKGl0ZW06IHN0cmluZykge1xuICAgIGlmICghdGhpcy5jbGlja2FibGUpICB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXRlbVNlbGVjdGVkLmVtaXQoaXRlbSk7XG4gIH1cblxuICByZW1vdmUoaXRlbSkge1xuICAgIHRoaXMuaXRlbVJlbW92ZWQuZW1pdChpdGVtKTtcbiAgfVxuXG4gIGxpbmtDbGlja2VkKGV2ZW50LCBpdGVtKSB7XG4gICAgaWYgKCF0aGlzLmNsaWNrYWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGl0ZW0uaHJlZik7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIGdldEhyZWZWYWwoaHJlZikge1xuICAgIGxldCBocmVmVmFsID0gaHJlZjtcbiAgICBpZihocmVmVmFsPy5pbmRleE9mKCcvJykgPT09IDApIHtcbiAgICAgIGhyZWZWYWwgPSBocmVmVmFsLnNsaWNlKDEpO1xuICAgIH1cbiAgICByZXR1cm4gJy4vJyArIGhyZWZWYWw7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJsaXN0Qm94IHJvd1wiPlxuICAgIDxpbnB1dCAqbmdJZj1cInNob3dmaWx0ZXJcIiAoa2V5dXApPVwib25LZXlkb3duRXZlbnQoKVwiIFsobmdNb2RlbCldPVwiZmlsdGVyRm9yXCIgcGxhY2Vob2xkZXI9XCJUeXBlIHRvIEZpbHRlclwiLz5cbiAgICA8ZGl2IGNsYXNzPVwidGV4dCByb3dcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInByZXZpZXdJdGVtcy5sZW5ndGggPD0gMFwiIGNsYXNzPVwibGlzdFRleHRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJldmlldy1uYW1lIHByZXZpZXctcGxhY2Vob2xkZXIgbm8taXRlbXMtcHJldmlld1wiPm5vIGl0ZW1zIHRvIGRpc3BsYXkuLi48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IChjbGljayk9XCJzZWxlY3RlZChpdGVtKVwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIHByZXZpZXdJdGVtc1wiIFtuZ0NsYXNzXT1cInsgY2xpY2thYmxlOiBjbGlja2FibGUgfVwiIGNsYXNzPVwibGlzdFRleHRcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhbGxvd1JlbW92ZVwiIGNsYXNzPVwiaWNvbi1jbGVhclwiIChjbGljayk9XCJyZW1vdmUoaXRlbSlcIj48L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWl0ZW0uaHJlZlwiIGNsYXNzPVwicHJldmlldy1uYW1lXCIgbWF0VG9vbHRpcD1cInt7dG9vbHRpcH19XCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYmVsb3dcIiBtYXRUb29sdGlwU2hvd0RlbGF5PVwiMTAwMFwiPnt7IGl0ZW0ubmFtZSB8fCBpdGVtIH19PC9zcGFuPlxuICAgICAgICAgICAgPGEgKm5nSWY9XCJpdGVtLmhyZWZcIiBbaHJlZl09XCJnZXRIcmVmVmFsKGl0ZW0uaHJlZilcIiAoY2xpY2spPVwibGlua0NsaWNrZWQoJGV2ZW50LCBpdGVtKVwiIGNsYXNzPVwie3tpdGVtLmxpbmtDbGFzcyA/IGl0ZW0ubGlua0NsYXNzIDogJyd9fVwiIG1hdFRvb2x0aXA9XCJ7e3Rvb2x0aXB9fVwiIG1hdFRvb2x0aXBTaG93RGVsYXk9XCIxMDAwXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYmVsb3dcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0ubmFtZVwiIGNsYXNzPVwicHJldmlldy1uYW1lXCI+e3sgaXRlbS5uYW1lIH19PGRpdiAqbmdJZj1cIml0ZW0uaWNvbkNsYXNzXCIgY2xhc3M9XCJwcmV2aWV3LWl0ZW0taWNvbiB7e2l0ZW0uaWNvbkNsYXNzfX1cIiAoY2xpY2spPVwicmVtb3ZlKGl0ZW0pXCI+PC9kaXY+PC9zcGFuPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiAqbmdJZj1cImlzTG9hZGluZ1wiIGNsYXNzPVwic3Bpbm5lci1jb250YWluZXJcIj5cbiAgICA8c3BhbiBjbGFzcz1cInNwaW5uZXJcIj48L3NwYW4+XG48L2Rpdj5cbiJdfQ==