@clr/angular 17.4.0 → 17.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/accordion/accordion-panel.d.ts +11 -3
  2. package/clarity.api.md +447 -125
  3. package/data/datagrid/built-in/filters/datagrid-string-filter.d.ts +13 -4
  4. package/data/datagrid/datagrid-virtual-scroll.directive.d.ts +4 -3
  5. package/data/datagrid/providers/columns.service.d.ts +1 -0
  6. package/esm2020/accordion/accordion-panel.mjs +25 -7
  7. package/esm2020/accordion/stepper/stepper-panel.mjs +2 -2
  8. package/esm2020/data/datagrid/built-in/filters/datagrid-numeric-filter.mjs +18 -17
  9. package/esm2020/data/datagrid/built-in/filters/datagrid-string-filter.mjs +63 -28
  10. package/esm2020/data/datagrid/datagrid-column-toggle.mjs +1 -1
  11. package/esm2020/data/datagrid/datagrid-column.mjs +1 -1
  12. package/esm2020/data/datagrid/datagrid-footer.mjs +1 -1
  13. package/esm2020/data/datagrid/datagrid-page-size.mjs +1 -1
  14. package/esm2020/data/datagrid/datagrid-row.mjs +9 -11
  15. package/esm2020/data/datagrid/datagrid-virtual-scroll.directive.mjs +65 -11
  16. package/esm2020/data/datagrid/datagrid.mjs +1 -1
  17. package/esm2020/data/datagrid/providers/columns.service.mjs +4 -1
  18. package/esm2020/data/datagrid/render/main-renderer.mjs +3 -3
  19. package/esm2020/forms/checkbox/checkbox-container.mjs +1 -1
  20. package/esm2020/forms/checkbox/checkbox-wrapper.mjs +1 -1
  21. package/esm2020/forms/combobox/combobox-container.mjs +1 -1
  22. package/esm2020/forms/combobox/combobox.mjs +7 -7
  23. package/esm2020/forms/common/abstract-container.mjs +9 -3
  24. package/esm2020/forms/common/control-container.mjs +1 -1
  25. package/esm2020/forms/common/if-control-state/if-control-state.service.mjs +11 -27
  26. package/esm2020/forms/common/label.mjs +37 -5
  27. package/esm2020/forms/common/providers/ng-control.service.mjs +5 -1
  28. package/esm2020/forms/datalist/datalist-container.mjs +1 -1
  29. package/esm2020/forms/datepicker/calendar.mjs +21 -8
  30. package/esm2020/forms/datepicker/date-container.mjs +11 -4
  31. package/esm2020/forms/datepicker/date-input.mjs +2 -2
  32. package/esm2020/forms/datepicker/datepicker-action-buttons.mjs +50 -0
  33. package/esm2020/forms/datepicker/datepicker-view-manager.mjs +17 -10
  34. package/esm2020/forms/datepicker/datepicker.module.mjs +7 -3
  35. package/esm2020/forms/datepicker/day.mjs +15 -14
  36. package/esm2020/forms/datepicker/index.mjs +2 -1
  37. package/esm2020/forms/datepicker/model/calendar-view.model.mjs +15 -4
  38. package/esm2020/forms/datepicker/providers/date-navigation.service.mjs +9 -4
  39. package/esm2020/forms/file-input/file-input-container.mjs +102 -14
  40. package/esm2020/forms/file-input/file-input-validator-errors.mjs +8 -0
  41. package/esm2020/forms/file-input/file-input-validator.mjs +14 -22
  42. package/esm2020/forms/file-input/file-input.mjs +4 -2
  43. package/esm2020/forms/file-input/file-input.module.mjs +35 -4
  44. package/esm2020/forms/file-input/file-list.mjs +158 -0
  45. package/esm2020/forms/file-input/file-messages-template.mjs +26 -0
  46. package/esm2020/forms/file-input/file-messages.mjs +61 -0
  47. package/esm2020/forms/file-input/index.mjs +5 -1
  48. package/esm2020/forms/forms.module.mjs +7 -3
  49. package/esm2020/forms/index.mjs +2 -1
  50. package/esm2020/forms/input/input-container.mjs +12 -4
  51. package/esm2020/forms/input/input.mjs +10 -1
  52. package/esm2020/forms/number-input/index.mjs +10 -0
  53. package/esm2020/forms/number-input/number-input-container.mjs +145 -0
  54. package/esm2020/forms/number-input/number-input.mjs +72 -0
  55. package/esm2020/forms/number-input/number-input.module.mjs +32 -0
  56. package/esm2020/forms/password/password-container.mjs +1 -1
  57. package/esm2020/forms/radio/radio-container.mjs +1 -1
  58. package/esm2020/forms/radio/radio-wrapper.mjs +1 -1
  59. package/esm2020/forms/range/range-container.mjs +1 -1
  60. package/esm2020/forms/select/select-container.mjs +1 -1
  61. package/esm2020/forms/textarea/textarea-container.mjs +1 -1
  62. package/esm2020/layout/breadcrumbs/breadcrumb-item.mjs +24 -0
  63. package/esm2020/layout/breadcrumbs/breadcrumbs.constants.mjs +8 -0
  64. package/esm2020/layout/breadcrumbs/breadcrumbs.mjs +46 -0
  65. package/esm2020/layout/breadcrumbs/breadcrumbs.module.mjs +28 -0
  66. package/esm2020/layout/breadcrumbs/index.mjs +10 -0
  67. package/esm2020/layout/breadcrumbs/model/breadcrumbs.model.mjs +8 -0
  68. package/esm2020/layout/index.mjs +2 -1
  69. package/esm2020/layout/layout.module.mjs +5 -4
  70. package/esm2020/layout/tabs/index.mjs +3 -1
  71. package/esm2020/layout/tabs/tab-action.directive.mjs +22 -0
  72. package/esm2020/layout/tabs/tabs-actions.mjs +39 -0
  73. package/esm2020/layout/tabs/tabs.mjs +26 -7
  74. package/esm2020/layout/tabs/tabs.module.mjs +9 -1
  75. package/esm2020/popover/signpost/index.mjs +2 -1
  76. package/esm2020/popover/signpost/signpost-content.mjs +10 -5
  77. package/esm2020/popover/signpost/signpost-title.mjs +21 -0
  78. package/esm2020/popover/signpost/signpost.module.mjs +15 -3
  79. package/esm2020/utils/i18n/common-strings.default.mjs +8 -2
  80. package/esm2020/utils/i18n/common-strings.interface.mjs +1 -1
  81. package/fesm2015/clr-angular.mjs +17614 -16581
  82. package/fesm2015/clr-angular.mjs.map +1 -1
  83. package/fesm2020/clr-angular.mjs +17367 -16341
  84. package/fesm2020/clr-angular.mjs.map +1 -1
  85. package/forms/common/abstract-container.d.ts +2 -0
  86. package/forms/common/if-control-state/if-control-state.service.d.ts +4 -7
  87. package/forms/common/label.d.ts +11 -1
  88. package/forms/common/providers/ng-control.service.d.ts +2 -0
  89. package/forms/datepicker/calendar.d.ts +6 -1
  90. package/forms/datepicker/date-container.d.ts +2 -1
  91. package/forms/datepicker/datepicker-action-buttons.d.ts +16 -0
  92. package/forms/datepicker/datepicker-view-manager.d.ts +4 -1
  93. package/forms/datepicker/datepicker.module.d.ts +9 -8
  94. package/forms/datepicker/day.d.ts +5 -6
  95. package/forms/datepicker/index.d.ts +1 -0
  96. package/forms/datepicker/model/calendar-view.model.d.ts +5 -0
  97. package/forms/datepicker/providers/date-navigation.service.d.ts +6 -2
  98. package/forms/file-input/file-input-container.d.ts +15 -4
  99. package/forms/file-input/file-input-validator-errors.d.ts +52 -0
  100. package/forms/file-input/file-input.module.d.ts +7 -4
  101. package/forms/file-input/file-list.d.ts +18 -0
  102. package/forms/file-input/file-messages-template.d.ts +19 -0
  103. package/forms/file-input/file-messages.d.ts +17 -0
  104. package/forms/file-input/index.d.ts +4 -0
  105. package/forms/forms.module.d.ts +2 -1
  106. package/forms/index.d.ts +1 -0
  107. package/forms/input/input-container.d.ts +1 -1
  108. package/forms/number-input/index.d.ts +3 -0
  109. package/forms/number-input/number-input-container.d.ts +16 -0
  110. package/forms/number-input/number-input.d.ts +20 -0
  111. package/forms/number-input/number-input.module.d.ts +13 -0
  112. package/layout/breadcrumbs/breadcrumb-item.d.ts +5 -0
  113. package/layout/breadcrumbs/breadcrumbs.constants.d.ts +1 -0
  114. package/layout/breadcrumbs/breadcrumbs.d.ts +17 -0
  115. package/layout/breadcrumbs/breadcrumbs.module.d.ts +12 -0
  116. package/layout/breadcrumbs/index.d.ts +3 -0
  117. package/layout/breadcrumbs/model/breadcrumbs.model.d.ts +9 -0
  118. package/layout/index.d.ts +1 -0
  119. package/layout/layout.module.d.ts +2 -1
  120. package/layout/tabs/index.d.ts +3 -0
  121. package/layout/tabs/tab-action.directive.d.ts +5 -0
  122. package/layout/tabs/tabs-actions.d.ts +7 -0
  123. package/layout/tabs/tabs.d.ts +5 -2
  124. package/layout/tabs/tabs.module.d.ts +10 -8
  125. package/package.json +5 -5
  126. package/popover/signpost/index.d.ts +1 -0
  127. package/popover/signpost/signpost-content.d.ts +2 -1
  128. package/popover/signpost/signpost-title.d.ts +5 -0
  129. package/popover/signpost/signpost.module.d.ts +6 -5
  130. package/utils/i18n/common-strings.interface.d.ts +14 -0
@@ -141,7 +141,7 @@ export class ClrCombobox extends WrappedFormControl {
141
141
  return this.optionSelectionService.displayField;
142
142
  }
143
143
  get disabled() {
144
- return this.control && this.control.disabled;
144
+ return this.control?.disabled;
145
145
  }
146
146
  ngAfterContentInit() {
147
147
  this.initializeSubscriptions();
@@ -165,7 +165,7 @@ export class ClrCombobox extends WrappedFormControl {
165
165
  const multiModel = this.optionSelectionService.selectionModel.model;
166
166
  if (multiModel && multiModel.length > 0) {
167
167
  const lastItem = multiModel[multiModel.length - 1];
168
- this.control.control.markAsTouched();
168
+ this.control?.control.markAsTouched();
169
169
  this.optionSelectionService.unselect(lastItem);
170
170
  }
171
171
  }
@@ -186,11 +186,11 @@ export class ClrCombobox extends WrappedFormControl {
186
186
  }
187
187
  }
188
188
  onBlur() {
189
- this.onTouchedCallback();
190
- if (this.control.control.updateOn === 'change' && this.control.control?.errors?.required) {
189
+ this.onTouchedCallback?.();
190
+ if (this.control?.control.updateOn === 'change' && this.control.control.errors?.required) {
191
191
  this.updateControlValue();
192
192
  }
193
- if (this.control.control.updateOn === 'blur') {
193
+ if (this.control?.control.updateOn === 'blur') {
194
194
  this.control.control.updateValueAndValidity();
195
195
  }
196
196
  this.focused = false;
@@ -270,7 +270,7 @@ export class ClrCombobox extends WrappedFormControl {
270
270
  }));
271
271
  if (this.controlStateService) {
272
272
  this.subscriptions.push(this.controlStateService.statusChanges.subscribe(invalid => {
273
- this.invalid = this.control.control.touched && invalid === CONTROL_STATE.INVALID;
273
+ this.invalid = this.control?.control.touched && invalid === CONTROL_STATE.INVALID;
274
274
  }));
275
275
  }
276
276
  }
@@ -360,4 +360,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
360
360
  type: HostListener,
361
361
  args: ['keydown', ['$event']]
362
362
  }] } });
