@fundamental-ngx/platform 0.48.0-rc.21 → 0.48.0-rc.23

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/esm2022/form/combobox/combobox-mobile/combobox/combobox-mobile.component.mjs +6 -8
  2. package/esm2022/form/combobox/commons/base-combobox.mjs +6 -5
  3. package/esm2022/form/form-generator/form-generator/form-generator.component.mjs +8 -8
  4. package/esm2022/form/form-generator/form-generator.service.mjs +8 -13
  5. package/esm2022/form/form-group/form-field/form-field.component.mjs +27 -29
  6. package/esm2022/form/form-group/form-group.component.mjs +37 -40
  7. package/esm2022/form/multi-combobox/commons/base-multi-combobox.mjs +9 -8
  8. package/esm2022/form/multi-combobox/multi-combobox/multi-combobox.component.mjs +3 -3
  9. package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.mjs +10 -13
  10. package/esm2022/form/multi-combobox/multi-combobox.interface.mjs +1 -1
  11. package/esm2022/form/multi-input/base-multi-input.mjs +5 -4
  12. package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +4 -7
  13. package/esm2022/form/radio-group/radio-group.component.mjs +23 -24
  14. package/esm2022/form/select/commons/base-select.mjs +3 -3
  15. package/esm2022/form/step-input/base.step-input.mjs +25 -35
  16. package/esm2022/form/step-input/number/number-step-input.component.mjs +3 -3
  17. package/esm2022/form/step-input/step-input-action-button.mjs +6 -10
  18. package/esm2022/icon-tab-bar/components/icon-tab-bar-base.class.mjs +6 -8
  19. package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-container.directive.mjs +10 -19
  20. package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-item.directive.mjs +7 -9
  21. package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-list.directive.mjs +7 -8
  22. package/esm2022/icon-tab-bar/icon-tab-bar.component.mjs +9 -20
  23. package/esm2022/list/list.component.mjs +7 -8
  24. package/esm2022/menu/menu.component.mjs +3 -4
  25. package/esm2022/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.mjs +8 -11
  26. package/esm2022/message-popover/message-popover.component.mjs +52 -53
  27. package/esm2022/message-popover/models/message-popover-wrapper.interface.mjs +1 -1
  28. package/esm2022/search-field/search-field-mobile/search-field/search-field-mobile.component.mjs +3 -7
  29. package/esm2022/search-field/search-field.component.mjs +20 -21
  30. package/esm2022/settings-generator/settings-generator.service.mjs +9 -10
  31. package/esm2022/shared/form/base.input.mjs +7 -8
  32. package/esm2022/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.mjs +10 -15
  33. package/esm2022/split-menu-button/split-menu-button.component.mjs +7 -18
  34. package/esm2022/table/components/reset-button/reset-button.component.mjs +5 -6
  35. package/esm2022/table/components/table-cell-header-popover/table-cell-header-popover.component.mjs +6 -7
  36. package/esm2022/table/components/table-column-resizer/table-column-resizer.component.mjs +6 -8
  37. package/esm2022/table/components/table-group-row/table-group-row.component.mjs +3 -7
  38. package/esm2022/table/components/table-header-cell-content/table-header-cell-content.component.mjs +29 -13
  39. package/esm2022/table/components/table-header-row/table-header-row.component.mjs +7 -11
  40. package/esm2022/table/components/table-p13-dialog/columns/columns.component.mjs +5 -7
  41. package/esm2022/table/components/table-p13-dialog/filtering/filtering.component.mjs +5 -8
  42. package/esm2022/table/components/table-p13-dialog/grouping/grouping.component.mjs +5 -8
  43. package/esm2022/table/components/table-p13-dialog/sorting/sorting.component.mjs +5 -8
  44. package/esm2022/table/components/table-popping-row/table-popping-row.component.mjs +4 -5
  45. package/esm2022/table/components/table-row/table-row.component.mjs +6 -13
  46. package/esm2022/table/components/table-toolbar/table-toolbar.component.mjs +34 -21
  47. package/esm2022/table/components/table-view-settings-dialog/filtering/filters.component.mjs +5 -8
  48. package/esm2022/table/components/table-view-settings-dialog/grouping/grouping.component.mjs +6 -9
  49. package/esm2022/table/components/table-view-settings-dialog/sorting/sorting.component.mjs +6 -9
  50. package/esm2022/table/table.component.mjs +39 -49
  51. package/esm2022/table-helpers/directives/table-cell-header-popover.directive.mjs +1 -1
  52. package/esm2022/table-helpers/directives/table-cell-resizable.directive.mjs +8 -10
  53. package/esm2022/table-helpers/directives/table-data-source.directive.mjs +6 -6
  54. package/esm2022/table-helpers/services/table-column-resize.service.mjs +14 -17
  55. package/esm2022/table-helpers/services/table-responsive.service.mjs +6 -11
  56. package/esm2022/table-helpers/services/table.service.mjs +20 -18
  57. package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +10 -18
  58. package/esm2022/wizard-generator/base-wizard-generator.mjs +12 -19
  59. package/esm2022/wizard-generator/components/dialog-wizard-generator/dialog-wizard-generator.component.mjs +5 -4
  60. package/esm2022/wizard-generator/components/wizard-body/wizard-body.component.mjs +7 -13
  61. package/esm2022/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.mjs +8 -7
  62. package/fesm2022/fundamental-ngx-platform-form.mjs +137 -174
  63. package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
  64. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +24 -46
  65. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
  66. package/fesm2022/fundamental-ngx-platform-list.mjs +6 -7
  67. package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
  68. package/fesm2022/fundamental-ngx-platform-menu.mjs +3 -3
  69. package/fesm2022/fundamental-ngx-platform-menu.mjs.map +1 -1
  70. package/fesm2022/fundamental-ngx-platform-message-popover.mjs +57 -60
  71. package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
  72. package/fesm2022/fundamental-ngx-platform-search-field.mjs +21 -38
  73. package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
  74. package/fesm2022/fundamental-ngx-platform-settings-generator.mjs +6 -8
  75. package/fesm2022/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
  76. package/fesm2022/fundamental-ngx-platform-shared.mjs +6 -7
  77. package/fesm2022/fundamental-ngx-platform-shared.mjs.map +1 -1
  78. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +9 -15
  79. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
  80. package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs +6 -17
  81. package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs.map +1 -1
  82. package/fesm2022/fundamental-ngx-platform-table-helpers.mjs +42 -52
  83. package/fesm2022/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
  84. package/fesm2022/fundamental-ngx-platform-table.mjs +145 -157
  85. package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
  86. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +9 -17
  87. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
  88. package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs +20 -33
  89. package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs.map +1 -1
  90. package/form/combobox/combobox-mobile/combobox/combobox-mobile.component.d.ts +2 -4
  91. package/form/form-generator/form-generator/form-generator.component.d.ts +1 -1
  92. package/form/form-generator/form-generator.service.d.ts +3 -7
  93. package/form/form-group/form-field/form-field.component.d.ts +12 -12
  94. package/form/form-group/form-group.component.d.ts +35 -31
  95. package/form/multi-combobox/commons/base-multi-combobox.d.ts +2 -2
  96. package/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.d.ts +3 -5
  97. package/form/multi-combobox/multi-combobox.interface.d.ts +3 -3
  98. package/form/multi-input/multi-input-mobile/multi-input-mobile.component.d.ts +2 -4
  99. package/form/radio-group/radio-group.component.d.ts +3 -3
  100. package/form/step-input/base.step-input.d.ts +5 -6
  101. package/form/step-input/step-input-action-button.d.ts +4 -7
  102. package/fundamental-ngx-platform-v0.48.0-rc.23.tgz +0 -0
  103. package/icon-tab-bar/components/icon-tab-bar-base.class.d.ts +1 -1
  104. package/icon-tab-bar/directives/dnd/icon-bar-dnd-container.directive.d.ts +5 -8
  105. package/icon-tab-bar/directives/dnd/icon-bar-dnd-item.directive.d.ts +1 -1
  106. package/icon-tab-bar/directives/dnd/icon-bar-dnd-list.directive.d.ts +1 -1
  107. package/icon-tab-bar/icon-tab-bar.component.d.ts +4 -6
  108. package/list/list.component.d.ts +1 -3
  109. package/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.d.ts +2 -4
  110. package/message-popover/message-popover.component.d.ts +13 -20
  111. package/message-popover/models/message-popover-wrapper.interface.d.ts +2 -2
  112. package/package.json +4 -4
  113. package/search-field/search-field-mobile/search-field/search-field-mobile.component.d.ts +4 -6
  114. package/search-field/search-field.component.d.ts +6 -4
  115. package/settings-generator/settings-generator.service.d.ts +1 -1
  116. package/shared/form/base.input.d.ts +2 -2
  117. package/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.d.ts +4 -8
  118. package/split-menu-button/split-menu-button.component.d.ts +3 -8
  119. package/table/components/reset-button/reset-button.component.d.ts +2 -3
  120. package/table/components/table-cell-header-popover/table-cell-header-popover.component.d.ts +1 -2
  121. package/table/components/table-column-resizer/table-column-resizer.component.d.ts +1 -1
  122. package/table/components/table-group-row/table-group-row.component.d.ts +2 -5
  123. package/table/components/table-header-cell-content/table-header-cell-content.component.d.ts +11 -6
  124. package/table/components/table-header-row/table-header-row.component.d.ts +1 -1
  125. package/table/components/table-p13-dialog/columns/columns.component.d.ts +2 -4
  126. package/table/components/table-p13-dialog/filtering/filtering.component.d.ts +1 -4
  127. package/table/components/table-p13-dialog/grouping/grouping.component.d.ts +1 -4
  128. package/table/components/table-p13-dialog/sorting/sorting.component.d.ts +1 -4
  129. package/table/components/table-row/table-row.component.d.ts +2 -2
  130. package/table/components/table-toolbar/table-toolbar.component.d.ts +20 -7
  131. package/table/components/table-view-settings-dialog/filtering/filters.component.d.ts +1 -4
  132. package/table/components/table-view-settings-dialog/grouping/grouping.component.d.ts +1 -4
  133. package/table/components/table-view-settings-dialog/sorting/sorting.component.d.ts +1 -4
  134. package/table/table.component.d.ts +4 -18
  135. package/table-helpers/directives/table-cell-header-popover.directive.d.ts +2 -3
  136. package/table-helpers/directives/table-cell-resizable.directive.d.ts +1 -1
  137. package/table-helpers/directives/table-data-source.directive.d.ts +1 -1
  138. package/table-helpers/services/table-column-resize.service.d.ts +2 -2
  139. package/table-helpers/services/table-responsive.service.d.ts +3 -5
  140. package/table-helpers/services/table.service.d.ts +12 -10
  141. package/value-help-dialog/value-help-dialog/value-help-dialog.component.d.ts +2 -1
  142. package/wizard-generator/base-wizard-generator.d.ts +4 -8
  143. package/wizard-generator/components/wizard-body/wizard-body.component.d.ts +3 -7
  144. package/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.d.ts +1 -1
  145. package/esm2022/search-field/search-field-mobile/search-field-mobile.module.mjs +0 -16
  146. package/fundamental-ngx-platform-v0.48.0-rc.21.tgz +0 -0
  147. package/search-field/search-field-mobile/search-field-mobile.module.d.ts +0 -7
@@ -1,6 +1,6 @@
1
- import { ChangeDetectorRef, Directive, EventEmitter, Input, Output } from '@angular/core';
2
- import { Subject } from 'rxjs';
3
- import { debounceTime, finalize, takeUntil } from 'rxjs/operators';
1
+ import { ChangeDetectorRef, DestroyRef, Directive, EventEmitter, Input, Output, inject } from '@angular/core';
2
+ import { debounceTime, finalize } from 'rxjs/operators';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
4
  import { ContentDensityMode } from '@fundamental-ngx/core/content-density';
5
5
  import { WizardGeneratorService } from './wizard-generator.service';
6
6
  import * as i0 from "@angular/core";
@@ -169,21 +169,21 @@ export class BaseWizardGenerator {
169
169
  * @hidden
170
170
  * An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing)
171
171
  */
172
- this._onDestroy$ = new Subject();
172
+ this._destroyRef = inject(DestroyRef);
173
173
  /**
174
174
  * @hidden
175
175
  */
176
176
  this._navigationButtonLabels = DEFAULT_WIZARD_NAVIGATION_BUTTONS;
177
177
  this._wizardGeneratorService
178
178
  .getVisibleSteps()
179
- .pipe(debounceTime(10), takeUntil(this._onDestroy$))
179
+ .pipe(debounceTime(10), takeUntilDestroyed(this._destroyRef))
180
180
  .subscribe((visibleSteps) => {
181
181
  this.visibleItems = visibleSteps;
182
182
  this._cd.detectChanges();
183
183
  });
184
184
  this._wizardGeneratorService
185
185
  .trackStepsComponents()
