@microsoft/windows-admin-center-sdk 2.295.0 → 2.298.0

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 (147) hide show
  1. package/angular/assets/strings/cs-CZ/strings.json +1 -1
  2. package/angular/assets/strings/de-DE/strings.json +1 -1
  3. package/angular/assets/strings/es-ES/strings.json +1 -1
  4. package/angular/assets/strings/fr-FR/strings.json +1 -1
  5. package/angular/assets/strings/hu-HU/strings.json +1 -1
  6. package/angular/assets/strings/it-IT/strings.json +1 -1
  7. package/angular/assets/strings/ja-JP/strings.json +1 -1
  8. package/angular/assets/strings/ko-KR/strings.json +1 -1
  9. package/angular/assets/strings/nl-NL/strings.json +1 -1
  10. package/angular/assets/strings/pl-PL/strings.json +1 -1
  11. package/angular/assets/strings/pt-BR/strings.json +1 -1
  12. package/angular/assets/strings/pt-PT/strings.json +1 -1
  13. package/angular/assets/strings/ru-RU/strings.json +1 -1
  14. package/angular/assets/strings/strings.json +1 -1
  15. package/angular/assets/strings/sv-SE/strings.json +1 -1
  16. package/angular/assets/strings/tr-TR/strings.json +1 -1
  17. package/angular/assets/strings/zh-CN/strings.json +1 -1
  18. package/angular/assets/strings/zh-TW/strings.json +1 -1
  19. package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.js +558 -240
  20. package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.js.map +1 -1
  21. package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.min.js +2 -2
  22. package/angular/bundles/microsoft-windows-admin-center-sdk-angular.umd.min.js.map +1 -1
  23. package/angular/esm2015/src/controls/actions/containers/action-bar/action-bar.component.js +7 -2
  24. package/angular/esm2015/src/controls/alert-bar/alert-bar.component.js +5 -5
  25. package/angular/esm2015/src/controls/common/base.component.js +8 -1
  26. package/angular/esm2015/src/controls/data-table/data-table.component.js +39 -9
  27. package/angular/esm2015/src/controls/form/form-field/checklist/checklist-form-field.component.js +11 -8
  28. package/angular/esm2015/src/controls/form/form-field/combobox/combobox-form-field.component.js +8 -9
  29. package/angular/esm2015/src/controls/form/form-field/file/file-form-field.component.js +14 -2
  30. package/angular/esm2015/src/controls/form/form-field/form-field.component.js +9 -2
  31. package/angular/esm2015/src/controls/layout/layout-definition.component.js +9 -2
  32. package/angular/esm2015/src/controls/layout/layout.component.js +11 -2
  33. package/angular/esm2015/src/controls/master-view/master-view.component.js +32 -5
  34. package/angular/esm2015/src/controls/page-alert-bar/models/index.js +1 -1
  35. package/angular/esm2015/src/controls/pivot/pivot.component.js +11 -5
  36. package/angular/esm2015/src/controls/property-grid/property-grid-item.component.js +50 -2
  37. package/angular/esm2015/src/controls/property-grid/property-grid.component.js +73 -60
  38. package/angular/esm2015/src/controls/property-grid/property-grid.module.js +5 -1
  39. package/angular/esm2015/src/controls/settings/common-settings/common-settings.component.js +151 -70
  40. package/angular/esm2015/src/controls/settings/settings.component.js +48 -8
  41. package/angular/esm2015/src/controls/settings/settings.module.js +21 -9
  42. package/angular/esm2015/src/controls/wizard/wizard.component.js +55 -65
  43. package/angular/esm2015/src/generated/strings.js +1 -1
  44. package/angular/esm2015/src/service/app-context.service.js +3 -1
  45. package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.js +535 -240
  46. package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.js.map +1 -1
  47. package/angular/package.json +2 -0
  48. package/angular/src/controls/common/base.component.d.ts +5 -0
  49. package/angular/src/controls/data-table/data-table.component.d.ts +15 -0
  50. package/angular/src/controls/form/form-field/checklist/checklist-form-field.component.d.ts +1 -0
  51. package/angular/src/controls/form/form-field/file/file-form-field.component.d.ts +4 -0
  52. package/angular/src/controls/layout/layout-definition.component.d.ts +6 -1
  53. package/angular/src/controls/master-view/master-view.component.d.ts +118 -2
  54. package/angular/src/controls/page-alert-bar/models/index.d.ts +1 -1
  55. package/angular/src/controls/pivot/pivot.component.d.ts +4 -1
  56. package/angular/src/controls/property-grid/property-grid-item.component.d.ts +53 -3
  57. package/angular/src/controls/property-grid/property-grid.component.d.ts +1 -2
  58. package/angular/src/controls/property-grid/property-grid.module.d.ts +4 -3
  59. package/angular/src/controls/settings/common-settings/common-settings.component.d.ts +32 -1
  60. package/angular/src/controls/settings/settings.component.d.ts +18 -1
  61. package/angular/src/controls/settings/settings.module.d.ts +3 -1
  62. package/angular/src/generated/strings.d.ts +3 -0
  63. package/core/base/environment.d.ts +10 -0
  64. package/core/base/environment.js.map +1 -1
  65. package/core/data/gateway-connection.d.ts +34 -0
  66. package/core/data/gateway-connection.js +59 -2
  67. package/core/data/gateway-connection.js.map +1 -1
  68. package/core/data/gateway-status.d.ts +24 -0
  69. package/core/data/gateway-status.js +3 -0
  70. package/core/data/gateway-status.js.map +1 -0
  71. package/core/data/node-connection.d.ts +4 -0
  72. package/core/data/node-connection.js.map +1 -1
  73. package/core/data/powershell.d.ts +4 -0
  74. package/core/data/powershell.js +1 -0
  75. package/core/data/powershell.js.map +1 -1
  76. package/core/data/wdac-operations.d.ts +123 -0
  77. package/core/data/wdac-operations.js +144 -0
  78. package/core/data/wdac-operations.js.map +1 -0
  79. package/core/diagnostics/sme-web-telemetry-models.d.ts +20 -3
  80. package/core/diagnostics/sme-web-telemetry-models.js +6 -2
  81. package/core/diagnostics/sme-web-telemetry-models.js.map +1 -1
  82. package/core/diagnostics/sme-web-telemetry.d.ts +13 -1
  83. package/core/diagnostics/sme-web-telemetry.js +51 -11
  84. package/core/diagnostics/sme-web-telemetry.js.map +1 -1
  85. package/core/generated/powershell-scripts.d.ts +8 -4
  86. package/core/generated/powershell-scripts.js +8 -4
  87. package/core/generated/powershell-scripts.js.map +1 -1
  88. package/core/index.d.ts +2 -0
  89. package/core/index.js +1 -0
  90. package/core/index.js.map +1 -1
  91. package/core/manifest/environment-modules.js +10 -0
  92. package/core/manifest/environment-modules.js.map +1 -1
  93. package/core/notification/powershell-notification.js +1 -1
  94. package/core/notification/powershell-notification.js.map +1 -1
  95. package/core/performance/performance-tracker.d.ts +67 -0
  96. package/core/performance/performance-tracker.js +211 -4
  97. package/core/performance/performance-tracker.js.map +1 -1
  98. package/core/rpc/credssp/rpc-credssp-model.d.ts +27 -2
  99. package/core/rpc/credssp/rpc-credssp-model.js +10 -0
  100. package/core/rpc/credssp/rpc-credssp-model.js.map +1 -1
  101. package/core/security/credssp-manager.d.ts +15 -1
  102. package/core/security/credssp-manager.js +28 -0
  103. package/core/security/credssp-manager.js.map +1 -1
  104. package/core/shared/gateway-inventory/gateway-inventory.d.ts +10 -0
  105. package/core/shared/gateway-inventory/gateway-inventory.js +11 -0
  106. package/core/shared/gateway-inventory/gateway-inventory.js.map +1 -1
  107. package/e2e/assets/strings/cs-CZ/strings.json +1 -1
  108. package/e2e/assets/strings/de-DE/strings.json +1 -1
  109. package/e2e/assets/strings/es-ES/strings.json +1 -1
  110. package/e2e/assets/strings/fr-FR/strings.json +1 -1
  111. package/e2e/assets/strings/hu-HU/strings.json +1 -1
  112. package/e2e/assets/strings/it-IT/strings.json +1 -1
  113. package/e2e/assets/strings/ja-JP/strings.json +1 -1
  114. package/e2e/assets/strings/ko-KR/strings.json +1 -1
  115. package/e2e/assets/strings/nl-NL/strings.json +1 -1
  116. package/e2e/assets/strings/pl-PL/strings.json +1 -1
  117. package/e2e/assets/strings/pt-BR/strings.json +1 -1
  118. package/e2e/assets/strings/pt-PT/strings.json +1 -1
  119. package/e2e/assets/strings/ru-RU/strings.json +1 -1
  120. package/e2e/assets/strings/strings.json +1 -1
  121. package/e2e/assets/strings/sv-SE/strings.json +1 -1
  122. package/e2e/assets/strings/tr-TR/strings.json +1 -1
  123. package/e2e/assets/strings/zh-CN/strings.json +1 -1
  124. package/e2e/assets/strings/zh-TW/strings.json +1 -1
  125. package/package.json +5 -3
  126. package/styles/css/main.css +1 -1
  127. package/tools/module-template/gulpfile.ts/index.ts +1 -1
  128. package/tools/package-lock.json +18081 -4110
  129. package/tools/wac-cli/src/create/main.d.ts +6 -3
  130. package/tools/wac-cli/src/create/main.js +87 -35
  131. package/tools/wac-cli/src/create/main.js.map +1 -1
  132. package/tools/wac-cli/src/index.js +2 -2
  133. package/tools/wac-cli/src/index.js.map +1 -1
  134. package/tools/wac-cli/templates/internal/npmrc.txt +6 -0
  135. package/tools/wac-cli/templates/internal/package.json +101 -0
  136. package/tools/wac-cli/templates/{manifest/solution-manifest.json → solution/manifest.json} +19 -0
  137. package/tools/wac-cli/templates/solution/strings.resjson +16 -0
  138. package/tools/wac-cli/templates/wac-template/angular.json +2 -2
  139. package/tools/wac-cli/templates/wac-template/gulpfile.ts/config-data.ts +1 -1
  140. package/tools/wac-cli/templates/wac-template/package.json +0 -8
  141. package/tools/wac-cli/templates/wac-template/src/app/app-routing.module.ts +1 -1
  142. package/tools/wac-cli/templates/wac-template/src/main.ts +2 -0
  143. package/tools/wac-cli/templates/{manifest/tool-manifest.json → wac-template/src/manifest.json} +0 -0
  144. package/tools/wac-cli/templates/wac-template/src/polyfills.ts +1 -1
  145. package/tools/wac-cli/templates/wac-template/src/test.ts +2 -2
  146. package/tools/wac-cli/templates/wac-template/src/version.ts +3 -0
  147. package/tools/wac-cli/templates/wac-template/version.json +5 -0
@@ -71,13 +71,13 @@ function MasterViewComponent_button_14_Template(rf, ctx) { if (rf & 1) {
71
71
  function MasterViewComponent_button_15_Template(rf, ctx) { if (rf & 1) {
72
72
  const _r17 = i0.ɵɵgetCurrentView();
73
73
  i0.ɵɵelementStart(0, "button", 27);
74
- i0.ɵɵlistener("click", function MasterViewComponent_button_15_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r17); const ctx_r16 = i0.ɵɵnextContext(); return ctx_r16.refresh.next(); });
74
+ i0.ɵɵlistener("click", function MasterViewComponent_button_15_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r17); const ctx_r16 = i0.ɵɵnextContext(); return ctx_r16.refreshButtonClicked(); });
75
75
  i0.ɵɵelement(1, "span", 28);
76
76
  i0.ɵɵelementEnd();
77
77
  } if (rf & 2) {
78
78
  const ctx_r6 = i0.ɵɵnextContext();
79
- i0.ɵɵproperty("disabled", ctx_r6.disableRefresh)("title", ctx_r6.resourceStrings.refresh.title);
80
- i0.ɵɵattribute("aria-label", ctx_r6.refreshButtonAriaLabel);
79
+ i0.ɵɵproperty("title", ctx_r6.resourceStrings.refresh.title);
80
+ i0.ɵɵattribute("aria-disabled", ctx_r6.disableRefresh)("aria-label", ctx_r6.refreshButtonAriaLabel);
81
81
  } }