363
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9mb3Jtcy9jb21ib2JveC9jb21ib2JveC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2Zvcm1zL2NvbWJvYm94L2NvbWJvYm94Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBR0wsU0FBUyxFQUNULFlBQVksRUFFWixZQUFZLEVBQ1osWUFBWSxFQUNaLE1BQU0sRUFFTixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixXQUFXLEVBRVgsSUFBSSxFQUNKLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDeEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUU5RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUdyRixPQUFPLEVBQUUsYUFBYSxFQUF5QixNQUFNLHFEQUFxRCxDQUFDO0FBQzNHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FB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QyxTQUFTO2dCQUNhLGNBQWM7c0JBQTlDLFlBQVk7dUJBQUMsaUJBQWlCO2dCQWVHLE9BQU87c0JBQXhDLFlBQVk7dUJBQUMsVUFBVTtnQkFrQ3BCLFdBQVc7c0JBRGQsS0FBSzt1QkFBQyxVQUFVO2dCQTZGakIsT0FBTztzQkFETixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyNCBCcm9hZGNvbS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFRoZSB0ZXJtIFwiQnJvYWRjb21cIiByZWZlcnMgdG8gQnJvYWRjb20gSW5jLiBhbmQvb3IgaXRzIHN1YnNpZGlhcmllcy5cbiAqIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4gKi9cblxuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFBMQVRGT1JNX0lELFxuICBSZW5kZXJlcjIsXG4gIFNlbGYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBJRl9BQ1RJVkVfSURfUFJPVklERVIgfSBmcm9tICcuLi8uLi91dGlscy9jb25kaXRpb25hbC9pZi1hY3RpdmUuc2VydmljZSc7XG5pbXBvcnQgeyBLZXlzIH0gZnJvbSAnLi4vLi4vdXRpbHMvZW51bXMva2V5cy5lbnVtJztcbmltcG9ydCB7IEZPQ1VTX1NFUlZJQ0VfUFJPVklERVIgfSBmcm9tICcuLi8uLi91dGlscy9mb2N1cy9mb2N1cy5zZXJ2aWNlJztcbmltcG9ydCB7IENsckNvbW1vblN0cmluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvaTE4bi9jb21tb24tc3RyaW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IENsckxvYWRpbmdTdGF0ZSB9IGZyb20gJy4uLy4uL3V0aWxzL2xvYWRpbmcvbG9hZGluZyc7XG5pbXBvcnQgeyBMb2FkaW5nTGlzdGVuZXIgfSBmcm9tICcuLi8uLi91dGlscy9sb2FkaW5nL2xvYWRpbmctbGlzdGVuZXInO1xuaW1wb3J0IHsgQ2xyQWxpZ25tZW50IH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9lbnVtcy9hbGlnbm1lbnQuZW51bSc7XG5pbXBvcnQgeyBDbHJBeGlzIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9lbnVtcy9heGlzLmVudW0nO1xuaW1wb3J0IHsgQ2xyU2lkZSB9IGZyb20gJy4uLy4uL3V0aWxzL3BvcG92ZXIvZW51bXMvc2lkZS5lbnVtJztcbmltcG9ydCB7IENsclBvcG92ZXJQb3NpdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxzL3BvcG92ZXIvaW50ZXJmYWNlcy9wb3BvdmVyLXBvc2l0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDbHJQb3BvdmVySG9zdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3V0aWxzL3BvcG92ZXIvcG9wb3Zlci1ob3N0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDbHJQb3BvdmVyUG9zaXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9wcm92aWRlcnMvcG9wb3Zlci1wb3NpdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENsclBvcG92ZXJUb2dnbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9wcm92aWRlcnMvcG9wb3Zlci10b2dnbGUuc2VydmljZSc7XG5pbXBvcnQgeyBDT05UUk9MX1NUQVRFLCBJZkNvbnRyb2xTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vaWYtY29udHJvbC1zdGF0ZS9pZi1jb250cm9sLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgV3JhcHBlZEZvcm1Db250cm9sIH0gZnJvbSAnLi4vY29tbW9uL3dyYXBwZWQtY29udHJvbCc7XG5pbXBvcnQgeyBDbHJDb21ib2JveENvbnRhaW5lciB9IGZyb20gJy4vY29tYm9ib3gtY29udGFpbmVyJztcbmltcG9ydCB7IENvbWJvYm94TW9kZWwgfSBmcm9tICcuL21vZGVsL2NvbWJvYm94Lm1vZGVsJztcbmltcG9ydCB7IE11bHRpU2VsZWN0Q29tYm9ib3hNb2RlbCB9IGZyb20gJy4vbW9kZWwvbXVsdGktc2VsZWN0LWNvbWJvYm94Lm1vZGVsJztcbmltcG9ydCB7IFNpbmdsZVNlbGVjdENvbWJvYm94TW9kZWwgfSBmcm9tICcuL21vZGVsL3NpbmdsZS1zZWxlY3QtY29tYm9ib3gubW9kZWwnO1xuaW1wb3J0IHsgQ2xyT3B0aW9uU2VsZWN0ZWQgfSBmcm9tICcuL29wdGlvbi1zZWxlY3RlZC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ2xyT3B0aW9ucyB9IGZyb20gJy4vb3B0aW9ucyc7XG5pbXBvcnQgeyBDb21ib2JveENvbnRhaW5lclNlcnZpY2UgfSBmcm9tICcuL3Byb3ZpZGVycy9jb21ib2JveC1jb250YWluZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDT01CT0JPWF9GT0NVU19IQU5ETEVSX1BST1ZJREVSLCBDb21ib2JveEZvY3VzSGFuZGxlciB9IGZyb20gJy4vcHJvdmlkZXJzL2NvbWJvYm94LWZvY3VzLWhhbmRsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBPcHRpb25TZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9wcm92aWRlcnMvb3B0aW9uLXNlbGVjdGlvbi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2xyLWNvbWJvYm94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbWJvYm94Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICBPcHRpb25TZWxlY3Rpb25TZXJ2aWNlLFxuICAgIHsgcHJvdmlkZTogTG9hZGluZ0xpc3RlbmVyLCB1c2VFeGlzdGluZzogQ2xyQ29tYm9ib3ggfSxcbiAgICBJRl9BQ1RJVkVfSURfUFJPVklERVIsXG4gICAgRk9DVVNfU0VSVklDRV9QUk9WSURFUixcbiAgICBDT01CT0JPWF9GT0NVU19IQU5ETEVSX1BST1ZJREVSLFxuICBdLFxuICBob3N0RGlyZWN0aXZlczogW0NsclBvcG92ZXJIb3N0RGlyZWN0aXZlXSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MuYXJpYS1yZXF1aXJlZF0nOiAndHJ1ZScsXG4gICAgJ1tjbGFzcy5jbHItY29tYm9ib3hdJzogJ3RydWUnLFxuICAgICdbY2xhc3MuY2xyLWNvbWJvYm94LWRpc2FibGVkXSc6ICdjb250cm9sPy5kaXNhYmxlZCcsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIENsckNvbWJvYm94PFQ+XG4gIGV4dGVuZHMgV3JhcHBlZEZvcm1Db250cm9sPENsckNvbWJvYm94Q29udGFpbmVyPlxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBMb2FkaW5nTGlzdGVuZXIsIEFmdGVyQ29udGVudEluaXRcbntcbiAgQElucHV0KCdwbGFjZWhvbGRlcicpIHBsYWNlaG9sZGVyID0gJyc7XG5cbiAgQE91dHB1dCgnY2xySW5wdXRDaGFuZ2UnKSBjbHJJbnB1dENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPihmYWxzZSk7XG4gIEBPdXRwdXQoJ2Nsck9wZW5DaGFuZ2UnKSBjbHJPcGVuQ2hhbmdlID0gdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW5DaGFuZ2U7XG5cbiAgLyoqXG4gICAqIFRoaXMgb3V0cHV0IHNob3VsZCBiZSB1c2VkIHRvIHNldCB1cCBhIGxpdmUgcmVnaW9uIHVzaW5nIGFyaWEtbGl2ZSBhbmQgcG9wdWxhdGUgaXQgd2l0aCB1cGRhdGVzIHRoYXQgcmVmbGVjdCBlYWNoIGNvbWJvYm94IGNoYW5nZS5cbiAgICovXG4gIEBPdXRwdXQoJ2NsclNlbGVjdGlvbkNoYW5nZScpIGNsclNlbGVjdGlvbkNoYW5nZSA9IHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25DaGFuZ2VkO1xuXG4gIEBWaWV3Q2hpbGQoJ3RleHRib3hJbnB1dCcpIHRleHRib3g6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3RyaWdnZXInKSB0cmlnZ2VyOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgQENvbnRlbnRDaGlsZChDbHJPcHRpb25TZWxlY3RlZCkgb3B0aW9uU2VsZWN0ZWQ6IENsck9wdGlvblNlbGVjdGVkPFQ+O1xuXG4gIGludmFsaWQgPSBmYWxzZTtcbiAgZm9jdXNlZCA9IGZhbHNlO1xuICBmb2N1c2VkUGlsbDogYW55O1xuXG4gIHNtYXJ0UG9zaXRpb246IENsclBvcG92ZXJQb3NpdGlvbiA9IHtcbiAgICBheGlzOiBDbHJBeGlzLlZFUlRJQ0FMLFxuICAgIHNpZGU6IENsclNpZGUuQUZURVIsXG4gICAgYW5jaG9yOiBDbHJBbGlnbm1lbnQuU1RBUlQsXG4gICAgY29udGVudDogQ2xyQWxpZ25tZW50LlNUQVJULFxuICB9O1xuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBpbmRleCA9IDE7XG5cbiAgQENvbnRlbnRDaGlsZChDbHJPcHRpb25zKSBwcml2YXRlIG9wdGlvbnM6IENsck9wdGlvbnM8VD47XG5cbiAgcHJpdmF0ZSBfc2VhcmNoVGV4dCA9ICcnO1xuICBwcml2YXRlIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiBhbnk7XG4gIHByaXZhdGUgb25DaGFuZ2VDYWxsYmFjazogKG1vZGVsOiBUIHwgVFtdKSA9PiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgdmNyOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBAU2VsZigpXG4gICAgQE9wdGlvbmFsKClcbiAgICBwdWJsaWMgY29udHJvbDogTmdDb250cm9sLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBlbDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHVibGljIG9wdGlvblNlbGVjdGlvblNlcnZpY2U6IE9wdGlvblNlbGVjdGlvblNlcnZpY2U8VD4sXG4gICAgcHVibGljIGNvbW1vblN0cmluZ3M6IENsckNvbW1vblN0cmluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9nZ2xlU2VydmljZTogQ2xyUG9wb3ZlclRvZ2dsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwb3NpdGlvblNlcnZpY2U6IENsclBvcG92ZXJQb3NpdGlvblNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250cm9sU3RhdGVTZXJ2aWNlOiBJZkNvbnRyb2xTdGF0ZVNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250YWluZXJTZXJ2aWNlOiBDb21ib2JveENvbnRhaW5lclNlcnZpY2UsXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnksXG4gICAgcHJpdmF0ZSBmb2N1c0hhbmRsZXI6IENvbWJvYm94Rm9jdXNIYW5kbGVyPFQ+LFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICBzdXBlcih2Y3IsIENsckNvbWJvYm94Q29udGFpbmVyLCBpbmplY3RvciwgY29udHJvbCwgcmVuZGVyZXIsIGVsKTtcbiAgICBpZiAoY29udHJvbCkge1xuICAgICAgY29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG4gICAgLy8gZGVmYXVsdCB0byBTaW5nbGVTZWxlY3RDb21ib2JveE1vZGVsLCBpbiBjYXNlIHRoZSBvcHRpb25hbCBpbnB1dCBbQ2xyTXVsdGldIGlzbid0IHVzZWRcbiAgICBvcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsID0gbmV3IFNpbmdsZVNlbGVjdENvbWJvYm94TW9kZWw8VD4oKTtcbiAgICB0aGlzLnVwZGF0ZUNvbnRyb2xWYWx1ZSgpO1xuICB9XG5cbiAgQElucHV0KCdjbHJNdWx0aScpXG4gIGdldCBtdWx0aVNlbGVjdCgpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLm11bHRpc2VsZWN0YWJsZTtcbiAgfVxuICBzZXQgbXVsdGlTZWxlY3QodmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25Nb2RlbCA9IG5ldyBNdWx0aVNlbGVjdENvbWJvYm94TW9kZWw8VD4oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaW4gdGhlb3J5LCBzZXR0aW5nIHRoaXMgYWdhaW4gc2hvdWxkIG5vdCBjYXVzZSBlcnJvcnMgZXZlbiB0aG91Z2ggd2UgYWxyZWFkeSBzZXQgaXQgaW4gY29uc3RydWN0b3IsXG4gICAgICAvLyBzaW5jZSB0aGUgaW5pdGlhbCBjYWxsIHRvIHdyaXRlVmFsdWUgKGNhdXNlZCBieSBbbmdNb2RlbF0gaW5wdXQpIHNob3VsZCBoYXBwZW4gYWZ0ZXIgdGhpc1xuICAgICAgdGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsID0gbmV3IFNpbmdsZVNlbGVjdENvbWJvYm94TW9kZWw8VD4oKTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVDb250cm9sVmFsdWUoKTtcbiAgfVxuXG4gIC8vIE92ZXJyaWRlIHRoZSBpZCBvZiBXcmFwcGVkRm9ybUNvbnRyb2wsIGFzIHdlIHdhbnQgdG8gbW92ZSBpdCB0byB0aGUgZW1iZWRkZWQgaW5wdXQuXG4gIC8vIE90aGVyd2lzZSB0aGUgbGFiZWwvY29tcG9uZW50IGNvbm5lY3Rpb24gZG9lcyBub3Qgd29yayBhbmQgc2NyZWVuIHJlYWRlcnMgZG8gbm90IHJlYWQgdGhlIGxhYmVsLlxuICBvdmVycmlkZSBnZXQgaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbElkU2VydmljZS5pZCArICctY29tYm9ib3gnO1xuICB9XG4gIG92ZXJyaWRlIHNldCBpZChpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIuaWQgPSBpZDtcbiAgfVxuXG4gIGdldCBzZWFyY2hUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaFRleHQ7XG4gIH1cbiAgc2V0IHNlYXJjaFRleHQodGV4dDogc3RyaW5nKSB7XG4gICAgLy8gaWYgaW5wdXQgdGV4dCBoYXMgY2hhbmdlZCBzaW5jZSBsYXN0IHRpbWUsIGZpcmUgYSBjaGFuZ2UgZXZlbnQgc28gYXBwbGljYXRpb24gY2FuIHJlYWN0IHRvIGl0XG4gICAgaWYgKHRleHQgIT09IHRoaXMuX3NlYXJjaFRleHQpIHtcbiAgICAgIGlmICh0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbikge1xuICAgICAgICB0aGlzLm9wdGlvblNlbGVjdGlvblNlcnZpY2Uuc2hvd0FsbE9wdGlvbnMgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3NlYXJjaFRleHQgPSB0ZXh0O1xuICAgICAgdGhpcy5jbHJJbnB1dENoYW5nZS5lbWl0KHRoaXMuc2VhcmNoVGV4dCk7XG4gICAgfVxuICAgIC8vIFdlIG5lZWQgdG8gdHJpZ2dlciB0aGlzIGV2ZW4gaWYgdW5jaGFuZ2VkLCBzbyB0aGUgb3B0aW9uLWl0ZW1zIGRpcmVjdGl2ZSB3aWxsIHVwZGF0ZSBpdHMgbGlzdFxuICAgIC8vIGJhc2VkIG9uIHRoZSBcInNob3dBbGxPcHRpb25zXCIgdmFyaWFibGUgd2hpY2ggbWF5IGhhdmUgY2hhbmdlZCBpbiB0aGUgb3BlbkNoYW5nZSBzdWJzY3JpcHRpb24gYmVsb3cuXG4gICAgLy8gVGhlIG9wdGlvbi1pdGVtcyBkaXJlY3RpdmUgZG9lcyBub3QgbGlzdGVuIHRvIG9wZW5DaGFuZ2UsIGJ1dCBpdCBsaXN0ZW5zIHRvIGN1cnJlbnRJbnB1dCBjaGFuZ2VzLlxuICAgIHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5jdXJyZW50SW5wdXQgPSB0aGlzLnNlYXJjaFRleHQ7XG4gIH1cblxuICBnZXQgb3BlblN0YXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbjtcbiAgfVxuXG4gIGdldCBtdWx0aVNlbGVjdE1vZGVsKCk6IFRbXSB7XG4gICAgaWYgKCF0aGlzLm11bHRpU2VsZWN0KSB7XG4gICAgICB0aHJvdyBFcnJvcignbXVsdGlTZWxlY3RNb2RlbCBpcyBub3QgYXZhaWxhYmxlIGluIHNpbmdsZSBzZWxlY3Rpb24gY29udGV4dCcpO1xuICAgIH1cbiAgICByZXR1cm4gKHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25Nb2RlbCBhcyBNdWx0aVNlbGVjdENvbWJvYm94TW9kZWw8VD4pLm1vZGVsO1xuICB9XG5cbiAgZ2V0IGFyaWFDb250cm9scygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnM/Lm9wdGlvbnNJZDtcbiAgfVxuXG4gIGdldCBhcmlhT3ducygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnM/Lm9wdGlvbnNJZDtcbiAgfVxuXG4gIGdldCBhcmlhRGVzY3JpYmVkQnlTZWxlY3Rpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ3NlbGVjdGlvbi0nICsgdGhpcy5pZDtcbiAgfVxuXG4gIGdldCBkaXNwbGF5RmllbGQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLmRpc3BsYXlGaWVsZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGRpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2wgJiYgdGhpcy5jb250cm9sLmRpc2FibGVkO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZVN1YnNjcmlwdGlvbnMoKTtcblxuICAgIC8vIEluaXRpYWxpemUgd2l0aCBwcmVzZWxlY3RlZCB2YWx1ZVxuICAgIGlmICghdGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLmlzRW1wdHkoKSkge1xuICAgICAgdGhpcy51cGRhdGVJbnB1dFZhbHVlKHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25Nb2RlbCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuZm9jdXNIYW5kbGVyLmNvbXBvbmVudENkUmVmID0gdGhpcy5jZHI7XG4gICAgdGhpcy5mb2N1c0hhbmRsZXIudGV4dElucHV0ID0gdGhpcy50ZXh0Ym94Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5mb2N1c0hhbmRsZXIudHJpZ2dlciA9IHRoaXMudHJpZ2dlci5uYXRpdmVFbGVtZW50O1xuICAgIC8vIFRoZSB0ZXh0IGlucHV0IGlzIHRoZSBhY3R1YWwgZWxlbWVudCB3ZSBhcmUgd3JhcHBpbmdcbiAgICAvLyBUaGlzIGFzc2lnbm1lbnQgaXMgbmVlZGVkIGJ5IHRoZSB3cmFwcGVyLCBzbyBpdCBjYW4gc2V0XG4gICAgLy8gdGhlIGFyaWEgcHJvcGVydGllcyBvbiB0aGUgaW5wdXQgZWxlbWVudCwgbm90IG9uIHRoZSBjb21wb25lbnQuXG4gICAgdGhpcy5lbCA9IHRoaXMudGV4dGJveDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICBvbktleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgLy8gaWYgQkFDS1NQQUNFIGluIG11bHRpc2VsZWN0IG1vZGUsIGRlbGV0ZSB0aGUgbGFzdCBwaWxsIGlmIHRleHQgaXMgZW1wdHlcbiAgICBpZiAoZXZlbnQua2V5ID09PSBLZXlzLkJhY2tzcGFjZSAmJiB0aGlzLm11bHRpU2VsZWN0ICYmIHRoaXMuX3NlYXJjaFRleHQubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCBtdWx0aU1vZGVsOiBUW10gPSB0aGlzLm9wdGlvblNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uTW9kZWwubW9kZWwgYXMgVFtdO1xuICAgICAgaWYgKG11bHRpTW9kZWwgJiYgbXVsdGlNb2RlbC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IGxhc3RJdGVtOiBUID0gbXVsdGlNb2RlbFttdWx0aU1vZGVsLmxlbmd0aCAtIDFdO1xuICAgICAgICB0aGlzLmNvbnRyb2wuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgIHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS51bnNlbGVjdChsYXN0SXRlbSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaW5wdXRJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xJZFNlcnZpY2UuaWQ7XG4gIH1cblxuICBsb2FkaW5nU3RhdGVDaGFuZ2Uoc3RhdGU6IENsckxvYWRpbmdTdGF0ZSk6IHZvaWQge1xuICAgIHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5sb2FkaW5nID0gc3RhdGUgPT09IENsckxvYWRpbmdTdGF0ZS5MT0FESU5HO1xuICAgIHRoaXMucG9zaXRpb25TZXJ2aWNlLnJlYWxpZ24oKTtcbiAgICBpZiAoc3RhdGUgIT09IENsckxvYWRpbmdTdGF0ZS5MT0FESU5HICYmIGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIHRoaXMuZm9jdXNGaXJzdEFjdGl2ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHVuc2VsZWN0KGl0ZW06IFQpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS51bnNlbGVjdChpdGVtKTtcbiAgICB9XG4gIH1cblxuICBvbkJsdXIoKSB7XG4gICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjaygpO1xuICAgIGlmICh0aGlzLmNvbnRyb2wuY29udHJvbC51cGRhdGVPbiA9PT0gJ2NoYW5nZScgJiYgdGhpcy5jb250cm9sLmNvbnRyb2w/LmVycm9ycz8ucmVxdWlyZWQpIHtcbiAgICAgIHRoaXMudXBkYXRlQ29udHJvbFZhbHVlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbnRyb2wuY29udHJvbC51cGRhdGVPbiA9PT0gJ2JsdXInKSB7XG4gICAgICB0aGlzLmNvbnRyb2wuY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICB9XG5cbiAgb25Gb2N1cygpIHtcbiAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xuXG4gICAgLy8gZml4IGZvciBcImV4cHJlc3Npb24gY2hhbmdlZFwiIGVycm9yIHdoZW4gZm9jdXMgaXMgcmV0dXJuZWQgdG8gYSBjb21ib2JveCBhZnRlciBhIG1vZGFsIGlzIGNsb3NlZFxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS92bXdhcmUtY2xhcml0eS9uZy1jbGFyaXR5L2lzc3Vlcy82NjNcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBnZXRTZWxlY3Rpb25BcmlhTGFiZWwoKSB7XG4gICAgaWYgKHRoaXMuY29udGFpbmVyU2VydmljZSAmJiB0aGlzLmNvbnRhaW5lclNlcnZpY2UubGFiZWxUZXh0KSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5jb250YWluZXJTZXJ2aWNlLmxhYmVsVGV4dH0gJHt0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5jb21ib2JveFNlbGVjdGlvbn1gO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jb21tb25TdHJpbmdzLmtleXMuY29tYm9ib3hTZWxlY3Rpb247XG4gIH1cblxuICBmb2N1c0ZpcnN0QWN0aXZlKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5mb2N1c0hhbmRsZXIuZm9jdXNGaXJzdEFjdGl2ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogVCB8IFRbXSk6IHZvaWQge1xuICAgIHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25Nb2RlbC5tb2RlbCA9IHZhbHVlO1xuICAgIHRoaXMudXBkYXRlSW5wdXRWYWx1ZSh0aGlzLm9wdGlvblNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uTW9kZWwpO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gb25Ub3VjaGVkO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrID0gb25DaGFuZ2U7XG4gIH1cblxuICBnZXRBY3RpdmVEZXNjZW5kYW50KCkge1xuICAgIGNvbnN0IG1vZGVsID0gdGhpcy5mb2N1c0hhbmRsZXIucHNldWRvRm9jdXMubW9kZWw7XG4gICAgcmV0dXJuIG1vZGVsID8gbW9kZWwuaWQgOiB0aGlzLm9wdGlvbnM/Lm5vUmVzdWx0c0VsZW1lbnRJZDtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoKTogdm9pZCB7XG4gICAgLy8gZG8gbm90aGluZ1xuICB9XG5cbiAgZm9jdXNJbnB1dCgpIHtcbiAgICB0aGlzLmZvY3VzSGFuZGxlci5mb2N1c0lucHV0KCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVTdWJzY3JpcHRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbkNoYW5nZWQuc3Vic2NyaWJlKChuZXdTZWxlY3Rpb246IENvbWJvYm94TW9kZWw8VD4pID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVJbnB1dFZhbHVlKG5ld1NlbGVjdGlvbik7XG4gICAgICAgIGlmICh0aGlzLm11bHRpU2VsZWN0KSB7XG4gICAgICAgICAgdGhpcy5wb3NpdGlvblNlcnZpY2UucmVhbGlnbigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5tdWx0aVNlbGVjdCAmJiBuZXdTZWxlY3Rpb24gJiYgIW5ld1NlbGVjdGlvbi5pc0VtcHR5KCkpIHtcbiAgICAgICAgICB0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlQ29udHJvbFZhbHVlKCk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMudG9nZ2xlU2VydmljZS5vcGVuQ2hhbmdlLnN1YnNjcmliZShvcGVuID0+IHtcbiAgICAgICAgaWYgKG9wZW4pIHtcbiAgICAgICAgICB0aGlzLmZvY3VzRmlyc3RBY3RpdmUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm9wdGlvblNlbGVjdGlvblNlcnZpY2Uuc2hvd0FsbE9wdGlvbnMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm11bHRpU2VsZWN0KSB7XG4gICAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gdGhpcy5nZXREaXNwbGF5TmFtZXModGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLm1vZGVsKVswXSB8fCAnJztcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnRvZ2dsZVNlcnZpY2UucG9wb3ZlckFsaWduZWQuc3Vic2NyaWJlKHBvcG92ZXJOb2RlID0+IHtcbiAgICAgICAgLy8gV2hlbiB1c2VkIG91dHNpZGUgYSBjb21ib2JveCBjb250YWluZXJcbiAgICAgICAgaWYgKCF0aGlzLmNvbnRhaW5lclNlcnZpY2UpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcG9wb3ZlcjogSFRNTEVsZW1lbnQgPSBwb3BvdmVyTm9kZSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgLy8gVXBkYXRlIHBvc2l0aW9uIGlmIHBvcG92ZXIgaGlkZXMgdGhlIGxhYmVsXG4gICAgICAgIGlmIChwb3BvdmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCA8IHRoaXMuZWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3ApIHtcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHBvcG92ZXJOb2RlLCAndG9wJywgYCR7cG9wb3Zlci5vZmZzZXRUb3AgKyB0aGlzLmNvbnRhaW5lclNlcnZpY2UubGFiZWxPZmZzZXR9cHhgKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgaWYgKHRoaXMuY29udHJvbFN0YXRlU2VydmljZSkge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgIHRoaXMuY29udHJvbFN0YXRlU2VydmljZS5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZShpbnZhbGlkID0+IHtcbiAgICAgICAgICB0aGlzLmludmFsaWQgPSB0aGlzLmNvbnRyb2wuY29udHJvbC50b3VjaGVkICYmIGludmFsaWQgPT09IENPTlRST0xfU1RBVEUuSU5WQUxJRDtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVJbnB1dFZhbHVlKG1vZGVsOiBDb21ib2JveE1vZGVsPFQ+KSB7XG4gICAgaWYgKCF0aGlzLm11bHRpU2VsZWN0KSB7XG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSBtb2RlbC5tb2RlbCA/IHRoaXMuZ2V0RGlzcGxheU5hbWVzKG1vZGVsLm1vZGVsKVswXSA6ICcnO1xuICAgICAgaWYgKHRoaXMuc2VhcmNoVGV4dCkge1xuICAgICAgICB0aGlzLm9wdGlvblNlbGVjdGlvblNlcnZpY2UuY3VycmVudElucHV0ID0gdGhpcy5zZWFyY2hUZXh0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29udHJvbFZhbHVlKCkge1xuICAgIGlmICh0aGlzLm9uQ2hhbmdlQ2FsbGJhY2spIHtcbiAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh0aGlzLm9wdGlvblNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uTW9kZWwubW9kZWwpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGlzcGxheU5hbWVzKG1vZGVsOiBUIHwgVFtdKSB7XG4gICAgaWYgKHRoaXMuZGlzcGxheUZpZWxkKSB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkobW9kZWwpKSB7XG4gICAgICAgIG1vZGVsID0gW21vZGVsXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtb2RlbC5tYXAoaXRlbSA9PiAoaXRlbSA/IChpdGVtIGFzIGFueSlbdGhpcy5kaXNwbGF5RmllbGRdIDogbnVsbCkpO1xuICAgIH1cbiAgICByZXR1cm4gW3RoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25Nb2RlbC5tb2RlbF07XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyNCBCcm9hZGNvbS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAgfiBUaGUgdGVybSBcIkJyb2FkY29tXCIgcmVmZXJzIHRvIEJyb2FkY29tIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuXG4gIH4gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAgfiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4tLT5cblxuPCEtLSBUaGUgKGNsaWNrKSBoYW5kbGVyIGlzIG5lZWRlZCB0byBhdXRvLWZvY3VzIG9uIGlucHV0IGZpZWxkIHdoaWNoIGNhbiBub3QgY3VycmVudGx5IG9jY3VweSB0aGUgd2hvbGVcbiAgICAgd2lkdGggb2YgdGhlIGNvbXBvbmVudCwgYWZ0ZXIgYmVpbmcgd3JhcHBlZCB0byBhIG5ldyBsaW5lIC0tPlxuPGRpdlxuICBjbGFzcz1cImNsci1jb21ib2JveC13cmFwcGVyXCJcbiAgY2xyUG9wb3ZlckFuY2hvclxuICAoY2xpY2spPVwiZm9jdXNJbnB1dCgpXCJcbiAgW2NsYXNzLm11bHRpXT1cIm11bHRpU2VsZWN0XCJcbiAgW2NsYXNzLmludmFsaWRdPVwiaW52YWxpZFwiXG4gIFtjbGFzcy5kaXNhYmxlZF09XCJjb250cm9sPy5kaXNhYmxlZD8gdHJ1ZTogbnVsbFwiXG4+XG4gIDxzcGFuXG4gICAgKm5nSWY9XCJtdWx0aVNlbGVjdCAmJiBvcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLm1vZGVsXCJcbiAgICByb2xlPVwiZ3JpZFwiXG4gICAgY2xyUm92aW5nVGFiaW5kZXhcbiAgICBbY2xyUm92aW5nVGFiaW5kZXhEaXNhYmxlZF09XCJjb250cm9sPy5kaXNhYmxlZFwiXG4gICAgY2xyRGlyZWN0aW9uPVwiYm90aFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRTZWxlY3Rpb25BcmlhTGFiZWwoKVwiXG4gICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJjb250cm9sPy5kaXNhYmxlZD8gdHJ1ZTogbnVsbFwiXG4gID5cbiAgICA8c3BhbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBtdWx0aVNlbGVjdE1vZGVsOyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJsYWJlbCBsYWJlbC1jb21ib2JveC1waWxsXCIgcm9sZT1cInJvd1wiPlxuICAgICAgPHNwYW4gcm9sZT1cImdyaWRjZWxsXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY2xyLWNvbWJvYm94LXBpbGwtY29udGVudFwiIGNscktleUZvY3VzSXRlbT5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdJZj1cIm9wdGlvblNlbGVjdGVkXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm9wdGlvblNlbGVjdGVkLnRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0OiBvcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLm1vZGVsW2ldfVwiXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiByb2xlPVwiZ3JpZGNlbGxcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNscktleUZvY3VzSXRlbVxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiY2xyLWNvbWJvYm94LXJlbW92ZS1idG5cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJjb250cm9sPy5kaXNhYmxlZD8gdHJ1ZTogbnVsbFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb21tb25TdHJpbmdzLmtleXMuY29tYm9ib3hEZWxldGUgKyAnICcgKyBvcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLnRvU3RyaW5nKGRpc3BsYXlGaWVsZCwgaSlcIlxuICAgICAgICAgIChjbGljayk9XCJ1bnNlbGVjdChpdGVtKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8Y2RzLWljb24gc2hhcGU9XCJ3aW5kb3ctY2xvc2VcIiBzaXplPVwiMTJcIj48L2Nkcy1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L3NwYW4+XG4gIDwvc3Bhbj5cblxuICA8c3BhbiBjbGFzcz1cImNsci1jb21ib2JveC1pbnB1dC13cmFwcGVyXCI+XG4gICAgPGlucHV0XG4gICAgICAjdGV4dGJveElucHV0XG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICByb2xlPVwiY29tYm9ib3hcIlxuICAgICAgW2lkXT1cImlucHV0SWQoKVwiXG4gICAgICBjbGFzcz1cImNsci1pbnB1dCBjbHItY29tYm9ib3gtaW5wdXRcIlxuICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCJcbiAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIlxuICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJvcGVuU3RhdGVcIlxuICAgICAgW2F0dHIuYXJpYS1vd25zXT1cImFyaWFPd25zXCJcbiAgICAgIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCJcbiAgICAgIGFyaWEtYXV0b2NvbXBsZXRlPVwibGlzdFwiXG4gICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImNvbnRyb2w/LmludmFsaWQ/IHRydWU6IG51bGxcIlxuICAgICAgW2Rpc2FibGVkXT1cImNvbnRyb2w/LmRpc2FibGVkPyB0cnVlOiBudWxsXCJcbiAgICAgIFthdHRyLmFyaWEtYWN0aXZlZGVzY2VuZGFudF09XCJnZXRBY3RpdmVEZXNjZW5kYW50KClcIlxuICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgIC8+XG4gIDwvc3Bhbj5cblxuICA8IS0tIE5vIGNsaWNrIGhhbmRsZXIsIGFzIGl0IHVzZXMgdGhlIGhhbmRsZXIgb24gdGhlIC5jbHItY29tYm9ib3gtd3JhcHBlciAtLT5cbiAgPGJ1dHRvblxuICAgIGNsclBvcG92ZXJPcGVuQ2xvc2VCdXR0b25cbiAgICAjdHJpZ2dlclxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGNsYXNzPVwiY2xyLWNvbWJvYm94LXRyaWdnZXJcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuICAgIFtkaXNhYmxlZF09XCJjb250cm9sPy5kaXNhYmxlZCB8fCBudWxsXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbW1vblN0cmluZ3Mua2V5cy5jb21ib2JveE9wZW5cIlxuICA+XG4gICAgPGNkcy1pY29uIHNoYXBlPVwiYW5nbGVcIiBkaXJlY3Rpb249XCJkb3duXCI+PC9jZHMtaWNvbj5cbiAgPC9idXR0b24+XG5cbiAgPGRpdiBjbGFzcz1cImNsci1mb2N1cy1pbmRpY2F0b3JcIiBbY2xhc3MuY2xyLWZvY3VzXT1cImZvY3VzZWRcIj48L2Rpdj5cbjwvZGl2PlxuXG48IS0tIEJvdGggY2xvc2UgaGFuZGxlcnMgYXJlIGhhbmRsZWQgbWFudWFsbHkgZHVlIHRvIGlzc3VlcyBpbiBFZGdlIGJyb3dzZXIuXG4gICAgIEFkZGl0aW9uYWxseSAnb3V0c2lkZUNsaWNrVG9DbG9zZScgaGFzIGNvbXBsZXggaGFuZGxpbmcgdGhhdCdzIG5lY2Vzc2FyeVxuICAgICB0byBiZSBtYW51YWwgZHVlIHRvIHRoZSBjb21wb25lbnQgYXJjaGl0ZWN0dXJlIC0tPlxuPGRpdiByb2xlPVwiZGlhbG9nXCIgKmNsclBvcG92ZXJDb250ZW50PVwib3BlblN0YXRlIGF0IHNtYXJ0UG9zaXRpb247IG91dHNpZGVDbGlja1RvQ2xvc2U6IGZhbHNlOyBzY3JvbGxUb0Nsb3NlOiBmYWxzZVwiPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==
363
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9mb3Jtcy9jb21ib2JveC9jb21ib2JveC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2Zvcm1zL2NvbWJvYm94L2NvbWJvYm94Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBR0wsU0FBUyxFQUNULFlBQVksRUFFWixZQUFZLEVBQ1osWUFBWSxFQUNaLE1BQU0sRUFFTixLQUFLLEVBQ0wsUUFBUSxFQUNSLE1BQU0sRUFDTixXQUFXLEVBRVgsSUFBSSxFQUNKLFNBQVMsR0FFVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNsRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDeEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUU5RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUdyRixPQUFPLEVBQUUsYUFBYSxFQUF5QixNQUFNLHFEQUFxRCxDQUFDO0FBQzNHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FB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QWM7c0JBQTlDLFlBQVk7dUJBQUMsaUJBQWlCO2dCQWVHLE9BQU87c0JBQXhDLFlBQVk7dUJBQUMsVUFBVTtnQkFrQ3BCLFdBQVc7c0JBRGQsS0FBSzt1QkFBQyxVQUFVO2dCQTZGakIsT0FBTztzQkFETixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyNCBCcm9hZGNvbS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFRoZSB0ZXJtIFwiQnJvYWRjb21cIiByZWZlcnMgdG8gQnJvYWRjb20gSW5jLiBhbmQvb3IgaXRzIHN1YnNpZGlhcmllcy5cbiAqIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4gKi9cblxuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFBMQVRGT1JNX0lELFxuICBSZW5kZXJlcjIsXG4gIFNlbGYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBJRl9BQ1RJVkVfSURfUFJPVklERVIgfSBmcm9tICcuLi8uLi91dGlscy9jb25kaXRpb25hbC9pZi1hY3RpdmUuc2VydmljZSc7XG5pbXBvcnQgeyBLZXlzIH0gZnJvbSAnLi4vLi4vdXRpbHMvZW51bXMva2V5cy5lbnVtJztcbmltcG9ydCB7IEZPQ1VTX1NFUlZJQ0VfUFJPVklERVIgfSBmcm9tICcuLi8uLi91dGlscy9mb2N1cy9mb2N1cy5zZXJ2aWNlJztcbmltcG9ydCB7IENsckNvbW1vblN0cmluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvaTE4bi9jb21tb24tc3RyaW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7IENsckxvYWRpbmdTdGF0ZSB9IGZyb20gJy4uLy4uL3V0aWxzL2xvYWRpbmcvbG9hZGluZyc7XG5pbXBvcnQgeyBMb2FkaW5nTGlzdGVuZXIgfSBmcm9tICcuLi8uLi91dGlscy9sb2FkaW5nL2xvYWRpbmctbGlzdGVuZXInO1xuaW1wb3J0IHsgQ2xyQWxpZ25tZW50IH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9lbnVtcy9hbGlnbm1lbnQuZW51bSc7XG5pbXBvcnQgeyBDbHJBeGlzIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9lbnVtcy9heGlzLmVudW0nO1xuaW1wb3J0IHsgQ2xyU2lkZSB9IGZyb20gJy4uLy4uL3V0aWxzL3BvcG92ZXIvZW51bXMvc2lkZS5lbnVtJztcbmltcG9ydCB7IENsclBvcG92ZXJQb3NpdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxzL3BvcG92ZXIvaW50ZXJmYWNlcy9wb3BvdmVyLXBvc2l0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDbHJQb3BvdmVySG9zdERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3V0aWxzL3BvcG92ZXIvcG9wb3Zlci1ob3N0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDbHJQb3BvdmVyUG9zaXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9wcm92aWRlcnMvcG9wb3Zlci1wb3NpdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENsclBvcG92ZXJUb2dnbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9wcm92aWRlcnMvcG9wb3Zlci10b2dnbGUuc2VydmljZSc7XG5pbXBvcnQgeyBDT05UUk9MX1NUQVRFLCBJZkNvbnRyb2xTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vaWYtY29udHJvbC1zdGF0ZS9pZi1jb250cm9sLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgV3JhcHBlZEZvcm1Db250cm9sIH0gZnJvbSAnLi4vY29tbW9uL3dyYXBwZWQtY29udHJvbCc7XG5pbXBvcnQgeyBDbHJDb21ib2JveENvbnRhaW5lciB9IGZyb20gJy4vY29tYm9ib3gtY29udGFpbmVyJztcbmltcG9ydCB7IENvbWJvYm94TW9kZWwgfSBmcm9tICcuL21vZGVsL2NvbWJvYm94Lm1vZGVsJztcbmltcG9ydCB7IE11bHRpU2VsZWN0Q29tYm9ib3hNb2RlbCB9IGZyb20gJy4vbW9kZWwvbXVsdGktc2VsZWN0LWNvbWJvYm94Lm1vZGVsJztcbmltcG9ydCB7IFNpbmdsZVNlbGVjdENvbWJvYm94TW9kZWwgfSBmcm9tICcuL21vZGVsL3NpbmdsZS1zZWxlY3QtY29tYm9ib3gubW9kZWwnO1xuaW1wb3J0IHsgQ2xyT3B0aW9uU2VsZWN0ZWQgfSBmcm9tICcuL29wdGlvbi1zZWxlY3RlZC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQ2xyT3B0aW9ucyB9IGZyb20gJy4vb3B0aW9ucyc7XG5pbXBvcnQgeyBDb21ib2JveENvbnRhaW5lclNlcnZpY2UgfSBmcm9tICcuL3Byb3ZpZGVycy9jb21ib2JveC1jb250YWluZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDT01CT0JPWF9GT0NVU19IQU5ETEVSX1BST1ZJREVSLCBDb21ib2JveEZvY3VzSGFuZGxlciB9IGZyb20gJy4vcHJvdmlkZXJzL2NvbWJvYm94LWZvY3VzLWhhbmRsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBPcHRpb25TZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9wcm92aWRlcnMvb3B0aW9uLXNlbGVjdGlvbi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2xyLWNvbWJvYm94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbWJvYm94Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICBPcHRpb25TZWxlY3Rpb25TZXJ2aWNlLFxuICAgIHsgcHJvdmlkZTogTG9hZGluZ0xpc3RlbmVyLCB1c2VFeGlzdGluZzogQ2xyQ29tYm9ib3ggfSxcbiAgICBJRl9BQ1RJVkVfSURfUFJPVklERVIsXG4gICAgRk9DVVNfU0VSVklDRV9QUk9WSURFUixcbiAgICBDT01CT0JPWF9GT0NVU19IQU5ETEVSX1BST1ZJREVSLFxuICBdLFxuICBob3N0RGlyZWN0aXZlczogW0NsclBvcG92ZXJIb3N0RGlyZWN0aXZlXSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MuYXJpYS1yZXF1aXJlZF0nOiAndHJ1ZScsXG4gICAgJ1tjbGFzcy5jbHItY29tYm9ib3hdJzogJ3RydWUnLFxuICAgICdbY2xhc3MuY2xyLWNvbWJvYm94LWRpc2FibGVkXSc6ICdjb250cm9sPy5kaXNhYmxlZCcsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIENsckNvbWJvYm94PFQ+XG4gIGV4dGVuZHMgV3JhcHBlZEZvcm1Db250cm9sPENsckNvbWJvYm94Q29udGFpbmVyPlxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBMb2FkaW5nTGlzdGVuZXIsIEFmdGVyQ29udGVudEluaXRcbntcbiAgQElucHV0KCdwbGFjZWhvbGRlcicpIHBsYWNlaG9sZGVyID0gJyc7XG5cbiAgQE91dHB1dCgnY2xySW5wdXRDaGFuZ2UnKSBjbHJJbnB1dENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPihmYWxzZSk7XG4gIEBPdXRwdXQoJ2Nsck9wZW5DaGFuZ2UnKSBjbHJPcGVuQ2hhbmdlID0gdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW5DaGFuZ2U7XG5cbiAgLyoqXG4gICAqIFRoaXMgb3V0cHV0IHNob3VsZCBiZSB1c2VkIHRvIHNldCB1cCBhIGxpdmUgcmVnaW9uIHVzaW5nIGFyaWEtbGl2ZSBhbmQgcG9wdWxhdGUgaXQgd2l0aCB1cGRhdGVzIHRoYXQgcmVmbGVjdCBlYWNoIGNvbWJvYm94IGNoYW5nZS5cbiAgICovXG4gIEBPdXRwdXQoJ2NsclNlbGVjdGlvbkNoYW5nZScpIGNsclNlbGVjdGlvbkNoYW5nZSA9IHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25DaGFuZ2VkO1xuXG4gIEBWaWV3Q2hpbGQoJ3RleHRib3hJbnB1dCcpIHRleHRib3g6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3RyaWdnZXInKSB0cmlnZ2VyOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgQENvbnRlbnRDaGlsZChDbHJPcHRpb25TZWxlY3RlZCkgb3B0aW9uU2VsZWN0ZWQ6IENsck9wdGlvblNlbGVjdGVkPFQ+O1xuXG4gIGludmFsaWQgPSBmYWxzZTtcbiAgZm9jdXNlZCA9IGZhbHNlO1xuICBmb2N1c2VkUGlsbDogYW55O1xuXG4gIHNtYXJ0UG9zaXRpb246IENsclBvcG92ZXJQb3NpdGlvbiA9IHtcbiAgICBheGlzOiBDbHJBeGlzLlZFUlRJQ0FMLFxuICAgIHNpZGU6IENsclNpZGUuQUZURVIsXG4gICAgYW5jaG9yOiBDbHJBbGlnbm1lbnQuU1RBUlQsXG4gICAgY29udGVudDogQ2xyQWxpZ25tZW50LlNUQVJULFxuICB9O1xuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBpbmRleCA9IDE7XG5cbiAgQENvbnRlbnRDaGlsZChDbHJPcHRpb25zKSBwcml2YXRlIG9wdGlvbnM6IENsck9wdGlvbnM8VD47XG5cbiAgcHJpdmF0ZSBfc2VhcmNoVGV4dCA9ICcnO1xuICBwcml2YXRlIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiBhbnk7XG4gIHByaXZhdGUgb25DaGFuZ2VDYWxsYmFjazogKG1vZGVsOiBUIHwgVFtdKSA9PiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgdmNyOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBAU2VsZigpXG4gICAgQE9wdGlvbmFsKClcbiAgICBwdWJsaWMgY29udHJvbDogTmdDb250cm9sLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBlbDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHVibGljIG9wdGlvblNlbGVjdGlvblNlcnZpY2U6IE9wdGlvblNlbGVjdGlvblNlcnZpY2U8VD4sXG4gICAgcHVibGljIGNvbW1vblN0cmluZ3M6IENsckNvbW1vblN0cmluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9nZ2xlU2VydmljZTogQ2xyUG9wb3ZlclRvZ2dsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwb3NpdGlvblNlcnZpY2U6IENsclBvcG92ZXJQb3NpdGlvblNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250cm9sU3RhdGVTZXJ2aWNlOiBJZkNvbnRyb2xTdGF0ZVNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250YWluZXJTZXJ2aWNlOiBDb21ib2JveENvbnRhaW5lclNlcnZpY2UsXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnksXG4gICAgcHJpdmF0ZSBmb2N1c0hhbmRsZXI6IENvbWJvYm94Rm9jdXNIYW5kbGVyPFQ+LFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICBzdXBlcih2Y3IsIENsckNvbWJvYm94Q29udGFpbmVyLCBpbmplY3RvciwgY29udHJvbCwgcmVuZGVyZXIsIGVsKTtcbiAgICBpZiAoY29udHJvbCkge1xuICAgICAgY29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG4gICAgLy8gZGVmYXVsdCB0byBTaW5nbGVTZWxlY3RDb21ib2JveE1vZGVsLCBpbiBjYXNlIHRoZSBvcHRpb25hbCBpbnB1dCBbQ2xyTXVsdGldIGlzbid0IHVzZWRcbiAgICBvcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsID0gbmV3IFNpbmdsZVNlbGVjdENvbWJvYm94TW9kZWw8VD4oKTtcbiAgICB0aGlzLnVwZGF0ZUNvbnRyb2xWYWx1ZSgpO1xuICB9XG5cbiAgQElucHV0KCdjbHJNdWx0aScpXG4gIGdldCBtdWx0aVNlbGVjdCgpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLm11bHRpc2VsZWN0YWJsZTtcbiAgfVxuICBzZXQgbXVsdGlTZWxlY3QodmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25Nb2RlbCA9IG5ldyBNdWx0aVNlbGVjdENvbWJvYm94TW9kZWw8VD4oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaW4gdGhlb3J5LCBzZXR0aW5nIHRoaXMgYWdhaW4gc2hvdWxkIG5vdCBjYXVzZSBlcnJvcnMgZXZlbiB0aG91Z2ggd2UgYWxyZWFkeSBzZXQgaXQgaW4gY29uc3RydWN0b3IsXG4gICAgICAvLyBzaW5jZSB0aGUgaW5pdGlhbCBjYWxsIHRvIHdyaXRlVmFsdWUgKGNhdXNlZCBieSBbbmdNb2RlbF0gaW5wdXQpIHNob3VsZCBoYXBwZW4gYWZ0ZXIgdGhpc1xuICAgICAgdGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsID0gbmV3IFNpbmdsZVNlbGVjdENvbWJvYm94TW9kZWw8VD4oKTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVDb250cm9sVmFsdWUoKTtcbiAgfVxuXG4gIC8vIE92ZXJyaWRlIHRoZSBpZCBvZiBXcmFwcGVkRm9ybUNvbnRyb2wsIGFzIHdlIHdhbnQgdG8gbW92ZSBpdCB0byB0aGUgZW1iZWRkZWQgaW5wdXQuXG4gIC8vIE90aGVyd2lzZSB0aGUgbGFiZWwvY29tcG9uZW50IGNvbm5lY3Rpb24gZG9lcyBub3Qgd29yayBhbmQgc2NyZWVuIHJlYWRlcnMgZG8gbm90IHJlYWQgdGhlIGxhYmVsLlxuICBvdmVycmlkZSBnZXQgaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbElkU2VydmljZS5pZCArICctY29tYm9ib3gnO1xuICB9XG4gIG92ZXJyaWRlIHNldCBpZChpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIuaWQgPSBpZDtcbiAgfVxuXG4gIGdldCBzZWFyY2hUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaFRleHQ7XG4gIH1cbiAgc2V0IHNlYXJjaFRleHQodGV4dDogc3RyaW5nKSB7XG4gICAgLy8gaWYgaW5wdXQgdGV4dCBoYXMgY2hhbmdlZCBzaW5jZSBsYXN0IHRpbWUsIGZpcmUgYSBjaGFuZ2UgZXZlbnQgc28gYXBwbGljYXRpb24gY2FuIHJlYWN0IHRvIGl0XG4gICAgaWYgKHRleHQgIT09IHRoaXMuX3NlYXJjaFRleHQpIHtcbiAgICAgIGlmICh0aGlzLnRvZ2dsZVNlcnZpY2Uub3Blbikge1xuICAgICAgICB0aGlzLm9wdGlvblNlbGVjdGlvblNlcnZpY2Uuc2hvd0FsbE9wdGlvbnMgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3NlYXJjaFRleHQgPSB0ZXh0O1xuICAgICAgdGhpcy5jbHJJbnB1dENoYW5nZS5lbWl0KHRoaXMuc2VhcmNoVGV4dCk7XG4gICAgfVxuICAgIC8vIFdlIG5lZWQgdG8gdHJpZ2dlciB0aGlzIGV2ZW4gaWYgdW5jaGFuZ2VkLCBzbyB0aGUgb3B0aW9uLWl0ZW1zIGRpcmVjdGl2ZSB3aWxsIHVwZGF0ZSBpdHMgbGlzdFxuICAgIC8vIGJhc2VkIG9uIHRoZSBcInNob3dBbGxPcHRpb25zXCIgdmFyaWFibGUgd2hpY2ggbWF5IGhhdmUgY2hhbmdlZCBpbiB0aGUgb3BlbkNoYW5nZSBzdWJzY3JpcHRpb24gYmVsb3cuXG4gICAgLy8gVGhlIG9wdGlvbi1pdGVtcyBkaXJlY3RpdmUgZG9lcyBub3QgbGlzdGVuIHRvIG9wZW5DaGFuZ2UsIGJ1dCBpdCBsaXN0ZW5zIHRvIGN1cnJlbnRJbnB1dCBjaGFuZ2VzLlxuICAgIHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5jdXJyZW50SW5wdXQgPSB0aGlzLnNlYXJjaFRleHQ7XG4gIH1cblxuICBnZXQgb3BlblN0YXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbjtcbiAgfVxuXG4gIGdldCBtdWx0aVNlbGVjdE1vZGVsKCk6IFRbXSB7XG4gICAgaWYgKCF0aGlzLm11bHRpU2VsZWN0KSB7XG4gICAgICB0aHJvdyBFcnJvcignbXVsdGlTZWxlY3RNb2RlbCBpcyBub3QgYXZhaWxhYmxlIGluIHNpbmdsZSBzZWxlY3Rpb24gY29udGV4dCcpO1xuICAgIH1cbiAgICByZXR1cm4gKHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25Nb2RlbCBhcyBNdWx0aVNlbGVjdENvbWJvYm94TW9kZWw8VD4pLm1vZGVsO1xuICB9XG5cbiAgZ2V0IGFyaWFDb250cm9scygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnM/Lm9wdGlvbnNJZDtcbiAgfVxuXG4gIGdldCBhcmlhT3ducygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnM/Lm9wdGlvbnNJZDtcbiAgfVxuXG4gIGdldCBhcmlhRGVzY3JpYmVkQnlTZWxlY3Rpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ3NlbGVjdGlvbi0nICsgdGhpcy5pZDtcbiAgfVxuXG4gIGdldCBkaXNwbGF5RmllbGQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLmRpc3BsYXlGaWVsZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGRpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2w/LmRpc2FibGVkO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZVN1YnNjcmlwdGlvbnMoKTtcblxuICAgIC8vIEluaXRpYWxpemUgd2l0aCBwcmVzZWxlY3RlZCB2YWx1ZVxuICAgIGlmICghdGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLmlzRW1wdHkoKSkge1xuICAgICAgdGhpcy51cGRhdGVJbnB1dFZhbHVlKHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25Nb2RlbCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuZm9jdXNIYW5kbGVyLmNvbXBvbmVudENkUmVmID0gdGhpcy5jZHI7XG4gICAgdGhpcy5mb2N1c0hhbmRsZXIudGV4dElucHV0ID0gdGhpcy50ZXh0Ym94Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgdGhpcy5mb2N1c0hhbmRsZXIudHJpZ2dlciA9IHRoaXMudHJpZ2dlci5uYXRpdmVFbGVtZW50O1xuICAgIC8vIFRoZSB0ZXh0IGlucHV0IGlzIHRoZSBhY3R1YWwgZWxlbWVudCB3ZSBhcmUgd3JhcHBpbmdcbiAgICAvLyBUaGlzIGFzc2lnbm1lbnQgaXMgbmVlZGVkIGJ5IHRoZSB3cmFwcGVyLCBzbyBpdCBjYW4gc2V0XG4gICAgLy8gdGhlIGFyaWEgcHJvcGVydGllcyBvbiB0aGUgaW5wdXQgZWxlbWVudCwgbm90IG9uIHRoZSBjb21wb25lbnQuXG4gICAgdGhpcy5lbCA9IHRoaXMudGV4dGJveDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICBvbktleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgLy8gaWYgQkFDS1NQQUNFIGluIG11bHRpc2VsZWN0IG1vZGUsIGRlbGV0ZSB0aGUgbGFzdCBwaWxsIGlmIHRleHQgaXMgZW1wdHlcbiAgICBpZiAoZXZlbnQua2V5ID09PSBLZXlzLkJhY2tzcGFjZSAmJiB0aGlzLm11bHRpU2VsZWN0ICYmIHRoaXMuX3NlYXJjaFRleHQubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCBtdWx0aU1vZGVsOiBUW10gPSB0aGlzLm9wdGlvblNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uTW9kZWwubW9kZWwgYXMgVFtdO1xuICAgICAgaWYgKG11bHRpTW9kZWwgJiYgbXVsdGlNb2RlbC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IGxhc3RJdGVtOiBUID0gbXVsdGlNb2RlbFttdWx0aU1vZGVsLmxlbmd0aCAtIDFdO1xuICAgICAgICB0aGlzLmNvbnRyb2w/LmNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLm9wdGlvblNlbGVjdGlvblNlcnZpY2UudW5zZWxlY3QobGFzdEl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlucHV0SWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sSWRTZXJ2aWNlLmlkO1xuICB9XG5cbiAgbG9hZGluZ1N0YXRlQ2hhbmdlKHN0YXRlOiBDbHJMb2FkaW5nU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLm9wdGlvblNlbGVjdGlvblNlcnZpY2UubG9hZGluZyA9IHN0YXRlID09PSBDbHJMb2FkaW5nU3RhdGUuTE9BRElORztcbiAgICB0aGlzLnBvc2l0aW9uU2VydmljZS5yZWFsaWduKCk7XG4gICAgaWYgKHN0YXRlICE9PSBDbHJMb2FkaW5nU3RhdGUuTE9BRElORyAmJiBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICB0aGlzLmZvY3VzRmlyc3RBY3RpdmUoKTtcbiAgICB9XG4gIH1cblxuICB1bnNlbGVjdChpdGVtOiBUKSB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLm9wdGlvblNlbGVjdGlvblNlcnZpY2UudW5zZWxlY3QoaXRlbSk7XG4gICAgfVxuICB9XG5cbiAgb25CbHVyKCkge1xuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2s/LigpO1xuICAgIGlmICh0aGlzLmNvbnRyb2w/LmNvbnRyb2wudXBkYXRlT24gPT09ICdjaGFuZ2UnICYmIHRoaXMuY29udHJvbC5jb250cm9sLmVycm9ycz8ucmVxdWlyZWQpIHtcbiAgICAgIHRoaXMudXBkYXRlQ29udHJvbFZhbHVlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbnRyb2w/LmNvbnRyb2wudXBkYXRlT24gPT09ICdibHVyJykge1xuICAgICAgdGhpcy5jb250cm9sLmNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH1cbiAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcbiAgfVxuXG4gIG9uRm9jdXMoKSB7XG4gICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcblxuICAgIC8vIGZpeCBmb3IgXCJleHByZXNzaW9uIGNoYW5nZWRcIiBlcnJvciB3aGVuIGZvY3VzIGlzIHJldHVybmVkIHRvIGEgY29tYm9ib3ggYWZ0ZXIgYSBtb2RhbCBpcyBjbG9zZWRcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdm13YXJlLWNsYXJpdHkvbmctY2xhcml0eS9pc3N1ZXMvNjYzXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZ2V0U2VsZWN0aW9uQXJpYUxhYmVsKCkge1xuICAgIGlmICh0aGlzLmNvbnRhaW5lclNlcnZpY2UgJiYgdGhpcy5jb250YWluZXJTZXJ2aWNlLmxhYmVsVGV4dCkge1xuICAgICAgcmV0dXJuIGAke3RoaXMuY29udGFpbmVyU2VydmljZS5sYWJlbFRleHR9ICR7dGhpcy5jb21tb25TdHJpbmdzLmtleXMuY29tYm9ib3hTZWxlY3Rpb259YDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLmNvbWJvYm94U2VsZWN0aW9uO1xuICB9XG5cbiAgZm9jdXNGaXJzdEFjdGl2ZSgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZm9jdXNIYW5kbGVyLmZvY3VzRmlyc3RBY3RpdmUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IFQgfCBUW10pOiB2b2lkIHtcbiAgICB0aGlzLm9wdGlvblNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uTW9kZWwubW9kZWwgPSB2YWx1ZTtcbiAgICB0aGlzLnVwZGF0ZUlucHV0VmFsdWUodGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKG9uVG91Y2hlZDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjayA9IG9uVG91Y2hlZDtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayA9IG9uQ2hhbmdlO1xuICB9XG5cbiAgZ2V0QWN0aXZlRGVzY2VuZGFudCgpIHtcbiAgICBjb25zdCBtb2RlbCA9IHRoaXMuZm9jdXNIYW5kbGVyLnBzZXVkb0ZvY3VzLm1vZGVsO1xuICAgIHJldHVybiBtb2RlbCA/IG1vZGVsLmlkIDogdGhpcy5vcHRpb25zPy5ub1Jlc3VsdHNFbGVtZW50SWQ7XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKCk6IHZvaWQge1xuICAgIC8vIGRvIG5vdGhpbmdcbiAgfVxuXG4gIGZvY3VzSW5wdXQoKSB7XG4gICAgdGhpcy5mb2N1c0hhbmRsZXIuZm9jdXNJbnB1dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplU3Vic2NyaXB0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25DaGFuZ2VkLnN1YnNjcmliZSgobmV3U2VsZWN0aW9uOiBDb21ib2JveE1vZGVsPFQ+KSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlSW5wdXRWYWx1ZShuZXdTZWxlY3Rpb24pO1xuICAgICAgICBpZiAodGhpcy5tdWx0aVNlbGVjdCkge1xuICAgICAgICAgIHRoaXMucG9zaXRpb25TZXJ2aWNlLnJlYWxpZ24oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMubXVsdGlTZWxlY3QgJiYgbmV3U2VsZWN0aW9uICYmICFuZXdTZWxlY3Rpb24uaXNFbXB0eSgpKSB7XG4gICAgICAgICAgdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUNvbnRyb2xWYWx1ZSgpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnRvZ2dsZVNlcnZpY2Uub3BlbkNoYW5nZS5zdWJzY3JpYmUob3BlbiA9PiB7XG4gICAgICAgIGlmIChvcGVuKSB7XG4gICAgICAgICAgdGhpcy5mb2N1c0ZpcnN0QWN0aXZlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNob3dBbGxPcHRpb25zID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5tdWx0aVNlbGVjdCkge1xuICAgICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9ICcnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VhcmNoVGV4dCA9IHRoaXMuZ2V0RGlzcGxheU5hbWVzKHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25Nb2RlbC5tb2RlbClbMF0gfHwgJyc7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy50b2dnbGVTZXJ2aWNlLnBvcG92ZXJBbGlnbmVkLnN1YnNjcmliZShwb3BvdmVyTm9kZSA9PiB7XG4gICAgICAgIC8vIFdoZW4gdXNlZCBvdXRzaWRlIGEgY29tYm9ib3ggY29udGFpbmVyXG4gICAgICAgIGlmICghdGhpcy5jb250YWluZXJTZXJ2aWNlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBvcG92ZXI6IEhUTUxFbGVtZW50ID0gcG9wb3Zlck5vZGUgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIC8vIFVwZGF0ZSBwb3NpdGlvbiBpZiBwb3BvdmVyIGhpZGVzIHRoZSBsYWJlbFxuICAgICAgICBpZiAocG9wb3Zlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgPCB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wKSB7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShwb3BvdmVyTm9kZSwgJ3RvcCcsIGAke3BvcG92ZXIub2Zmc2V0VG9wICsgdGhpcy5jb250YWluZXJTZXJ2aWNlLmxhYmVsT2Zmc2V0fXB4YCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGlmICh0aGlzLmNvbnRyb2xTdGF0ZVNlcnZpY2UpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICB0aGlzLmNvbnRyb2xTdGF0ZVNlcnZpY2Uuc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoaW52YWxpZCA9PiB7XG4gICAgICAgICAgdGhpcy5pbnZhbGlkID0gdGhpcy5jb250cm9sPy5jb250cm9sLnRvdWNoZWQgJiYgaW52YWxpZCA9PT0gQ09OVFJPTF9TVEFURS5JTlZBTElEO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUlucHV0VmFsdWUobW9kZWw6IENvbWJvYm94TW9kZWw8VD4pIHtcbiAgICBpZiAoIXRoaXMubXVsdGlTZWxlY3QpIHtcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9IG1vZGVsLm1vZGVsID8gdGhpcy5nZXREaXNwbGF5TmFtZXMobW9kZWwubW9kZWwpWzBdIDogJyc7XG4gICAgICBpZiAodGhpcy5zZWFyY2hUZXh0KSB7XG4gICAgICAgIHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5jdXJyZW50SW5wdXQgPSB0aGlzLnNlYXJjaFRleHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDb250cm9sVmFsdWUoKSB7XG4gICAgaWYgKHRoaXMub25DaGFuZ2VDYWxsYmFjaykge1xuICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHRoaXMub3B0aW9uU2VsZWN0aW9uU2VydmljZS5zZWxlY3Rpb25Nb2RlbC5tb2RlbCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXREaXNwbGF5TmFtZXMobW9kZWw6IFQgfCBUW10pIHtcbiAgICBpZiAodGhpcy5kaXNwbGF5RmllbGQpIHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShtb2RlbCkpIHtcbiAgICAgICAgbW9kZWwgPSBbbW9kZWxdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1vZGVsLm1hcChpdGVtID0+IChpdGVtID8gKGl0ZW0gYXMgYW55KVt0aGlzLmRpc3BsYXlGaWVsZF0gOiBudWxsKSk7XG4gICAgfVxuICAgIHJldHVybiBbdGhpcy5vcHRpb25TZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdGlvbk1vZGVsLm1vZGVsXTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAoYykgMjAxNi0yMDI0IEJyb2FkY29tLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICB+IFRoZSB0ZXJtIFwiQnJvYWRjb21cIiByZWZlcnMgdG8gQnJvYWRjb20gSW5jLiBhbmQvb3IgaXRzIHN1YnNpZGlhcmllcy5cbiAgfiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICB+IFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbi0tPlxuXG48IS0tIFRoZSAoY2xpY2spIGhhbmRsZXIgaXMgbmVlZGVkIHRvIGF1dG8tZm9jdXMgb24gaW5wdXQgZmllbGQgd2hpY2ggY2FuIG5vdCBjdXJyZW50bHkgb2NjdXB5IHRoZSB3aG9sZVxuICAgICB3aWR0aCBvZiB0aGUgY29tcG9uZW50LCBhZnRlciBiZWluZyB3cmFwcGVkIHRvIGEgbmV3IGxpbmUgLS0+XG48ZGl2XG4gIGNsYXNzPVwiY2xyLWNvbWJvYm94LXdyYXBwZXJcIlxuICBjbHJQb3BvdmVyQW5jaG9yXG4gIChjbGljayk9XCJmb2N1c0lucHV0KClcIlxuICBbY2xhc3MubXVsdGldPVwibXVsdGlTZWxlY3RcIlxuICBbY2xhc3MuaW52YWxpZF09XCJpbnZhbGlkXCJcbiAgW2NsYXNzLmRpc2FibGVkXT1cImNvbnRyb2w/LmRpc2FibGVkPyB0cnVlOiBudWxsXCJcbj5cbiAgPHNwYW5cbiAgICAqbmdJZj1cIm11bHRpU2VsZWN0ICYmIG9wdGlvblNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uTW9kZWwubW9kZWxcIlxuICAgIHJvbGU9XCJncmlkXCJcbiAgICBjbHJSb3ZpbmdUYWJpbmRleFxuICAgIFtjbHJSb3ZpbmdUYWJpbmRleERpc2FibGVkXT1cImNvbnRyb2w/LmRpc2FibGVkXCJcbiAgICBjbHJEaXJlY3Rpb249XCJib3RoXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImdldFNlbGVjdGlvbkFyaWFMYWJlbCgpXCJcbiAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImNvbnRyb2w/LmRpc2FibGVkPyB0cnVlOiBudWxsXCJcbiAgPlxuICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIG11bHRpU2VsZWN0TW9kZWw7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cImxhYmVsIGxhYmVsLWNvbWJvYm94LXBpbGxcIiByb2xlPVwicm93XCI+XG4gICAgICA8c3BhbiByb2xlPVwiZ3JpZGNlbGxcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjbHItY29tYm9ib3gtcGlsbC1jb250ZW50XCIgY2xyS2V5Rm9jdXNJdGVtPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwib3B0aW9uU2VsZWN0ZWRcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwib3B0aW9uU2VsZWN0ZWQudGVtcGxhdGVcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInskaW1wbGljaXQ6IG9wdGlvblNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uTW9kZWwubW9kZWxbaV19XCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIHJvbGU9XCJncmlkY2VsbFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xyS2V5Rm9jdXNJdGVtXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3M9XCJjbHItY29tYm9ib3gtcmVtb3ZlLWJ0blwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImNvbnRyb2w/LmRpc2FibGVkPyB0cnVlOiBudWxsXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbW1vblN0cmluZ3Mua2V5cy5jb21ib2JveERlbGV0ZSArICcgJyArIG9wdGlvblNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0aW9uTW9kZWwudG9TdHJpbmcoZGlzcGxheUZpZWxkLCBpKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInVuc2VsZWN0KGl0ZW0pXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjZHMtaWNvbiBzaGFwZT1cIndpbmRvdy1jbG9zZVwiIHNpemU9XCIxMlwiPjwvY2RzLWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgPC9zcGFuPlxuXG4gIDxzcGFuIGNsYXNzPVwiY2xyLWNvbWJvYm94LWlucHV0LXdyYXBwZXJcIj5cbiAgICA8aW5wdXRcbiAgICAgICN0ZXh0Ym94SW5wdXRcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIHJvbGU9XCJjb21ib2JveFwiXG4gICAgICBbaWRdPVwiaW5wdXRJZCgpXCJcbiAgICAgIGNsYXNzPVwiY2xyLWlucHV0IGNsci1jb21ib2JveC1pbnB1dFwiXG4gICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRcIlxuICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxuICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoKVwiXG4gICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIm9wZW5TdGF0ZVwiXG4gICAgICBbYXR0ci5hcmlhLW93bnNdPVwiYXJpYU93bnNcIlxuICAgICAgYXJpYS1oYXNwb3B1cD1cImxpc3Rib3hcIlxuICAgICAgYXJpYS1hdXRvY29tcGxldGU9XCJsaXN0XCJcbiAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwiY29udHJvbD8uaW52YWxpZD8gdHJ1ZTogbnVsbFwiXG4gICAgICBbZGlzYWJsZWRdPVwiY29udHJvbD8uZGlzYWJsZWQ/IHRydWU6IG51bGxcIlxuICAgICAgW2F0dHIuYXJpYS1hY3RpdmVkZXNjZW5kYW50XT1cImdldEFjdGl2ZURlc2NlbmRhbnQoKVwiXG4gICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgLz5cbiAgPC9zcGFuPlxuXG4gIDwhLS0gTm8gY2xpY2sgaGFuZGxlciwgYXMgaXQgdXNlcyB0aGUgaGFuZGxlciBvbiB0aGUgLmNsci1jb21ib2JveC13cmFwcGVyIC0tPlxuICA8YnV0dG9uXG4gICAgY2xyUG9wb3Zlck9wZW5DbG9zZUJ1dHRvblxuICAgICN0cmlnZ2VyXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJjbHItY29tYm9ib3gtdHJpZ2dlclwiXG4gICAgdGFiaW5kZXg9XCItMVwiXG4gICAgW2Rpc2FibGVkXT1cImNvbnRyb2w/LmRpc2FibGVkIHx8IG51bGxcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29tbW9uU3RyaW5ncy5rZXlzLmNvbWJvYm94T3BlblwiXG4gID5cbiAgICA8Y2RzLWljb24gc2hhcGU9XCJhbmdsZVwiIGRpcmVjdGlvbj1cImRvd25cIj48L2Nkcy1pY29uPlxuICA8L2J1dHRvbj5cblxuICA8ZGl2IGNsYXNzPVwiY2xyLWZvY3VzLWluZGljYXRvclwiIFtjbGFzcy5jbHItZm9jdXNdPVwiZm9jdXNlZFwiPjwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gQm90aCBjbG9zZSBoYW5kbGVycyBhcmUgaGFuZGxlZCBtYW51YWxseSBkdWUgdG8gaXNzdWVzIGluIEVkZ2UgYnJvd3Nlci5cbiAgICAgQWRkaXRpb25hbGx5ICdvdXRzaWRlQ2xpY2tUb0Nsb3NlJyBoYXMgY29tcGxleCBoYW5kbGluZyB0aGF0J3MgbmVjZXNzYXJ5XG4gICAgIHRvIGJlIG1hbnVhbCBkdWUgdG8gdGhlIGNvbXBvbmVudCBhcmNoaXRlY3R1cmUgLS0+XG48ZGl2IHJvbGU9XCJkaWFsb2dcIiAqY2xyUG9wb3ZlckNvbnRlbnQ9XCJvcGVuU3RhdGUgYXQgc21hcnRQb3NpdGlvbjsgb3V0c2lkZUNsaWNrVG9DbG9zZTogZmFsc2U7IHNjcm9sbFRvQ2xvc2U6IGZhbHNlXCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
@@ -59,10 +59,16 @@ export class ClrAbstractContainer {
59
59
  return Boolean(this.controlHelperComponent);
60
60
  }