186
- .pipe(debounceTime(10), takeUntil(this._onDestroy$))
186
+ .pipe(debounceTime(10), takeUntilDestroyed(this._destroyRef))
187
187
  .subscribe(async (stepsComponents) => {
188
188
  if (stepsComponents.size === this.items?.length) {
189
189
  await this._setVisibleSteps();
@@ -191,31 +191,24 @@ export class BaseWizardGenerator {
191
191
  });
192
192
  this._wizardGeneratorService
193
193
  .trackAppendToWizardState()
194
- .pipe(takeUntil(this._onDestroy$))
194
+ .pipe(takeUntilDestroyed(this._destroyRef))
195
195
  .subscribe((value) => {
196
196
  this._appendToWizard = value;
197
197
  });
198
198
  this._wizardGeneratorService
199
199
  .trackStepsOrder()
200
- .pipe(takeUntil(this._onDestroy$))
200
+ .pipe(takeUntilDestroyed(this._destroyRef))
201
201
  .subscribe((newNextStep) => {
202
202
  this._nextStepIndex = newNextStep;
203
203
  this._stepsOrderChanged = true;
204
204
  });
205
205
  this._wizardGeneratorService
206
206
  .trackNextStepIndex()
207
- .pipe(takeUntil(this._onDestroy$))
207
+ .pipe(takeUntilDestroyed(this._destroyRef))
208
208
  .subscribe((index) => {
209
209
  this._nextStepIndex = index;
210
210
  });
211
211
  }
212
- /**
213
- * @hidden
214
- */
215
- ngOnDestroy() {
216
- this._onDestroy$.next();
217
- this._onDestroy$.complete();
218
- }
219
212
  /**
220
213
  * @description Reverts Wizard progress one step back.
221
214
  */
@@ -243,7 +236,7 @@ export class BaseWizardGenerator {
243
236
  const nextStepIndex = this._nextStepIndex;
244
237
  this._wizardGeneratorService
245
238
  .validateStepForms()
246
- .pipe(takeUntil(this._onDestroy$))
239
+ .pipe(takeUntilDestroyed(this._destroyRef))
247
240
  .subscribe(async (result) => {
248
241
  if (!result) {
249
242
  return;
@@ -284,7 +277,7 @@ export class BaseWizardGenerator {
284
277
  }
285
278
  this._wizardGeneratorService
286
279
  .validateStepForms()
287
- .pipe(takeUntil(this._onDestroy$))
280
+ .pipe(takeUntilDestroyed(this._destroyRef))
288
281
  .subscribe(async (result) => {
289
282
  if (!result) {
290
283
  return;
@@ -335,4 +328,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
335
328
  }], wizardFinished: [{
336
329
  type: Output
337
330
  }] } });
338
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS13aXphcmQtZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93aXphcmQtZ2VuZXJhdG9yL2Jhc2Utd2l6YXJkLWdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFLM0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQUVwRTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFzQztJQUNoRixNQUFNLEVBQUU7UUFDSixLQUFLLEVBQUUsZUFBZTtRQUN0QixjQUFjLEVBQUUsa0JBQWtCLENBQUMsT0FBTztRQUMxQyxJQUFJLEVBQUUsT0FBTztLQUNoQjtJQUNELE1BQU0sRUFBRTtRQUNKLEtBQUssRUFBRSxXQUFXO1FBQ2xCLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO1FBQzFDLElBQUksRUFBRSxZQUFZO0tBQ3JCO0lBQ0QsTUFBTSxFQUFFO1FBQ0osS0FBSyxFQUFFLFFBQVE7UUFDZixjQUFjLEVBQUUsa0JBQWtCLENBQUMsT0FBTztRQUMxQyxJQUFJLEVBQUUsT0FBTztLQUNoQjtJQUNELE1BQU0sRUFBRTtRQUNKLEtBQUssRUFBRSxRQUFRO1FBQ2YsY0FBYyxFQUFFLGtCQUFrQixDQUFDLE9BQU87UUFDMUMsSUFBSSxFQUFFLFlBQVk7S0FDckI7SUFDRCxNQUFNLEVBQUU7UUFDSixLQUFLLEVB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LEdBQUcsTUFBTSxDQUFDO1FBRTlDLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDL0QsQ0FBQztJQUVEOztPQUVHO0lBQ0ssS0FBSyxDQUFDLGdCQUFnQjtRQUMxQixNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBRTNELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBRTFCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDN0IsQ0FBQzs4R0FuV1EsbUJBQW1CO2tHQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBRC9CLFNBQVM7MkhBTU4sa0JBQWtCO3NCQURqQixLQUFLO2dCQU9GLHNCQUFzQjtzQkFEekIsS0FBSztnQkFZRixLQUFLO3NCQURSLEtBQUs7Z0JBeUJGLGNBQWM7c0JBRGpCLEtBQUs7Z0JBV04saUJBQWlCO3NCQURoQixLQUFLO2dCQVFOLGFBQWE7c0JBRFosS0FBSztnQkFPTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBS04sYUFBYTtzQkFEWixLQUFLO2dCQU9OLGNBQWM7c0JBRGIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbmFsaXplLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlNb2RlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBXaXphcmRTdGVwU3RhdHVzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3dpemFyZCc7XG5pbXBvcnQgeyBXaXphcmRHZW5lcmF0b3JGb3Jtc1ZhbHVlLCBXaXphcmRTdGVwU3VibWl0dGVkRm9ybXMgfSBmcm9tICcuL2ludGVyZmFjZXMvd2l6YXJkLWdlbmVyYXRvci1mb3Jtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUHJlcGFyZWRXaXphcmRHZW5lcmF0b3JJdGVtLCBXaXphcmRHZW5lcmF0b3JJdGVtIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3dpemFyZC1nZW5lcmF0b3ItaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgV2l6YXJkTmF2aWdhdGlvbkJ1dHRvbnMgfSBmcm9tICcuL2ludGVyZmFjZXMvd2l6YXJkLW5hdmlnYXRpb24tYnV0dG9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgV2l6YXJkR2VuZXJhdG9yU2VydmljZSB9IGZyb20gJy4vd2l6YXJkLWdlbmVyYXRvci5zZXJ2aWNlJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGVmYXVsdCBidXR0b24gbGFiZWxzLlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9XSVpBUkRfTkFWSUdBVElPTl9CVVRUT05TOiBSZXF1aXJlZDxXaXphcmROYXZpZ2F0aW9uQnV0dG9ucz4gPSB7XG4gICAgZ29CYWNrOiB7XG4gICAgICAgIGxhYmVsOiAnUHJldmlvdXMgU3RlcCcsXG4gICAgICAgIGNvbnRlbnREZW5zaXR5OiBDb250ZW50RGVuc2l0eU1vZGUuQ09NUEFDVCxcbiAgICAgICAgdHlwZTogJ2dob3N0J1xuICAgIH0sXG4gICAgZ29OZXh0OiB7XG4gICAgICAgIGxhYmVsOiAnTmV4dCBTdGVwJyxcbiAgICAgICAgY29udGVudERlbnNpdHk6IENvbnRlbnREZW5zaXR5TW9kZS5DT01QQUNULFxuICAgICAgICB0eXBlOiAnZW1waGFzaXplZCdcbiAgICB9LFxuICAgIGNhbmNlbDoge1xuICAgICAgICBsYWJlbDogJ0NhbmNlbCcsXG4gICAgICAgIGNvbnRlbnREZW5zaXR5OiBDb250ZW50RGVuc2l0eU1vZGUuQ09NUEFDVCxcbiAgICAgICAgdHlwZTogJ2dob3N0J1xuICAgIH0sXG4gICAgZmluaXNoOiB7XG4gICAgICAgIGxhYmVsOiAnRmluaXNoJyxcbiAgICAgICAgY29udGVudERlbnNpdHk6IENvbnRlbnREZW5zaXR5TW9kZS5DT01QQUNULFxuICAgICAgICB0eXBlOiAnZW1waGFzaXplZCdcbiAgICB9LFxuICAgIHJldmlldzoge1xuICAgICAgICBsYWJlbDogJ1JldmlldycsXG4gICAgICAgIGNvbnRlbnREZW5zaXR5OiBDb250ZW50RGVuc2l0eU1vZGUuQ09NUEFDVCxcbiAgICAgICAgdHlwZTogJ2VtcGhhc2l6ZWQnXG4gICAgfVxufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQmFzZSBXaXphcmQgR2VuZXJhdG9yIGNvbXBvbmVudCB3aXRoIG5lY2Vzc2FyeSBpbnB1dHMgYW5kIG1ldGhvZHMuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIEJhc2VXaXphcmRHZW5lcmF0b3IgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIG9yIG5vdCBhcHBseSByZXNwb25zaXZlIHBhZGRpbmdzIHN0eWxpbmcuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICByZXNwb25zaXZlUGFkZGluZ3MgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEJ1dHRvbiBsYWJlbHMgdG8gYmUgdXNlZCBpbiBXaXphcmQgbmF2aWdhdGlvblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG5hdmlnYXRpb25CdXR0b25MYWJlbHModmFsdWU6IFdpemFyZE5hdmlnYXRpb25CdXR0b25zKSB7XG4gICAgICAgIHRoaXMuX25hdmlnYXRpb25CdXR0b25MYWJlbHMgPSBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX1dJWkFSRF9OQVZJR0FUSU9OX0JVVFRPTlMsIHZhbHVlKTtcbiAgICB9XG4gICAgZ2V0IG5hdmlnYXRpb25CdXR0b25MYWJlbHMoKTogV2l6YXJkTmF2aWdhdGlvbkJ1dHRvbnMge1xuICAgICAgICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvbkJ1dHRvbkxhYmVscztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQXJyYXkgb2YgV2l6YXJkIFN0ZXBzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGl0ZW1zKGl0ZW1zOiBXaXphcmRHZW5lcmF0b3JJdGVtW10pIHtcbiAgICAgICAgdGhpcy53aXphcmRDcmVhdGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuY2xlYXJXaXphcmRTdGVwQ29tcG9uZW50cygpO1xuXG4gICAgICAgIGlmICghaXRlbXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UucHJlcGFyZVdpemFyZEl0ZW1zKGl0ZW1zKS50aGVuKChuZXdJdGVtcykgPT4ge1xuICAgICAgICAgICAgdGhpcy5faXRlbXMgPSBuZXdJdGVtcztcbiAgICAgICAgICAgIHRoaXMuX3Zpc2libGVJdGVtcyA9IG5ld0l0ZW1zO1xuICAgICAgICAgICAgdGhpcy53aXphcmRDcmVhdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldCBpdGVtcygpOiBXaXphcmRHZW5lcmF0b3JJdGVtW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBhcHBlbmQgdGhlIHN0ZXAgdG8gdGhlIHdpemFyZC4gSWYgZmFsc2UsIGVhY2ggc3RlcCB3aWxsIGJlIGRpc3BsYXllZCBvbiBhIGRpZmZlcmVudCBwYWdlLlxuICAgICAqIERlZmF1bHQgaXMgdHJ1ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBhcHBlbmRUb1dpemFyZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLnNldE9yaWdpbmFsQXBwZW5kVG9XaXphcmRTdGF0ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IGFwcGVuZFRvV2l6YXJkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXBwZW5kVG9XaXphcmQ7XG4gICAgfVxuXG4gICAgLyoqIElmIG5hdmlnYXRpb24gYnV0dG9ucyBzaG91bGQgYmUgdmlzaWJsZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIG5hdmlnYXRpb25CdXR0b25zID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBoZWlnaHQgdG8gdXNlIGZvciB0aGUgd2l6YXJkJ3MgY29udGVudCBwYW5lLiBCeSBkZWZhdWx0LCB0aGlzIHZhbHVlIGlzIGNhbGMoMTAwdmggLSAxNDRweCksIHdoZXJlIDE0NHB4XG4gICAgICogaXMgdGhlIGNvbWJpbmVkIGhlaWdodCBvZiB0aGUgc2hlbGxiYXIsIHdpemFyZCBoZWFkZXIgYW5kIHdpemFyZCBmb290ZXIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBjb250ZW50SGVpZ2h0OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEJvb2xlYW4gZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gZGlzcGxheSBTdW1tYXJ5IHN0ZXAgaW4gV2l6YXJkIHByb2dyZXNzIGJhci5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlTdW1tYXJ5U3RlcCA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgYWxsIGZvcm0gaXRlbXMgc2hvdWxkIGhhdmUgaWRlbnRpY2FsIGxheW91dCBwcm92aWRlZCBmb3IgZm9ybSBncm91cC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHVuaWZpZWRMYXlvdXQgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEVtaXRzIHdpemFyZCB2YWx1ZSB3aGVuIGl0J3MgY29tcGxldGVkLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHdpemFyZEZpbmlzaGVkOiBFdmVudEVtaXR0ZXI8V2l6YXJkR2VuZXJhdG9yRm9ybXNWYWx1ZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICAvKipcbiAgICAgKiBGbGFnIGluZGljYXRpbmcgdGhhdCB3aXphcmQgaXMgcmVhZHkgdG8gYmUgc2hvd25cbiAgICAgKi9cbiAgICB3aXphcmRDcmVhdGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSXMgY3VycmVudCBzdGVwIGlzIHN1bW1hcnkgc3RlcC5cbiAgICAgKi9cbiAgICBnZXQgaXNTdW1tYXJ5U3RlcCgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5nZXRDdXJyZW50U3RlcEluZGV4KCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudmlzaWJsZUl0ZW1zW2N1cnJlbnRJbmRleF0/LnN1bW1hcnkgPT09IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEFycmF5IG9mIHZpc2libGUgV2l6YXJkIFN0ZXBzLlxuICAgICAqL1xuICAgIHNldCB2aXNpYmxlSXRlbXMoaXRlbXM6IFByZXBhcmVkV2l6YXJkR2VuZXJhdG9ySXRlbVtdKSB7XG4gICAgICAgIHRoaXMuX3Zpc2libGVJdGVtcyA9IGl0ZW1zO1xuICAgIH1cbiAgICBnZXQgdmlzaWJsZUl0ZW1zKCk6IFByZXBhcmVkV2l6YXJkR2VuZXJhdG9ySXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Zpc2libGVJdGVtcyB8fCB0aGlzLl9pdGVtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciBvciBub3QgV2l6YXJkIGlzIGN1cnJlbnRseSBvbiB0aGUgZmlyc3Qgc3RlcFxuICAgICAqL1xuICAgIGdldCBpc0ZpcnN0U3RlcCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlzaWJsZUl0ZW1zWzBdPy5zdGF0dXMgPT09ICdjdXJyZW50JztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciBvciBub3QgV2l6YXJkIGlzIGN1cnJlbnRseSBvbiB0aGUgbGFzdCBzdGVwXG4gICAgICovXG4gICAgZ2V0IGlzTGFzdFN0ZXAoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGxhc3RTdGVwID0gdGhpcy52aXNpYmxlSXRlbXNbdGhpcy52aXNpYmxlSXRlbXMubGVuZ3RoIC0gMV07XG4gICAgICAgIHJldHVybiBsYXN0U3RlcD8uc3RhdHVzID09PSAnY3VycmVudCcgJiYgIWxhc3RTdGVwLmJyYW5jaGluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIGN1cnJlbnQgc3RlcCBpcyBhIGJyYW5jaGluZyBzdGVwLlxuICAgICAqL1xuICAgIGdldCBpc0JyYW5jaGluZ1N0ZXAoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuZ2V0Q3VycmVudFN0ZXBJbmRleCgpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl92aXNpYmxlSXRlbXNbY3VycmVudEluZGV4XT8uYnJhbmNoaW5nID09PSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIG5leHQgc3RlcCBpcyBhIFN1bW1hcnkgc3RlcC5cbiAgICAgKi9cbiAgICBnZXQgaXNOZXh0U3RlcFN1bW1hcnkoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IG5leHRTdGVwID0gdGhpcy52aXNpYmxlSXRlbXNbdGhpcy5fbmV4dFN0ZXBJbmRleF07XG4gICAgICAgIHJldHVybiBuZXh0U3RlcD8uc3VtbWFyeSA9PT0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiogV2hldGhlciB0aGUgY3VycmVudCBzdGVwIGlzIGNvbXBsZXRlZCAqL1xuICAgIGdldCBpc0N1cnJlbnRTdGVwQ29tcGxldGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLmdldEN1cnJlbnRTdGVwSW5kZXgoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Zpc2libGVJdGVtc1tjdXJyZW50SW5kZXhdPy5jb21wbGV0ZWQgPT09IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIF92aXNpYmxlSXRlbXM6IFByZXBhcmVkV2l6YXJkR2VuZXJhdG9ySXRlbVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9uZXh0U3RlcEluZGV4OiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zdGVwc09yZGVyQ2hhbmdlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2l0ZW1zOiBQcmVwYXJlZFdpemFyZEdlbmVyYXRvckl0ZW1bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hcHBlbmRUb1dpemFyZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2Zvcm1QZW5kaW5nID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQW4gUnhKUyBTdWJqZWN0IHRoYXQgd2lsbCBraWxsIHRoZSBkYXRhIHN0cmVhbSB1cG9uIGNvbXBvbmVudOKAmXMgZGVzdHJ1Y3Rpb24gKGZvciB1bnN1YnNjcmliaW5nKVxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfb25EZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX25hdmlnYXRpb25CdXR0b25MYWJlbHM6IFJlcXVpcmVkPFdpemFyZE5hdmlnYXRpb25CdXR0b25zPiA9IERFRkFVTFRfV0laQVJEX05BVklHQVRJT05fQlVUVE9OUztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBfd2l6YXJkR2VuZXJhdG9yU2VydmljZTogV2l6YXJkR2VuZXJhdG9yU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7XG4gICAgICAgIHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRWaXNpYmxlU3RlcHMoKVxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwKSwgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgodmlzaWJsZVN0ZXBzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlSXRlbXMgPSB2aXNpYmxlU3RlcHM7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZVxuICAgICAgICAgICAgLnRyYWNrU3RlcHNDb21wb25lbnRzKClcbiAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMCksIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKHN0ZXBzQ29tcG9uZW50cykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdGVwc0NvbXBvbmVudHMuc2l6ZSA9PT0gdGhpcy5pdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX3NldFZpc2libGVTdGVwcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2VcbiAgICAgICAgICAgIC50cmFja0FwcGVuZFRvV2l6YXJkU3RhdGUoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9hcHBlbmRUb1dpemFyZCA9IHZhbHVlO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZVxuICAgICAgICAgICAgLnRyYWNrU3RlcHNPcmRlcigpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChuZXdOZXh0U3RlcCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX25leHRTdGVwSW5kZXggPSBuZXdOZXh0U3RlcDtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGVwc09yZGVyQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlXG4gICAgICAgICAgICAudHJhY2tOZXh0U3RlcEluZGV4KClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbmV4dFN0ZXBJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXZlcnRzIFdpemFyZCBwcm9ncmVzcyBvbmUgc3RlcCBiYWNrLlxuICAgICAqL1xuICAgIGdvQmFjaygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3VycmVudFN0ZXBJbmRleCA9IHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuZ2V0Q3VycmVudFN0ZXBJbmRleCgpO1xuICAgICAgICBjb25zdCBwcmV2aW91c1N0ZXBJbmRleCA9IGN1cnJlbnRTdGVwSW5kZXggLSAxO1xuXG4gICAgICAgIGlmICh0aGlzLnZpc2libGVJdGVtc1twcmV2aW91c1N0ZXBJbmRleF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc3RlcHNPcmRlckNoYW5nZWQgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLnZpc2libGVJdGVtc1tjdXJyZW50U3RlcEluZGV4XS5zdGF0dXMgPSAndXBjb21pbmcnO1xuICAgICAgICB0aGlzLnZpc2libGVJdGVtc1twcmV2aW91c1N0ZXBJbmRleF0uc3RhdHVzID0gJ2N1cnJlbnQnO1xuICAgICAgICB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLnNldFZpc2libGVTdGVwcyh0aGlzLnZpc2libGVJdGVtcyk7XG5cbiAgICAgICAgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5zZXROZXh0U3RlcEluZGV4KGN1cnJlbnRTdGVwSW5kZXgpO1xuXG4gICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUHJvZ3Jlc3NlcyB0aGUgV2l6YXJkIG9uZSBzdGVwIGZ1cnRoZXIuXG4gICAgICovXG4gICAgYXN5bmMgZ29OZXh0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5fZm9ybVBlbmRpbmcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwSW5kZXggPSB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLmdldEN1cnJlbnRTdGVwSW5kZXgoKTtcbiAgICAgICAgY29uc3QgbmV4dFN0ZXBJbmRleCA9IHRoaXMuX25leHRTdGVwSW5kZXg7XG5cbiAgICAgICAgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZVxuICAgICAgICAgICAgLnZhbGlkYXRlU3RlcEZvcm1zKClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9zZXRWaXNpYmxlU3RlcHMoKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHN0ZXBzID0gdGhpcy52aXNpYmxlSXRlbXM7XG5cbiAgICAgICAgICAgICAgICBpZiAoc3RlcHNbbmV4dFN0ZXBJbmRleF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5fc3RlcHNPcmRlckNoYW5nZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIHN0ZXBzW2N1cnJlbnRTdGVwSW5kZXhdLnN0YXR1cyA9ICdjb21wbGV0ZWQnO1xuICAgICAgICAgICAgICAgIHN0ZXBzW2N1cnJlbnRTdGVwSW5kZXhdLmNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgc3RlcHNbbmV4dFN0ZXBJbmRleF0uc3RhdHVzID0gJ2N1cnJlbnQnO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5zZXRWaXNpYmxlU3RlcHMoc3RlcHMpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5zZXROZXh0U3RlcEluZGV4KG5leHRTdGVwSW5kZXggKyAxKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTdWJtaXRzIHN0ZXAgZm9ybXMuXG4gICAgICogQHBhcmFtIGN1cnJlbnRTdGVwSW5kZXggY3VycmVudCBzdGVwIGluZGV4LlxuICAgICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPFdpemFyZFN0ZXBTdWJtaXR0ZWRGb3JtcyB8IG51bGw+fSBPYnNlcnZhYmxlIHdpdGggZm9ybSB2YWx1ZXMuXG4gICAgICovXG4gICAgc3VibWl0U3RlcEZvcm1zKGN1cnJlbnRTdGVwSW5kZXg/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFdpemFyZFN0ZXBTdWJtaXR0ZWRGb3JtcyB8IG51bGw+IHtcbiAgICAgICAgdGhpcy5fZm9ybVBlbmRpbmcgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLnN1Ym1pdFN0ZXBGb3JtcyhjdXJyZW50U3RlcEluZGV4KS5waXBlKFxuICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2Zvcm1QZW5kaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDb21wbGV0ZXMgdGhlIHdpemFyZCBhbmQgZW1pdHMgaXQncyBmb3JtYXR0ZWQgdmFsdWUuXG4gICAgICovXG4gICAgYXN5bmMgZmluaXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5pc1N1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICBjb25zdCB3aXphcmRSZXN1bHQgPSBhd2FpdCB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLmdldFdpemFyZEZvcm1WYWx1ZSh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMud2l6YXJkRmluaXNoZWQuZW1pdCh3aXphcmRSZXN1bHQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZVxuICAgICAgICAgICAgLnZhbGlkYXRlU3RlcEZvcm1zKClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCB3aXphcmRSZXN1bHQgPSBhd2FpdCB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLmdldFdpemFyZEZvcm1WYWx1ZSh0cnVlKTtcblxuICAgICAgICAgICAgICAgIHRoaXMud2l6YXJkRmluaXNoZWQuZW1pdCh3aXphcmRSZXN1bHQpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENhbGxiYWNrIGZ1bmN0aW9uIHRvIHVwZGF0ZSBzdGVwcyBzdGF0dXMuXG4gICAgICogQHBhcmFtIHN0ZXBOdW1iZXIgU3RlcCBJRCB0byBiZSB1cGRhdGVkLlxuICAgICAqIEBwYXJhbSBzdGF0dXMgTmV3IHN0ZXAgc3RhdHVzLlxuICAgICAqL1xuICAgIGFzeW5jIHN0ZXBTdGF0dXNDaGFuZ2VkKHN0ZXBJZDogc3RyaW5nLCBzdGF0dXM6IFdpemFyZFN0ZXBTdGF0dXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qgc3RlcEluZGV4ID0gdGhpcy5fdmlzaWJsZUl0ZW1zLmZpbmRJbmRleCgocykgPT4gcy5pZCA9PT0gc3RlcElkKTtcblxuICAgICAgICB0aGlzLl92aXNpYmxlSXRlbXNbc3RlcEluZGV4XS5zdGF0dXMgPSBzdGF0dXM7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5yZWZyZXNoU3RlcFZpc2liaWxpdHkoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBfc2V0VmlzaWJsZVN0ZXBzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLnJlZnJlc2hTdGVwVmlzaWJpbGl0eSgpO1xuXG4gICAgICAgIHRoaXMud2l6YXJkQ3JlYXRlZCA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbn1cbiJdfQ==
331
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS13aXphcmQtZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93aXphcmQtZ2VuZXJhdG9yL2Jhc2Utd2l6YXJkLWdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUcsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUszRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBRXBFOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQXNDO0lBQ2hGLE1BQU0sRUFBRTtRQUNKLEtBQUssRUFBRSxlQUFlO1FBQ3RCLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO1FBQzFDLElBQUksRUFBRSxPQUFPO0tBQ2hCO0lBQ0QsTUFBTSxFQUFFO1FBQ0osS0FBSyxFQUFFLFdBQVc7UUFDbEIsY0FBYyxFQUFFLGtCQUFrQixDQUFDLE9BQU87UUFDMUMsSUFBSSxFQUFFLFlBQVk7S0FDckI7SUFDRCxNQUFNLEVBQUU7UUFDSixLQUFLLEVBQUUsUUFBUTtRQUNmLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO1FBQzFDLElBQUksRUFBRSxPQUFPO0tBQ2hCO0lBQ0QsTUFBTSxFQUFFO1FBQ0osS0FBSyxFQUFFLFFBQVE7UUFDZixjQUFjLEVBQUUsa0JBQWtCLENBQUMsT0FBTztRQUMxQyxJQUFJLEVBQUUsWUFBWTtLQUNyQjtJQUNELE1BQU0sRUFB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OztPQUVHO0lBQ0ssS0FBSyxDQUFDLGdCQUFnQjtRQUMxQixNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBRTNELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBRTFCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDN0IsQ0FBQzs4R0EzVlEsbUJBQW1CO2tHQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBRC9CLFNBQVM7MkhBTU4sa0JBQWtCO3NCQURqQixLQUFLO2dCQU9GLHNCQUFzQjtzQkFEekIsS0FBSztnQkFZRixLQUFLO3NCQURSLEtBQUs7Z0JBeUJGLGNBQWM7c0JBRGpCLEtBQUs7Z0JBV04saUJBQWlCO3NCQURoQixLQUFLO2dCQVFOLGFBQWE7c0JBRFosS0FBSztnQkFPTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBS04sYUFBYTtzQkFEWixLQUFLO2dCQU9OLGNBQWM7c0JBRGIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEZXN0cm95UmVmLCBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbmFsaXplIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5TW9kZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IHsgV2l6YXJkU3RlcFN0YXR1cyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS93aXphcmQnO1xuaW1wb3J0IHsgV2l6YXJkR2VuZXJhdG9yRm9ybXNWYWx1ZSwgV2l6YXJkU3RlcFN1Ym1pdHRlZEZvcm1zIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3dpemFyZC1nZW5lcmF0b3ItZm9ybXMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFByZXBhcmVkV2l6YXJkR2VuZXJhdG9ySXRlbSwgV2l6YXJkR2VuZXJhdG9ySXRlbSB9IGZyb20gJy4vaW50ZXJmYWNlcy93aXphcmQtZ2VuZXJhdG9yLWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IFdpemFyZE5hdmlnYXRpb25CdXR0b25zIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3dpemFyZC1uYXZpZ2F0aW9uLWJ1dHRvbnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IFdpemFyZEdlbmVyYXRvclNlcnZpY2UgfSBmcm9tICcuL3dpemFyZC1nZW5lcmF0b3Iuc2VydmljZSc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERlZmF1bHQgYnV0dG9uIGxhYmVscy5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfV0laQVJEX05BVklHQVRJT05fQlVUVE9OUzogUmVxdWlyZWQ8V2l6YXJkTmF2aWdhdGlvbkJ1dHRvbnM+ID0ge1xuICAgIGdvQmFjazoge1xuICAgICAgICBsYWJlbDogJ1ByZXZpb3VzIFN0ZXAnLFxuICAgICAgICBjb250ZW50RGVuc2l0eTogQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1QsXG4gICAgICAgIHR5cGU6ICdnaG9zdCdcbiAgICB9LFxuICAgIGdvTmV4dDoge1xuICAgICAgICBsYWJlbDogJ05leHQgU3RlcCcsXG4gICAgICAgIGNvbnRlbnREZW5zaXR5OiBDb250ZW50RGVuc2l0eU1vZGUuQ09NUEFDVCxcbiAgICAgICAgdHlwZTogJ2VtcGhhc2l6ZWQnXG4gICAgfSxcbiAgICBjYW5jZWw6IHtcbiAgICAgICAgbGFiZWw6ICdDYW5jZWwnLFxuICAgICAgICBjb250ZW50RGVuc2l0eTogQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1QsXG4gICAgICAgIHR5cGU6ICdnaG9zdCdcbiAgICB9LFxuICAgIGZpbmlzaDoge1xuICAgICAgICBsYWJlbDogJ0ZpbmlzaCcsXG4gICAgICAgIGNvbnRlbnREZW5zaXR5OiBDb250ZW50RGVuc2l0eU1vZGUuQ09NUEFDVCxcbiAgICAgICAgdHlwZTogJ2VtcGhhc2l6ZWQnXG4gICAgfSxcbiAgICByZXZpZXc6IHtcbiAgICAgICAgbGFiZWw6ICdSZXZpZXcnLFxuICAgICAgICBjb250ZW50RGVuc2l0eTogQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1QsXG4gICAgICAgIHR5cGU6ICdlbXBoYXNpemVkJ1xuICAgIH1cbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEJhc2UgV2l6YXJkIEdlbmVyYXRvciBjb21wb25lbnQgd2l0aCBuZWNlc3NhcnkgaW5wdXRzIGFuZCBtZXRob2RzLlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBCYXNlV2l6YXJkR2VuZXJhdG9yIHtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciBvciBub3QgYXBwbHkgcmVzcG9uc2l2ZSBwYWRkaW5ncyBzdHlsaW5nLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVzcG9uc2l2ZVBhZGRpbmdzID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBCdXR0b24gbGFiZWxzIHRvIGJlIHVzZWQgaW4gV2l6YXJkIG5hdmlnYXRpb25cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBuYXZpZ2F0aW9uQnV0dG9uTGFiZWxzKHZhbHVlOiBXaXphcmROYXZpZ2F0aW9uQnV0dG9ucykge1xuICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQnV0dG9uTGFiZWxzID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9XSVpBUkRfTkFWSUdBVElPTl9CVVRUT05TLCB2YWx1ZSk7XG4gICAgfVxuICAgIGdldCBuYXZpZ2F0aW9uQnV0dG9uTGFiZWxzKCk6IFdpemFyZE5hdmlnYXRpb25CdXR0b25zIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25hdmlnYXRpb25CdXR0b25MYWJlbHM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEFycmF5IG9mIFdpemFyZCBTdGVwcy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBpdGVtcyhpdGVtczogV2l6YXJkR2VuZXJhdG9ySXRlbVtdKSB7XG4gICAgICAgIHRoaXMud2l6YXJkQ3JlYXRlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLmNsZWFyV2l6YXJkU3RlcENvbXBvbmVudHMoKTtcblxuICAgICAgICBpZiAoIWl0ZW1zKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLnByZXBhcmVXaXphcmRJdGVtcyhpdGVtcykudGhlbigobmV3SXRlbXMpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1zID0gbmV3SXRlbXM7XG4gICAgICAgICAgICB0aGlzLl92aXNpYmxlSXRlbXMgPSBuZXdJdGVtcztcbiAgICAgICAgICAgIHRoaXMud2l6YXJkQ3JlYXRlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXQgaXRlbXMoKTogV2l6YXJkR2VuZXJhdG9ySXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gYXBwZW5kIHRoZSBzdGVwIHRvIHRoZSB3aXphcmQuIElmIGZhbHNlLCBlYWNoIHN0ZXAgd2lsbCBiZSBkaXNwbGF5ZWQgb24gYSBkaWZmZXJlbnQgcGFnZS5cbiAgICAgKiBEZWZhdWx0IGlzIHRydWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgYXBwZW5kVG9XaXphcmQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5zZXRPcmlnaW5hbEFwcGVuZFRvV2l6YXJkU3RhdGUodmFsdWUpO1xuICAgIH1cblxuICAgIGdldCBhcHBlbmRUb1dpemFyZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FwcGVuZFRvV2l6YXJkO1xuICAgIH1cblxuICAgIC8qKiBJZiBuYXZpZ2F0aW9uIGJ1dHRvbnMgc2hvdWxkIGJlIHZpc2libGUuICovXG4gICAgQElucHV0KClcbiAgICBuYXZpZ2F0aW9uQnV0dG9ucyA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gaGVpZ2h0IHRvIHVzZSBmb3IgdGhlIHdpemFyZCdzIGNvbnRlbnQgcGFuZS4gQnkgZGVmYXVsdCwgdGhpcyB2YWx1ZSBpcyBjYWxjKDEwMHZoIC0gMTQ0cHgpLCB3aGVyZSAxNDRweFxuICAgICAqIGlzIHRoZSBjb21iaW5lZCBoZWlnaHQgb2YgdGhlIHNoZWxsYmFyLCB3aXphcmQgaGVhZGVyIGFuZCB3aXphcmQgZm9vdGVyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29udGVudEhlaWdodDogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBCb29sZWFuIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRvIGRpc3BsYXkgU3VtbWFyeSBzdGVwIGluIFdpemFyZCBwcm9ncmVzcyBiYXIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5U3VtbWFyeVN0ZXAgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIGFsbCBmb3JtIGl0ZW1zIHNob3VsZCBoYXZlIGlkZW50aWNhbCBsYXlvdXQgcHJvdmlkZWQgZm9yIGZvcm0gZ3JvdXAuICovXG4gICAgQElucHV0KClcbiAgICB1bmlmaWVkTGF5b3V0ID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBFbWl0cyB3aXphcmQgdmFsdWUgd2hlbiBpdCdzIGNvbXBsZXRlZC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICB3aXphcmRGaW5pc2hlZDogRXZlbnRFbWl0dGVyPFdpemFyZEdlbmVyYXRvckZvcm1zVmFsdWU+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLyoqXG4gICAgICogRmxhZyBpbmRpY2F0aW5nIHRoYXQgd2l6YXJkIGlzIHJlYWR5IHRvIGJlIHNob3duXG4gICAgICovXG4gICAgd2l6YXJkQ3JlYXRlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIElzIGN1cnJlbnQgc3RlcCBpcyBzdW1tYXJ5IHN0ZXAuXG4gICAgICovXG4gICAgZ2V0IGlzU3VtbWFyeVN0ZXAoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuZ2V0Q3VycmVudFN0ZXBJbmRleCgpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnZpc2libGVJdGVtc1tjdXJyZW50SW5kZXhdPy5zdW1tYXJ5ID09PSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBcnJheSBvZiB2aXNpYmxlIFdpemFyZCBTdGVwcy5cbiAgICAgKi9cbiAgICBzZXQgdmlzaWJsZUl0ZW1zKGl0ZW1zOiBQcmVwYXJlZFdpemFyZEdlbmVyYXRvckl0ZW1bXSkge1xuICAgICAgICB0aGlzLl92aXNpYmxlSXRlbXMgPSBpdGVtcztcbiAgICB9XG4gICAgZ2V0IHZpc2libGVJdGVtcygpOiBQcmVwYXJlZFdpemFyZEdlbmVyYXRvckl0ZW1bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92aXNpYmxlSXRlbXMgfHwgdGhpcy5faXRlbXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFdoZXRoZXIgb3Igbm90IFdpemFyZCBpcyBjdXJyZW50bHkgb24gdGhlIGZpcnN0IHN0ZXBcbiAgICAgKi9cbiAgICBnZXQgaXNGaXJzdFN0ZXAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpc2libGVJdGVtc1swXT8uc3RhdHVzID09PSAnY3VycmVudCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFdoZXRoZXIgb3Igbm90IFdpemFyZCBpcyBjdXJyZW50bHkgb24gdGhlIGxhc3Qgc3RlcFxuICAgICAqL1xuICAgIGdldCBpc0xhc3RTdGVwKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBsYXN0U3RlcCA9IHRoaXMudmlzaWJsZUl0ZW1zW3RoaXMudmlzaWJsZUl0ZW1zLmxlbmd0aCAtIDFdO1xuICAgICAgICByZXR1cm4gbGFzdFN0ZXA/LnN0YXR1cyA9PT0gJ2N1cnJlbnQnICYmICFsYXN0U3RlcC5icmFuY2hpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBjdXJyZW50IHN0ZXAgaXMgYSBicmFuY2hpbmcgc3RlcC5cbiAgICAgKi9cbiAgICBnZXQgaXNCcmFuY2hpbmdTdGVwKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLmdldEN1cnJlbnRTdGVwSW5kZXgoKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZUl0ZW1zW2N1cnJlbnRJbmRleF0/LmJyYW5jaGluZyA9PT0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBuZXh0IHN0ZXAgaXMgYSBTdW1tYXJ5IHN0ZXAuXG4gICAgICovXG4gICAgZ2V0IGlzTmV4dFN0ZXBTdW1tYXJ5KCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBuZXh0U3RlcCA9IHRoaXMudmlzaWJsZUl0ZW1zW3RoaXMuX25leHRTdGVwSW5kZXhdO1xuICAgICAgICByZXR1cm4gbmV4dFN0ZXA/LnN1bW1hcnkgPT09IHRydWU7XG4gICAgfVxuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGN1cnJlbnQgc3RlcCBpcyBjb21wbGV0ZWQgKi9cbiAgICBnZXQgaXNDdXJyZW50U3RlcENvbXBsZXRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5nZXRDdXJyZW50U3RlcEluZGV4KCk7XG4gICAgICAgIHJldHVybiB0aGlzLl92aXNpYmxlSXRlbXNbY3VycmVudEluZGV4XT8uY29tcGxldGVkID09PSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBfdmlzaWJsZUl0ZW1zOiBQcmVwYXJlZFdpemFyZEdlbmVyYXRvckl0ZW1bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbmV4dFN0ZXBJbmRleDogbnVtYmVyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc3RlcHNPcmRlckNoYW5nZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9pdGVtczogUHJlcGFyZWRXaXphcmRHZW5lcmF0b3JJdGVtW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYXBwZW5kVG9XaXphcmQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9mb3JtUGVuZGluZyA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEFuIFJ4SlMgU3ViamVjdCB0aGF0IHdpbGwga2lsbCB0aGUgZGF0YSBzdHJlYW0gdXBvbiBjb21wb25lbnTigJlzIGRlc3RydWN0aW9uIChmb3IgdW5zdWJzY3JpYmluZylcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX25hdmlnYXRpb25CdXR0b25MYWJlbHM6IFJlcXVpcmVkPFdpemFyZE5hdmlnYXRpb25CdXR0b25zPiA9IERFRkFVTFRfV0laQVJEX05BVklHQVRJT05fQlVUVE9OUztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBfd2l6YXJkR2VuZXJhdG9yU2VydmljZTogV2l6YXJkR2VuZXJhdG9yU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7XG4gICAgICAgIHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRWaXNpYmxlU3RlcHMoKVxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgodmlzaWJsZVN0ZXBzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlSXRlbXMgPSB2aXNpYmxlU3RlcHM7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZVxuICAgICAgICAgICAgLnRyYWNrU3RlcHNDb21wb25lbnRzKClcbiAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKHN0ZXBzQ29tcG9uZW50cykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdGVwc0NvbXBvbmVudHMuc2l6ZSA9PT0gdGhpcy5pdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX3NldFZpc2libGVTdGVwcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2VcbiAgICAgICAgICAgIC50cmFja0FwcGVuZFRvV2l6YXJkU3RhdGUoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9hcHBlbmRUb1dpemFyZCA9IHZhbHVlO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZVxuICAgICAgICAgICAgLnRyYWNrU3RlcHNPcmRlcigpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChuZXdOZXh0U3RlcCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX25leHRTdGVwSW5kZXggPSBuZXdOZXh0U3RlcDtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGVwc09yZGVyQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlXG4gICAgICAgICAgICAudHJhY2tOZXh0U3RlcEluZGV4KClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbmV4dFN0ZXBJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJldmVydHMgV2l6YXJkIHByb2dyZXNzIG9uZSBzdGVwIGJhY2suXG4gICAgICovXG4gICAgZ29CYWNrKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50U3RlcEluZGV4ID0gdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5nZXRDdXJyZW50U3RlcEluZGV4KCk7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzU3RlcEluZGV4ID0gY3VycmVudFN0ZXBJbmRleCAtIDE7XG5cbiAgICAgICAgaWYgKHRoaXMudmlzaWJsZUl0ZW1zW3ByZXZpb3VzU3RlcEluZGV4XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zdGVwc09yZGVyQ2hhbmdlZCA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMudmlzaWJsZUl0ZW1zW2N1cnJlbnRTdGVwSW5kZXhdLnN0YXR1cyA9ICd1cGNvbWluZyc7XG4gICAgICAgIHRoaXMudmlzaWJsZUl0ZW1zW3ByZXZpb3VzU3RlcEluZGV4XS5zdGF0dXMgPSAnY3VycmVudCc7XG4gICAgICAgIHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2Uuc2V0VmlzaWJsZVN0ZXBzKHRoaXMudmlzaWJsZUl0ZW1zKTtcblxuICAgICAgICB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLnNldE5leHRTdGVwSW5kZXgoY3VycmVudFN0ZXBJbmRleCk7XG5cbiAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQcm9ncmVzc2VzIHRoZSBXaXphcmQgb25lIHN0ZXAgZnVydGhlci5cbiAgICAgKi9cbiAgICBhc3luYyBnb05leHQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLl9mb3JtUGVuZGluZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3VycmVudFN0ZXBJbmRleCA9IHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuZ2V0Q3VycmVudFN0ZXBJbmRleCgpO1xuICAgICAgICBjb25zdCBuZXh0U3RlcEluZGV4ID0gdGhpcy5fbmV4dFN0ZXBJbmRleDtcblxuICAgICAgICB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlXG4gICAgICAgICAgICAudmFsaWRhdGVTdGVwRm9ybXMoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShhc3luYyAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX3NldFZpc2libGVTdGVwcygpO1xuXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RlcHMgPSB0aGlzLnZpc2libGVJdGVtcztcblxuICAgICAgICAgICAgICAgIGlmIChzdGVwc1tuZXh0U3RlcEluZGV4XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9zdGVwc09yZGVyQ2hhbmdlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgc3RlcHNbY3VycmVudFN0ZXBJbmRleF0uc3RhdHVzID0gJ2NvbXBsZXRlZCc7XG4gICAgICAgICAgICAgICAgc3RlcHNbY3VycmVudFN0ZXBJbmRleF0uY29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzdGVwc1tuZXh0U3RlcEluZGV4XS5zdGF0dXMgPSAnY3VycmVudCc7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLnNldFZpc2libGVTdGVwcyhzdGVwcyk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLnNldE5leHRTdGVwSW5kZXgobmV4dFN0ZXBJbmRleCArIDEpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFN1Ym1pdHMgc3RlcCBmb3Jtcy5cbiAgICAgKiBAcGFyYW0gY3VycmVudFN0ZXBJbmRleCBjdXJyZW50IHN0ZXAgaW5kZXguXG4gICAgICogQHJldHVybnMge09ic2VydmFibGU8V2l6YXJkU3RlcFN1Ym1pdHRlZEZvcm1zIHwgbnVsbD59IE9ic2VydmFibGUgd2l0aCBmb3JtIHZhbHVlcy5cbiAgICAgKi9cbiAgICBzdWJtaXRTdGVwRm9ybXMoY3VycmVudFN0ZXBJbmRleD86IHN0cmluZyk6IE9ic2VydmFibGU8V2l6YXJkU3RlcFN1Ym1pdHRlZEZvcm1zIHwgbnVsbD4ge1xuICAgICAgICB0aGlzLl9mb3JtUGVuZGluZyA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2Uuc3VibWl0U3RlcEZvcm1zKGN1cnJlbnRTdGVwSW5kZXgpLnBpcGUoXG4gICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZm9ybVBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENvbXBsZXRlcyB0aGUgd2l6YXJkIGFuZCBlbWl0cyBpdCdzIGZvcm1hdHRlZCB2YWx1ZS5cbiAgICAgKi9cbiAgICBhc3luYyBmaW5pc2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLmlzU3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgIGNvbnN0IHdpemFyZFJlc3VsdCA9IGF3YWl0IHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuZ2V0V2l6YXJkRm9ybVZhbHVlKHRydWUpO1xuICAgICAgICAgICAgdGhpcy53aXphcmRGaW5pc2hlZC5lbWl0KHdpemFyZFJlc3VsdCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlXG4gICAgICAgICAgICAudmFsaWRhdGVTdGVwRm9ybXMoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShhc3luYyAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHdpemFyZFJlc3VsdCA9IGF3YWl0IHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuZ2V0V2l6YXJkRm9ybVZhbHVlKHRydWUpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy53aXphcmRGaW5pc2hlZC5lbWl0KHdpemFyZFJlc3VsdCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ2FsbGJhY2sgZnVuY3Rpb24gdG8gdXBkYXRlIHN0ZXBzIHN0YXR1cy5cbiAgICAgKiBAcGFyYW0gc3RlcE51bWJlciBTdGVwIElEIHRvIGJlIHVwZGF0ZWQuXG4gICAgICogQHBhcmFtIHN0YXR1cyBOZXcgc3RlcCBzdGF0dXMuXG4gICAgICovXG4gICAgYXN5bmMgc3RlcFN0YXR1c0NoYW5nZWQoc3RlcElkOiBzdHJpbmcsIHN0YXR1czogV2l6YXJkU3RlcFN0YXR1cyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBzdGVwSW5kZXggPSB0aGlzLl92aXNpYmxlSXRlbXMuZmluZEluZGV4KChzKSA9PiBzLmlkID09PSBzdGVwSWQpO1xuXG4gICAgICAgIHRoaXMuX3Zpc2libGVJdGVtc1tzdGVwSW5kZXhdLnN0YXR1cyA9IHN0YXR1cztcblxuICAgICAgICBhd2FpdCB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLnJlZnJlc2hTdGVwVmlzaWJpbGl0eSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIGFzeW5jIF9zZXRWaXNpYmxlU3RlcHMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UucmVmcmVzaFN0ZXBWaXNpYmlsaXR5KCk7XG5cbiAgICAgICAgdGhpcy53aXphcmRDcmVhdGVkID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxufVxuIl19
@@ -1,8 +1,9 @@
1
1
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, TemplateRef, ViewChild, ViewEncapsulation, inject } from '@angular/core';
2
2
  import { FormGeneratorService } from '@fundamental-ngx/platform/form';
3
- import { filter, takeUntil } from 'rxjs/operators';
3
+ import { filter } from 'rxjs/operators';
4
4
  import { CdkScrollable } from '@angular/cdk/overlay';
5
5
  import { NgTemplateOutlet } from '@angular/common';
6
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
7
  import { InitialFocusDirective } from '@fundamental-ngx/cdk/utils';
7
8
  import { BarModule } from '@fundamental-ngx/core/bar';
8
9
  import { ContentDensityDirective } from '@fundamental-ngx/core/content-density';
@@ -97,7 +98,7 @@ export class DialogWizardGeneratorComponent extends BaseWizardGenerator {
97
98
  const template = this.confirmationDialogTemplate || this.defaultConfirmationDialogTemplate;
98
99
  const messageBoxRef = this._messageBoxService.open(template, { responsivePadding: true });
99
100
  messageBoxRef.afterClosed
100
- .pipe(filter((result) => result), takeUntil(this._onDestroy$))
101
+ .pipe(filter((result) => result), takeUntilDestroyed(this._destroyRef))
101
102
  .subscribe(() => {
102
103
  this._dialogRef.dismiss();
103
104
  });
@@ -113,7 +114,7 @@ export class DialogWizardGeneratorComponent extends BaseWizardGenerator {
113
114
  }
114
115
  const currentStepId = this._wizardGeneratorService.getCurrentStepId();
115
116
  this.submitStepForms(currentStepId)
116
- .pipe(takeUntil(this._onDestroy$))
117
+ .pipe(takeUntilDestroyed(this._destroyRef))
117
118
  .subscribe(async (result) => {
118
119
  if (result && Object.values(result).some((r) => !r.success)) {
119
120
  return;
@@ -144,4 +145,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
144
145
  type: ViewChild,
145
146
  args: ['defaultConfirmationDialogTemplate']
146
147
  }] } });
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXdpemFyZC1nZW5lcmF0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93aXphcmQtZ2VuZXJhdG9yL2NvbXBvbmVudHMvZGlhbG9nLXdpemFyZC1nZW5lcmF0b3IvZGlhbG9nLXdpemFyZC1nZW5lcmF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93aXphcmQtZ2VuZXJhdG9yL2NvbXBvbmVudHMvZGlhbG9nLXdpemFyZC1nZW5lcmF0b3IvZGlhbG9nLXdpemFyZC1nZW5lcmF0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBR2xFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7OztBQXVCM0UsTUFBTSxPQUFPLDhCQUErQixTQUFRLG1CQUFtQjtJQTBEbkUsY0FBYztJQUNkLFlBQ0ksdUJBQStDLEVBQy9DLEdBQXNCLEVBQ2QsVUFBdUM7UUFFL0MsS0FBSyxDQUFDLHVCQUF1QixFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRjVCLGVBQVUsR0FBVixVQUFVLENBQTZCO1FBckRuRDs7V0FFRztRQUNILDJCQUFzQixHQUFHLGlEQUFpRCxDQUFDO1FBQzNFOztXQUVHO1FBQ0gsZ0NBQTJCLEdBQUcsU0FBUyxDQUFDO1FBQ3hDOztXQUVHO1FBQ0gsaUNBQTRCLEdBQUcsUUFBUSxDQUFDO1FBbUN4QyxjQUFjO1FBQ0csdUJBQWtCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUE2RmhFOztXQUVHO1FBQ0gsY0FBUyxHQUFlLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM1Qzs7V0FFRztRQUNILGNBQVMsR0FBd0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRXJEOztXQUVHO1FBQ0gsY0FBUyxHQUF3QixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFckQ7O1dBRUc7UUFDSCxjQUFTLEdBQWUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBcEd4QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN4QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN4QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUMxRCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLElBQUksRUFBRSxDQUFDO1FBQ2hGLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3hELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUNsRSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUM7UUFDdEUsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1FBQ3RFLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztRQUN0RSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUM7UUFDdEUsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDO1FBQ2xGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxLQUFLLENBQUM7UUFDM0UsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBQ3BFLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztRQUV0RSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsS0FBSyxTQUFTLEVBQUU7WUFDbEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7U0FDM0Q7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGlCQUFpQixLQUFLLFNBQVMsRUFBRTtZQUN0RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7U0FDbkU7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQzdDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztTQUM3RTtRQUVELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLEVBQUU7WUFDbkQsSUFBSSxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDO1NBQ3pGO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQywyQkFBMkIsRUFBRTtZQUNsRCxJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUM7U0FDdkY7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNO1FBQ0YsSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsZ0JBQWdCLEVBQUUsRUFBRTtZQUNqRCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRTFCLE9BQU87U0FDVjtRQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQywwQkFBMEIsSUFBSSxJQUFJLENBQUMsaUNBQWlDLENBQUM7UUFFM0YsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRTFGLGFBQWEsQ0FBQyxXQUFXO2FBQ3BCLElBQUksQ0FDRCxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUMxQixTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUM5QjthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLE1BQU07UUFDUixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDcEIsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDcEMsT0FBTztTQUNWO1FBRUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDdEUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUM7YUFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDakMsU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN4QixJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3pELE9BQU87YUFDVjtZQUVELE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pGLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQzs4R0FuSlEsOEJBQThCO2tHQUE5Qiw4QkFBOEIsMEVBaEI1QixDQUFDLHNCQUFzQixFQUFFLG9CQUFvQixDQUFDLHlNQ2pDN0QseTZNQTZIQSwyQ0R6RlEsWUFBWSxzM0JBSVosbUJBQW1CLDZlQUNuQixTQUFTLCtCQUNULGVBQWUseVJBQ2YsdUJBQXVCLG9kQUN2QixnQkFBZ0IsbUpBQ2hCLGdCQUFnQjs7MkZBSVgsOEJBQThCO2tCQXJCMUMsU0FBUzsrQkFDSSw2QkFBNkIsaUJBRXhCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxzQkFBc0IsRUFBRSxvQkFBb0IsQ0FBQyxjQUM3QyxJQUFJLFdBQ1A7d0JBQ0wsWUFBWTt3QkFDWixjQUFjO3dCQUNkLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLFNBQVM7d0JBQ1QsZUFBZTt3QkFDZix1QkFBdUI7d0JBQ3ZCLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixxQkFBcUI7cUJBQ3hCO21KQUkrQyxpQ0FBaUM7c0JBQWhGLFNBQVM7dUJBQUMsbUNBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1HZW5lcmF0b3JTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9mb3JtJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbml0aWFsRm9jdXNEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBCYXJNb2R1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYmFyJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBEaWFsb2dNb2R1bGUsIERpYWxvZ1JlZiB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuaW1wb3J0IHsgTWVzc2FnZUJveE1vZHVsZSwgTWVzc2FnZUJveFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbWVzc2FnZS1ib3gnO1xuaW1wb3J0IHsgU2Nyb2xsYmFyRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3Njcm9sbGJhcic7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90aXRsZSc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL2J1dHRvbic7XG5pbXBvcnQgeyBCYXNlV2l6YXJkR2VuZXJhdG9yIH0gZnJvbSAnLi4vLi4vYmFzZS13aXphcmQtZ2VuZXJhdG9yJztcbmltcG9ydCB7IFdpemFyZERpYWxvZ0RhdGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3dpemFyZC1kaWFsb2ctZGF0YS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgV2l6YXJkVGl0bGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3dpemFyZC10aXRsZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgV2l6YXJkR2VuZXJhdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL3dpemFyZC1nZW5lcmF0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBXaXphcmRCb2R5Q29tcG9uZW50IH0gZnJvbSAnLi4vd2l6YXJkLWJvZHkvd2l6YXJkLWJvZHkuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtZGlhbG9nLXdpemFyZC1nZW5lcmF0b3InLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kaWFsb2ctd2l6YXJkLWdlbmVyYXRvci5jb21wb25lbnQuaHRtbCcsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtXaXphcmRHZW5lcmF0b3JTZXJ2aWNlLCBGb3JtR2VuZXJhdG9yU2VydmljZV0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIERpYWxvZ01vZHVsZSxcbiAgICAgICAgVGl0bGVDb21wb25lbnQsXG4gICAgICAgIENka1Njcm9sbGFibGUsXG4gICAgICAgIFNjcm9sbGJhckRpcmVjdGl2ZSxcbiAgICAgICAgV2l6YXJkQm9keUNvbXBvbmVudCxcbiAgICAgICAgQmFyTW9kdWxlLFxuICAgICAgICBCdXR0b25Db21wb25lbnQsXG4gICAgICAgIENvbnRlbnREZW5zaXR5RGlyZWN0aXZlLFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBNZXNzYWdlQm94TW9kdWxlLFxuICAgICAgICBJbml0aWFsRm9jdXNEaXJlY3RpdmVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIERpYWxvZ1dpemFyZEdlbmVyYXRvckNvbXBvbmVudCBleHRlbmRzIEJhc2VXaXphcmRHZW5lcmF0b3Ige1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnZGVmYXVsdENvbmZpcm1hdGlvbkRpYWxvZ1RlbXBsYXRlJykgZGVmYXVsdENvbmZpcm1hdGlvbkRpYWxvZ1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2l6YXJkcyBkaWFsb2cgdGl0bGUgY29uZmlndXJhdGlvbi5cbiAgICAgKi9cbiAgICB0aXRsZTogV2l6YXJkVGl0bGU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29uZmlybWF0aW9uIG1lc3NhZ2Ugd2hlbiB3aXphcmQgZGlhbG9nIGNsb3NlIGJ1dHRvbiBoYXMgYmVlbiBjbGlja2VkLlxuICAgICAqL1xuICAgIGNvbmZpcm1hdGlvbkRpYWxvZ1RleHQgPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRpc2NhcmQgeW91ciBwcm9ncmVzcz8nO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDb25maXJtIGJ1dHRvbiB0ZXh0IGZvciBjbG9zZSBjb25maXJtYXRpb24gZGlhbG9nLlxuICAgICAqL1xuICAgIGNvbmZpcm1hdGlvbkRpYWxvZ0Nsb3NlVGV4dCA9ICdDb25maXJtJztcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ2FuY2VsIGJ1dHRvbiB0ZXh0IGZvciBjbG9zZSBjb25maXJtYXRpb24gZGlhbG9nLlxuICAgICAqL1xuICAgIGNvbmZpcm1hdGlvbkRpYWxvZ0NhbmNlbFRleHQgPSAnQ2FuY2VsJztcblxuICAgIC8qKlxuICAgICAqIFVzZXItZGVmaW5lZCB0ZW1wbGF0ZSBmb3IgXCJHbyBOZXh0XCIgYnV0dG9uLlxuICAgICAqL1xuICAgIGdvTmV4dEJ1dHRvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogVXNlci1kZWZpbmVkIHRlbXBsYXRlIGZvciBcIkdvIEJhY2tcIiBidXR0b24uXG4gICAgICovXG4gICAgZ29CYWNrQnV0dG9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBVc2VyLWRlZmluZWQgdGVtcGxhdGUgZm9yIFwiRmluaXNoXCIgYnV0dG9uLlxuICAgICAqL1xuICAgIGZpbmlzaEJ1dHRvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogVXNlci1kZWZpbmVkIHRlbXBsYXRlIGZvciBcIkNhbmNlbFwiIGJ1dHRvbi5cbiAgICAgKi9cbiAgICBjYW5jZWxCdXR0b25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKlxuICAgICAqIFVzZXItZGVmaW5lZCB0ZW1wbGF0ZSBmb3IgY2FuY2VsbGF0aW9uIGNvbmZpcm1hdGlvbiBkaWFsb2cuXG4gICAgICovXG4gICAgY29uZmlybWF0aW9uRGlhbG9nVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBVc2VyLWRlZmluZWQgdGVtcGxhdGUgZm9yIHN1bW1hcnkgc3RlcC5cbiAgICAgKi9cbiAgICBzdW1tYXJ5U3RlcFRlbXBsYXRlPzogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqIFVzZXItZGVmaW5lZCB0ZW1wbGF0ZSBmb3IgXCJSZXZpZXdcIiBidXR0b24gKi9cbiAgICByZXZpZXdCdXR0b25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbWVzc2FnZUJveFNlcnZpY2UgPSBpbmplY3QoTWVzc2FnZUJveFNlcnZpY2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgX3dpemFyZEdlbmVyYXRvclNlcnZpY2U6IFdpemFyZEdlbmVyYXRvclNlcnZpY2UsXG4gICAgICAgIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgX2RpYWxvZ1JlZjogRGlhbG9nUmVmPFdpemFyZERpYWxvZ0RhdGE+XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKF93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLCBfY2QpO1xuXG4gICAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5pdGVtcztcbiAgICAgICAgdGhpcy50aXRsZSA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLnRpdGxlO1xuICAgICAgICB0aGlzLmFwcGVuZFRvV2l6YXJkID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEuYXBwZW5kVG9XaXphcmQ7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvbkJ1dHRvbkxhYmVscyA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLm5hdmlnYXRpb25CdXR0b25MYWJlbHMgPz8ge307XG4gICAgICAgIHRoaXMuY29udGVudEhlaWdodCA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLmNvbnRlbnRIZWlnaHQ7XG4gICAgICAgIHRoaXMucmVzcG9uc2l2ZVBhZGRpbmdzID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEucmVzcG9uc2l2ZVBhZGRpbmdzO1xuICAgICAgICB0aGlzLmdvTmV4dEJ1dHRvblRlbXBsYXRlID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEuZ29OZXh0QnV0dG9uVGVtcGxhdGU7XG4gICAgICAgIHRoaXMuZ29CYWNrQnV0dG9uVGVtcGxhdGUgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5nb0JhY2tCdXR0b25UZW1wbGF0ZTtcbiAgICAgICAgdGhpcy5maW5pc2hCdXR0b25UZW1wbGF0ZSA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLmZpbmlzaEJ1dHRvblRlbXBsYXRlO1xuICAgICAgICB0aGlzLmNhbmNlbEJ1dHRvblRlbXBsYXRlID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEuY2FuY2VsQnV0dG9uVGVtcGxhdGU7XG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uRGlhbG9nVGVtcGxhdGUgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5jb25maXJtYXRpb25EaWFsb2dUZW1wbGF0ZTtcbiAgICAgICAgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXAgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5kaXNwbGF5U3VtbWFyeVN0ZXAgfHwgZmFsc2U7XG4gICAgICAgIHRoaXMuc3VtbWFyeVN0ZXBUZW1wbGF0ZSA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLnN1bW1hcnlTdGVwVGVtcGxhdGU7XG4gICAgICAgIHRoaXMucmV2aWV3QnV0dG9uVGVtcGxhdGUgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5yZXZpZXdCdXR0b25UZW1wbGF0ZTtcblxuICAgICAgICBpZiAodGhpcy5fZGlhbG9nUmVmLmRhdGEudW5pZmllZExheW91dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLnVuaWZpZWRMYXlvdXQgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS51bmlmaWVkTGF5b3V0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2RpYWxvZ1JlZi5kYXRhLm5hdmlnYXRpb25CdXR0b25zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbkJ1dHRvbnMgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5uYXZpZ2F0aW9uQnV0dG9ucztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9kaWFsb2dSZWYuZGF0YS5jb25maXJtYXRpb25EaWFsb2dUZXh0KSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbkRpYWxvZ1RleHQgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5jb25maXJtYXRpb25EaWFsb2dUZXh0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2RpYWxvZ1JlZi5kYXRhLmNvbmZpcm1hdGlvbkRpYWxvZ0NhbmNlbFRleHQpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uRGlhbG9nQ2FuY2VsVGV4dCA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLmNvbmZpcm1hdGlvbkRpYWxvZ0NhbmNlbFRleHQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZGlhbG9nUmVmLmRhdGEuY29uZmlybWF0aW9uRGlhbG9nQ2xvc2VUZXh0KSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbkRpYWxvZ0Nsb3NlVGV4dCA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLmNvbmZpcm1hdGlvbkRpYWxvZ0Nsb3NlVGV4dDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDYW5jZWxzIFdpemFyZCBwcm9ncmVzcyBhbmQgY2xvc2VzIHRoZSBkaWFsb2cuXG4gICAgICovXG4gICAgY2FuY2VsKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5pc1N0ZXBzVW50b3VjaGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5kaXNtaXNzKCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRlbXBsYXRlID0gdGhpcy5jb25maXJtYXRpb25EaWFsb2dUZW1wbGF0ZSB8fCB0aGlzLmRlZmF1bHRDb25maXJtYXRpb25EaWFsb2dUZW1wbGF0ZTtcblxuICAgICAgICBjb25zdCBtZXNzYWdlQm94UmVmID0gdGhpcy5fbWVzc2FnZUJveFNlcnZpY2Uub3Blbih0ZW1wbGF0ZSwgeyByZXNwb25zaXZlUGFkZGluZzogdHJ1ZSB9KTtcblxuICAgICAgICBtZXNzYWdlQm94UmVmLmFmdGVyQ2xvc2VkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKHJlc3VsdCkgPT4gcmVzdWx0KSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5kaXNtaXNzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcGxldGVzIFdpemFyZCBwcm9jZXNzLCBlbWl0cyBXaXphcmQgcmVzdWx0IGFuZCBjbG9zZXMgdGhlIGRpYWxvZy5cbiAgICAgKi9cbiAgICBhc3luYyBmaW5pc2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLmlzU3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgIGNvbnN0IHdpemFyZFJlc3VsdCA9IGF3YWl0IHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuZ2V0V2l6YXJkRm9ybVZhbHVlKHRydWUpO1xuICAgICAgICAgICAgdGhpcy5fZGlhbG9nUmVmLmNsb3NlKHdpemFyZFJlc3VsdCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjdXJyZW50U3RlcElkID0gdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5nZXRDdXJyZW50U3RlcElkKCk7XG4gICAgICAgIHRoaXMuc3VibWl0U3RlcEZvcm1zKGN1cnJlbnRTdGVwSWQpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGFzeW5jIChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICYmIE9iamVjdC52YWx1ZXMocmVzdWx0KS5zb21lKChyKSA9PiAhci5zdWNjZXNzKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3Qgd2l6YXJkUmVzdWx0ID0gYXdhaXQgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5nZXRXaXphcmRGb3JtVmFsdWUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGlhbG9nUmVmLmNsb3NlKHdpemFyZFJlc3VsdCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX2dvQmFja0ZuOiAoKSA9PiB2b2lkID0gKCkgPT4gdGhpcy5nb0JhY2soKTtcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX2dvTmV4dEZuOiAoKSA9PiBQcm9taXNlPHZvaWQ+ID0gKCkgPT4gdGhpcy5nb05leHQoKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBfZmluaXNoRm46ICgpID0+IFByb21pc2U8dm9pZD4gPSAoKSA9PiB0aGlzLmZpbmlzaCgpO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIF9jYW5jZWxGbjogKCkgPT4gdm9pZCA9ICgpID0+IHRoaXMuY2FuY2VsKCk7XG59XG4iLCI8ZmQtZGlhbG9nPlxuICAgIDxmZC1kaWFsb2ctaGVhZGVyPlxuICAgICAgICA8aDIgZmQtdGl0bGUgW2hlYWRlclNpemVdPVwidGl0bGUuc2l6ZVwiPnt7IHRpdGxlLnRleHQgfX08L2gyPlxuICAgIDwvZmQtZGlhbG9nLWhlYWRlcj5cbiAgICA8ZmQtZGlhbG9nLWJvZHk+XG4gICAgICAgIDxmZHAtd2l6YXJkLWJvZHlcbiAgICAgICAgICAgIFtuYXZpZ2F0aW9uQnV0dG9uc109XCJmYWxzZVwiXG4gICAgICAgICAgICBbZGlzcGxheVN1bW1hcnlTdGVwXT1cImRpc3BsYXlTdW1tYXJ5U3RlcFwiXG4gICAgICAgICAgICBbcmVzcG9uc2l2ZVBhZGRpbmdzXT1cInJlc3BvbnNpdmVQYWRkaW5nc1wiXG4gICAgICAgICAgICBbbmF2aWdhdGlvbkJ1dHRvbkxhYmVsc109XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVsc1wiXG4gICAgICAgICAgICBbY3VzdG9tU3VtbWFyeVN0ZXBUZW1wbGF0ZV09XCJzdW1tYXJ5U3RlcFRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtyZXZpZXdCdXR0b25UZW1wbGF0ZV09XCJyZXZpZXdCdXR0b25UZW1wbGF0ZVwiXG4gICAgICAgICAgICBbaGlkZGVuXT1cIiF3aXphcmRDcmVhdGVkXCJcbiAgICAgICAgICAgIFthcHBlbmRUb1dpemFyZF09XCJhcHBlbmRUb1dpemFyZFwiXG4gICAgICAgICAgICBbdW5pZmllZExheW91dF09XCJ1bmlmaWVkTGF5b3V0XCJcbiAgICAgICAgICAgIFtjb250ZW50SGVpZ2h0XT1cImNvbnRlbnRIZWlnaHRcIlxuICAgICAgICAgICAgKHN0YXR1c0NoYW5nZSk9XCJzdGVwU3RhdHVzQ2hhbmdlZCgkZXZlbnQuaWQsICRldmVudC5zdGF0dXMpXCJcbiAgICAgICAgPjwvZmRwLXdpemFyZC1ib2R5PlxuICAgICAgICBAaWYgKHdpemFyZENyZWF0ZWQpIHtcbiAgICAgICAgICAgIDxkaXYgZmQtYmFyIGJhckRlc2lnbj1cImZsb2F0aW5nLWZvb3RlclwiIFtjbGFzcy5mZC1iYXItLXJlc3BvbnNpdmUtcGFkZGluZ3NdPVwicmVzcG9uc2l2ZVBhZGRpbmdzXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBmZC1iYXItcmlnaHQ+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIWlzRmlyc3RTdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRHb0JhY2tCdXR0b25UZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmRwLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWJhcl9fZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmZENvbnRlbnREZW5zaXR5XT1cIl9uYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmdvQmFjay5jb250ZW50RGVuc2l0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidXR0b25UeXBlXT1cIl9uYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmdvQmFjay50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIl9uYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmdvQmFjay5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJnb0JhY2soKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmRwLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJnb0JhY2tCdXR0b25UZW1wbGF0ZSB8fCBkZWZhdWx0R29CYWNrQnV0dG9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGdvQmFjazogX2dvQmFja0ZuIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmICghaXNMYXN0U3RlcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0R29OZXh0QnV0dG9uVGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkcC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1iYXJfX2VsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRDb250ZW50RGVuc2l0eV09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5nb05leHQuY29udGVudERlbnNpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYnV0dG9uVHlwZV09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5nb05leHQudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5nb05leHQubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29OZXh0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkcC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0UmV2aWV3QnV0dG9uVGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkcC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1iYXJfX2VsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRDb250ZW50RGVuc2l0eV09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5yZXZpZXcuY29udGVudERlbnNpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYnV0dG9uVHlwZV09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5yZXZpZXcudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5yZXZpZXcubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29OZXh0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkcC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNCcmFuY2hpbmdTdGVwICYmICghaXNDdXJyZW50U3RlcENvbXBsZXRlZCB8fCBfc3RlcHNPcmRlckNoYW5nZWQpKSB8fCAhaXNOZXh0U3RlcFN1bW1hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJnb05leHRCdXR0b25UZW1wbGF0ZSB8fCBkZWZhdWx0R29OZXh0QnV0dG9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBnb05leHQ6IF9nb05leHRGbiB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJyZXZpZXdCdXR0b25UZW1wbGF0ZSB8fCBkZWZhdWx0UmV2aWV3QnV0dG9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBnb05leHQ6IF9nb05leHRGbiB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKGlzTGFzdFN0ZXApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEZpbmlzaEJ1dHRvblRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZHAtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtYmFyX19lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZkQ29udGVudERlbnNpdHldPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHMuZmluaXNoLmNvbnRlbnREZW5zaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2J1dHRvblR5cGVdPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHMuZmluaXNoLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHMuZmluaXNoLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZpbmlzaCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9mZHAtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZpbmlzaEJ1dHRvblRlbXBsYXRlIHx8IGRlZmF1bHRGaW5pc2hCdXR0b25UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmluaXNoOiBfZmluaXNoRm4gfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDYW5jZWxCdXR0b25UZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmZHAtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1iYXJfX2VsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmZENvbnRlbnREZW5zaXR5XT1cIl9uYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmNhbmNlbC5jb250ZW50RGVuc2l0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2J1dHRvblR5cGVdPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHMuY2FuY2VsLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5jYW5jZWwubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjYW5jZWwoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9mZHAtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNhbmNlbEJ1dHRvblRlbXBsYXRlIHx8IGRlZmF1bHRDYW5jZWxCdXR0b25UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBjYW5jZWw6IF9jYW5jZWxGbiB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgIDwvZmQtZGlhbG9nLWJvZHk+XG48L2ZkLWRpYWxvZz5cbjxuZy10ZW1wbGF0ZVxuICAgIFtmZE1lc3NhZ2VCb3hUZW1wbGF0ZV1cbiAgICBsZXQtbWVzc2FnZUJveFxuICAgIGxldC1tZXNzYWdlQm94Q29uZmlnPVwibWVzc2FnZUJveENvbmZpZ1wiXG4gICAgI2RlZmF1bHRDb25maXJtYXRpb25EaWFsb2dUZW1wbGF0ZVxuPlxuICAgIDxmZC1tZXNzYWdlLWJveCBbbWVzc2FnZUJveENvbmZpZ109XCJtZXNzYWdlQm94Q29uZmlnXCIgW21lc3NhZ2VCb3hSZWZdPVwibWVzc2FnZUJveFwiPlxuICAgICAgICA8ZmQtbWVzc2FnZS1ib3gtYm9keT5cbiAgICAgICAgICAgIHt7IGNvbmZpcm1hdGlvbkRpYWxvZ1RleHQgfX1cbiAgICAgICAgPC9mZC1tZXNzYWdlLWJveC1ib2R5PlxuICAgICAgICA8ZmQtbWVzc2FnZS1ib3gtZm9vdGVyPlxuICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJlbXBoYXNpemVkXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29uZmlybWF0aW9uRGlhbG9nQ2xvc2VUZXh0XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibWVzc2FnZUJveC5jbG9zZSh0cnVlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgICAgICA8ZmQtYnV0dG9uLWJhciBmZGtJbml0aWFsRm9jdXMgW2xhYmVsXT1cImNvbmZpcm1hdGlvbkRpYWxvZ0NhbmNlbFRleHRcIiAoY2xpY2spPVwibWVzc2FnZUJveC5kaXNtaXNzKClcIj5cbiAgICAgICAgICAgIDwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgPC9mZC1tZXNzYWdlLWJveC1mb290ZXI+XG4gICAgPC9mZC1tZXNzYWdlLWJveD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXdpemFyZC1nZW5lcmF0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93aXphcmQtZ2VuZXJhdG9yL2NvbXBvbmVudHMvZGlhbG9nLXdpemFyZC1nZW5lcmF0b3IvZGlhbG9nLXdpemFyZC1nZW5lcmF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93aXphcmQtZ2VuZXJhdG9yL2NvbXBvbmVudHMvZGlhbG9nLXdpemFyZC1nZW5lcmF0b3IvZGlhbG9nLXdpemFyZC1nZW5lcmF0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFB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QU87YUFDVjtZQUVELE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pGLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQzs4R0FuSlEsOEJBQThCO2tHQUE5Qiw4QkFBOEIsMEVBaEI1QixDQUFDLHNCQUFzQixFQUFFLG9CQUFvQixDQUFDLHlNQ2xDN0QseTZNQTZIQSwyQ0R4RlEsWUFBWSxzM0JBSVosbUJBQW1CLDZlQUNuQixTQUFTLCtCQUNULGVBQWUseVJBQ2YsdUJBQXVCLG9kQUN2QixnQkFBZ0IsbUpBQ2hCLGdCQUFnQjs7MkZBSVgsOEJBQThCO2tCQXJCMUMsU0FBUzsrQkFDSSw2QkFBNkIsaUJBRXhCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxzQkFBc0IsRUFBRSxvQkFBb0IsQ0FBQyxjQUM3QyxJQUFJLFdBQ1A7d0JBQ0wsWUFBWTt3QkFDWixjQUFjO3dCQUNkLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLFNBQVM7d0JBQ1QsZUFBZTt3QkFDZix1QkFBdUI7d0JBQ3ZCLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixxQkFBcUI7cUJBQ3hCO21KQUkrQyxpQ0FBaUM7c0JBQWhGLFNBQVM7dUJBQUMsbUNBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1HZW5lcmF0b3JTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9mb3JtJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQ2RrU2Nyb2xsYWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgSW5pdGlhbEZvY3VzRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQmFyTW9kdWxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Jhcic7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eURpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IHsgRGlhbG9nTW9kdWxlLCBEaWFsb2dSZWYgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcbmltcG9ydCB7IE1lc3NhZ2VCb3hNb2R1bGUsIE1lc3NhZ2VCb3hTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL21lc3NhZ2UtYm94JztcbmltcG9ydCB7IFNjcm9sbGJhckRpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zY3JvbGxiYXInO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdGl0bGUnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9idXR0b24nO1xuaW1wb3J0IHsgQmFzZVdpemFyZEdlbmVyYXRvciB9IGZyb20gJy4uLy4uL2Jhc2Utd2l6YXJkLWdlbmVyYXRvcic7XG5pbXBvcnQgeyBXaXphcmREaWFsb2dEYXRhIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy93aXphcmQtZGlhbG9nLWRhdGEuaW50ZXJmYWNlJztcbmltcG9ydCB7IFdpemFyZFRpdGxlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy93aXphcmQtdGl0bGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IFdpemFyZEdlbmVyYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi93aXphcmQtZ2VuZXJhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgV2l6YXJkQm9keUNvbXBvbmVudCB9IGZyb20gJy4uL3dpemFyZC1ib2R5L3dpemFyZC1ib2R5LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmRwLWRpYWxvZy13aXphcmQtZ2VuZXJhdG9yJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGlhbG9nLXdpemFyZC1nZW5lcmF0b3IuY29tcG9uZW50Lmh0bWwnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbV2l6YXJkR2VuZXJhdG9yU2VydmljZSwgRm9ybUdlbmVyYXRvclNlcnZpY2VdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBEaWFsb2dNb2R1bGUsXG4gICAgICAgIFRpdGxlQ29tcG9uZW50LFxuICAgICAgICBDZGtTY3JvbGxhYmxlLFxuICAgICAgICBTY3JvbGxiYXJEaXJlY3RpdmUsXG4gICAgICAgIFdpemFyZEJvZHlDb21wb25lbnQsXG4gICAgICAgIEJhck1vZHVsZSxcbiAgICAgICAgQnV0dG9uQ29tcG9uZW50LFxuICAgICAgICBDb250ZW50RGVuc2l0eURpcmVjdGl2ZSxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgTWVzc2FnZUJveE1vZHVsZSxcbiAgICAgICAgSW5pdGlhbEZvY3VzRGlyZWN0aXZlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBEaWFsb2dXaXphcmRHZW5lcmF0b3JDb21wb25lbnQgZXh0ZW5kcyBCYXNlV2l6YXJkR2VuZXJhdG9yIHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2RlZmF1bHRDb25maXJtYXRpb25EaWFsb2dUZW1wbGF0ZScpIGRlZmF1bHRDb25maXJtYXRpb25EaWFsb2dUZW1wbGF0ZTogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFdpemFyZHMgZGlhbG9nIHRpdGxlIGNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gICAgdGl0bGU6IFdpemFyZFRpdGxlO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENvbmZpcm1hdGlvbiBtZXNzYWdlIHdoZW4gd2l6YXJkIGRpYWxvZyBjbG9zZSBidXR0b24gaGFzIGJlZW4gY2xpY2tlZC5cbiAgICAgKi9cbiAgICBjb25maXJtYXRpb25EaWFsb2dUZXh0ID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkaXNjYXJkIHlvdXIgcHJvZ3Jlc3M/JztcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29uZmlybSBidXR0b24gdGV4dCBmb3IgY2xvc2UgY29uZmlybWF0aW9uIGRpYWxvZy5cbiAgICAgKi9cbiAgICBjb25maXJtYXRpb25EaWFsb2dDbG9zZVRleHQgPSAnQ29uZmlybSc7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENhbmNlbCBidXR0b24gdGV4dCBmb3IgY2xvc2UgY29uZmlybWF0aW9uIGRpYWxvZy5cbiAgICAgKi9cbiAgICBjb25maXJtYXRpb25EaWFsb2dDYW5jZWxUZXh0ID0gJ0NhbmNlbCc7XG5cbiAgICAvKipcbiAgICAgKiBVc2VyLWRlZmluZWQgdGVtcGxhdGUgZm9yIFwiR28gTmV4dFwiIGJ1dHRvbi5cbiAgICAgKi9cbiAgICBnb05leHRCdXR0b25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKlxuICAgICAqIFVzZXItZGVmaW5lZCB0ZW1wbGF0ZSBmb3IgXCJHbyBCYWNrXCIgYnV0dG9uLlxuICAgICAqL1xuICAgIGdvQmFja0J1dHRvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogVXNlci1kZWZpbmVkIHRlbXBsYXRlIGZvciBcIkZpbmlzaFwiIGJ1dHRvbi5cbiAgICAgKi9cbiAgICBmaW5pc2hCdXR0b25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKlxuICAgICAqIFVzZXItZGVmaW5lZCB0ZW1wbGF0ZSBmb3IgXCJDYW5jZWxcIiBidXR0b24uXG4gICAgICovXG4gICAgY2FuY2VsQnV0dG9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBVc2VyLWRlZmluZWQgdGVtcGxhdGUgZm9yIGNhbmNlbGxhdGlvbiBjb25maXJtYXRpb24gZGlhbG9nLlxuICAgICAqL1xuICAgIGNvbmZpcm1hdGlvbkRpYWxvZ1RlbXBsYXRlPzogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogVXNlci1kZWZpbmVkIHRlbXBsYXRlIGZvciBzdW1tYXJ5IHN0ZXAuXG4gICAgICovXG4gICAgc3VtbWFyeVN0ZXBUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKiBVc2VyLWRlZmluZWQgdGVtcGxhdGUgZm9yIFwiUmV2aWV3XCIgYnV0dG9uICovXG4gICAgcmV2aWV3QnV0dG9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX21lc3NhZ2VCb3hTZXJ2aWNlID0gaW5qZWN0KE1lc3NhZ2VCb3hTZXJ2aWNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIF93aXphcmRHZW5lcmF0b3JTZXJ2aWNlOiBXaXphcmRHZW5lcmF0b3JTZXJ2aWNlLFxuICAgICAgICBfY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIF9kaWFsb2dSZWY6IERpYWxvZ1JlZjxXaXphcmREaWFsb2dEYXRhPlxuICAgICkge1xuICAgICAgICBzdXBlcihfd2l6YXJkR2VuZXJhdG9yU2VydmljZSwgX2NkKTtcblxuICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEuaXRlbXM7XG4gICAgICAgIHRoaXMudGl0bGUgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS50aXRsZTtcbiAgICAgICAgdGhpcy5hcHBlbmRUb1dpemFyZCA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLmFwcGVuZFRvV2l6YXJkO1xuICAgICAgICB0aGlzLm5hdmlnYXRpb25CdXR0b25MYWJlbHMgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5uYXZpZ2F0aW9uQnV0dG9uTGFiZWxzID8/IHt9O1xuICAgICAgICB0aGlzLmNvbnRlbnRIZWlnaHQgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5jb250ZW50SGVpZ2h0O1xuICAgICAgICB0aGlzLnJlc3BvbnNpdmVQYWRkaW5ncyA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLnJlc3BvbnNpdmVQYWRkaW5ncztcbiAgICAgICAgdGhpcy5nb05leHRCdXR0b25UZW1wbGF0ZSA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLmdvTmV4dEJ1dHRvblRlbXBsYXRlO1xuICAgICAgICB0aGlzLmdvQmFja0J1dHRvblRlbXBsYXRlID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEuZ29CYWNrQnV0dG9uVGVtcGxhdGU7XG4gICAgICAgIHRoaXMuZmluaXNoQnV0dG9uVGVtcGxhdGUgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5maW5pc2hCdXR0b25UZW1wbGF0ZTtcbiAgICAgICAgdGhpcy5jYW5jZWxCdXR0b25UZW1wbGF0ZSA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLmNhbmNlbEJ1dHRvblRlbXBsYXRlO1xuICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbkRpYWxvZ1RlbXBsYXRlID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEuY29uZmlybWF0aW9uRGlhbG9nVGVtcGxhdGU7XG4gICAgICAgIHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEuZGlzcGxheVN1bW1hcnlTdGVwIHx8IGZhbHNlO1xuICAgICAgICB0aGlzLnN1bW1hcnlTdGVwVGVtcGxhdGUgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5zdW1tYXJ5U3RlcFRlbXBsYXRlO1xuICAgICAgICB0aGlzLnJldmlld0J1dHRvblRlbXBsYXRlID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEucmV2aWV3QnV0dG9uVGVtcGxhdGU7XG5cbiAgICAgICAgaWYgKHRoaXMuX2RpYWxvZ1JlZi5kYXRhLnVuaWZpZWRMYXlvdXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy51bmlmaWVkTGF5b3V0ID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEudW5pZmllZExheW91dDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9kaWFsb2dSZWYuZGF0YS5uYXZpZ2F0aW9uQnV0dG9ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25CdXR0b25zID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEubmF2aWdhdGlvbkJ1dHRvbnM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZGlhbG9nUmVmLmRhdGEuY29uZmlybWF0aW9uRGlhbG9nVGV4dCkge1xuICAgICAgICAgICAgdGhpcy5jb25maXJtYXRpb25EaWFsb2dUZXh0ID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEuY29uZmlybWF0aW9uRGlhbG9nVGV4dDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9kaWFsb2dSZWYuZGF0YS5jb25maXJtYXRpb25EaWFsb2dDYW5jZWxUZXh0KSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbkRpYWxvZ0NhbmNlbFRleHQgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5jb25maXJtYXRpb25EaWFsb2dDYW5jZWxUZXh0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2RpYWxvZ1JlZi5kYXRhLmNvbmZpcm1hdGlvbkRpYWxvZ0Nsb3NlVGV4dCkge1xuICAgICAgICAgICAgdGhpcy5jb25maXJtYXRpb25EaWFsb2dDbG9zZVRleHQgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5jb25maXJtYXRpb25EaWFsb2dDbG9zZVRleHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ2FuY2VscyBXaXphcmQgcHJvZ3Jlc3MgYW5kIGNsb3NlcyB0aGUgZGlhbG9nLlxuICAgICAqL1xuICAgIGNhbmNlbCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuaXNTdGVwc1VudG91Y2hlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLl9kaWFsb2dSZWYuZGlzbWlzcygpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9IHRoaXMuY29uZmlybWF0aW9uRGlhbG9nVGVtcGxhdGUgfHwgdGhpcy5kZWZhdWx0Q29uZmlybWF0aW9uRGlhbG9nVGVtcGxhdGU7XG5cbiAgICAgICAgY29uc3QgbWVzc2FnZUJveFJlZiA9IHRoaXMuX21lc3NhZ2VCb3hTZXJ2aWNlLm9wZW4odGVtcGxhdGUsIHsgcmVzcG9uc2l2ZVBhZGRpbmc6IHRydWUgfSk7XG5cbiAgICAgICAgbWVzc2FnZUJveFJlZi5hZnRlckNsb3NlZFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKChyZXN1bHQpID0+IHJlc3VsdCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kaWFsb2dSZWYuZGlzbWlzcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENvbXBsZXRlcyBXaXphcmQgcHJvY2VzcywgZW1pdHMgV2l6YXJkIHJlc3VsdCBhbmQgY2xvc2VzIHRoZSBkaWFsb2cuXG4gICAgICovXG4gICAgYXN5bmMgZmluaXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5pc1N1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICBjb25zdCB3aXphcmRSZXN1bHQgPSBhd2FpdCB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLmdldFdpemFyZEZvcm1WYWx1ZSh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5jbG9zZSh3aXphcmRSZXN1bHQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3VycmVudFN0ZXBJZCA9IHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuZ2V0Q3VycmVudFN0ZXBJZCgpO1xuICAgICAgICB0aGlzLnN1Ym1pdFN0ZXBGb3JtcyhjdXJyZW50U3RlcElkKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShhc3luYyAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAmJiBPYmplY3QudmFsdWVzKHJlc3VsdCkuc29tZSgocikgPT4gIXIuc3VjY2VzcykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHdpemFyZFJlc3VsdCA9IGF3YWl0IHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuZ2V0V2l6YXJkRm9ybVZhbHVlKHRydWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5jbG9zZSh3aXphcmRSZXN1bHQpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIF9nb0JhY2tGbjogKCkgPT4gdm9pZCA9ICgpID0+IHRoaXMuZ29CYWNrKCk7XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIF9nb05leHRGbjogKCkgPT4gUHJvbWlzZTx2b2lkPiA9ICgpID0+IHRoaXMuZ29OZXh0KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX2ZpbmlzaEZuOiAoKSA9PiBQcm9taXNlPHZvaWQ+ID0gKCkgPT4gdGhpcy5maW5pc2goKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBfY2FuY2VsRm46ICgpID0+IHZvaWQgPSAoKSA9PiB0aGlzLmNhbmNlbCgpO1xufVxuIiwiPGZkLWRpYWxvZz5cbiAgICA8ZmQtZGlhbG9nLWhlYWRlcj5cbiAgICAgICAgPGgyIGZkLXRpdGxlIFtoZWFkZXJTaXplXT1cInRpdGxlLnNpemVcIj57eyB0aXRsZS50ZXh0IH19PC9oMj5cbiAgICA8L2ZkLWRpYWxvZy1oZWFkZXI+XG4gICAgPGZkLWRpYWxvZy1ib2R5PlxuICAgICAgICA8ZmRwLXdpemFyZC1ib2R5XG4gICAgICAgICAgICBbbmF2aWdhdGlvbkJ1dHRvbnNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2Rpc3BsYXlTdW1tYXJ5U3RlcF09XCJkaXNwbGF5U3VtbWFyeVN0ZXBcIlxuICAgICAgICAgICAgW3Jlc3BvbnNpdmVQYWRkaW5nc109XCJyZXNwb25zaXZlUGFkZGluZ3NcIlxuICAgICAgICAgICAgW25hdmlnYXRpb25CdXR0b25MYWJlbHNdPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHNcIlxuICAgICAgICAgICAgW2N1c3RvbVN1bW1hcnlTdGVwVGVtcGxhdGVdPVwic3VtbWFyeVN0ZXBUZW1wbGF0ZVwiXG4gICAgICAgICAgICBbcmV2aWV3QnV0dG9uVGVtcGxhdGVdPVwicmV2aWV3QnV0dG9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgW2hpZGRlbl09XCIhd2l6YXJkQ3JlYXRlZFwiXG4gICAgICAgICAgICBbYXBwZW5kVG9XaXphcmRdPVwiYXBwZW5kVG9XaXphcmRcIlxuICAgICAgICAgICAgW3VuaWZpZWRMYXlvdXRdPVwidW5pZmllZExheW91dFwiXG4gICAgICAgICAgICBbY29udGVudEhlaWdodF09XCJjb250ZW50SGVpZ2h0XCJcbiAgICAgICAgICAgIChzdGF0dXNDaGFuZ2UpPVwic3RlcFN0YXR1c0NoYW5nZWQoJGV2ZW50LmlkLCAkZXZlbnQuc3RhdHVzKVwiXG4gICAgICAgID48L2ZkcC13aXphcmQtYm9keT5cbiAgICAgICAgQGlmICh3aXphcmRDcmVhdGVkKSB7XG4gICAgICAgICAgICA8ZGl2IGZkLWJhciBiYXJEZXNpZ249XCJmbG9hdGluZy1mb290ZXJcIiBbY2xhc3MuZmQtYmFyLS1yZXNwb25zaXZlLXBhZGRpbmdzXT1cInJlc3BvbnNpdmVQYWRkaW5nc1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgZmQtYmFyLXJpZ2h0PlxuICAgICAgICAgICAgICAgICAgICBAaWYgKCFpc0ZpcnN0U3RlcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0R29CYWNrQnV0dG9uVGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkcC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1iYXJfX2VsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRDb250ZW50RGVuc2l0eV09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5nb0JhY2suY29udGVudERlbnNpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYnV0dG9uVHlwZV09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5nb0JhY2sudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5nb0JhY2subGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29CYWNrKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkcC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ29CYWNrQnV0dG9uVGVtcGxhdGUgfHwgZGVmYXVsdEdvQmFja0J1dHRvblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBnb0JhY2s6IF9nb0JhY2tGbiB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIWlzTGFzdFN0ZXApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEdvTmV4dEJ1dHRvblRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZHAtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtYmFyX19lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZkQ29udGVudERlbnNpdHldPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHMuZ29OZXh0LmNvbnRlbnREZW5zaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2J1dHRvblR5cGVdPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHMuZ29OZXh0LnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHMuZ29OZXh0LmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvTmV4dCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9mZHAtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFJldmlld0J1dHRvblRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZHAtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtYmFyX19lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZkQ29udGVudERlbnNpdHldPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHMucmV2aWV3LmNvbnRlbnREZW5zaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2J1dHRvblR5cGVdPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHMucmV2aWV3LnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHMucmV2aWV3LmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvTmV4dCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9mZHAtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzQnJhbmNoaW5nU3RlcCAmJiAoIWlzQ3VycmVudFN0ZXBDb21wbGV0ZWQgfHwgX3N0ZXBzT3JkZXJDaGFuZ2VkKSkgfHwgIWlzTmV4dFN0ZXBTdW1tYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ29OZXh0QnV0dG9uVGVtcGxhdGUgfHwgZGVmYXVsdEdvTmV4dEJ1dHRvblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZ29OZXh0OiBfZ29OZXh0Rm4gfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicmV2aWV3QnV0dG9uVGVtcGxhdGUgfHwgZGVmYXVsdFJldmlld0J1dHRvblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZ29OZXh0OiBfZ29OZXh0Rm4gfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmIChpc0xhc3RTdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRGaW5pc2hCdXR0b25UZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmRwLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWJhcl9fZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmZENvbnRlbnREZW5zaXR5XT1cIl9uYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmZpbmlzaC5jb250ZW50RGVuc2l0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidXR0b25UeXBlXT1cIl9uYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmZpbmlzaC50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIl9uYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmZpbmlzaC5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmaW5pc2goKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmRwLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJmaW5pc2hCdXR0b25UZW1wbGF0ZSB8fCBkZWZhdWx0RmluaXNoQnV0dG9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpbmlzaDogX2ZpbmlzaEZuIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Q2FuY2VsQnV0dG9uVGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmRwLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtYmFyX19lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRDb250ZW50RGVuc2l0eV09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5jYW5jZWwuY29udGVudERlbnNpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidXR0b25UeXBlXT1cIl9uYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmNhbmNlbC50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHMuY2FuY2VsLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmRwLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjYW5jZWxCdXR0b25UZW1wbGF0ZSB8fCBkZWZhdWx0Q2FuY2VsQnV0dG9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgY2FuY2VsOiBfY2FuY2VsRm4gfVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICA8L2ZkLWRpYWxvZy1ib2R5PlxuPC9mZC1kaWFsb2c+XG48bmctdGVtcGxhdGVcbiAgICBbZmRNZXNzYWdlQm94VGVtcGxhdGVdXG4gICAgbGV0LW1lc3NhZ2VCb3hcbiAgICBsZXQtbWVzc2FnZUJveENvbmZpZz1cIm1lc3NhZ2VCb3hDb25maWdcIlxuICAgICNkZWZhdWx0Q29uZmlybWF0aW9uRGlhbG9nVGVtcGxhdGVcbj5cbiAgICA8ZmQtbWVzc2FnZS1ib3ggW21lc3NhZ2VCb3hDb25maWddPVwibWVzc2FnZUJveENvbmZpZ1wiIFttZXNzYWdlQm94UmVmXT1cIm1lc3NhZ2VCb3hcIj5cbiAgICAgICAgPGZkLW1lc3NhZ2UtYm94LWJvZHk+XG4gICAgICAgICAgICB7eyBjb25maXJtYXRpb25EaWFsb2dUZXh0IH19XG4gICAgICAgIDwvZmQtbWVzc2FnZS1ib3gtYm9keT5cbiAgICAgICAgPGZkLW1lc3NhZ2UtYm94LWZvb3Rlcj5cbiAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cImNvbmZpcm1hdGlvbkRpYWxvZ0Nsb3NlVGV4dFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm1lc3NhZ2VCb3guY2xvc2UodHJ1ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXIgZmRrSW5pdGlhbEZvY3VzIFtsYWJlbF09XCJjb25maXJtYXRpb25EaWFsb2dDYW5jZWxUZXh0XCIgKGNsaWNrKT1cIm1lc3NhZ2VCb3guZGlzbWlzcygpXCI+XG4gICAgICAgICAgICA8L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgIDwvZmQtbWVzc2FnZS1ib3gtZm9vdGVyPlxuICAgIDwvZmQtbWVzc2FnZS1ib3g+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,8 +1,9 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, TemplateRef, ViewEncapsulation } from '@angular/core';
2
- import { Subject, firstValueFrom } from 'rxjs';
3
- import { debounceTime, takeUntil } from 'rxjs/operators';
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, EventEmitter, Input, Output, TemplateRef, ViewEncapsulation, inject } from '@angular/core';
2
+ import { firstValueFrom } from 'rxjs';
3
+ import { debounceTime } from 'rxjs/operators';
4
4
  import { WizardModule } from '@fundamental-ngx/core/wizard';
