valtech-components 4.0.5 → 4.0.7

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 (72) hide show
  1. package/esm2022/lib/components/atoms/box/box.component.mjs +3 -3
  2. package/esm2022/lib/components/atoms/button/button.component.mjs +15 -5
  3. package/esm2022/lib/components/atoms/fab/fab.component.mjs +12 -18
  4. package/esm2022/lib/components/atoms/fab/types.mjs +1 -1
  5. package/esm2022/lib/components/atoms/horizontal-scroll/horizontal-scroll.component.mjs +5 -7
  6. package/esm2022/lib/components/atoms/progress-bar/progress-bar.component.mjs +3 -1
  7. package/esm2022/lib/components/atoms/progress-bar/types.mjs +1 -1
  8. package/esm2022/lib/components/molecules/accordion/accordion.component.mjs +4 -6
  9. package/esm2022/lib/components/molecules/action-card/action-card.component.mjs +9 -9
  10. package/esm2022/lib/components/molecules/article-card/article-card.component.mjs +5 -5
  11. package/esm2022/lib/components/molecules/breadcrumb/breadcrumb.component.mjs +5 -5
  12. package/esm2022/lib/components/molecules/card/card.component.mjs +19 -9
  13. package/esm2022/lib/components/molecules/chip-group/chip-group.component.mjs +21 -13
  14. package/esm2022/lib/components/molecules/code-display/code-display.component.mjs +5 -5
  15. package/esm2022/lib/components/molecules/comment/comment.component.mjs +31 -58
  16. package/esm2022/lib/components/molecules/content-loader/content-loader.component.mjs +13 -3
  17. package/esm2022/lib/components/molecules/date-picker/date-picker.component.mjs +7 -15
  18. package/esm2022/lib/components/molecules/date-range-input/date-range-input.component.mjs +6 -10
  19. package/esm2022/lib/components/molecules/docs-code-example/docs-code-example.component.mjs +13 -5
  20. package/esm2022/lib/components/molecules/docs-nav-links/docs-nav-links.component.mjs +7 -13
  21. package/esm2022/lib/components/molecules/docs-search/docs-search.component.mjs +12 -28
  22. package/esm2022/lib/components/molecules/expandable-text/expandable-text.component.mjs +16 -4
  23. package/esm2022/lib/components/molecules/features-list/features-list.component.mjs +5 -5
  24. package/esm2022/lib/components/molecules/feedback-form/feedback-form.component.mjs +5 -5
  25. package/esm2022/lib/components/molecules/file-input/file-input.component.mjs +9 -3
  26. package/esm2022/lib/components/molecules/footer-links/footer-links.component.mjs +25 -5
  27. package/esm2022/lib/components/molecules/glow-card/glow-card.component.mjs +17 -5
  28. package/esm2022/lib/components/molecules/language-selector/language-selector.component.mjs +7 -5
  29. package/esm2022/lib/components/molecules/link/link.component.mjs +3 -3
  30. package/esm2022/lib/components/molecules/media-object/media-object.component.mjs +3 -3
  31. package/esm2022/lib/components/molecules/metric-card/metric-card.component.mjs +5 -3
  32. package/esm2022/lib/components/molecules/number-stepper/number-stepper.component.mjs +9 -13
  33. package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +11 -3
  34. package/esm2022/lib/components/molecules/pill/pill.component.mjs +7 -7
  35. package/esm2022/lib/components/molecules/plain-code-box/plain-code-box.component.mjs +17 -5
  36. package/esm2022/lib/components/molecules/popover-selector/popover-selector.component.mjs +7 -7
  37. package/esm2022/lib/components/molecules/segment-control/segment-control.component.mjs +3 -3
  38. package/esm2022/lib/components/molecules/select-search/select-search.component.mjs +15 -3
  39. package/esm2022/lib/components/molecules/share-buttons/share-buttons.component.mjs +3 -1
  40. package/esm2022/lib/components/molecules/stats-card/stats-card.component.mjs +5 -5
  41. package/esm2022/lib/components/molecules/stepper/stepper.component.mjs +11 -13
  42. package/esm2022/lib/components/molecules/tabs/tabs.component.mjs +4 -6
  43. package/esm2022/lib/components/molecules/ticket-card/ticket-card.component.mjs +3 -3
  44. package/esm2022/lib/components/organisms/auth-cta/auth-cta.component.mjs +3 -3
  45. package/esm2022/lib/components/organisms/avatar-upload/avatar-upload.component.mjs +3 -3
  46. package/esm2022/lib/components/organisms/bottom-nav/bottom-nav.component.mjs +5 -5
  47. package/esm2022/lib/components/organisms/cookie-banner/cookie-banner.component.mjs +3 -1
  48. package/esm2022/lib/components/organisms/cookie-banner/types.mjs +1 -1
  49. package/esm2022/lib/components/organisms/data-table/data-table.component.mjs +22 -14
  50. package/esm2022/lib/components/organisms/infinite-list/infinite-list.component.mjs +31 -13
  51. package/esm2022/lib/components/organisms/login/login.component.mjs +3 -3
  52. package/esm2022/lib/components/organisms/toolbar/toolbar.component.mjs +73 -17
  53. package/esm2022/lib/services/page-state/page-state.i18n.mjs +19 -0
  54. package/esm2022/lib/services/page-state/page-state.mjs +101 -0
  55. package/esm2022/lib/version.mjs +2 -2
  56. package/esm2022/public-api.mjs +4 -1
  57. package/fesm2022/valtech-components.mjs +603 -346
  58. package/fesm2022/valtech-components.mjs.map +1 -1
  59. package/lib/components/atoms/fab/types.d.ts +4 -0
  60. package/lib/components/atoms/progress-bar/types.d.ts +2 -0
  61. package/lib/components/atoms/rights-footer/rights-footer.component.d.ts +2 -2
  62. package/lib/components/atoms/text/text.component.d.ts +1 -1
  63. package/lib/components/atoms/user-avatar/user-avatar.component.d.ts +1 -1
  64. package/lib/components/molecules/features-list/features-list.component.d.ts +1 -1
  65. package/lib/components/organisms/article/article.component.d.ts +4 -4
  66. package/lib/components/organisms/cookie-banner/types.d.ts +2 -0
  67. package/lib/components/organisms/landing-steps/landing-steps.component.d.ts +1 -1
  68. package/lib/services/page-state/page-state.d.ts +74 -0
  69. package/lib/services/page-state/page-state.i18n.d.ts +6 -0
  70. package/lib/version.d.ts +1 -1
  71. package/package.json +1 -1
  72. package/public-api.d.ts +1 -0
@@ -73,9 +73,7 @@ export class ChipGroupComponent {
73
73
  }
74
74
  }