61
61
  get showValid() {
62
- return this.touched && this.state === CONTROL_STATE.VALID && !!this.controlSuccessComponent;
62
+ return this.touched && this.state === CONTROL_STATE.VALID && this.successMessagePresent;
63
63
  }
64
64
  get showInvalid() {
65
- return this.touched && this.state === CONTROL_STATE.INVALID && !!this.controlErrorComponent;
65
+ return this.touched && this.state === CONTROL_STATE.INVALID && this.errorMessagePresent;
66
+ }
67
+ get successMessagePresent() {
68
+ return !!this.controlSuccessComponent;
69
+ }
70
+ get errorMessagePresent() {
71
+ return !!this.controlErrorComponent;
66
72
  }
67
73
  get touched() {
68
74
  return this.control?.touched;
@@ -125,4 +131,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
125
131
  type: ContentChild,
126
132
  args: [ClrControlHelper]
127
133
  }] } });
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvZm9ybXMvY29tbW9uL2Fic3RyYWN0LWNvbnRhaW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBb0IsWUFBWSxFQUFFLFNBQVMsRUFBYSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLL0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDNUMsT0FBTyxFQUFFLGFBQWEsRUFBeUIsTUFBTSw2Q0FBNkMsQ0FBQztBQUNuRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBSW5DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7O0FBRzlDLE1BQU0sT0FBZ0Isb0JBQW9CO0lBYXhDLFlBQ1kscUJBQTRDLEVBQ2hDLGFBQTRCLEVBQ3hDLG1CQUF3QyxFQUN4QyxnQkFBa0M7UUFIbEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUNoQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUN4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFWOUMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVQLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQVUzQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIscUJBQXFCLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQW9CLEVBQUUsRUFBRTtZQUNyRSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQiw0RUFBNEU7WUFDNUUsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsYUFB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LHNCQUFzQjtzQkFBckQsWUFBWTt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjQgQnJvYWRjb20uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGUgdGVybSBcIkJyb2FkY29tXCIgcmVmZXJzIHRvIEJyb2FkY29tIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIENvbnRlbnRDaGlsZCwgRGlyZWN0aXZlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRHluYW1pY1dyYXBwZXIgfSBmcm9tICcuLi8uLi91dGlscy9ob3N0LXdyYXBwaW5nL2R5bmFtaWMtd3JhcHBlcic7XG5pbXBvcnQgeyBDbHJDb250cm9sRXJyb3IgfSBmcm9tICcuL2Vycm9yJztcbmltcG9ydCB7IENsckNvbnRyb2xIZWxwZXIgfSBmcm9tICcuL2hlbHBlcic7XG5pbXBvcnQgeyBDT05UUk9MX1NUQVRFLCBJZkNvbnRyb2xTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL2lmLWNvbnRyb2wtc3RhdGUvaWYtY29udHJvbC1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IENsckxhYmVsIH0gZnJvbSAnLi9sYWJlbCc7XG5pbXBvcnQgeyBDb250cm9sQ2xhc3NTZXJ2aWNlIH0gZnJvbSAnLi9wcm92aWRlcnMvY29udHJvbC1jbGFzcy5zZXJ2aWNlJztcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuL3Byb3ZpZGVycy9sYXlvdXQuc2VydmljZSc7XG5pbXBvcnQgeyBOZ0NvbnRyb2xTZXJ2aWNlIH0gZnJvbSAnLi9wcm92aWRlcnMvbmctY29udHJvbC5zZXJ2aWNlJztcbmltcG9ydCB7IENsckNvbnRyb2xTdWNjZXNzIH0gZnJvbSAnLi9zdWNjZXNzJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ2xyQWJzdHJhY3RDb250YWluZXIgaW1wbGVtZW50cyBEeW5hbWljV3JhcHBlciwgT25EZXN0cm95LCBBZnRlckNvbnRlbnRJbml0IHtcbiAgQENvbnRlbnRDaGlsZChDbHJMYWJlbCwgeyBzdGF0aWM6IGZhbHNlIH0pIGxhYmVsOiBDbHJMYWJlbDtcbiAgQENvbnRlbnRDaGlsZChDbHJDb250cm9sU3VjY2VzcykgY29udHJvbFN1Y2Nlc3NDb21wb25lbnQ6IENsckNvbnRyb2xTdWNjZXNzO1xuICBAQ29udGVudENoaWxkKENsckNvbnRyb2xFcnJvcikgY29udHJvbEVycm9yQ29tcG9uZW50OiBDbHJDb250cm9sRXJyb3I7XG4gIEBDb250ZW50Q2hpbGQoQ2xyQ29udHJvbEhlbHBlcikgY29udHJvbEhlbHBlckNvbXBvbmVudDogQ2xyQ29udHJvbEhlbHBlcjtcblxuICBjb250cm9sOiBOZ0NvbnRyb2w7XG4gIF9keW5hbWljID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgcHJpdmF0ZSBzdGF0ZTogQ09OVFJPTF9TVEFURTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgaWZDb250cm9sU3RhdGVTZXJ2aWNlOiBJZkNvbnRyb2xTdGF0ZVNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGNvbnRyb2xDbGFzc1NlcnZpY2U6IENvbnRyb2xDbGFzc1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG5nQ29udHJvbFNlcnZpY2U6IE5nQ29udHJvbFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICBpZkNvbnRyb2xTdGF0ZVNlcnZpY2Uuc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoKHN0YXRlOiBDT05UUk9MX1NUQVRFKSA9PiB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTtcbiAgICAgICAgLy8gTWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgdXBkYXRlZCBiZWZvcmUgZGlzcGF0Y2hpbmcgdGhlIHZhbHVlcyBmb3IgaGVscGVyc1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUhlbHBlcnMoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIG5nQ29udHJvbFNlcnZpY2UuY29udHJvbENoYW5nZXMuc3Vic2NyaWJlKGNvbnRyb2wgPT4ge1xuICAgICAgICB0aGlzLmNvbnRyb2wgPSBjb250cm9sO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBOT1RFXG4gICAqIEhlbHBlciBjb250cm9sIGlzIGEgYml0IGRpZmZlcmVudCB0aGFuIHRoZSBvdGhlcnMsIGl0IG11c3QgYmUgYWx3YXlzIHZpc2libGU6XG4gICAqICAgLSAgTGFiZWxzIGFuZCBpbnN0cnVjdGlvbnMgbXVzdCBhbHdheXMgYWNjb21wYW55IGZvcm1zIGFuZCBhcmUgcGVyc2lzdGVudC5cbiAgICogICAtICBUaGUgcmVjb21tZW5kYXRpb24gaGVyZSBpcyB0byBhbHdheXMgaGF2ZSBoZWxwZXIgdGV4dCBvciBhbnl0aGluZyBpbnN0cnVjdGlvbnMgdmlzaWJsZS5cbiAgICogICAtICBUaGUgZXhwZWN0YXRpb24gaXMgdG8gaGF2ZSBlcnJvciB0ZXh0ICsgaGVscGVyIHRleHQgaW4gdGhlIGVycm9yZWQgc3RhdGUuIHRoaXMgd2F5IGFsbCB1c2VycyB3aWxsIGhhdmUgdGhlIGhlbHBlciB0ZXh0IGluZm9ybWF0aW9uIGFsd2F5cyBhdmFpbGFibGUuXG4gICAqL1xuICBnZXQgc2hvd0hlbHBlcigpOiBib29sZWFuIHtcbiAgICAvKipcbiAgICAgKiBATk9URVxuICAgICAqIFNhdmluZyB0aGUgcHJldmlvdXMgdmVyc2lvbiBpbiBjYXNlIHNvbWV0aGluZyBpcyBjaGFuZ2VkLiBXZSdsbCByZXR1cm4gYWx3YXlzIHRydWUgc28gd2UgY2FuIGJlIGZsZXhpYmxlXG4gICAgICogYW5kIGtlZXAgdGhlIGNvbmRpdGlvbiBwZXIgY29tcG9uZW50cy5cbiAgICAgKlxuICAgICAqIHJldHVybiAoXG4gICAgICogSGVscGVyIENvbXBvbmVudCBleGlzdCBhbmQgdGhlIHN0YXRlIG9mIHRoZSBmb3JtIGlzIE5PTkUgKG5vdCB0b3VjaGVkKVxuICAgICAqICghIXRoaXMuY29udHJvbEhlbHBlckNvbXBvbmVudCAmJiAoIXRoaXMudG91Y2hlZCB8fCB0aGlzLnN0YXRlID09PSBDT05UUk9MX1NUQVRFLk5PTkUpKSB8fFxuICAgICAqIG9yIHRoZXJlIGlzIG5vIHN1Y2Nlc3MgY29tcG9uZW50IGJ1dCB0aGUgc3RhdGUgb2YgdGhlIGZvcm0gaXMgVkFMSUQgLSBzaG93IGhlbHBlciBpbmZvcm1hdGlvblxuICAgICAqICghIXRoaXMuY29udHJvbFN1Y2Nlc3NDb21wb25lbnQgPT09IGZhbHNlICYmIHRoaXMuc3RhdGUgPT09IENPTlRST0xfU1RBVEUuVkFMSUQpIHx8XG4gICAgICogb3IgdGhlcmUgaXMgbm8gZXJyb3IgY29tcG9uZW50IGJ1dCB0aGUgc3RhdGUgb2YgdGhlIGZvcm0gaXMgSU5WQUxJRCAtIHNob3cgaGVscGVyIGluZm9ybWF0aW9uXG4gICAgICogKCEhdGhpcy5jb250cm9sRXJyb3JDb21wb25lbnQgPT09IGZhbHNlICYmIHRoaXMuc3RhdGUgPT09IENPTlRST0xfU1RBVEUuSU5WQUxJRClcbiAgICAgKiApO1xuICAgICAqL1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMuY29udHJvbEhlbHBlckNvbXBvbmVudCk7XG4gIH1cblxuICBnZXQgc2hvd1ZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRvdWNoZWQgJiYgdGhpcy5zdGF0ZSA9PT0gQ09OVFJPTF9TVEFURS5WQUxJRCAmJiAhIXRoaXMuY29udHJvbFN1Y2Nlc3NDb21wb25lbnQ7XG4gIH1cblxuICBnZXQgc2hvd0ludmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudG91Y2hlZCAmJiB0aGlzLnN0YXRlID09PSBDT05UUk9MX1NUQVRFLklOVkFMSUQgJiYgISF0aGlzLmNvbnRyb2xFcnJvckNvbXBvbmVudDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHRvdWNoZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbD8udG91Y2hlZDtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAvKipcbiAgICAgKiBXZSBnb25uYSBzZXQgdGhlIGhlbHBlciBjb250cm9sIHN0YXRlLCBhZnRlciBhbGwgb3IgbW9zdCBvZiB0aGUgY29tcG9uZW50c1xuICAgICAqIGFyZSByZWFkeSAtIGFsc28gdGhpcyB3aWxsIHRyaWdnZXIgc29tZSBpbml0aWFsIGZsb3dzIGludG8gd3JhcHBlcnMgYW5kIGNvbnRyb2xzLFxuICAgICAqIGxpa2UgbG9jYXRpbmcgSURzICBhbmQgc2V0dGluZyAgYXR0cmlidXRlcy5cbiAgICAgKi9cbiAgICB0aGlzLnVwZGF0ZUhlbHBlcnMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YnNjcmlwdGlvbiA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBjb250cm9sQ2xhc3MoKSB7XG4gICAgLyoqXG4gICAgICogRGVjaWRlIHdoYXQgc3VidGV4dCB0byBkaXNwbGF5OlxuICAgICAqICAgLSBjb250YWluZXIgaXMgdmFsaWQgYnV0IG5vIHN1Y2Nlc3MgY29tcG9uZW50IGlzIGltcGxlbWVudGVkIC0gdXNlIGhlbHBlciBjbGFzc1xuICAgICAqICAgLSBjb250YWluZXIgaXMgdmFsaWQgYW5kIHN1Y2Nlc3MgY29tcG9uZW50IGlzIGltcGxlbWVudGVkIC0gdXNlIHN1Y2Nlc3MgY2xhc3NcbiAgICAgKi9cbiAgICBpZiAoKCF0aGlzLmNvbnRyb2xTdWNjZXNzQ29tcG9uZW50ICYmIHRoaXMuc3RhdGUgPT09IENPTlRST0xfU1RBVEUuVkFMSUQpIHx8ICF0aGlzLnRvdWNoZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xDbGFzc1NlcnZpY2UuY29udHJvbENsYXNzKENPTlRST0xfU1RBVEUuTk9ORSwgdGhpcy5hZGRHcmlkKCkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBQYXNzIGZvcm0gY29udHJvbCBzdGF0ZSBhbmQgcmV0dXJuIHN0cmluZyBvZiBjbGFzc2VzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGNvbnRhaW5lci5cbiAgICAgKi9cbiAgICByZXR1cm4gdGhpcy5jb250cm9sQ2xhc3NTZXJ2aWNlLmNvbnRyb2xDbGFzcyh0aGlzLnN0YXRlLCB0aGlzLmFkZEdyaWQoKSk7XG4gIH1cblxuICBhZGRHcmlkKCkge1xuICAgIHJldHVybiB0aGlzLmxheW91dFNlcnZpY2UgJiYgIXRoaXMubGF5b3V0U2VydmljZS5pc1ZlcnRpY2FsKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUhlbHBlcnMoKSB7XG4gICAgaWYgKHRoaXMubmdDb250cm9sU2VydmljZSkge1xuICAgICAgdGhpcy5uZ0NvbnRyb2xTZXJ2aWNlLnNldEhlbHBlcnMoe1xuICAgICAgICBzaG93OiB0aGlzLnNob3dJbnZhbGlkIHx8IHRoaXMuc2hvd0hlbHBlciB8fCB0aGlzLnNob3dWYWxpZCxcbiAgICAgICAgc2hvd0ludmFsaWQ6IHRoaXMuc2hvd0ludmFsaWQsXG4gICAgICAgIHNob3dIZWxwZXI6IHRoaXMuc2hvd0hlbHBlcixcbiAgICAgICAgc2hvd1ZhbGlkOiB0aGlzLnNob3dWYWxpZCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvZm9ybXMvY29tbW9uL2Fic3RyYWN0LWNvbnRhaW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBb0IsWUFBWSxFQUFFLFNBQVMsRUFBYSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLL0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDNUMsT0FBTyxFQUFFLGFBQWEsRUFBeUIsTUFBTSw2Q0FBNkMsQ0FBQztBQUNuRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBSW5DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7O0FBRzlDLE1BQU0sT0FBZ0Isb0JBQW9CO0lBYXhDLFlBQ1kscUJBQTRDLEVBQ2hDLGFBQTRCLEVBQ3hDLG1CQUF3QyxFQUN4QyxnQkFBa0M7UUFIbEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUNoQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUN4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFWOUMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVQLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQVUzQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIscUJBQXFCLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQW9CLEVBQUUsRUFBRTtZQUNyRSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQiw0RUFBNEU7WUFDNUUsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsYUFB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WTt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNSLHVCQUF1QjtzQkFBdkQsWUFBWTt1QkFBQyxpQkFBaUI7Z0JBQ0EscUJBQXFCO3NCQUFuRCxZQUFZO3VCQUFDLGVBQWU7Z0JBQ0csc0JBQXNCO3NCQUFyRCxZQUFZO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyNCBCcm9hZGNvbS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFRoZSB0ZXJtIFwiQnJvYWRjb21cIiByZWZlcnMgdG8gQnJvYWRjb20gSW5jLiBhbmQvb3IgaXRzIHN1YnNpZGlhcmllcy5cbiAqIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4gKi9cblxuaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ29udGVudENoaWxkLCBEaXJlY3RpdmUsIE9uRGVzdHJveSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBEeW5hbWljV3JhcHBlciB9IGZyb20gJy4uLy4uL3V0aWxzL2hvc3Qtd3JhcHBpbmcvZHluYW1pYy13cmFwcGVyJztcbmltcG9ydCB7IENsckNvbnRyb2xFcnJvciB9IGZyb20gJy4vZXJyb3InO1xuaW1wb3J0IHsgQ2xyQ29udHJvbEhlbHBlciB9IGZyb20gJy4vaGVscGVyJztcbmltcG9ydCB7IENPTlRST0xfU1RBVEUsIElmQ29udHJvbFN0YXRlU2VydmljZSB9IGZyb20gJy4vaWYtY29udHJvbC1zdGF0ZS9pZi1jb250cm9sLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2xyTGFiZWwgfSBmcm9tICcuL2xhYmVsJztcbmltcG9ydCB7IENvbnRyb2xDbGFzc1NlcnZpY2UgfSBmcm9tICcuL3Byb3ZpZGVycy9jb250cm9sLWNsYXNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTGF5b3V0U2VydmljZSB9IGZyb20gJy4vcHJvdmlkZXJzL2xheW91dC5zZXJ2aWNlJztcbmltcG9ydCB7IE5nQ29udHJvbFNlcnZpY2UgfSBmcm9tICcuL3Byb3ZpZGVycy9uZy1jb250cm9sLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2xyQ29udHJvbFN1Y2Nlc3MgfSBmcm9tICcuL3N1Y2Nlc3MnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDbHJBYnN0cmFjdENvbnRhaW5lciBpbXBsZW1lbnRzIER5bmFtaWNXcmFwcGVyLCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQge1xuICBAQ29udGVudENoaWxkKENsckxhYmVsLCB7IHN0YXRpYzogZmFsc2UgfSkgbGFiZWw6IENsckxhYmVsO1xuICBAQ29udGVudENoaWxkKENsckNvbnRyb2xTdWNjZXNzKSBjb250cm9sU3VjY2Vzc0NvbXBvbmVudDogQ2xyQ29udHJvbFN1Y2Nlc3M7XG4gIEBDb250ZW50Q2hpbGQoQ2xyQ29udHJvbEVycm9yKSBjb250cm9sRXJyb3JDb21wb25lbnQ6IENsckNvbnRyb2xFcnJvcjtcbiAgQENvbnRlbnRDaGlsZChDbHJDb250cm9sSGVscGVyKSBjb250cm9sSGVscGVyQ29tcG9uZW50OiBDbHJDb250cm9sSGVscGVyO1xuXG4gIGNvbnRyb2w6IE5nQ29udHJvbDtcbiAgX2R5bmFtaWMgPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBwcml2YXRlIHN0YXRlOiBDT05UUk9MX1NUQVRFO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBpZkNvbnRyb2xTdGF0ZVNlcnZpY2U6IElmQ29udHJvbFN0YXRlU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgY29udHJvbENsYXNzU2VydmljZTogQ29udHJvbENsYXNzU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbmdDb250cm9sU2VydmljZTogTmdDb250cm9sU2VydmljZVxuICApIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIGlmQ29udHJvbFN0YXRlU2VydmljZS5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZSgoc3RhdGU6IENPTlRST0xfU1RBVEUpID0+IHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHN0YXRlO1xuICAgICAgICAvLyBNYWtlIHN1cmUgZXZlcnl0aGluZyBpcyB1cGRhdGVkIGJlZm9yZSBkaXNwYXRjaGluZyB0aGUgdmFsdWVzIGZvciBoZWxwZXJzXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMudXBkYXRlSGVscGVycygpO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgbmdDb250cm9sU2VydmljZS5jb250cm9sQ2hhbmdlcy5zdWJzY3JpYmUoY29udHJvbCA9PiB7XG4gICAgICAgIHRoaXMuY29udHJvbCA9IGNvbnRyb2w7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQE5PVEVcbiAgICogSGVscGVyIGNvbnRyb2wgaXMgYSBiaXQgZGlmZmVyZW50IHRoYW4gdGhlIG90aGVycywgaXQgbXVzdCBiZSBhbHdheXMgdmlzaWJsZTpcbiAgICogICAtICBMYWJlbHMgYW5kIGluc3RydWN0aW9ucyBtdXN0IGFsd2F5cyBhY2NvbXBhbnkgZm9ybXMgYW5kIGFyZSBwZXJzaXN0ZW50LlxuICAgKiAgIC0gIFRoZSByZWNvbW1lbmRhdGlvbiBoZXJlIGlzIHRvIGFsd2F5cyBoYXZlIGhlbHBlciB0ZXh0IG9yIGFueXRoaW5nIGluc3RydWN0aW9ucyB2aXNpYmxlLlxuICAgKiAgIC0gIFRoZSBleHBlY3RhdGlvbiBpcyB0byBoYXZlIGVycm9yIHRleHQgKyBoZWxwZXIgdGV4dCBpbiB0aGUgZXJyb3JlZCBzdGF0ZS4gdGhpcyB3YXkgYWxsIHVzZXJzIHdpbGwgaGF2ZSB0aGUgaGVscGVyIHRleHQgaW5mb3JtYXRpb24gYWx3YXlzIGF2YWlsYWJsZS5cbiAgICovXG4gIGdldCBzaG93SGVscGVyKCk6IGJvb2xlYW4ge1xuICAgIC8qKlxuICAgICAqIEBOT1RFXG4gICAgICogU2F2aW5nIHRoZSBwcmV2aW91cyB2ZXJzaW9uIGluIGNhc2Ugc29tZXRoaW5nIGlzIGNoYW5nZWQuIFdlJ2xsIHJldHVybiBhbHdheXMgdHJ1ZSBzbyB3ZSBjYW4gYmUgZmxleGlibGVcbiAgICAgKiBhbmQga2VlcCB0aGUgY29uZGl0aW9uIHBlciBjb21wb25lbnRzLlxuICAgICAqXG4gICAgICogcmV0dXJuIChcbiAgICAgKiBIZWxwZXIgQ29tcG9uZW50IGV4aXN0IGFuZCB0aGUgc3RhdGUgb2YgdGhlIGZvcm0gaXMgTk9ORSAobm90IHRvdWNoZWQpXG4gICAgICogKCEhdGhpcy5jb250cm9sSGVscGVyQ29tcG9uZW50ICYmICghdGhpcy50b3VjaGVkIHx8IHRoaXMuc3RhdGUgPT09IENPTlRST0xfU1RBVEUuTk9ORSkpIHx8XG4gICAgICogb3IgdGhlcmUgaXMgbm8gc3VjY2VzcyBjb21wb25lbnQgYnV0IHRoZSBzdGF0ZSBvZiB0aGUgZm9ybSBpcyBWQUxJRCAtIHNob3cgaGVscGVyIGluZm9ybWF0aW9uXG4gICAgICogKCEhdGhpcy5jb250cm9sU3VjY2Vzc0NvbXBvbmVudCA9PT0gZmFsc2UgJiYgdGhpcy5zdGF0ZSA9PT0gQ09OVFJPTF9TVEFURS5WQUxJRCkgfHxcbiAgICAgKiBvciB0aGVyZSBpcyBubyBlcnJvciBjb21wb25lbnQgYnV0IHRoZSBzdGF0ZSBvZiB0aGUgZm9ybSBpcyBJTlZBTElEIC0gc2hvdyBoZWxwZXIgaW5mb3JtYXRpb25cbiAgICAgKiAoISF0aGlzLmNvbnRyb2xFcnJvckNvbXBvbmVudCA9PT0gZmFsc2UgJiYgdGhpcy5zdGF0ZSA9PT0gQ09OVFJPTF9TVEFURS5JTlZBTElEKVxuICAgICAqICk7XG4gICAgICovXG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy5jb250cm9sSGVscGVyQ29tcG9uZW50KTtcbiAgfVxuXG4gIGdldCBzaG93VmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudG91Y2hlZCAmJiB0aGlzLnN0YXRlID09PSBDT05UUk9MX1NUQVRFLlZBTElEICYmIHRoaXMuc3VjY2Vzc01lc3NhZ2VQcmVzZW50O1xuICB9XG5cbiAgZ2V0IHNob3dJbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRvdWNoZWQgJiYgdGhpcy5zdGF0ZSA9PT0gQ09OVFJPTF9TVEFURS5JTlZBTElEICYmIHRoaXMuZXJyb3JNZXNzYWdlUHJlc2VudDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgc3VjY2Vzc01lc3NhZ2VQcmVzZW50KCkge1xuICAgIHJldHVybiAhIXRoaXMuY29udHJvbFN1Y2Nlc3NDb21wb25lbnQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGVycm9yTWVzc2FnZVByZXNlbnQoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5jb250cm9sRXJyb3JDb21wb25lbnQ7XG4gIH1cblxuICBwcml2YXRlIGdldCB0b3VjaGVkKCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2w/LnRvdWNoZWQ7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgLyoqXG4gICAgICogV2UgZ29ubmEgc2V0IHRoZSBoZWxwZXIgY29udHJvbCBzdGF0ZSwgYWZ0ZXIgYWxsIG9yIG1vc3Qgb2YgdGhlIGNvbXBvbmVudHNcbiAgICAgKiBhcmUgcmVhZHkgLSBhbHNvIHRoaXMgd2lsbCB0cmlnZ2VyIHNvbWUgaW5pdGlhbCBmbG93cyBpbnRvIHdyYXBwZXJzIGFuZCBjb250cm9scyxcbiAgICAgKiBsaWtlIGxvY2F0aW5nIElEcyAgYW5kIHNldHRpbmcgIGF0dHJpYnV0ZXMuXG4gICAgICovXG4gICAgdGhpcy51cGRhdGVIZWxwZXJzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWJzY3JpcHRpb24gPT4gc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgY29udHJvbENsYXNzKCkge1xuICAgIC8qKlxuICAgICAqIERlY2lkZSB3aGF0IHN1YnRleHQgdG8gZGlzcGxheTpcbiAgICAgKiAgIC0gY29udGFpbmVyIGlzIHZhbGlkIGJ1dCBubyBzdWNjZXNzIGNvbXBvbmVudCBpcyBpbXBsZW1lbnRlZCAtIHVzZSBoZWxwZXIgY2xhc3NcbiAgICAgKiAgIC0gY29udGFpbmVyIGlzIHZhbGlkIGFuZCBzdWNjZXNzIGNvbXBvbmVudCBpcyBpbXBsZW1lbnRlZCAtIHVzZSBzdWNjZXNzIGNsYXNzXG4gICAgICovXG4gICAgaWYgKCghdGhpcy5jb250cm9sU3VjY2Vzc0NvbXBvbmVudCAmJiB0aGlzLnN0YXRlID09PSBDT05UUk9MX1NUQVRFLlZBTElEKSB8fCAhdGhpcy50b3VjaGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb250cm9sQ2xhc3NTZXJ2aWNlLmNvbnRyb2xDbGFzcyhDT05UUk9MX1NUQVRFLk5PTkUsIHRoaXMuYWRkR3JpZCgpKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUGFzcyBmb3JtIGNvbnRyb2wgc3RhdGUgYW5kIHJldHVybiBzdHJpbmcgb2YgY2xhc3NlcyB0byBiZSBhcHBsaWVkIHRvIHRoZSBjb250YWluZXIuXG4gICAgICovXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbENsYXNzU2VydmljZS5jb250cm9sQ2xhc3ModGhpcy5zdGF0ZSwgdGhpcy5hZGRHcmlkKCkpO1xuICB9XG5cbiAgYWRkR3JpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5sYXlvdXRTZXJ2aWNlICYmICF0aGlzLmxheW91dFNlcnZpY2UuaXNWZXJ0aWNhbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVIZWxwZXJzKCkge1xuICAgIGlmICh0aGlzLm5nQ29udHJvbFNlcnZpY2UpIHtcbiAgICAgIHRoaXMubmdDb250cm9sU2VydmljZS5zZXRIZWxwZXJzKHtcbiAgICAgICAgc2hvdzogdGhpcy5zaG93SW52YWxpZCB8fCB0aGlzLnNob3dIZWxwZXIgfHwgdGhpcy5zaG93VmFsaWQsXG4gICAgICAgIHNob3dJbnZhbGlkOiB0aGlzLnNob3dJbnZhbGlkLFxuICAgICAgICBzaG93SGVscGVyOiB0aGlzLnNob3dIZWxwZXIsXG4gICAgICAgIHNob3dWYWxpZDogdGhpcy5zaG93VmFsaWQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -42,7 +42,7 @@ ClrControlContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ve
42
42
  <ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