5
5
  import { NgTemplateOutlet } from '@angular/common';
6
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
7
  import { ContentDensityDirective } from '@fundamental-ngx/core/content-density';
7
8
  import { ButtonComponent } from '@fundamental-ngx/platform/button';
8
9
  import { WizardGeneratorService } from '../../wizard-generator.service';
@@ -83,7 +84,7 @@ export class WizardBodyComponent {
83
84
  * @hidden
84
85
  * An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing)
85
86
  */
86
- this._onDestroy$ = new Subject();
87
+ this._destroyRef = inject(DestroyRef);
87
88
  /**
88
89
  * @hidden
89
90
  */
@@ -117,19 +118,12 @@ export class WizardBodyComponent {
117
118
  ngOnInit() {
118
119
  this._wizardGeneratorService
119
120
  .getVisibleSteps()
120
- .pipe(debounceTime(50), takeUntil(this._onDestroy$))
121
+ .pipe(debounceTime(50), takeUntilDestroyed(this._destroyRef))
121
122
  .subscribe((visibleSteps) => {
122
123
  this._visibleItems = visibleSteps;
123
124
  this._cd.detectChanges();
124
125
  });
125
126
  }
126
- /**
127
- * @hidden
128
- */
129
- ngOnDestroy() {
130
- this._onDestroy$.next();
131
- this._onDestroy$.complete();
132
- }
133
127
  /**
134
128
  * @description Callback function for status change.
135
129
  * @param id step ID.
@@ -211,4 +205,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
211
205
  }], finish: [{
212
206
  type: Output
213
207
  }] } });
214
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLWJvZHkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93aXphcmQtZ2VuZXJhdG9yL2NvbXBvbmVudHMvd2l6YXJkLWJvZHkvd2l6YXJkLWJvZHkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93aXphcmQtZ2VuZXJhdG9yL2NvbXBvbmVudHMvd2l6YXJkLWJvZHkvd2l6YXJkLWJvZHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFdBQVcsRUFDWCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RCxPQUFPLEVBQUUsWUFBWSxFQUFvQixNQUFNLDhCQUE4QixDQUFDO0FBRTlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUduRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUN4RyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQzs7OztBQXNCbEcsTUFBTSxPQUFPLG1CQUFtQjtJQWdJNUI7O09BRUc7SUFDSCw4REFBOEQ7SUFDOUQsSUFB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QkFDNUIsMEJBQTBCO3dCQUMxQixlQUFlO3dCQUNmLHVCQUF1Qjt3QkFDdkIsZ0JBQWdCO3FCQUNuQjsySEFPRCxrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBT04sc0JBQXNCO3NCQURyQixLQUFLO2dCQVFOLGNBQWM7c0JBRGIsS0FBSztnQkFRTixhQUFhO3NCQURaLEtBQUs7Z0JBT04sV0FBVztzQkFEVixLQUFLO2dCQU9OLFVBQVU7c0JBRFQsS0FBSztnQkFPTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBT04sa0JBQWtCO3NCQURqQixLQUFLO2dCQU9OLG9CQUFvQjtzQkFEbkIsS0FBSztnQkFPTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBT04seUJBQXlCO3NCQUR4QixLQUFLO2dCQUtOLG9CQUFvQjtzQkFEbkIsS0FBSztnQkFPTixhQUFhO3NCQURaLEtBQUs7Z0JBS04saUJBQWlCO3NCQURoQixLQUFLO2dCQUtOLGFBQWE7c0JBRFosS0FBSztnQkFLTixlQUFlO3NCQURkLEtBQUs7Z0JBS04sc0JBQXNCO3NCQURyQixLQUFLO2dCQUtOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFPTixZQUFZO3NCQURYLE1BQU07Z0JBT1AsTUFBTTtzQkFETCxNQUFNO2dCQU9QLE1BQU07c0JBREwsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBXaXphcmRNb2R1bGUsIFdpemFyZFN0ZXBTdGF0dXMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvd2l6YXJkJztcblxuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eURpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9idXR0b24nO1xuaW1wb3J0IHsgUHJlcGFyZWRXaXphcmRHZW5lcmF0b3JJdGVtLCBXaXphcmRHZW5lcmF0b3JJdGVtIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy93aXphcmQtZ2VuZXJhdG9yLWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IFdpemFyZE5hdmlnYXRpb25CdXR0b25zIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy93aXphcmQtbmF2aWdhdGlvbi1idXR0b25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBXaXphcmRHZW5lcmF0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vd2l6YXJkLWdlbmVyYXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IFdpemFyZEdlbmVyYXRvclN0ZXBDb21wb25lbnQgfSBmcm9tICcuLi93aXphcmQtZ2VuZXJhdG9yLXN0ZXAvd2l6YXJkLWdlbmVyYXRvci1zdGVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXaXphcmRTdW1tYXJ5U3RlcENvbXBvbmVudCB9IGZyb20gJy4uL3dpemFyZC1zdW1tYXJ5LXN0ZXAvd2l6YXJkLXN1bW1hcnktc3RlcC5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdpemFyZFN0ZXBDaGFuZ2Uge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgc3RhdHVzOiBXaXphcmRTdGVwU3RhdHVzO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC13aXphcmQtYm9keScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3dpemFyZC1ib2R5LmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBXaXphcmRNb2R1bGUsXG4gICAgICAgIFdpemFyZEdlbmVyYXRvclN0ZXBDb21wb25lbnQsXG4gICAgICAgIFdpemFyZFN1bW1hcnlTdGVwQ29tcG9uZW50LFxuICAgICAgICBCdXR0b25Db21wb25lbnQsXG4gICAgICAgIENvbnRlbnREZW5zaXR5RGlyZWN0aXZlLFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBXaXphcmRCb2R5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIG9yIG5vdCBhcHBseSByZXNwb25zaXZlIHBhZGRpbmdzIHN0eWxpbmcuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICByZXNwb25zaXZlUGFkZGluZ3MgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEJ1dHRvbiBsYWJlbHMgdG8gYmUgdXNlZCBpbiBXaXphcmQgbmF2aWdhdGlvblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbmF2aWdhdGlvbkJ1dHRvbkxhYmVsczogUmVxdWlyZWQ8V2l6YXJkTmF2aWdhdGlvbkJ1dHRvbnM+O1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFdoZXRoZXIgb3Igbm90IHRvIGFwcGVuZCB0aGUgc3RlcCB0byB0aGUgd2l6YXJkLiBJZiBmYWxzZSwgZWFjaCBzdGVwIHdpbGwgYmUgZGlzcGxheWVkIG9uIGEgZGlmZmVyZW50IHBhZ2UuXG4gICAgICogRGVmYXVsdCBpcyB0cnVlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXBwZW5kVG9XaXphcmQgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEN1c3RvbSBoZWlnaHQgdG8gdXNlIGZvciB0aGUgd2l6YXJkJ3MgY29udGVudCBwYW5lLiBCeSBkZWZhdWx0LCB0aGlzIHZhbHVlIGlzIGNhbGMoMTAwdmggLSAxNDRweCksIHdoZXJlIDE0NHB4XG4gICAgICogaXMgdGhlIGNvbWJpbmVkIGhlaWdodCBvZiB0aGUgU2hlbGxiYXIsIHdpemFyZCBoZWFkZXIgYW5kIHdpemFyZCBmb290ZXIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBjb250ZW50SGVpZ2h0OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFdoZXRoZXIgb3Igbm90IFdpemFyZCBpcyBjdXJyZW50bHkgb24gdGhlIGZpcnN0IHN0ZXBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGlzRmlyc3RTdGVwID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciBXaXphcmQgaXMgY3VycmVudGx5IG9uIHRoZSBsYXN0IHN0ZXAuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBpc0xhc3RTdGVwID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG5leHQgc3RlcCBpcyBhIFN1bW1hcnkgc3RlcC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGlzTmV4dFN0ZXBTdW1tYXJ5ID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQm9vbGVhbiBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0byBkaXNwbGF5IFN1bW1hcnkgc3RlcCBpbiBXaXphcmQgcHJvZ3Jlc3MgYmFyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheVN1bW1hcnlTdGVwID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBVc2VyLWRlZmluZWQgdGVtcGxhdGUgZm9yIFwiR28gTmV4dFwiIGJ1dHRvbi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGdvTmV4dEJ1dHRvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqXG4gICAgICogVXNlci1kZWZpbmVkIHRlbXBsYXRlIGZvciBcIkZpbmlzaFwiIGJ1dHRvbi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZpbmlzaEJ1dHRvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqXG4gICAgICogVXNlci1kZWZpbmVkIHRlbXBsYXRlIGZvciBzdW1tYXJ5IHN0ZXAuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBjdXN0b21TdW1tYXJ5U3RlcFRlbXBsYXRlPzogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqIFVzZXItZGVmaW5lZCB0ZW1wbGF0ZSBmb3IgXCJSZXZpZXdcIiBidXR0b24gKi9cbiAgICBASW5wdXQoKVxuICAgIHJldmlld0J1dHRvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIElzIGN1cnJlbnQgc3RlcCBpcyBzdW1tYXJ5IHN0ZXAuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBpc1N1bW1hcnlTdGVwID0gZmFsc2U7XG5cbiAgICAvKiogSWYgbmF2aWdhdGlvbiBidXR0b25zIHNob3VsZCBiZSB2aXNpYmxlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbmF2aWdhdGlvbkJ1dHRvbnMgPSB0cnVlO1xuXG4gICAgLyoqIFdoZXRoZXIgb3Igbm90IGFsbCBmb3JtIGl0ZW1zIHNob3VsZCBoYXZlIGlkZW50aWNhbCBsYXlvdXQgcHJvdmlkZWQgZm9yIGZvcm0gZ3JvdXAuICovXG4gICAgQElucHV0KClcbiAgICB1bmlmaWVkTGF5b3V0ID0gdHJ1ZTtcblxuICAgIC8qKiBXaGV0aGVyIGN1cnJlbnQgc3RlcCBpcyBhIGJyYW5jaGluZyBzdGVwLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaXNCcmFuY2hpbmdTdGVwID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciBjdXJyZW50IHN0ZXAgaXMgY29tcGxldGVkICovXG4gICAgQElucHV0KClcbiAgICBpc0N1cnJlbnRTdGVwQ29tcGxldGVkID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciBvcmRlciBvZiBzdGVwcyB3YXMgY2hhbmdlZCAgKi9cbiAgICBASW5wdXQoKVxuICAgIHN0ZXBzT3JkZXJDaGFuZ2VkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRW1pdHMgd2hlbiBzb21lIHN0ZXAgc3RhdHVzIGhhcyBiZWVuIGNoYW5nZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgc3RhdHVzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxXaXphcmRTdGVwQ2hhbmdlPigpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEVtaXRzIHdoZW4gXCJHbyBuZXh0XCIgYnV0dG9uIGhhcyBiZWVuIGNsaWNrZWRcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBnb05leHQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRW1pdHMgd2hlbiBcIkZpbmlzaFwiIGJ1dHRvbiBoYXMgYmVlbiBjbGlja2VkXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgZmluaXNoID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEFuIFJ4SlMgU3ViamVjdCB0aGF0IHdpbGwga2lsbCB0aGUgZGF0YSBzdHJlYW0gdXBvbiBjb21wb25lbnTigJlzIGRlc3RydWN0aW9uIChmb3IgdW5zdWJzY3JpYmluZylcbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF92aXNpYmxlSXRlbXM6IFByZXBhcmVkV2l6YXJkR2VuZXJhdG9ySXRlbVtdO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEFycmF5IG9mIHZpc2libGUgV2l6YXJkIFN0ZXBzLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXG4gICAgc2V0IHZpc2libGVJdGVtcyhpdGVtczogUHJlcGFyZWRXaXphcmRHZW5lcmF0b3JJdGVtW10pIHtcbiAgICAgICAgdGhpcy5fdmlzaWJsZUl0ZW1zID0gaXRlbXM7XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXG4gICAgZ2V0IHZpc2libGVJdGVtcygpOiBQcmVwYXJlZFdpemFyZEdlbmVyYXRvckl0ZW1bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92aXNpYmxlSXRlbXMgfHwgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5pdGVtcztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX3dpemFyZEdlbmVyYXRvclNlcnZpY2U6IFdpemFyZEdlbmVyYXRvclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge31cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBfZ29OZXh0Rm46ICgpID0+IHZvaWQgPSAoKSA9PiB0aGlzLmdvTmV4dC5lbWl0KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX2ZpbmlzaEZuOiAoKSA9PiB2b2lkID0gKCkgPT4gdGhpcy5maW5pc2guZW1pdCgpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEN1c3RvbSBzdGVwIHN0YXR1cyBjaGFuZ2UgdmFsaWRhdG9yIGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSBpbmRleCBDdXJyZW50IHN0ZXAgaW5kZXguXG4gICAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59IElmIHRoaXMgc3RlcCBzdGF0dXMgY2FuIGJlIGNoYW5nZWQuXG4gICAgICovXG4gICAgc3RlcENsaWNrVmFsaWRhdG9yRm4oaW5kZXg6IG51bWJlcik6ICgpID0+IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFN0ZXBJbmRleCA9IHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuZ2V0Q3VycmVudFN0ZXBJbmRleCgpO1xuICAgICAgICAgICAgY29uc3QgaXNTdW1tYXJ5U3RlcCA9IHRoaXMuX3Zpc2libGVJdGVtc1tjdXJyZW50U3RlcEluZGV4XT8uc3VtbWFyeSA9PT0gdHJ1ZTtcblxuICAgICAgICAgICAgaWYgKGluZGV4ID09PSBjdXJyZW50U3RlcEluZGV4IHx8IGlzU3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuX3Zpc2libGVJdGVtcy5zbGljZSgwLCBpbmRleCkuZmluZCgoaSkgPT4gIWkuY29tcGxldGVkICYmICFpLnN1bW1hcnkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS52YWxpZGF0ZVN0ZXBGb3Jtcyh0cnVlKSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0VmlzaWJsZVN0ZXBzKClcbiAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSg1MCksIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHZpc2libGVTdGVwcykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3Zpc2libGVJdGVtcyA9IHZpc2libGVTdGVwcztcbiAgICAgICAgICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENhbGxiYWNrIGZ1bmN0aW9uIGZvciBzdGF0dXMgY2hhbmdlLlxuICAgICAqIEBwYXJhbSBpZCBzdGVwIElELlxuICAgICAqIEBwYXJhbSBzdGF0dXMgbmV3IHN0ZXAgc3RhdHVzLlxuICAgICAqL1xuICAgIHN0ZXBTdGF0dXNDaGFuZ2VkKGlkOiBzdHJpbmcsIHN0YXR1czogV2l6YXJkU3RlcFN0YXR1cyk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0YXR1c0NoYW5nZS5lbWl0KHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgc3RhdHVzXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc3RlcENsaWNrZWQoc3RlcElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc3RlcEluZGV4ID0gdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5nZXRTdGVwSW5kZXgoc3RlcElkKTtcbiAgICAgICAgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5zZXROZXh0U3RlcEluZGV4KHN0ZXBJbmRleCArIDEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcGFyYW0gX2luZGV4XG4gICAgICogQHBhcmFtIGl0ZW1cbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIF90cmFja0ZuKF9pbmRleDogbnVtYmVyLCBpdGVtOiBXaXphcmRHZW5lcmF0b3JJdGVtKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uaWQ7XG4gICAgfVxufVxuIiwiQGlmICh2aXNpYmxlSXRlbXMpIHtcbiAgICA8ZmQtd2l6YXJkXG4gICAgICAgIFtkaXNwbGF5U3VtbWFyeVN0ZXBdPVwiZGlzcGxheVN1bW1hcnlTdGVwXCJcbiAgICAgICAgW3Jlc3BvbnNpdmVQYWRkaW5nc109XCJyZXNwb25zaXZlUGFkZGluZ3NcIlxuICAgICAgICBbYXBwZW5kVG9XaXphcmRdPVwiYXBwZW5kVG9XaXphcmRcIlxuICAgICAgICBbY29udGVudEhlaWdodF09XCJjb250ZW50SGVpZ2h0XCJcbiAgICA+XG4gICAgICAgIDxmZC13aXphcmQtbmF2aWdhdGlvbj5cbiAgICAgICAgICAgIDx1bCBmZC13aXphcmQtcHJvZ3Jlc3MtYmFyPlxuICAgICAgICAgICAgICAgIEBmb3IgKHN0ZXAgb2YgdmlzaWJsZUl0ZW1zOyB0cmFjayBfdHJhY2tGbihpLCBzdGVwKTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC13aXphcmQtc3RlcFxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInN0ZXAubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RhdHVzXT1cInN0ZXAuc3RhdHVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25hbFRleHRdPVwic3RlcC5vcHRpb25hbFRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2JyYW5jaGluZ109XCIhIXN0ZXAuYnJhbmNoaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdGVwQ2xpY2tWYWxpZGF0b3JdPVwic3RlcENsaWNrVmFsaWRhdG9yRm4oaSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lzU3VtbWFyeV09XCIhIXN0ZXAuc3VtbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoc3RhdHVzQ2hhbmdlKT1cInN0ZXBTdGF0dXNDaGFuZ2VkKHN0ZXAuaWQsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKHN0ZXBDbGlja2VkKT1cInN0ZXBDbGlja2VkKHN0ZXAuaWQpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXdpemFyZC1zdGVwLWluZGljYXRvciBbZ2x5cGhdPVwic3RlcC5pY29uIHx8IG51bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFzdGVwLmljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaSArIDEgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLXdpemFyZC1zdGVwLWluZGljYXRvcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmZC13aXphcmQtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFzdGVwLnN1bW1hcnkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkcC13aXphcmQtZ2VuZXJhdG9yLXN0ZXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1bmlmaWVkTGF5b3V0XT1cInVuaWZpZWRMYXlvdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1dPVwic3RlcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RlcFN0YXR1c109XCJzdGVwLnN0YXR1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkcC13aXphcmQtZ2VuZXJhdG9yLXN0ZXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZHAtd2l6YXJkLXN1bW1hcnktc3RlcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbVN1bW1hcnlTdGVwVGVtcGxhdGVdPVwiY3VzdG9tU3VtbWFyeVN0ZXBUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhdHVzXT1cInN0ZXAuc3RhdHVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmRwLXdpemFyZC1zdW1tYXJ5LXN0ZXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAobmF2aWdhdGlvbkJ1dHRvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXdpemFyZC1uZXh0LXN0ZXAgW2NhbkhpZGVdPVwiYXBwZW5kVG9XaXphcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWlzTGFzdFN0ZXApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRHb05leHRCdXR0b25UZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkcC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmZENvbnRlbnREZW5zaXR5XT1cIm5hdmlnYXRpb25CdXR0b25MYWJlbHMuZ29OZXh0LmNvbnRlbnREZW5zaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidXR0b25UeXBlXT1cIm5hdmlnYXRpb25CdXR0b25MYWJlbHMuZ29OZXh0LnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIm5hdmlnYXRpb25CdXR0b25MYWJlbHMuZ29OZXh0LmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJnb05leHQuZW1pdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmRwLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFJldmlld0J1dHRvblRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmRwLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZkQ29udGVudERlbnNpdHldPVwibmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5yZXZpZXcuY29udGVudERlbnNpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2J1dHRvblR5cGVdPVwibmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5yZXZpZXcudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5yZXZpZXcubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvTmV4dC5lbWl0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9mZHAtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzQnJhbmNoaW5nU3RlcCAmJiAoIWlzQ3VycmVudFN0ZXBDb21wbGV0ZWQgfHwgc3RlcHNPcmRlckNoYW5nZWQpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaXNOZXh0U3RlcFN1bW1hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJnb05leHRCdXR0b25UZW1wbGF0ZSB8fCBkZWZhdWx0R29OZXh0QnV0dG9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZ29OZXh0OiBfZ29OZXh0Rm4gfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJldmlld0J1dHRvblRlbXBsYXRlIHx8IGRlZmF1bHRSZXZpZXdCdXR0b25UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBnb05leHQ6IF9nb05leHRGbiB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0RmluaXNoQnV0dG9uVGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZHAtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRDb250ZW50RGVuc2l0eV09XCJuYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmZpbmlzaC5jb250ZW50RGVuc2l0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYnV0dG9uVHlwZV09XCJuYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmZpbmlzaC50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJuYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmZpbmlzaC5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZmluaXNoLmVtaXQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkcC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmluaXNoQnV0dG9uVGVtcGxhdGUgfHwgZGVmYXVsdEZpbmlzaEJ1dHRvblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmluaXNoOiBfZmluaXNoRm4gfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtd2l6YXJkLW5leHQtc3RlcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLXdpemFyZC1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZmQtd2l6YXJkLW5hdmlnYXRpb24+XG4gICAgPC9mZC13aXphcmQ+XG59XG4iXX0=
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLWJvZHkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93aXphcmQtZ2VuZXJhdG9yL2NvbXBvbmVudHMvd2l6YXJkLWJvZHkvd2l6YXJkLWJvZHkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93aXphcmQtZ2VuZXJhdG9yL2NvbXBvbmVudHMvd2l6YXJkLWJvZHkvd2l6YXJkLWJvZHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc5QyxPQUFPLEVBQUUsWUFBWSxFQUFvQixNQUFNLDhCQUE4QixDQUFDO0FBRTlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUduRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUN4RyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQzs7OztBQXNCbEcsTUFBTSxP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T0Qsa0JBQWtCO3NCQURqQixLQUFLO2dCQU9OLHNCQUFzQjtzQkFEckIsS0FBSztnQkFRTixjQUFjO3NCQURiLEtBQUs7Z0JBUU4sYUFBYTtzQkFEWixLQUFLO2dCQU9OLFdBQVc7c0JBRFYsS0FBSztnQkFPTixVQUFVO3NCQURULEtBQUs7Z0JBT04saUJBQWlCO3NCQURoQixLQUFLO2dCQU9OLGtCQUFrQjtzQkFEakIsS0FBSztnQkFPTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBT04sb0JBQW9CO3NCQURuQixLQUFLO2dCQU9OLHlCQUF5QjtzQkFEeEIsS0FBSztnQkFLTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBT04sYUFBYTtzQkFEWixLQUFLO2dCQUtOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFLTixhQUFhO3NCQURaLEtBQUs7Z0JBS04sZUFBZTtzQkFEZCxLQUFLO2dCQUtOLHNCQUFzQjtzQkFEckIsS0FBSztnQkFLTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBT04sWUFBWTtzQkFEWCxNQUFNO2dCQU9QLE1BQU07c0JBREwsTUFBTTtnQkFPUCxNQUFNO3NCQURMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBEZXN0cm95UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgV2l6YXJkTW9kdWxlLCBXaXphcmRTdGVwU3RhdHVzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3dpemFyZCc7XG5cbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0vYnV0dG9uJztcbmltcG9ydCB7IFByZXBhcmVkV2l6YXJkR2VuZXJhdG9ySXRlbSwgV2l6YXJkR2VuZXJhdG9ySXRlbSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvd2l6YXJkLWdlbmVyYXRvci1pdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBXaXphcmROYXZpZ2F0aW9uQnV0dG9ucyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvd2l6YXJkLW5hdmlnYXRpb24tYnV0dG9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgV2l6YXJkR2VuZXJhdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL3dpemFyZC1nZW5lcmF0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBXaXphcmRHZW5lcmF0b3JTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi4vd2l6YXJkLWdlbmVyYXRvci1zdGVwL3dpemFyZC1nZW5lcmF0b3Itc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgV2l6YXJkU3VtbWFyeVN0ZXBDb21wb25lbnQgfSBmcm9tICcuLi93aXphcmQtc3VtbWFyeS1zdGVwL3dpemFyZC1zdW1tYXJ5LXN0ZXAuY29tcG9uZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBXaXphcmRTdGVwQ2hhbmdlIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHN0YXR1czogV2l6YXJkU3RlcFN0YXR1cztcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtd2l6YXJkLWJvZHknLFxuICAgIHRlbXBsYXRlVXJsOiAnLi93aXphcmQtYm9keS5jb21wb25lbnQuaHRtbCcsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgV2l6YXJkTW9kdWxlLFxuICAgICAgICBXaXphcmRHZW5lcmF0b3JTdGVwQ29tcG9uZW50LFxuICAgICAgICBXaXphcmRTdW1tYXJ5U3RlcENvbXBvbmVudCxcbiAgICAgICAgQnV0dG9uQ29tcG9uZW50LFxuICAgICAgICBDb250ZW50RGVuc2l0eURpcmVjdGl2ZSxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldFxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgV2l6YXJkQm9keUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFdoZXRoZXIgb3Igbm90IGFwcGx5IHJlc3BvbnNpdmUgcGFkZGluZ3Mgc3R5bGluZy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHJlc3BvbnNpdmVQYWRkaW5ncyA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQnV0dG9uIGxhYmVscyB0byBiZSB1c2VkIGluIFdpemFyZCBuYXZpZ2F0aW9uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBuYXZpZ2F0aW9uQnV0dG9uTGFiZWxzOiBSZXF1aXJlZDxXaXphcmROYXZpZ2F0aW9uQnV0dG9ucz47XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciBvciBub3QgdG8gYXBwZW5kIHRoZSBzdGVwIHRvIHRoZSB3aXphcmQuIElmIGZhbHNlLCBlYWNoIHN0ZXAgd2lsbCBiZSBkaXNwbGF5ZWQgb24gYSBkaWZmZXJlbnQgcGFnZS5cbiAgICAgKiBEZWZhdWx0IGlzIHRydWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhcHBlbmRUb1dpemFyZCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ3VzdG9tIGhlaWdodCB0byB1c2UgZm9yIHRoZSB3aXphcmQncyBjb250ZW50IHBhbmUuIEJ5IGRlZmF1bHQsIHRoaXMgdmFsdWUgaXMgY2FsYygxMDB2aCAtIDE0NHB4KSwgd2hlcmUgMTQ0cHhcbiAgICAgKiBpcyB0aGUgY29tYmluZWQgaGVpZ2h0IG9mIHRoZSBTaGVsbGJhciwgd2l6YXJkIGhlYWRlciBhbmQgd2l6YXJkIGZvb3Rlci5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbnRlbnRIZWlnaHQ6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciBvciBub3QgV2l6YXJkIGlzIGN1cnJlbnRseSBvbiB0aGUgZmlyc3Qgc3RlcFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgaXNGaXJzdFN0ZXAgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIFdpemFyZCBpcyBjdXJyZW50bHkgb24gdGhlIGxhc3Qgc3RlcC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGlzTGFzdFN0ZXAgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgbmV4dCBzdGVwIGlzIGEgU3VtbWFyeSBzdGVwLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgaXNOZXh0U3RlcFN1bW1hcnkgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBCb29sZWFuIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRvIGRpc3BsYXkgU3VtbWFyeSBzdGVwIGluIFdpemFyZCBwcm9ncmVzcyBiYXIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5U3VtbWFyeVN0ZXAgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFVzZXItZGVmaW5lZCB0ZW1wbGF0ZSBmb3IgXCJHbyBOZXh0XCIgYnV0dG9uLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZ29OZXh0QnV0dG9uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBVc2VyLWRlZmluZWQgdGVtcGxhdGUgZm9yIFwiRmluaXNoXCIgYnV0dG9uLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmluaXNoQnV0dG9uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBVc2VyLWRlZmluZWQgdGVtcGxhdGUgZm9yIHN1bW1hcnkgc3RlcC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGN1c3RvbVN1bW1hcnlTdGVwVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKiogVXNlci1kZWZpbmVkIHRlbXBsYXRlIGZvciBcIlJldmlld1wiIGJ1dHRvbiAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmV2aWV3QnV0dG9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSXMgY3VycmVudCBzdGVwIGlzIHN1bW1hcnkgc3RlcC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGlzU3VtbWFyeVN0ZXAgPSBmYWxzZTtcblxuICAgIC8qKiBJZiBuYXZpZ2F0aW9uIGJ1dHRvbnMgc2hvdWxkIGJlIHZpc2libGUuICovXG4gICAgQElucHV0KClcbiAgICBuYXZpZ2F0aW9uQnV0dG9ucyA9IHRydWU7XG5cbiAgICAvKiogV2hldGhlciBvciBub3QgYWxsIGZvcm0gaXRlbXMgc2hvdWxkIGhhdmUgaWRlbnRpY2FsIGxheW91dCBwcm92aWRlZCBmb3IgZm9ybSBncm91cC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHVuaWZpZWRMYXlvdXQgPSB0cnVlO1xuXG4gICAgLyoqIFdoZXRoZXIgY3VycmVudCBzdGVwIGlzIGEgYnJhbmNoaW5nIHN0ZXAuICovXG4gICAgQElucHV0KClcbiAgICBpc0JyYW5jaGluZ1N0ZXAgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIGN1cnJlbnQgc3RlcCBpcyBjb21wbGV0ZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIGlzQ3VycmVudFN0ZXBDb21wbGV0ZWQgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIG9yZGVyIG9mIHN0ZXBzIHdhcyBjaGFuZ2VkICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc3RlcHNPcmRlckNoYW5nZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBFbWl0cyB3aGVuIHNvbWUgc3RlcCBzdGF0dXMgaGFzIGJlZW4gY2hhbmdlZC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBzdGF0dXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFdpemFyZFN0ZXBDaGFuZ2U+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRW1pdHMgd2hlbiBcIkdvIG5leHRcIiBidXR0b24gaGFzIGJlZW4gY2xpY2tlZFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGdvTmV4dCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBFbWl0cyB3aGVuIFwiRmluaXNoXCIgYnV0dG9uIGhhcyBiZWVuIGNsaWNrZWRcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBmaW5pc2ggPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQW4gUnhKUyBTdWJqZWN0IHRoYXQgd2lsbCBraWxsIHRoZSBkYXRhIHN0cmVhbSB1cG9uIGNvbXBvbmVudOKAmXMgZGVzdHJ1Y3Rpb24gKGZvciB1bnN1YnNjcmliaW5nKVxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfdmlzaWJsZUl0ZW1zOiBQcmVwYXJlZFdpemFyZEdlbmVyYXRvckl0ZW1bXTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBcnJheSBvZiB2aXNpYmxlIFdpemFyZCBTdGVwcy5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICAgIHNldCB2aXNpYmxlSXRlbXMoaXRlbXM6IFByZXBhcmVkV2l6YXJkR2VuZXJhdG9ySXRlbVtdKSB7XG4gICAgICAgIHRoaXMuX3Zpc2libGVJdGVtcyA9IGl0ZW1zO1xuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICAgIGdldCB2aXNpYmxlSXRlbXMoKTogUHJlcGFyZWRXaXphcmRHZW5lcmF0b3JJdGVtW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZUl0ZW1zIHx8IHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuaXRlbXM7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF93aXphcmRHZW5lcmF0b3JTZXJ2aWNlOiBXaXphcmRHZW5lcmF0b3JTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHt9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX2dvTmV4dEZuOiAoKSA9PiB2b2lkID0gKCkgPT4gdGhpcy5nb05leHQuZW1pdCgpO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIF9maW5pc2hGbjogKCkgPT4gdm9pZCA9ICgpID0+IHRoaXMuZmluaXNoLmVtaXQoKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDdXN0b20gc3RlcCBzdGF0dXMgY2hhbmdlIHZhbGlkYXRvciBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0gaW5kZXggQ3VycmVudCBzdGVwIGluZGV4LlxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fSBJZiB0aGlzIHN0ZXAgc3RhdHVzIGNhbiBiZSBjaGFuZ2VkLlxuICAgICAqL1xuICAgIHN0ZXBDbGlja1ZhbGlkYXRvckZuKGluZGV4OiBudW1iZXIpOiAoKSA9PiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwSW5kZXggPSB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLmdldEN1cnJlbnRTdGVwSW5kZXgoKTtcbiAgICAgICAgICAgIGNvbnN0IGlzU3VtbWFyeVN0ZXAgPSB0aGlzLl92aXNpYmxlSXRlbXNbY3VycmVudFN0ZXBJbmRleF0/LnN1bW1hcnkgPT09IHRydWU7XG5cbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gY3VycmVudFN0ZXBJbmRleCB8fCBpc1N1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl92aXNpYmxlSXRlbXMuc2xpY2UoMCwgaW5kZXgpLmZpbmQoKGkpID0+ICFpLmNvbXBsZXRlZCAmJiAhaS5zdW1tYXJ5KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UudmFsaWRhdGVTdGVwRm9ybXModHJ1ZSkpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZVxuICAgICAgICAgICAgLmdldFZpc2libGVTdGVwcygpXG4gICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoNTApLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCh2aXNpYmxlU3RlcHMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl92aXNpYmxlSXRlbXMgPSB2aXNpYmxlU3RlcHM7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENhbGxiYWNrIGZ1bmN0aW9uIGZvciBzdGF0dXMgY2hhbmdlLlxuICAgICAqIEBwYXJhbSBpZCBzdGVwIElELlxuICAgICAqIEBwYXJhbSBzdGF0dXMgbmV3IHN0ZXAgc3RhdHVzLlxuICAgICAqL1xuICAgIHN0ZXBTdGF0dXNDaGFuZ2VkKGlkOiBzdHJpbmcsIHN0YXR1czogV2l6YXJkU3RlcFN0YXR1cyk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0YXR1c0NoYW5nZS5lbWl0KHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgc3RhdHVzXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc3RlcENsaWNrZWQoc3RlcElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc3RlcEluZGV4ID0gdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5nZXRTdGVwSW5kZXgoc3RlcElkKTtcbiAgICAgICAgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5zZXROZXh0U3RlcEluZGV4KHN0ZXBJbmRleCArIDEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAcGFyYW0gX2luZGV4XG4gICAgICogQHBhcmFtIGl0ZW1cbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIF90cmFja0ZuKF9pbmRleDogbnVtYmVyLCBpdGVtOiBXaXphcmRHZW5lcmF0b3JJdGVtKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uaWQ7XG4gICAgfVxufVxuIiwiQGlmICh2aXNpYmxlSXRlbXMpIHtcbiAgICA8ZmQtd2l6YXJkXG4gICAgICAgIFtkaXNwbGF5U3VtbWFyeVN0ZXBdPVwiZGlzcGxheVN1bW1hcnlTdGVwXCJcbiAgICAgICAgW3Jlc3BvbnNpdmVQYWRkaW5nc109XCJyZXNwb25zaXZlUGFkZGluZ3NcIlxuICAgICAgICBbYXBwZW5kVG9XaXphcmRdPVwiYXBwZW5kVG9XaXphcmRcIlxuICAgICAgICBbY29udGVudEhlaWdodF09XCJjb250ZW50SGVpZ2h0XCJcbiAgICA+XG4gICAgICAgIDxmZC13aXphcmQtbmF2aWdhdGlvbj5cbiAgICAgICAgICAgIDx1bCBmZC13aXphcmQtcHJvZ3Jlc3MtYmFyPlxuICAgICAgICAgICAgICAgIEBmb3IgKHN0ZXAgb2YgdmlzaWJsZUl0ZW1zOyB0cmFjayBfdHJhY2tGbihpLCBzdGVwKTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC13aXphcmQtc3RlcFxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInN0ZXAubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RhdHVzXT1cInN0ZXAuc3RhdHVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25hbFRleHRdPVwic3RlcC5vcHRpb25hbFRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2JyYW5jaGluZ109XCIhIXN0ZXAuYnJhbmNoaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdGVwQ2xpY2tWYWxpZGF0b3JdPVwic3RlcENsaWNrVmFsaWRhdG9yRm4oaSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lzU3VtbWFyeV09XCIhIXN0ZXAuc3VtbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoc3RhdHVzQ2hhbmdlKT1cInN0ZXBTdGF0dXNDaGFuZ2VkKHN0ZXAuaWQsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKHN0ZXBDbGlja2VkKT1cInN0ZXBDbGlja2VkKHN0ZXAuaWQpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXdpemFyZC1zdGVwLWluZGljYXRvciBbZ2x5cGhdPVwic3RlcC5pY29uIHx8IG51bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFzdGVwLmljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaSArIDEgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLXdpemFyZC1zdGVwLWluZGljYXRvcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmZC13aXphcmQtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKCFzdGVwLnN1bW1hcnkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkcC13aXphcmQtZ2VuZXJhdG9yLXN0ZXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1bmlmaWVkTGF5b3V0XT1cInVuaWZpZWRMYXlvdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1dPVwic3RlcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RlcFN0YXR1c109XCJzdGVwLnN0YXR1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkcC13aXphcmQtZ2VuZXJhdG9yLXN0ZXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZHAtd2l6YXJkLXN1bW1hcnktc3RlcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbVN1bW1hcnlTdGVwVGVtcGxhdGVdPVwiY3VzdG9tU3VtbWFyeVN0ZXBUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhdHVzXT1cInN0ZXAuc3RhdHVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmRwLXdpemFyZC1zdW1tYXJ5LXN0ZXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAobmF2aWdhdGlvbkJ1dHRvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXdpemFyZC1uZXh0LXN0ZXAgW2NhbkhpZGVdPVwiYXBwZW5kVG9XaXphcmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIWlzTGFzdFN0ZXApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRHb05leHRCdXR0b25UZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkcC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmZENvbnRlbnREZW5zaXR5XT1cIm5hdmlnYXRpb25CdXR0b25MYWJlbHMuZ29OZXh0LmNvbnRlbnREZW5zaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidXR0b25UeXBlXT1cIm5hdmlnYXRpb25CdXR0b25MYWJlbHMuZ29OZXh0LnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIm5hdmlnYXRpb25CdXR0b25MYWJlbHMuZ29OZXh0LmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJnb05leHQuZW1pdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmRwLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFJldmlld0J1dHRvblRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmRwLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZkQ29udGVudERlbnNpdHldPVwibmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5yZXZpZXcuY29udGVudERlbnNpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2J1dHRvblR5cGVdPVwibmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5yZXZpZXcudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5yZXZpZXcubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdvTmV4dC5lbWl0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9mZHAtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzQnJhbmNoaW5nU3RlcCAmJiAoIWlzQ3VycmVudFN0ZXBDb21wbGV0ZWQgfHwgc3RlcHNPcmRlckNoYW5nZWQpKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaXNOZXh0U3RlcFN1bW1hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJnb05leHRCdXR0b25UZW1wbGF0ZSB8fCBkZWZhdWx0R29OZXh0QnV0dG9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZ29OZXh0OiBfZ29OZXh0Rm4gfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJldmlld0J1dHRvblRlbXBsYXRlIHx8IGRlZmF1bHRSZXZpZXdCdXR0b25UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBnb05leHQ6IF9nb05leHRGbiB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0RmluaXNoQnV0dG9uVGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZHAtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRDb250ZW50RGVuc2l0eV09XCJuYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmZpbmlzaC5jb250ZW50RGVuc2l0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYnV0dG9uVHlwZV09XCJuYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmZpbmlzaC50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJuYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmZpbmlzaC5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZmluaXNoLmVtaXQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkcC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmluaXNoQnV0dG9uVGVtcGxhdGUgfHwgZGVmYXVsdEZpbmlzaEJ1dHRvblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmluaXNoOiBfZmluaXNoRm4gfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtd2l6YXJkLW5leHQtc3RlcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLXdpemFyZC1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZmQtd2l6YXJkLW5hdmlnYXRpb24+XG4gICAgPC9mZC13aXphcmQ+XG59XG4iXX0=