75
75
  resolveProps() {
76
- const presetProps = this.preset
77
- ? this.presets.get('chipGroup', this.preset)
78
- : {};
76
+ const presetProps = this.preset ? this.presets.get('chipGroup', this.preset) : {};
79
77
  this.resolvedProps = {
80
78
  ...presetProps,
81
79
  ...this.props,
@@ -101,7 +99,7 @@ export class ChipGroupComponent {
101
99
  }
102
100
  else {
103
101
  // Single selection: deselect all others
104
- this.resolvedProps.chips.forEach((c) => {
102
+ this.resolvedProps.chips.forEach(c => {
105
103
  c.selected = c.value === chip.value ? !c.selected : false;
106
104
  });
107
105
  }
@@ -119,8 +117,8 @@ export class ChipGroupComponent {
119
117
  }
120
118
  }
121
119
  emitSelectionChange() {
122
- const selected = this.resolvedProps.chips.filter((c) => c.selected);
123
- const values = selected.map((c) => c.value);
120
+ const selected = this.resolvedProps.chips.filter(c => c.selected);
121
+ const values = selected.map(c => c.value);
124
122
  this.selectionChange.emit({
125
123
  selected: this.resolvedProps.multiple ? selected : selected[0],
126
124
  values: this.resolvedProps.multiple ? values : values[0],
@@ -142,14 +140,19 @@ export class ChipGroupComponent {
142
140
  (keydown.space)="onChipKey($event, chip)"
143
141
  >
144
142
  @if (chip.icon) {
145
- <ion-icon [name]="chip.icon"></ion-icon>
143
+ <ion-icon [name]="chip.icon" aria-hidden="true"></ion-icon>
146
144
  }
147
145
  @if (chip.selected && resolvedProps.selectable) {
148
- <ion-icon name="checkmark" class="selected-icon"></ion-icon>
146
+ <ion-icon name="checkmark" class="selected-icon" aria-hidden="true"></ion-icon>
149
147
  }
150
148
  <ion-label>{{ getChipLabel(chip) }}</ion-label>
151
149
  @if (resolvedProps.removable && !chip.disabled) {
152
- <button type="button" class="remove-button" [attr.aria-label]="removeLabel(chip)" (click)="onRemoveChip($event, chip)">
150
+ <button
151
+ type="button"
152
+ class="remove-button"
153
+ [attr.aria-label]="removeLabel(chip)"
154
+ (click)="onRemoveChip($event, chip)"
155
+ >
153
156
  <ion-icon name="close" class="remove-icon" aria-hidden="true"></ion-icon>
154
157
  </button>
155
158
  }
@@ -175,14 +178,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
175
178
  (keydown.space)="onChipKey($event, chip)"
176
179
  >
177
180
  @if (chip.icon) {
178
- <ion-icon [name]="chip.icon"></ion-icon>
181
+ <ion-icon [name]="chip.icon" aria-hidden="true"></ion-icon>
179
182
  }
180
183
  @if (chip.selected && resolvedProps.selectable) {
181
- <ion-icon name="checkmark" class="selected-icon"></ion-icon>
184
+ <ion-icon name="checkmark" class="selected-icon" aria-hidden="true"></ion-icon>
182
185
  }
183
186
  <ion-label>{{ getChipLabel(chip) }}</ion-label>
184
187
  @if (resolvedProps.removable && !chip.disabled) {
185
- <button type="button" class="remove-button" [attr.aria-label]="removeLabel(chip)" (click)="onRemoveChip($event, chip)">
188
+ <button
189
+ type="button"
190
+ class="remove-button"
191
+ [attr.aria-label]="removeLabel(chip)"
192
+ (click)="onRemoveChip($event, chip)"
193
+ >
186
194
  <ion-icon name="close" class="remove-icon" aria-hidden="true"></ion-icon>
187
195
  </button>
188
196
  }
@@ -201,4 +209,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
201
209
  }], chipClick: [{
202
210
  type: Output
203
211
  }] } });
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NoaXAtZ3JvdXAvY2hpcC1ncm91cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsWUFBWSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRWxELFFBQVEsQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBRS9COzs7R0FHRztBQUNILE1BQU0sZUFBZSxHQUFHO0lBQ3RCLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRTtJQUNsQyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUU7Q0FDakMsQ0FBQztBQXNDRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JHO0FBQ0gsTUFBTSxPQUFPLGtCQUFrQjtJQWE3QjtRQVpRLFlBQU8sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDaEMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUcxQixVQUFLLEdBQStCLEVBQUUs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TSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDekQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0F2R1Usa0JBQWtCO21HQUFsQixrQkFBa0IsZ1BBekRuQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2QlQsMGhJQTlCUyxZQUFZLCtCQUFFLE9BQU8sdUdBQUUsT0FBTywySkFBRSxRQUFROzs0RkEwRHZDLGtCQUFrQjtrQkE3RDlCLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBQ2QsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLFlBQ3pDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZCVDt3REFnQ1EsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFJSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25DaGlwLCBJb25JY29uLCBJb25MYWJlbCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBQcmVzZXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcHJlc2V0cyc7XG5pbXBvcnQgeyBDaGlwR3JvdXBNZXRhZGF0YSwgQ2hpcE1ldGFkYXRhLCBDaGlwU2VsZWN0aW9uRXZlbnQsIENoaXBSZW1vdmVFdmVudCB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyBjbG9zZSwgY2hlY2ttYXJrIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5hZGRJY29ucyh7IGNsb3NlLCBjaGVja21hcmsgfSk7XG5cbi8qKlxuICogRGVmYXVsdHMgaTE4biAoZXMvZW4pIOKAlCBhdXRvLXJlZ2lzdHJhZG9zIHNpIGVsIGNvbnN1bWVyIG5vIHByb3ZlecOzIGVsXG4gKiBuYW1lc3BhY2UgYENoaXBHcm91cGAuIEN1YnJlIGVsIGFyaWEtbGFiZWwgZGVsIGJvdMOzbiBlbGltaW5hci5cbiAqL1xuY29uc3QgQ0hJUF9HUk9VUF9JMThOID0ge1xuICBlczogeyByZW1vdmU6ICdFbGltaW5hciB7bGFiZWx9JyB9LFxuICBlbjogeyByZW1vdmU6ICdSZW1vdmUge2xhYmVsfScgfSxcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1jaGlwLWdyb3VwJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uQ2hpcCwgSW9uSWNvbiwgSW9uTGFiZWxdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJjaGlwLWdyb3VwXCIgW2NsYXNzLndyYXBdPVwicmVzb2x2ZWRQcm9wcy53cmFwICE9PSBmYWxzZVwiPlxuICAgICAgQGZvciAoY2hpcCBvZiByZXNvbHZlZFByb3BzLmNoaXBzOyB0cmFjayBjaGlwLnZhbHVlKSB7XG4gICAgICAgIDxpb24tY2hpcFxuICAgICAgICAgIFtjb2xvcl09XCJnZXRDaGlwQ29sb3IoY2hpcClcIlxuICAgICAgICAgIFtvdXRsaW5lXT1cInJlc29sdmVkUHJvcHMub3V0bGluZSAmJiAhY2hpcC5zZWxlY3RlZFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImNoaXAuZGlzYWJsZWRcIlxuICAgICAgICAgIFthdHRyLnJvbGVdPVwicmVzb2x2ZWRQcm9wcy5zZWxlY3RhYmxlID8gJ2J1dHRvbicgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJyZXNvbHZlZFByb3BzLnNlbGVjdGFibGUgJiYgIWNoaXAuZGlzYWJsZWQgPyAwIDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1wcmVzc2VkXT1cInJlc29sdmVkUHJvcHMuc2VsZWN0YWJsZSA/ICEhY2hpcC5zZWxlY3RlZCA6IG51bGxcIlxuICAgICAgICAgIChjbGljayk9XCJvbkNoaXBDbGljayhjaGlwKVwiXG4gICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib25DaGlwS2V5KCRldmVudCwgY2hpcClcIlxuICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cIm9uQ2hpcEtleSgkZXZlbnQsIGNoaXApXCJcbiAgICAgICAgPlxuICAgICAgICAgIEBpZiAoY2hpcC5pY29uKSB7XG4gICAgICAgICAgICA8aW9uLWljb24gW25hbWVdPVwiY2hpcC5pY29uXCI+PC9pb24taWNvbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChjaGlwLnNlbGVjdGVkICYmIHJlc29sdmVkUHJvcHMuc2VsZWN0YWJsZSkge1xuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGVja21hcmtcIiBjbGFzcz1cInNlbGVjdGVkLWljb25cIj48L2lvbi1pY29uPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8aW9uLWxhYmVsPnt7IGdldENoaXBMYWJlbChjaGlwKSB9fTwvaW9uLWxhYmVsPlxuICAgICAgICAgIEBpZiAocmVzb2x2ZWRQcm9wcy5yZW1vdmFibGUgJiYgIWNoaXAuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwicmVtb3ZlLWJ1dHRvblwiIFthdHRyLmFyaWEtbGFiZWxdPVwicmVtb3ZlTGFiZWwoY2hpcClcIiAoY2xpY2spPVwib25SZW1vdmVDaGlwKCRldmVudCwgY2hpcClcIj5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZVwiIGNsYXNzPVwicmVtb3ZlLWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgfVxuICAgICAgICA8L2lvbi1jaGlwPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9jaGlwLWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtY2hpcC1ncm91cFxuICpcbiAqIEEgZ3JvdXAgb2YgY2hpcHMgZm9yIHRhZ3MsIGZpbHRlcnMsIG9yIHNlbGVjdGlvbnMuXG4gKiBTdXBwb3J0cyBwcmVzZXRzIGZvciByZXVzYWJsZSBjb25maWd1cmF0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZSBXaXRoIHByZXNldDpcbiAqIDx2YWwtY2hpcC1ncm91cCBwcmVzZXQ9XCJ0YWdzXCIgW3Byb3BzXT1cInsgY2hpcHM6IFsuLi5dIH1cIj48L3ZhbC1jaGlwLWdyb3VwPlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHNlbGVjdGFibGVcbiAqIDx2YWwtY2hpcC1ncm91cCBbcHJvcHNdPVwie1xuICogICBjaGlwczogW1xuICogICAgIHsgdmFsdWU6ICdhbmd1bGFyJywgbGFiZWw6ICdBbmd1bGFyJyB9LFxuICogICAgIHsgdmFsdWU6ICdyZWFjdCcsIGxhYmVsOiAnUmVhY3QnIH0sXG4gKiAgICAgeyB2YWx1ZTogJ3Z1ZScsIGxhYmVsOiAnVnVlJyB9XG4gKiAgIF0sXG4gKiAgIHNlbGVjdGFibGU6IHRydWUsXG4gKiAgIG11bHRpcGxlOiB0cnVlXG4gKiB9XCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCI+PC92YWwtY2hpcC1ncm91cD5cbiAqXG4gKiBAaW5wdXQgcHJlc2V0OiBzdHJpbmcgLSBOYW1lIG9mIHByZXNldCB0byBhcHBseVxuICogQGlucHV0IHByb3BzOiBDaGlwR3JvdXBNZXRhZGF0YSAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBjaGlwIGdyb3VwXG4gKiBAb3V0cHV0IHNlbGVjdGlvbkNoYW5nZTogQ2hpcFNlbGVjdGlvbkV2ZW50IC0gRW1pdHMgd2hlbiBzZWxlY3Rpb24gY2hhbmdlc1xuICogQG91dHB1dCBjaGlwUmVtb3ZlOiBDaGlwUmVtb3ZlRXZlbnQgLSBFbWl0cyB3aGVuIGEgY2hpcCBpcyByZW1vdmVkXG4gKi9cbmV4cG9ydCBjbGFzcyBDaGlwR3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIHByaXZhdGUgcHJlc2V0cyA9IGluamVjdChQcmVzZXRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcblxuICBASW5wdXQoKSBwcmVzZXQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHByb3BzOiBQYXJ0aWFsPENoaXBHcm91cE1ldGFkYXRhPiA9IHt9O1xuXG4gIHJlc29sdmVkUHJvcHM6IENoaXBHcm91cE1ldGFkYXRhID0ge30gYXMgQ2hpcEdyb3VwTWV0YWRhdGE7XG5cbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2hpcFNlbGVjdGlvbkV2ZW50PigpO1xuICBAT3V0cHV0KCkgY2hpcFJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2hpcFJlbW92ZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgY2hpcENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxDaGlwTWV0YWRhdGE+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmkxOG4uaGFzTmFtZXNwYWNlKCdDaGlwR3JvdXAnKSkge1xuICAgICAgdGhpcy5pMThuLnJlZ2lzdGVyQ29udGVudCgnQ2hpcEdyb3VwJywgQ0hJUF9HUk9VUF9JMThOKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnJlc29sdmVQcm9wcygpO1xuICB9XG5cbiAgcmVtb3ZlTGFiZWwoY2hpcDogQ2hpcE1ldGFkYXRhKTogc3RyaW5nIHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIHJldHVybiB0aGlzLmkxOG4udCgncmVtb3ZlJywgJ0NoaXBHcm91cCcsIHsgbGFiZWw6IHRoaXMuZ2V0Q2hpcExhYmVsKGNoaXApIH0pO1xuICB9XG5cbiAgLyoqIEFjdGl2YWNpw7NuIGRlIGNoaXAgc2VsZWN0YWJsZSBwb3IgdGVjbGFkbyAoRW50ZXIvU3BhY2UpLiAqL1xuICBvbkNoaXBLZXkoZXZlbnQ6IEV2ZW50LCBjaGlwOiBDaGlwTWV0YWRhdGEpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucmVzb2x2ZWRQcm9wcy5zZWxlY3RhYmxlKSByZXR1cm47XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLm9uQ2hpcENsaWNrKGNoaXApO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydwcmVzZXQnXSB8fCBjaGFuZ2VzWydwcm9wcyddKSB7XG4gICAgICB0aGlzLnJlc29sdmVQcm9wcygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVByb3BzKCk6IHZvaWQge1xuICAgIGNvbnN0IHByZXNldFByb3BzID0gdGhpcy5wcmVzZXRcbiAgICAgID8gKHRoaXMucHJlc2V0cy5nZXQoJ2NoaXBHcm91cCcsIHRoaXMucHJlc2V0KSBhcyBQYXJ0aWFsPENoaXBHcm91cE1ldGFkYXRhPilcbiAgICAgIDoge307XG5cbiAgICB0aGlzLnJlc29sdmVkUHJvcHMgPSB7XG4gICAgICAuLi5wcmVzZXRQcm9wcyxcbiAgICAgIC4uLnRoaXMucHJvcHMsXG4gICAgfSBhcyBDaGlwR3JvdXBNZXRhZGF0YTtcbiAgfVxuXG4gIGdldENoaXBDb2xvcihjaGlwOiBDaGlwTWV0YWRhdGEpOiBzdHJpbmcge1xuICAgIGlmIChjaGlwLnNlbGVjdGVkICYmIHRoaXMucmVzb2x2ZWRQcm9wcy5zZWxlY3RlZENvbG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXNvbHZlZFByb3BzLnNlbGVjdGVkQ29sb3I7XG4gICAgfVxuICAgIHJldHVybiBjaGlwLmNvbG9yIHx8IHRoaXMucmVzb2x2ZWRQcm9wcy5jb2xvciB8fCAncHJpbWFyeSc7XG4gIH1cblxuICBnZXRDaGlwTGFiZWwoY2hpcDogQ2hpcE1ldGFkYXRhKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY2hpcC5sYWJlbCB8fCBjaGlwLmNvbnRlbnRGYWxsYmFjayB8fCAnJztcbiAgfVxuXG4gIG9uQ2hpcENsaWNrKGNoaXA6IENoaXBNZXRhZGF0YSk6IHZvaWQge1xuICAgIGlmIChjaGlwLmRpc2FibGVkKSByZXR1cm47XG5cbiAgICB0aGlzLmNoaXBDbGljay5lbWl0KGNoaXApO1xuXG4gICAgaWYgKCF0aGlzLnJlc29sdmVkUHJvcHMuc2VsZWN0YWJsZSkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcy5tdWx0aXBsZSkge1xuICAgICAgY2hpcC5zZWxlY3RlZCA9ICFjaGlwLnNlbGVjdGVkO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTaW5nbGUgc2VsZWN0aW9uOiBkZXNlbGVjdCBhbGwgb3RoZXJzXG4gICAgICB0aGlzLnJlc29sdmVkUHJvcHMuY2hpcHMuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICBjLnNlbGVjdGVkID0gYy52YWx1ZSA9PT0gY2hpcC52YWx1ZSA/ICFjLnNlbGVjdGVkIDogZmFsc2U7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRTZWxlY3Rpb25DaGFuZ2UoKTtcbiAgfVxuXG4gIG9uUmVtb3ZlQ2hpcChldmVudDogRXZlbnQsIGNoaXA6IENoaXBNZXRhZGF0YSk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnJlc29sdmVkUHJvcHMuY2hpcHMuaW5kZXhPZihjaGlwKTtcbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgdGhpcy5yZXNvbHZlZFByb3BzLmNoaXBzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB0aGlzLmNoaXBSZW1vdmUuZW1pdCh7XG4gICAgICAgIGNoaXAsXG4gICAgICAgIHJlbWFpbmluZzogWy4uLnRoaXMucmVzb2x2ZWRQcm9wcy5jaGlwc10sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGVtaXRTZWxlY3Rpb25DaGFuZ2UoKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnJlc29sdmVkUHJvcHMuY2hpcHMuZmlsdGVyKChjKSA9PiBjLnNlbGVjdGVkKTtcbiAgICBjb25zdCB2YWx1ZXMgPSBzZWxlY3RlZC5tYXAoKGMpID0+IGMudmFsdWUpO1xuXG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh7XG4gICAgICBzZWxlY3RlZDogdGhpcy5yZXNvbHZlZFByb3BzLm11bHRpcGxlID8gc2VsZWN0ZWQgOiBzZWxlY3RlZFswXSxcbiAgICAgIHZhbHVlczogdGhpcy5yZXNvbHZlZFByb3BzLm11bHRpcGxlID8gdmFsdWVzIDogdmFsdWVzWzBdLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
212
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NoaXAtZ3JvdXAvY2hpcC1ncm91cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsWUFBWSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRWxELFFBQVEsQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBRS9COzs7R0FHRztBQUNILE1BQU0sZUFBZSxHQUFHO0lBQ3RCLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRTtJQUNsQyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUU7Q0FDakMsQ0FBQztBQTJDRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JHO0FBQ0gsTUFBTSxPQUFPLGtCQUFrQjtJQWE3QjtRQVpRLFlBQU8sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDaEMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUcxQixVQUFLLEdBQStCLEVBQUUs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LGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztTQUN6RCxDQUFDLENBQUM7SUFDTCxDQUFDOytHQXJHVSxrQkFBa0I7bUdBQWxCLGtCQUFrQixnUEE5RG5COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0NULDBoSUFuQ1MsWUFBWSwrQkFBRSxPQUFPLHVHQUFFLE9BQU8sMkpBQUUsUUFBUTs7NEZBK0R2QyxrQkFBa0I7a0JBbEU5QixTQUFTOytCQUNFLGdCQUFnQixjQUNkLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxZQUN6Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtDVDt3REFnQ1EsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFJSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25DaGlwLCBJb25JY29uLCBJb25MYWJlbCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBQcmVzZXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcHJlc2V0cyc7XG5pbXBvcnQgeyBDaGlwR3JvdXBNZXRhZGF0YSwgQ2hpcE1ldGFkYXRhLCBDaGlwU2VsZWN0aW9uRXZlbnQsIENoaXBSZW1vdmVFdmVudCB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyBjbG9zZSwgY2hlY2ttYXJrIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5hZGRJY29ucyh7IGNsb3NlLCBjaGVja21hcmsgfSk7XG5cbi8qKlxuICogRGVmYXVsdHMgaTE4biAoZXMvZW4pIOKAlCBhdXRvLXJlZ2lzdHJhZG9zIHNpIGVsIGNvbnN1bWVyIG5vIHByb3ZlecOzIGVsXG4gKiBuYW1lc3BhY2UgYENoaXBHcm91cGAuIEN1YnJlIGVsIGFyaWEtbGFiZWwgZGVsIGJvdMOzbiBlbGltaW5hci5cbiAqL1xuY29uc3QgQ0hJUF9HUk9VUF9JMThOID0ge1xuICBlczogeyByZW1vdmU6ICdFbGltaW5hciB7bGFiZWx9JyB9LFxuICBlbjogeyByZW1vdmU6ICdSZW1vdmUge2xhYmVsfScgfSxcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1jaGlwLWdyb3VwJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uQ2hpcCwgSW9uSWNvbiwgSW9uTGFiZWxdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJjaGlwLWdyb3VwXCIgW2NsYXNzLndyYXBdPVwicmVzb2x2ZWRQcm9wcy53cmFwICE9PSBmYWxzZVwiPlxuICAgICAgQGZvciAoY2hpcCBvZiByZXNvbHZlZFByb3BzLmNoaXBzOyB0cmFjayBjaGlwLnZhbHVlKSB7XG4gICAgICAgIDxpb24tY2hpcFxuICAgICAgICAgIFtjb2xvcl09XCJnZXRDaGlwQ29sb3IoY2hpcClcIlxuICAgICAgICAgIFtvdXRsaW5lXT1cInJlc29sdmVkUHJvcHMub3V0bGluZSAmJiAhY2hpcC5zZWxlY3RlZFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImNoaXAuZGlzYWJsZWRcIlxuICAgICAgICAgIFthdHRyLnJvbGVdPVwicmVzb2x2ZWRQcm9wcy5zZWxlY3RhYmxlID8gJ2J1dHRvbicgOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJyZXNvbHZlZFByb3BzLnNlbGVjdGFibGUgJiYgIWNoaXAuZGlzYWJsZWQgPyAwIDogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1wcmVzc2VkXT1cInJlc29sdmVkUHJvcHMuc2VsZWN0YWJsZSA/ICEhY2hpcC5zZWxlY3RlZCA6IG51bGxcIlxuICAgICAgICAgIChjbGljayk9XCJvbkNoaXBDbGljayhjaGlwKVwiXG4gICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib25DaGlwS2V5KCRldmVudCwgY2hpcClcIlxuICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cIm9uQ2hpcEtleSgkZXZlbnQsIGNoaXApXCJcbiAgICAgICAgPlxuICAgICAgICAgIEBpZiAoY2hpcC5pY29uKSB7XG4gICAgICAgICAgICA8aW9uLWljb24gW25hbWVdPVwiY2hpcC5pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pb24taWNvbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChjaGlwLnNlbGVjdGVkICYmIHJlc29sdmVkUHJvcHMuc2VsZWN0YWJsZSkge1xuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGVja21hcmtcIiBjbGFzcz1cInNlbGVjdGVkLWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2lvbi1pY29uPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8aW9uLWxhYmVsPnt7IGdldENoaXBMYWJlbChjaGlwKSB9fTwvaW9uLWxhYmVsPlxuICAgICAgICAgIEBpZiAocmVzb2x2ZWRQcm9wcy5yZW1vdmFibGUgJiYgIWNoaXAuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicmVtb3ZlLWJ1dHRvblwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicmVtb3ZlTGFiZWwoY2hpcClcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25SZW1vdmVDaGlwKCRldmVudCwgY2hpcClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlXCIgY2xhc3M9XCJyZW1vdmUtaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvaW9uLWNoaXA+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2NoaXAtZ3JvdXAuY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC1jaGlwLWdyb3VwXG4gKlxuICogQSBncm91cCBvZiBjaGlwcyBmb3IgdGFncywgZmlsdGVycywgb3Igc2VsZWN0aW9ucy5cbiAqIFN1cHBvcnRzIHByZXNldHMgZm9yIHJldXNhYmxlIGNvbmZpZ3VyYXRpb25zLlxuICpcbiAqIEBleGFtcGxlIFdpdGggcHJlc2V0OlxuICogPHZhbC1jaGlwLWdyb3VwIHByZXNldD1cInRhZ3NcIiBbcHJvcHNdPVwieyBjaGlwczogWy4uLl0gfVwiPjwvdmFsLWNoaXAtZ3JvdXA+XG4gKlxuICogQGV4YW1wbGUgQmFzaWMgc2VsZWN0YWJsZVxuICogPHZhbC1jaGlwLWdyb3VwIFtwcm9wc109XCJ7XG4gKiAgIGNoaXBzOiBbXG4gKiAgICAgeyB2YWx1ZTogJ2FuZ3VsYXInLCBsYWJlbDogJ0FuZ3VsYXInIH0sXG4gKiAgICAgeyB2YWx1ZTogJ3JlYWN0JywgbGFiZWw6ICdSZWFjdCcgfSxcbiAqICAgICB7IHZhbHVlOiAndnVlJywgbGFiZWw6ICdWdWUnIH1cbiAqICAgXSxcbiAqICAgc2VsZWN0YWJsZTogdHJ1ZSxcbiAqICAgbXVsdGlwbGU6IHRydWVcbiAqIH1cIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIj48L3ZhbC1jaGlwLWdyb3VwPlxuICpcbiAqIEBpbnB1dCBwcmVzZXQ6IHN0cmluZyAtIE5hbWUgb2YgcHJlc2V0IHRvIGFwcGx5XG4gKiBAaW5wdXQgcHJvcHM6IENoaXBHcm91cE1ldGFkYXRhIC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIGNoaXAgZ3JvdXBcbiAqIEBvdXRwdXQgc2VsZWN0aW9uQ2hhbmdlOiBDaGlwU2VsZWN0aW9uRXZlbnQgLSBFbWl0cyB3aGVuIHNlbGVjdGlvbiBjaGFuZ2VzXG4gKiBAb3V0cHV0IGNoaXBSZW1vdmU6IENoaXBSZW1vdmVFdmVudCAtIEVtaXRzIHdoZW4gYSBjaGlwIGlzIHJlbW92ZWRcbiAqL1xuZXhwb3J0IGNsYXNzIENoaXBHcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgcHJpdmF0ZSBwcmVzZXRzID0gaW5qZWN0KFByZXNldFNlcnZpY2UpO1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuXG4gIEBJbnB1dCgpIHByZXNldD86IHN0cmluZztcbiAgQElucHV0KCkgcHJvcHM6IFBhcnRpYWw8Q2hpcEdyb3VwTWV0YWRhdGE+ID0ge307XG5cbiAgcmVzb2x2ZWRQcm9wczogQ2hpcEdyb3VwTWV0YWRhdGEgPSB7fSBhcyBDaGlwR3JvdXBNZXRhZGF0YTtcblxuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxDaGlwU2VsZWN0aW9uRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBjaGlwUmVtb3ZlID0gbmV3IEV2ZW50RW1pdHRlcjxDaGlwUmVtb3ZlRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBjaGlwQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPENoaXBNZXRhZGF0YT4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UoJ0NoaXBHcm91cCcpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJDb250ZW50KCdDaGlwR3JvdXAnLCBDSElQX0dST1VQX0kxOE4pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucmVzb2x2ZVByb3BzKCk7XG4gIH1cblxuICByZW1vdmVMYWJlbChjaGlwOiBDaGlwTWV0YWRhdGEpOiBzdHJpbmcge1xuICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KCdyZW1vdmUnLCAnQ2hpcEdyb3VwJywgeyBsYWJlbDogdGhpcy5nZXRDaGlwTGFiZWwoY2hpcCkgfSk7XG4gIH1cblxuICAvKiogQWN0aXZhY2nDs24gZGUgY2hpcCBzZWxlY3RhYmxlIHBvciB0ZWNsYWRvIChFbnRlci9TcGFjZSkuICovXG4gIG9uQ2hpcEtleShldmVudDogRXZlbnQsIGNoaXA6IENoaXBNZXRhZGF0YSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5yZXNvbHZlZFByb3BzLnNlbGVjdGFibGUpIHJldHVybjtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMub25DaGlwQ2xpY2soY2hpcCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ3ByZXNldCddIHx8IGNoYW5nZXNbJ3Byb3BzJ10pIHtcbiAgICAgIHRoaXMucmVzb2x2ZVByb3BzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlUHJvcHMoKTogdm9pZCB7XG4gICAgY29uc3QgcHJlc2V0UHJvcHMgPSB0aGlzLnByZXNldCA/ICh0aGlzLnByZXNldHMuZ2V0KCdjaGlwR3JvdXAnLCB0aGlzLnByZXNldCkgYXMgUGFydGlhbDxDaGlwR3JvdXBNZXRhZGF0YT4pIDoge307XG5cbiAgICB0aGlzLnJlc29sdmVkUHJvcHMgPSB7XG4gICAgICAuLi5wcmVzZXRQcm9wcyxcbiAgICAgIC4uLnRoaXMucHJvcHMsXG4gICAgfSBhcyBDaGlwR3JvdXBNZXRhZGF0YTtcbiAgfVxuXG4gIGdldENoaXBDb2xvcihjaGlwOiBDaGlwTWV0YWRhdGEpOiBzdHJpbmcge1xuICAgIGlmIChjaGlwLnNlbGVjdGVkICYmIHRoaXMucmVzb2x2ZWRQcm9wcy5zZWxlY3RlZENvbG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXNvbHZlZFByb3BzLnNlbGVjdGVkQ29sb3I7XG4gICAgfVxuICAgIHJldHVybiBjaGlwLmNvbG9yIHx8IHRoaXMucmVzb2x2ZWRQcm9wcy5jb2xvciB8fCAncHJpbWFyeSc7XG4gIH1cblxuICBnZXRDaGlwTGFiZWwoY2hpcDogQ2hpcE1ldGFkYXRhKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY2hpcC5sYWJlbCB8fCBjaGlwLmNvbnRlbnRGYWxsYmFjayB8fCAnJztcbiAgfVxuXG4gIG9uQ2hpcENsaWNrKGNoaXA6IENoaXBNZXRhZGF0YSk6IHZvaWQge1xuICAgIGlmIChjaGlwLmRpc2FibGVkKSByZXR1cm47XG5cbiAgICB0aGlzLmNoaXBDbGljay5lbWl0KGNoaXApO1xuXG4gICAgaWYgKCF0aGlzLnJlc29sdmVkUHJvcHMuc2VsZWN0YWJsZSkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcy5tdWx0aXBsZSkge1xuICAgICAgY2hpcC5zZWxlY3RlZCA9ICFjaGlwLnNlbGVjdGVkO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTaW5nbGUgc2VsZWN0aW9uOiBkZXNlbGVjdCBhbGwgb3RoZXJzXG4gICAgICB0aGlzLnJlc29sdmVkUHJvcHMuY2hpcHMuZm9yRWFjaChjID0+IHtcbiAgICAgICAgYy5zZWxlY3RlZCA9IGMudmFsdWUgPT09IGNoaXAudmFsdWUgPyAhYy5zZWxlY3RlZCA6IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlKCk7XG4gIH1cblxuICBvblJlbW92ZUNoaXAoZXZlbnQ6IEV2ZW50LCBjaGlwOiBDaGlwTWV0YWRhdGEpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZXNvbHZlZFByb3BzLmNoaXBzLmluZGV4T2YoY2hpcCk7XG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMucmVzb2x2ZWRQcm9wcy5jaGlwcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgdGhpcy5jaGlwUmVtb3ZlLmVtaXQoe1xuICAgICAgICBjaGlwLFxuICAgICAgICByZW1haW5pbmc6IFsuLi50aGlzLnJlc29sdmVkUHJvcHMuY2hpcHNdLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBlbWl0U2VsZWN0aW9uQ2hhbmdlKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5yZXNvbHZlZFByb3BzLmNoaXBzLmZpbHRlcihjID0+IGMuc2VsZWN0ZWQpO1xuICAgIGNvbnN0IHZhbHVlcyA9IHNlbGVjdGVkLm1hcChjID0+IGMudmFsdWUpO1xuXG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh7XG4gICAgICBzZWxlY3RlZDogdGhpcy5yZXNvbHZlZFByb3BzLm11bHRpcGxlID8gc2VsZWN0ZWQgOiBzZWxlY3RlZFswXSxcbiAgICAgIHZhbHVlczogdGhpcy5yZXNvbHZlZFByb3BzLm11bHRpcGxlID8gdmFsdWVzIDogdmFsdWVzWzBdLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -73,8 +73,8 @@ export class CodeDisplayComponent {
73
73
  </div>
74
74
  <div class="code-content">
75
75
  <div class="copy-button-wrapper">
76
- <ion-button fill="clear" class="copy-button" (click)="copyToClipboard()">
77
- <ion-icon name="copy-outline"></ion-icon>
76
+ <ion-button fill="clear" class="copy-button" [attr.aria-label]="'Copiar'" (click)="copyToClipboard()">
77
+ <ion-icon name="copy-outline" aria-hidden="true"></ion-icon>
78
78
  </ion-button>
79
79
  </div>
80
80
  <pre><code [class]="'language-' + (props.tabs[selectedTab]?.language || props.language)" #codeElement></code></pre>
@@ -98,8 +98,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
98
98
  </div>
99
99
  <div class="code-content">
100
100
  <div class="copy-button-wrapper">
101
- <ion-button fill="clear" class="copy-button" (click)="copyToClipboard()">
102
- <ion-icon name="copy-outline"></ion-icon>
101
+ <ion-button fill="clear" class="copy-button" [attr.aria-label]="'Copiar'" (click)="copyToClipboard()">
102
+ <ion-icon name="copy-outline" aria-hidden="true"></ion-icon>
103
103
  </ion-button>
104
104
  </div>
105
105
  <pre><code [class]="'language-' + (props.tabs[selectedTab]?.language || props.language)" #codeElement></code></pre>
@@ -112,4 +112,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
112
112
  }], props: [{
113
113
  type: Input
114
114
  }] } });
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1kaXNwbGF5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvY29kZS1kaXNwbGF5L2NvZGUtZGlzcGxheS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFHTCxTQUFTLEVBRVQsTUFBTSxFQUNOLEtBQUssRUFHTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sS0FBSyxLQUFLLE1BQU0sU0FBUyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVyRCxPQUFPLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLHFDQUFxQyxDQUFDOzs7QUFnQzdDLE1BQU0sT0FBTyxvQkFBb0I7SUFTL0IsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFKbEMsVUFBSyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNoQyxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO0lBRXFCLENBQUM7SUFFOUMsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxPQUFPLENBQUMsTUFB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ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDbGlwYm9hcmQgfSBmcm9tICdAY2FwYWNpdG9yL2NsaXBib2FyZCc7XG5pbXBvcnQgeyBUb2FzdENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBJb25CdXR0b24sIElvbkljb24gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCAqIGFzIFByaXNtIGZyb20gJ3ByaXNtanMnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcblxuaW1wb3J0ICdwcmlzbWpzL2NvbXBvbmVudHMvcHJpc20tY3NzJztcbmltcG9ydCAncHJpc21qcy9jb21wb25lbnRzL3ByaXNtLWphdmFzY3JpcHQnO1xuaW1wb3J0ICdwcmlzbWpzL2NvbXBvbmVudHMvcHJpc20tbWFya3VwJztcbmltcG9ydCAncHJpc21qcy9jb21wb25lbnRzL3ByaXNtLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgQ29kZURpc3BsYXlNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtY29kZS1kaXNwbGF5JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uSWNvbiwgSW9uQnV0dG9uXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiY29kZS12aWV3ZXItY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGFiLWJhclwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJ0YWJcIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgcHJvcHMudGFiczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJpID09PSBzZWxlY3RlZFRhYlwiXG4gICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFRhYihpKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhYi1sYWJlbFwiPnt7IHRhYi5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2RlLWNvbnRlbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvcHktYnV0dG9uLXdyYXBwZXJcIj5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBjbGFzcz1cImNvcHktYnV0dG9uXCIgKGNsaWNrKT1cImNvcHlUb0NsaXBib2FyZCgpXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNvcHktb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHByZT48Y29kZSBbY2xhc3NdPVwiJ2xhbmd1YWdlLScgKyAocHJvcHMudGFic1tzZWxlY3RlZFRhYl0/Lmxhbmd1YWdlIHx8IHByb3BzLmxhbmd1YWdlKVwiICNjb2RlRWxlbWVudD48L2NvZGU+PC9wcmU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcblxuICBzdHlsZVVybDogJy4vY29kZS1kaXNwbGF5LmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgQ29kZURpc3BsYXlDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuICBAVmlld0NoaWxkKCdjb2RlRWxlbWVudCcpIGNvZGVFbGVtZW50ITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgQElucHV0KCkgcHJvcHM6IENvZGVEaXNwbGF5TWV0YWRhdGE7XG5cbiAgcHJpdmF0ZSB0b2FzdCA9IGluamVjdChUb2FzdENvbnRyb2xsZXIpO1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBzZWxlY3RlZFRhYjogbnVtYmVyID0gMDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydjb2RlJ10gfHwgY2hhbmdlc1snbGFuZ3VhZ2UnXSB8fCBjaGFuZ2VzWyd0YWJzJ10pIHtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5oaWdobGlnaHRDb2RlKCkpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuaGlnaGxpZ2h0Q29kZSgpKTtcbiAgfVxuXG4gIHNlbGVjdFRhYihpOiBudW1iZXIpIHtcbiAgICB0aGlzLnNlbGVjdGVkVGFiID0gaTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmhpZ2hsaWdodENvZGUoKSk7XG4gIH1cblxuICBwcml2YXRlIGhpZ2hsaWdodENvZGUoKSB7XG4gICAgaWYgKHRoaXMuY29kZUVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IGNvZGUgPSB0aGlzLnByb3BzLnRhYnMubGVuZ3RoID4gMCA/IHRoaXMucHJvcHMudGFic1t0aGlzLnNlbGVjdGVkVGFiXT8uY29kZSA6IHRoaXMucHJvcHMuY29kZTtcbiAgICAgIHRoaXMuY29kZUVsZW1lbnQubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudCA9IGNvZGUgfHwgJyc7XG4gICAgICBQcmlzbS5oaWdobGlnaHRFbGVtZW50KHRoaXMuY29kZUVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY29weVRvQ2xpcGJvYXJkKCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjb2RlID0gdGhpcy5wcm9wcy50YWJzLmxlbmd0aCA+IDAgPyB0aGlzLnByb3BzLnRhYnNbdGhpcy5zZWxlY3RlZFRhYl0/LmNvZGUgOiB0aGlzLnByb3BzLmNvZGU7XG4gICAgICBhd2FpdCBDbGlwYm9hcmQud3JpdGUoeyBzdHJpbmc6IGNvZGUgfHwgJycgfSk7XG4gICAgICB0aGlzLnByZXNlbnRUb2FzdCh0aGlzLmkxOG4udCgnY29waWVkVG9DbGlwYm9hcmQnKSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGFsIGNvcGlhciBhbCBwb3J0YXBhcGVsZXM6JywgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHByZXNlbnRUb2FzdChtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0b2FzdCA9IGF3YWl0IHRoaXMudG9hc3QuY3JlYXRlKHtcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICBkdXJhdGlvbjogMjAwMCxcbiAgICAgIHBvc2l0aW9uOiAnYm90dG9tJyxcbiAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgfSk7XG4gICAgdG9hc3QucHJlc2VudCgpO1xuICB9XG59XG4iXX0=
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1kaXNwbGF5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvY29kZS1kaXNwbGF5L2NvZGUtZGlzcGxheS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFHTCxTQUFTLEVBRVQsTUFBTSxFQUNOLEtBQUssRUFHTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sS0FBSyxLQUFLLE1BQU0sU0FBUyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVyRCxPQUFPLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLHFDQUFxQyxDQUFDOzs7QUFnQzdDLE1BQU0sT0FBTyxvQkFBb0I7SUFTL0IsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFKbEMsVUFBSyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNoQyxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO0lBRXFCLENBQUM7SUFFOUMsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxPQUFPLENBQUMsTUFB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ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDbGlwYm9hcmQgfSBmcm9tICdAY2FwYWNpdG9yL2NsaXBib2FyZCc7XG5pbXBvcnQgeyBUb2FzdENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBJb25CdXR0b24sIElvbkljb24gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCAqIGFzIFByaXNtIGZyb20gJ3ByaXNtanMnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcblxuaW1wb3J0ICdwcmlzbWpzL2NvbXBvbmVudHMvcHJpc20tY3NzJztcbmltcG9ydCAncHJpc21qcy9jb21wb25lbnRzL3ByaXNtLWphdmFzY3JpcHQnO1xuaW1wb3J0ICdwcmlzbWpzL2NvbXBvbmVudHMvcHJpc20tbWFya3VwJztcbmltcG9ydCAncHJpc21qcy9jb21wb25lbnRzL3ByaXNtLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgQ29kZURpc3BsYXlNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtY29kZS1kaXNwbGF5JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uSWNvbiwgSW9uQnV0dG9uXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiY29kZS12aWV3ZXItY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGFiLWJhclwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJ0YWJcIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgcHJvcHMudGFiczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJpID09PSBzZWxlY3RlZFRhYlwiXG4gICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFRhYihpKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhYi1sYWJlbFwiPnt7IHRhYi5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2RlLWNvbnRlbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvcHktYnV0dG9uLXdyYXBwZXJcIj5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBjbGFzcz1cImNvcHktYnV0dG9uXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInQ29waWFyJ1wiIChjbGljayk9XCJjb3B5VG9DbGlwYm9hcmQoKVwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjb3B5LW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2lvbi1pY29uPlxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxwcmU+PGNvZGUgW2NsYXNzXT1cIidsYW5ndWFnZS0nICsgKHByb3BzLnRhYnNbc2VsZWN0ZWRUYWJdPy5sYW5ndWFnZSB8fCBwcm9wcy5sYW5ndWFnZSlcIiAjY29kZUVsZW1lbnQ+PC9jb2RlPjwvcHJlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG5cbiAgc3R5bGVVcmw6ICcuL2NvZGUtZGlzcGxheS5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIENvZGVEaXNwbGF5Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcbiAgQFZpZXdDaGlsZCgnY29kZUVsZW1lbnQnKSBjb2RlRWxlbWVudCE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBJbnB1dCgpIHByb3BzOiBDb2RlRGlzcGxheU1ldGFkYXRhO1xuXG4gIHByaXZhdGUgdG9hc3QgPSBpbmplY3QoVG9hc3RDb250cm9sbGVyKTtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgc2VsZWN0ZWRUYWI6IG51bWJlciA9IDA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snY29kZSddIHx8IGNoYW5nZXNbJ2xhbmd1YWdlJ10gfHwgY2hhbmdlc1sndGFicyddKSB7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuaGlnaGxpZ2h0Q29kZSgpKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmhpZ2hsaWdodENvZGUoKSk7XG4gIH1cblxuICBzZWxlY3RUYWIoaTogbnVtYmVyKSB7XG4gICAgdGhpcy5zZWxlY3RlZFRhYiA9IGk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5oaWdobGlnaHRDb2RlKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBoaWdobGlnaHRDb2RlKCkge1xuICAgIGlmICh0aGlzLmNvZGVFbGVtZW50KSB7XG4gICAgICBjb25zdCBjb2RlID0gdGhpcy5wcm9wcy50YWJzLmxlbmd0aCA+IDAgPyB0aGlzLnByb3BzLnRhYnNbdGhpcy5zZWxlY3RlZFRhYl0/LmNvZGUgOiB0aGlzLnByb3BzLmNvZGU7XG4gICAgICB0aGlzLmNvZGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQgPSBjb2RlIHx8ICcnO1xuICAgICAgUHJpc20uaGlnaGxpZ2h0RWxlbWVudCh0aGlzLmNvZGVFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGNvcHlUb0NsaXBib2FyZCgpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY29kZSA9IHRoaXMucHJvcHMudGFicy5sZW5ndGggPiAwID8gdGhpcy5wcm9wcy50YWJzW3RoaXMuc2VsZWN0ZWRUYWJdPy5jb2RlIDogdGhpcy5wcm9wcy5jb2RlO1xuICAgICAgYXdhaXQgQ2xpcGJvYXJkLndyaXRlKHsgc3RyaW5nOiBjb2RlIHx8ICcnIH0pO1xuICAgICAgdGhpcy5wcmVzZW50VG9hc3QodGhpcy5pMThuLnQoJ2NvcGllZFRvQ2xpcGJvYXJkJykpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBhbCBjb3BpYXIgYWwgcG9ydGFwYXBlbGVzOicsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBwcmVzZW50VG9hc3QobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgY29uc3QgdG9hc3QgPSBhd2FpdCB0aGlzLnRvYXN0LmNyZWF0ZSh7XG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgZHVyYXRpb246IDIwMDAsXG4gICAgICBwb3NpdGlvbjogJ2JvdHRvbScsXG4gICAgICBjb2xvcjogJ2RhcmsnLFxuICAgIH0pO1xuICAgIHRvYXN0LnByZXNlbnQoKTtcbiAgfVxufVxuIl19
@@ -99,7 +99,7 @@ export class CommentComponent {
99
99
  getInitials(name) {
100
100
  return name
101
101
  .split(' ')
102
- .map((n) => n[0])
102
+ .map(n => n[0])
103
103
  .join('')
104
104
  .substring(0, 2)
105
105
  .toUpperCase();
@@ -184,8 +184,8 @@ export class CommentComponent {
184
184
  return item.label || item.contentFallback || '';
185
185
  }
186
186
  hasChildren() {
187
- return !!(this.props.children && this.props.children.length > 0) ||
188
- !!(this.props.replyCount && this.props.replyCount > 0);
187
+ return (!!(this.props.children && this.props.children.length > 0) ||
188
+ !!(this.props.replyCount && this.props.replyCount > 0));
189
189
  }
190
190
  canShowChildren() {
191
191
  const maxDepth = this.props.maxDepth ?? 3;
@@ -258,7 +258,7 @@ export class CommentComponent {
258
258
  >
259
259
  @if (props.pinned) {
260
260
  <div class="pinned-indicator">
261
- <ion-icon name="pin"></ion-icon>
261
+ <ion-icon name="pin" aria-hidden="true"></ion-icon>
262
262
  <span>{{ i18n.t('pinned') }}</span>
263
263
  </div>
264
264
  }
@@ -279,7 +279,7 @@ export class CommentComponent {
279
279
  <button type="button" class="author-info" [attr.aria-label]="authorLabel()" (click)="onAuthorClick()">
280
280
  <span class="author-name">{{ props.author.name }}</span>
281
281
  @if (props.author.verified) {
282
- <ion-icon name="checkmark-circle" class="verified-badge"></ion-icon>
282
+ <ion-icon name="checkmark-circle" class="verified-badge" aria-hidden="true"></ion-icon>
283
283
  }
284
284
  @if (props.author.username) {
285
285
  <span class="author-username">&#64;{{ props.author.username }}</span>
@@ -299,14 +299,12 @@ export class CommentComponent {
299
299
  size="small"
300
300
  class="more-button"
301
301
  [id]="'menu-trigger-' + props.token"
302
+ [attr.aria-label]="'Más opciones'"
302
303
  >
303
- <ion-icon name="ellipsis-horizontal" slot="icon-only"></ion-icon>
304
+ <ion-icon name="ellipsis-horizontal" slot="icon-only" aria-hidden="true"></ion-icon>
304
305
  </ion-button>
305
306
 
306
- <ion-popover
307
- [trigger]="'menu-trigger-' + props.token"
308
- [dismissOnSelect]="true"
309
- >
307
+ <ion-popover [trigger]="'menu-trigger-' + props.token" [dismissOnSelect]="true">
310
308
  <ng-template>
311
309
  <ion-list>
312
310
  @for (item of props.menuItems; track item.token) {
@@ -320,11 +318,7 @@ export class CommentComponent {
320
318
  (click)="onMenuItemClick(item)"
321
319
  >
322
320
  @if (item.icon) {
323
- <ion-icon
324
- [name]="item.icon"
325
- slot="start"
326
- [color]="item.color"
327
- ></ion-icon>
321
+ <ion-icon [name]="item.icon" slot="start" [color]="item.color" aria-hidden="true"></ion-icon>
328
322
  }
329
323
  <ion-label [color]="item.color">
330
324
  {{ getMenuItemLabel(item) }}
@@ -338,10 +332,7 @@ export class CommentComponent {
338
332
  </div>
339
333
 
340
334
  @if (!props.collapsed) {
341
- <div
342
- class="comment-content"
343
- [innerHTML]="processContent(displayContent)"
344
- ></div>
335
+ <div class="comment-content" [innerHTML]="processContent(displayContent)"></div>
345
336
 
346
337
  @if (props.reactions && props.reactions.length > 0) {
347
338
  <div class="comment-reactions">
@@ -352,7 +343,7 @@ export class CommentComponent {
352
343
  [style.--reaction-color]="getReactionColor(reaction)"
353
344
  (click)="onReactionClick(reaction)"
354
345
  >
355
- <ion-icon [name]="reaction.icon"></ion-icon>
346
+ <ion-icon [name]="reaction.icon" aria-hidden="true"></ion-icon>
356
347
  @if (reaction.count > 0) {
357
348
  <span class="reaction-count">{{ formatCount(reaction.count) }}</span>
358
349
  }
@@ -372,7 +363,7 @@ export class CommentComponent {
372
363
  (click)="onActionClick(action)"
373
364
  >
374
365
  @if (action.icon) {
375
- <ion-icon [name]="action.icon" slot="start"></ion-icon>
366
+ <ion-icon [name]="action.icon" slot="start" aria-hidden="true"></ion-icon>
376
367
  }
377
368
  {{ getActionLabel(action) }}
378
369
  </ion-button>
@@ -381,7 +372,7 @@ export class CommentComponent {
381
372
  }
382
373
  } @else {
383
374
  <button class="expand-button" (click)="onToggleCollapse()">
384
- <ion-icon name="chevron-down"></ion-icon>
375
+ <ion-icon name="chevron-down" aria-hidden="true"></ion-icon>
385
376
  <span>{{ i18n.t('showComment') }}</span>
386
377
  </button>
387
378
  }
@@ -392,7 +383,7 @@ export class CommentComponent {
392
383
  <div class="comment-children">
393
384
  @if (props.collapsed) {
394
385
  <button class="collapse-button" (click)="onToggleCollapse()">
395
- <ion-icon name="chevron-up"></ion-icon>
386
+ <ion-icon name="chevron-up" aria-hidden="true"></ion-icon>
396
387
  <span>{{ i18n.t('hideReplies') }}</span>
397
388
  </button>
398
389
  }
@@ -412,13 +403,13 @@ export class CommentComponent {
412
403
 
413
404
  @if (hasMoreReplies()) {
414
405
  <button class="load-more-button" (click)="onLoadMoreClick()">
415
- <ion-icon name="chatbubble-outline"></ion-icon>
406
+ <ion-icon name="chatbubble-outline" aria-hidden="true"></ion-icon>
416
407
  <span>{{ getLoadMoreRepliesText() }}</span>
417
408
  </button>
418
409
  }
419
410
  } @else {
420
411
  <button class="view-replies-button" (click)="onLoadMoreClick()">
421
- <ion-icon name="chatbubble-outline"></ion-icon>
412
+ <ion-icon name="chatbubble-outline" aria-hidden="true"></ion-icon>
422
413
  <span>{{ getViewRepliesText() }}</span>
423
414
  </button>
424
415
  }
@@ -429,16 +420,7 @@ export class CommentComponent {
429
420
  }
430
421
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CommentComponent, decorators: [{
431
422
  type: Component,
432
- args: [{ selector: 'val-comment', standalone: true, imports: [
433
- CommonModule,
434
- IonIcon,
435
- IonButton,
436
- IonPopover,
437
- IonList,
438
- IonItem,
439
- IonLabel,
440
- AvatarComponent,
441
- ], template: `
423
+ args: [{ selector: 'val-comment', standalone: true, imports: [CommonModule, IonIcon, IonButton, IonPopover, IonList, IonItem, IonLabel, AvatarComponent], template: `
442
424
  <div
443
425
  class="comment"
444
426
  [class.highlighted]="props.highlighted"
@@ -448,7 +430,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
448
430
  >
449
431
  @if (props.pinned) {
450
432
  <div class="pinned-indicator">
451
- <ion-icon name="pin"></ion-icon>
433
+ <ion-icon name="pin" aria-hidden="true"></ion-icon>
452
434
  <span>{{ i18n.t('pinned') }}</span>
453
435
  </div>
454
436
  }
@@ -469,7 +451,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
469
451
  <button type="button" class="author-info" [attr.aria-label]="authorLabel()" (click)="onAuthorClick()">
470
452
  <span class="author-name">{{ props.author.name }}</span>
471
453
  @if (props.author.verified) {
472
- <ion-icon name="checkmark-circle" class="verified-badge"></ion-icon>
454
+ <ion-icon name="checkmark-circle" class="verified-badge" aria-hidden="true"></ion-icon>
473
455
  }
474
456
  @if (props.author.username) {
475
457
  <span class="author-username">&#64;{{ props.author.username }}</span>
@@ -489,14 +471,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
489
471
  size="small"
490
472
  class="more-button"
491
473
  [id]="'menu-trigger-' + props.token"
474
+ [attr.aria-label]="'Más opciones'"
492
475
  >
493
- <ion-icon name="ellipsis-horizontal" slot="icon-only"></ion-icon>
476
+ <ion-icon name="ellipsis-horizontal" slot="icon-only" aria-hidden="true"></ion-icon>
494
477
  </ion-button>
495
478
 
496
- <ion-popover
497
- [trigger]="'menu-trigger-' + props.token"
498
- [dismissOnSelect]="true"
499
- >
479
+ <ion-popover [trigger]="'menu-trigger-' + props.token" [dismissOnSelect]="true">
500
480
  <ng-template>
501
481
  <ion-list>
502
482
  @for (item of props.menuItems; track item.token) {
@@ -510,11 +490,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
510
490
  (click)="onMenuItemClick(item)"
511
491
  >
512
492
  @if (item.icon) {
513
- <ion-icon
514
- [name]="item.icon"
515
- slot="start"
516
- [color]="item.color"
517
- ></ion-icon>
493
+ <ion-icon [name]="item.icon" slot="start" [color]="item.color" aria-hidden="true"></ion-icon>
518
494
  }
519
495
  <ion-label [color]="item.color">
520
496
  {{ getMenuItemLabel(item) }}
@@ -528,10 +504,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
528
504
  </div>
529
505
 
530
506
  @if (!props.collapsed) {
531
- <div
532
- class="comment-content"
533
- [innerHTML]="processContent(displayContent)"
534
- ></div>
507
+ <div class="comment-content" [innerHTML]="processContent(displayContent)"></div>
535
508
 
536
509
  @if (props.reactions && props.reactions.length > 0) {
537
510
  <div class="comment-reactions">
@@ -542,7 +515,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
542
515
  [style.--reaction-color]="getReactionColor(reaction)"
543
516
  (click)="onReactionClick(reaction)"
544
517
  >
545
- <ion-icon [name]="reaction.icon"></ion-icon>
518
+ <ion-icon [name]="reaction.icon" aria-hidden="true"></ion-icon>
546
519
  @if (reaction.count > 0) {
547
520
  <span class="reaction-count">{{ formatCount(reaction.count) }}</span>
548
521
  }
@@ -562,7 +535,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
562
535
  (click)="onActionClick(action)"
563
536
  >
564
537
  @if (action.icon) {
565
- <ion-icon [name]="action.icon" slot="start"></ion-icon>
538
+ <ion-icon [name]="action.icon" slot="start" aria-hidden="true"></ion-icon>
566
539
  }
567
540
  {{ getActionLabel(action) }}
568
541
  </ion-button>
@@ -571,7 +544,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
571
544
  }
572
545
  } @else {
573
546
  <button class="expand-button" (click)="onToggleCollapse()">
574
- <ion-icon name="chevron-down"></ion-icon>
547
+ <ion-icon name="chevron-down" aria-hidden="true"></ion-icon>
575
548
  <span>{{ i18n.t('showComment') }}</span>
576
549
  </button>
577
550
  }
@@ -582,7 +555,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
582
555
  <div class="comment-children">
583
556
  @if (props.collapsed) {
584
557
  <button class="collapse-button" (click)="onToggleCollapse()">
585
- <ion-icon name="chevron-up"></ion-icon>
558
+ <ion-icon name="chevron-up" aria-hidden="true"></ion-icon>
586
559
  <span>{{ i18n.t('hideReplies') }}</span>
587
560
  </button>
588
561
  }
@@ -602,13 +575,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
602
575
 
603
576
  @if (hasMoreReplies()) {
604
577
  <button class="load-more-button" (click)="onLoadMoreClick()">
605
- <ion-icon name="chatbubble-outline"></ion-icon>
578
+ <ion-icon name="chatbubble-outline" aria-hidden="true"></ion-icon>
606
579
  <span>{{ getLoadMoreRepliesText() }}</span>
607
580
  </button>
608
581
  }
609
582
  } @else {
610
583
  <button class="view-replies-button" (click)="onLoadMoreClick()">
611
- <ion-icon name="chatbubble-outline"></ion-icon>
584
+ <ion-icon name="chatbubble-outline" aria-hidden="true"></ion-icon>
612
585
  <span>{{ getViewRepliesText() }}</span>
613
586
  </button>
614
587
  }
@@ -631,4 +604,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
631
604
  }], collapseToggle: [{
632
605
  type: Output
633
606
  }] } });
634
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NvbW1lbnQvY29tbWVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixpQkFBaUIsRUFDakIsWUFBWSxFQUNaLEtBQUssRUFDTCxlQUFlLEVBQ2YsUUFBUSxFQUNSLFlBQVksRUFDWixLQUFLLEVBQ0wsVUFBVSxFQUNWLEdBQUcsRUFDSCxXQUFXLEVBQ1gsU0FBUyxFQUNULEdBQUcsRUFDSCxNQUFNLEVBQ04sS0FBSyxFQUNMLElBQUksRUFDSixLQUFLLEdBQ04sTUFBTSxnQkFBZ0IsQ0FBQzs7QUFjeEIsUUFBUSxDQUFDO0lBQ1Asa0JBQWtCO0lBQ2xCLGVBQWU7SUFDZixpQkFBaUI7SUFDakIsWUFBWTtJQUNaLEtBQUs7SUFDTCxlQUFlO0lBQ2YsUUFBUTtJQUNSLFlBQVk7SUFDWixLQUFLO0lBQ0wsVUFBVTtJQUNWLEdBQUc7SUFDSCxXQUFXO0lBQ1gsU0FBUztJQUNULEdBQUc7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MFNBNU5qQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUxULHd6U0EyQ1UsZ0JBQWdCLHdMQXJPekIsWUFBWSwrQkFDWixPQUFPLDJKQUNQLFNBQVMsb1BBQ1QsVUFBVSx3REFDVixPQUFPLHlGQUNQLE9BQU8sME5BQ1AsUUFBUSw2RkFDUixlQUFlOzs0RkE4Tk4sZ0JBQWdCO2tCQXpPNUIsU0FBUzsrQkFDRSxhQUFhLGNBQ1gsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osT0FBTzt3QkFDUCxTQUFTO3dCQUNULFVBQVU7d0JBQ1YsT0FBTzt3QkFDUCxPQUFPO3dCQUNQLFFBQVE7d0JBQ1IsZUFBZTtxQkFDaEIsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUxUO3dEQThDUSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJb25JY29uLCBJb25CdXR0b24sIElvblBvcG92ZXIsIElvbkxpc3QsIElvbkl0ZW0sIElvbkxhYmVsIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYXZhdGFyL2F2YXRhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQge1xuICBlbGxpcHNpc0hvcml6b250YWwsXG4gIGNoZWNrbWFya0NpcmNsZSxcbiAgY2hhdGJ1YmJsZU91dGxpbmUsXG4gIGhlYXJ0T3V0bGluZSxcbiAgaGVhcnQsXG4gIHRodW1ic1VwT3V0bGluZSxcbiAgdGh1bWJzVXAsXG4gIGhhcHB5T3V0bGluZSxcbiAgaGFwcHksXG4gIHNhZE91dGxpbmUsXG4gIHNhZCxcbiAgY2hldnJvbkRvd24sXG4gIGNoZXZyb25VcCxcbiAgcGluLFxuICBwZW5jaWwsXG4gIHRyYXNoLFxuICBmbGFnLFxuICBzaGFyZSxcbn0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuaW1wb3J0IHtcbiAgQ29tbWVudE1ldGFkYXRhLFxuICBDb21tZW50QXV0aG9yLFxuICBDb21tZW50UmVhY3Rpb24sXG4gIENvbW1lbnRBY3Rpb24sXG4gIENvbW1lbnRNZW51SXRlbSxcbiAgQ29tbWVudEF1dGhvckNsaWNrRXZlbnQsXG4gIENvbW1lbnRSZWFjdGlvbkNsaWNrRXZlbnQsXG4gIENvbW1lbnRBY3Rpb25DbGlja0V2ZW50LFxuICBDb21tZW50TWVudUl0ZW1DbGlja0V2ZW50LFxuICBDb21tZW50TG9hZE1vcmVFdmVudCxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbmFkZEljb25zKHtcbiAgZWxsaXBzaXNIb3Jpem9udGFsLFxuICBjaGVja21hcmtDaXJjbGUsXG4gIGNoYXRidWJibGVPdXRsaW5lLFxuICBoZWFydE91dGxpbmUsXG4gIGhlYXJ0LFxuICB0aHVtYnNVcE91dGxpbmUsXG4gIHRodW1ic1VwLFxuICBoYXBweU91dGxpbmUsXG4gIGhhcHB5LFxuICBzYWRPdXRsaW5lLFxuICBzYWQsXG4gIGNoZXZyb25Eb3duLFxuICBjaGV2cm9uVXAsXG4gIHBpbixcbiAgcGVuY2lsLFxuICB0cmFzaCxcbiAgZmxhZyxcbiAgc2hhcmUsXG59KTtcblxuLyoqXG4gKiBEZWZhdWx0cyBpMThuIChlcy9lbikg4oCUIGF1dG8tcmVnaXN0cmFkb3Mgc2kgZWwgY29uc3VtZXIgbm8gcHJvdmV5w7MgZWxcbiAqIG5hbWVzcGFjZSBgQ29tbWVudGAuIEN1YnJlIGVsIGFyaWEtbGFiZWwgZGVsIGF1dG9yIChhdmF0YXIgKyBub21icmUpLlxuICovXG5jb25zdCBDT01NRU5UX0kxOE4gPSB7XG4gIGVzOiB7IHZpZXdQcm9maWxlT2Y6ICdWZXIgcGVyZmlsIGRlIHtuYW1lfScgfSxcbiAgZW46IHsgdmlld1Byb2ZpbGVPZjogJ1ZpZXcgcHJvZmlsZSBvZiB7bmFtZX0nIH0sXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtY29tbWVudCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSW9uSWNvbixcbiAgICBJb25CdXR0b24sXG4gICAgSW9uUG9wb3ZlcixcbiAgICBJb25MaXN0LFxuICAgIElvbkl0ZW0sXG4gICAgSW9uTGFiZWwsXG4gICAgQXZhdGFyQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiY29tbWVudFwiXG4gICAgICBbY2xhc3MuaGlnaGxpZ2h0ZWRdPVwicHJvcHMuaGlnaGxpZ2h0ZWRcIlxuICAgICAgW2NsYXNzLnBpbm5lZF09XCJwcm9wcy5waW5uZWRcIlxuICAgICAgW2NsYXNzLmNvbGxhcHNlZF09XCJwcm9wcy5jb2xsYXBzZWRcIlxuICAgICAgW3N0eWxlLi0tZGVwdGhdPVwicHJvcHMuZGVwdGggfHwgMFwiXG4gICAgPlxuICAgICAgQGlmIChwcm9wcy5waW5uZWQpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInBpbm5lZC1pbmRpY2F0b3JcIj5cbiAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInBpblwiPjwvaW9uLWljb24+XG4gICAgICAgICAgPHNwYW4+e3sgaTE4bi50KCdwaW5uZWQnKSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb21tZW50LW1haW5cIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjb21tZW50LWF2YXRhclwiIFthdHRyLmFyaWEtbGFiZWxdPVwiYXV0aG9yTGFiZWwoKVwiIChjbGljayk9XCJvbkF1dGhvckNsaWNrKClcIj5cbiAgICAgICAgICBAaWYgKHByb3BzLmF1dGhvci5hdmF0YXIpIHtcbiAgICAgICAgICAgIDx2YWwtYXZhdGFyIFtwcm9wc109XCJwcm9wcy5hdXRob3IuYXZhdGFyXCI+PC92YWwtYXZhdGFyPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1wbGFjZWhvbGRlclwiPlxuICAgICAgICAgICAgICB7eyBnZXRJbml0aWFscyhwcm9wcy5hdXRob3IubmFtZSkgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnQtYm9keVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21tZW50LWhlYWRlclwiPlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhdXRob3ItaW5mb1wiIFthdHRyLmFyaWEtbGFiZWxdPVwiYXV0aG9yTGFiZWwoKVwiIChjbGljayk9XCJvbkF1dGhvckNsaWNrKClcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhdXRob3ItbmFtZVwiPnt7IHByb3BzLmF1dGhvci5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICBAaWYgKHByb3BzLmF1dGhvci52ZXJpZmllZCkge1xuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hlY2ttYXJrLWNpcmNsZVwiIGNsYXNzPVwidmVyaWZpZWQtYmFkZ2VcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAocHJvcHMuYXV0aG9yLnVzZXJuYW1lKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhdXRob3ItdXNlcm5hbWVcIj4mIzY0O3t7IHByb3BzLmF1dGhvci51c2VybmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21tZW50LW1ldGFcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aW1lc3RhbXBcIj57eyBmb3JtYXRUaW1lc3RhbXAocHJvcHMudGltZXN0YW1wKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgQGlmIChwcm9wcy5lZGl0ZWQpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVkaXRlZC1sYWJlbFwiPnt7IGkxOG4udCgnZWRpdGVkJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICBAaWYgKHByb3BzLm1lbnVJdGVtcyAmJiBwcm9wcy5tZW51SXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1vcmUtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbaWRdPVwiJ21lbnUtdHJpZ2dlci0nICsgcHJvcHMudG9rZW5cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJlbGxpcHNpcy1ob3Jpem9udGFsXCIgc2xvdD1cImljb24tb25seVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgICAgICAgICA8aW9uLXBvcG92ZXJcbiAgICAgICAgICAgICAgICBbdHJpZ2dlcl09XCInbWVudS10cmlnZ2VyLScgKyBwcm9wcy50b2tlblwiXG4gICAgICAgICAgICAgICAgW2Rpc21pc3NPblNlbGVjdF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDxpb24tbGlzdD5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBwcm9wcy5tZW51SXRlbXM7IHRyYWNrIGl0ZW0udG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uZGl2aWRlckJlZm9yZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnUtZGl2aWRlclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtidXR0b25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGV0YWlsXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk1lbnVJdGVtQ2xpY2soaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5pY29uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIml0ZW0uaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvdD1cInN0YXJ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sb3JdPVwiaXRlbS5jb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBbY29sb3JdPVwiaXRlbS5jb2xvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRNZW51SXRlbUxhYmVsKGl0ZW0pIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L2lvbi1saXN0PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDwvaW9uLXBvcG92ZXI+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICBAaWYgKCFwcm9wcy5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb21tZW50LWNvbnRlbnRcIlxuICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInByb2Nlc3NDb250ZW50KGRpc3BsYXlDb250ZW50KVwiXG4gICAgICAgICAgICA+PC9kaXY+XG5cbiAgICAgICAgICAgIEBpZiAocHJvcHMucmVhY3Rpb25zICYmIHByb3BzLnJlYWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21tZW50LXJlYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKHJlYWN0aW9uIG9mIHByb3BzLnJlYWN0aW9uczsgdHJhY2sgcmVhY3Rpb24udG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZWFjdGlvbi1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInJlYWN0aW9uLmFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS4tLXJlYWN0aW9uLWNvbG9yXT1cImdldFJlYWN0aW9uQ29sb3IocmVhY3Rpb24pXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUmVhY3Rpb25DbGljayhyZWFjdGlvbilcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gW25hbWVdPVwicmVhY3Rpb24uaWNvblwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAocmVhY3Rpb24uY291bnQgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWFjdGlvbi1jb3VudFwiPnt7IGZvcm1hdENvdW50KHJlYWN0aW9uLmNvdW50KSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmIChwcm9wcy5hY3Rpb25zICYmIHByb3BzLmFjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbWVudC1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgQGZvciAoYWN0aW9uIG9mIHByb3BzLmFjdGlvbnM7IHRyYWNrIGFjdGlvbi50b2tlbikge1xuICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cImNsZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cImFjdGlvbi5jb2xvciB8fCAnbWVkaXVtJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhY3Rpb24uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25BY3Rpb25DbGljayhhY3Rpb24pXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChhY3Rpb24uaWNvbikge1xuICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJhY3Rpb24uaWNvblwiIHNsb3Q9XCJzdGFydFwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAge3sgZ2V0QWN0aW9uTGFiZWwoYWN0aW9uKSB9fVxuICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZXhwYW5kLWJ1dHRvblwiIChjbGljayk9XCJvblRvZ2dsZUNvbGxhcHNlKClcIj5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGV2cm9uLWRvd25cIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICA8c3Bhbj57eyBpMThuLnQoJ3Nob3dDb21tZW50JykgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIEBpZiAoIXByb3BzLmNvbGxhcHNlZCAmJiBoYXNDaGlsZHJlbigpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb21tZW50LWNoaWxkcmVuXCI+XG4gICAgICAgICAgQGlmIChwcm9wcy5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb2xsYXBzZS1idXR0b25cIiAoY2xpY2spPVwib25Ub2dnbGVDb2xsYXBzZSgpXCI+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hldnJvbi11cFwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IGkxOG4udCgnaGlkZVJlcGxpZXMnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAoY2FuU2hvd0NoaWxkcmVuKCkpIHtcbiAgICAgICAgICAgIEBmb3IgKGNoaWxkIG9mIHByb3BzLmNoaWxkcmVuOyB0cmFjayBjaGlsZC50b2tlbikge1xuICAgICAgICAgICAgICA8dmFsLWNvbW1lbnRcbiAgICAgICAgICAgICAgICBbcHJvcHNdPVwiZ2V0Q2hpbGRQcm9wcyhjaGlsZClcIlxuICAgICAgICAgICAgICAgIChhdXRob3JDbGljayk9XCJhdXRob3JDbGljay5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgIChyZWFjdGlvbkNsaWNrKT1cInJlYWN0aW9uQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoYWN0aW9uQ2xpY2spPVwiYWN0aW9uQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAobWVudUl0ZW1DbGljayk9XCJtZW51SXRlbUNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGxvYWRNb3JlQ2xpY2spPVwibG9hZE1vcmVDbGljay5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgIChjb2xsYXBzZVRvZ2dsZSk9XCJjb2xsYXBzZVRvZ2dsZS5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICA+PC92YWwtY29tbWVudD5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmIChoYXNNb3JlUmVwbGllcygpKSB7XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJsb2FkLW1vcmUtYnV0dG9uXCIgKGNsaWNrKT1cIm9uTG9hZE1vcmVDbGljaygpXCI+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGF0YnViYmxlLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGdldExvYWRNb3JlUmVwbGllc1RleHQoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidmlldy1yZXBsaWVzLWJ1dHRvblwiIChjbGljayk9XCJvbkxvYWRNb3JlQ2xpY2soKVwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoYXRidWJibGUtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IGdldFZpZXdSZXBsaWVzVGV4dCgpIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vY29tbWVudC5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLWNvbW1lbnRcbiAqXG4gKiBBIHZlcnNhdGlsZSBjb21tZW50IGNvbXBvbmVudCBmb3IgZm9ydW1zLCByZXZpZXdzLCBhbmQgc29jaWFsIG1lZGlhLlxuICogU3VwcG9ydHMgYXV0aG9yIGluZm8sIHJlYWN0aW9ucywgYWN0aW9ucywgbmVzdGVkIHJlcGxpZXMsIGFuZCBtb3JlLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIGNvbW1lbnRcbiAqIDx2YWwtY29tbWVudCBbcHJvcHNdPVwie1xuICogICB0b2tlbjogJzEnLFxuICogICBhdXRob3I6IHsgbmFtZTogJ0pvaG4gRG9lJywgdXNlcm5hbWU6ICdqb2huZCcgfSxcbiAqICAgY29udGVudDogJ1RoaXMgaXMgYSBncmVhdCBwb3N0IScsXG4gKiAgIHRpbWVzdGFtcDogJzIgaG91cnMgYWdvJ1xuICogfVwiPjwvdmFsLWNvbW1lbnQ+XG4gKlxuICogQGV4YW1wbGUgV2l0aCByZWFjdGlvbnMgYW5kIGFjdGlvbnNcbiAqIDx2YWwtY29tbWVudCBbcHJvcHNdPVwie1xuICogICB0b2tlbjogJzEnLFxuICogICBhdXRob3I6IHsgbmFtZTogJ0phbmUnLCBhdmF0YXI6IGF2YXRhclByb3BzLCB2ZXJpZmllZDogdHJ1ZSB9LFxuICogICBjb250ZW50OiAnQW1hemluZyBjb250ZW50ISBDaGVjayBvdXQgaHR0cHM6Ly9leGFtcGxlLmNvbScsXG4gKiAgIHRpbWVzdGFtcDogbmV3IERhdGUoKSxcbiAqICAgcmVhY3Rpb25zOiBbXG4gKiAgICAgeyB0b2tlbjogJ2xpa2UnLCBpY29uOiAnaGVhcnQtb3V0bGluZScsIGNvdW50OiA0MiwgYWN0aXZlOiBmYWxzZSB9XG4gKiAgIF0sXG4gKiAgIGFjdGlvbnM6IFtcbiAqICAgICB7IHRva2VuOiAncmVwbHknLCBsYWJlbDogJ1JlcGx5JywgaWNvbjogJ2NoYXRidWJibGUtb3V0bGluZScgfVxuICogICBdLFxuICogICBtZW51SXRlbXM6IFtcbiAqICAgICB7IHRva2VuOiAnZWRpdCcsIGxhYmVsOiAnRWRpdCcsIGljb246ICdwZW5jaWwnIH0sXG4gKiAgICAgeyB0b2tlbjogJ2RlbGV0ZScsIGxhYmVsOiAnRGVsZXRlJywgaWNvbjogJ3RyYXNoJywgY29sb3I6ICdkYW5nZXInIH1cbiAqICAgXVxuICogfVwiPjwvdmFsLWNvbW1lbnQ+XG4gKlxuICogQGlucHV0IHByb3BzOiBDb21tZW50TWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgY29tbWVudFxuICogQG91dHB1dCBhdXRob3JDbGljayAtIEVtaXRzIHdoZW4gYXV0aG9yIG5hbWUvYXZhdGFyIGlzIGNsaWNrZWRcbiAqIEBvdXRwdXQgcmVhY3Rpb25DbGljayAtIEVtaXRzIHdoZW4gYSByZWFjdGlvbiBpcyBjbGlja2VkXG4gKiBAb3V0cHV0IGFjdGlvbkNsaWNrIC0gRW1pdHMgd2hlbiBhbiBhY3Rpb24gYnV0dG9uIGlzIGNsaWNrZWRcbiAqIEBvdXRwdXQgbWVudUl0ZW1DbGljayAtIEVtaXRzIHdoZW4gYSBtZW51IGl0ZW0gaXMgY2xpY2tlZFxuICogQG91dHB1dCBsb2FkTW9yZUNsaWNrIC0gRW1pdHMgd2hlbiBsb2FkIG1vcmUgcmVwbGllcyBpcyBjbGlja2VkXG4gKiBAb3V0cHV0IGNvbGxhcHNlVG9nZ2xlIC0gRW1pdHMgd2hlbiBjb21tZW50IGlzIGNvbGxhcHNlZC9leHBhbmRlZFxuICovXG5leHBvcnQgY2xhc3MgQ29tbWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByb3RlY3RlZCBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcblxuICBASW5wdXQoKSBwcm9wczogQ29tbWVudE1ldGFkYXRhO1xuXG4gIEBPdXRwdXQoKSBhdXRob3JDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Q29tbWVudEF1dGhvckNsaWNrRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSByZWFjdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxDb21tZW50UmVhY3Rpb25DbGlja0V2ZW50PigpO1xuICBAT3V0cHV0KCkgYWN0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPENvbW1lbnRBY3Rpb25DbGlja0V2ZW50PigpO1xuICBAT3V0cHV0KCkgbWVudUl0ZW1DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Q29tbWVudE1lbnVJdGVtQ2xpY2tFdmVudD4oKTtcbiAgQE91dHB1dCgpIGxvYWRNb3JlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPENvbW1lbnRMb2FkTW9yZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgY29sbGFwc2VUb2dnbGUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgdG9rZW46IHN0cmluZzsgY29sbGFwc2VkOiBib29sZWFuIH0+KCk7XG5cbiAgZGlzcGxheUNvbnRlbnQ6IHN0cmluZyA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICghdGhpcy5pMThuLmhhc05hbWVzcGFjZSgnQ29tbWVudCcpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJDb250ZW50KCdDb21tZW50JywgQ09NTUVOVF9JMThOKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BsYXlDb250ZW50ID0gdGhpcy5wcm9wcy5jb250ZW50IHx8IHRoaXMucHJvcHMuY29udGVudEZhbGxiYWNrIHx8ICcnO1xuICB9XG5cbiAgLyoqIEFyaWEtbGFiZWwgYWNjZXNpYmxlIGRlbCBhdXRvciAoYXZhdGFyICsgbm9tYnJlIGNsaWNhYmxlcykuICovXG4gIGF1dGhvckxhYmVsKCk6IHN0cmluZyB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoJ3ZpZXdQcm9maWxlT2YnLCAnQ29tbWVudCcsIHsgbmFtZTogdGhpcy5wcm9wcy5hdXRob3IubmFtZSB9KTtcbiAgfVxuXG4gIGdldEluaXRpYWxzKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5hbWVcbiAgICAgIC5zcGxpdCgnICcpXG4gICAgICAubWFwKChuKSA9PiBuWzBdKVxuICAgICAgLmpvaW4oJycpXG4gICAgICAuc3Vic3RyaW5nKDAsIDIpXG4gICAgICAudG9VcHBlckNhc2UoKTtcbiAgfVxuXG4gIGZvcm1hdFRpbWVzdGFtcCh0aW1lc3RhbXA6IHN0cmluZyB8IERhdGUpOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgdGltZXN0YW1wID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHRpbWVzdGFtcDtcbiAgICB9XG5cbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IGRpZmYgPSBub3cuZ2V0VGltZSgpIC0gdGltZXN0YW1wLmdldFRpbWUoKTtcbiAgICBjb25zdCBzZWNvbmRzID0gTWF0aC5mbG9vcihkaWZmIC8gMTAwMCk7XG4gICAgY29uc3QgbWludXRlcyA9IE1hdGguZmxvb3Ioc2Vjb25kcyAvIDYwKTtcbiAgICBjb25zdCBob3VycyA9IE1hdGguZmxvb3IobWludXRlcyAvIDYwKTtcbiAgICBjb25zdCBkYXlzID0gTWF0aC5mbG9vcihob3VycyAvIDI0KTtcblxuICAgIGlmIChzZWNvbmRzIDwgNjApIHJldHVybiB0aGlzLmkxOG4udCgnanVzdE5vdycpO1xuICAgIGlmIChtaW51dGVzIDwgNjApIHJldHVybiB0aGlzLmkxOG4udCgnbWludXRlc0FnbycsICdfZ2xvYmFsJywgeyBtaW51dGVzOiBtaW51dGVzLnRvU3RyaW5nKCkgfSk7XG4gICAgaWYgKGhvdXJzIDwgMjQpIHJldHVybiB0aGlzLmkxOG4udCgnaG91cnNBZ28nLCAnX2dsb2JhbCcsIHsgaG91cnM6IGhvdXJzLnRvU3RyaW5nKCkgfSk7XG4gICAgaWYgKGRheXMgPCA3KSByZXR1cm4gdGhpcy5pMThuLnQoJ2RheXNBZ28nLCAnX2dsb2JhbCcsIHsgZGF5czogZGF5cy50b1N0cmluZygpIH0pO1xuXG4gICAgcmV0dXJuIHRpbWVzdGFtcC50b0xvY2FsZURhdGVTdHJpbmcoKTtcbiAgfVxuXG4gIGdldExvYWRNb3JlUmVwbGllc1RleHQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb3VudCA9IHRoaXMuZ2V0UmVtYWluaW5nQ291bnQoKTtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoJ2xvYWRNb3JlUmVwbGllcycpICsgYCAoJHtjb3VudH0pYDtcbiAgfVxuXG4gIGdldFZpZXdSZXBsaWVzVGV4dCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvdW50ID0gdGhpcy5wcm9wcy5yZXBseUNvdW50IHx8IHRoaXMucHJvcHMuY2hpbGRyZW4/Lmxlbmd0aCB8fCAwO1xuICAgIHJldHVybiB0aGlzLmkxOG4udCgndmlld1JlcGxpZXMnKSArIGAgKCR7Y291bnR9KWA7XG4gIH1cblxuICBmb3JtYXRDb3VudChjb3VudDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBpZiAoY291bnQgPj0gMTAwMDAwMCkge1xuICAgICAgcmV0dXJuIChjb3VudCAvIDEwMDAwMDApLnRvRml4ZWQoMSkucmVwbGFjZSgvXFwuMCQvLCAnJykgKyAnTSc7XG4gICAgfVxuICAgIGlmIChjb3VudCA+PSAxMDAwKSB7XG4gICAgICByZXR1cm4gKGNvdW50IC8gMTAwMCkudG9GaXhlZCgxKS5yZXBsYWNlKC9cXC4wJC8sICcnKSArICdLJztcbiAgICB9XG4gICAgcmV0dXJuIGNvdW50LnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcm9jZXNzQ29udGVudChjb250ZW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnByb3BzLmF1dG9MaW5raWZ5ID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZXNjYXBlSHRtbChjb250ZW50KTtcbiAgICB9XG5cbiAgICAvLyBFc2NhcGUgSFRNTCBmaXJzdFxuICAgIGxldCBwcm9jZXNzZWQgPSB0aGlzLmVzY2FwZUh0bWwoY29udGVudCk7XG5cbiAgICAvLyBVUkwgcmVnZXhcbiAgICBjb25zdCB1cmxSZWdleCA9IC8oaHR0cHM/OlxcL1xcL1teXFxzPF0rW15cXHM8Liw7OiE/KVxcXSdcIl0pL2dpO1xuICAgIHByb2Nlc3NlZCA9IHByb2Nlc3NlZC5yZXBsYWNlKFxuICAgICAgdXJsUmVnZXgsXG4gICAgICAnPGEgaHJlZj1cIiQxXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiIGNsYXNzPVwiY29tbWVudC1saW5rXCI+JDE8L2E+J1xuICAgICk7XG5cbiAgICAvLyBAbWVudGlvbnNcbiAgICBjb25zdCBtZW50aW9uUmVnZXggPSAvQChcXHcrKS9nO1xuICAgIHByb2Nlc3NlZCA9IHByb2Nlc3NlZC5yZXBsYWNlKFxuICAgICAgbWVudGlvblJlZ2V4LFxuICAgICAgJzxzcGFuIGNsYXNzPVwiY29tbWVudC1tZW50aW9uXCI+QCQxPC9zcGFuPidcbiAgICApO1xuXG4gICAgLy8gI2hhc2h0YWdzXG4gICAgY29uc3QgaGFzaHRhZ1JlZ2V4ID0gLyMoXFx3KykvZztcbiAgICBwcm9jZXNzZWQgPSBwcm9jZXNzZWQucmVwbGFjZShcbiAgICAgIGhhc2h0YWdSZWdleCxcbiAgICAgICc8c3BhbiBjbGFzcz1cImNvbW1lbnQtaGFzaHRhZ1wiPiMkMTwvc3Bhbj4nXG4gICAgKTtcblxuICAgIC8vIFByZXNlcnZlIGxpbmUgYnJlYWtzXG4gICAgcHJvY2Vzc2VkID0gcHJvY2Vzc2VkLnJlcGxhY2UoL1xcbi9nLCAnPGJyPicpO1xuXG4gICAgcmV0dXJuIHByb2Nlc3NlZDtcbiAgfVxuXG4gIHByaXZhdGUgZXNjYXBlSHRtbCh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGRpdi50ZXh0Q29udGVudCA9IHRleHQ7XG4gICAgcmV0dXJuIGRpdi5pbm5lckhUTUw7XG4gIH1cblxuICBnZXRSZWFjdGlvbkNvbG9yKHJlYWN0aW9uOiBDb21tZW50UmVhY3Rpb24pOiBzdHJpbmcge1xuICAgIGlmIChyZWFjdGlvbi5hY3RpdmUgJiYgcmVhY3Rpb24uYWN0aXZlQ29sb3IpIHtcbiAgICAgIHJldHVybiBgdmFyKC0taW9uLWNvbG9yLSR7cmVhY3Rpb24uYWN0aXZlQ29sb3J9KWA7XG4gICAgfVxuICAgIGlmIChyZWFjdGlvbi5hY3RpdmUpIHtcbiAgICAgIHJldHVybiAndmFyKC0taW9uLWNvbG9yLXByaW1hcnkpJztcbiAgICB9XG4gICAgaWYgKHJlYWN0aW9uLmNvbG9yKSB7XG4gICAgICByZXR1cm4gYHZhcigtLWlvbi1jb2xvci0ke3JlYWN0aW9uLmNvbG9yfSlgO1xuICAgIH1cbiAgICByZXR1cm4gJ3ZhcigtLWlvbi1jb2xvci1tZWRpdW0pJztcbiAgfVxuXG4gIGdldEFjdGlvbkxhYmVsKGFjdGlvbjogQ29tbWVudEFjdGlvbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGFjdGlvbi5sYWJlbCB8fCBhY3Rpb24uY29udGVudEZhbGxiYWNrIHx8ICcnO1xuICB9XG5cbiAgZ2V0TWVudUl0ZW1MYWJlbChpdGVtOiBDb21tZW50TWVudUl0ZW0pOiBzdHJpbmcge1xuICAgIHJldHVybiBpdGVtLmxhYmVsIHx8IGl0ZW0uY29udGVudEZhbGxiYWNrIHx8ICcnO1xuICB9XG5cbiAgaGFzQ2hpbGRyZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKHRoaXMucHJvcHMuY2hpbGRyZW4gJiYgdGhpcy5wcm9wcy5jaGlsZHJlbi5sZW5ndGggPiAwKSB8fFxuICAgICAgICAgICAhISh0aGlzLnByb3BzLnJlcGx5Q291bnQgJiYgdGhpcy5wcm9wcy5yZXBseUNvdW50ID4gMCk7XG4gIH1cblxuICBjYW5TaG93Q2hpbGRyZW4oKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbWF4RGVwdGggPSB0aGlzLnByb3BzLm1heERlcHRoID8/IDM7XG4gICAgY29uc3QgY3VycmVudERlcHRoID0gdGhpcy5wcm9wcy5kZXB0aCA/PyAwO1xuICAgIHJldHVybiBjdXJyZW50RGVwdGggPCBtYXhEZXB0aCAmJiAhISh0aGlzLnByb3BzLmNoaWxkcmVuICYmIHRoaXMucHJvcHMuY2hpbGRyZW4ubGVuZ3RoID4gMCk7XG4gIH1cblxuICBnZXRDaGlsZFByb3BzKGNoaWxkOiBDb21tZW50TWV0YWRhdGEpOiBDb21tZW50TWV0YWRhdGEge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5jaGlsZCxcbiAgICAgIGRlcHRoOiAodGhpcy5wcm9wcy5kZXB0aCA/PyAwKSArIDEsXG4gICAgICBtYXhEZXB0aDogdGhpcy5wcm9wcy5tYXhEZXB0aCA/PyAzLFxuICAgIH07XG4gIH1cblxuICBoYXNNb3JlUmVwbGllcygpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMucHJvcHMucmVwbHlDb3VudCkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGxvYWRlZENvdW50ID0gdGhpcy5wcm9wcy5jaGlsZHJlbj8ubGVuZ3RoID8/IDA7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMucmVwbHlDb3VudCA+IGxvYWRlZENvdW50O1xuICB9XG5cbiAgZ2V0UmVtYWluaW5nQ291bnQoKTogbnVtYmVyIHtcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMucHJvcHMucmVwbHlDb3VudCA/PyAwO1xuICAgIGNvbnN0IGxvYWRlZCA9IHRoaXMucHJvcHMuY2hpbGRyZW4/Lmxlbmd0aCA/PyAwO1xuICAgIHJldHVybiB0b3RhbCAtIGxvYWRlZDtcbiAgfVxuXG4gIG9uQXV0aG9yQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5hdXRob3JDbGljay5lbWl0KHtcbiAgICAgIGF1dGhvcjogdGhpcy5wcm9wcy5hdXRob3IsXG4gICAgICBjb21tZW50VG9rZW46IHRoaXMucHJvcHMudG9rZW4sXG4gICAgfSk7XG4gIH1cblxuICBvblJlYWN0aW9uQ2xpY2socmVhY3Rpb246IENvbW1lbnRSZWFjdGlvbik6IHZvaWQge1xuICAgIHRoaXMucmVhY3Rpb25DbGljay5lbWl0KHtcbiAgICAgIHJlYWN0aW9uLFxuICAgICAgY29tbWVudFRva2VuOiB0aGlzLnByb3BzLnRva2VuLFxuICAgICAgaXNBY3RpdmU6ICFyZWFjdGlvbi5hY3RpdmUsXG4gICAgfSk7XG4gIH1cblxuICBvbkFjdGlvbkNsaWNrKGFjdGlvbjogQ29tbWVudEFjdGlvbik6IHZvaWQge1xuICAgIHRoaXMuYWN0aW9uQ2xpY2suZW1pdCh7XG4gICAgICBhY3Rpb24sXG4gICAgICBjb21tZW50VG9rZW46IHRoaXMucHJvcHMudG9rZW4sXG4gICAgfSk7XG4gIH1cblxuICBvbk1lbnVJdGVtQ2xpY2soaXRlbTogQ29tbWVudE1lbnVJdGVtKTogdm9pZCB7XG4gICAgdGhpcy5tZW51SXRlbUNsaWNrLmVtaXQoe1xuICAgICAgbWVudUl0ZW06IGl0ZW0sXG4gICAgICBjb21tZW50VG9rZW46IHRoaXMucHJvcHMudG9rZW4sXG4gICAgfSk7XG4gIH1cblxuICBvbkxvYWRNb3JlQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkTW9yZUNsaWNrLmVtaXQoe1xuICAgICAgY29tbWVudFRva2VuOiB0aGlzLnByb3BzLnRva2VuLFxuICAgICAgY3VycmVudENvdW50OiB0aGlzLnByb3BzLmNoaWxkcmVuPy5sZW5ndGggPz8gMCxcbiAgICB9KTtcbiAgfVxuXG4gIG9uVG9nZ2xlQ29sbGFwc2UoKTogdm9pZCB7XG4gICAgdGhpcy5jb2xsYXBzZVRvZ2dsZS5lbWl0KHtcbiAgICAgIHRva2VuOiB0aGlzLnByb3BzLnRva2VuLFxuICAgICAgY29sbGFwc2VkOiAhdGhpcy5wcm9wcy5jb2xsYXBzZWQsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
607
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NvbW1lbnQvY29tbWVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixpQkFBaUIsRUFDakIsWUFBWSxFQUNaLEtBQUssRUFDTCxlQUFlLEVBQ2YsUUFBUSxFQUNSLFlBQVksRUFDWixLQUFLLEVBQ0wsVUFBVSxFQUNWLEdBQUcsRUFDSCxXQUFXLEVBQ1gsU0FBUyxFQUNULEdBQUcsRUFDSCxNQUFNLEVBQ04sS0FBSyxFQUNMLElBQUksRUFDSixLQUFLLEdBQ04sTUFBTSxnQkFBZ0IsQ0FBQzs7QUFjeEIsUUFBUSxDQUFDO0lBQ1Asa0JBQWtCO0lBQ2xCLGVBQWU7SUFDZixpQkFBaUI7SUFDakIsWUFBWTtJQUNaLEtBQUs7SUFDTCxlQUFlO0lBQ2YsUUFBUTtJQUNSLFlBQVk7SUFDWixLQUFLO0lBQ0wsVUFBVTtJQUNWLEdBQUc7SUFDSCxXQUFXO0lBQ1gsU0FBUztJQUNULEdBQUc7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QiwwU0FuTmpCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3S1Qsd3pTQTJDVSxnQkFBZ0Isd0xBcE5qQixZQUFZLCtCQUFFLE9BQU8sMkpBQUUsU0FBUyxvUEFBRSxVQUFVLHdEQUFFLE9BQU8seUZBQUUsT0FBTywwTkFBRSxRQUFRLDZGQUFFLGVBQWU7OzRGQW9OeEYsZ0JBQWdCO2tCQXZONUIsU0FBUzsrQkFDRSxhQUFhLGNBQ1gsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGVBQWUsQ0FBQyxZQUMxRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0tUO3dEQThDUSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJb25JY29uLCBJb25CdXR0b24sIElvblBvcG92ZXIsIElvbkxpc3QsIElvbkl0ZW0sIElvbkxhYmVsIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYXZhdGFyL2F2YXRhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQge1xuICBlbGxpcHNpc0hvcml6b250YWwsXG4gIGNoZWNrbWFya0NpcmNsZSxcbiAgY2hhdGJ1YmJsZU91dGxpbmUsXG4gIGhlYXJ0T3V0bGluZSxcbiAgaGVhcnQsXG4gIHRodW1ic1VwT3V0bGluZSxcbiAgdGh1bWJzVXAsXG4gIGhhcHB5T3V0bGluZSxcbiAgaGFwcHksXG4gIHNhZE91dGxpbmUsXG4gIHNhZCxcbiAgY2hldnJvbkRvd24sXG4gIGNoZXZyb25VcCxcbiAgcGluLFxuICBwZW5jaWwsXG4gIHRyYXNoLFxuICBmbGFnLFxuICBzaGFyZSxcbn0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuaW1wb3J0IHtcbiAgQ29tbWVudE1ldGFkYXRhLFxuICBDb21tZW50QXV0aG9yLFxuICBDb21tZW50UmVhY3Rpb24sXG4gIENvbW1lbnRBY3Rpb24sXG4gIENvbW1lbnRNZW51SXRlbSxcbiAgQ29tbWVudEF1dGhvckNsaWNrRXZlbnQsXG4gIENvbW1lbnRSZWFjdGlvbkNsaWNrRXZlbnQsXG4gIENvbW1lbnRBY3Rpb25DbGlja0V2ZW50LFxuICBDb21tZW50TWVudUl0ZW1DbGlja0V2ZW50LFxuICBDb21tZW50TG9hZE1vcmVFdmVudCxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbmFkZEljb25zKHtcbiAgZWxsaXBzaXNIb3Jpem9udGFsLFxuICBjaGVja21hcmtDaXJjbGUsXG4gIGNoYXRidWJibGVPdXRsaW5lLFxuICBoZWFydE91dGxpbmUsXG4gIGhlYXJ0LFxuICB0aHVtYnNVcE91dGxpbmUsXG4gIHRodW1ic1VwLFxuICBoYXBweU91dGxpbmUsXG4gIGhhcHB5LFxuICBzYWRPdXRsaW5lLFxuICBzYWQsXG4gIGNoZXZyb25Eb3duLFxuICBjaGV2cm9uVXAsXG4gIHBpbixcbiAgcGVuY2lsLFxuICB0cmFzaCxcbiAgZmxhZyxcbiAgc2hhcmUsXG59KTtcblxuLyoqXG4gKiBEZWZhdWx0cyBpMThuIChlcy9lbikg4oCUIGF1dG8tcmVnaXN0cmFkb3Mgc2kgZWwgY29uc3VtZXIgbm8gcHJvdmV5w7MgZWxcbiAqIG5hbWVzcGFjZSBgQ29tbWVudGAuIEN1YnJlIGVsIGFyaWEtbGFiZWwgZGVsIGF1dG9yIChhdmF0YXIgKyBub21icmUpLlxuICovXG5jb25zdCBDT01NRU5UX0kxOE4gPSB7XG4gIGVzOiB7IHZpZXdQcm9maWxlT2Y6ICdWZXIgcGVyZmlsIGRlIHtuYW1lfScgfSxcbiAgZW46IHsgdmlld1Byb2ZpbGVPZjogJ1ZpZXcgcHJvZmlsZSBvZiB7bmFtZX0nIH0sXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtY29tbWVudCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvbkljb24sIElvbkJ1dHRvbiwgSW9uUG9wb3ZlciwgSW9uTGlzdCwgSW9uSXRlbSwgSW9uTGFiZWwsIEF2YXRhckNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjb21tZW50XCJcbiAgICAgIFtjbGFzcy5oaWdobGlnaHRlZF09XCJwcm9wcy5oaWdobGlnaHRlZFwiXG4gICAgICBbY2xhc3MucGlubmVkXT1cInByb3BzLnBpbm5lZFwiXG4gICAgICBbY2xhc3MuY29sbGFwc2VkXT1cInByb3BzLmNvbGxhcHNlZFwiXG4gICAgICBbc3R5bGUuLS1kZXB0aF09XCJwcm9wcy5kZXB0aCB8fCAwXCJcbiAgICA+XG4gICAgICBAaWYgKHByb3BzLnBpbm5lZCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwicGlubmVkLWluZGljYXRvclwiPlxuICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwicGluXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pb24taWNvbj5cbiAgICAgICAgICA8c3Bhbj57eyBpMThuLnQoJ3Bpbm5lZCcpIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnQtbWFpblwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNvbW1lbnQtYXZhdGFyXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJhdXRob3JMYWJlbCgpXCIgKGNsaWNrKT1cIm9uQXV0aG9yQ2xpY2soKVwiPlxuICAgICAgICAgIEBpZiAocHJvcHMuYXV0aG9yLmF2YXRhcikge1xuICAgICAgICAgICAgPHZhbC1hdmF0YXIgW3Byb3BzXT1cInByb3BzLmF1dGhvci5hdmF0YXJcIj48L3ZhbC1hdmF0YXI+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLXBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgICAgIHt7IGdldEluaXRpYWxzKHByb3BzLmF1dGhvci5uYW1lKSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbWVudC1ib2R5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnQtaGVhZGVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImF1dGhvci1pbmZvXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJhdXRob3JMYWJlbCgpXCIgKGNsaWNrKT1cIm9uQXV0aG9yQ2xpY2soKVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF1dGhvci1uYW1lXCI+e3sgcHJvcHMuYXV0aG9yLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIEBpZiAocHJvcHMuYXV0aG9yLnZlcmlmaWVkKSB7XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGVja21hcmstY2lyY2xlXCIgY2xhc3M9XCJ2ZXJpZmllZC1iYWRnZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChwcm9wcy5hdXRob3IudXNlcm5hbWUpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF1dGhvci11c2VybmFtZVwiPiYjNjQ7e3sgcHJvcHMuYXV0aG9yLnVzZXJuYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnQtbWV0YVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpbWVzdGFtcFwiPnt7IGZvcm1hdFRpbWVzdGFtcChwcm9wcy50aW1lc3RhbXApIH19PC9zcGFuPlxuICAgICAgICAgICAgICBAaWYgKHByb3BzLmVkaXRlZCkge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZWRpdGVkLWxhYmVsXCI+e3sgaTE4bi50KCdlZGl0ZWQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIEBpZiAocHJvcHMubWVudUl0ZW1zICYmIHByb3BzLm1lbnVJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgZmlsbD1cImNsZWFyXCJcbiAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibW9yZS1idXR0b25cIlxuICAgICAgICAgICAgICAgIFtpZF09XCInbWVudS10cmlnZ2VyLScgKyBwcm9wcy50b2tlblwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInTcOhcyBvcGNpb25lcydcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJlbGxpcHNpcy1ob3Jpem9udGFsXCIgc2xvdD1cImljb24tb25seVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgICAgICAgICA8aW9uLXBvcG92ZXIgW3RyaWdnZXJdPVwiJ21lbnUtdHJpZ2dlci0nICsgcHJvcHMudG9rZW5cIiBbZGlzbWlzc09uU2VsZWN0XT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICA8aW9uLWxpc3Q+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgcHJvcHMubWVudUl0ZW1zOyB0cmFjayBpdGVtLnRva2VuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLmRpdmlkZXJCZWZvcmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZW51LWRpdmlkZXJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICBbYnV0dG9uXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2RldGFpbF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25NZW51SXRlbUNsaWNrKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uaWNvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gW25hbWVdPVwiaXRlbS5pY29uXCIgc2xvdD1cInN0YXJ0XCIgW2NvbG9yXT1cIml0ZW0uY29sb3JcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPGlvbi1sYWJlbCBbY29sb3JdPVwiaXRlbS5jb2xvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRNZW51SXRlbUxhYmVsKGl0ZW0pIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L2lvbi1saXN0PlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDwvaW9uLXBvcG92ZXI+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICBAaWYgKCFwcm9wcy5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21tZW50LWNvbnRlbnRcIiBbaW5uZXJIVE1MXT1cInByb2Nlc3NDb250ZW50KGRpc3BsYXlDb250ZW50KVwiPjwvZGl2PlxuXG4gICAgICAgICAgICBAaWYgKHByb3BzLnJlYWN0aW9ucyAmJiBwcm9wcy5yZWFjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbWVudC1yZWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChyZWFjdGlvbiBvZiBwcm9wcy5yZWFjdGlvbnM7IHRyYWNrIHJlYWN0aW9uLnRva2VuKSB7XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmVhY3Rpb24tYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJyZWFjdGlvbi5hY3RpdmVcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGUuLS1yZWFjdGlvbi1jb2xvcl09XCJnZXRSZWFjdGlvbkNvbG9yKHJlYWN0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblJlYWN0aW9uQ2xpY2socmVhY3Rpb24pXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cInJlYWN0aW9uLmljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKHJlYWN0aW9uLmNvdW50ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVhY3Rpb24tY291bnRcIj57eyBmb3JtYXRDb3VudChyZWFjdGlvbi5jb3VudCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpZiAocHJvcHMuYWN0aW9ucyAmJiBwcm9wcy5hY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnQtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGFjdGlvbiBvZiBwcm9wcy5hY3Rpb25zOyB0cmFjayBhY3Rpb24udG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJhY3Rpb24uY29sb3IgfHwgJ21lZGl1bSdcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aW9uLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soYWN0aW9uKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoYWN0aW9uLmljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gW25hbWVdPVwiYWN0aW9uLmljb25cIiBzbG90PVwic3RhcnRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHt7IGdldEFjdGlvbkxhYmVsKGFjdGlvbikgfX1cbiAgICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImV4cGFuZC1idXR0b25cIiAoY2xpY2spPVwib25Ub2dnbGVDb2xsYXBzZSgpXCI+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hldnJvbi1kb3duXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgaTE4bi50KCdzaG93Q29tbWVudCcpIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICBAaWYgKCFwcm9wcy5jb2xsYXBzZWQgJiYgaGFzQ2hpbGRyZW4oKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbWVudC1jaGlsZHJlblwiPlxuICAgICAgICAgIEBpZiAocHJvcHMuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY29sbGFwc2UtYnV0dG9uXCIgKGNsaWNrKT1cIm9uVG9nZ2xlQ29sbGFwc2UoKVwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoZXZyb24tdXBcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICA8c3Bhbj57eyBpMThuLnQoJ2hpZGVSZXBsaWVzJykgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKGNhblNob3dDaGlsZHJlbigpKSB7XG4gICAgICAgICAgICBAZm9yIChjaGlsZCBvZiBwcm9wcy5jaGlsZHJlbjsgdHJhY2sgY2hpbGQudG9rZW4pIHtcbiAgICAgICAgICAgICAgPHZhbC1jb21tZW50XG4gICAgICAgICAgICAgICAgW3Byb3BzXT1cImdldENoaWxkUHJvcHMoY2hpbGQpXCJcbiAgICAgICAgICAgICAgICAoYXV0aG9yQ2xpY2spPVwiYXV0aG9yQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAocmVhY3Rpb25DbGljayk9XCJyZWFjdGlvbkNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGFjdGlvbkNsaWNrKT1cImFjdGlvbkNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKG1lbnVJdGVtQ2xpY2spPVwibWVudUl0ZW1DbGljay5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgIChsb2FkTW9yZUNsaWNrKT1cImxvYWRNb3JlQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoY29sbGFwc2VUb2dnbGUpPVwiY29sbGFwc2VUb2dnbGUuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgPjwvdmFsLWNvbW1lbnQ+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpZiAoaGFzTW9yZVJlcGxpZXMoKSkge1xuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibG9hZC1tb3JlLWJ1dHRvblwiIChjbGljayk9XCJvbkxvYWRNb3JlQ2xpY2soKVwiPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hhdGJ1YmJsZS1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBnZXRMb2FkTW9yZVJlcGxpZXNUZXh0KCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInZpZXctcmVwbGllcy1idXR0b25cIiAoY2xpY2spPVwib25Mb2FkTW9yZUNsaWNrKClcIj5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGF0YnViYmxlLW91dGxpbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICA8c3Bhbj57eyBnZXRWaWV3UmVwbGllc1RleHQoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2NvbW1lbnQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC1jb21tZW50XG4gKlxuICogQSB2ZXJzYXRpbGUgY29tbWVudCBjb21wb25lbnQgZm9yIGZvcnVtcywgcmV2aWV3cywgYW5kIHNvY2lhbCBtZWRpYS5cbiAqIFN1cHBvcnRzIGF1dGhvciBpbmZvLCByZWFjdGlvbnMsIGFjdGlvbnMsIG5lc3RlZCByZXBsaWVzLCBhbmQgbW9yZS5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyBjb21tZW50XG4gKiA8dmFsLWNvbW1lbnQgW3Byb3BzXT1cIntcbiAqICAgdG9rZW46ICcxJyxcbiAqICAgYXV0aG9yOiB7IG5hbWU6ICdKb2huIERvZScsIHVzZXJuYW1lOiAnam9obmQnIH0sXG4gKiAgIGNvbnRlbnQ6ICdUaGlzIGlzIGEgZ3JlYXQgcG9zdCEnLFxuICogICB0aW1lc3RhbXA6ICcyIGhvdXJzIGFnbydcbiAqIH1cIj48L3ZhbC1jb21tZW50PlxuICpcbiAqIEBleGFtcGxlIFdpdGggcmVhY3Rpb25zIGFuZCBhY3Rpb25zXG4gKiA8dmFsLWNvbW1lbnQgW3Byb3BzXT1cIntcbiAqICAgdG9rZW46ICcxJyxcbiAqICAgYXV0aG9yOiB7IG5hbWU6ICdKYW5lJywgYXZhdGFyOiBhdmF0YXJQcm9wcywgdmVyaWZpZWQ6IHRydWUgfSxcbiAqICAgY29udGVudDogJ0FtYXppbmcgY29udGVudCEgQ2hlY2sgb3V0IGh0dHBzOi8vZXhhbXBsZS5jb20nLFxuICogICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXG4gKiAgIHJlYWN0aW9uczogW1xuICogICAgIHsgdG9rZW46ICdsaWtlJywgaWNvbjogJ2hlYXJ0LW91dGxpbmUnLCBjb3VudDogNDIsIGFjdGl2ZTogZmFsc2UgfVxuICogICBdLFxuICogICBhY3Rpb25zOiBbXG4gKiAgICAgeyB0b2tlbjogJ3JlcGx5JywgbGFiZWw6ICdSZXBseScsIGljb246ICdjaGF0YnViYmxlLW91dGxpbmUnIH1cbiAqICAgXSxcbiAqICAgbWVudUl0ZW1zOiBbXG4gKiAgICAgeyB0b2tlbjogJ2VkaXQnLCBsYWJlbDogJ0VkaXQnLCBpY29uOiAncGVuY2lsJyB9LFxuICogICAgIHsgdG9rZW46ICdkZWxldGUnLCBsYWJlbDogJ0RlbGV0ZScsIGljb246ICd0cmFzaCcsIGNvbG9yOiAnZGFuZ2VyJyB9XG4gKiAgIF1cbiAqIH1cIj48L3ZhbC1jb21tZW50PlxuICpcbiAqIEBpbnB1dCBwcm9wczogQ29tbWVudE1ldGFkYXRhIC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIGNvbW1lbnRcbiAqIEBvdXRwdXQgYXV0aG9yQ2xpY2sgLSBFbWl0cyB3aGVuIGF1dGhvciBuYW1lL2F2YXRhciBpcyBjbGlja2VkXG4gKiBAb3V0cHV0IHJlYWN0aW9uQ2xpY2sgLSBFbWl0cyB3aGVuIGEgcmVhY3Rpb24gaXMgY2xpY2tlZFxuICogQG91dHB1dCBhY3Rpb25DbGljayAtIEVtaXRzIHdoZW4gYW4gYWN0aW9uIGJ1dHRvbiBpcyBjbGlja2VkXG4gKiBAb3V0cHV0IG1lbnVJdGVtQ2xpY2sgLSBFbWl0cyB3aGVuIGEgbWVudSBpdGVtIGlzIGNsaWNrZWRcbiAqIEBvdXRwdXQgbG9hZE1vcmVDbGljayAtIEVtaXRzIHdoZW4gbG9hZCBtb3JlIHJlcGxpZXMgaXMgY2xpY2tlZFxuICogQG91dHB1dCBjb2xsYXBzZVRvZ2dsZSAtIEVtaXRzIHdoZW4gY29tbWVudCBpcyBjb2xsYXBzZWQvZXhwYW5kZWRcbiAqL1xuZXhwb3J0IGNsYXNzIENvbW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcm90ZWN0ZWQgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG5cbiAgQElucHV0KCkgcHJvcHM6IENvbW1lbnRNZXRhZGF0YTtcblxuICBAT3V0cHV0KCkgYXV0aG9yQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPENvbW1lbnRBdXRob3JDbGlja0V2ZW50PigpO1xuICBAT3V0cHV0KCkgcmVhY3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Q29tbWVudFJlYWN0aW9uQ2xpY2tFdmVudD4oKTtcbiAgQE91dHB1dCgpIGFjdGlvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxDb21tZW50QWN0aW9uQ2xpY2tFdmVudD4oKTtcbiAgQE91dHB1dCgpIG1lbnVJdGVtQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPENvbW1lbnRNZW51SXRlbUNsaWNrRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBsb2FkTW9yZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxDb21tZW50TG9hZE1vcmVFdmVudD4oKTtcbiAgQE91dHB1dCgpIGNvbGxhcHNlVG9nZ2xlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHRva2VuOiBzdHJpbmc7IGNvbGxhcHNlZDogYm9vbGVhbiB9PigpO1xuXG4gIGRpc3BsYXlDb250ZW50OiBzdHJpbmcgPSAnJztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UoJ0NvbW1lbnQnKSkge1xuICAgICAgdGhpcy5pMThuLnJlZ2lzdGVyQ29udGVudCgnQ29tbWVudCcsIENPTU1FTlRfSTE4Tik7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwbGF5Q29udGVudCA9IHRoaXMucHJvcHMuY29udGVudCB8fCB0aGlzLnByb3BzLmNvbnRlbnRGYWxsYmFjayB8fCAnJztcbiAgfVxuXG4gIC8qKiBBcmlhLWxhYmVsIGFjY2VzaWJsZSBkZWwgYXV0b3IgKGF2YXRhciArIG5vbWJyZSBjbGljYWJsZXMpLiAqL1xuICBhdXRob3JMYWJlbCgpOiBzdHJpbmcge1xuICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KCd2aWV3UHJvZmlsZU9mJywgJ0NvbW1lbnQnLCB7IG5hbWU6IHRoaXMucHJvcHMuYXV0aG9yLm5hbWUgfSk7XG4gIH1cblxuICBnZXRJbml0aWFscyhuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBuYW1lXG4gICAgICAuc3BsaXQoJyAnKVxuICAgICAgLm1hcChuID0+IG5bMF0pXG4gICAgICAuam9pbignJylcbiAgICAgIC5zdWJzdHJpbmcoMCwgMilcbiAgICAgIC50b1VwcGVyQ2FzZSgpO1xuICB9XG5cbiAgZm9ybWF0VGltZXN0YW1wKHRpbWVzdGFtcDogc3RyaW5nIHwgRGF0ZSk6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiB0aW1lc3RhbXAgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdGltZXN0YW1wO1xuICAgIH1cblxuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgZGlmZiA9IG5vdy5nZXRUaW1lKCkgLSB0aW1lc3RhbXAuZ2V0VGltZSgpO1xuICAgIGNvbnN0IHNlY29uZHMgPSBNYXRoLmZsb29yKGRpZmYgLyAxMDAwKTtcbiAgICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcihzZWNvbmRzIC8gNjApO1xuICAgIGNvbnN0IGhvdXJzID0gTWF0aC5mbG9vcihtaW51dGVzIC8gNjApO1xuICAgIGNvbnN0IGRheXMgPSBNYXRoLmZsb29yKGhvdXJzIC8gMjQpO1xuXG4gICAgaWYgKHNlY29uZHMgPCA2MCkgcmV0dXJuIHRoaXMuaTE4bi50KCdqdXN0Tm93Jyk7XG4gICAgaWYgKG1pbnV0ZXMgPCA2MCkgcmV0dXJuIHRoaXMuaTE4bi50KCdtaW51dGVzQWdvJywgJ19nbG9iYWwnLCB7IG1pbnV0ZXM6IG1pbnV0ZXMudG9TdHJpbmcoKSB9KTtcbiAgICBpZiAoaG91cnMgPCAyNCkgcmV0dXJuIHRoaXMuaTE4bi50KCdob3Vyc0FnbycsICdfZ2xvYmFsJywgeyBob3VyczogaG91cnMudG9TdHJpbmcoKSB9KTtcbiAgICBpZiAoZGF5cyA8IDcpIHJldHVybiB0aGlzLmkxOG4udCgnZGF5c0FnbycsICdfZ2xvYmFsJywgeyBkYXlzOiBkYXlzLnRvU3RyaW5nKCkgfSk7XG5cbiAgICByZXR1cm4gdGltZXN0YW1wLnRvTG9jYWxlRGF0ZVN0cmluZygpO1xuICB9XG5cbiAgZ2V0TG9hZE1vcmVSZXBsaWVzVGV4dCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvdW50ID0gdGhpcy5nZXRSZW1haW5pbmdDb3VudCgpO1xuICAgIHJldHVybiB0aGlzLmkxOG4udCgnbG9hZE1vcmVSZXBsaWVzJykgKyBgICgke2NvdW50fSlgO1xuICB9XG5cbiAgZ2V0Vmlld1JlcGxpZXNUZXh0KCk6IHN0cmluZyB7XG4gICAgY29uc3QgY291bnQgPSB0aGlzLnByb3BzLnJlcGx5Q291bnQgfHwgdGhpcy5wcm9wcy5jaGlsZHJlbj8ubGVuZ3RoIHx8IDA7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KCd2aWV3UmVwbGllcycpICsgYCAoJHtjb3VudH0pYDtcbiAgfVxuXG4gIGZvcm1hdENvdW50KGNvdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmIChjb3VudCA+PSAxMDAwMDAwKSB7XG4gICAgICByZXR1cm4gKGNvdW50IC8gMTAwMDAwMCkudG9GaXhlZCgxKS5yZXBsYWNlKC9cXC4wJC8sICcnKSArICdNJztcbiAgICB9XG4gICAgaWYgKGNvdW50ID49IDEwMDApIHtcbiAgICAgIHJldHVybiAoY291bnQgLyAxMDAwKS50b0ZpeGVkKDEpLnJlcGxhY2UoL1xcLjAkLywgJycpICsgJ0snO1xuICAgIH1cbiAgICByZXR1cm4gY291bnQudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByb2Nlc3NDb250ZW50KGNvbnRlbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucHJvcHMuYXV0b0xpbmtpZnkgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gdGhpcy5lc2NhcGVIdG1sKGNvbnRlbnQpO1xuICAgIH1cblxuICAgIC8vIEVzY2FwZSBIVE1MIGZpcnN0XG4gICAgbGV0IHByb2Nlc3NlZCA9IHRoaXMuZXNjYXBlSHRtbChjb250ZW50KTtcblxuICAgIC8vIFVSTCByZWdleFxuICAgIGNvbnN0IHVybFJlZ2V4ID0gLyhodHRwcz86XFwvXFwvW15cXHM8XStbXlxcczwuLDs6IT8pXFxdJ1wiXSkvZ2k7XG4gICAgcHJvY2Vzc2VkID0gcHJvY2Vzc2VkLnJlcGxhY2UoXG4gICAgICB1cmxSZWdleCxcbiAgICAgICc8YSBocmVmPVwiJDFcIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCIgY2xhc3M9XCJjb21tZW50LWxpbmtcIj4kMTwvYT4nXG4gICAgKTtcblxuICAgIC8vIEBtZW50aW9uc1xuICAgIGNvbnN0IG1lbnRpb25SZWdleCA9IC9AKFxcdyspL2c7XG4gICAgcHJvY2Vzc2VkID0gcHJvY2Vzc2VkLnJlcGxhY2UobWVudGlvblJlZ2V4LCAnPHNwYW4gY2xhc3M9XCJjb21tZW50LW1lbnRpb25cIj5AJDE8L3NwYW4+Jyk7XG5cbiAgICAvLyAjaGFzaHRhZ3NcbiAgICBjb25zdCBoYXNodGFnUmVnZXggPSAvIyhcXHcrKS9nO1xuICAgIHByb2Nlc3NlZCA9IHByb2Nlc3NlZC5yZXBsYWNlKGhhc2h0YWdSZWdleCwgJzxzcGFuIGNsYXNzPVwiY29tbWVudC1oYXNodGFnXCI+IyQxPC9zcGFuPicpO1xuXG4gICAgLy8gUHJlc2VydmUgbGluZSBicmVha3NcbiAgICBwcm9jZXNzZWQgPSBwcm9jZXNzZWQucmVwbGFjZSgvXFxuL2csICc8YnI+Jyk7XG5cbiAgICByZXR1cm4gcHJvY2Vzc2VkO1xuICB9XG5cbiAgcHJpdmF0ZSBlc2NhcGVIdG1sKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgZGl2LnRleHRDb250ZW50ID0gdGV4dDtcbiAgICByZXR1cm4gZGl2LmlubmVySFRNTDtcbiAgfVxuXG4gIGdldFJlYWN0aW9uQ29sb3IocmVhY3Rpb246IENvbW1lbnRSZWFjdGlvbik6IHN0cmluZyB7XG4gICAgaWYgKHJlYWN0aW9uLmFjdGl2ZSAmJiByZWFjdGlvbi5hY3RpdmVDb2xvcikge1xuICAgICAgcmV0dXJuIGB2YXIoLS1pb24tY29sb3ItJHtyZWFjdGlvbi5hY3RpdmVDb2xvcn0pYDtcbiAgICB9XG4gICAgaWYgKHJlYWN0aW9uLmFjdGl2ZSkge1xuICAgICAgcmV0dXJuICd2YXIoLS1pb24tY29sb3ItcHJpbWFyeSknO1xuICAgIH1cbiAgICBpZiAocmVhY3Rpb24uY29sb3IpIHtcbiAgICAgIHJldHVybiBgdmFyKC0taW9uLWNvbG9yLSR7cmVhY3Rpb24uY29sb3J9KWA7XG4gICAgfVxuICAgIHJldHVybiAndmFyKC0taW9uLWNvbG9yLW1lZGl1bSknO1xuICB9XG5cbiAgZ2V0QWN0aW9uTGFiZWwoYWN0aW9uOiBDb21tZW50QWN0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYWN0aW9uLmxhYmVsIHx8IGFjdGlvbi5jb250ZW50RmFsbGJhY2sgfHwgJyc7XG4gIH1cblxuICBnZXRNZW51SXRlbUxhYmVsKGl0ZW06IENvbW1lbnRNZW51SXRlbSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGl0ZW0ubGFiZWwgfHwgaXRlbS5jb250ZW50RmFsbGJhY2sgfHwgJyc7XG4gIH1cblxuICBoYXNDaGlsZHJlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgISEodGhpcy5wcm9wcy5jaGlsZHJlbiAmJiB0aGlzLnByb3BzLmNoaWxkcmVuLmxlbmd0aCA+IDApIHx8XG4gICAgICAhISh0aGlzLnByb3BzLnJlcGx5Q291bnQgJiYgdGhpcy5wcm9wcy5yZXBseUNvdW50ID4gMClcbiAgICApO1xuICB9XG5cbiAgY2FuU2hvd0NoaWxkcmVuKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG1heERlcHRoID0gdGhpcy5wcm9wcy5tYXhEZXB0aCA/PyAzO1xuICAgIGNvbnN0IGN1cnJlbnREZXB0aCA9IHRoaXMucHJvcHMuZGVwdGggPz8gMDtcbiAgICByZXR1cm4gY3VycmVudERlcHRoIDwgbWF4RGVwdGggJiYgISEodGhpcy5wcm9wcy5jaGlsZHJlbiAmJiB0aGlzLnByb3BzLmNoaWxkcmVuLmxlbmd0aCA+IDApO1xuICB9XG5cbiAgZ2V0Q2hpbGRQcm9wcyhjaGlsZDogQ29tbWVudE1ldGFkYXRhKTogQ29tbWVudE1ldGFkYXRhIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uY2hpbGQsXG4gICAgICBkZXB0aDogKHRoaXMucHJvcHMuZGVwdGggPz8gMCkgKyAxLFxuICAgICAgbWF4RGVwdGg6IHRoaXMucHJvcHMubWF4RGVwdGggPz8gMyxcbiAgICB9O1xuICB9XG5cbiAgaGFzTW9yZVJlcGxpZXMoKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLnByb3BzLnJlcGx5Q291bnQpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBsb2FkZWRDb3VudCA9IHRoaXMucHJvcHMuY2hpbGRyZW4/Lmxlbmd0aCA/PyAwO1xuICAgIHJldHVybiB0aGlzLnByb3BzLnJlcGx5Q291bnQgPiBsb2FkZWRDb3VudDtcbiAgfVxuXG4gIGdldFJlbWFpbmluZ0NvdW50KCk6IG51bWJlciB7XG4gICAgY29uc3QgdG90YWwgPSB0aGlzLnByb3BzLnJlcGx5Q291bnQgPz8gMDtcbiAgICBjb25zdCBsb2FkZWQgPSB0aGlzLnByb3BzLmNoaWxkcmVuPy5sZW5ndGggPz8gMDtcbiAgICByZXR1cm4gdG90YWwgLSBsb2FkZWQ7XG4gIH1cblxuICBvbkF1dGhvckNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuYXV0aG9yQ2xpY2suZW1pdCh7XG4gICAgICBhdXRob3I6IHRoaXMucHJvcHMuYXV0aG9yLFxuICAgICAgY29tbWVudFRva2VuOiB0aGlzLnByb3BzLnRva2VuLFxuICAgIH0pO1xuICB9XG5cbiAgb25SZWFjdGlvbkNsaWNrKHJlYWN0aW9uOiBDb21tZW50UmVhY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLnJlYWN0aW9uQ2xpY2suZW1pdCh7XG4gICAgICByZWFjdGlvbixcbiAgICAgIGNvbW1lbnRUb2tlbjogdGhpcy5wcm9wcy50b2tlbixcbiAgICAgIGlzQWN0aXZlOiAhcmVhY3Rpb24uYWN0aXZlLFxuICAgIH0pO1xuICB9XG5cbiAgb25BY3Rpb25DbGljayhhY3Rpb246IENvbW1lbnRBY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLmFjdGlvbkNsaWNrLmVtaXQoe1xuICAgICAgYWN0aW9uLFxuICAgICAgY29tbWVudFRva2VuOiB0aGlzLnByb3BzLnRva2VuLFxuICAgIH0pO1xuICB9XG5cbiAgb25NZW51SXRlbUNsaWNrKGl0ZW06IENvbW1lbnRNZW51SXRlbSk6IHZvaWQge1xuICAgIHRoaXMubWVudUl0ZW1DbGljay5lbWl0KHtcbiAgICAgIG1lbnVJdGVtOiBpdGVtLFxuICAgICAgY29tbWVudFRva2VuOiB0aGlzLnByb3BzLnRva2VuLFxuICAgIH0pO1xuICB9XG5cbiAgb25Mb2FkTW9yZUNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMubG9hZE1vcmVDbGljay5lbWl0KHtcbiAgICAgIGNvbW1lbnRUb2tlbjogdGhpcy5wcm9wcy50b2tlbixcbiAgICAgIGN1cnJlbnRDb3VudDogdGhpcy5wcm9wcy5jaGlsZHJlbj8ubGVuZ3RoID8/IDAsXG4gICAgfSk7XG4gIH1cblxuICBvblRvZ2dsZUNvbGxhcHNlKCk6IHZvaWQge1xuICAgIHRoaXMuY29sbGFwc2VUb2dnbGUuZW1pdCh7XG4gICAgICB0b2tlbjogdGhpcy5wcm9wcy50b2tlbixcbiAgICAgIGNvbGxhcHNlZDogIXRoaXMucHJvcHMuY29sbGFwc2VkLFxuICAgIH0pO1xuICB9XG59XG4iXX0=