43
43
  <ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
44
44
  </div>
45
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: i3.ClrLabel, selector: "label", inputs: ["for"] }] });
45
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: i3.ClrLabel, selector: "label", inputs: ["id", "for"] }] });
46
46
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrControlContainer, decorators: [{
47
47
  type: Component,
48
48
  args: [{
@@ -5,7 +5,7 @@
5
5
  * The full license information can be found in LICENSE in the root directory of this project.
6
6
  */
7
7
  import { Injectable } from '@angular/core';
8
- import { BehaviorSubject } from 'rxjs';
8
+ import { EMPTY, map, merge, shareReplay, startWith, Subject, switchMap } from 'rxjs';
9
9
  import * as i0 from "@angular/core";
10
10
  import * as i1 from "../providers/ng-control.service";
11
11
  export var CONTROL_STATE;
@@ -16,35 +16,19 @@ export var CONTROL_STATE;
16
16
  })(CONTROL_STATE || (CONTROL_STATE = {}));
17
17
  export class IfControlStateService {
18
18
  constructor(ngControlService) {
19
- this.subscriptions = [];
20
- // Implement our own status changes observable, since Angular controls don't
21
- this._statusChanges = new BehaviorSubject(CONTROL_STATE.NONE);
22
- // Wait for the control to be available
23
- this.subscriptions.push(ngControlService.controlChanges.subscribe(control => {
24
- if (control) {
25
- this.control = control;
26
- // Subscribe to the status change events, only after touched
27
- // and emit the control
28
- this.subscriptions.push(this.control.statusChanges.subscribe(() => {
29
- this.triggerStatusChange();
30
- }));
31
- }
32
- }));
33
- }
34
- get statusChanges() {
35
- return this._statusChanges.asObservable();
36
- }
37
- ngOnDestroy() {
38
- this.subscriptions.forEach(subscription => subscription.unsubscribe());
19
+ this.triggerStatusChangeSubject = new Subject();
20
+ this.statusChanges = this.getStatusChanges(ngControlService).pipe(shareReplay(1));
39
21
  }
40
22
  triggerStatusChange() {
41
- /* Check if control is defined and run the code only then */
42
- if (this.control) {
23
+ this.triggerStatusChangeSubject.next();
24
+ }
25
+ getStatusChanges(ngControlService) {
26
+ return ngControlService.controlChanges.pipe(switchMap(control => control ? merge(control.statusChanges, this.triggerStatusChangeSubject.pipe(map(() => control.status))) : EMPTY), map(controlStatus => {
43
27
  // These status values are mutually exclusive, so a control
44
28
  // cannot be both valid AND invalid or invalid AND disabled.
45
- const status = CONTROL_STATE[this.control.status];
46
- this._statusChanges.next(['VALID', 'INVALID'].includes(status) ? status : CONTROL_STATE.NONE);
47
- }
29
+ const status = CONTROL_STATE[controlStatus];
30
+ return [CONTROL_STATE.VALID, CONTROL_STATE.INVALID].includes(status) ? status : CONTROL_STATE.NONE;
31
+ }), startWith(CONTROL_STATE.NONE));
48
32
  }
49
33
  }
50
34
  IfControlStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: IfControlStateService, deps: [{ token: i1.NgControlService }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -52,4 +36,4 @@ IfControlStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0"
52
36
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: IfControlStateService, decorators: [{
53
37
  type: Injectable
54
38
  }], ctorParameters: function () { return [{ type: i1.NgControlService }]; } });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWYtY29udHJvbC1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvZm9ybXMvY29tbW9uL2lmLWNvbnRyb2wtc3RhdGUvaWYtY29udHJvbC1zdGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUV0RCxPQUFPLEVBQUUsZUFBZSxFQUE0QixNQUFNLE1BQU0sQ0FBQzs7O0FBSWpFLE1BQU0sQ0FBTixJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDdkIsOEJBQWEsQ0FBQTtJQUNiLGdDQUFlLENBQUE7SUFDZixvQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBSlcsYUFBYSxLQUFiLGFBQWEsUUFJeEI7QUFHRCxNQUFNLE9BQU8scUJBQXFCO0lBT2hDLFlBQVksZ0JBQWtDO1FBTnRDLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUczQyw0RUFBNEU7UUFDcEUsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFHL0QsdUNBQXVDO1FBQ3ZDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2xELElBQUksT0FBTyxFQUFFO2dCQUNYLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO2dCQUN2Qiw0REFBNEQ7Z0JBQzVELHVCQUF1QjtnQkFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7b0JBQ3hDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUM3QixDQUFDLENBQUMsQ0FDSCxDQUFDO2FBQ0g7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELG1CQUFtQjtRQUNqQiw0REFBNEQ7UUFDNUQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLDJEQUEyRDtZQUMzRCw0REFBNEQ7WUFDNUQsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMvRjtJQUNILENBQUM7O2tIQXpDVSxxQkFBcUI7c0hBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNi0yMDI0IEJyb2FkY29tLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhlIHRlcm0gXCJCcm9hZGNvbVwiIHJlZmVycyB0byBCcm9hZGNvbSBJbmMuIGFuZC9vciBpdHMgc3Vic2lkaWFyaWVzLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE5nQ29udHJvbFNlcnZpY2UgfSBmcm9tICcuLi9wcm92aWRlcnMvbmctY29udHJvbC5zZXJ2aWNlJztcblxuZXhwb3J0IGVudW0gQ09OVFJPTF9TVEFURSB7XG4gIE5PTkUgPSAnTk9ORScsXG4gIFZBTElEID0gJ1ZBTElEJyxcbiAgSU5WQUxJRCA9ICdJTlZBTElEJyxcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIElmQ29udHJvbFN0YXRlU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBjb250cm9sOiBOZ0NvbnRyb2w7XG5cbiAgLy8gSW1wbGVtZW50IG91ciBvd24gc3RhdHVzIGNoYW5nZXMgb2JzZXJ2YWJsZSwgc2luY2UgQW5ndWxhciBjb250cm9scyBkb24ndFxuICBwcml2YXRlIF9zdGF0dXNDaGFuZ2VzID0gbmV3IEJlaGF2aW9yU3ViamVjdChDT05UUk9MX1NUQVRFLk5PTkUpO1xuXG4gIGNvbnN0cnVjdG9yKG5nQ29udHJvbFNlcnZpY2U6IE5nQ29udHJvbFNlcnZpY2UpIHtcbiAgICAvLyBXYWl0IGZvciB0aGUgY29udHJvbCB0byBiZSBhdmFpbGFibGVcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIG5nQ29udHJvbFNlcnZpY2UuY29udHJvbENoYW5nZXMuc3Vic2NyaWJlKGNvbnRyb2wgPT4ge1xuICAgICAgICBpZiAoY29udHJvbCkge1xuICAgICAgICAgIHRoaXMuY29udHJvbCA9IGNvbnRyb2w7XG4gICAgICAgICAgLy8gU3Vic2NyaWJlIHRvIHRoZSBzdGF0dXMgY2hhbmdlIGV2ZW50cywgb25seSBhZnRlciB0b3VjaGVkXG4gICAgICAgICAgLy8gYW5kIGVtaXQgdGhlIGNvbnRyb2xcbiAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICAgIHRoaXMuY29udHJvbC5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMudHJpZ2dlclN0YXR1c0NoYW5nZSgpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBnZXQgc3RhdHVzQ2hhbmdlcygpOiBPYnNlcnZhYmxlPENPTlRST0xfU1RBVEU+IHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdHVzQ2hhbmdlcy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YnNjcmlwdGlvbiA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICB0cmlnZ2VyU3RhdHVzQ2hhbmdlKCkge1xuICAgIC8qIENoZWNrIGlmIGNvbnRyb2wgaXMgZGVmaW5lZCBhbmQgcnVuIHRoZSBjb2RlIG9ubHkgdGhlbiAqL1xuICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgIC8vIFRoZXNlIHN0YXR1cyB2YWx1ZXMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSwgc28gYSBjb250cm9sXG4gICAgICAvLyBjYW5ub3QgYmUgYm90aCB2YWxpZCBBTkQgaW52YWxpZCBvciBpbnZhbGlkIEFORCBkaXNhYmxlZC5cbiAgICAgIGNvbnN0IHN0YXR1cyA9IENPTlRST0xfU1RBVEVbdGhpcy5jb250cm9sLnN0YXR1c107XG4gICAgICB0aGlzLl9zdGF0dXNDaGFuZ2VzLm5leHQoWydWQUxJRCcsICdJTlZBTElEJ10uaW5jbHVkZXMoc3RhdHVzKSA/IHN0YXR1cyA6IENPTlRST0xfU1RBVEUuTk9ORSk7XG4gICAgfVxuICB9XG59XG4iXX0=
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWYtY29udHJvbC1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvZm9ybXMvY29tbW9uL2lmLWNvbnRyb2wtc3RhdGUvaWYtY29udHJvbC1zdGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQWMsV0FBVyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFJakcsTUFBTSxDQUFOLElBQVksYUFJWDtBQUpELFdBQVksYUFBYTtJQUN2Qiw4QkFBYSxDQUFBO0lBQ2IsZ0NBQWUsQ0FBQTtJQUNmLG9DQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFKVyxhQUFhLEtBQWIsYUFBYSxRQUl4QjtBQUdELE1BQU0sT0FBTyxxQkFBcUI7SUFLaEMsWUFBWSxnQkFBa0M7UUFGN0IsK0JBQTBCLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUdoRSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsZ0JBQWtDO1FBQ3pELE9BQU8sZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDekMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQ2xCLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUNoSCxFQUNELEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUNsQiwyREFBMkQ7WUFDM0QsNERBQTREO1lBQzVELE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUM1QyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7UUFDckcsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FDOUIsQ0FBQztJQUNKLENBQUM7O2tIQTFCVSxxQkFBcUI7c0hBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNi0yMDI0IEJyb2FkY29tLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhlIHRlcm0gXCJCcm9hZGNvbVwiIHJlZmVycyB0byBCcm9hZGNvbSBJbmMuIGFuZC9vciBpdHMgc3Vic2lkaWFyaWVzLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFTVBUWSwgbWFwLCBtZXJnZSwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgU3ViamVjdCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE5nQ29udHJvbFNlcnZpY2UgfSBmcm9tICcuLi9wcm92aWRlcnMvbmctY29udHJvbC5zZXJ2aWNlJztcblxuZXhwb3J0IGVudW0gQ09OVFJPTF9TVEFURSB7XG4gIE5PTkUgPSAnTk9ORScsXG4gIFZBTElEID0gJ1ZBTElEJyxcbiAgSU5WQUxJRCA9ICdJTlZBTElEJyxcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIElmQ29udHJvbFN0YXRlU2VydmljZSB7XG4gIHJlYWRvbmx5IHN0YXR1c0NoYW5nZXM6IE9ic2VydmFibGU8Q09OVFJPTF9TVEFURT47XG5cbiAgcHJpdmF0ZSByZWFkb25seSB0cmlnZ2VyU3RhdHVzQ2hhbmdlU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IobmdDb250cm9sU2VydmljZTogTmdDb250cm9sU2VydmljZSkge1xuICAgIHRoaXMuc3RhdHVzQ2hhbmdlcyA9IHRoaXMuZ2V0U3RhdHVzQ2hhbmdlcyhuZ0NvbnRyb2xTZXJ2aWNlKS5waXBlKHNoYXJlUmVwbGF5KDEpKTtcbiAgfVxuXG4gIHRyaWdnZXJTdGF0dXNDaGFuZ2UoKSB7XG4gICAgdGhpcy50cmlnZ2VyU3RhdHVzQ2hhbmdlU3ViamVjdC5uZXh0KCk7XG4gIH1cblxuICBwcml2YXRlIGdldFN0YXR1c0NoYW5nZXMobmdDb250cm9sU2VydmljZTogTmdDb250cm9sU2VydmljZSkge1xuICAgIHJldHVybiBuZ0NvbnRyb2xTZXJ2aWNlLmNvbnRyb2xDaGFuZ2VzLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoY29udHJvbCA9PlxuICAgICAgICBjb250cm9sID8gbWVyZ2UoY29udHJvbC5zdGF0dXNDaGFuZ2VzLCB0aGlzLnRyaWdnZXJTdGF0dXNDaGFuZ2VTdWJqZWN0LnBpcGUobWFwKCgpID0+IGNvbnRyb2wuc3RhdHVzKSkpIDogRU1QVFlcbiAgICAgICksXG4gICAgICBtYXAoY29udHJvbFN0YXR1cyA9PiB7XG4gICAgICAgIC8vIFRoZXNlIHN0YXR1cyB2YWx1ZXMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSwgc28gYSBjb250cm9sXG4gICAgICAgIC8vIGNhbm5vdCBiZSBib3RoIHZhbGlkIEFORCBpbnZhbGlkIG9yIGludmFsaWQgQU5EIGRpc2FibGVkLlxuICAgICAgICBjb25zdCBzdGF0dXMgPSBDT05UUk9MX1NUQVRFW2NvbnRyb2xTdGF0dXNdO1xuICAgICAgICByZXR1cm4gW0NPTlRST0xfU1RBVEUuVkFMSUQsIENPTlRST0xfU1RBVEUuSU5WQUxJRF0uaW5jbHVkZXMoc3RhdHVzKSA/IHN0YXR1cyA6IENPTlRST0xfU1RBVEUuTk9ORTtcbiAgICAgIH0pLFxuICAgICAgc3RhcnRXaXRoKENPTlRST0xfU1RBVEUuTk9ORSlcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -4,7 +4,8 @@
4
4
  * This software is released under MIT license.
5
5
  * The full license information can be found in LICENSE in the root directory of this project.
6
6
  */
7
- import { Directive, HostBinding, Input, Optional } from '@angular/core';
7
+ import { ContentChild, Directive, ElementRef, HostBinding, HostListener, Input, Optional, } from '@angular/core';
8
+ import { ClrSignpost } from '../../popover';
8
9
  import * as i0 from "@angular/core";
9
10
  import * as i1 from "./providers/control-id.service";
10
11
  import * as i2 from "./providers/layout.service";
@@ -23,6 +24,9 @@ export class ClrLabel {
23
24
  return this.el.nativeElement && this.el.nativeElement.textContent;
24
25
  }
25
26
  ngOnInit() {
27
+ // Prevent id attributes from being removed by the `undefined` host binding.
28
+ // This happens when a `label` is used outside of a control container and other use cases.
29
+ this.idAttr = this.idInput;
26
30
  // Only add the clr-control-label if it is inside a control container
27
31
  if (this.controlIdService || this.ngControlService) {
28
32
  this.renderer.addClass(this.el.nativeElement, 'clr-control-label');
@@ -37,7 +41,10 @@ export class ClrLabel {
37
41
  this.renderer.addClass(this.el.nativeElement, `clr-col-md-${this.layoutService.labelSize}`);
38
42
  }
39
43
  if (this.controlIdService && !this.forAttr) {
40
- this.subscriptions.push(this.controlIdService.idChange.subscribe(id => (this.forAttr = id)));
44
+ this.subscriptions.push(this.controlIdService.idChange.subscribe(id => {
45
+ this.forAttr = id;
46
+ this.idAttr = this.idInput || `${id}-label`;
47
+ }));
41
48
  }
42
49
  }
43
50
  ngOnDestroy() {
@@ -46,9 +53,22 @@ export class ClrLabel {
46
53
  disableGrid() {
47
54
  this.enableGrid = false;
48
55
  }
56
+ /**
57
+ * Allowing signposts inside labels to work without disabling default behavior. <label> is spreading a click event to its children so signposts get
58
+ * automatically closed once clicked inside a <label>.
59
+ * @param event
60
+ */
61
+ onClick(event) {
62
+ this.preventDefaultOnSignpostTarget(event);
63
+ }
64
+ preventDefaultOnSignpostTarget(event) {
65
+ if (this.signpost && this.signpost.nativeElement && this.signpost.nativeElement.contains(event.target)) {
66
+ event.preventDefault();
67
+ }
68
+ }
49
69
  }
50
70
  ClrLabel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrLabel, deps: [{ token: i1.ControlIdService, optional: true }, { token: i2.LayoutService, optional: true }, { token: i3.NgControlService, optional: true }, { token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
51
- ClrLabel.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClrLabel, selector: "label", inputs: { forAttr: ["for", "forAttr"] }, host: { properties: { "attr.for": "this.forAttr" } }, ngImport: i0 });
71
+ ClrLabel.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClrLabel, selector: "label", inputs: { idInput: ["id", "idInput"], forAttr: ["for", "forAttr"] }, host: { listeners: { "click": "onClick($event)" }, properties: { "attr.id": "this.idAttr", "attr.for": "this.forAttr" } }, queries: [{ propertyName: "signpost", first: true, predicate: ClrSignpost, descendants: true, read: ElementRef }], ngImport: i0 });
52
72
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrLabel, decorators: [{
53
73
  type: Directive,
54
74
  args: [{
@@ -60,11 +80,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
60
80
  type: Optional
61
81
  }] }, { type: i3.NgControlService, decorators: [{
62
82
  type: Optional
63
- }] }, { type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { forAttr: [{
83
+ }] }, { type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { idInput: [{
84
+ type: Input,
85
+ args: ['id']
86
+ }], idAttr: [{
87
+ type: HostBinding,
88
+ args: ['attr.id']
89
+ }], forAttr: [{
64
90
  type: Input,
65
91
  args: ['for']
66
92
  }, {
67
93
  type: HostBinding,
68
94
  args: ['attr.for']
95
+ }], signpost: [{
96
+ type: ContentChild,
97
+ args: [ClrSignpost, { read: ElementRef }]
98
+ }], onClick: [{
99
+ type: HostListener,
100
+ args: ['click', ['$event']]
69
101
  }] } });
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFiZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9mb3Jtcy9jb21tb24vbGFiZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFjLFdBQVcsRUFBRSxLQUFLLEVBQXFCLFFBQVEsRUFBYSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFVbEgsTUFBTSxPQUFPLFFBQVE7SUFNbkIsWUFDc0IsZ0JBQWtDLEVBQ2xDLGFBQTRCLEVBQzVCLGdCQUFrQyxFQUM5QyxRQUFtQixFQUNuQixFQUFnQztRQUpwQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDOUMsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixPQUFFLEdBQUYsRUFBRSxDQUE4QjtRQVJsQyxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztJQVF4QyxDQUFDO0lBRUosSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUM7SUFDcEUsQ0FBQztJQUVELFFBQVE7UUFDTixxRUFBcUU7UUFDckUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ2xELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLG1CQUFtQixDQUFDLENBQUM7U0FDcEU7UUFDRCxpR0FBaUc7UUFDakcsSUFDRSxJQUFJLENBQUMsVUFBVTtZQUNmLElBQUksQ0FBQyxhQUFhO1lBQ2xCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUU7WUFDaEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhO1lBQ3JCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUN0RDtZQUNBLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQzVELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLGNBQWMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1NBQzdGO1FBQ0QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQzFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM5RjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7O3FHQTdDVSxRQUFRO3lGQUFSLFFBQVE7MkZBQVIsUUFBUTtrQkFIcEIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsT0FBTztpQkFDbEI7OzBCQVFJLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUNSLFFBQVE7NkZBUjRCLE9BQU87c0JBQTdDLEtBQUs7dUJBQUMsS0FBSzs7c0JBQUcsV0FBVzt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNi0yMDI0IEJyb2FkY29tLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhlIHRlcm0gXCJCcm9hZGNvbVwiIHJlZmVycyB0byBCcm9hZGNvbSBJbmMuIGFuZC9vciBpdHMgc3Vic2lkaWFyaWVzLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDb250cm9sSWRTZXJ2aWNlIH0gZnJvbSAnLi9wcm92aWRlcnMvY29udHJvbC1pZC5zZXJ2aWNlJztcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuL3Byb3ZpZGVycy9sYXlvdXQuc2VydmljZSc7XG5pbXBvcnQgeyBOZ0NvbnRyb2xTZXJ2aWNlIH0gZnJvbSAnLi9wcm92aWRlcnMvbmctY29udHJvbC5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnbGFiZWwnLFxufSlcbmV4cG9ydCBjbGFzcyBDbHJMYWJlbCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCdmb3InKSBASG9zdEJpbmRpbmcoJ2F0dHIuZm9yJykgZm9yQXR0cjogc3RyaW5nO1xuXG4gIHByaXZhdGUgZW5hYmxlR3JpZCA9IHRydWU7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGNvbnRyb2xJZFNlcnZpY2U6IENvbnRyb2xJZFNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBsYXlvdXRTZXJ2aWNlOiBMYXlvdXRTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgbmdDb250cm9sU2VydmljZTogTmdDb250cm9sU2VydmljZSxcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZjxIVE1MTGFiZWxFbGVtZW50PlxuICApIHt9XG5cbiAgZ2V0IGxhYmVsVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQgJiYgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50O1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gT25seSBhZGQgdGhlIGNsci1jb250cm9sLWxhYmVsIGlmIGl0IGlzIGluc2lkZSBhIGNvbnRyb2wgY29udGFpbmVyXG4gICAgaWYgKHRoaXMuY29udHJvbElkU2VydmljZSB8fCB0aGlzLm5nQ29udHJvbFNlcnZpY2UpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnY2xyLWNvbnRyb2wtbGFiZWwnKTtcbiAgICB9XG4gICAgLy8gT25seSBzZXQgdGhlIGdyaWQgY29sdW1uIGNsYXNzZXMgaWYgd2UgYXJlIGluIHRoZSByaWdodCBjb250ZXh0IGFuZCBpZiB0aGV5IGFyZW4ndCBhbHJlYWR5IHNldFxuICAgIGlmIChcbiAgICAgIHRoaXMuZW5hYmxlR3JpZCAmJlxuICAgICAgdGhpcy5sYXlvdXRTZXJ2aWNlICYmXG4gICAgICAhdGhpcy5sYXlvdXRTZXJ2aWNlLmlzVmVydGljYWwoKSAmJlxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50ICYmXG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lLmluZGV4T2YoJ2Nsci1jb2wnKSA8IDBcbiAgICApIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnY2xyLWNvbC0xMicpO1xuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIGBjbHItY29sLW1kLSR7dGhpcy5sYXlvdXRTZXJ2aWNlLmxhYmVsU2l6ZX1gKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29udHJvbElkU2VydmljZSAmJiAhdGhpcy5mb3JBdHRyKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmNvbnRyb2xJZFNlcnZpY2UuaWRDaGFuZ2Uuc3Vic2NyaWJlKGlkID0+ICh0aGlzLmZvckF0dHIgPSBpZCkpKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgZGlzYWJsZUdyaWQoKSB7XG4gICAgdGhpcy5lbmFibGVHcmlkID0gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFiZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9mb3Jtcy9jb21tb24vbGFiZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQ0wsWUFBWSxFQUNaLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBR0wsUUFBUSxHQUVULE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBUTVDLE1BQU0sT0FBTyxRQUFRO0lBVW5CLFlBQ3NCLGdCQUFrQyxFQUNsQyxhQUE0QixFQUM1QixnQkFBa0MsRUFDOUMsUUFBbUIsRUFDbkIsRUFBZ0M7UUFKcEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQzlDLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsT0FBRSxHQUFGLEVBQUUsQ0FBOEI7UUFSbEMsZUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixrQkFBYSxHQUFtQixFQUFFLENBQUM7SUFReEMsQ0FBQztJQUVKLElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxRQUFRO1FBQ04sNEVBQTRFO1FBQzVFLDBGQUEwRjtRQUMxRixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFFM0IscUVBQXFFO1FBQ3JFLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUNsRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1NBQ3BFO1FBQ0QsaUdBQWlHO1FBQ2pHLElBQ0UsSUFBSSxDQUFDLFVBQVU7WUFDZixJQUFJLENBQUMsYUFBYTtZQUNsQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYTtZQUNyQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFDdEQ7WUFDQSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUM1RCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxjQUFjLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztTQUM3RjtRQUNELElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUMxQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksR0FBRyxFQUFFLFFBQVEsQ0FBQztZQUM5QyxDQUFDLENBQUMsQ0FDSCxDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUVLLE9BQU8sQ0FBQyxLQUFLO1FBQ25CLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU8sOEJBQThCLENBQUMsS0FBSztRQUMxQyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN0RyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDeEI7SUFDSCxDQUFDOztxR0ExRVUsUUFBUTt5RkFBUixRQUFRLG1SQU1MLFdBQVcsMkJBQVUsVUFBVTsyRkFObEMsUUFBUTtrQkFIcEIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsT0FBTztpQkFDbEI7OzBCQVlJLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUNSLFFBQVE7NkZBWkUsT0FBTztzQkFBbkIsS0FBSzt1QkFBQyxJQUFJO2dCQUNhLE1BQU07c0JBQTdCLFdBQVc7dUJBQUMsU0FBUztnQkFFaUIsT0FBTztzQkFBN0MsS0FBSzt1QkFBQyxLQUFLOztzQkFBRyxXQUFXO3VCQUFDLFVBQVU7Z0JBRW9CLFFBQVE7c0JBQWhFLFlBQVk7dUJBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkE0RHZDLE9BQU87c0JBRGQsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjQgQnJvYWRjb20uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGUgdGVybSBcIkJyb2FkY29tXCIgcmVmZXJzIHRvIEJyb2FkY29tIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7XG4gIENvbnRlbnRDaGlsZCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBSZW5kZXJlcjIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IENsclNpZ25wb3N0IH0gZnJvbSAnLi4vLi4vcG9wb3Zlcic7XG5pbXBvcnQgeyBDb250cm9sSWRTZXJ2aWNlIH0gZnJvbSAnLi9wcm92aWRlcnMvY29udHJvbC1pZC5zZXJ2aWNlJztcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuL3Byb3ZpZGVycy9sYXlvdXQuc2VydmljZSc7XG5pbXBvcnQgeyBOZ0NvbnRyb2xTZXJ2aWNlIH0gZnJvbSAnLi9wcm92aWRlcnMvbmctY29udHJvbC5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnbGFiZWwnLFxufSlcbmV4cG9ydCBjbGFzcyBDbHJMYWJlbCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCdpZCcpIGlkSW5wdXQ6IHN0cmluZztcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJykgaWRBdHRyOiBzdHJpbmc7XG5cbiAgQElucHV0KCdmb3InKSBASG9zdEJpbmRpbmcoJ2F0dHIuZm9yJykgZm9yQXR0cjogc3RyaW5nO1xuXG4gIEBDb250ZW50Q2hpbGQoQ2xyU2lnbnBvc3QsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBwcml2YXRlIHNpZ25wb3N0OiBFbGVtZW50UmVmO1xuICBwcml2YXRlIGVuYWJsZUdyaWQgPSB0cnVlO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb250cm9sSWRTZXJ2aWNlOiBDb250cm9sSWRTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgbGF5b3V0U2VydmljZTogTGF5b3V0U2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIG5nQ29udHJvbFNlcnZpY2U6IE5nQ29udHJvbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWY8SFRNTExhYmVsRWxlbWVudD5cbiAgKSB7fVxuXG4gIGdldCBsYWJlbFRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50ICYmIHRoaXMuZWwubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudDtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIFByZXZlbnQgaWQgYXR0cmlidXRlcyBmcm9tIGJlaW5nIHJlbW92ZWQgYnkgdGhlIGB1bmRlZmluZWRgIGhvc3QgYmluZGluZy5cbiAgICAvLyBUaGlzIGhhcHBlbnMgd2hlbiBhIGBsYWJlbGAgaXMgdXNlZCBvdXRzaWRlIG9mIGEgY29udHJvbCBjb250YWluZXIgYW5kIG90aGVyIHVzZSBjYXNlcy5cbiAgICB0aGlzLmlkQXR0ciA9IHRoaXMuaWRJbnB1dDtcblxuICAgIC8vIE9ubHkgYWRkIHRoZSBjbHItY29udHJvbC1sYWJlbCBpZiBpdCBpcyBpbnNpZGUgYSBjb250cm9sIGNvbnRhaW5lclxuICAgIGlmICh0aGlzLmNvbnRyb2xJZFNlcnZpY2UgfHwgdGhpcy5uZ0NvbnRyb2xTZXJ2aWNlKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ2Nsci1jb250cm9sLWxhYmVsJyk7XG4gICAgfVxuICAgIC8vIE9ubHkgc2V0IHRoZSBncmlkIGNvbHVtbiBjbGFzc2VzIGlmIHdlIGFyZSBpbiB0aGUgcmlnaHQgY29udGV4dCBhbmQgaWYgdGhleSBhcmVuJ3QgYWxyZWFkeSBzZXRcbiAgICBpZiAoXG4gICAgICB0aGlzLmVuYWJsZUdyaWQgJiZcbiAgICAgIHRoaXMubGF5b3V0U2VydmljZSAmJlxuICAgICAgIXRoaXMubGF5b3V0U2VydmljZS5pc1ZlcnRpY2FsKCkgJiZcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudCAmJlxuICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZS5pbmRleE9mKCdjbHItY29sJykgPCAwXG4gICAgKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ2Nsci1jb2wtMTInKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbC5uYXRpdmVFbGVtZW50LCBgY2xyLWNvbC1tZC0ke3RoaXMubGF5b3V0U2VydmljZS5sYWJlbFNpemV9YCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbnRyb2xJZFNlcnZpY2UgJiYgIXRoaXMuZm9yQXR0cikge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgIHRoaXMuY29udHJvbElkU2VydmljZS5pZENoYW5nZS5zdWJzY3JpYmUoaWQgPT4ge1xuICAgICAgICAgIHRoaXMuZm9yQXR0ciA9IGlkO1xuICAgICAgICAgIHRoaXMuaWRBdHRyID0gdGhpcy5pZElucHV0IHx8IGAke2lkfS1sYWJlbGA7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YiA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBkaXNhYmxlR3JpZCgpIHtcbiAgICB0aGlzLmVuYWJsZUdyaWQgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvd2luZyBzaWducG9zdHMgaW5zaWRlIGxhYmVscyB0byB3b3JrIHdpdGhvdXQgZGlzYWJsaW5nIGRlZmF1bHQgYmVoYXZpb3IuIDxsYWJlbD4gaXMgc3ByZWFkaW5nIGEgY2xpY2sgZXZlbnQgdG8gaXRzIGNoaWxkcmVuIHNvIHNpZ25wb3N0cyBnZXRcbiAgICogYXV0b21hdGljYWxseSBjbG9zZWQgb25jZSBjbGlja2VkIGluc2lkZSBhIDxsYWJlbD4uXG4gICAqIEBwYXJhbSBldmVudFxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICBwcml2YXRlIG9uQ2xpY2soZXZlbnQpIHtcbiAgICB0aGlzLnByZXZlbnREZWZhdWx0T25TaWducG9zdFRhcmdldChldmVudCk7XG4gIH1cblxuICBwcml2YXRlIHByZXZlbnREZWZhdWx0T25TaWducG9zdFRhcmdldChldmVudCkge1xuICAgIGlmICh0aGlzLnNpZ25wb3N0ICYmIHRoaXMuc2lnbnBvc3QubmF0aXZlRWxlbWVudCAmJiB0aGlzLnNpZ25wb3N0Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -13,6 +13,9 @@ export class NgControlService {
13
13
  this._controlChanges = new Subject();
14
14
  this._helpers = new Subject();
15
15
  }
16
+ get control() {
17
+ return this._control;
18
+ }
16
19
  get controlChanges() {
17
20
  return this._controlChanges.asObservable();
18
21
  }
@@ -20,6 +23,7 @@ export class NgControlService {
20
23
  return this._helpers.asObservable();
21
24
  }
22
25
  setControl(control) {
26
+ this._control = control;
23
27
  this._controlChanges.next(control);
24
28
  }
25
29
  setHelpers(state) {
@@ -31,4 +35,4 @@ NgControlService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", ver
31
35
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: NgControlService, decorators: [{
32
36
  type: Injectable
33
37
  }] });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctY29udHJvbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvZm9ybXMvY29tbW9uL3Byb3ZpZGVycy9uZy1jb250cm9sLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBVTNDLE1BQU0sT0FBTyxnQkFBZ0I7SUFEN0I7UUFFRSxvR0FBb0c7UUFDNUYsb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBYSxDQUFDO1FBRTNDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO0tBaUIzQztJQWZDLElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQWtCO1FBQzNCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBYztRQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDOzs2R0FwQlUsZ0JBQWdCO2lIQUFoQixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyNCBCcm9hZGNvbS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFRoZSB0ZXJtIFwiQnJvYWRjb21cIiByZWZlcnMgdG8gQnJvYWRjb20gSW5jLiBhbmQvb3IgaXRzIHN1YnNpZGlhcmllcy5cbiAqIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEhlbHBlcnMge1xuICBzaG93PzogYm9vbGVhbjtcbiAgc2hvd0ludmFsaWQ/OiBib29sZWFuO1xuICBzaG93VmFsaWQ/OiBib29sZWFuO1xuICBzaG93SGVscGVyPzogYm9vbGVhbjtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5nQ29udHJvbFNlcnZpY2Uge1xuICAvLyBPYnNlcnZhYmxlIHRvIHN1YnNjcmliZSB0byB0aGUgY29udHJvbCwgc2luY2UgaXRzIG5vdCBhdmFpbGFibGUgaW1tZWRpYXRlbHkgZm9yIHByb2plY3RlZCBjb250ZW50XG4gIHByaXZhdGUgX2NvbnRyb2xDaGFuZ2VzID0gbmV3IFN1YmplY3Q8TmdDb250cm9sPigpO1xuXG4gIHByaXZhdGUgX2hlbHBlcnMgPSBuZXcgU3ViamVjdDxIZWxwZXJzPigpO1xuXG4gIGdldCBjb250cm9sQ2hhbmdlcygpOiBPYnNlcnZhYmxlPE5nQ29udHJvbD4ge1xuICAgIHJldHVybiB0aGlzLl9jb250cm9sQ2hhbmdlcy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBoZWxwZXJzQ2hhbmdlKCk6IE9ic2VydmFibGU8SGVscGVycz4ge1xuICAgIHJldHVybiB0aGlzLl9oZWxwZXJzLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgc2V0Q29udHJvbChjb250cm9sOiBOZ0NvbnRyb2wpIHtcbiAgICB0aGlzLl9jb250cm9sQ2hhbmdlcy5uZXh0KGNvbnRyb2wpO1xuICB9XG5cbiAgc2V0SGVscGVycyhzdGF0ZTogSGVscGVycykge1xuICAgIHRoaXMuX2hlbHBlcnMubmV4dChzdGF0ZSk7XG4gIH1cbn1cbiJdfQ==
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctY29udHJvbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvZm9ybXMvY29tbW9uL3Byb3ZpZGVycy9uZy1jb250cm9sLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBVTNDLE1BQU0sT0FBTyxnQkFBZ0I7SUFEN0I7UUFJRSxvR0FBb0c7UUFDNUYsb0JBQWUsR0FBRyxJQUFJLE9BQU8sRUFBYSxDQUFDO1FBRTNDLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO0tBc0IzQztJQXBCQyxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQWtCO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBYztRQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDOzs2R0EzQlUsZ0JBQWdCO2lIQUFoQixnQkFBZ0I7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyNCBCcm9hZGNvbS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFRoZSB0ZXJtIFwiQnJvYWRjb21cIiByZWZlcnMgdG8gQnJvYWRjb20gSW5jLiBhbmQvb3IgaXRzIHN1YnNpZGlhcmllcy5cbiAqIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEhlbHBlcnMge1xuICBzaG93PzogYm9vbGVhbjtcbiAgc2hvd0ludmFsaWQ/OiBib29sZWFuO1xuICBzaG93VmFsaWQ/OiBib29sZWFuO1xuICBzaG93SGVscGVyPzogYm9vbGVhbjtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5nQ29udHJvbFNlcnZpY2Uge1xuICBwcml2YXRlIF9jb250cm9sOiBOZ0NvbnRyb2w7XG5cbiAgLy8gT2JzZXJ2YWJsZSB0byBzdWJzY3JpYmUgdG8gdGhlIGNvbnRyb2wsIHNpbmNlIGl0cyBub3QgYXZhaWxhYmxlIGltbWVkaWF0ZWx5IGZvciBwcm9qZWN0ZWQgY29udGVudFxuICBwcml2YXRlIF9jb250cm9sQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PE5nQ29udHJvbD4oKTtcblxuICBwcml2YXRlIF9oZWxwZXJzID0gbmV3IFN1YmplY3Q8SGVscGVycz4oKTtcblxuICBnZXQgY29udHJvbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29udHJvbDtcbiAgfVxuXG4gIGdldCBjb250cm9sQ2hhbmdlcygpOiBPYnNlcnZhYmxlPE5nQ29udHJvbD4ge1xuICAgIHJldHVybiB0aGlzLl9jb250cm9sQ2hhbmdlcy5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBoZWxwZXJzQ2hhbmdlKCk6IE9ic2VydmFibGU8SGVscGVycz4ge1xuICAgIHJldHVybiB0aGlzLl9oZWxwZXJzLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgc2V0Q29udHJvbChjb250cm9sOiBOZ0NvbnRyb2wpIHtcbiAgICB0aGlzLl9jb250cm9sID0gY29udHJvbDtcbiAgICB0aGlzLl9jb250cm9sQ2hhbmdlcy5uZXh0KGNvbnRyb2wpO1xuICB9XG5cbiAgc2V0SGVscGVycyhzdGF0ZTogSGVscGVycykge1xuICAgIHRoaXMuX2hlbHBlcnMubmV4dChzdGF0ZSk7XG4gIH1cbn1cbiJdfQ==
@@ -66,7 +66,7 @@ ClrDatalistContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", v
66
66
  <ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
67
67
  <ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
68
68
  </div>
69
- `, isInline: true, dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.ClrLabel, selector: "label", inputs: ["for"] }, { kind: "directive", type: i8.CdsIconCustomTag, selector: "cds-icon" }] });
69
+ `, isInline: true, dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.ClrLabel, selector: "label", inputs: ["id", "for"] }, { kind: "directive", type: i8.CdsIconCustomTag, selector: "cds-icon" }] });
70
70
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrDatalistContainer, decorators: [{
71
71
  type: Component,
72
72
  args: [{