82
82
  function MasterViewComponent_button_16_Template(rf, ctx) { if (rf & 1) {
83
83
  const _r19 = i0.ɵɵgetCurrentView();
@@ -131,6 +131,7 @@ export class MasterViewComponent extends CoreBaseComponent {
131
131
  this.pivotComponent = pivotComponent;
132
132
  this.isInitialized = false;
133
133
  this.resourceStrings = this.strings.MsftSmeShell.Angular.MasterView;
134
+ this.commonStrings = this.strings.MsftSmeShell.Angular.Common;
134
135
  this.noSideMargin = false;
135
136
  this.hideHeader = false;
136
137
  this.header = '';
@@ -255,6 +256,23 @@ export class MasterViewComponent extends CoreBaseComponent {
255
256
  this.refreshButtonAriaLabel = this.resourceStrings.refresh.ariaLabel.noHeader;
256
257
  }
257
258
  }
259
+ // Note: this is a bandaid fix to this bug: https://microsoft.visualstudio.com/OS/_workitems/edit/33031791/.
260
+ // The screen reader doesn't announce when aria-disabled changes and the exact reason for that is unknown.
261
+ // It's not best practice to be adjusting the aria-label to achieve the effect but that's the best we came up with.
262
+ // TODO: fix the real issue why the screen reader doesn't announce the aria-disabled changes
263
+ ngOnChanges(changes) {
264
+ var _a;
265
+ let refreshButtonLabel = this.resourceStrings.refresh.ariaLabel.noHeader;
266
+ if (this.header) {
267
+ refreshButtonLabel = this.resourceStrings.refresh.ariaLabel.header.format(this.header);
268
+ }
269
+ if (((_a = changes.disableRefresh) === null || _a === void 0 ? void 0 : _a.currentValue) === true) {
270
+ this.refreshButtonAriaLabel = `${this.commonStrings.disabled} ${refreshButtonLabel}`;
271
+ }
272
+ else {
273
+ this.refreshButtonAriaLabel = `${this.commonStrings.enabled} ${refreshButtonLabel}`;
274
+ }
275
+ }
258
276
  ngOnDestroy() {
259
277
  if (this.splitViewPaneToggledSubscription) {
260
278
  this.splitViewPaneToggledSubscription.unsubscribe();
@@ -308,6 +326,15 @@ export class MasterViewComponent extends CoreBaseComponent {
308
326
  this.actionBarComponent.updateActionBar();
309
327
  }
310
328
  }
329
+ /**
330
+ * Handles clicking on the refresh button
331
+ */
332
+ refreshButtonClicked() {
333
+ if (this.disableRefresh) {
334
+ return;
335
+ }
336
+ this.refresh.next();
337
+ }
311
338
  handleDetailPaneExpanding(dataViewControl) {
312
339
  if (this.splitView) {
313
340
  let newDataSelection = null;
@@ -386,7 +413,7 @@ export class MasterViewComponent extends CoreBaseComponent {
386
413
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dataView = _t.first);
387
414
  } }, hostBindings: function MasterViewComponent_HostBindings(rf, ctx) { if (rf & 1) {
388
415
  i0.ɵɵlistener("resize", function MasterViewComponent_resize_HostBindingHandler() { return ctx.updateLayout(); }, false, i0.ɵɵresolveWindow);
389
- } }, inputs: { noSideMargin: "noSideMargin", hideHeader: "hideHeader", header: "header", total: "total", showSelection: "showSelection", showColumnPicker: "showColumnPicker", columnPickerActive: "columnPickerActive", showRefresh: "showRefresh", disableRefresh: "disableRefresh", dataTableMinWidth: "dataTableMinWidth", showFilter: "showFilter", filterActive: "filterActive", enableQueryEditor: "enableQueryEditor", selection: "selection", requireDataItemUniqueId: "requireDataItemUniqueId", showCustomFilter: "showCustomFilter", groupActive: "groupActive", stretchToAbsolute: "stretchToAbsolute", autoExpandDetailsPane: "autoExpandDetailsPane", showGroup: "showGroup" }, outputs: { selectionChange: "selectionChange", columnPicker: "columnPicker", refresh: "refresh", filter: "filter", group: "group", clearSelection: "clearSelection" }, features: [i0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c5, decls: 24, vars: 27, consts: [["class", "sme-position-flex-none sme-padding-squish-v-lg sme-arrange-word-wrap-break-word sme-font-h3", 3, "hidden", "id", 4, "ngIf"], [3, "layoutChanged"], ["layout", ""], ["name", "narrow", 3, "until"], ["class", "sme-position-flex-none", 3, "sme-padding-horizontal-sm", 4, "ngIf"], [1, "sme-position-flex-none", "sme-arrange-stack-reversed"], ["container", ""], [1, "sme-position-flex-none", "sme-arrange-stack-h"], [1, "sme-focus-zone", "sme-position-flex-none", "sme-arrange-stack-h", "sme-arrange-ws-nowrap", "sme-scheme-secondary-text"], ["role", "status", 1, "sme-layout-action-bar-item", "sme-padding-horizontal-sm", 3, "id"], ["type", "button", "role", "button", "class", "sme-button-trigger sme-layout-action-bar-item-height sme-scheme-secondary-text sme-button-auto-width", 3, "click", 4, "ngIf"], [1, "sme-focus-zone", "sme-arrange-ws-nowrap"], ["type", "button", "role", "button", "class", "sme-layout-action-bar-item-height sme-button-trigger sme-button-auto-width", "data-uta-id", "column-picker-button", 3, "title", "sme-toggled", "click", 4, "ngIf"], ["type", "button", "role", "button", "class", "sme-layout-action-bar-item-height sme-button-trigger sme-button-auto-width", 3, "disabled", "title", "click", 4, "ngIf"], ["type", "button", "role", "button", "class", "sme-layout-action-bar-item-height sme-button-trigger sme-button-auto-width", 3, "title", "sme-toggled", "click", 4, "ngIf"], [1, "sme-focus-zone"], ["class", "sme-margin-horizontal-sm", 4, "ngIf"], ["style", "position: relative;", 4, "ngIf"], ["dataView", ""], [1, "sme-position-flex-none", "sme-padding-squish-v-lg", "sme-arrange-word-wrap-break-word", "sme-font-h3", 3, "hidden", "id"], [1, "sme-position-flex-none"], ["type", "button", "role", "button", 1, "sme-button-trigger", "sme-layout-action-bar-item-height", "sme-scheme-secondary-text", "sme-button-auto-width", 3, "click"], ["aria-hidden", "true"], [1, "sme-screen-reader"], ["aria-hidden", "true", 1, "sme-icon", "sme-icon-clear", "sme-margin-left-xs", 3, "title"], ["type", "button", "role", "button", "data-uta-id", "column-picker-button", 1, "sme-layout-action-bar-item-height", "sme-button-trigger", "sme-button-auto-width", 3, "title", "click"], [1, "sme-icon", "sme-icon-tripleColumn"], ["type", "button", "role", "button", 1, "sme-layout-action-bar-item-height", "sme-button-trigger", "sme-button-auto-width", 3, "disabled", "title", "click"], [1, "sme-icon", "sme-icon-refresh"], ["type", "button", "role", "button", 1, "sme-layout-action-bar-item-height", "sme-button-trigger", "sme-button-auto-width", 3, "title", "click"], [1, "sme-icon", "sme-icon-filter"], [1, "sme-icon", "sme-icon-groupedList"], [1, "sme-margin-horizontal-sm"], [2, "position", "relative"], [1, "sme-position-flex-none", "sme-layout-action-bar-item"]], template: function MasterViewComponent_Template(rf, ctx) { if (rf & 1) {
416
+ } }, inputs: { noSideMargin: "noSideMargin", hideHeader: "hideHeader", header: "header", total: "total", showSelection: "showSelection", showColumnPicker: "showColumnPicker", columnPickerActive: "columnPickerActive", showRefresh: "showRefresh", disableRefresh: "disableRefresh", dataTableMinWidth: "dataTableMinWidth", showFilter: "showFilter", filterActive: "filterActive", enableQueryEditor: "enableQueryEditor", selection: "selection", requireDataItemUniqueId: "requireDataItemUniqueId", showCustomFilter: "showCustomFilter", groupActive: "groupActive", stretchToAbsolute: "stretchToAbsolute", autoExpandDetailsPane: "autoExpandDetailsPane", showGroup: "showGroup" }, outputs: { selectionChange: "selectionChange", columnPicker: "columnPicker", refresh: "refresh", filter: "filter", group: "group", clearSelection: "clearSelection" }, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c5, decls: 24, vars: 27, consts: [["class", "sme-position-flex-none sme-padding-squish-v-lg sme-arrange-word-wrap-break-word sme-font-h3", 3, "hidden", "id", 4, "ngIf"], [3, "layoutChanged"], ["layout", ""], ["name", "narrow", 3, "until"], ["class", "sme-position-flex-none", 3, "sme-padding-horizontal-sm", 4, "ngIf"], [1, "sme-position-flex-none", "sme-arrange-stack-reversed"], ["container", ""], [1, "sme-position-flex-none", "sme-arrange-stack-h"], [1, "sme-focus-zone", "sme-position-flex-none", "sme-arrange-stack-h", "sme-arrange-ws-nowrap", "sme-scheme-secondary-text"], ["role", "status", 1, "sme-layout-action-bar-item", "sme-padding-horizontal-sm", 3, "id"], ["type", "button", "role", "button", "class", "sme-button-trigger sme-layout-action-bar-item-height sme-scheme-secondary-text sme-button-auto-width", 3, "click", 4, "ngIf"], [1, "sme-focus-zone", "sme-arrange-ws-nowrap"], ["type", "button", "role", "button", "class", "sme-layout-action-bar-item-height sme-button-trigger sme-button-auto-width", "data-uta-id", "column-picker-button", 3, "title", "sme-toggled", "click", 4, "ngIf"], ["aria-live", "polite", "type", "button", "role", "button", "class", "sme-layout-action-bar-item-height sme-button-trigger sme-button-auto-width", 3, "title", "click", 4, "ngIf"], ["type", "button", "role", "button", "class", "sme-layout-action-bar-item-height sme-button-trigger sme-button-auto-width", 3, "title", "sme-toggled", "click", 4, "ngIf"], [1, "sme-focus-zone"], ["class", "sme-margin-horizontal-sm", 4, "ngIf"], ["style", "position: relative;", 4, "ngIf"], ["dataView", ""], [1, "sme-position-flex-none", "sme-padding-squish-v-lg", "sme-arrange-word-wrap-break-word", "sme-font-h3", 3, "hidden", "id"], [1, "sme-position-flex-none"], ["type", "button", "role", "button", 1, "sme-button-trigger", "sme-layout-action-bar-item-height", "sme-scheme-secondary-text", "sme-button-auto-width", 3, "click"], ["aria-hidden", "true"], [1, "sme-screen-reader"], ["aria-hidden", "true", 1, "sme-icon", "sme-icon-clear", "sme-margin-left-xs", 3, "title"], ["type", "button", "role", "button", "data-uta-id", "column-picker-button", 1, "sme-layout-action-bar-item-height", "sme-button-trigger", "sme-button-auto-width", 3, "title", "click"], [1, "sme-icon", "sme-icon-tripleColumn"], ["aria-live", "polite", "type", "button", "role", "button", 1, "sme-layout-action-bar-item-height", "sme-button-trigger", "sme-button-auto-width", 3, "title", "click"], [1, "sme-icon", "sme-icon-refresh"], ["type", "button", "role", "button", 1, "sme-layout-action-bar-item-height", "sme-button-trigger", "sme-button-auto-width", 3, "title", "click"], [1, "sme-icon", "sme-icon-filter"], [1, "sme-icon", "sme-icon-groupedList"], [1, "sme-margin-horizontal-sm"], [2, "position", "relative"], [1, "sme-position-flex-none", "sme-layout-action-bar-item"]], template: function MasterViewComponent_Template(rf, ctx) { if (rf & 1) {
390
417
  i0.ɵɵprojectionDef(_c4);
391
418
  i0.ɵɵtemplate(0, MasterViewComponent_h2_0_Template, 2, 3, "h2", 0);
392
419
  i0.ɵɵelementStart(1, "sme-layout", 1, 2);
@@ -537,4 +564,4 @@ export class MasterViewComponent extends CoreBaseComponent {
537
564
  type: HostListener,
538
565
  args: ['window:resize']
539
566
  }] }); })();
540
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzdGVyLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvbWFzdGVyLXZpZXcvbWFzdGVyLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvbWFzdGVyLXZpZXcvbWFzdGVyLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsRUFDVCxZQUFZLEVBRVosVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBR04sUUFBUSxFQUNSLE1BQU0sRUFFTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBR3ZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7Ozs7Ozs7OztJQzNCeEUsOEJBQ3dDO0lBQUEsWUFBVTtJQUFBLGlCQUFLOzs7SUFBckQsMENBQXFCLHVCQUFBO0lBQWlCLGVBQVU7SUFBVixtQ0FBVTs7O0lBSWxELCtCQUFnSDtJQUU5RyxxQkFBbUQ7SUFDckQsaUJBQU07OztJQUh3RCxpRUFBaUQ7Ozs7SUFrQnpHLGtDQUVvRjtJQUFuQyxnTkFBa0M7SUFDakYsNkJBQXNCO0lBQUEsWUFBMEI7SUFBQSxpQkFBSTtJQUNwRCw2QkFBNkI7SUFBQSxZQUE4QjtJQUFBLGlCQUFJO0lBQy9ELHdCQUM4QztJQUNoRCxpQkFBUzs7O0lBSmUsZUFBMEI7SUFBMUIsbURBQTBCO0lBQ25CLGVBQThCO0lBQTlCLHVEQUE4QjtJQUV6RCxlQUF1QztJQUF2Qyw0REFBdUM7Ozs7SUFLM0Msa0NBRzhFO0lBSDdDLHNLQUFTLDJCQUFtQixJQUFFO0lBSTdELDJCQUFvRDtJQUN0RCxpQkFBUzs7O0lBRlAsd0RBQXdDO0lBRnhDLGlFQUE0QztJQUFDLHlEQUF3Qzs7OztJQUt2RixrQ0FFcUY7SUFGN0Isc0tBQVMsc0JBQWMsSUFBQztJQUc5RSwyQkFBK0M7SUFDakQsaUJBQVM7OztJQUptQixnREFBMkIsK0NBQUE7SUFDYiwyREFBMEM7Ozs7SUFJcEYsa0NBR3FDO0lBSFYsc0tBQVMscUJBQWEsSUFBRTtJQUlqRCwyQkFBOEM7SUFDaEQsaUJBQVM7OztJQUZQLGtEQUFrQztJQUZsQywyREFBc0M7SUFBQyx5REFBd0M7Ozs7SUFLakYsa0NBR29DO0lBSFYsc0tBQVMsb0JBQVksSUFBQztJQUs5QywyQkFBbUQ7SUFDckQsaUJBQVM7OztJQUhQLGlEQUFpQztJQUgwQywwREFBcUM7SUFDaEgsZ0VBQStDOzs7SUFTakQsK0JBQStEO0lBQzdELHFCQUFpRTtJQUNuRSxpQkFBTTs7O0lBR1IsZ0NBQW9EO0lBQ2xELCtCQUErRDtJQUM3RCxxQkFBZ0U7SUFDbEUsaUJBQU07SUFDUixpQkFBTzs7OztBRHJDWCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsaUJBQWlCO0lBbUl0RCxZQUNJLFFBQWtCLEVBQ1YsTUFBYyxFQUNGLFNBQTZCLEVBQzdCLGNBQThCO1FBRWxELCtIQUErSDtRQUMvSCx5RkFBeUY7UUFDekYsOEdBQThHO1FBQzlHLDREQUE0RDtRQUM1RCwrSEFBK0g7UUFDL0gsa0NBQWtDO1FBQ2xDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQVZSLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDRixjQUFTLEdBQVQsU0FBUyxDQUFvQjtRQUM3QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUEvSDlDLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBS3ZCLG9CQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQTRCdEQsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFckIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUVuQixXQUFNLEdBQUcsRUFBRSxDQUFDO1FBRVosVUFBSyxHQUFHLENBQUMsQ0FBQztRQUVWLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBRXJCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUV6Qix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFFM0IsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFFbkIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFFdkIsc0JBQWlCLEdBQUcsSUFBSSxDQUFDO1FBRXpCLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFFbEIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFckIsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBYW5DLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQWtCakMsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFHN0Isc0JBQWlCLEdBQUcsSUFBSSxDQUFDO1FBR3pCLDBCQUFxQixHQUFHLElBQUksQ0FBQztRQU03QixpQkFBWSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRzVELFlBQU8sR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUd2RCxXQUFNLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFHdEQsVUFBSyxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBR3JELG1CQUFjLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFOUQsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixzQkFBaUIsR0FBRyxDQUFDLENBQUM7UUFDdEIsbUJBQWMsR0FBRyxDQUFDLENBQUM7UUFDbkIsNEJBQXVCLEdBQUcsSUFBSSxDQUFDO1FBbUJsQyxxQkFBcUI7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsUUFBUSxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVELENBQUM7SUFuSkQ7O09BRUc7SUFDSCxJQUFjLGFBQWE7UUFDdkIsT0FBTyxxQkFBcUIsQ0FBQztJQUNqQyxDQUFDO0lBb0JELElBQ1csWUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNyQyxDQUFDO0lBQ0QsSUFBVyxZQUFZLENBQUMsS0FBeUI7UUFDN0MsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztRQUNsQyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDcEIsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7U0FDdEM7SUFDTCxDQUFDO0lBK0JELElBQW9CLFNBQVMsQ0FBQyxTQUFjO1FBQ3hDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUMxQixLQUFLLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztTQUM1QjthQUFNLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRTtZQUNwQixLQUFLLEdBQUcsQ0FBQyxDQUFDO1NBQ2I7UUFDRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQ25DLENBQUM7SUFRRDs7T0FFRztJQUNILElBQ1csZ0JBQWdCLENBQUMsS0FBYztRQUN0QyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsS0FBSyxDQUFDO0lBQzFDLENBQUM7SUFDRCxJQUFXLGdCQUFnQjtRQUN2QixPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztJQUN6QyxDQUFDO0lBMkREOztPQUVHO0lBQ0ksZUFBZTtRQUNsQixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osMEhBQTBIO1lBQzFILDhFQUE4RTtZQUM5RSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixJQUFJLENBQUMsZ0NBQWdDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDOUUsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFO29CQUNuRixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7aUJBQ3ZCO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUVELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNuQixJQUFJLENBQUMsNkJBQTZCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDekUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRTtvQkFDN0IsSUFBSSxvQkFBb0IsR0FBRyxJQUFJLENBQUM7b0JBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUU7d0JBQy9CLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7NEJBQzdFLG9CQUFvQixHQUFHLEtBQUssQ0FBQzt5QkFDaEM7cUJBQ0o7eUJBQU07d0JBQ0gsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7d0JBQ2pGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7NEJBQzdELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUNoRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7NEJBQ2xELElBQUksTUFBTSxLQUFLLGNBQWMsRUFBRTtnQ0FDM0Isb0JBQW9CLEdBQUcsS0FBSyxDQUFDO2dDQUM3QixNQUFNOzZCQUNUO3lCQUNKO3FCQUNKO29CQUVELElBQUksb0JBQW9CLEVBQUU7d0JBQ3RCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7cUJBQzlCO2lCQUNKO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7SUFFTSxRQUFRO1FBQ1gsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFFMUIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMseUJBQXlCLENBQUMsQ0FBQztTQUM1QztRQUVELElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQ25DLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNiLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDbkc7YUFBTTtZQUNILElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO1NBQ2pGO0lBQ0wsQ0FBQztJQUVNLFdBQVc7UUFDZCxJQUFJLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRTtZQUN2QyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdkQ7UUFFRCxJQUFJLElBQUksQ0FBQyw2QkFBNkIsRUFBRTtZQUNwQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDcEQ7SUFDTCxDQUFDO0lBR00sWUFBWTtRQUNmLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDO0lBQ25FLENBQUM7SUFFTSxTQUFTO1FBQ1osSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDNUIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUNuQixJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ3JEO2lCQUFNLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDMUIsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNyRDtTQUNKO0lBQ0wsQ0FBQztJQUVNLGdCQUFnQixDQUFDLEtBQWlCO1FBQ3JDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBYyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0QsSUFBSSxJQUFJLEVBQUU7WUFDTixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDaEI7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFTSxnQkFBZ0I7UUFDbkIsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0csQ0FBQztJQUVNLG9CQUFvQjtRQUN2QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRU0sd0JBQXdCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFTSxrQkFBa0I7UUFDckIsT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDekcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVNLHdCQUF3QjtRQUMzQixPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLO1lBQzNELENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNyRyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxlQUFlO1FBQ2xCLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ3pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUM3QztJQUNMLENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxlQUFtQztRQUNqRSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDaEIsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7WUFDNUIsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDO1lBRS9GLE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztZQUUzQyxJQUFJLGVBQWUsSUFBSSxnQkFBZ0IsS0FBSyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7Z0JBQ25FLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7b0JBQ3RFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7d0JBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFOzRCQUM1QixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxDQUFDO3lCQUMvQjtvQkFDTCxDQUFDLENBQUMsQ0FBQztpQkFDTjthQUNKO1lBRUQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGdCQUFnQixDQUFDO1NBQ2hEO0lBQ0wsQ0FBQztJQUVPLDBCQUEwQixDQUFDLGdCQUF3QixFQUFFLG1DQUEyQztRQUNwRyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDakYsSUFBSSxZQUFZLEVBQUU7Z0JBQ2QsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7Z0JBQ3RHLG1IQUFtSDtnQkFDbkgsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLHFCQUFxQixFQUFFLENBQUMsR0FBRyxHQUFHLGNBQWMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEdBQUcsQ0FBQztnQkFFeEcscUVBQXFFO2dCQUNyRSxJQUFJLENBQUMsQ0FBQyxTQUFTLElBQUksQ0FBQzt1QkFDYixTQUFTLElBQUksY0FBYyxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLEVBQUU7b0JBQzFFLFlBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQztpQkFDakM7YUFDSjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLDJCQUEyQjtRQUMvQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUMzQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7YUFDakU7aUJBQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUM1QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMvRyxJQUFJLFdBQVcsRUFBRTtvQkFDYixJQUFJLENBQUMsb0JBQW9CLENBQUMsY0FBYyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUM7aUJBQ2hFO2FBQ0o7U0FDSjtJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDTyxXQUFXO1FBQ2pCLE9BQU87WUFDSCxXQUFXLEVBQUUsRUFBRTtZQUNmLGlCQUFpQixFQUFFLEVBQUU7WUFDckIsY0FBYyxFQUFFLEVBQUU7U0FDckIsQ0FBQztJQUNOLENBQUM7O3lHQW5WUSxtQkFBbUI7MkVBQW5CLG1CQUFtQjs7b0NBa0JkLGtCQUFrQjtvQ0FTbEIsa0JBQWtCOzs7Ozs7Ozs7Ozs7Ozs7O2tHQTNCdkIsa0JBQWM7OztRQ2pDM0Isa0VBQ3VEO1FBQ3ZELHdDQUF3RDtRQUFwQyxvSEFBaUIscUJBQWlCLElBQUM7UUFDckQsMkNBQTJFO1FBQzdFLGlCQUFhO1FBQ2Isb0VBR007UUFDTixpQ0FFaUY7UUFFL0Usa0JBQTZEO1FBRTdELDhCQUM2QztRQUUzQyw4QkFFMEU7UUFDeEUsNkJBQTBHO1FBQUEsYUFDbkY7UUFBQSxpQkFBSTtRQUMzQiw2RUFPUztRQUNYLGlCQUFNO1FBRU4sZ0NBQWtEO1FBQ2hELDZFQUtTO1FBQ1QsNkVBSVM7UUFDVCw2RUFLUztRQUNULDZFQU1TO1FBQ1gsaUJBQU07UUFFTixnQ0FBNEI7UUFDMUIsdUVBRU07UUFDUixpQkFBTTtRQUVOLHlFQUlPO1FBQ1QsaUJBQU07UUFDUixpQkFBTTtRQUNOLHNDQUVpRTtRQUMvRCxzQkFBeUI7UUFDM0IsaUJBQU07OztRQTdFbUcsaUNBQVk7UUFHOUUsZUFBYTtRQUFiLDJCQUFhO1FBRTlDLGVBQXVCO1FBQXZCLDRDQUF1QjtRQUszQixlQUFpRDtRQUFqRCw4REFBaUQsd0VBQUE7UUFLTyxlQUFpRDtRQUFqRCw4REFBaUQseUNBQUE7UUFLckcsZUFBdUU7UUFBdkUsd0ZBQXVFO1FBQ3RELGVBQTJCO1FBQTNCLDZDQUEyQjtRQUE4RCxlQUNuRjtRQURtRiw0Q0FDbkY7UUFHcEIsZUFBNEM7UUFBNUMscUVBQTRDO1FBU3RDLGVBQXNCO1FBQXRCLDJDQUFzQjtRQU10QixlQUFpQjtRQUFqQixzQ0FBaUI7UUFLakIsZUFBZ0I7UUFBaEIscUNBQWdCO1FBTWhCLGVBQWU7UUFBZixvQ0FBZTtRQVVsQixlQUFzQjtRQUF0QiwyQ0FBc0I7UUFLdkIsZUFBZTtRQUFmLG9DQUFlO1FBUXhCLGVBQTBJO1FBQTFJLHFLQUEwSTtRQUMxSSwyRUFBOEQ7O3VGRDFDbkQsbUJBQW1CO2NBSi9CLFNBQVM7ZUFBQztnQkFDUCxRQUFRLEVBQUUsaUJBQWlCO2dCQUMzQixXQUFXLEVBQUUsOEJBQThCO2FBQzlDOztzQkF1SVEsUUFBUTs7c0JBQ1IsUUFBUTt3QkF2SE4sYUFBYTtrQkFEbkIsWUFBWTttQkFBQyxRQUFRO1lBSWYsa0JBQWtCO2tCQUR4QixZQUFZO21CQUFDLGtCQUFrQjtZQUl6QixnQkFBZ0I7a0JBRHRCLFNBQVM7bUJBQUMsV0FBVztZQUlmLFFBQVE7a0JBRGQsU0FBUzttQkFBQyxVQUFVO1lBSVYsWUFBWTtrQkFEdEIsWUFBWTttQkFBQyxrQkFBa0I7WUFZekIsWUFBWTtrQkFEbEIsWUFBWTttQkFBQyxjQUFjO1lBR1osWUFBWTtrQkFBM0IsS0FBSztZQUVVLFVBQVU7a0JBQXpCLEtBQUs7WUFFVSxNQUFNO2tCQUFyQixLQUFLO1lBRVUsS0FBSztrQkFBcEIsS0FBSztZQUVVLGFBQWE7a0JBQTVCLEtBQUs7WUFFVSxnQkFBZ0I7a0JBQS9CLEtBQUs7WUFFVSxrQkFBa0I7a0JBQWpDLEtBQUs7WUFFVSxXQUFXO2tCQUExQixLQUFLO1lBRVUsY0FBYztrQkFBN0IsS0FBSztZQUVVLGlCQUFpQjtrQkFBaEMsS0FBSztZQUVVLFVBQVU7a0JBQXpCLEtBQUs7WUFFVSxZQUFZO2tCQUEzQixLQUFLO1lBRVUsaUJBQWlCO2tCQUFoQyxLQUFLO1lBRWMsU0FBUztrQkFBNUIsS0FBSztZQVdDLGVBQWU7a0JBRHJCLE1BQU07WUFJQSx1QkFBdUI7a0JBRDdCLEtBQUs7WUFPSyxnQkFBZ0I7a0JBRDFCLEtBQUs7WUFVVSxXQUFXO2tCQUExQixLQUFLO1lBR0MsaUJBQWlCO2tCQUR2QixLQUFLO1lBSUMscUJBQXFCO2tCQUQzQixLQUFLO1lBSUMsU0FBUztrQkFEZixLQUFLO1lBSUMsWUFBWTtrQkFEbEIsTUFBTTtZQUlBLE9BQU87a0JBRGIsTUFBTTtZQUlBLE1BQU07a0JBRFosTUFBTTtZQUlBLEtBQUs7a0JBRFgsTUFBTTtZQUlBLGNBQWM7a0JBRHBCLE1BQU07WUEwR0EsWUFBWTtrQkFEbEIsWUFBWTttQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIEFmdGVyVmlld0luaXQsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBDb250ZW50Q2hpbGQsXHJcbiAgICBEb0NoZWNrLFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEhvc3RMaXN0ZW5lcixcclxuICAgIEluamVjdG9yLFxyXG4gICAgSW5wdXQsXHJcbiAgICBOZ1pvbmUsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBPbkluaXQsXHJcbiAgICBPcHRpb25hbCxcclxuICAgIE91dHB1dCxcclxuICAgIFJlbmRlcmVyMixcclxuICAgIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEZXByZWNhdGVkIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9iYXNlL2RlY29yYXRvcnMvZGVwcmVjYXRpb24uZGVjb3JhdG9ycyc7XHJcbmltcG9ydCB7IERvbSB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvZG9tL2RvbSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTdHJpbmdzIH0gZnJvbSAnLi4vLi4vZ2VuZXJhdGVkL3N0cmluZ3MnO1xyXG5pbXBvcnQgeyBBY3Rpb25CYXJDb21wb25lbnQgfSBmcm9tICcuLi9hY3Rpb25zL2NvbnRhaW5lcnMvYWN0aW9uLWJhci9hY3Rpb24tYmFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcmVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tbW9uL2Jhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGF0YVRhYmxlQ29tcG9uZW50LCBUcmVlVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi9kYXRhLXRhYmxlL2RhdGEtdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2VhcmNoRm9ybUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS9mb3JtLWZpZWxkL3NlYXJjaC9zZWFyY2gtZm9ybS1maWVsZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQaXZvdENvbXBvbmVudCB9IGZyb20gJy4uL3Bpdm90L3Bpdm90LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNwbGl0Vmlld0NvbXBvbmVudCB9IGZyb20gJy4uL3NwbGl0LXZpZXcvc3BsaXQtdmlldy5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NtZS1tYXN0ZXItdmlldycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWFzdGVyLXZpZXcuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXN0ZXJWaWV3Q29tcG9uZW50IGV4dGVuZHMgQ29yZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBEb0NoZWNrLCBPbkRlc3Ryb3ksIE9uSW5pdCB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc291cmNlIG5hbWUgdG8gdXNlIGZvciBsb2dnaW5nXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBnZXQgbG9nU291cmNlTmFtZSgpIHtcclxuICAgICAgICByZXR1cm4gJ01hc3RlclZpZXdDb21wb25lbnQnO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBpc0luaXRpYWxpemVkID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIHRpbWVyOiBhbnk7XHJcbiAgICBwcml2YXRlIGN1cnJlbnREYXRhU2VsZWN0aW9uOiBhbnk7XHJcbiAgICBwcml2YXRlIGludGVybmFsU21lRGF0YVRhYmxlOiBEYXRhVGFibGVDb21wb25lbnQ7XHJcblxyXG4gICAgcHVibGljIHJlc291cmNlU3RyaW5ncyA9IHRoaXMuc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5NYXN0ZXJWaWV3O1xyXG5cclxuICAgIEBDb250ZW50Q2hpbGQoJ3NlYXJjaCcpXHJcbiAgICBwdWJsaWMgc2VhcmNoRWxlbWVudDogU2VhcmNoRm9ybUZpZWxkQ29tcG9uZW50O1xyXG5cclxuICAgIEBDb250ZW50Q2hpbGQoQWN0aW9uQmFyQ29tcG9uZW50KVxyXG4gICAgcHVibGljIGFjdGlvbkJhckNvbXBvbmVudDogQWN0aW9uQmFyQ29tcG9uZW50O1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicpXHJcbiAgICBwdWJsaWMgY29udGFpbmVyRWxlbWVudDogRWxlbWVudFJlZjtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdkYXRhVmlldycpXHJcbiAgICBwdWJsaWMgZGF0YVZpZXc6IEVsZW1lbnRSZWY7XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZChEYXRhVGFibGVDb21wb25lbnQpXHJcbiAgICBwdWJsaWMgZ2V0IHNtZURhdGFUYWJsZSgpOiBEYXRhVGFibGVDb21wb25lbnQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmludGVybmFsU21lRGF0YVRhYmxlO1xyXG4gICAgfVxyXG4gICAgcHVibGljIHNldCBzbWVEYXRhVGFibGUodmFsdWU6IERhdGFUYWJsZUNvbXBvbmVudCkge1xyXG4gICAgICAgIHRoaXMuaW50ZXJuYWxTbWVEYXRhVGFibGUgPSB2YWx1ZTtcclxuICAgICAgICBpZiAodGhpcy5pc0luaXRpYWxpemVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0dXBEYXRhVGFibGVBY2Nlc3NpYmlsaXR5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBDb250ZW50Q2hpbGQoJ3NtZVRyZWVUYWJsZScpXHJcbiAgICBwdWJsaWMgc21lVHJlZVRhYmxlOiBUcmVlVGFibGVDb21wb25lbnQ7XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIG5vU2lkZU1hcmdpbiA9IGZhbHNlO1xyXG5cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBoaWRlSGVhZGVyID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIGhlYWRlciA9ICcnO1xyXG5cclxuICAgIEBJbnB1dCgpIHB1YmxpYyB0b3RhbCA9IDA7XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIHNob3dTZWxlY3Rpb24gPSB0cnVlO1xyXG5cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBzaG93Q29sdW1uUGlja2VyID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIGNvbHVtblBpY2tlckFjdGl2ZSA9IGZhbHNlO1xyXG5cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBzaG93UmVmcmVzaCA9IHRydWU7XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIGRpc2FibGVSZWZyZXNoID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIGRhdGFUYWJsZU1pbldpZHRoID0gJ21kJztcclxuXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgc2hvd0ZpbHRlciA9IHRydWU7XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIGZpbHRlckFjdGl2ZSA9IGZhbHNlO1xyXG5cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBlbmFibGVRdWVyeUVkaXRvciA9IGZhbHNlO1xyXG5cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBzZXQgc2VsZWN0aW9uKHNlbGVjdGlvbjogYW55KSB7XHJcbiAgICAgICAgbGV0IGNvdW50ID0gMDtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzZWxlY3Rpb24pKSB7XHJcbiAgICAgICAgICAgIGNvdW50ID0gc2VsZWN0aW9uLmxlbmd0aDtcclxuICAgICAgICB9IGVsc2UgaWYgKCEhc2VsZWN0aW9uKSB7XHJcbiAgICAgICAgICAgIGNvdW50ID0gMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1Db3VudCA9IGNvdW50O1xyXG4gICAgfVxyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgcmVxdWlyZURhdGFJdGVtVW5pcXVlSWQ6IChpdGVtOiBhbnkpID0+IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIDcvMTMvMTguIFBsZWFzZSB1c2UgW3Nob3dHcm91cF0sIFtncm91cEFjdGl2ZV0sIGFuZCAoZ3JvdXApIGluc3RlYWRcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgc2hvd0N1c3RvbUZpbHRlcih2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuaW50ZXJuYWxTaG93Q3VzdG9tRmlsdGVyID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgZ2V0IHNob3dDdXN0b21GaWx0ZXIoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxTaG93Q3VzdG9tRmlsdGVyO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW50ZXJuYWxTaG93Q3VzdG9tRmlsdGVyOiBib29sZWFuO1xyXG5cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBncm91cEFjdGl2ZSA9IGZhbHNlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc3RyZXRjaFRvQWJzb2x1dGUgPSB0cnVlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYXV0b0V4cGFuZERldGFpbHNQYW5lID0gdHJ1ZTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNob3dHcm91cD86IGJvb2xlYW47XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgY29sdW1uUGlja2VyOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgcmVmcmVzaDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGZpbHRlcjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGdyb3VwOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgY2xlYXJTZWxlY3Rpb246IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICBwdWJsaWMgdXNlU2VhcmNoID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgc2VsZWN0ZWRJdGVtQ291bnQgPSAwO1xyXG4gICAgcHVibGljIGRhdGFWaWV3SGVpZ2h0ID0gMDtcclxuICAgIHB1YmxpYyBpc0RhdGFMaXN0U2Nyb2xsZWRUb3RvcCA9IHRydWU7XHJcbiAgICBwdWJsaWMgaGVhZGVySWQ6IHN0cmluZztcclxuICAgIHByaXZhdGUgc3BsaXRWaWV3UGFuZVRvZ2dsZWRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICAgIHByaXZhdGUgZGF0YVRhYmxlT25GaWx0ZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICAgIHB1YmxpYyByZWZyZXNoQnV0dG9uQXJpYUxhYmVsOiBzdHJpbmc7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXHJcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBzcGxpdFZpZXc6IFNwbGl0Vmlld0NvbXBvbmVudCxcclxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHBpdm90Q29tcG9uZW50OiBQaXZvdENvbXBvbmVudFxyXG4gICAgKSB7XHJcbiAgICAgICAgLy8gQWZ0ZXIgdGhlIGRpc2N1c3Npb24sIHRoZSBwbGFuIGlzIHN0aWxsIGhhdmUgbWFzdGVyIHZpZXcgdG8gY29vcmRpbmF0ZSB3aXRoIHNwbGl0IHZpZXcgYXMgd2VsbCBhcyB0cmVlIHRhYmxlIGFuZCBkYXRhIHRhYmxlLlxyXG4gICAgICAgIC8vIEl0J3MgYSBsaXR0bGUgdHJpY2t5IHRvIGxldCBtYXN0ZXIgdmlldyB0byB0YWxrIHRvIGl0cyBwYXJlbnQgd2hpY2ggaXMgdGhlIHNwbGl0IHZpZXcuXHJcbiAgICAgICAgLy8gQnV0IHdlIGRvIG5lZWQgYSBjb21wb25lbnQgdG8gaW1wbGVtZW50IHRoZSBjb21tb24gYmVoYXZpb3Igb24gdGhlIFVJIHRvIGF2b2lkIGR1cGxpY2F0ZSBjb2RlIGluIGVhY2ggdG9vbC5cclxuICAgICAgICAvLyBBdCB0aGlzIG1vbWVudCwgbWFzdGVyIHZpZXcgaXMgdGhlIG1vc3QgcHJvcGVyIGNvbXBvbmVudC5cclxuICAgICAgICAvLyBMb25nIHRlcm0gd2lzZSwgd2Ugd2lsbCBmaWd1cmUgb3V0IGEgYmV0dGVyIGNvbXBvbmVudCBzaXR0aW5nIGluIHRoZSB0b3AgbGV2ZWwgb2YgdGhlIFVJIHRvIGNvb3JkaW5hdGUgd2l0aCBvdGhlciBjb21wb25lbnRzXHJcbiAgICAgICAgLy8gYW5kIGltcGxlbWVudCBjb21tb24gYmVoYXZpb3JzLlxyXG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcclxuICAgICAgICAvLyBzZXR1cCBob3N0IGNsYXNzZXNcclxuICAgICAgICB0aGlzLmFkZENsYXNzKCdzbWUtYXJyYW5nZS1zdGFjay12Jyk7XHJcbiAgICAgICAgdGhpcy5hZGRDbGFzcygnc21lLWFycmFuZ2Utb3ZlcmZsb3ctaGlkZS15Jyk7XHJcbiAgICAgICAgdGhpcy5hZGRDbGFzcygnc21lLWFycmFuZ2Utb3ZlcmZsb3ctYXV0by14Jyk7XHJcbiAgICAgICAgdGhpcy5oZWFkZXJJZCA9ICdtYXN0ZXItdmlldy1oZWFkZXInICsgdGhpcy5jb21wb25lbnRJZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBtZXRob2QgdG8gcnVuIGFmdGVyIHRoZSBjb21wb25lbnQgdmlldyBpbml0aWFsaXplZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAvLyBUaGUgXCJuZ0FmdGVyVmlld0luaXRcIiBpcyBzdGlsbCBpbiBjdXJyZW50IGNoZWNrIGN5Y2xlIHNvIHdlIHNob3VsZCBub3QgdXBkYXRlIHRoZSBmb2xsb3dpbmcgVUkgaW5mb3JtYXRpb24gaW1tZWRpYXRlbHkuXHJcbiAgICAgICAgICAgIC8vIFNvIHdlIHVzZSBzZXRUaW1lb3V0IHRvIGRlZmVyIHRoZSBmb2xsb3dpbmcgb3BlcmF0aW9ucyB0byBuZXh0IGNoZWNrIGN5Y2xlLlxyXG4gICAgICAgICAgICB0aGlzLnVzZVNlYXJjaCA9ICEhdGhpcy5zZWFyY2hFbGVtZW50O1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zcGxpdFZpZXcpIHtcclxuICAgICAgICAgICAgdGhpcy5zcGxpdFZpZXdQYW5lVG9nZ2xlZFN1YnNjcmlwdGlvbiA9IHRoaXMuc3BsaXRWaWV3LnBhbmVUb2dnbGVkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhVmlldyAmJiB0aGlzLmRhdGFWaWV3SGVpZ2h0ICE9PSB0aGlzLmRhdGFWaWV3Lm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5zbWVEYXRhVGFibGUpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhVGFibGVPbkZpbHRlclN1YnNjcmlwdGlvbiA9IHRoaXMuc21lRGF0YVRhYmxlLmZpbHRlci5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc21lRGF0YVRhYmxlLnNlbGVjdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBzaG91bGRDbGVhclNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnJlcXVpcmVEYXRhSXRlbVVuaXF1ZUlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNtZURhdGFUYWJsZS5yZW5kZXJlZEl0ZW1zLmluZGV4T2YodGhpcy5zbWVEYXRhVGFibGUuc2VsZWN0aW9uKSAhPT0gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZENsZWFyU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1JZCA9IHRoaXMucmVxdWlyZURhdGFJdGVtVW5pcXVlSWQodGhpcy5zbWVEYXRhVGFibGUuc2VsZWN0aW9uKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNtZURhdGFUYWJsZS5yZW5kZXJlZEl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5zbWVEYXRhVGFibGUucmVuZGVyZWRJdGVtc1tpXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1JZCA9IHRoaXMucmVxdWlyZURhdGFJdGVtVW5pcXVlSWQoaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbUlkID09PSBzZWxlY3RlZEl0ZW1JZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZENsZWFyU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzaG91bGRDbGVhclNlbGVjdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uLmVtaXQoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc3RyZXRjaFRvQWJzb2x1dGUpIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRDbGFzcygnc21lLWxheW91dC1hYnNvbHV0ZScpO1xyXG4gICAgICAgICAgICB0aGlzLmFkZENsYXNzKCdzbWUtcG9zaXRpb24taW5zZXQtbm9uZScpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zZXR1cERhdGFUYWJsZUFjY2Vzc2liaWxpdHkoKTtcclxuICAgICAgICBpZiAodGhpcy5oZWFkZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5yZWZyZXNoQnV0dG9uQXJpYUxhYmVsID0gdGhpcy5yZXNvdXJjZVN0cmluZ3MucmVmcmVzaC5hcmlhTGFiZWwuaGVhZGVyLmZvcm1hdCh0aGlzLmhlYWRlcik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5yZWZyZXNoQnV0dG9uQXJpYUxhYmVsID0gdGhpcy5yZXNvdXJjZVN0cmluZ3MucmVmcmVzaC5hcmlhTGFiZWwubm9IZWFkZXI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5zcGxpdFZpZXdQYW5lVG9nZ2xlZFN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLnNwbGl0Vmlld1BhbmVUb2dnbGVkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5kYXRhVGFibGVPbkZpbHRlclN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFUYWJsZU9uRmlsdGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxyXG4gICAgcHVibGljIHVwZGF0ZUxheW91dCgpIHtcclxuICAgICAgICB0aGlzLmRhdGFWaWV3SGVpZ2h0ID0gdGhpcy5kYXRhVmlldy5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdEb0NoZWNrKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmF1dG9FeHBhbmREZXRhaWxzUGFuZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zbWVEYXRhVGFibGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRGV0YWlsUGFuZUV4cGFuZGluZyh0aGlzLnNtZURhdGFUYWJsZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zbWVUcmVlVGFibGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRGV0YWlsUGFuZUV4cGFuZGluZyh0aGlzLnNtZVRyZWVUYWJsZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRvQ2xlYXJTZWxlY3Rpb24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBuZXh0ID0gRG9tLmdldE5leHRab25lRWxlbWVudCg8SFRNTEVsZW1lbnQ+ZXZlbnQudGFyZ2V0KTtcclxuICAgICAgICBpZiAobmV4dCkge1xyXG4gICAgICAgICAgICBuZXh0LmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24ubmV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRJdGVtQ291bnRUZXh0KCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG90YWwgPT09IDEgPyB0aGlzLnJlc291cmNlU3RyaW5ncy5vbmVJdGVtIDogdGhpcy5yZXNvdXJjZVN0cmluZ3MuaXRlbXMuZm9ybWF0KHRoaXMudG90YWwpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRTZWxlY3RlZENvdW50VGV4dCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlc291cmNlU3RyaW5ncy5zZWxlY3RlZC5mb3JtYXQodGhpcy5zZWxlY3RlZEl0ZW1Db3VudCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFNlbGVjdGVkQ291bnRBcmlhVGV4dCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJlc291cmNlU3RyaW5ncy5zZWxlY3RlZEFyaWEuZm9ybWF0KHRoaXMuc2VsZWN0ZWRJdGVtQ291bnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRGaWx0ZXJBcmlhTGFiZWwoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5yZXNvdXJjZVN0cmluZ3MuZmlsdGVyLnRpdGxlfSAke3RoaXMudG90YWwgPyB0aGlzLnJlc291cmNlU3RyaW5ncy5yZXN1bHRzLmZvcm1hdCh0aGlzLnRvdGFsKSA6XHJcbiAgICAgICAgICAgIHRoaXMucmVzb3VyY2VTdHJpbmdzLnJlc3VsdHMuZm9ybWF0KDApfWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldENvbHVtblBpY2tlckFyaWFMYWJlbCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLnJlc291cmNlU3RyaW5ncy5jb2x1bW5QaWNrZXIudGl0bGV9ICR7dGhpcy50b3RhbFxyXG4gICAgICAgICAgICA/IHRoaXMucmVzb3VyY2VTdHJpbmdzLnJlc3VsdHMuZm9ybWF0KHRoaXMudG90YWwpIDogdGhpcy5yZXNvdXJjZVN0cmluZ3MucmVzdWx0cy5mb3JtYXQoMCl9YDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFVwZGF0ZSB0aGUgYWN0aW9uIGJhclxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdXBkYXRlQWN0aW9uQmFyKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmFjdGlvbkJhckNvbXBvbmVudCkge1xyXG4gICAgICAgICAgICB0aGlzLmFjdGlvbkJhckNvbXBvbmVudC51cGRhdGVBY3Rpb25CYXIoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYW5kbGVEZXRhaWxQYW5lRXhwYW5kaW5nKGRhdGFWaWV3Q29udHJvbDogRGF0YVRhYmxlQ29tcG9uZW50KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3BsaXRWaWV3KSB7XHJcbiAgICAgICAgICAgIGxldCBuZXdEYXRhU2VsZWN0aW9uID0gbnVsbDtcclxuICAgICAgICAgICAgbmV3RGF0YVNlbGVjdGlvbiA9IGRhdGFWaWV3Q29udHJvbC5yZW5kZXJlZEl0ZW1zW2RhdGFWaWV3Q29udHJvbC5nZXRBY3RpdmVSZW5kZXJlZEl0ZW1JbmRleCgpXTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGhhc0l0ZW1TZWxlY3RlZCA9ICEhbmV3RGF0YVNlbGVjdGlvbjtcclxuXHJcbiAgICAgICAgICAgIGlmIChoYXNJdGVtU2VsZWN0ZWQgJiYgbmV3RGF0YVNlbGVjdGlvbiAhPT0gdGhpcy5jdXJyZW50RGF0YVNlbGVjdGlvbikge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnREYXRhU2VsZWN0aW9uIHx8IHRoaXMuY3VycmVudERhdGFTZWxlY3Rpb24ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zcGxpdFZpZXcuaXNFeHBhbmRlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGxpdFZpZXcudG9nZ2xlUGFuZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudERhdGFTZWxlY3Rpb24gPSBuZXdEYXRhU2VsZWN0aW9uO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGVuc3VyZURhdGFJdGVtSXNJblZpZXdwb3J0KGRhdGFJdGVtU2VsZWN0b3I6IHN0cmluZywgZGF0YVZpZXdTY3JvbGxhYmxlQ29udGFpbmVyU2VsZWN0b3I6IHN0cmluZykge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLmRhdGFWaWV3Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihkYXRhSXRlbVNlbGVjdG9yKTtcclxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc2Nyb2xsYWJsZUJvZHkgPSB0aGlzLmRhdGFWaWV3Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihkYXRhVmlld1Njcm9sbGFibGVDb250YWluZXJTZWxlY3Rvcik7XHJcbiAgICAgICAgICAgICAgICAvLyBUaGlzIG9mZnNldFRvcCBpcyBvbmx5IGNvdW50aW5nIGZyb20gdGhlIHRvcCBvZiB0aGUgZGF0YSB2aWV3IGNvbnRyb2wgYW5kIG5vdCBjb25zaWRlcmluZyB0aGUgYWN0dWFsIHNjcm9sbCB0b3AuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBvZmZzZXRUb3AgPSBzZWxlY3RlZEl0ZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIC0gc2Nyb2xsYWJsZUJvZHkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIElmIHRoZSBzZWxlY3RlZCBpdGVtIGlzIG5vdCBpbiB0aGUgdmlldyBwb3J0LCBzY3JvbGwgaXQgaW50byB2aWV3LlxyXG4gICAgICAgICAgICAgICAgaWYgKCEob2Zmc2V0VG9wID49IDBcclxuICAgICAgICAgICAgICAgICAgICAmJiBvZmZzZXRUb3AgPD0gc2Nyb2xsYWJsZUJvZHkuY2xpZW50SGVpZ2h0IC0gc2VsZWN0ZWRJdGVtLmNsaWVudEhlaWdodCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW0uc2Nyb2xsSW50b1ZpZXcoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0dXBEYXRhVGFibGVBY2Nlc3NpYmlsaXR5KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmludGVybmFsU21lRGF0YVRhYmxlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmhlYWRlcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFNtZURhdGFUYWJsZS50YWJsZUFyaWFMYWJlbGxlZEJ5ID0gdGhpcy5oZWFkZXJJZDtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnBpdm90Q29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFRhYiA9IHRoaXMucGl2b3RDb21wb25lbnQudGFicy50b0FycmF5KCkuZmlsdGVyKGl0ZW0gPT4gdGhpcy5waXZvdENvbXBvbmVudC5pc1NlbGVjdGVkKGl0ZW0pKVswXTtcclxuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZFRhYikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxTbWVEYXRhVGFibGUudGFibGVBcmlhTGFiZWwgPSBzZWxlY3RlZFRhYi5sYWJlbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgdGhlIGlkQmFnIHVzZWQgYnkgdGhpcyBtYXN0ZXIgdmlldyB0byBzdG9yZSB1bmlxdWUgZWxlbWVudCBpZHMuXHJcbiAgICAgKiBpZCB2YWx1ZXMgd2lsbCBiZSBhc3NpZ25lZCBiZSB0aGUgQHNlZSBNYXN0ZXJWaWV3Q29tcG9uZW50IHN1cGVyIGNsYXNzLlxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgY3JlYXRlSWRCYWcoKTogTXNmdFNtZS5TdHJpbmdNYXA8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZmlsdGVyTGFiZWw6ICcnLFxyXG4gICAgICAgICAgICBjb2x1bW5QaWNrZXJMYWJlbDogJycsXHJcbiAgICAgICAgICAgIGl0ZW1Db3VudExhYmVsOiAnJ1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn1cclxuIiwiPGgyIGNsYXNzPVwic21lLXBvc2l0aW9uLWZsZXgtbm9uZSBzbWUtcGFkZGluZy1zcXVpc2gtdi1sZyBzbWUtYXJyYW5nZS13b3JkLXdyYXAtYnJlYWstd29yZCBzbWUtZm9udC1oM1wiICpuZ0lmPVwiaGVhZGVyXCJcclxuICBbaGlkZGVuXT1cImhpZGVIZWFkZXJcIiBbaWRdPSdoZWFkZXJJZCc+e3toZWFkZXJ9fTwvaDI+XHJcbjxzbWUtbGF5b3V0ICNsYXlvdXQgKGxheW91dENoYW5nZWQpPVwidXBkYXRlQWN0aW9uQmFyKClcIj5cclxuICA8c21lLWxheW91dC1kZWZpbml0aW9uIG5hbWU9XCJuYXJyb3dcIiBbdW50aWxdPVwiNjAwXCI+PC9zbWUtbGF5b3V0LWRlZmluaXRpb24+XHJcbjwvc21lLWxheW91dD5cclxuPGRpdiAqbmdJZj1cImVuYWJsZVF1ZXJ5RWRpdG9yXCIgY2xhc3M9XCJzbWUtcG9zaXRpb24tZmxleC1ub25lXCIgW2NsYXNzLnNtZS1wYWRkaW5nLWhvcml6b250YWwtc21dPVwiIW5vU2lkZU1hcmdpblwiPlxyXG4gIDwhLS0gUXVlcnkgRWRpdG9yIC0tPlxyXG4gIDxuZy1jb250ZW50IHNlbGVjdD0nc21lLXF1ZXJ5LWVkaXRvcic+PC9uZy1jb250ZW50PlxyXG48L2Rpdj5cclxuPGRpdiBjbGFzcz1cInNtZS1wb3NpdGlvbi1mbGV4LW5vbmUgc21lLWFycmFuZ2Utc3RhY2stcmV2ZXJzZWRcIiAjY29udGFpbmVyXHJcbiAgW2NsYXNzLnNtZS1wYWRkaW5nLWhvcml6b250YWwtc21dPVwiIW5vU2lkZU1hcmdpblwiXHJcbiAgW2NsYXNzLnNtZS1hcnJhbmdlLXN0YWNrLWhdPVwiIShsYXlvdXQuY3VycmVudExheW91dERlZmluaXRpb25OYW1lPT09J25hcnJvdycpXCI+XHJcbiAgPCEtLSBBY3Rpb25zIC0tPlxyXG4gIDxuZy1jb250ZW50IHNlbGVjdD0nc21lLWFjdGlvbi1iYXIsLmFjdGlvbi1iYXInPjwvbmctY29udGVudD5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInNtZS1wb3NpdGlvbi1mbGV4LW5vbmUgc21lLWFycmFuZ2Utc3RhY2staFwiIFtjbGFzcy5zbWUtcGFkZGluZy1ob3Jpem9udGFsLXNtXT1cIiFub1NpZGVNYXJnaW5cIlxyXG4gICAgW2NsYXNzLnNtZS1wYWRkaW5nLWxlZnQtc21dPVwibm9TaWRlTWFyZ2luXCI+XHJcbiAgICA8IS0tIENvdW50cyAtLT5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJzbWUtZm9jdXMtem9uZSBzbWUtcG9zaXRpb24tZmxleC1ub25lIHNtZS1hcnJhbmdlLXN0YWNrLWggc21lLWFycmFuZ2Utd3Mtbm93cmFwIHNtZS1zY2hlbWUtc2Vjb25kYXJ5LXRleHRcIlxyXG4gICAgICBbY2xhc3Muc21lLW1hcmdpbi1yaWdodC14c109XCJzZWxlY3RlZEl0ZW1Db3VudCA9PT0gMCB8fCAhc2hvd1NlbGVjdGlvblwiPlxyXG4gICAgICA8aSByb2xlPVwic3RhdHVzXCIgW2lkXT1cImlkQmFnLml0ZW1Db3VudExhYmVsXCIgY2xhc3M9XCJzbWUtbGF5b3V0LWFjdGlvbi1iYXItaXRlbSBzbWUtcGFkZGluZy1ob3Jpem9udGFsLXNtXCI+e3tcclxuICAgICAgICBnZXRJdGVtQ291bnRUZXh0KCkgfX08L2k+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHJvbGU9XCJidXR0b25cIlxyXG4gICAgICAgIGNsYXNzPVwic21lLWJ1dHRvbi10cmlnZ2VyIHNtZS1sYXlvdXQtYWN0aW9uLWJhci1pdGVtLWhlaWdodCBzbWUtc2NoZW1lLXNlY29uZGFyeS10ZXh0IHNtZS1idXR0b24tYXV0by13aWR0aFwiXHJcbiAgICAgICAgKm5nSWY9XCJzZWxlY3RlZEl0ZW1Db3VudCA+IDAgJiYgc2hvd1NlbGVjdGlvblwiIChjbGljayk9XCJkb0NsZWFyU2VsZWN0aW9uKCRldmVudClcIj5cclxuICAgICAgICA8aSBhcmlhLWhpZGRlbj1cInRydWVcIj57e2dldFNlbGVjdGVkQ291bnRUZXh0KCl9fTwvaT5cclxuICAgICAgICA8aSBjbGFzcz1cInNtZS1zY3JlZW4tcmVhZGVyXCI+e3tnZXRTZWxlY3RlZENvdW50QXJpYVRleHQoKX19PC9pPlxyXG4gICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwic21lLWljb24gc21lLWljb24tY2xlYXIgc21lLW1hcmdpbi1sZWZ0LXhzXCJcclxuICAgICAgICAgIFt0aXRsZV09XCJyZXNvdXJjZVN0cmluZ3Muc2VsZWN0ZWRUaXRsZVwiPjwvaT5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gQ29tbW9uIEFjdGlvbnMgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwic21lLWZvY3VzLXpvbmUgc21lLWFycmFuZ2Utd3Mtbm93cmFwXCI+XHJcbiAgICAgIDxidXR0b24gKm5nSWY9XCJzaG93Q29sdW1uUGlja2VyXCIgKGNsaWNrKT1cImNvbHVtblBpY2tlci5uZXh0KCk7XCIgdHlwZT1cImJ1dHRvblwiIHJvbGU9XCJidXR0b25cIlxyXG4gICAgICAgIFt0aXRsZV09XCJyZXNvdXJjZVN0cmluZ3MuY29sdW1uUGlja2VyLnRpdGxlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRGaWx0ZXJBcmlhTGFiZWwoKVwiXHJcbiAgICAgICAgY2xhc3M9XCJzbWUtbGF5b3V0LWFjdGlvbi1iYXItaXRlbS1oZWlnaHQgc21lLWJ1dHRvbi10cmlnZ2VyIHNtZS1idXR0b24tYXV0by13aWR0aFwiXHJcbiAgICAgICAgW2NsYXNzLnNtZS10b2dnbGVkXT1cImNvbHVtblBpY2tlckFjdGl2ZVwiIGRhdGEtdXRhLWlkPVwiY29sdW1uLXBpY2tlci1idXR0b25cIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInNtZS1pY29uIHNtZS1pY29uLXRyaXBsZUNvbHVtblwiPjwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gKm5nSWY9XCJzaG93UmVmcmVzaFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlUmVmcmVzaFwiIChjbGljayk9XCJyZWZyZXNoLm5leHQoKVwiIHR5cGU9XCJidXR0b25cIiByb2xlPVwiYnV0dG9uXCJcclxuICAgICAgICBbdGl0bGVdPVwicmVzb3VyY2VTdHJpbmdzLnJlZnJlc2gudGl0bGVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInJlZnJlc2hCdXR0b25BcmlhTGFiZWxcIlxyXG4gICAgICAgIGNsYXNzPVwic21lLWxheW91dC1hY3Rpb24tYmFyLWl0ZW0taGVpZ2h0IHNtZS1idXR0b24tdHJpZ2dlciBzbWUtYnV0dG9uLWF1dG8td2lkdGhcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInNtZS1pY29uIHNtZS1pY29uLXJlZnJlc2hcIj48L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uICpuZ0lmPVwic2hvd0ZpbHRlclwiIChjbGljayk9XCJmaWx0ZXIubmV4dCgpO1wiIHR5cGU9XCJidXR0b25cIiByb2xlPVwiYnV0dG9uXCJcclxuICAgICAgICBbdGl0bGVdPVwicmVzb3VyY2VTdHJpbmdzLmZpbHRlci50aXRsZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0RmlsdGVyQXJpYUxhYmVsKClcIlxyXG4gICAgICAgIGNsYXNzPVwic21lLWxheW91dC1hY3Rpb24tYmFyLWl0ZW0taGVpZ2h0IHNtZS1idXR0b24tdHJpZ2dlciBzbWUtYnV0dG9uLWF1dG8td2lkdGhcIlxyXG4gICAgICAgIFtjbGFzcy5zbWUtdG9nZ2xlZF09XCJmaWx0ZXJBY3RpdmVcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInNtZS1pY29uIHNtZS1pY29uLWZpbHRlclwiPjwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gKm5nSWY9XCJzaG93R3JvdXBcIiAoY2xpY2spPVwiZ3JvdXAubmV4dCgpXCIgdHlwZT1cImJ1dHRvblwiIHJvbGU9XCJidXR0b25cIiBbdGl0bGVdPVwicmVzb3VyY2VTdHJpbmdzLmdyb3VwLnRpdGxlXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInJlc291cmNlU3RyaW5ncy5ncm91cC50aXRsZVwiXHJcbiAgICAgICAgY2xhc3M9XCJzbWUtbGF5b3V0LWFjdGlvbi1iYXItaXRlbS1oZWlnaHQgc21lLWJ1dHRvbi10cmlnZ2VyIHNtZS1idXR0b24tYXV0by13aWR0aFwiXHJcbiAgICAgICAgW2NsYXNzLnNtZS10b2dnbGVkXT1cImdyb3VwQWN0aXZlXCI+XHJcbiAgICAgICAgPCEtLSBUT0RPOiB1c2UgZ3JvdXBpbmcgaWNvbiB3aGVuIGF2YWlsYWJsZS4gLS0+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJzbWUtaWNvbiBzbWUtaWNvbi1ncm91cGVkTGlzdFwiPjwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gR3JvdXBpbmcgKERlcHJlY2F0ZWQpIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cInNtZS1mb2N1cy16b25lXCI+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJzaG93Q3VzdG9tRmlsdGVyXCIgY2xhc3M9XCJzbWUtbWFyZ2luLWhvcml6b250YWwtc21cIj5cclxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9Jy5zbWUtbWFzdGVyLXZpZXctY3VzdG9tLWZpbHRlcic+PC9uZy1jb250ZW50PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBTZWFyY2ggQm94IC0tPlxyXG4gICAgPGZvcm0gKm5nSWY9XCJ1c2VTZWFyY2hcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInNtZS1wb3NpdGlvbi1mbGV4LW5vbmUgc21lLWxheW91dC1hY3Rpb24tYmFyLWl0ZW1cIj5cclxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9J3NtZS1mb3JtLWZpZWxkW3R5cGU9XCJzZWFyY2hcIl0nPjwvbmctY29udGVudD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Zvcm0+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2ICNkYXRhVmlld1xyXG4gIGNsYXNzPVwic21lLWxheW91dC1yZWxhdGl2ZSBzbWUtcG9zaXRpb24tZmxleC1hdXRvIHNtZS1hcnJhbmdlLXN0YWNrLWggc21lLWFycmFuZ2Utb3ZlcmZsb3ctaGlkZSBzbWUtbGF5b3V0LW1pbndpZHRoLXt7ZGF0YVRhYmxlTWluV2lkdGh9fVwiXHJcbiAgW2NsYXNzLnNtZS1zaGFkb3ctc2Nyb2xsZWQtY29udGVudF09JyFpc0RhdGFMaXN0U2Nyb2xsZWRUb3RvcCc+XHJcbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG48L2Rpdj5cclxuIl19
567
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzdGVyLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvbWFzdGVyLXZpZXcvbWFzdGVyLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvbWFzdGVyLXZpZXcvbWFzdGVyLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsRUFDVCxZQUFZLEVBRVosVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBSU4sUUFBUSxFQUNSLE1BQU0sRUFFTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBRXZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7Ozs7Ozs7OztJQzFCeEUsOEJBQ3dDO0lBQUEsWUFBVTtJQUFBLGlCQUFLOzs7SUFBckQsMENBQXFCLHVCQUFBO0lBQWlCLGVBQVU7SUFBVixtQ0FBVTs7O0lBSWxELCtCQUFnSDtJQUU5RyxxQkFBbUQ7SUFDckQsaUJBQU07OztJQUh3RCxpRUFBaUQ7Ozs7SUFrQnpHLGtDQUVvRjtJQUFuQyxnTkFBa0M7SUFDakYsNkJBQXNCO0lBQUEsWUFBMEI7SUFBQSxpQkFBSTtJQUNwRCw2QkFBNkI7SUFBQSxZQUE4QjtJQUFBLGlCQUFJO0lBQy9ELHdCQUM4QztJQUNoRCxpQkFBUzs7O0lBSmUsZUFBMEI7SUFBMUIsbURBQTBCO0lBQ25CLGVBQThCO0lBQTlCLHVEQUE4QjtJQUV6RCxlQUF1QztJQUF2Qyw0REFBdUM7Ozs7SUFLM0Msa0NBRzhFO0lBSDdDLHNLQUFTLDJCQUFtQixJQUFFO0lBSTdELDJCQUFvRDtJQUN0RCxpQkFBUzs7O0lBRlAsd0RBQXdDO0lBRnhDLGlFQUE0QztJQUFDLHlEQUF3Qzs7OztJQUt2RixrQ0FHcUY7SUFGbkYsd01BQWdDO0lBR2hDLDJCQUErQztJQUNqRCxpQkFBUzs7O0lBSnNELDREQUF1QztJQUR2RCxzREFBcUMsNkNBQUE7Ozs7SUFNcEYsa0NBR3FDO0lBSFYsc0tBQVMscUJBQWEsSUFBRTtJQUlqRCwyQkFBOEM7SUFDaEQsaUJBQVM7OztJQUZQLGtEQUFrQztJQUZsQywyREFBc0M7SUFBQyx5REFBd0M7Ozs7SUFLakYsa0NBR29DO0lBSFYsc0tBQVMsb0JBQVksSUFBQztJQUs5QywyQkFBbUQ7SUFDckQsaUJBQVM7OztJQUhQLGlEQUFpQztJQUgwQywwREFBcUM7SUFDaEgsZ0VBQStDOzs7SUFTakQsK0JBQStEO0lBQzdELHFCQUFpRTtJQUNuRSxpQkFBTTs7O0lBR1IsZ0NBQW9EO0lBQ2xELCtCQUErRDtJQUM3RCxxQkFBZ0U7SUFDbEUsaUJBQU07SUFDUixpQkFBTzs7OztBRHZDWCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsaUJBQWlCO0lBb0l0RCxZQUNJLFFBQWtCLEVBQ1YsTUFBYyxFQUNGLFNBQTZCLEVBQzdCLGNBQThCO1FBRWxELCtIQUErSDtRQUMvSCx5RkFBeUY7UUFDekYsOEdBQThHO1FBQzlHLDREQUE0RDtRQUM1RCwrSEFBK0g7UUFDL0gsa0NBQWtDO1FBQ2xDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQVZSLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDRixjQUFTLEdBQVQsU0FBUyxDQUFvQjtRQUM3QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFoSTlDLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBS3ZCLG9CQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUMvRCxrQkFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUE0QmhELGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRXJCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFbkIsV0FBTSxHQUFHLEVBQUUsQ0FBQztRQUVaLFVBQUssR0FBRyxDQUFDLENBQUM7UUFFVixrQkFBYSxHQUFHLElBQUksQ0FBQztRQUVyQixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFFekIsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBRTNCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBRW5CLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRXZCLHNCQUFpQixHQUFHLElBQUksQ0FBQztRQUV6QixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBRWxCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRXJCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQWFuQyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFrQmpDLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRzdCLHNCQUFpQixHQUFHLElBQUksQ0FBQztRQUd6QiwwQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFNN0IsaUJBQVksR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUc1RCxZQUFPLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFHdkQsV0FBTSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBR3RELFVBQUssR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUdyRCxtQkFBYyxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTlELGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsc0JBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLG1CQUFjLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLDRCQUF1QixHQUFHLElBQUksQ0FBQztRQW1CbEMscUJBQXFCO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxRQUFRLEdBQUcsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1RCxDQUFDO0lBcEpEOztPQUVHO0lBQ0gsSUFBYyxhQUFhO1FBQ3ZCLE9BQU8scUJBQXFCLENBQUM7SUFDakMsQ0FBQztJQXFCRCxJQUNXLFlBQVk7UUFDbkIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDckMsQ0FBQztJQUNELElBQVcsWUFBWSxDQUFDLEtBQXlCO1FBQzdDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDbEMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3BCLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1NBQ3RDO0lBQ0wsQ0FBQztJQStCRCxJQUFvQixTQUFTLENBQUMsU0FBYztRQUN4QyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDMUIsS0FBSyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7U0FDNUI7YUFBTSxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUU7WUFDcEIsS0FBSyxHQUFHLENBQUMsQ0FBQztTQUNiO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUNuQyxDQUFDO0lBUUQ7O09BRUc7SUFDSCxJQUNXLGdCQUFnQixDQUFDLEtBQWM7UUFDdEMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEtBQUssQ0FBQztJQUMxQyxDQUFDO0lBQ0QsSUFBVyxnQkFBZ0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUM7SUFDekMsQ0FBQztJQTJERDs7T0FFRztJQUNJLGVBQWU7UUFDbEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLDBIQUEwSDtZQUMxSCw4RUFBOEU7WUFDOUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUN0QyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDaEIsSUFBSSxDQUFDLGdDQUFnQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQzlFLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRTtvQkFDbkYsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2lCQUN2QjtZQUNMLENBQUMsQ0FBQyxDQUFDO1NBQ047UUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsSUFBSSxDQUFDLDZCQUE2QixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3pFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUU7b0JBQzdCLElBQUksb0JBQW9CLEdBQUcsSUFBSSxDQUFDO29CQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFO3dCQUMvQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFOzRCQUM3RSxvQkFBb0IsR0FBRyxLQUFLLENBQUM7eUJBQ2hDO3FCQUNKO3lCQUFNO3dCQUNILE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO3dCQUNqRixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFOzRCQUM3RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDaEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDOzRCQUNsRCxJQUFJLE1BQU0sS0FBSyxjQUFjLEVBQUU7Z0NBQzNCLG9CQUFvQixHQUFHLEtBQUssQ0FBQztnQ0FDN0IsTUFBTTs2QkFDVDt5QkFDSjtxQkFDSjtvQkFFRCxJQUFJLG9CQUFvQixFQUFFO3dCQUN0QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO3FCQUM5QjtpQkFDSjtZQUNMLENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDTCxDQUFDO0lBRU0sUUFBUTtRQUNYLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBRTFCLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLHlCQUF5QixDQUFDLENBQUM7U0FDNUM7UUFFRCxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUNuQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDYixJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ25HO2FBQU07WUFDSCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztTQUNqRjtJQUNMLENBQUM7SUFFRCw0R0FBNEc7SUFDNUcsMEdBQTBHO0lBQzFHLG1IQUFtSDtJQUNuSCw0RkFBNEY7SUFDckYsV0FBVyxDQUFDLE9BQXNCOztRQUNyQyxJQUFJLGtCQUFrQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFFekUsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2Isa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzFGO1FBRUQsSUFBSSxPQUFBLE9BQU8sQ0FBQyxjQUFjLDBDQUFFLFlBQVksTUFBSyxJQUFJLEVBQUU7WUFDL0MsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLElBQUksa0JBQWtCLEVBQUUsQ0FBQztTQUN4RjthQUFNO1lBQ0gsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLElBQUksa0JBQWtCLEVBQUUsQ0FBQztTQUN2RjtJQUNMLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxJQUFJLENBQUMsZ0NBQWdDLEVBQUU7WUFDdkMsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3ZEO1FBRUQsSUFBSSxJQUFJLENBQUMsNkJBQTZCLEVBQUU7WUFDcEMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BEO0lBQ0wsQ0FBQztJQUdNLFlBQVk7UUFDZixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztJQUNuRSxDQUFDO0lBRU0sU0FBUztRQUNaLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQzVCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDbkIsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNyRDtpQkFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDckQ7U0FDSjtJQUNMLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxLQUFpQjtRQUNyQyxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsa0JBQWtCLENBQWMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9ELElBQUksSUFBSSxFQUFFO1lBQ04sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2hCO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRU0sZ0JBQWdCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNHLENBQUM7SUFFTSxvQkFBb0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVNLHdCQUF3QjtRQUMzQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRU0sa0JBQWtCO1FBQ3JCLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3pHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFTSx3QkFBd0I7UUFDM0IsT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSztZQUMzRCxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDckcsQ0FBQztJQUVEOztPQUVHO0lBQ0ksZUFBZTtRQUNsQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUN6QixJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDN0M7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxvQkFBb0I7UUFDdkIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3JCLE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVPLHlCQUF5QixDQUFDLGVBQW1DO1FBQ2pFLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixJQUFJLGdCQUFnQixHQUFHLElBQUksQ0FBQztZQUM1QixnQkFBZ0IsR0FBRyxlQUFlLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUM7WUFFL0YsTUFBTSxlQUFlLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixDQUFDO1lBRTNDLElBQUksZUFBZSxJQUFJLGdCQUFnQixLQUFLLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtnQkFDbkUsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtvQkFDdEUsVUFBVSxDQUFDLEdBQUcsRUFBRTt3QkFDWixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUU7NEJBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUM7eUJBQy9CO29CQUNMLENBQUMsQ0FBQyxDQUFDO2lCQUNOO2FBQ0o7WUFFRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUM7U0FDaEQ7SUFDTCxDQUFDO0lBRU8sMEJBQTBCLENBQUMsZ0JBQXdCLEVBQUUsbUNBQTJDO1FBQ3BHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNqRixJQUFJLFlBQVksRUFBRTtnQkFDZCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsbUNBQW1DLENBQUMsQ0FBQztnQkFDdEcsbUhBQW1IO2dCQUNuSCxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxHQUFHLEdBQUcsY0FBYyxDQUFDLHFCQUFxQixFQUFFLENBQUMsR0FBRyxDQUFDO2dCQUV4RyxxRUFBcUU7Z0JBQ3JFLElBQUksQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDO3VCQUNiLFNBQVMsSUFBSSxjQUFjLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMsRUFBRTtvQkFDMUUsWUFBWSxDQUFDLGNBQWMsRUFBRSxDQUFDO2lCQUNqQzthQUNKO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sMkJBQTJCO1FBQy9CLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQzNCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDYixJQUFJLENBQUMsb0JBQW9CLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQzthQUNqRTtpQkFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQzVCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQy9HLElBQUksV0FBVyxFQUFFO29CQUNiLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQztpQkFDaEU7YUFDSjtTQUNKO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNPLFdBQVc7UUFDakIsT0FBTztZQUNILFdBQVcsRUFBRSxFQUFFO1lBQ2YsaUJBQWlCLEVBQUUsRUFBRTtZQUNyQixjQUFjLEVBQUUsRUFBRTtTQUNyQixDQUFDO0lBQ04sQ0FBQzs7eUdBalhRLG1CQUFtQjsyRUFBbkIsbUJBQW1COztvQ0FtQmQsa0JBQWtCO29DQVNsQixrQkFBa0I7Ozs7Ozs7Ozs7Ozs7Ozs7a0dBNUJ2QixrQkFBYzs7O1FDaEMzQixrRUFDdUQ7UUFDdkQsd0NBQXdEO1FBQXBDLG9IQUFpQixxQkFBaUIsSUFBQztRQUNyRCwyQ0FBMkU7UUFDN0UsaUJBQWE7UUFDYixvRUFHTTtRQUNOLGlDQUVpRjtRQUUvRSxrQkFBNkQ7UUFFN0QsOEJBQzZDO1FBRTNDLDhCQUUwRTtRQUN4RSw2QkFBMEc7UUFBQSxhQUNuRjtRQUFBLGlCQUFJO1FBQzNCLDZFQU9TO1FBQ1gsaUJBQU07UUFFTixnQ0FBa0Q7UUFDaEQsNkVBS1M7UUFDVCw2RUFLUztRQUNULDZFQUtTO1FBQ1QsNkVBTVM7UUFDWCxpQkFBTTtRQUVOLGdDQUE0QjtRQUMxQix1RUFFTTtRQUNSLGlCQUFNO1FBRU4seUVBSU87UUFDVCxpQkFBTTtRQUNSLGlCQUFNO1FBQ04sc0NBRWlFO1FBQy9ELHNCQUF5QjtRQUMzQixpQkFBTTs7O1FBOUVtRyxpQ0FBWTtRQUc5RSxlQUFhO1FBQWIsMkJBQWE7UUFFOUMsZUFBdUI7UUFBdkIsNENBQXVCO1FBSzNCLGVBQWlEO1FBQWpELDhEQUFpRCx3RUFBQTtRQUtPLGVBQWlEO1FBQWpELDhEQUFpRCx5Q0FBQTtRQUtyRyxlQUF1RTtRQUF2RSx3RkFBdUU7UUFDdEQsZUFBMkI7UUFBM0IsNkNBQTJCO1FBQThELGVBQ25GO1FBRG1GLDRDQUNuRjtRQUdwQixlQUE0QztRQUE1QyxxRUFBNEM7UUFTdEMsZUFBc0I7UUFBdEIsMkNBQXNCO1FBTUgsZUFBaUI7UUFBakIsc0NBQWlCO1FBTXBDLGVBQWdCO1FBQWhCLHFDQUFnQjtRQU1oQixlQUFlO1FBQWYsb0NBQWU7UUFVbEIsZUFBc0I7UUFBdEIsMkNBQXNCO1FBS3ZCLGVBQWU7UUFBZixvQ0FBZTtRQVF4QixlQUEwSTtRQUExSSxxS0FBMEk7UUFDMUksMkVBQThEOzt1RkQ1Q25ELG1CQUFtQjtjQUovQixTQUFTO2VBQUM7Z0JBQ1AsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsV0FBVyxFQUFFLDhCQUE4QjthQUM5Qzs7c0JBd0lRLFFBQVE7O3NCQUNSLFFBQVE7d0JBdkhOLGFBQWE7a0JBRG5CLFlBQVk7bUJBQUMsUUFBUTtZQUlmLGtCQUFrQjtrQkFEeEIsWUFBWTttQkFBQyxrQkFBa0I7WUFJekIsZ0JBQWdCO2tCQUR0QixTQUFTO21CQUFDLFdBQVc7WUFJZixRQUFRO2tCQURkLFNBQVM7bUJBQUMsVUFBVTtZQUlWLFlBQVk7a0JBRHRCLFlBQVk7bUJBQUMsa0JBQWtCO1lBWXpCLFlBQVk7a0JBRGxCLFlBQVk7bUJBQUMsY0FBYztZQUdaLFlBQVk7a0JBQTNCLEtBQUs7WUFFVSxVQUFVO2tCQUF6QixLQUFLO1lBRVUsTUFBTTtrQkFBckIsS0FBSztZQUVVLEtBQUs7a0JBQXBCLEtBQUs7WUFFVSxhQUFhO2tCQUE1QixLQUFLO1lBRVUsZ0JBQWdCO2tCQUEvQixLQUFLO1lBRVUsa0JBQWtCO2tCQUFqQyxLQUFLO1lBRVUsV0FBVztrQkFBMUIsS0FBSztZQUVVLGNBQWM7a0JBQTdCLEtBQUs7WUFFVSxpQkFBaUI7a0JBQWhDLEtBQUs7WUFFVSxVQUFVO2tCQUF6QixLQUFLO1lBRVUsWUFBWTtrQkFBM0IsS0FBSztZQUVVLGlCQUFpQjtrQkFBaEMsS0FBSztZQUVjLFNBQVM7a0JBQTVCLEtBQUs7WUFXQyxlQUFlO2tCQURyQixNQUFNO1lBSUEsdUJBQXVCO2tCQUQ3QixLQUFLO1lBT0ssZ0JBQWdCO2tCQUQxQixLQUFLO1lBVVUsV0FBVztrQkFBMUIsS0FBSztZQUdDLGlCQUFpQjtrQkFEdkIsS0FBSztZQUlDLHFCQUFxQjtrQkFEM0IsS0FBSztZQUlDLFNBQVM7a0JBRGYsS0FBSztZQUlDLFlBQVk7a0JBRGxCLE1BQU07WUFJQSxPQUFPO2tCQURiLE1BQU07WUFJQSxNQUFNO2tCQURaLE1BQU07WUFJQSxLQUFLO2tCQURYLE1BQU07WUFJQSxjQUFjO2tCQURwQixNQUFNO1lBNEhBLFlBQVk7a0JBRGxCLFlBQVk7bUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBBZnRlclZpZXdJbml0LFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgQ29udGVudENoaWxkLFxyXG4gICAgRG9DaGVjayxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBIb3N0TGlzdGVuZXIsXHJcbiAgICBJbmplY3RvcixcclxuICAgIElucHV0LFxyXG4gICAgTmdab25lLFxyXG4gICAgT25DaGFuZ2VzLFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT25Jbml0LFxyXG4gICAgT3B0aW9uYWwsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERvbSB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvZG9tL2RvbSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBBY3Rpb25CYXJDb21wb25lbnQgfSBmcm9tICcuLi9hY3Rpb25zL2NvbnRhaW5lcnMvYWN0aW9uLWJhci9hY3Rpb24tYmFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvcmVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tbW9uL2Jhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGF0YVRhYmxlQ29tcG9uZW50LCBUcmVlVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi9kYXRhLXRhYmxlL2RhdGEtdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2VhcmNoRm9ybUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS9mb3JtLWZpZWxkL3NlYXJjaC9zZWFyY2gtZm9ybS1maWVsZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQaXZvdENvbXBvbmVudCB9IGZyb20gJy4uL3Bpdm90L3Bpdm90LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNwbGl0Vmlld0NvbXBvbmVudCB9IGZyb20gJy4uL3NwbGl0LXZpZXcvc3BsaXQtdmlldy5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NtZS1tYXN0ZXItdmlldycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWFzdGVyLXZpZXcuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXN0ZXJWaWV3Q29tcG9uZW50IGV4dGVuZHMgQ29yZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBEb0NoZWNrLCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0IHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBzb3VyY2UgbmFtZSB0byB1c2UgZm9yIGxvZ2dpbmdcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGdldCBsb2dTb3VyY2VOYW1lKCkge1xyXG4gICAgICAgIHJldHVybiAnTWFzdGVyVmlld0NvbXBvbmVudCc7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlIGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuICAgIHByaXZhdGUgdGltZXI6IGFueTtcclxuICAgIHByaXZhdGUgY3VycmVudERhdGFTZWxlY3Rpb246IGFueTtcclxuICAgIHByaXZhdGUgaW50ZXJuYWxTbWVEYXRhVGFibGU6IERhdGFUYWJsZUNvbXBvbmVudDtcclxuXHJcbiAgICBwdWJsaWMgcmVzb3VyY2VTdHJpbmdzID0gdGhpcy5zdHJpbmdzLk1zZnRTbWVTaGVsbC5Bbmd1bGFyLk1hc3RlclZpZXc7XHJcbiAgICBwdWJsaWMgY29tbW9uU3RyaW5ncyA9IHRoaXMuc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5Db21tb247XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZCgnc2VhcmNoJylcclxuICAgIHB1YmxpYyBzZWFyY2hFbGVtZW50OiBTZWFyY2hGb3JtRmllbGRDb21wb25lbnQ7XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZChBY3Rpb25CYXJDb21wb25lbnQpXHJcbiAgICBwdWJsaWMgYWN0aW9uQmFyQ29tcG9uZW50OiBBY3Rpb25CYXJDb21wb25lbnQ7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnY29udGFpbmVyJylcclxuICAgIHB1YmxpYyBjb250YWluZXJFbGVtZW50OiBFbGVtZW50UmVmO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ2RhdGFWaWV3JylcclxuICAgIHB1YmxpYyBkYXRhVmlldzogRWxlbWVudFJlZjtcclxuXHJcbiAgICBAQ29udGVudENoaWxkKERhdGFUYWJsZUNvbXBvbmVudClcclxuICAgIHB1YmxpYyBnZXQgc21lRGF0YVRhYmxlKCk6IERhdGFUYWJsZUNvbXBvbmVudCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxTbWVEYXRhVGFibGU7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgc2V0IHNtZURhdGFUYWJsZSh2YWx1ZTogRGF0YVRhYmxlQ29tcG9uZW50KSB7XHJcbiAgICAgICAgdGhpcy5pbnRlcm5hbFNtZURhdGFUYWJsZSA9IHZhbHVlO1xyXG4gICAgICAgIGlmICh0aGlzLmlzSW5pdGlhbGl6ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXR1cERhdGFUYWJsZUFjY2Vzc2liaWxpdHkoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZCgnc21lVHJlZVRhYmxlJylcclxuICAgIHB1YmxpYyBzbWVUcmVlVGFibGU6IFRyZWVUYWJsZUNvbXBvbmVudDtcclxuXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgbm9TaWRlTWFyZ2luID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIGhpZGVIZWFkZXIgPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgaGVhZGVyID0gJyc7XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIHRvdGFsID0gMDtcclxuXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgc2hvd1NlbGVjdGlvbiA9IHRydWU7XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIHNob3dDb2x1bW5QaWNrZXIgPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgY29sdW1uUGlja2VyQWN0aXZlID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIHNob3dSZWZyZXNoID0gdHJ1ZTtcclxuXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZVJlZnJlc2ggPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgZGF0YVRhYmxlTWluV2lkdGggPSAnbWQnO1xyXG5cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBzaG93RmlsdGVyID0gdHJ1ZTtcclxuXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgZmlsdGVyQWN0aXZlID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIGVuYWJsZVF1ZXJ5RWRpdG9yID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIHNldCBzZWxlY3Rpb24oc2VsZWN0aW9uOiBhbnkpIHtcclxuICAgICAgICBsZXQgY291bnQgPSAwO1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNlbGVjdGlvbikpIHtcclxuICAgICAgICAgICAgY291bnQgPSBzZWxlY3Rpb24ubGVuZ3RoO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoISFzZWxlY3Rpb24pIHtcclxuICAgICAgICAgICAgY291bnQgPSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbUNvdW50ID0gY291bnQ7XHJcbiAgICB9XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyByZXF1aXJlRGF0YUl0ZW1VbmlxdWVJZDogKGl0ZW06IGFueSkgPT4gc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlcHJlY2F0ZWQgc2luY2UgNy8xMy8xOC4gUGxlYXNlIHVzZSBbc2hvd0dyb3VwXSwgW2dyb3VwQWN0aXZlXSwgYW5kIChncm91cCkgaW5zdGVhZFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBzaG93Q3VzdG9tRmlsdGVyKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5pbnRlcm5hbFNob3dDdXN0b21GaWx0ZXIgPSB2YWx1ZTtcclxuICAgIH1cclxuICAgIHB1YmxpYyBnZXQgc2hvd0N1c3RvbUZpbHRlcigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pbnRlcm5hbFNob3dDdXN0b21GaWx0ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpbnRlcm5hbFNob3dDdXN0b21GaWx0ZXI6IGJvb2xlYW47XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIGdyb3VwQWN0aXZlID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzdHJldGNoVG9BYnNvbHV0ZSA9IHRydWU7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBhdXRvRXhwYW5kRGV0YWlsc1BhbmUgPSB0cnVlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2hvd0dyb3VwPzogYm9vbGVhbjtcclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBjb2x1bW5QaWNrZXI6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyByZWZyZXNoOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgZmlsdGVyOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgZ3JvdXA6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICBAT3V0cHV0KClcclxuICAgIHB1YmxpYyBjbGVhclNlbGVjdGlvbjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIHB1YmxpYyB1c2VTZWFyY2ggPSBmYWxzZTtcclxuICAgIHB1YmxpYyBzZWxlY3RlZEl0ZW1Db3VudCA9IDA7XHJcbiAgICBwdWJsaWMgZGF0YVZpZXdIZWlnaHQgPSAwO1xyXG4gICAgcHVibGljIGlzRGF0YUxpc3RTY3JvbGxlZFRvdG9wID0gdHJ1ZTtcclxuICAgIHB1YmxpYyBoZWFkZXJJZDogc3RyaW5nO1xyXG4gICAgcHJpdmF0ZSBzcGxpdFZpZXdQYW5lVG9nZ2xlZFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gICAgcHJpdmF0ZSBkYXRhVGFibGVPbkZpbHRlclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gICAgcHVibGljIHJlZnJlc2hCdXR0b25BcmlhTGFiZWw6IHN0cmluZztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcclxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHNwbGl0VmlldzogU3BsaXRWaWV3Q29tcG9uZW50LFxyXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcGl2b3RDb21wb25lbnQ6IFBpdm90Q29tcG9uZW50XHJcbiAgICApIHtcclxuICAgICAgICAvLyBBZnRlciB0aGUgZGlzY3Vzc2lvbiwgdGhlIHBsYW4gaXMgc3RpbGwgaGF2ZSBtYXN0ZXIgdmlldyB0byBjb29yZGluYXRlIHdpdGggc3BsaXQgdmlldyBhcyB3ZWxsIGFzIHRyZWUgdGFibGUgYW5kIGRhdGEgdGFibGUuXHJcbiAgICAgICAgLy8gSXQncyBhIGxpdHRsZSB0cmlja3kgdG8gbGV0IG1hc3RlciB2aWV3IHRvIHRhbGsgdG8gaXRzIHBhcmVudCB3aGljaCBpcyB0aGUgc3BsaXQgdmlldy5cclxuICAgICAgICAvLyBCdXQgd2UgZG8gbmVlZCBhIGNvbXBvbmVudCB0byBpbXBsZW1lbnQgdGhlIGNvbW1vbiBiZWhhdmlvciBvbiB0aGUgVUkgdG8gYXZvaWQgZHVwbGljYXRlIGNvZGUgaW4gZWFjaCB0b29sLlxyXG4gICAgICAgIC8vIEF0IHRoaXMgbW9tZW50LCBtYXN0ZXIgdmlldyBpcyB0aGUgbW9zdCBwcm9wZXIgY29tcG9uZW50LlxyXG4gICAgICAgIC8vIExvbmcgdGVybSB3aXNlLCB3ZSB3aWxsIGZpZ3VyZSBvdXQgYSBiZXR0ZXIgY29tcG9uZW50IHNpdHRpbmcgaW4gdGhlIHRvcCBsZXZlbCBvZiB0aGUgVUkgdG8gY29vcmRpbmF0ZSB3aXRoIG90aGVyIGNvbXBvbmVudHNcclxuICAgICAgICAvLyBhbmQgaW1wbGVtZW50IGNvbW1vbiBiZWhhdmlvcnMuXHJcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gICAgICAgIC8vIHNldHVwIGhvc3QgY2xhc3Nlc1xyXG4gICAgICAgIHRoaXMuYWRkQ2xhc3MoJ3NtZS1hcnJhbmdlLXN0YWNrLXYnKTtcclxuICAgICAgICB0aGlzLmFkZENsYXNzKCdzbWUtYXJyYW5nZS1vdmVyZmxvdy1oaWRlLXknKTtcclxuICAgICAgICB0aGlzLmFkZENsYXNzKCdzbWUtYXJyYW5nZS1vdmVyZmxvdy1hdXRvLXgnKTtcclxuICAgICAgICB0aGlzLmhlYWRlcklkID0gJ21hc3Rlci12aWV3LWhlYWRlcicgKyB0aGlzLmNvbXBvbmVudElkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIG1ldGhvZCB0byBydW4gYWZ0ZXIgdGhlIGNvbXBvbmVudCB2aWV3IGluaXRpYWxpemVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIFRoZSBcIm5nQWZ0ZXJWaWV3SW5pdFwiIGlzIHN0aWxsIGluIGN1cnJlbnQgY2hlY2sgY3ljbGUgc28gd2Ugc2hvdWxkIG5vdCB1cGRhdGUgdGhlIGZvbGxvd2luZyBVSSBpbmZvcm1hdGlvbiBpbW1lZGlhdGVseS5cclxuICAgICAgICAgICAgLy8gU28gd2UgdXNlIHNldFRpbWVvdXQgdG8gZGVmZXIgdGhlIGZvbGxvd2luZyBvcGVyYXRpb25zIHRvIG5leHQgY2hlY2sgY3ljbGUuXHJcbiAgICAgICAgICAgIHRoaXMudXNlU2VhcmNoID0gISF0aGlzLnNlYXJjaEVsZW1lbnQ7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNwbGl0Vmlldykge1xyXG4gICAgICAgICAgICB0aGlzLnNwbGl0Vmlld1BhbmVUb2dnbGVkU3Vic2NyaXB0aW9uID0gdGhpcy5zcGxpdFZpZXcucGFuZVRvZ2dsZWQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFWaWV3ICYmIHRoaXMuZGF0YVZpZXdIZWlnaHQgIT09IHRoaXMuZGF0YVZpZXcubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNtZURhdGFUYWJsZSkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFUYWJsZU9uRmlsdGVyU3Vic2NyaXB0aW9uID0gdGhpcy5zbWVEYXRhVGFibGUuZmlsdGVyLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zbWVEYXRhVGFibGUuc2VsZWN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNob3VsZENsZWFyU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMucmVxdWlyZURhdGFJdGVtVW5pcXVlSWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc21lRGF0YVRhYmxlLnJlbmRlcmVkSXRlbXMuaW5kZXhPZih0aGlzLnNtZURhdGFUYWJsZS5zZWxlY3Rpb24pICE9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQ2xlYXJTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbUlkID0gdGhpcy5yZXF1aXJlRGF0YUl0ZW1VbmlxdWVJZCh0aGlzLnNtZURhdGFUYWJsZS5zZWxlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc21lRGF0YVRhYmxlLnJlbmRlcmVkSXRlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnNtZURhdGFUYWJsZS5yZW5kZXJlZEl0ZW1zW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbUlkID0gdGhpcy5yZXF1aXJlRGF0YUl0ZW1VbmlxdWVJZChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtSWQgPT09IHNlbGVjdGVkSXRlbUlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkQ2xlYXJTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZENsZWFyU2VsZWN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24uZW1pdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zdHJldGNoVG9BYnNvbHV0ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmFkZENsYXNzKCdzbWUtbGF5b3V0LWFic29sdXRlJyk7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkQ2xhc3MoJ3NtZS1wb3NpdGlvbi1pbnNldC1ub25lJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNldHVwRGF0YVRhYmxlQWNjZXNzaWJpbGl0eSgpO1xyXG4gICAgICAgIGlmICh0aGlzLmhlYWRlcikge1xyXG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hCdXR0b25BcmlhTGFiZWwgPSB0aGlzLnJlc291cmNlU3RyaW5ncy5yZWZyZXNoLmFyaWFMYWJlbC5oZWFkZXIuZm9ybWF0KHRoaXMuaGVhZGVyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hCdXR0b25BcmlhTGFiZWwgPSB0aGlzLnJlc291cmNlU3RyaW5ncy5yZWZyZXNoLmFyaWFMYWJlbC5ub0hlYWRlcjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTm90ZTogdGhpcyBpcyBhIGJhbmRhaWQgZml4IHRvIHRoaXMgYnVnOiBodHRwczovL21pY3Jvc29mdC52aXN1YWxzdHVkaW8uY29tL09TL193b3JraXRlbXMvZWRpdC8zMzAzMTc5MS8uXHJcbiAgICAvLyBUaGUgc2NyZWVuIHJlYWRlciBkb2Vzbid0IGFubm91bmNlIHdoZW4gYXJpYS1kaXNhYmxlZCBjaGFuZ2VzIGFuZCB0aGUgZXhhY3QgcmVhc29uIGZvciB0aGF0IGlzIHVua25vd24uXHJcbiAgICAvLyBJdCdzIG5vdCBiZXN0IHByYWN0aWNlIHRvIGJlIGFkanVzdGluZyB0aGUgYXJpYS1sYWJlbCB0byBhY2hpZXZlIHRoZSBlZmZlY3QgYnV0IHRoYXQncyB0aGUgYmVzdCB3ZSBjYW1lIHVwIHdpdGguXHJcbiAgICAvLyBUT0RPOiBmaXggdGhlIHJlYWwgaXNzdWUgd2h5IHRoZSBzY3JlZW4gcmVhZGVyIGRvZXNuJ3QgYW5ub3VuY2UgdGhlIGFyaWEtZGlzYWJsZWQgY2hhbmdlc1xyXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgICBsZXQgcmVmcmVzaEJ1dHRvbkxhYmVsID0gdGhpcy5yZXNvdXJjZVN0cmluZ3MucmVmcmVzaC5hcmlhTGFiZWwubm9IZWFkZXI7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmhlYWRlcikge1xyXG4gICAgICAgICAgICByZWZyZXNoQnV0dG9uTGFiZWwgPSB0aGlzLnJlc291cmNlU3RyaW5ncy5yZWZyZXNoLmFyaWFMYWJlbC5oZWFkZXIuZm9ybWF0KHRoaXMuaGVhZGVyKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2VzLmRpc2FibGVSZWZyZXNoPy5jdXJyZW50VmFsdWUgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5yZWZyZXNoQnV0dG9uQXJpYUxhYmVsID0gYCR7dGhpcy5jb21tb25TdHJpbmdzLmRpc2FibGVkfSAke3JlZnJlc2hCdXR0b25MYWJlbH1gO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVmcmVzaEJ1dHRvbkFyaWFMYWJlbCA9IGAke3RoaXMuY29tbW9uU3RyaW5ncy5lbmFibGVkfSAke3JlZnJlc2hCdXR0b25MYWJlbH1gO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3BsaXRWaWV3UGFuZVRvZ2dsZWRTdWJzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5zcGxpdFZpZXdQYW5lVG9nZ2xlZFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZGF0YVRhYmxlT25GaWx0ZXJTdWJzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhVGFibGVPbkZpbHRlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcclxuICAgIHB1YmxpYyB1cGRhdGVMYXlvdXQoKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhVmlld0hlaWdodCA9IHRoaXMuZGF0YVZpZXcubmF0aXZlRWxlbWVudC5jbGllbnRIZWlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nRG9DaGVjaygpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5hdXRvRXhwYW5kRGV0YWlsc1BhbmUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc21lRGF0YVRhYmxlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZURldGFpbFBhbmVFeHBhbmRpbmcodGhpcy5zbWVEYXRhVGFibGUpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc21lVHJlZVRhYmxlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZURldGFpbFBhbmVFeHBhbmRpbmcodGhpcy5zbWVUcmVlVGFibGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBkb0NsZWFyU2VsZWN0aW9uKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgbmV4dCA9IERvbS5nZXROZXh0Wm9uZUVsZW1lbnQoPEhUTUxFbGVtZW50PmV2ZW50LnRhcmdldCk7XHJcbiAgICAgICAgaWYgKG5leHQpIHtcclxuICAgICAgICAgICAgbmV4dC5mb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uLm5leHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0SXRlbUNvdW50VGV4dCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRvdGFsID09PSAxID8gdGhpcy5yZXNvdXJjZVN0cmluZ3Mub25lSXRlbSA6IHRoaXMucmVzb3VyY2VTdHJpbmdzLml0ZW1zLmZvcm1hdCh0aGlzLnRvdGFsKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0U2VsZWN0ZWRDb3VudFRleHQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZXNvdXJjZVN0cmluZ3Muc2VsZWN0ZWQuZm9ybWF0KHRoaXMuc2VsZWN0ZWRJdGVtQ291bnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRTZWxlY3RlZENvdW50QXJpYVRleHQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZXNvdXJjZVN0cmluZ3Muc2VsZWN0ZWRBcmlhLmZvcm1hdCh0aGlzLnNlbGVjdGVkSXRlbUNvdW50KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0RmlsdGVyQXJpYUxhYmVsKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMucmVzb3VyY2VTdHJpbmdzLmZpbHRlci50aXRsZX0gJHt0aGlzLnRvdGFsID8gdGhpcy5yZXNvdXJjZVN0cmluZ3MucmVzdWx0cy5mb3JtYXQodGhpcy50b3RhbCkgOlxyXG4gICAgICAgICAgICB0aGlzLnJlc291cmNlU3RyaW5ncy5yZXN1bHRzLmZvcm1hdCgwKX1gO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRDb2x1bW5QaWNrZXJBcmlhTGFiZWwoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5yZXNvdXJjZVN0cmluZ3MuY29sdW1uUGlja2VyLnRpdGxlfSAke3RoaXMudG90YWxcclxuICAgICAgICAgICAgPyB0aGlzLnJlc291cmNlU3RyaW5ncy5yZXN1bHRzLmZvcm1hdCh0aGlzLnRvdGFsKSA6IHRoaXMucmVzb3VyY2VTdHJpbmdzLnJlc3VsdHMuZm9ybWF0KDApfWA7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBVcGRhdGUgdGhlIGFjdGlvbiBiYXJcclxuICAgICAqL1xyXG4gICAgcHVibGljIHVwZGF0ZUFjdGlvbkJhcigpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5hY3Rpb25CYXJDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5hY3Rpb25CYXJDb21wb25lbnQudXBkYXRlQWN0aW9uQmFyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGFuZGxlcyBjbGlja2luZyBvbiB0aGUgcmVmcmVzaCBidXR0b25cclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlZnJlc2hCdXR0b25DbGlja2VkKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVSZWZyZXNoKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucmVmcmVzaC5uZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYW5kbGVEZXRhaWxQYW5lRXhwYW5kaW5nKGRhdGFWaWV3Q29udHJvbDogRGF0YVRhYmxlQ29tcG9uZW50KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3BsaXRWaWV3KSB7XHJcbiAgICAgICAgICAgIGxldCBuZXdEYXRhU2VsZWN0aW9uID0gbnVsbDtcclxuICAgICAgICAgICAgbmV3RGF0YVNlbGVjdGlvbiA9IGRhdGFWaWV3Q29udHJvbC5yZW5kZXJlZEl0ZW1zW2RhdGFWaWV3Q29udHJvbC5nZXRBY3RpdmVSZW5kZXJlZEl0ZW1JbmRleCgpXTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGhhc0l0ZW1TZWxlY3RlZCA9ICEhbmV3RGF0YVNlbGVjdGlvbjtcclxuXHJcbiAgICAgICAgICAgIGlmIChoYXNJdGVtU2VsZWN0ZWQgJiYgbmV3RGF0YVNlbGVjdGlvbiAhPT0gdGhpcy5jdXJyZW50RGF0YVNlbGVjdGlvbikge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnREYXRhU2VsZWN0aW9uIHx8IHRoaXMuY3VycmVudERhdGFTZWxlY3Rpb24ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zcGxpdFZpZXcuaXNFeHBhbmRlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGxpdFZpZXcudG9nZ2xlUGFuZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudERhdGFTZWxlY3Rpb24gPSBuZXdEYXRhU2VsZWN0aW9uO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGVuc3VyZURhdGFJdGVtSXNJblZpZXdwb3J0KGRhdGFJdGVtU2VsZWN0b3I6IHN0cmluZywgZGF0YVZpZXdTY3JvbGxhYmxlQ29udGFpbmVyU2VsZWN0b3I6IHN0cmluZykge1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLmRhdGFWaWV3Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihkYXRhSXRlbVNlbGVjdG9yKTtcclxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc2Nyb2xsYWJsZUJvZHkgPSB0aGlzLmRhdGFWaWV3Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihkYXRhVmlld1Njcm9sbGFibGVDb250YWluZXJTZWxlY3Rvcik7XHJcbiAgICAgICAgICAgICAgICAvLyBUaGlzIG9mZnNldFRvcCBpcyBvbmx5IGNvdW50aW5nIGZyb20gdGhlIHRvcCBvZiB0aGUgZGF0YSB2aWV3IGNvbnRyb2wgYW5kIG5vdCBjb25zaWRlcmluZyB0aGUgYWN0dWFsIHNjcm9sbCB0b3AuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBvZmZzZXRUb3AgPSBzZWxlY3RlZEl0ZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIC0gc2Nyb2xsYWJsZUJvZHkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIElmIHRoZSBzZWxlY3RlZCBpdGVtIGlzIG5vdCBpbiB0aGUgdmlldyBwb3J0LCBzY3JvbGwgaXQgaW50byB2aWV3LlxyXG4gICAgICAgICAgICAgICAgaWYgKCEob2Zmc2V0VG9wID49IDBcclxuICAgICAgICAgICAgICAgICAgICAmJiBvZmZzZXRUb3AgPD0gc2Nyb2xsYWJsZUJvZHkuY2xpZW50SGVpZ2h0IC0gc2VsZWN0ZWRJdGVtLmNsaWVudEhlaWdodCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW0uc2Nyb2xsSW50b1ZpZXcoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0dXBEYXRhVGFibGVBY2Nlc3NpYmlsaXR5KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmludGVybmFsU21lRGF0YVRhYmxlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmhlYWRlcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbnRlcm5hbFNtZURhdGFUYWJsZS50YWJsZUFyaWFMYWJlbGxlZEJ5ID0gdGhpcy5oZWFkZXJJZDtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnBpdm90Q29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFRhYiA9IHRoaXMucGl2b3RDb21wb25lbnQudGFicy50b0FycmF5KCkuZmlsdGVyKGl0ZW0gPT4gdGhpcy5waXZvdENvbXBvbmVudC5pc1NlbGVjdGVkKGl0ZW0pKVswXTtcclxuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZFRhYikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxTbWVEYXRhVGFibGUudGFibGVBcmlhTGFiZWwgPSBzZWxlY3RlZFRhYi5sYWJlbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgdGhlIGlkQmFnIHVzZWQgYnkgdGhpcyBtYXN0ZXIgdmlldyB0byBzdG9yZSB1bmlxdWUgZWxlbWVudCBpZHMuXHJcbiAgICAgKiBpZCB2YWx1ZXMgd2lsbCBiZSBhc3NpZ25lZCBiZSB0aGUgQHNlZSBNYXN0ZXJWaWV3Q29tcG9uZW50IHN1cGVyIGNsYXNzLlxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgY3JlYXRlSWRCYWcoKTogTXNmdFNtZS5TdHJpbmdNYXA8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZmlsdGVyTGFiZWw6ICcnLFxyXG4gICAgICAgICAgICBjb2x1bW5QaWNrZXJMYWJlbDogJycsXHJcbiAgICAgICAgICAgIGl0ZW1Db3VudExhYmVsOiAnJ1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn1cclxuIiwiPGgyIGNsYXNzPVwic21lLXBvc2l0aW9uLWZsZXgtbm9uZSBzbWUtcGFkZGluZy1zcXVpc2gtdi1sZyBzbWUtYXJyYW5nZS13b3JkLXdyYXAtYnJlYWstd29yZCBzbWUtZm9udC1oM1wiICpuZ0lmPVwiaGVhZGVyXCJcclxuICBbaGlkZGVuXT1cImhpZGVIZWFkZXJcIiBbaWRdPSdoZWFkZXJJZCc+e3toZWFkZXJ9fTwvaDI+XHJcbjxzbWUtbGF5b3V0ICNsYXlvdXQgKGxheW91dENoYW5nZWQpPVwidXBkYXRlQWN0aW9uQmFyKClcIj5cclxuICA8c21lLWxheW91dC1kZWZpbml0aW9uIG5hbWU9XCJuYXJyb3dcIiBbdW50aWxdPVwiNjAwXCI+PC9zbWUtbGF5b3V0LWRlZmluaXRpb24+XHJcbjwvc21lLWxheW91dD5cclxuPGRpdiAqbmdJZj1cImVuYWJsZVF1ZXJ5RWRpdG9yXCIgY2xhc3M9XCJzbWUtcG9zaXRpb24tZmxleC1ub25lXCIgW2NsYXNzLnNtZS1wYWRkaW5nLWhvcml6b250YWwtc21dPVwiIW5vU2lkZU1hcmdpblwiPlxyXG4gIDwhLS0gUXVlcnkgRWRpdG9yIC0tPlxyXG4gIDxuZy1jb250ZW50IHNlbGVjdD0nc21lLXF1ZXJ5LWVkaXRvcic+PC9uZy1jb250ZW50PlxyXG48L2Rpdj5cclxuPGRpdiBjbGFzcz1cInNtZS1wb3NpdGlvbi1mbGV4LW5vbmUgc21lLWFycmFuZ2Utc3RhY2stcmV2ZXJzZWRcIiAjY29udGFpbmVyXHJcbiAgW2NsYXNzLnNtZS1wYWRkaW5nLWhvcml6b250YWwtc21dPVwiIW5vU2lkZU1hcmdpblwiXHJcbiAgW2NsYXNzLnNtZS1hcnJhbmdlLXN0YWNrLWhdPVwiIShsYXlvdXQuY3VycmVudExheW91dERlZmluaXRpb25OYW1lPT09J25hcnJvdycpXCI+XHJcbiAgPCEtLSBBY3Rpb25zIC0tPlxyXG4gIDxuZy1jb250ZW50IHNlbGVjdD0nc21lLWFjdGlvbi1iYXIsLmFjdGlvbi1iYXInPjwvbmctY29udGVudD5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInNtZS1wb3NpdGlvbi1mbGV4LW5vbmUgc21lLWFycmFuZ2Utc3RhY2staFwiIFtjbGFzcy5zbWUtcGFkZGluZy1ob3Jpem9udGFsLXNtXT1cIiFub1NpZGVNYXJnaW5cIlxyXG4gICAgW2NsYXNzLnNtZS1wYWRkaW5nLWxlZnQtc21dPVwibm9TaWRlTWFyZ2luXCI+XHJcbiAgICA8IS0tIENvdW50cyAtLT5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJzbWUtZm9jdXMtem9uZSBzbWUtcG9zaXRpb24tZmxleC1ub25lIHNtZS1hcnJhbmdlLXN0YWNrLWggc21lLWFycmFuZ2Utd3Mtbm93cmFwIHNtZS1zY2hlbWUtc2Vjb25kYXJ5LXRleHRcIlxyXG4gICAgICBbY2xhc3Muc21lLW1hcmdpbi1yaWdodC14c109XCJzZWxlY3RlZEl0ZW1Db3VudCA9PT0gMCB8fCAhc2hvd1NlbGVjdGlvblwiPlxyXG4gICAgICA8aSByb2xlPVwic3RhdHVzXCIgW2lkXT1cImlkQmFnLml0ZW1Db3VudExhYmVsXCIgY2xhc3M9XCJzbWUtbGF5b3V0LWFjdGlvbi1iYXItaXRlbSBzbWUtcGFkZGluZy1ob3Jpem9udGFsLXNtXCI+e3tcclxuICAgICAgICBnZXRJdGVtQ291bnRUZXh0KCkgfX08L2k+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHJvbGU9XCJidXR0b25cIlxyXG4gICAgICAgIGNsYXNzPVwic21lLWJ1dHRvbi10cmlnZ2VyIHNtZS1sYXlvdXQtYWN0aW9uLWJhci1pdGVtLWhlaWdodCBzbWUtc2NoZW1lLXNlY29uZGFyeS10ZXh0IHNtZS1idXR0b24tYXV0by13aWR0aFwiXHJcbiAgICAgICAgKm5nSWY9XCJzZWxlY3RlZEl0ZW1Db3VudCA+IDAgJiYgc2hvd1NlbGVjdGlvblwiIChjbGljayk9XCJkb0NsZWFyU2VsZWN0aW9uKCRldmVudClcIj5cclxuICAgICAgICA8aSBhcmlhLWhpZGRlbj1cInRydWVcIj57e2dldFNlbGVjdGVkQ291bnRUZXh0KCl9fTwvaT5cclxuICAgICAgICA8aSBjbGFzcz1cInNtZS1zY3JlZW4tcmVhZGVyXCI+e3tnZXRTZWxlY3RlZENvdW50QXJpYVRleHQoKX19PC9pPlxyXG4gICAgICAgIDxpIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGNsYXNzPVwic21lLWljb24gc21lLWljb24tY2xlYXIgc21lLW1hcmdpbi1sZWZ0LXhzXCJcclxuICAgICAgICAgIFt0aXRsZV09XCJyZXNvdXJjZVN0cmluZ3Muc2VsZWN0ZWRUaXRsZVwiPjwvaT5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gQ29tbW9uIEFjdGlvbnMgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwic21lLWZvY3VzLXpvbmUgc21lLWFycmFuZ2Utd3Mtbm93cmFwXCI+XHJcbiAgICAgIDxidXR0b24gKm5nSWY9XCJzaG93Q29sdW1uUGlja2VyXCIgKGNsaWNrKT1cImNvbHVtblBpY2tlci5uZXh0KCk7XCIgdHlwZT1cImJ1dHRvblwiIHJvbGU9XCJidXR0b25cIlxyXG4gICAgICAgIFt0aXRsZV09XCJyZXNvdXJjZVN0cmluZ3MuY29sdW1uUGlja2VyLnRpdGxlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRGaWx0ZXJBcmlhTGFiZWwoKVwiXHJcbiAgICAgICAgY2xhc3M9XCJzbWUtbGF5b3V0LWFjdGlvbi1iYXItaXRlbS1oZWlnaHQgc21lLWJ1dHRvbi10cmlnZ2VyIHNtZS1idXR0b24tYXV0by13aWR0aFwiXHJcbiAgICAgICAgW2NsYXNzLnNtZS10b2dnbGVkXT1cImNvbHVtblBpY2tlckFjdGl2ZVwiIGRhdGEtdXRhLWlkPVwiY29sdW1uLXBpY2tlci1idXR0b25cIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInNtZS1pY29uIHNtZS1pY29uLXRyaXBsZUNvbHVtblwiPjwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gYXJpYS1saXZlPVwicG9saXRlXCIgKm5nSWY9XCJzaG93UmVmcmVzaFwiIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZVJlZnJlc2hcIlxyXG4gICAgICAgIChjbGljayk9XCJyZWZyZXNoQnV0dG9uQ2xpY2tlZCgpXCIgdHlwZT1cImJ1dHRvblwiIHJvbGU9XCJidXR0b25cIiBbdGl0bGVdPVwicmVzb3VyY2VTdHJpbmdzLnJlZnJlc2gudGl0bGVcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicmVmcmVzaEJ1dHRvbkFyaWFMYWJlbFwiXHJcbiAgICAgICAgY2xhc3M9XCJzbWUtbGF5b3V0LWFjdGlvbi1iYXItaXRlbS1oZWlnaHQgc21lLWJ1dHRvbi10cmlnZ2VyIHNtZS1idXR0b24tYXV0by13aWR0aFwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwic21lLWljb24gc21lLWljb24tcmVmcmVzaFwiPjwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gKm5nSWY9XCJzaG93RmlsdGVyXCIgKGNsaWNrKT1cImZpbHRlci5uZXh0KCk7XCIgdHlwZT1cImJ1dHRvblwiIHJvbGU9XCJidXR0b25cIlxyXG4gICAgICAgIFt0aXRsZV09XCJyZXNvdXJjZVN0cmluZ3MuZmlsdGVyLnRpdGxlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRGaWx0ZXJBcmlhTGFiZWwoKVwiXHJcbiAgICAgICAgY2xhc3M9XCJzbWUtbGF5b3V0LWFjdGlvbi1iYXItaXRlbS1oZWlnaHQgc21lLWJ1dHRvbi10cmlnZ2VyIHNtZS1idXR0b24tYXV0by13aWR0aFwiXHJcbiAgICAgICAgW2NsYXNzLnNtZS10b2dnbGVkXT1cImZpbHRlckFjdGl2ZVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwic21lLWljb24gc21lLWljb24tZmlsdGVyXCI+PC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiAqbmdJZj1cInNob3dHcm91cFwiIChjbGljayk9XCJncm91cC5uZXh0KClcIiB0eXBlPVwiYnV0dG9uXCIgcm9sZT1cImJ1dHRvblwiIFt0aXRsZV09XCJyZXNvdXJjZVN0cmluZ3MuZ3JvdXAudGl0bGVcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicmVzb3VyY2VTdHJpbmdzLmdyb3VwLnRpdGxlXCJcclxuICAgICAgICBjbGFzcz1cInNtZS1sYXlvdXQtYWN0aW9uLWJhci1pdGVtLWhlaWdodCBzbWUtYnV0dG9uLXRyaWdnZXIgc21lLWJ1dHRvbi1hdXRvLXdpZHRoXCJcclxuICAgICAgICBbY2xhc3Muc21lLXRvZ2dsZWRdPVwiZ3JvdXBBY3RpdmVcIj5cclxuICAgICAgICA8IS0tIFRPRE86IHVzZSBncm91cGluZyBpY29uIHdoZW4gYXZhaWxhYmxlLiAtLT5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInNtZS1pY29uIHNtZS1pY29uLWdyb3VwZWRMaXN0XCI+PC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBHcm91cGluZyAoRGVwcmVjYXRlZCkgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwic21lLWZvY3VzLXpvbmVcIj5cclxuICAgICAgPGRpdiAqbmdJZj1cInNob3dDdXN0b21GaWx0ZXJcIiBjbGFzcz1cInNtZS1tYXJnaW4taG9yaXpvbnRhbC1zbVwiPlxyXG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD0nLnNtZS1tYXN0ZXItdmlldy1jdXN0b20tZmlsdGVyJz48L25nLWNvbnRlbnQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIFNlYXJjaCBCb3ggLS0+XHJcbiAgICA8Zm9ybSAqbmdJZj1cInVzZVNlYXJjaFwiIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic21lLXBvc2l0aW9uLWZsZXgtbm9uZSBzbWUtbGF5b3V0LWFjdGlvbi1iYXItaXRlbVwiPlxyXG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD0nc21lLWZvcm0tZmllbGRbdHlwZT1cInNlYXJjaFwiXSc+PC9uZy1jb250ZW50PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZm9ybT5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgI2RhdGFWaWV3XHJcbiAgY2xhc3M9XCJzbWUtbGF5b3V0LXJlbGF0aXZlIHNtZS1wb3NpdGlvbi1mbGV4LWF1dG8gc21lLWFycmFuZ2Utc3RhY2staCBzbWUtYXJyYW5nZS1vdmVyZmxvdy1oaWRlIHNtZS1sYXlvdXQtbWlud2lkdGgte3tkYXRhVGFibGVNaW5XaWR0aH19XCJcclxuICBbY2xhc3Muc21lLXNoYWRvdy1zY3JvbGxlZC1jb250ZW50XT0nIWlzRGF0YUxpc3RTY3JvbGxlZFRvdG9wJz5cclxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export { HealthAlertSeverity } from './page-alert';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9wYWdlLWFsZXJ0LWJhci9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFhLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgUGFnZUFsZXJ0LCBIZWFsdGhBbGVydFNldmVyaXR5IH0gZnJvbSAnLi9wYWdlLWFsZXJ0JztcclxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy9wYWdlLWFsZXJ0LWJhci9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUEyQixtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEV4dGVybmFsTGluaywgUGFnZUFsZXJ0LCBIZWFsdGhBbGVydFNldmVyaXR5IH0gZnJvbSAnLi9wYWdlLWFsZXJ0JztcclxuIl19
@@ -295,8 +295,8 @@ export class PivotComponent extends CoreBaseComponent {
295
295
  /**
296
296
  * Force refresh for the pivot tabs.
297
297
  */
298
- refresh() {
299
- this.updatePivotTabs();
298
+ refresh(shouldEmit = false) {
299
+ this.updatePivotTabs(shouldEmit);
300
300
  }
301
301
  /**
302
302
  * Selects a tab
@@ -359,7 +359,10 @@ export class PivotComponent extends CoreBaseComponent {
359
359
  'sme-pivot'
360
360
  ]);
361
361
  }
362
- updatePivotTabs() {
362
+ /**
363
+ * Main rendering functionality for the pivot tab
364
+ */
365
+ updatePivotTabs(shouldEmit = true) {
363
366
  let currentFill = 0;
364
367
  this.visibleTabs = [];
365
368
  this.trayTabs = [];
@@ -394,6 +397,9 @@ export class PivotComponent extends CoreBaseComponent {
394
397
  currentFill += tabWidth;
395
398
  }
396
399
  }
400
+ if (shouldEmit) {
401
+ this.emitLayoutChanged();
402
+ }
397
403
  }
398
404
  }
399
405
  /** @nocollapse */ PivotComponent.ɵfac = function PivotComponent_Factory(t) { return new (t || PivotComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(SME_LAYOUT_PROVIDER, 12)); };
@@ -468,7 +474,7 @@ __decorate([
468
474
  __decorate([
469
475
  Debounce(),
470
476
  __metadata("design:type", Function),
471
- __metadata("design:paramtypes", []),
477
+ __metadata("design:paramtypes", [Object]),
472
478
  __metadata("design:returntype", void 0)
473
479
  ], PivotComponent.prototype, "refresh", null);
474
480
  __decorate([
@@ -531,4 +537,4 @@ __decorate([
531
537
  type: ViewChild,
532
538
  args: ['dropDownButton']
533
539
  }], refresh: [], emitLayoutChanged: [], onLayoutChanged: [] }); })();
534
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvcGl2b3QvcGl2b3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvcGl2b3QvcGl2b3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFHSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsUUFBUSxFQUNSLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEVBQThFLENBQUM7QUFDeEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3RFLE9BQU8sRUFBVSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7SUN4QnZFLDhCQUFzRDtJQUFBLFlBQWM7SUFBQSxpQkFBSzs7O0lBQW5CLGVBQWM7SUFBZCx1Q0FBYzs7O0lBWTVELHVCQUEyRDs7O0lBQS9CLCtCQUF1Qjs7OztJQUxyRCxrQ0FJOEU7SUFBdkMsd1JBQXNDO0lBQzNFLDBGQUEyRDtJQUMzRCw0QkFBTTtJQUFBLFlBQWE7SUFBQSxpQkFB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QyxlQUFlO2tCQURyQixNQUFNO1lBT0EsYUFBYTtrQkFEbkIsTUFBTTtZQU9BLElBQUk7a0JBRFYsZUFBZTttQkFBQyxpQkFBaUI7WUFJM0IsYUFBYTtrQkFEbkIsZUFBZTttQkFBQyxpQkFBaUI7WUFTM0IsYUFBYTtrQkFEbkIsS0FBSztZQVFDLFFBQVE7a0JBRmQsV0FBVzttQkFBQyxvQkFBb0I7O2tCQUNoQyxLQUFLO1lBNkJFLGlCQUFpQixNQUlZLHFCQUFxQjtrQkFBekQsU0FBUzttQkFBQyxnQkFBZ0I7WUEyQ3BCLE9BQU8sTUFvQ04saUJBQWlCLE1BS2pCLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcclxuICAgIEFmdGVyQ29udGVudEluaXQsXHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIENvbXBvbmVudCxcclxuICAgIENvbnRlbnRDaGlsZHJlbixcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBmb3J3YXJkUmVmLFxyXG4gICAgSG9zdEJpbmRpbmcsXHJcbiAgICBJbmplY3QsXHJcbiAgICBJbmplY3RvcixcclxuICAgIElucHV0LFxyXG4gICAgT3B0aW9uYWwsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBRdWVyeUxpc3QsXHJcbiAgICBTa2lwU2VsZixcclxuICAgIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEZWJvdW5jZSB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvYmFzZS9kZWNvcmF0b3JzL2RlYm91bmNlLmRlY29yYXRvcnMnO1xyXG5pbXBvcnQgeyBDb3JlQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbW1vbi9iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNtZUluamVjdCB9IGZyb20gJy4uL2NvbW1vbi9kZWNvcmF0b3JzL2luamVjdGlvbi5kZWNvcmF0b3JzJztcclxuaW1wb3J0IHsgTGF5b3V0LCBTTUVfTEFZT1VUX1BST1ZJREVSIH0gZnJvbSAnLi4vY29tbW9uL2xheW91dCc7XHJcbmltcG9ydCB7IFBpdm90VGFiVHlwZSB9IGZyb20gJy4vcGl2b3QtdGFiLXR5cGUnO1xyXG5pbXBvcnQgeyBQaXZvdFRhYkNvbXBvbmVudCB9IGZyb20gJy4vcGl2b3QtdGFiLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNNRV9QSVZPVF9UQUJfQ09OVEFJTkVSX1BST1ZJREVSIH0gZnJvbSAnLi9waXZvdC10YWIuY29udGFpbmVyJztcclxuXHJcbi8qKlxyXG4gKiBAc21lRG9jIHtAbGFiZWwgUGl2b3QgQGlkIHNtZS1waXZvdC1jb21wb25lbnR9XHJcbiAqXHJcbiAqIEBvdmVydmlld1xyXG4gKiBAZmlsZSB7QGZpbGVwYXRoIC4vZXhhbXBsZXMvb3ZlcnZpZXcubWR9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgU3RhdGljIFRhYiBAaWQgc3RhdGljLXRhYn1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9zdGF0aWMtdGFiLmNvbXBvbmVudC5odG1sfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIFJvdXRlZCBUYWIgQGlkIHJvdXRlZC10YWJ9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvcm91dGVkLXRhYi5jb21wb25lbnQuaHRtbH1cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzbWUtcGl2b3QnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Bpdm90LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHsgcHJvdmlkZTogU01FX0xBWU9VVF9QUk9WSURFUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUGl2b3RDb21wb25lbnQpIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBTTUVfUElWT1RfVEFCX0NPTlRBSU5FUl9QUk9WSURFUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUGl2b3RDb21wb25lbnQpIH1cclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFBpdm90Q29tcG9uZW50IGV4dGVuZHMgQ29yZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBMYXlvdXQsIEFmdGVyQ29udGVudENoZWNrZWQsIEFmdGVyQ29udGVudEluaXQge1xyXG4gICAgcHVibGljIHZpc2libGVUYWJzOiBQaXZvdFRhYkNvbXBvbmVudFtdOyAvLyBSZWd1bGF0ZXMgdGhlIHRhYnMgdGhhdCBnZXQgZGlzcGxheWVkLlxyXG4gICAgcHVibGljIHRyYXlUYWJzID0gW107IC8vIFJlZ3VsYXRlcyB0aGUgdGFicyB0aGF0IGFyZSBhZGRlZCB0byB0aGUgZHJvcGRvd24gaWYgbmVjZXNzYXJ5LlxyXG4gICAgcHVibGljIG1vcmVUYWJzRGlzcGxheSA9ICdNb3JlJzsgLy8gTGFiZWwgZm9yIHRoZSBkcm9wZG93biBtZW51IHRhYnNcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBzb3VyY2UgbmFtZSB0byB1c2UgZm9yIGxvZ2dpbmdcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGdldCBsb2dTb3VyY2VOYW1lKCkge1xyXG4gICAgICAgIHJldHVybiAnUGl2b3RDb21wb25lbnQnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHNlbGVjdGVkIHRhYlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNlbGVjdGlvbjogUGl2b3RUYWJDb21wb25lbnQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJdCBpbmRpY2F0ZXMgd2hldGhlciB0byBzaG93L2hpZGUgb3IgbG9hZC91bmxvYWQgdGhlIHRhYnMgdG8gZG8gdGFiIHN3aXRjaGluZ1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHN3aXRjaFRhYkJ5U2hvd0hpZGU6IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZXh0IGZvciBhIGhlYWRlciB0byBzaG93IHdpdGggdGhlIHBpdm90IHRhYnMuIERpc3BsYXllZCBhcyBoNCB3aXRoIHRhYnMgb24gdGhlIHJpZ2h0LlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGhlYWRlclRleHQ6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIDA4LzMwLzE5LiBQbGVhc2UgdXNlIGFsaWduVGFicyBpbnN0ZWFkXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IGFsaWduSGVhZGVyKHZhbHVlOiAncmlnaHQnIHwgJ2xlZnQnKSB7XHJcbiAgICAgICAgdGhpcy5hbGlnblRhYnMgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZXJlIHRvIGFsaWduIHRhYnMsIGxlZnQgb3IgcmlnaHRcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBhbGlnblRhYnM6ICdyaWdodCcgfCAnbGVmdCc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc2VsZWN0ZWQgdGFiIGNoYW5nZWQgZXZlbnRcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxQaXZvdFRhYkNvbXBvbmVudD4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBMYXlvdXQgaW50ZXJmYWNlXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGxheW91dENoYW5nZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBUYWJzIG9mIHRoZSBQaXZvdFxyXG4gICAgICovXHJcbiAgICBAQ29udGVudENoaWxkcmVuKFBpdm90VGFiQ29tcG9uZW50KVxyXG4gICAgcHVibGljIHRhYnM6IFF1ZXJ5TGlzdDxQaXZvdFRhYkNvbXBvbmVudD47XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZHJlbihQaXZvdFRhYkNvbXBvbmVudClcclxuICAgIHB1YmxpYyB2aXNpYmxlVGFic1FMOiBRdWVyeUxpc3Q8UGl2b3RUYWJDb21wb25lbnQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQmluZGFibGUgcHJvcGVydHkgZm9yIHRhYiB0eXBlc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcGl2b3RUYWJUeXBlID0gUGl2b3RUYWJUeXBlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbm9MZWZ0UGFkZGluZyA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIGlmIHRoaXMgcGl2b3QgaXMgZGlzYWJsZWRcclxuICAgICAqL1xyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zbWUtZGlzYWJsZWQnKVxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyB0aGF0IHJvdXRlZCB0YWJzIGhhdmUgYmVlbiBwcm92aWRlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IGhhc1JvdXRlZFRhYnMoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGFicyAmJiB0aGlzLnRhYnMuc29tZSh0ID0+IHQudHlwZSA9PT0gUGl2b3RUYWJUeXBlLlJvdXRlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgdGhhdCBzdGF0aWMgdGFicyBoYXZlIGJlZW4gcHJvdmlkZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBoYXNTdGF0aWNUYWJzKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRhYnMgJiYgdGhpcy50YWJzLnNvbWUodCA9PiB0LnR5cGUgPT09IFBpdm90VGFiVHlwZS5TdGF0aWMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgdmlzaVRhYnMoKTogUGl2b3RUYWJDb21wb25lbnRbXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGFicy5maWx0ZXIodGFiID0+IHRhYi5pc1Zpc2libGUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIHRoYXQgc3RhdGljIHRhYnMgaGF2ZSBiZWVuIHByb3ZpZGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgc2VsZWN0aW9uSXNSb3V0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uICYmIHRoaXMuc2VsZWN0aW9uLnR5cGUgPT09IFBpdm90VGFiVHlwZS5Sb3V0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgQFNtZUluamVjdChDaGFuZ2VEZXRlY3RvclJlZilcclxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGRyb3Bkb3duIGVsZW1lbnQgdGhhdCBjb250YWlucyBwaXZvdFRhYnMgb25seSBpZiB0aGUgc2NyZWVuIHNpemUgZG9lc24ndCBhbGxvdy5cclxuICAgICAqL1xyXG4gICAgQFZpZXdDaGlsZCgnZHJvcERvd25CdXR0b24nKSBwcml2YXRlIGRyb3BEb3duQnV0dG9uRWxlbWVudDogRWxlbWVudFJlZjtcclxuICAgIC8qKlxyXG4gICAgICogSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIEBzZWUgUGl2b3RDb21wb25lbnQgY2xhc3MuXHJcbiAgICAgKiBAcGFyYW0gaW5qZWN0b3IgVGhlIGFuZ3VsYXIgaW5qZWN0aW9uIHNlcnZpY2UuIHJlcXVpcmVkIGJ5IEBTbWVJbmplY3RhYmxlKCkgZGVjb3JhdG9yIGluIHRoZSBiYXNlIEBzZWUgQmFzZUNvbXBvbmVudCBjbGFzc1xyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgQFNraXBTZWxmKCkgQE9wdGlvbmFsKCkgQEluamVjdChTTUVfTEFZT1VUX1BST1ZJREVSKSBsYXlvdXQ6IExheW91dCkge1xyXG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcclxuICAgICAgICBpZiAobGF5b3V0KSB7XHJcbiAgICAgICAgICAgIC8vIG9uIHBhcmVudCBsYXlvdXQgY2hhbmdlcywgcmUtZW1pdCB0aGUgbGF5b3V0IGNoYW5nZSB0byBvdXIgZXZlbnRcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2gobGF5b3V0LmxheW91dENoYW5nZWQuc3Vic2NyaWJlKCgoKSA9PiB0aGlzLm9uTGF5b3V0Q2hhbmdlZCgpKSkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLnRhYnMgJiYgdGhpcy50YWJzLmZpcnN0ICYmICF0aGlzLnNlbGVjdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IHRoaXMudGFicy5maXJzdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMudGFicy5sZW5ndGggPCAxKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgICAgICAgICdQaXZvdCBtdXN0IGNvbnRhaW4gY2hpbGQgdGFicy4gRXhwZWN0ZWQgYXQgbGVhc3Qgb25lICgxKSB0YWInXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudmlzaWJsZVRhYnMgPSB0aGlzLnRhYnMudG9BcnJheSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgb2YgYSBnaXZlbiB0YWIgaXMgc2VsZWN0ZWRcclxuICAgICAqIEBwYXJhbSB0YWIgVGhlIHRhYiB0byBjb21wYXJlIHdpdGhcclxuICAgICAqL1xyXG4gICAgcHVibGljIGlzU2VsZWN0ZWQodGFiOiBQaXZvdFRhYkNvbXBvbmVudCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbiAmJiB0aGlzLnNlbGVjdGlvbiA9PT0gdGFiO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRm9yY2UgcmVmcmVzaCBmb3IgdGhlIHBpdm90IHRhYnMuXHJcbiAgICAgKi9cclxuICAgIEBEZWJvdW5jZSgpXHJcbiAgICBwdWJsaWMgcmVmcmVzaCgpIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVBpdm90VGFicygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2VsZWN0cyBhIHRhYlxyXG4gICAgICogQHBhcmFtIHRhYiBUaGUgdGFiIHRvIHNlbGVjdFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2VsZWN0KHRhYjogUGl2b3RUYWJDb21wb25lbnQpOiB2b2lkIHtcclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogQXQgYW55IGdpdmVuIHRpbWUgd2Ugc2hvdWxkIGhhdmUgYW4gYXR0cmlidXRlIHRoYXQgbGV0cyB1cyBrbm93IGlmIGEgdGFiIGlzIHZpc2libGUgb3Igbm90LlxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGlmICh0YWIpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRyYXlUYWJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50cmF5VGFic1tpXSA9PT0gdGFiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmlzaWJsZVRhYnMgJiYgdGhpcy52aXNpYmxlVGFicy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhpZGRlblRhYiA9IHRoaXMudmlzaWJsZVRhYnMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhpZGRlblRhYi5pc1Zpc2libGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmF5VGFicy5wdXNoKGhpZGRlblRhYik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZVRhYnMucHVzaCh0YWIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRhYi5pc1Zpc2libGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJheVRhYnMuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IHRhYjtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0YWIpO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5lbWl0TGF5b3V0Q2hhbmdlZCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBARGVib3VuY2UoKVxyXG4gICAgcHJpdmF0ZSBlbWl0TGF5b3V0Q2hhbmdlZCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmxheW91dENoYW5nZWQuZW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIEBEZWJvdW5jZSgwKVxyXG4gICAgcHJpdmF0ZSBvbkxheW91dENoYW5nZWQoKSB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVQaXZvdFRhYnMoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0VGFiUGFuZWxJbmRleChpZDogc3RyaW5nLCBjdXJyZW50VGFiOiBib29sZWFuKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCB0YWJQYW5lbFNlY3Rpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XHJcblxyXG4gICAgICAgIGlmIChjdXJyZW50VGFiICYmIHRhYlBhbmVsU2VjdGlvbikge1xyXG4gICAgICAgICAgICAvLyBubyBzY3JvbGwgYmFyIGlzIHZpc2libGUgd2hlbiBzY3JvbGxIZWlnaHQgaXMgZXF1YWwgdG8gY2xpZW50SGVpZ2h0XHJcbiAgICAgICAgICAgIC8vIHVzZSB0aGlzIHRvIHNldCB0YWJpbmRleCBvbmx5IGZvciBzY3JvbGxhYmxlIGNvbnRlbnRcclxuICAgICAgICAgICAgY29uc3QgaGFzU2Nyb2xsQmFyID0gdGFiUGFuZWxTZWN0aW9uLnNjcm9sbEhlaWdodCAhPT0gdGFiUGFuZWxTZWN0aW9uLmNsaWVudEhlaWdodDtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBoYXNTY3JvbGxCYXIgPyAwIDogdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgdGhlIGlkQmFnIHVzZWQgYnkgdGhpcyBjb21wb25lbnQgdG8gc3RvcmUgdW5pcXVlIGVsZW1lbnQgaWRzLlxyXG4gICAgICogaWQgdmFsdWVzIHdpbGwgYmUgYXNzaWduZWQgYnkgdGhlIEBzZWUgQmFzZUNvbXBvbmVudCBzdXBlciBjbGFzcy5cclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGNyZWF0ZUlkQmFnKCk6IE1zZnRTbWUuU3RyaW5nTWFwPHN0cmluZz4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRhYlBhbmVsOiAnJ1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBpbml0aWFsIGhvc3QgY2xhc3NlcyB0byBiZSBhcHBsaWVkIHRvIHRoaXMgZWxlbWVudFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZ2V0SW5pdGlhbEhvc3RDbGFzc2VzKCk6IHN0cmluZ1tdIHtcclxuICAgICAgICByZXR1cm4gc3VwZXIuZ2V0SW5pdGlhbEhvc3RDbGFzc2VzKCkuY29uY2F0KFtcclxuICAgICAgICAgICAgJ3NtZS1waXZvdCdcclxuICAgICAgICBdKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHVwZGF0ZVBpdm90VGFicygpIHtcclxuICAgICAgICBsZXQgY3VycmVudEZpbGwgPSAwO1xyXG4gICAgICAgIHRoaXMudmlzaWJsZVRhYnMgPSBbXTtcclxuICAgICAgICB0aGlzLnRyYXlUYWJzID0gW107XHJcblxyXG4gICAgICAgIGNvbnN0IGhvc3QgPSA8SFRNTEVsZW1lbnQ+dGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIGNvbnN0IHRhYkJhcldpZHRoID0gaG9zdC5vZmZzZXRXaWR0aDtcclxuXHJcbiAgICAgICAgbGV0IHRvdGFsVGFiV2lkdGggPSAwO1xyXG4gICAgICAgIGNvbnN0IHRhYkxpc3QgPSB0aGlzLnRhYnMudG9BcnJheSgpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50YWJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRhYjogUGl2b3RUYWJDb21wb25lbnQgPSB0YWJMaXN0W2ldO1xyXG4gICAgICAgICAgICBjb25zdCB0YWJXaWR0aCA9IHRhYi53aWR0aDtcclxuICAgICAgICAgICAgdG90YWxUYWJXaWR0aCArPSB0YWJXaWR0aDtcclxuXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodG90YWxUYWJXaWR0aCA8PSB0YWJCYXJXaWR0aCkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudGFicy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgICAgICAgdGFiTGlzdFtpXS5pc1Zpc2libGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlVGFicy5wdXNoKHRhYkxpc3RbaV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgdmlzaWJsZVRhYkJhcldpZHRoID0gdGFiQmFyV2lkdGggLSB0aGlzLmRyb3BEb3duQnV0dG9uRWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudGFicy5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdGFiID0gdGFiTGlzdFtpXTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRhYldpZHRoID0gdGFiLndpZHRoO1xyXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRGaWxsICsgdGFiV2lkdGggPiB2aXNpYmxlVGFiQmFyV2lkdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICB0YWIuaXNWaXNpYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmF5VGFicy5wdXNoKHRhYik7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRhYi5pc1Zpc2libGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZVRhYnMucHVzaCh0YWIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGN1cnJlbnRGaWxsICs9IHRhYldpZHRoO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJzbWUtYXJyYW5nZS1zdGFjay1oXCIgW3N0eWxlLnBhZGRpbmdMZWZ0XT1cIm5vTGVmdFBhZGRpbmc/MDpudWxsXCI+XHJcbiAgPGg0ICpuZ0lmPVwiaGVhZGVyVGV4dFwiIGNsYXNzPVwic21lLXBvc2l0aW9uLWZsZXgtYXV0b1wiPnt7aGVhZGVyVGV4dH19PC9oND5cclxuXHJcbiAgPGhlYWRlciBbY2xhc3Muc21lLXBpdm90LXJldmVyc2UtaGVhZGVyXT1cImFsaWduVGFicyA9PT0gJ3JpZ2h0J1wiIFtjbGFzcy5zbWUtcG9zaXRpb24tc3RyZXRjaC1oXT1cIiFoZWFkZXJUZXh0XCI+XHJcbiAgICA8IS0tIENhbm5vdCB1c2UgXCJzbWUtcGFkZGluZy1sZWZ0LW5vbmVcIiBDU1MgY2xhc3MgaW4gPGhlYWRlcj4gYWJvdmUgc2luY2Ugc21lLXBhZGRpbmctbGVmdC1ub25lIGRvZXNuJ3QgaGF2ZSBlbm91Z2ggc2VsZWN0b3Igd2VpZ2h0IHRvIG92ZXJyaWRlIHNtZS1waXZvdD5bcm9sZT1cInRhYmxpc3RcIl0gc2VsZWN0b3IgLS0+XHJcbiAgICA8ZGl2IHJvbGU9XCJ0YWJsaXN0XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRhYiBvZiB2aXNpYmxlVGFiczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgIDwhLS0gUm91dGVkIFRhYiBpdGVtIC0tPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJ0YWIudHlwZSA9PT0gcGl2b3RUYWJUeXBlLlJvdXRlZFwiIHJvbGU9XCJ0YWJcIiBbcm91dGVyTGlua109XCJ0YWIucm91dGVcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJpZEJhZy50YWJQYW5lbFwiIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgdGFiLmRpc2FibGVkXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCB0YWIuZGlzYWJsZWRcIiBbY2xhc3Muc21lLWRpc2FibGVkXT1cImRpc2FibGVkIHx8IHRhYi5kaXNhYmxlZFwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImlzU2VsZWN0ZWQodGFiKVwiIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJ0YWIucm91dGVyTGlua0FjdGl2ZU9wdGlvbnNcIlxyXG4gICAgICAgICAgW2NsYXNzLnNtZS1hY3RpdmVdPVwiaXNTZWxlY3RlZCh0YWIpXCIgKHNtZVJvdXRlckxpbmtBY3RpdmF0ZWQpPVwic2VsZWN0KHRhYilcIj5cclxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFiLmljb25DbGFzc1wiIFtjbGFzc109XCJ0YWIuaWNvbkNsYXNzXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4+e3t0YWIubGFiZWx9fTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPCEtLSBTdGF0aWMgVGFiIEl0ZW0gLS0+XHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInRhYi50eXBlID09PSBwaXZvdFRhYlR5cGUuU3RhdGljXCIgdGFiaW5kZXg9XCIwXCIgcm9sZT1cInRhYlwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImlkQmFnLnRhYlBhbmVsICsgaVwiIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgdGFiLmRpc2FibGVkXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCB0YWIuZGlzYWJsZWRcIiBbY2xhc3Muc21lLWRpc2FibGVkXT1cImRpc2FibGVkIHx8IHRhYi5kaXNhYmxlZFwiXHJcbiAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImlzU2VsZWN0ZWQodGFiKVwiIFtjbGFzcy5zbWUtYWN0aXZlXT1cImlzU2VsZWN0ZWQodGFiKVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwic2VsZWN0KHRhYilcIj5cclxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFiLmljb25DbGFzc1wiIFtjbGFzc109XCJ0YWIuaWNvbkNsYXNzXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4+e3t0YWIubGFiZWx9fTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxkaXYgcm9sZT1cIm1lbnVcIj5cclxuICAgICAgICA8c21lLWRyb3Bkb3duICNkcm9wRG93biByb2xlPVwicHJlc2VudGF0aW9uXCIgY2xhc3M9XCJzbWUtcG9zaXRpb24tZmxleC1ub25lXCJcclxuICAgICAgICAgIFtjbGFzcy5zbWUtbGF5b3V0LWhpZGRlbl09XCJ0cmF5VGFicy5sZW5ndGggPT09IDBcIiBbY2xhc3Muc21lLWxheW91dC1ub25lXT1cInRyYXlUYWJzLmxlbmd0aCA9PT0gMFwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiAjZHJvcERvd25CdXR0b24gdHlwZT1cImJ1dHRvblwiIFthdHRyLmFyaWEtbGFiZWxdPVwibW9yZVRhYnNEaXNwbGF5XCIgcm9sZT1cIm1lbnVpdGVtXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJzbWUtYnV0dG9uLXRyaWdnZXIgc21lLWxheW91dC1hY3Rpb24tYmFyLWl0ZW0taGVpZ2h0IHNtZS1idXR0b24tYXV0by13aWR0aCBzbWUtZHJvcGRvd24tdG9nZ2xlXCJcclxuICAgICAgICAgICAgW2NsYXNzLnNtZS10b2dnbGVkXT1cImRyb3BEb3duLmlzT3BlblwiIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiZHJvcERvd24uaXNPcGVuXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIj5cclxuICAgICAgICAgICAgPHNwYW4+e3sgbW9yZVRhYnNEaXNwbGF5IH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNtZS1pY29uIHNtZS1pY29uLXNpemUteHhzIHNtZS1pY29uLWNoZXZyb25Eb3duIHNtZS1tYXJnaW4tbGVmdC14c1wiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGRpdiByb2xlPVwibWVudVwiIGNsYXNzPVwic21lLWRyb3Bkb3duLWNvbnRlbnQgc21lLWFycmFuZ2Utc3RhY2stdiBzbWUtcG9zaXRpb24tc3RyZXRjaC1oXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzbWUtYXJyYW5nZS1zdGFjay1oXCIgKm5nRm9yPVwibGV0IHRhYiBvZiB0cmF5VGFiczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJ0YWIudHlwZSA9PT0gcGl2b3RUYWJUeXBlLlJvdXRlZFwiIHJvbGU9XCJtZW51aXRlbVwiIFtyb3V0ZXJMaW5rXT1cInRhYi5yb3V0ZVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNtZS1wb3NpdGlvbi1zdHJldGNoLWhcIiBbY2xhc3Muc21lLWRpc2FibGVkXT1cImRpc2FibGVkIHx8IHRhYi5kaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAoc21lUm91dGVyTGlua0FjdGl2YXRlZCk9XCJzZWxlY3QodGFiKVwiIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJ0YWIucm91dGVyTGlua0FjdGl2ZU9wdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFiLmljb25DbGFzc1wiIFtjbGFzc109XCJ0YWIuaWNvbkNsYXNzXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3t0YWIubGFiZWx9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwidGFiLnR5cGUgPT09IHBpdm90VGFiVHlwZS5TdGF0aWNcIiByb2xlPVwibWVudWl0ZW1cIiBjbGFzcz1cInNtZS1wb3NpdGlvbi1zdHJldGNoLWhcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLnNtZS1kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCB0YWIuZGlzYWJsZWRcIiAoY2xpY2spPVwic2VsZWN0KHRhYilcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGFiLmljb25DbGFzc1wiIFtjbGFzc109XCJ0YWIuaWNvbkNsYXNzXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3t0YWIubGFiZWx9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3NtZS1kcm9wZG93bj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2hlYWRlcj5cclxuPC9kaXY+XHJcbjwhLS0gUm91dGVkIFRhYiBDb250ZW50IC0tPlxyXG48c2VjdGlvbiAqbmdJZj1cImhhc1JvdXRlZFRhYnNcIiByb2xlPVwidGFicGFuZWxcIiBbaWRdPVwiaWRCYWcudGFiUGFuZWxcIiBbY2xhc3Muc21lLWxheW91dC1ub25lXT1cIiFzZWxlY3Rpb25Jc1JvdXRlZFwiXHJcbiAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiIXNlbGVjdGlvbklzUm91dGVkXCI+XHJcbiAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxyXG48L3NlY3Rpb24+XHJcblxyXG48IS0tIFN0YXRpYyBUYWIgQ29udGVudCAtLT5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc1N0YXRpY1RhYnNcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWIgb2YgdmlzaWJsZVRhYnM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWIudHlwZSA9PT0gcGl2b3RUYWJUeXBlLlN0YXRpY1wiPlxyXG4gICAgICA8c2VjdGlvbiByb2xlPVwidGFicGFuZWxcIiBbaWRdPVwiaWRCYWcudGFiUGFuZWwgKyBpXCIgW2NsYXNzLnNtZS1sYXlvdXQtbm9uZV09XCIhaXNTZWxlY3RlZCh0YWIpXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCIhaXNTZWxlY3RlZCh0YWIpXCIgW2F0dHIudGFiaW5kZXhdPVwiZ2V0VGFiUGFuZWxJbmRleChpZEJhZy50YWJQYW5lbCArIGksIGlzU2VsZWN0ZWQodGFiKSlcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiKHN3aXRjaFRhYkJ5U2hvd0hpZGUgfHwgaXNTZWxlY3RlZCh0YWIpKSA/IHRhYi5jb250ZW50VGVtcGxhdGUgOiBudWxsXCI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvc2VjdGlvbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L25nLWNvbnRhaW5lcj5cclxuIl19
540
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvcGl2b3QvcGl2b3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvcGl2b3QvcGl2b3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFHSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLFFBQVEsRUFDUixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsUUFBUSxFQUNSLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEVBQThFLENBQUM7QUFDeEcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3RFLE9BQU8sRUFBVSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7SUN4QnZFLDhCQUFzRDtJQUFBLFlBQWM7SUFBQSxpQkFBSzs7O0lBQW5CLGVBQWM7SUFBZCx1Q0FBYzs7O0lBWTVELHVCQUEyRDs7O0lBQS9CLCtCQUF1Qjs7OztJQUxyRCxrQ0FJOEU7SUFBdkMsd1JBQXNDO0lBQzNFLDBGQUEyRDtJQUMzRCw0QkFBTTtJQUFBLFlBQWE7SUFBQSxpQkFB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QW1CO3dCQXJHaEQsU0FBUztrQkFEZixLQUFLO1lBT0MsbUJBQW1CO2tCQUR6QixLQUFLO1lBT0MsVUFBVTtrQkFEaEIsS0FBSztZQU9LLFdBQVc7a0JBRHJCLEtBQUs7WUFTQyxTQUFTO2tCQURmLEtBQUs7WUFPQyxlQUFlO2tCQURyQixNQUFNO1lBT0EsYUFBYTtrQkFEbkIsTUFBTTtZQU9BLElBQUk7a0JBRFYsZUFBZTttQkFBQyxpQkFBaUI7WUFJM0IsYUFBYTtrQkFEbkIsZUFBZTttQkFBQyxpQkFBaUI7WUFTM0IsYUFBYTtrQkFEbkIsS0FBSztZQVFDLFFBQVE7a0JBRmQsV0FBVzttQkFBQyxvQkFBb0I7O2tCQUNoQyxLQUFLO1lBNkJFLGlCQUFpQixNQUlZLHFCQUFxQjtrQkFBekQsU0FBUzttQkFBQyxnQkFBZ0I7WUEyQ3BCLE9BQU8sTUFvQ04saUJBQWlCLE1BS2pCLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcclxuICAgIEFmdGVyQ29udGVudEluaXQsXHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIENvbXBvbmVudCxcclxuICAgIENvbnRlbnRDaGlsZHJlbixcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBmb3J3YXJkUmVmLFxyXG4gICAgSG9zdEJpbmRpbmcsXHJcbiAgICBJbmplY3QsXHJcbiAgICBJbmplY3RvcixcclxuICAgIElucHV0LFxyXG4gICAgT3B0aW9uYWwsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBRdWVyeUxpc3QsXHJcbiAgICBTa2lwU2VsZixcclxuICAgIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEZWJvdW5jZSB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvYmFzZS9kZWNvcmF0b3JzL2RlYm91bmNlLmRlY29yYXRvcnMnO1xyXG5pbXBvcnQgeyBDb3JlQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2NvbW1vbi9iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNtZUluamVjdCB9IGZyb20gJy4uL2NvbW1vbi9kZWNvcmF0b3JzL2luamVjdGlvbi5kZWNvcmF0b3JzJztcclxuaW1wb3J0IHsgTGF5b3V0LCBTTUVfTEFZT1VUX1BST1ZJREVSIH0gZnJvbSAnLi4vY29tbW9uL2xheW91dCc7XHJcbmltcG9ydCB7IFBpdm90VGFiVHlwZSB9IGZyb20gJy4vcGl2b3QtdGFiLXR5cGUnO1xyXG5pbXBvcnQgeyBQaXZvdFRhYkNvbXBvbmVudCB9IGZyb20gJy4vcGl2b3QtdGFiLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNNRV9QSVZPVF9UQUJfQ09OVEFJTkVSX1BST1ZJREVSIH0gZnJvbSAnLi9waXZvdC10YWIuY29udGFpbmVyJztcclxuXHJcbi8qKlxyXG4gKiBAc21lRG9jIHtAbGFiZWwgUGl2b3QgQGlkIHNtZS1waXZvdC1jb21wb25lbnR9XHJcbiAqXHJcbiAqIEBvdmVydmlld1xyXG4gKiBAZmlsZSB7QGZpbGVwYXRoIC4vZXhhbXBsZXMvb3ZlcnZpZXcubWR9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgU3RhdGljIFRhYiBAaWQgc3RhdGljLXRhYn1cclxuICogQGZpbGUge0BmaWxlbmFtZSBjb21wb25lbnQuaHRtbCBAZmlsZXBhdGggLi9leGFtcGxlcy9zdGF0aWMtdGFiLmNvbXBvbmVudC5odG1sfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIFJvdXRlZCBUYWIgQGlkIHJvdXRlZC10YWJ9XHJcbiAqIEBmaWxlIHtAZmlsZW5hbWUgY29tcG9uZW50Lmh0bWwgQGZpbGVwYXRoIC4vZXhhbXBsZXMvcm91dGVkLXRhYi5jb21wb25lbnQuaHRtbH1cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzbWUtcGl2b3QnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Bpdm90LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHsgcHJvdmlkZTogU01FX0xBWU9VVF9QUk9WSURFUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUGl2b3RDb21wb25lbnQpIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBTTUVfUElWT1RfVEFCX0NPTlRBSU5FUl9QUk9WSURFUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUGl2b3RDb21wb25lbnQpIH1cclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFBpdm90Q29tcG9uZW50IGV4dGVuZHMgQ29yZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBMYXlvdXQsIEFmdGVyQ29udGVudENoZWNrZWQsIEFmdGVyQ29udGVudEluaXQge1xyXG4gICAgcHVibGljIHZpc2libGVUYWJzOiBQaXZvdFRhYkNvbXBvbmVudFtdOyAvLyBSZWd1bGF0ZXMgdGhlIHRhYnMgdGhhdCBnZXQgZGlzcGxheWVkLlxyXG4gICAgcHVibGljIHRyYXlUYWJzID0gW107IC8vIFJlZ3VsYXRlcyB0aGUgdGFicyB0aGF0IGFyZSBhZGRlZCB0byB0aGUgZHJvcGRvd24gaWYgbmVjZXNzYXJ5LlxyXG4gICAgcHVibGljIG1vcmVUYWJzRGlzcGxheSA9ICdNb3JlJzsgLy8gTGFiZWwgZm9yIHRoZSBkcm9wZG93biBtZW51IHRhYnNcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBzb3VyY2UgbmFtZSB0byB1c2UgZm9yIGxvZ2dpbmdcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGdldCBsb2dTb3VyY2VOYW1lKCkge1xyXG4gICAgICAgIHJldHVybiAnUGl2b3RDb21wb25lbnQnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHNlbGVjdGVkIHRhYlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNlbGVjdGlvbjogUGl2b3RUYWJDb21wb25lbnQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJdCBpbmRpY2F0ZXMgd2hldGhlciB0byBzaG93L2hpZGUgb3IgbG9hZC91bmxvYWQgdGhlIHRhYnMgdG8gZG8gdGFiIHN3aXRjaGluZ1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHN3aXRjaFRhYkJ5U2hvd0hpZGU6IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZXh0IGZvciBhIGhlYWRlciB0byBzaG93IHdpdGggdGhlIHBpdm90IHRhYnMuIERpc3BsYXllZCBhcyBoNCB3aXRoIHRhYnMgb24gdGhlIHJpZ2h0LlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGhlYWRlclRleHQ6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIDA4LzMwLzE5LiBQbGVhc2UgdXNlIGFsaWduVGFicyBpbnN0ZWFkXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IGFsaWduSGVhZGVyKHZhbHVlOiAncmlnaHQnIHwgJ2xlZnQnKSB7XHJcbiAgICAgICAgdGhpcy5hbGlnblRhYnMgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZXJlIHRvIGFsaWduIHRhYnMsIGxlZnQgb3IgcmlnaHRcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBhbGlnblRhYnM6ICdyaWdodCcgfCAnbGVmdCc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc2VsZWN0ZWQgdGFiIGNoYW5nZWQgZXZlbnRcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxQaXZvdFRhYkNvbXBvbmVudD4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBMYXlvdXQgaW50ZXJmYWNlXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIGxheW91dENoYW5nZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBUYWJzIG9mIHRoZSBQaXZvdFxyXG4gICAgICovXHJcbiAgICBAQ29udGVudENoaWxkcmVuKFBpdm90VGFiQ29tcG9uZW50KVxyXG4gICAgcHVibGljIHRhYnM6IFF1ZXJ5TGlzdDxQaXZvdFRhYkNvbXBvbmVudD47XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZHJlbihQaXZvdFRhYkNvbXBvbmVudClcclxuICAgIHB1YmxpYyB2aXNpYmxlVGFic1FMOiBRdWVyeUxpc3Q8UGl2b3RUYWJDb21wb25lbnQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQmluZGFibGUgcHJvcGVydHkgZm9yIHRhYiB0eXBlc1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcGl2b3RUYWJUeXBlID0gUGl2b3RUYWJUeXBlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbm9MZWZ0UGFkZGluZyA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIGlmIHRoaXMgcGl2b3QgaXMgZGlzYWJsZWRcclxuICAgICAqL1xyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zbWUtZGlzYWJsZWQnKVxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYXRlcyB0aGF0IHJvdXRlZCB0YWJzIGhhdmUgYmVlbiBwcm92aWRlZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IGhhc1JvdXRlZFRhYnMoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGFicyAmJiB0aGlzLnRhYnMuc29tZSh0ID0+IHQudHlwZSA9PT0gUGl2b3RUYWJUeXBlLlJvdXRlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgdGhhdCBzdGF0aWMgdGFicyBoYXZlIGJlZW4gcHJvdmlkZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBoYXNTdGF0aWNUYWJzKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRhYnMgJiYgdGhpcy50YWJzLnNvbWUodCA9PiB0LnR5cGUgPT09IFBpdm90VGFiVHlwZS5TdGF0aWMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgdmlzaVRhYnMoKTogUGl2b3RUYWJDb21wb25lbnRbXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGFicy5maWx0ZXIodGFiID0+IHRhYi5pc1Zpc2libGUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhdGVzIHRoYXQgc3RhdGljIHRhYnMgaGF2ZSBiZWVuIHByb3ZpZGVkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgc2VsZWN0aW9uSXNSb3V0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uICYmIHRoaXMuc2VsZWN0aW9uLnR5cGUgPT09IFBpdm90VGFiVHlwZS5Sb3V0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgQFNtZUluamVjdChDaGFuZ2VEZXRlY3RvclJlZilcclxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIGRyb3Bkb3duIGVsZW1lbnQgdGhhdCBjb250YWlucyBwaXZvdFRhYnMgb25seSBpZiB0aGUgc2NyZWVuIHNpemUgZG9lc24ndCBhbGxvdy5cclxuICAgICAqL1xyXG4gICAgQFZpZXdDaGlsZCgnZHJvcERvd25CdXR0b24nKSBwcml2YXRlIGRyb3BEb3duQnV0dG9uRWxlbWVudDogRWxlbWVudFJlZjtcclxuICAgIC8qKlxyXG4gICAgICogSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIEBzZWUgUGl2b3RDb21wb25lbnQgY2xhc3MuXHJcbiAgICAgKiBAcGFyYW0gaW5qZWN0b3IgVGhlIGFuZ3VsYXIgaW5qZWN0aW9uIHNlcnZpY2UuIHJlcXVpcmVkIGJ5IEBTbWVJbmplY3RhYmxlKCkgZGVjb3JhdG9yIGluIHRoZSBiYXNlIEBzZWUgQmFzZUNvbXBvbmVudCBjbGFzc1xyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgQFNraXBTZWxmKCkgQE9wdGlvbmFsKCkgQEluamVjdChTTUVfTEFZT1VUX1BST1ZJREVSKSBsYXlvdXQ6IExheW91dCkge1xyXG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcclxuICAgICAgICBpZiAobGF5b3V0KSB7XHJcbiAgICAgICAgICAgIC8vIG9uIHBhcmVudCBsYXlvdXQgY2hhbmdlcywgcmUtZW1pdCB0aGUgbGF5b3V0IGNoYW5nZSB0byBvdXIgZXZlbnRcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2gobGF5b3V0LmxheW91dENoYW5nZWQuc3Vic2NyaWJlKCgoKSA9PiB0aGlzLm9uTGF5b3V0Q2hhbmdlZCgpKSkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLnRhYnMgJiYgdGhpcy50YWJzLmZpcnN0ICYmICF0aGlzLnNlbGVjdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IHRoaXMudGFicy5maXJzdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMudGFicy5sZW5ndGggPCAxKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAgICAgICAgICdQaXZvdCBtdXN0IGNvbnRhaW4gY2hpbGQgdGFicy4gRXhwZWN0ZWQgYXQgbGVhc3Qgb25lICgxKSB0YWInXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudmlzaWJsZVRhYnMgPSB0aGlzLnRhYnMudG9BcnJheSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgb2YgYSBnaXZlbiB0YWIgaXMgc2VsZWN0ZWRcclxuICAgICAqIEBwYXJhbSB0YWIgVGhlIHRhYiB0byBjb21wYXJlIHdpdGhcclxuICAgICAqL1xyXG4gICAgcHVibGljIGlzU2VsZWN0ZWQodGFiOiBQaXZvdFRhYkNvbXBvbmVudCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbiAmJiB0aGlzLnNlbGVjdGlvbiA9PT0gdGFiO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRm9yY2UgcmVmcmVzaCBmb3IgdGhlIHBpdm90IHRhYnMuXHJcbiAgICAgKi9cclxuICAgIEBEZWJvdW5jZSgpXHJcbiAgICBwdWJsaWMgcmVmcmVzaChzaG91bGRFbWl0ID0gZmFsc2UpIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVBpdm90VGFicyhzaG91bGRFbWl0KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlbGVjdHMgYSB0YWJcclxuICAgICAqIEBwYXJhbSB0YWIgVGhlIHRhYiB0byBzZWxlY3RcclxuICAgICAqL1xyXG4gICAgcHVibGljIHNlbGVjdCh0YWI6IFBpdm90VGFiQ29tcG9uZW50KTogdm9pZCB7XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEF0IGFueSBnaXZlbiB0aW1lIHdlIHNob3VsZCBoYXZlIGFuIGF0dHJpYnV0ZSB0aGF0IGxldHMgdXMga25vdyBpZiBhIHRhYiBpcyB2aXNpYmxlIG9yIG5vdC5cclxuICAgICAgICAgKi9cclxuICAgICAgICBpZiAodGFiKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy50cmF5VGFicy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudHJheVRhYnNbaV0gPT09IHRhYikge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnZpc2libGVUYWJzICYmIHRoaXMudmlzaWJsZVRhYnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoaWRkZW5UYWIgPSB0aGlzLnZpc2libGVUYWJzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoaWRkZW5UYWIuaXNWaXNpYmxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJheVRhYnMucHVzaChoaWRkZW5UYWIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpc2libGVUYWJzLnB1c2godGFiKTtcclxuICAgICAgICAgICAgICAgICAgICB0YWIuaXNWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYXlUYWJzLnNwbGljZShpLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24gPSB0YWI7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGFiKTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZW1pdExheW91dENoYW5nZWQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQERlYm91bmNlKClcclxuICAgIHByaXZhdGUgZW1pdExheW91dENoYW5nZWQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5sYXlvdXRDaGFuZ2VkLmVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBARGVib3VuY2UoMClcclxuICAgIHByaXZhdGUgb25MYXlvdXRDaGFuZ2VkKCkge1xyXG4gICAgICAgIHRoaXMudXBkYXRlUGl2b3RUYWJzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFRhYlBhbmVsSW5kZXgoaWQ6IHN0cmluZywgY3VycmVudFRhYjogYm9vbGVhbik6IG51bWJlciB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgY29uc3QgdGFiUGFuZWxTZWN0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xyXG5cclxuICAgICAgICBpZiAoY3VycmVudFRhYiAmJiB0YWJQYW5lbFNlY3Rpb24pIHtcclxuICAgICAgICAgICAgLy8gbm8gc2Nyb2xsIGJhciBpcyB2aXNpYmxlIHdoZW4gc2Nyb2xsSGVpZ2h0IGlzIGVxdWFsIHRvIGNsaWVudEhlaWdodFxyXG4gICAgICAgICAgICAvLyB1c2UgdGhpcyB0byBzZXQgdGFiaW5kZXggb25seSBmb3Igc2Nyb2xsYWJsZSBjb250ZW50XHJcbiAgICAgICAgICAgIGNvbnN0IGhhc1Njcm9sbEJhciA9IHRhYlBhbmVsU2VjdGlvbi5zY3JvbGxIZWlnaHQgIT09IHRhYlBhbmVsU2VjdGlvbi5jbGllbnRIZWlnaHQ7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gaGFzU2Nyb2xsQmFyID8gMCA6IHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIHRoZSBpZEJhZyB1c2VkIGJ5IHRoaXMgY29tcG9uZW50IHRvIHN0b3JlIHVuaXF1ZSBlbGVtZW50IGlkcy5cclxuICAgICAqIGlkIHZhbHVlcyB3aWxsIGJlIGFzc2lnbmVkIGJ5IHRoZSBAc2VlIEJhc2VDb21wb25lbnQgc3VwZXIgY2xhc3MuXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBjcmVhdGVJZEJhZygpOiBNc2Z0U21lLlN0cmluZ01hcDxzdHJpbmc+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0YWJQYW5lbDogJydcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgaW5pdGlhbCBob3N0IGNsYXNzZXMgdG8gYmUgYXBwbGllZCB0byB0aGlzIGVsZW1lbnRcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGdldEluaXRpYWxIb3N0Q2xhc3NlcygpOiBzdHJpbmdbXSB7XHJcbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldEluaXRpYWxIb3N0Q2xhc3NlcygpLmNvbmNhdChbXHJcbiAgICAgICAgICAgICdzbWUtcGl2b3QnXHJcbiAgICAgICAgXSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNYWluIHJlbmRlcmluZyBmdW5jdGlvbmFsaXR5IGZvciB0aGUgcGl2b3QgdGFiXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgdXBkYXRlUGl2b3RUYWJzKHNob3VsZEVtaXQgPSB0cnVlKSB7XHJcbiAgICAgICAgbGV0IGN1cnJlbnRGaWxsID0gMDtcclxuICAgICAgICB0aGlzLnZpc2libGVUYWJzID0gW107XHJcbiAgICAgICAgdGhpcy50cmF5VGFicyA9IFtdO1xyXG5cclxuICAgICAgICBjb25zdCBob3N0ID0gPEhUTUxFbGVtZW50PnRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudDtcclxuICAgICAgICBjb25zdCB0YWJCYXJXaWR0aCA9IGhvc3Qub2Zmc2V0V2lkdGg7XHJcblxyXG4gICAgICAgIGxldCB0b3RhbFRhYldpZHRoID0gMDtcclxuICAgICAgICBjb25zdCB0YWJMaXN0ID0gdGhpcy50YWJzLnRvQXJyYXkoKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudGFicy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCB0YWI6IFBpdm90VGFiQ29tcG9uZW50ID0gdGFiTGlzdFtpXTtcclxuICAgICAgICAgICAgY29uc3QgdGFiV2lkdGggPSB0YWIud2lkdGg7XHJcbiAgICAgICAgICAgIHRvdGFsVGFiV2lkdGggKz0gdGFiV2lkdGg7XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRvdGFsVGFiV2lkdGggPD0gdGFiQmFyV2lkdGgpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRhYnMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgICAgIHRhYkxpc3RbaV0uaXNWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZVRhYnMucHVzaCh0YWJMaXN0W2ldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZpc2libGVUYWJCYXJXaWR0aCA9IHRhYkJhcldpZHRoIC0gdGhpcy5kcm9wRG93bkJ1dHRvbkVsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRhYnMubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRhYiA9IHRhYkxpc3RbaV07XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0YWJXaWR0aCA9IHRhYi53aWR0aDtcclxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50RmlsbCArIHRhYldpZHRoID4gdmlzaWJsZVRhYkJhcldpZHRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGFiLmlzVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJheVRhYnMucHVzaCh0YWIpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0YWIuaXNWaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpc2libGVUYWJzLnB1c2godGFiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50RmlsbCArPSB0YWJXaWR0aDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHNob3VsZEVtaXQpIHtcclxuICAgICAgICAgICAgdGhpcy5lbWl0TGF5b3V0Q2hhbmdlZCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwic21lLWFycmFuZ2Utc3RhY2staFwiIFtzdHlsZS5wYWRkaW5nTGVmdF09XCJub0xlZnRQYWRkaW5nPzA6bnVsbFwiPlxyXG4gIDxoNCAqbmdJZj1cImhlYWRlclRleHRcIiBjbGFzcz1cInNtZS1wb3NpdGlvbi1mbGV4LWF1dG9cIj57e2hlYWRlclRleHR9fTwvaDQ+XHJcblxyXG4gIDxoZWFkZXIgW2NsYXNzLnNtZS1waXZvdC1yZXZlcnNlLWhlYWRlcl09XCJhbGlnblRhYnMgPT09ICdyaWdodCdcIiBbY2xhc3Muc21lLXBvc2l0aW9uLXN0cmV0Y2gtaF09XCIhaGVhZGVyVGV4dFwiPlxyXG4gICAgPCEtLSBDYW5ub3QgdXNlIFwic21lLXBhZGRpbmctbGVmdC1ub25lXCIgQ1NTIGNsYXNzIGluIDxoZWFkZXI+IGFib3ZlIHNpbmNlIHNtZS1wYWRkaW5nLWxlZnQtbm9uZSBkb2Vzbid0IGhhdmUgZW5vdWdoIHNlbGVjdG9yIHdlaWdodCB0byBvdmVycmlkZSBzbWUtcGl2b3Q+W3JvbGU9XCJ0YWJsaXN0XCJdIHNlbGVjdG9yIC0tPlxyXG4gICAgPGRpdiByb2xlPVwidGFibGlzdFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0YWIgb2YgdmlzaWJsZVRhYnM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICA8IS0tIFJvdXRlZCBUYWIgaXRlbSAtLT5cclxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwidGFiLnR5cGUgPT09IHBpdm90VGFiVHlwZS5Sb3V0ZWRcIiByb2xlPVwidGFiXCIgW3JvdXRlckxpbmtdPVwidGFiLnJvdXRlXCJcclxuICAgICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaWRCYWcudGFiUGFuZWxcIiBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkIHx8IHRhYi5kaXNhYmxlZFwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgdGFiLmRpc2FibGVkXCIgW2NsYXNzLnNtZS1kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCB0YWIuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpc1NlbGVjdGVkKHRhYilcIiBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwidGFiLnJvdXRlckxpbmtBY3RpdmVPcHRpb25zXCJcclxuICAgICAgICAgIFtjbGFzcy5zbWUtYWN0aXZlXT1cImlzU2VsZWN0ZWQodGFiKVwiIChzbWVSb3V0ZXJMaW5rQWN0aXZhdGVkKT1cInNlbGVjdCh0YWIpXCI+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYi5pY29uQ2xhc3NcIiBbY2xhc3NdPVwidGFiLmljb25DbGFzc1wiPjwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuPnt7dGFiLmxhYmVsfX08L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDwhLS0gU3RhdGljIFRhYiBJdGVtIC0tPlxyXG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJ0YWIudHlwZSA9PT0gcGl2b3RUYWJUeXBlLlN0YXRpY1wiIHRhYmluZGV4PVwiMFwiIHJvbGU9XCJ0YWJcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJpZEJhZy50YWJQYW5lbCArIGlcIiBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkIHx8IHRhYi5kaXNhYmxlZFwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgdGFiLmRpc2FibGVkXCIgW2NsYXNzLnNtZS1kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCB0YWIuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpc1NlbGVjdGVkKHRhYilcIiBbY2xhc3Muc21lLWFjdGl2ZV09XCJpc1NlbGVjdGVkKHRhYilcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInNlbGVjdCh0YWIpXCI+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYi5pY29uQ2xhc3NcIiBbY2xhc3NdPVwidGFiLmljb25DbGFzc1wiPjwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuPnt7dGFiLmxhYmVsfX08L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2IHJvbGU9XCJtZW51XCI+XHJcbiAgICAgICAgPHNtZS1kcm9wZG93biAjZHJvcERvd24gcm9sZT1cInByZXNlbnRhdGlvblwiIGNsYXNzPVwic21lLXBvc2l0aW9uLWZsZXgtbm9uZVwiXHJcbiAgICAgICAgICBbY2xhc3Muc21lLWxheW91dC1oaWRkZW5dPVwidHJheVRhYnMubGVuZ3RoID09PSAwXCIgW2NsYXNzLnNtZS1sYXlvdXQtbm9uZV09XCJ0cmF5VGFicy5sZW5ndGggPT09IDBcIj5cclxuICAgICAgICAgIDxidXR0b24gI2Ryb3BEb3duQnV0dG9uIHR5cGU9XCJidXR0b25cIiBbYXR0ci5hcmlhLWxhYmVsXT1cIm1vcmVUYWJzRGlzcGxheVwiIHJvbGU9XCJtZW51aXRlbVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwic21lLWJ1dHRvbi10cmlnZ2VyIHNtZS1sYXlvdXQtYWN0aW9uLWJhci1pdGVtLWhlaWdodCBzbWUtYnV0dG9uLWF1dG8td2lkdGggc21lLWRyb3Bkb3duLXRvZ2dsZVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5zbWUtdG9nZ2xlZF09XCJkcm9wRG93bi5pc09wZW5cIiBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImRyb3BEb3duLmlzT3BlblwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7IG1vcmVUYWJzRGlzcGxheSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzbWUtaWNvbiBzbWUtaWNvbi1zaXplLXh4cyBzbWUtaWNvbi1jaGV2cm9uRG93biBzbWUtbWFyZ2luLWxlZnQteHNcIj48L3NwYW4+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxkaXYgcm9sZT1cIm1lbnVcIiBjbGFzcz1cInNtZS1kcm9wZG93bi1jb250ZW50IHNtZS1hcnJhbmdlLXN0YWNrLXYgc21lLXBvc2l0aW9uLXN0cmV0Y2gtaFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic21lLWFycmFuZ2Utc3RhY2staFwiICpuZ0Zvcj1cImxldCB0YWIgb2YgdHJheVRhYnM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwidGFiLnR5cGUgPT09IHBpdm90VGFiVHlwZS5Sb3V0ZWRcIiByb2xlPVwibWVudWl0ZW1cIiBbcm91dGVyTGlua109XCJ0YWIucm91dGVcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzbWUtcG9zaXRpb24tc3RyZXRjaC1oXCIgW2NsYXNzLnNtZS1kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCB0YWIuZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgKHNtZVJvdXRlckxpbmtBY3RpdmF0ZWQpPVwic2VsZWN0KHRhYilcIiBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwidGFiLnJvdXRlckxpbmtBY3RpdmVPcHRpb25zXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYi5pY29uQ2xhc3NcIiBbY2xhc3NdPVwidGFiLmljb25DbGFzc1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7dGFiLmxhYmVsfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInRhYi50eXBlID09PSBwaXZvdFRhYlR5cGUuU3RhdGljXCIgcm9sZT1cIm1lbnVpdGVtXCIgY2xhc3M9XCJzbWUtcG9zaXRpb24tc3RyZXRjaC1oXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5zbWUtZGlzYWJsZWRdPVwiZGlzYWJsZWQgfHwgdGFiLmRpc2FibGVkXCIgKGNsaWNrKT1cInNlbGVjdCh0YWIpXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRhYi5pY29uQ2xhc3NcIiBbY2xhc3NdPVwidGFiLmljb25DbGFzc1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7dGFiLmxhYmVsfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9zbWUtZHJvcGRvd24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9oZWFkZXI+XHJcbjwvZGl2PlxyXG48IS0tIFJvdXRlZCBUYWIgQ29udGVudCAtLT5cclxuPHNlY3Rpb24gKm5nSWY9XCJoYXNSb3V0ZWRUYWJzXCIgcm9sZT1cInRhYnBhbmVsXCIgW2lkXT1cImlkQmFnLnRhYlBhbmVsXCIgW2NsYXNzLnNtZS1sYXlvdXQtbm9uZV09XCIhc2VsZWN0aW9uSXNSb3V0ZWRcIlxyXG4gIFthdHRyLmFyaWEtaGlkZGVuXT1cIiFzZWxlY3Rpb25Jc1JvdXRlZFwiPlxyXG4gIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cclxuPC9zZWN0aW9uPlxyXG5cclxuPCEtLSBTdGF0aWMgVGFiIENvbnRlbnQgLS0+XHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNTdGF0aWNUYWJzXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFiIG9mIHZpc2libGVUYWJzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFiLnR5cGUgPT09IHBpdm90VGFiVHlwZS5TdGF0aWNcIj5cclxuICAgICAgPHNlY3Rpb24gcm9sZT1cInRhYnBhbmVsXCIgW2lkXT1cImlkQmFnLnRhYlBhbmVsICsgaVwiIFtjbGFzcy5zbWUtbGF5b3V0LW5vbmVdPVwiIWlzU2VsZWN0ZWQodGFiKVwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiIWlzU2VsZWN0ZWQodGFiKVwiIFthdHRyLnRhYmluZGV4XT1cImdldFRhYlBhbmVsSW5kZXgoaWRCYWcudGFiUGFuZWwgKyBpLCBpc1NlbGVjdGVkKHRhYikpXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIihzd2l0Y2hUYWJCeVNob3dIaWRlIHx8IGlzU2VsZWN0ZWQodGFiKSkgPyB0YWIuY29udGVudFRlbXBsYXRlIDogbnVsbFwiPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L3NlY3Rpb24+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==
@@ -3,8 +3,38 @@ import { StatusIconType } from '../icon/layered-icon/status/status-icon.componen
3
3
  import * as i0 from "@angular/core";
4
4
  export class PropertyGridItemComponent {
5
5
  constructor() {
6
+ /**
7
+ * The status for the property grid item.
8
+ */
6
9
  this.status = null;
10
+ /**
11
+ * It indicates the column span for the layout.
12
+ */
7
13
  this.columnSpan = 1;
14
+ /**
15
+ * It indicates the rendering of loading wheel when data unloaded.
16
+ */
17
+ this.isAsync = false;
18
+ /**
19
+ * It indicates whether the property grid is loading.
20
+ * This parameter has to have isAsync set to true to use.
21
+ */
22
+ this.loading = true;
23
+ }
24
+ /**
25
+ * The setter for value/context.
26
+ */
27
+ set value(input) {
28
+ if (this.isAsync && this.loading) {
29
+ this.loading = false;
30
+ }
31
+ this.internalValue = input;
32
+ }
33
+ /**
34
+ * The getter for value/context.
35
+ */
36
+ get value() {
37
+ return this.internalValue;
8
38
  }
9
39
  /**
10
40
  * Gets the status class to apply to this components value section
@@ -33,9 +63,25 @@ export class PropertyGridItemComponent {
33
63
  return null;
34
64
  }
35
65
  }
66
+ ngOnInit() {
67
+ // Edge case when the data has been assigned before the UI renders,
68
+ // the functionality to make sure the data is actually loaded.
69
+ // Basically in this case the set function will be skipped.
70
+ if (this.isAsync && this.loading && this.value !== undefined) {
71
+ this.loading = false;
72
+ }
73
+ }
74
+ /**
75
+ * Give the ability to reset loading.
76
+ */
77
+ resetLoading() {
78
+ if (!this.loading) {
79
+ this.loading = true;
80
+ }
81
+ }
36
82
  }
37
83
  /** @nocollapse */ PropertyGridItemComponent.ɵfac = function PropertyGridItemComponent_Factory(t) { return new (t || PropertyGridItemComponent)(); };
38
- /** @nocollapse */ PropertyGridItemComponent.ɵcmp = i0.ɵɵdefineComponent({ type: PropertyGridItemComponent, selectors: [["sme-property-grid-item"]], inputs: { label: "label", value: "value", action: "action", link: "link", tooltip: "tooltip", isExternalLink: "isExternalLink", iconClass: "iconClass", status: "status", columnSpan: "columnSpan" }, decls: 0, vars: 0, template: function PropertyGridItemComponent_Template(rf, ctx) { }, encapsulation: 2 });
84
+ /** @nocollapse */ PropertyGridItemComponent.ɵcmp = i0.ɵɵdefineComponent({ type: PropertyGridItemComponent, selectors: [["sme-property-grid-item"]], inputs: { label: "label", value: "value", action: "action", link: "link", tooltip: "tooltip", isExternalLink: "isExternalLink", iconClass: "iconClass", status: "status", columnSpan: "columnSpan", isAsync: "isAsync" }, decls: 0, vars: 0, template: function PropertyGridItemComponent_Template(rf, ctx) { }, encapsulation: 2 });
39
85
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PropertyGridItemComponent, [{
40
86
  type: Component,
41
87
  args: [{
@@ -60,5 +106,7 @@ export class PropertyGridItemComponent {
60
106
  type: Input
61
107
  }], columnSpan: [{
62
108
  type: Input
109
+ }], isAsync: [{
110
+ type: Input
63
111
  }] }); })();
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktZ3JpZC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FuZ3VsYXIvc3JjL2NvbnRyb2xzL3Byb3BlcnR5LWdyaWQvcHJvcGVydHktZ3JpZC1pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbURBQW1ELENBQUM7O0FBTW5GLE1BQU0sT0FBTyx5QkFBeUI7SUFKdEM7UUEyQlcsV0FBTSxHQUE0QixJQUFJLENBQUM7UUFHdkMsZUFBVSxHQUFHLENBQUMsQ0FBQztLQStCekI7SUE3Qkc7O09BRUc7SUFDSCxJQUFXLFdBQVc7UUFDbEIsSUFBSSxPQUFPLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3hDLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWpFLFFBQVEsV0FBVyxFQUFFO1lBQ2pCLEtBQUssY0FBYyxDQUFDLFFBQVE7Z0JBQ3hCLE9BQU8sb0JBQW9CLENBQUM7WUFDaEMsS0FBSyxjQUFjLENBQUMsS0FBSztnQkFDckIsT0FBTyxpQkFBaUIsQ0FBQztZQUM3QixLQUFLLGNBQWMsQ0FBQyxPQUFPO2dCQUN2QixPQUFPLG1CQUFtQixDQUFDO1lBQy9CLEtBQUssY0FBYyxDQUFDLElBQUk7Z0JBQ3BCLE9BQU8sZ0JBQWdCLENBQUM7WUFDNUIsS0FBSyxjQUFjLENBQUMsUUFBUTtnQkFDeEIsT0FBTyxvQkFBb0IsQ0FBQztZQUNoQyxLQUFLLGNBQWMsQ0FBQyxPQUFPO2dCQUN2QixPQUFPLG1CQUFtQixDQUFDO1lBQy9CLEtBQUssY0FBYyxDQUFDLE9BQU87Z0JBQ3ZCLE9BQU8sbUJBQW1CLENBQUM7WUFDL0I7Z0JBQ0ksT0FBTyxJQUFJLENBQUM7U0FDbkI7SUFDTCxDQUFDOztxSEF4RFEseUJBQXlCO2lGQUF6Qix5QkFBeUI7dUZBQXpCLHlCQUF5QjtjQUpyQyxTQUFTO2VBQUM7Z0JBQ1AsUUFBUSxFQUFFLHdCQUF3QjtnQkFDbEMsUUFBUSxFQUFFLEVBQUU7YUFDZjtnQkFHVSxLQUFLO2tCQURYLEtBQUs7WUFJQyxLQUFLO2tCQURYLEtBQUs7WUFJQyxNQUFNO2tCQURaLEtBQUs7WUFJQyxJQUFJO2tCQURWLEtBQUs7WUFJQyxPQUFPO2tCQURiLEtBQUs7WUFJQyxjQUFjO2tCQURwQixLQUFLO1lBSUMsU0FBUztrQkFEZixLQUFLO1lBSUMsTUFBTTtrQkFEWixLQUFLO1lBSUMsVUFBVTtrQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3RhdHVzSWNvblR5cGUgfSBmcm9tICcuLi9pY29uL2xheWVyZWQtaWNvbi9zdGF0dXMvc3RhdHVzLWljb24uY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzbWUtcHJvcGVydHktZ3JpZC1pdGVtJyxcclxuICAgIHRlbXBsYXRlOiAnJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudCB7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGxhYmVsOiBzdHJpbmc7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyB2YWx1ZTogYW55O1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgYWN0aW9uOiBNc2Z0U21lLkFjdGlvbjE8UHJvcGVydHlHcmlkSXRlbUNvbXBvbmVudD47XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBsaW5rOiBzdHJpbmc7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyB0b29sdGlwOiBzdHJpbmc7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBpc0V4dGVybmFsTGluazogYm9vbGVhbjtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGljb25DbGFzczogc3RyaW5nO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc3RhdHVzOiBTdGF0dXNJY29uVHlwZS5CaW5kYWJsZSA9IG51bGw7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBjb2x1bW5TcGFuID0gMTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIHN0YXR1cyBjbGFzcyB0byBhcHBseSB0byB0aGlzIGNvbXBvbmVudHMgdmFsdWUgc2VjdGlvblxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IHN0YXR1c0NsYXNzKCk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKE1zZnRTbWUuaXNOdWxsT3JVbmRlZmluZWQodGhpcy5zdGF0dXMpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3Qgc3RhdHVzVmFsdWUgPSBTdGF0dXNJY29uVHlwZS5mcm9tQmluZGFibGVUeXBlKHRoaXMuc3RhdHVzKTtcclxuXHJcbiAgICAgICAgc3dpdGNoIChzdGF0dXNWYWx1ZSkge1xyXG4gICAgICAgICAgICBjYXNlIFN0YXR1c0ljb25UeXBlLkNyaXRpY2FsOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdzbWUtY29sb3ItY3JpdGljYWwnO1xyXG4gICAgICAgICAgICBjYXNlIFN0YXR1c0ljb25UeXBlLkVycm9yOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdzbWUtY29sb3ItZXJyb3InO1xyXG4gICAgICAgICAgICBjYXNlIFN0YXR1c0ljb25UeXBlLldhcm5pbmc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NtZS1jb2xvci13YXJuaW5nJztcclxuICAgICAgICAgICAgY2FzZSBTdGF0dXNJY29uVHlwZS5JbmZvOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdzbWUtY29sb3ItaW5mbyc7XHJcbiAgICAgICAgICAgIGNhc2UgU3RhdHVzSWNvblR5cGUuUHJvZ3Jlc3M6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NtZS1jb2xvci1wcm9ncmVzcyc7XHJcbiAgICAgICAgICAgIGNhc2UgU3RhdHVzSWNvblR5cGUuU3VjY2VzczpcclxuICAgICAgICAgICAgICAgIHJldHVybiAnc21lLWNvbG9yLXN1Y2Nlc3MnO1xyXG4gICAgICAgICAgICBjYXNlIFN0YXR1c0ljb25UeXBlLlVua25vd246XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NtZS1jb2xvci1uZXV0cmFsJztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktZ3JpZC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FuZ3VsYXIvc3JjL2NvbnRyb2xzL3Byb3BlcnR5LWdyaWQvcHJvcGVydHktZ3JpZC1pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbURBQW1ELENBQUM7O0FBTW5GLE1BQU0sT0FBTyx5QkFBeUI7SUFKdEM7UUFnRUk7O1dBRUc7UUFFSSxXQUFNLEdBQTRCLElBQUksQ0FBQztRQUU5Qzs7V0FFRztRQUVJLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFFdEI7O1dBRUc7UUFFSSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRXZCOzs7V0FHRztRQUNJLFlBQU8sR0FBRyxJQUFJLENBQUM7S0FpRHpCO0lBeEhHOztPQUVHO0lBQ0gsSUFDVyxLQUFLLENBQUMsS0FBVTtRQUN2QixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztTQUN4QjtRQUVELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsS0FBSztRQUNaLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBd0REOztPQUVHO0lBQ0gsSUFBVyxXQUFXO1FBQ2xCLElBQUksT0FBTyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN4QyxPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVqRSxRQUFRLFdBQVcsRUFBRTtZQUNqQixLQUFLLGNBQWMsQ0FBQyxRQUFRO2dCQUN4QixPQUFPLG9CQUFvQixDQUFDO1lBQ2hDLEtBQUssY0FBYyxDQUFDLEtBQUs7Z0JBQ3JCLE9BQU8saUJBQWlCLENBQUM7WUFDN0IsS0FBSyxjQUFjLENBQUMsT0FBTztnQkFDdkIsT0FBTyxtQkFBbUIsQ0FBQztZQUMvQixLQUFLLGNBQWMsQ0FBQyxJQUFJO2dCQUNwQixPQUFPLGdCQUFnQixDQUFDO1lBQzVCLEtBQUssY0FBYyxDQUFDLFFBQVE7Z0JBQ3hCLE9BQU8sb0JBQW9CLENBQUM7WUFDaEMsS0FBSyxjQUFjLENBQUMsT0FBTztnQkFDdkIsT0FBTyxtQkFBbUIsQ0FBQztZQUMvQixLQUFLLGNBQWMsQ0FBQyxPQUFPO2dCQUN2QixPQUFPLG1CQUFtQixDQUFDO1lBQy9CO2dCQUNJLE9BQU8sSUFBSSxDQUFDO1NBQ25CO0lBQ0wsQ0FBQztJQUVNLFFBQVE7UUFDWCxtRUFBbUU7UUFDbkUsOERBQThEO1FBQzlELDJEQUEyRDtRQUMzRCxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUMxRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztTQUN4QjtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLFlBQVk7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNmLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1NBQ3ZCO0lBQ0wsQ0FBQzs7cUhBbElRLHlCQUF5QjtpRkFBekIseUJBQXlCO3VGQUF6Qix5QkFBeUI7Y0FKckMsU0FBUztlQUFDO2dCQUNQLFFBQVEsRUFBRSx3QkFBd0I7Z0JBQ2xDLFFBQVEsRUFBRSxFQUFFO2FBQ2Y7Z0JBVVUsS0FBSztrQkFEWCxLQUFLO1lBT0ssS0FBSztrQkFEZixLQUFLO1lBb0JDLE1BQU07a0JBRFosS0FBSztZQU9DLElBQUk7a0JBRFYsS0FBSztZQU9DLE9BQU87a0JBRGIsS0FBSztZQU9DLGNBQWM7a0JBRHBCLEtBQUs7WUFPQyxTQUFTO2tCQURmLEtBQUs7WUFPQyxNQUFNO2tCQURaLEtBQUs7WUFPQyxVQUFVO2tCQURoQixLQUFLO1lBT0MsT0FBTztrQkFEYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN0YXR1c0ljb25UeXBlIH0gZnJvbSAnLi4vaWNvbi9sYXllcmVkLWljb24vc3RhdHVzL3N0YXR1cy1pY29uLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc21lLXByb3BlcnR5LWdyaWQtaXRlbScsXHJcbiAgICB0ZW1wbGF0ZTogJydcclxufSlcclxuZXhwb3J0IGNsYXNzIFByb3BlcnR5R3JpZEl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgaW50ZXJuYWwgdmFsdWUvY29udGV4dCBmb3IgdGhlIHByb3BlcnR5IGdyaWQgaXRlbS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBpbnRlcm5hbFZhbHVlOiBhbnk7XHJcbiAgICAvKipcclxuICAgICAqIFRoZSBsYWJlbCBmb3IgdGhlIHByb3BlcnR5IGdyaWQgaXRlbS5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBsYWJlbDogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHNldHRlciBmb3IgdmFsdWUvY29udGV4dC5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgdmFsdWUoaW5wdXQ6IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzQXN5bmMgJiYgdGhpcy5sb2FkaW5nKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5pbnRlcm5hbFZhbHVlID0gaW5wdXQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgZ2V0dGVyIGZvciB2YWx1ZS9jb250ZXh0LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IHZhbHVlKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEl0IGluZGljYXRlcyB0aGUgYWN0aW9uIGZvciB0aGUgcHJvcGVydHkgZ3JpZCBpdGVtLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGFjdGlvbjogTXNmdFNtZS5BY3Rpb24xPFByb3BlcnR5R3JpZEl0ZW1Db21wb25lbnQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGxpbmsgZm9yIHRoZSBwcm9wZXJ0eSBncmlkIGl0ZW0uXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgbGluazogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHRvb2x0aXAgZm9yIHRoZSBwcm9wZXJ0eSBncmlkIGl0ZW0uXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgdG9vbHRpcDogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXQgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHByb3BlcnR5IGdyaWQgaXRlbSBpcyBleHRlcm5hbCBsaW5rLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGlzRXh0ZXJuYWxMaW5rOiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGljb24gY2xhc3MgZm9yIHRoZSBwcm9wZXJ0eSBncmlkIGl0ZW0uXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgaWNvbkNsYXNzOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc3RhdHVzIGZvciB0aGUgcHJvcGVydHkgZ3JpZCBpdGVtLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHN0YXR1czogU3RhdHVzSWNvblR5cGUuQmluZGFibGUgPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXQgaW5kaWNhdGVzIHRoZSBjb2x1bW4gc3BhbiBmb3IgdGhlIGxheW91dC5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBjb2x1bW5TcGFuID0gMTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEl0IGluZGljYXRlcyB0aGUgcmVuZGVyaW5nIG9mIGxvYWRpbmcgd2hlZWwgd2hlbiBkYXRhIHVubG9hZGVkLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGlzQXN5bmMgPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEl0IGluZGljYXRlcyB3aGV0aGVyIHRoZSBwcm9wZXJ0eSBncmlkIGlzIGxvYWRpbmcuXHJcbiAgICAgKiBUaGlzIHBhcmFtZXRlciBoYXMgdG8gaGF2ZSBpc0FzeW5jIHNldCB0byB0cnVlIHRvIHVzZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgc3RhdHVzIGNsYXNzIHRvIGFwcGx5IHRvIHRoaXMgY29tcG9uZW50cyB2YWx1ZSBzZWN0aW9uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgc3RhdHVzQ2xhc3MoKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAoTXNmdFNtZS5pc051bGxPclVuZGVmaW5lZCh0aGlzLnN0YXR1cykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBzdGF0dXNWYWx1ZSA9IFN0YXR1c0ljb25UeXBlLmZyb21CaW5kYWJsZVR5cGUodGhpcy5zdGF0dXMpO1xyXG5cclxuICAgICAgICBzd2l0Y2ggKHN0YXR1c1ZhbHVlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgU3RhdHVzSWNvblR5cGUuQ3JpdGljYWw6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NtZS1jb2xvci1jcml0aWNhbCc7XHJcbiAgICAgICAgICAgIGNhc2UgU3RhdHVzSWNvblR5cGUuRXJyb3I6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NtZS1jb2xvci1lcnJvcic7XHJcbiAgICAgICAgICAgIGNhc2UgU3RhdHVzSWNvblR5cGUuV2FybmluZzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAnc21lLWNvbG9yLXdhcm5pbmcnO1xyXG4gICAgICAgICAgICBjYXNlIFN0YXR1c0ljb25UeXBlLkluZm86XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NtZS1jb2xvci1pbmZvJztcclxuICAgICAgICAgICAgY2FzZSBTdGF0dXNJY29uVHlwZS5Qcm9ncmVzczpcclxuICAgICAgICAgICAgICAgIHJldHVybiAnc21lLWNvbG9yLXByb2dyZXNzJztcclxuICAgICAgICAgICAgY2FzZSBTdGF0dXNJY29uVHlwZS5TdWNjZXNzOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdzbWUtY29sb3Itc3VjY2Vzcyc7XHJcbiAgICAgICAgICAgIGNhc2UgU3RhdHVzSWNvblR5cGUuVW5rbm93bjpcclxuICAgICAgICAgICAgICAgIHJldHVybiAnc21lLWNvbG9yLW5ldXRyYWwnO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICAvLyBFZGdlIGNhc2Ugd2hlbiB0aGUgZGF0YSBoYXMgYmVlbiBhc3NpZ25lZCBiZWZvcmUgdGhlIFVJIHJlbmRlcnMsXHJcbiAgICAgICAgLy8gdGhlIGZ1bmN0aW9uYWxpdHkgdG8gbWFrZSBzdXJlIHRoZSBkYXRhIGlzIGFjdHVhbGx5IGxvYWRlZC5cclxuICAgICAgICAvLyBCYXNpY2FsbHkgaW4gdGhpcyBjYXNlIHRoZSBzZXQgZnVuY3Rpb24gd2lsbCBiZSBza2lwcGVkLlxyXG4gICAgICAgIGlmICh0aGlzLmlzQXN5bmMgJiYgdGhpcy5sb2FkaW5nICYmIHRoaXMudmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHaXZlIHRoZSBhYmlsaXR5IHRvIHJlc2V0IGxvYWRpbmcuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZXNldExvYWRpbmcoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmxvYWRpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19