desy-angular 5.1.1 → 5.2.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 (117) hide show
  1. package/bundles/desy-angular.umd.js +214 -694
  2. package/bundles/desy-angular.umd.js.map +1 -1
  3. package/bundles/desy-angular.umd.min.js +2 -2
  4. package/bundles/desy-angular.umd.min.js.map +1 -1
  5. package/desy-angular.d.ts +15 -15
  6. package/desy-angular.metadata.json +1 -1
  7. package/esm2015/desy-angular.js +16 -16
  8. package/esm2015/lib/desy-buttons/components/dropdown/dropdown.component.js +2 -2
  9. package/esm2015/lib/desy-buttons/components/listbox/listbox.component.js +2 -24
  10. package/esm2015/lib/desy-buttons/components/pill/pill.component.js +1 -1
  11. package/esm2015/lib/desy-forms/components/character-count/character-count.component.js +2 -17
  12. package/esm2015/lib/desy-forms/components/checkboxes/checkbox-item/checkbox-item.component.js +1 -4
  13. package/esm2015/lib/desy-forms/components/checkboxes/checkboxes.component.js +1 -10
  14. package/esm2015/lib/desy-forms/components/date-input/date-input-day/date-input-day.component.js +1 -9
  15. package/esm2015/lib/desy-forms/components/date-input/date-input-month/date-input-month.component.js +1 -9
  16. package/esm2015/lib/desy-forms/components/date-input/date-input-year/date-input-year.component.js +1 -9
  17. package/esm2015/lib/desy-forms/components/date-input/date-input.component.js +2 -15
  18. package/esm2015/lib/desy-forms/components/file-upload/file-upload.component.js +1 -15
  19. package/esm2015/lib/desy-forms/components/input/input.component.js +12 -16
  20. package/esm2015/lib/desy-forms/components/input-group/input-group-input/input-group-input.component.js +1 -9
  21. package/esm2015/lib/desy-forms/components/input-group/input-group-select/input-group-select.component.js +1 -9
  22. package/esm2015/lib/desy-forms/components/input-group/input-group.component.js +9 -20
  23. package/esm2015/lib/desy-forms/components/radios/radio-item/radio-item.component.js +1 -4
  24. package/esm2015/lib/desy-forms/components/radios/radios.component.js +1 -10
  25. package/esm2015/lib/desy-forms/components/search-bar/search-bar.component.js +1 -17
  26. package/esm2015/lib/desy-forms/components/select/select.component.js +9 -19
  27. package/esm2015/lib/desy-forms/components/textarea/textarea.component.js +3 -15
  28. package/esm2015/lib/desy-forms/components/tree/tree-item/tree-item.component.js +7 -2
  29. package/esm2015/lib/desy-forms/components/tree/tree.component.js +28 -16
  30. package/esm2015/lib/desy-forms/directives/condition.directive.js +2 -5
  31. package/esm2015/lib/desy-modals/components/dialog/dialog.component.js +1 -7
  32. package/esm2015/lib/desy-modals/components/modal/modal.component.js +2 -13
  33. package/esm2015/lib/desy-modals/services/dialog.service.js +8 -9
  34. package/esm2015/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.js +2 -8
  35. package/esm2015/lib/desy-nav/components/error-summary/error-summary.component.js +4 -10
  36. package/esm2015/lib/desy-nav/components/footer/footer.component.js +2 -2
  37. package/esm2015/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.js +1 -4
  38. package/esm2015/lib/desy-nav/components/header/header-navigation/header-navigation.component.js +1 -4
  39. package/esm2015/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component.js +2 -5
  40. package/esm2015/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.js +2 -5
  41. package/esm2015/lib/desy-nav/components/header/header-subnav/header-subnav.component.js +2 -5
  42. package/esm2015/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.js +2 -15
  43. package/esm2015/lib/desy-nav/components/menu-vertical/menu-vertical.component.js +2 -17
  44. package/esm2015/lib/desy-nav/components/menubar/menubar.component.js +2 -14
  45. package/esm2015/lib/desy-nav/components/nav/nav.component.js +7 -18
  46. package/esm2015/lib/desy-nav/components/notification/notification.component.js +2 -10
  47. package/esm2015/lib/desy-nav/components/skip-link/skip-link.component.js +2 -11
  48. package/esm2015/lib/desy-pagination/components/pagination/pagination.component.js +2 -11
  49. package/esm2015/lib/desy-tables/components/table/table.component.js +2 -14
  50. package/esm2015/lib/desy-tables/components/table-advanced/table-advanced.component.js +2 -5
  51. package/esm2015/lib/desy-views/components/accordion/accordion.component.js +2 -13
  52. package/esm2015/lib/desy-views/components/alert/alert.component.js +1 -7
  53. package/esm2015/lib/desy-views/components/collapsible/collapsible.component.js +3 -10
  54. package/esm2015/lib/desy-views/components/description-list/description-list.component.js +2 -8
  55. package/esm2015/lib/desy-views/components/details/details.component.js +1 -12
  56. package/esm2015/lib/desy-views/components/item/item.component.js +3 -13
  57. package/esm2015/lib/desy-views/components/media-object/media-object-figure/media-object-figure.component.js +11 -0
  58. package/esm2015/lib/desy-views/components/media-object/media-object.component.js +17 -12
  59. package/esm2015/lib/desy-views/components/status/status.component.js +3 -11
  60. package/esm2015/lib/desy-views/components/status-item/status-item.component.js +2 -10
  61. package/esm2015/lib/desy-views/components/tabs/tabs.component.js +6 -18
  62. package/esm2015/lib/desy-views/components/tooltip/tooltip.component.js +2 -10
  63. package/esm2015/lib/desy-views/desy-views.module.js +4 -1
  64. package/esm2015/lib/desy-views/services/alert.service.js +8 -9
  65. package/esm2015/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.js +1 -1
  66. package/esm2015/lib/shared/components/text-or-html-required/text-or-html-required.component.js +1 -13
  67. package/esm2015/lib/shared/shared.module.js +1 -4
  68. package/esm2015/lib/shared/utils/search-utils.js +22 -1
  69. package/fesm2015/desy-angular.js +161 -618
  70. package/fesm2015/desy-angular.js.map +1 -1
  71. package/lib/desy-forms/components/character-count/character-count.component.d.ts +0 -1
  72. package/lib/desy-forms/components/date-input/date-input-day/date-input-day.component.d.ts +2 -3
  73. package/lib/desy-forms/components/date-input/date-input-month/date-input-month.component.d.ts +2 -3
  74. package/lib/desy-forms/components/date-input/date-input-year/date-input-year.component.d.ts +2 -3
  75. package/lib/desy-forms/components/date-input/date-input.component.d.ts +2 -4
  76. package/lib/desy-forms/components/file-upload/file-upload.component.d.ts +1 -4
  77. package/lib/desy-forms/components/input/input.component.d.ts +3 -2
  78. package/lib/desy-forms/components/input-group/input-group-input/input-group-input.component.d.ts +2 -3
  79. package/lib/desy-forms/components/input-group/input-group-select/input-group-select.component.d.ts +2 -3
  80. package/lib/desy-forms/components/input-group/input-group.component.d.ts +4 -2
  81. package/lib/desy-forms/components/search-bar/search-bar.component.d.ts +2 -5
  82. package/lib/desy-forms/components/select/select.component.d.ts +5 -5
  83. package/lib/desy-forms/components/textarea/textarea.component.d.ts +2 -3
  84. package/lib/desy-forms/components/tree/tree-item/tree-item.component.d.ts +2 -0
  85. package/lib/desy-forms/components/tree/tree.component.d.ts +6 -1
  86. package/lib/desy-forms/directives/condition.directive.d.ts +2 -2
  87. package/lib/desy-modals/components/modal/modal.component.d.ts +2 -4
  88. package/lib/desy-nav/components/breadcrumbs/breadcrumbs.component.d.ts +0 -1
  89. package/lib/desy-nav/components/error-summary/error-summary.component.d.ts +0 -1
  90. package/lib/desy-nav/components/header/header-dropdown/header-dropdown.component.d.ts +0 -1
  91. package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas-button/header-offcanvas-button.component.d.ts +0 -1
  92. package/lib/desy-nav/components/header/header-offcanvas/header-offcanvas.component.d.ts +0 -1
  93. package/lib/desy-nav/components/header/header-subnav/header-subnav.component.d.ts +0 -1
  94. package/lib/desy-nav/components/menu-horizontal/menu-horizontal.component.d.ts +2 -4
  95. package/lib/desy-nav/components/menu-vertical/menu-vertical.component.d.ts +0 -2
  96. package/lib/desy-nav/components/menubar/menubar.component.d.ts +0 -1
  97. package/lib/desy-nav/components/nav/nav.component.d.ts +3 -4
  98. package/lib/desy-nav/components/notification/notification.component.d.ts +2 -4
  99. package/lib/desy-nav/components/skip-link/skip-link.component.d.ts +0 -1
  100. package/lib/desy-tables/components/table/table.component.d.ts +0 -1
  101. package/lib/desy-tables/components/table-advanced/table-advanced.component.d.ts +0 -1
  102. package/lib/desy-views/components/accordion/accordion.component.d.ts +2 -4
  103. package/lib/desy-views/components/collapsible/collapsible.component.d.ts +2 -3
  104. package/lib/desy-views/components/description-list/description-list.component.d.ts +0 -1
  105. package/lib/desy-views/components/details/details.component.d.ts +1 -5
  106. package/lib/desy-views/components/item/item.component.d.ts +2 -5
  107. package/lib/desy-views/components/media-object/media-object-figure/media-object-figure.component.d.ts +3 -0
  108. package/lib/desy-views/components/media-object/media-object.component.d.ts +7 -4
  109. package/lib/desy-views/components/status/status.component.d.ts +1 -3
  110. package/lib/desy-views/components/status-item/status-item.component.d.ts +2 -4
  111. package/lib/desy-views/components/tabs/tabs.component.d.ts +2 -4
  112. package/lib/desy-views/components/tooltip/tooltip.component.d.ts +2 -4
  113. package/lib/shared/components/accessibility-and-text-or-html-required/accessibility-and-text-or-html-required.component.d.ts +1 -3
  114. package/lib/shared/components/text-or-html-required/text-or-html-required.component.d.ts +3 -11
  115. package/package.json +1 -1
  116. package/esm2015/lib/shared/directives/content-empty.directive.js +0 -86
  117. package/lib/shared/directives/content-empty.directive.d.ts +0 -26
@@ -1,4 +1,4 @@
1
- import { Component, forwardRef, Input, ContentChildren } from '@angular/core';
1
+ import { Component, forwardRef, Input, ContentChildren, HostBinding } from '@angular/core';
2
2
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
3
  import { FormFieldComponent } from '../form-field/form-field.component';
4
4
  import { OptionGroupComponent } from './option-group/option-group.component';
@@ -6,13 +6,12 @@ import { SelectItemComponent } from './select-item/select-item.component';
6
6
  export class SelectComponent extends FormFieldComponent {
7
7
  constructor() {
8
8
  super(...arguments);
9
+ // form group class - asignar clases a la etiqueta desy-select
10
+ this.cfg = true;
9
11
  this.contentInit = false;
10
12
  }
11
- ngOnInit() {
12
- this.checkRequiredParams();
13
- }
14
13
  ngOnChanges(changes) {
15
- this.checkRequiredParams();
14
+ this.cfgr = (this.hasErrorsMessage() || this.formGroupClasses === 'c-form-group--error');
16
15
  }
17
16
  ngAfterContentInit() {
18
17
  this.contentInit = true;
@@ -30,19 +29,8 @@ export class SelectComponent extends FormFieldComponent {
30
29
  }
31
30
  getItems() {
32
31
  const items = (this.itemComponents.length > 0) ? this.itemComponents.toArray() : this.items;
33
- if (this.contentInit && (!items || items.length === 0)) {
34
- throw new Error(`items are required`);
35
- }
36
32
  return items;
37
33
  }
38
- checkRequiredParams() {
39
- if (!this.id) {
40
- throw Error('id is required');
41
- }
42
- if (!this.name) {
43
- throw Error('name is required');
44
- }
45
- }
46
34
  isItemSelected(item) {
47
35
  return this.value ? this.value === item.value : item.selected;
48
36
  }
@@ -53,7 +41,7 @@ export class SelectComponent extends FormFieldComponent {
53
41
  SelectComponent.decorators = [
54
42
  { type: Component, args: [{
55
43
  selector: 'desy-select',
56
- template: "<div [class]=\"['c-form-group', this.formGroupClasses] | makeHtmlList\"\r\n [ngClass]=\"{'c-form-group--error': hasErrorsMessage()}\">\r\n <ng-container *ngIf=\"labelComponent\">\r\n <ng-content select=\"desy-label\"></ng-content>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"labelRef\"></ng-container>\r\n <desy-label *ngIf=\"!labelRef && labelData && !labelComponent\"\r\n [text]=\"labelData.text\"\r\n [html]=\"labelData.html\"\r\n [classes]=\"labelData.classes\"\r\n [isPageHeading]=\"labelData.isPageHeading\"\r\n [for]=\"id\"\r\n [role]=\"labelData.role\"\r\n [ariaLabel]=\"labelData.ariaLabel\"\r\n [ariaDescribedBy]=\"labelData.ariaDescribedBy\"\r\n [ariaLabelledBy]=\"labelData.ariaLabelledBy\"\r\n [ariaHidden]=\"labelData.ariaHidden\"\r\n [ariaDisabled]=\"labelData.ariaDisabled\"\r\n [ariaControls]=\"labelData.ariaControls\"\r\n [ariaCurrent]=\"labelData.ariaCurrent\"\r\n [ariaLive]=\"labelData.ariaLive\"\r\n [ariaExpanded]=\"labelData.ariaExpanded\"\r\n [ariaErrorMessage]=\"labelData.ariaErrorMessage\"\r\n [ariaHasPopup]=\"labelData.ariaHasPopup\"\r\n [tabindex]=\"labelData.tabindex\"></desy-label>\r\n <desy-label *ngIf=\"!labelRef && !labelData && labelText && !labelComponent\" [text]=\"labelText\" [for]=\"id\"></desy-label>\r\n <ng-container *ngTemplateOutlet=\"hintRef\"></ng-container>\r\n <ng-container *ngIf=\"hintComponent\">\r\n <ng-content select=\"desy-hint\"></ng-content>\r\n</ng-container>\r\n <desy-hint *ngIf=\"!hintRef && hintData && !hintComponent\"\r\n [id]=\"getHintId()\"\r\n [text]=\"hintData.text\"\r\n [html]=\"hintData.html\"\r\n [classes]=\"hintData.classes\"\r\n [role]=\"hintData.role\"\r\n [ariaLabel]=\"hintData.ariaLabel\"\r\n [ariaDescribedBy]=\"hintData.ariaDescribedBy\"\r\n [ariaLabelledBy]=\"hintData.ariaLabelledBy\"\r\n [ariaHidden]=\"hintData.ariaHidden\"\r\n [ariaDisabled]=\"hintData.ariaDisabled\"\r\n [ariaControls]=\"hintData.ariaControls\"\r\n [ariaCurrent]=\"hintData.ariaCurrent\"\r\n [ariaLive]=\"hintData.ariaLive\"\r\n [ariaExpanded]=\"hintData.ariaExpanded\"\r\n [ariaErrorMessage]=\"hintData.ariaErrorMessage\"\r\n [ariaHasPopup]=\"hintData.ariaHasPopup\"\r\n [tabindex]=\"hintData.tabindex\"></desy-hint>\r\n <desy-hint *ngIf=\"!hintRef && !hintData && hintText && !hintComponent\" [text]=\"hintText\" [id]=\"getHintId()\"></desy-hint>\r\n\r\n <ng-container *ngIf=\"errorMessageComponent\">\r\n <ng-content select=\"desy-error-message\"></ng-content>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"errorMessageRef\"></ng-container>\r\n <desy-error-message *ngIf=\"!errorMessageRef && errorMessageData && !errorMessageComponent\"\r\n [id]=\"getErrorId()\"\r\n [text]=\"errorMessageData.text\"\r\n [html]=\"errorMessageData.html\"\r\n [classes]=\"errorMessageData.classes\"\r\n [visuallyHiddenText]=\"errorMessageData.visuallyHiddenText\"\r\n [role]=\"errorMessageData.role\"\r\n [ariaLabel]=\"errorMessageData.ariaLabel\"\r\n [ariaDescribedBy]=\"errorMessageData.ariaDescribedBy\"\r\n [ariaLabelledBy]=\"errorMessageData.ariaLabelledBy\"\r\n [ariaHidden]=\"errorMessageData.ariaHidden\"\r\n [ariaDisabled]=\"errorMessageData.ariaDisabled\"\r\n [ariaControls]=\"errorMessageData.ariaControls\"\r\n [ariaCurrent]=\"errorMessageData.ariaCurrent\"\r\n [ariaLive]=\"errorMessageData.ariaLive\"\r\n [ariaExpanded]=\"errorMessageData.ariaExpanded\"\r\n [ariaErrorMessage]=\"errorMessageData.ariaErrorMessage\"\r\n [ariaHasPopup]=\"errorMessageData.ariaHasPopup\"\r\n [tabindex]=\"errorMessageData.tabindex\"></desy-error-message>\r\n <desy-error-message *ngIf=\"!errorMessageRef && !errorMessageData && !errorMessageComponent && errorMessageText\"\r\n [text]=\"errorMessageText\" [id]=\"getErrorId()\"></desy-error-message>\r\n <select\r\n [class]=\"['c-select block mt-sm transition duration-150 ease-in-out border-black rounded font-semibold focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-warning-base disabled:bg-neutral-light disabled:border-neutral-base',\r\n classes,\r\n hasErrorsMessage() ? 'c-select--error border-alert-base ring-2 ring-alert-base' : null] | makeHtmlList\"\r\n [value]=\"value\" (input)=\"onInput($event.target.value)\"\r\n [attr.id]=\"id ? id : null\"\r\n [attr.name]=\"name ? name : null\"\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"[describedBy, getHintId(), getErrorId()] | makeHtmlList:null\"\r\n [attr.aria-errormessage]=\"hasErrorsMessage() ? getErrorId() : null\"\r\n [attr.aria-invalid]=\"hasErrorsMessage() ? true : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\"\r\n [disabled]=disabled>\r\n\r\n <ng-container *ngFor=\"let item of getItems()\">\r\n <optgroup *ngIf=\"isOptionGroup(item)\" [label]=\"item.label\" [attr.disabled]=\"item.disabled ? true : null\"\r\n [attr.role]=\"item?.role\"\r\n [attr.aria-label]=\"item?.ariaLabel\"\r\n [attr.aria-describedby]=\"item?.describedBy\"\r\n [attr.aria-labelledby]=\"item?.ariaLabelledBy\"\r\n [attr.aria-hidden]=\"item?.ariaHidden\"\r\n [attr.aria-disabled]=\"item?.ariaDisabled\"\r\n [attr.aria-controls]=\"item?.ariaControls\"\r\n [attr.aria-current]=\"item?.ariaCurrent\"\r\n [attr.aria-live]=\"item?.ariaLive\"\r\n [attr.aria-expanded]=\"item?.ariaExpanded\"\r\n [attr.aria-errormessage]=\"item?.ariaErrorMessage\"\r\n [attr.aria-haspopup]=\"item?.ariaHasPopup\"\r\n [attr.tabindex]=\"item?.tabindex\">>\r\n <option *ngFor=\"let subItem of item.items\"\r\n [value]=\"subItem.value\"\r\n [disabled]=\"subItem.disabled\"\r\n [selected]=\"isItemSelected(subItem)\"\r\n [attr.hidden]=\"subItem.hidden\"\r\n [attr.role]=\"subItem?.role\"\r\n [attr.aria-label]=\"subItem?.ariaLabel\"\r\n [attr.aria-describedby]=\"subItem?.describedBy\"\r\n [attr.aria-labelledby]=\"subItem?.ariaLabelledBy\"\r\n [attr.aria-hidden]=\"subItem?.ariaHidden\"\r\n [attr.aria-disabled]=\"subItem?.ariaDisabled\"\r\n [attr.aria-controls]=\"subItem?.ariaControls\"\r\n [attr.aria-current]=\"subItem?.ariaCurrent\"\r\n [attr.aria-live]=\"subItem?.ariaLive\"\r\n [attr.aria-expanded]=\"subItem?.ariaExpanded\"\r\n [attr.aria-errormessage]=\"subItem?.ariaErrorMessage\"\r\n [attr.aria-haspopup]=\"subItem?.ariaHasPopup\"\r\n [attr.tabindex]=\"subItem?.tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{ component: subItem, text: subItem.text }\"></ng-container>\r\n </option>\r\n </optgroup>\r\n <option *ngIf=\"!isOptionGroup(item)\" [value]=\"item.value\" [disabled]=\"item.disabled ? true : null\" [selected]=\"isItemSelected(item)\"\r\n [attr.hidden]=\"item.hidden\"\r\n [attr.role]=\"item.role ? item.role : null\"\r\n [attr.aria-label]=\"item.ariaLabel ? item.ariaLabel : null\"\r\n [attr.aria-describedby]=\"item.describedBy ? item.describedBy : ariaDescribedBy\"\r\n [attr.aria-labelledby]=\"item.ariaLabelledBy ? item.ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"item.ariaHidden ? item.ariaHidden : null\"\r\n [attr.aria-disabled]=\"item.ariaDisabled ? item.ariaDisabled : null\"\r\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\r\n [attr.aria-current]=\"item.ariaCurrent ? item.ariaCurrent : null\"\r\n [attr.aria-live]=\"item.ariaLive ? item.ariaLive : null\"\r\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup ? item.ariaHasPopup : null\"\r\n [attr.tabindex]=\"item.tabindex ? item.tabindex : null\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, text: item.text }\"></ng-container>\r\n </option>\r\n </ng-container>\r\n </select>\r\n</div>\r\n",
44
+ template: "\r\n <ng-container *ngIf=\"labelComponent\">\r\n <ng-content select=\"desy-label\"></ng-content>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"labelRef\"></ng-container>\r\n <desy-label *ngIf=\"!labelRef && labelData && !labelComponent\"\r\n [text]=\"labelData.text\"\r\n [html]=\"labelData.html\"\r\n [classes]=\"labelData.classes\"\r\n [isPageHeading]=\"labelData.isPageHeading\"\r\n [for]=\"id\"\r\n [role]=\"labelData.role\"\r\n [ariaLabel]=\"labelData.ariaLabel\"\r\n [ariaDescribedBy]=\"labelData.ariaDescribedBy\"\r\n [ariaLabelledBy]=\"labelData.ariaLabelledBy\"\r\n [ariaHidden]=\"labelData.ariaHidden\"\r\n [ariaDisabled]=\"labelData.ariaDisabled\"\r\n [ariaControls]=\"labelData.ariaControls\"\r\n [ariaCurrent]=\"labelData.ariaCurrent\"\r\n [ariaLive]=\"labelData.ariaLive\"\r\n [ariaExpanded]=\"labelData.ariaExpanded\"\r\n [ariaErrorMessage]=\"labelData.ariaErrorMessage\"\r\n [ariaHasPopup]=\"labelData.ariaHasPopup\"\r\n [tabindex]=\"labelData.tabindex\"></desy-label>\r\n <desy-label *ngIf=\"!labelRef && !labelData && labelText && !labelComponent\" [text]=\"labelText\" [for]=\"id\"></desy-label>\r\n <ng-container *ngTemplateOutlet=\"hintRef\"></ng-container>\r\n <ng-container *ngIf=\"hintComponent\">\r\n <ng-content select=\"desy-hint\"></ng-content>\r\n</ng-container>\r\n <desy-hint *ngIf=\"!hintRef && hintData && !hintComponent\"\r\n [id]=\"getHintId()\"\r\n [text]=\"hintData.text\"\r\n [html]=\"hintData.html\"\r\n [classes]=\"hintData.classes\"\r\n [role]=\"hintData.role\"\r\n [ariaLabel]=\"hintData.ariaLabel\"\r\n [ariaDescribedBy]=\"hintData.ariaDescribedBy\"\r\n [ariaLabelledBy]=\"hintData.ariaLabelledBy\"\r\n [ariaHidden]=\"hintData.ariaHidden\"\r\n [ariaDisabled]=\"hintData.ariaDisabled\"\r\n [ariaControls]=\"hintData.ariaControls\"\r\n [ariaCurrent]=\"hintData.ariaCurrent\"\r\n [ariaLive]=\"hintData.ariaLive\"\r\n [ariaExpanded]=\"hintData.ariaExpanded\"\r\n [ariaErrorMessage]=\"hintData.ariaErrorMessage\"\r\n [ariaHasPopup]=\"hintData.ariaHasPopup\"\r\n [tabindex]=\"hintData.tabindex\"></desy-hint>\r\n <desy-hint *ngIf=\"!hintRef && !hintData && hintText && !hintComponent\" [text]=\"hintText\" [id]=\"getHintId()\"></desy-hint>\r\n\r\n <ng-container *ngIf=\"errorMessageComponent\">\r\n <ng-content select=\"desy-error-message\"></ng-content>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"errorMessageRef\"></ng-container>\r\n <desy-error-message *ngIf=\"!errorMessageRef && errorMessageData && !errorMessageComponent\"\r\n [id]=\"getErrorId()\"\r\n [text]=\"errorMessageData.text\"\r\n [html]=\"errorMessageData.html\"\r\n [classes]=\"errorMessageData.classes\"\r\n [visuallyHiddenText]=\"errorMessageData.visuallyHiddenText\"\r\n [role]=\"errorMessageData.role\"\r\n [ariaLabel]=\"errorMessageData.ariaLabel\"\r\n [ariaDescribedBy]=\"errorMessageData.ariaDescribedBy\"\r\n [ariaLabelledBy]=\"errorMessageData.ariaLabelledBy\"\r\n [ariaHidden]=\"errorMessageData.ariaHidden\"\r\n [ariaDisabled]=\"errorMessageData.ariaDisabled\"\r\n [ariaControls]=\"errorMessageData.ariaControls\"\r\n [ariaCurrent]=\"errorMessageData.ariaCurrent\"\r\n [ariaLive]=\"errorMessageData.ariaLive\"\r\n [ariaExpanded]=\"errorMessageData.ariaExpanded\"\r\n [ariaErrorMessage]=\"errorMessageData.ariaErrorMessage\"\r\n [ariaHasPopup]=\"errorMessageData.ariaHasPopup\"\r\n [tabindex]=\"errorMessageData.tabindex\"></desy-error-message>\r\n <desy-error-message *ngIf=\"!errorMessageRef && !errorMessageData && !errorMessageComponent && errorMessageText\"\r\n [text]=\"errorMessageText\" [id]=\"getErrorId()\"></desy-error-message>\r\n <select\r\n [class]=\"['c-select block mt-sm transition duration-150 ease-in-out border-black rounded font-semibold focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-warning-base disabled:bg-neutral-light disabled:border-neutral-base',\r\n classes,\r\n hasErrorsMessage() ? 'c-select--error border-alert-base ring-2 ring-alert-base' : null] | makeHtmlList\"\r\n [value]=\"value\" (input)=\"onInput($event.target.value)\"\r\n [attr.id]=\"id ? id : null\"\r\n [attr.name]=\"name ? name : null\"\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"[describedBy, getHintId(), getErrorId()] | makeHtmlList:null\"\r\n [attr.aria-errormessage]=\"hasErrorsMessage() ? getErrorId() : null\"\r\n [attr.aria-invalid]=\"hasErrorsMessage() ? true : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\"\r\n [disabled]=disabled>\r\n\r\n <ng-container *ngFor=\"let item of getItems()\">\r\n <optgroup *ngIf=\"isOptionGroup(item)\" [label]=\"item.label\" [attr.disabled]=\"item.disabled ? true : null\"\r\n [attr.role]=\"item?.role\"\r\n [attr.aria-label]=\"item?.ariaLabel\"\r\n [attr.aria-describedby]=\"item?.describedBy\"\r\n [attr.aria-labelledby]=\"item?.ariaLabelledBy\"\r\n [attr.aria-hidden]=\"item?.ariaHidden\"\r\n [attr.aria-disabled]=\"item?.ariaDisabled\"\r\n [attr.aria-controls]=\"item?.ariaControls\"\r\n [attr.aria-current]=\"item?.ariaCurrent\"\r\n [attr.aria-live]=\"item?.ariaLive\"\r\n [attr.aria-expanded]=\"item?.ariaExpanded\"\r\n [attr.aria-errormessage]=\"item?.ariaErrorMessage\"\r\n [attr.aria-haspopup]=\"item?.ariaHasPopup\"\r\n [attr.tabindex]=\"item?.tabindex\">>\r\n <option *ngFor=\"let subItem of item.items\"\r\n [value]=\"subItem.value\"\r\n [disabled]=\"subItem.disabled\"\r\n [selected]=\"isItemSelected(subItem)\"\r\n [attr.hidden]=\"subItem.hidden\"\r\n [attr.role]=\"subItem?.role\"\r\n [attr.aria-label]=\"subItem?.ariaLabel\"\r\n [attr.aria-describedby]=\"subItem?.describedBy\"\r\n [attr.aria-labelledby]=\"subItem?.ariaLabelledBy\"\r\n [attr.aria-hidden]=\"subItem?.ariaHidden\"\r\n [attr.aria-disabled]=\"subItem?.ariaDisabled\"\r\n [attr.aria-controls]=\"subItem?.ariaControls\"\r\n [attr.aria-current]=\"subItem?.ariaCurrent\"\r\n [attr.aria-live]=\"subItem?.ariaLive\"\r\n [attr.aria-expanded]=\"subItem?.ariaExpanded\"\r\n [attr.aria-errormessage]=\"subItem?.ariaErrorMessage\"\r\n [attr.aria-haspopup]=\"subItem?.ariaHasPopup\"\r\n [attr.tabindex]=\"subItem?.tabindex\">\r\n <ng-container *desyCustomInnerContent=\"{ component: subItem, text: subItem.text }\"></ng-container>\r\n </option>\r\n </optgroup>\r\n <option *ngIf=\"!isOptionGroup(item)\" [value]=\"item.value\" [disabled]=\"item.disabled ? true : null\" [selected]=\"isItemSelected(item)\"\r\n [attr.hidden]=\"item.hidden\"\r\n [attr.role]=\"item.role ? item.role : null\"\r\n [attr.aria-label]=\"item.ariaLabel ? item.ariaLabel : null\"\r\n [attr.aria-describedby]=\"item.describedBy ? item.describedBy : ariaDescribedBy\"\r\n [attr.aria-labelledby]=\"item.ariaLabelledBy ? item.ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"item.ariaHidden ? item.ariaHidden : null\"\r\n [attr.aria-disabled]=\"item.ariaDisabled ? item.ariaDisabled : null\"\r\n [attr.aria-controls]=\"item.ariaControls ? item.ariaControls : null\"\r\n [attr.aria-current]=\"item.ariaCurrent ? item.ariaCurrent : null\"\r\n [attr.aria-live]=\"item.ariaLive ? item.ariaLive : null\"\r\n [attr.aria-expanded]=\"item.ariaExpanded ? item.ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"item.ariaErrorMessage ? item.ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"item.ariaHasPopup ? item.ariaHasPopup : null\"\r\n [attr.tabindex]=\"item.tabindex ? item.tabindex : null\">\r\n <ng-container *desyCustomInnerContent=\"{ component: item, text: item.text }\"></ng-container>\r\n </option>\r\n </ng-container>\r\n </select>\r\n\r\n",
57
45
  providers: [
58
46
  {
59
47
  provide: NG_VALUE_ACCESSOR,
@@ -67,8 +55,10 @@ SelectComponent.propDecorators = {
67
55
  name: [{ type: Input }],
68
56
  items: [{ type: Input }],
69
57
  describedBy: [{ type: Input }],
70
- formGroupClasses: [{ type: Input }],
58
+ cfg: [{ type: HostBinding, args: ['class.c-form-group',] }],
59
+ cfgr: [{ type: HostBinding, args: ['class.c-form-group--error',] }],
60
+ formGroupClasses: [{ type: Input }, { type: HostBinding, args: ['class',] }],
71
61
  classes: [{ type: Input }],
72
62
  itemComponents: [{ type: ContentChildren, args: [SelectItemComponent,] }]
73
63
  };
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktZm9ybXMvY29tcG9uZW50cy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQW9DLGVBQWUsRUFBOEIsTUFBTSxlQUFlLENBQUM7QUFDM0ksT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDM0UsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFheEUsTUFBTSxPQUFPLGVBQWdCLFNBQVEsa0JBQXVCO0lBWDVEOztRQXFCRSxnQkFBVyxHQUFHLEtBQUssQ0FBQztJQW1EdEIsQ0FBQztJQWpEQyxRQUFRO1FBQ04sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2YsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzlCLE1BQU0sWUFBWSxHQUFHLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDeEQsSUFBSSxZQUFZLEVBQUU7Z0JBQ2hCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ3ZEO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sS0FBSyxHQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDN0YsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsRUFBRTtZQUN0RCxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDdkM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDWixNQUFNLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDZCxNQUFNLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFvQjtRQUNqQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUNoRSxDQUFDO0lBRUQsYUFBYSxDQUFDLElBQW9CO1FBQ2hDLE9BQU8sSUFBSSxZQUFZLG9CQUFvQixDQUFDO0lBQzlDLENBQUM7OztZQXRFRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLG1qVEFBc0M7Z0JBQ3RDLFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQzt3QkFDOUMsS0FBSyxFQUFFLElBQUk7cUJBQ1o7aUJBQ0Y7YUFDRjs7O21CQUdFLEtBQUs7b0JBQ0wsS0FBSzswQkFDTCxLQUFLOytCQUVMLEtBQUs7c0JBQ0wsS0FBSzs2QkFFTCxlQUFlLFNBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBPbkluaXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgQ29udGVudENoaWxkcmVuLCBRdWVyeUxpc3QsIEFmdGVyQ29udGVudEluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IFNlbGVjdEl0ZW1EYXRhIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEZvcm1GaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tZmllbGQvZm9ybS1maWVsZC5jb21wb25lbnQnO1xyXG5pbXBvcnQge09wdGlvbkdyb3VwQ29tcG9uZW50fSBmcm9tICcuL29wdGlvbi1ncm91cC9vcHRpb24tZ3JvdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHtTZWxlY3RJdGVtQ29tcG9uZW50fSBmcm9tICcuL3NlbGVjdC1pdGVtL3NlbGVjdC1pdGVtLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2Rlc3ktc2VsZWN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNlbGVjdENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgRm9ybUZpZWxkQ29tcG9uZW50PGFueT4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJDb250ZW50SW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIG5hbWU6IHN0cmluZztcclxuICBASW5wdXQoKSBpdGVtczogU2VsZWN0SXRlbURhdGFbXTtcclxuICBASW5wdXQoKSBkZXNjcmliZWRCeT86IHN0cmluZztcclxuXHJcbiAgQElucHV0KCkgZm9ybUdyb3VwQ2xhc3Nlczogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGNsYXNzZXM6IHN0cmluZztcclxuXHJcbiAgQENvbnRlbnRDaGlsZHJlbihTZWxlY3RJdGVtQ29tcG9uZW50KSBpdGVtQ29tcG9uZW50czogUXVlcnlMaXN0PFNlbGVjdEl0ZW1Db21wb25lbnQ+O1xyXG4gIGNvbnRlbnRJbml0ID0gZmFsc2U7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jaGVja1JlcXVpcmVkUGFyYW1zKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICB0aGlzLmNoZWNrUmVxdWlyZWRQYXJhbXMoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY29udGVudEluaXQgPSB0cnVlO1xyXG4gICAgaWYgKCF0aGlzLnZhbHVlKSB7XHJcbiAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5nZXRJdGVtcygpO1xyXG4gICAgICBjb25zdCBpdGVtU2VsZWN0ZWQgPSBpdGVtcz8uZmluZChpdGVtID0+IGl0ZW0uc2VsZWN0ZWQpO1xyXG4gICAgICBpZiAoaXRlbVNlbGVjdGVkKSB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLndyaXRlVmFsdWUoaXRlbVNlbGVjdGVkLnZhbHVlKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBnZXRJdGVtcygpOiBTZWxlY3RJdGVtRGF0YVtdIHtcclxuICAgIGNvbnN0IGl0ZW1zID0gICh0aGlzLml0ZW1Db21wb25lbnRzLmxlbmd0aCA+IDApID8gdGhpcy5pdGVtQ29tcG9uZW50cy50b0FycmF5KCkgOiB0aGlzLml0ZW1zO1xyXG4gICAgaWYgKHRoaXMuY29udGVudEluaXQgJiYgKCFpdGVtcyB8fCBpdGVtcy5sZW5ndGggPT09IDApKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgaXRlbXMgYXJlIHJlcXVpcmVkYCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXRlbXM7XHJcbiAgfVxyXG5cclxuICBjaGVja1JlcXVpcmVkUGFyYW1zKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlkKSB7XHJcbiAgICAgIHRocm93IEVycm9yKCdpZCBpcyByZXF1aXJlZCcpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLm5hbWUpIHtcclxuICAgICAgdGhyb3cgRXJyb3IoJ25hbWUgaXMgcmVxdWlyZWQnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzSXRlbVNlbGVjdGVkKGl0ZW06IFNlbGVjdEl0ZW1EYXRhKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy52YWx1ZSA/IHRoaXMudmFsdWUgPT09IGl0ZW0udmFsdWUgOiBpdGVtLnNlbGVjdGVkO1xyXG4gIH1cclxuXHJcbiAgaXNPcHRpb25Hcm91cChpdGVtOiBTZWxlY3RJdGVtRGF0YSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGl0ZW0gaW5zdGFuY2VvZiBPcHRpb25Hcm91cENvbXBvbmVudDtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktZm9ybXMvY29tcG9uZW50cy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQW9DLGVBQWUsRUFBK0IsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hKLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBYXhFLE1BQU0sT0FBTyxlQUFnQixTQUFRLGtCQUF1QjtJQVg1RDs7UUFrQkUsK0RBQStEO1FBQzVCLFFBQUcsR0FBRyxJQUFJLENBQUM7UUFPOUMsZ0JBQVcsR0FBRyxLQUFLLENBQUM7SUFtQ3RCLENBQUM7SUFqQ0MsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUsscUJBQXFCLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2YsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzlCLE1BQU0sWUFBWSxHQUFHLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDeEQsSUFBSSxZQUFZLEVBQUU7Z0JBQ2hCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ3ZEO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sS0FBSyxHQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDN0YsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsY0FBYyxDQUFDLElBQW9CO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ2hFLENBQUM7SUFFRCxhQUFhLENBQUMsSUFBb0I7UUFDaEMsT0FBTyxJQUFJLFlBQVksb0JBQW9CLENBQUM7SUFDOUMsQ0FBQzs7O1lBM0RGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsYUFBYTtnQkFDdkIsbTZTQUFzQztnQkFDdEMsU0FBUyxFQUFFO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDO3dCQUM5QyxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjthQUNGOzs7bUJBR0UsS0FBSztvQkFDTCxLQUFLOzBCQUNMLEtBQUs7a0JBSUwsV0FBVyxTQUFDLG9CQUFvQjttQkFDaEMsV0FBVyxTQUFDLDJCQUEyQjsrQkFDdkMsS0FBSyxZQUFJLFdBQVcsU0FBQyxPQUFPO3NCQUU1QixLQUFLOzZCQUVMLGVBQWUsU0FBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uSW5pdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBDb250ZW50Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgQWZ0ZXJDb250ZW50SW5pdCwgSG9zdEJpbmRpbmd9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB7IFNlbGVjdEl0ZW1EYXRhIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEZvcm1GaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tZmllbGQvZm9ybS1maWVsZC5jb21wb25lbnQnO1xyXG5pbXBvcnQge09wdGlvbkdyb3VwQ29tcG9uZW50fSBmcm9tICcuL29wdGlvbi1ncm91cC9vcHRpb24tZ3JvdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHtTZWxlY3RJdGVtQ29tcG9uZW50fSBmcm9tICcuL3NlbGVjdC1pdGVtL3NlbGVjdC1pdGVtLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2Rlc3ktc2VsZWN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNlbGVjdENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgRm9ybUZpZWxkQ29tcG9uZW50PGFueT4gaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkNoYW5nZXMge1xyXG5cclxuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaXRlbXM6IFNlbGVjdEl0ZW1EYXRhW107XHJcbiAgQElucHV0KCkgZGVzY3JpYmVkQnk/OiBzdHJpbmc7XHJcblxyXG5cclxuICAvLyAgZm9ybSBncm91cCBjbGFzcyAtIGFzaWduYXIgY2xhc2VzIGEgbGEgZXRpcXVldGEgZGVzeS1zZWxlY3RcclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmMtZm9ybS1ncm91cCcpIGNmZyA9IHRydWU7XHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jLWZvcm0tZ3JvdXAtLWVycm9yJykgY2ZncjogYm9vbGVhbjtcclxuICBASW5wdXQoKSBASG9zdEJpbmRpbmcoJ2NsYXNzJykgZm9ybUdyb3VwQ2xhc3NlczogYW55O1xyXG5cclxuICBASW5wdXQoKSBjbGFzc2VzOiBzdHJpbmc7XHJcblxyXG4gIEBDb250ZW50Q2hpbGRyZW4oU2VsZWN0SXRlbUNvbXBvbmVudCkgaXRlbUNvbXBvbmVudHM6IFF1ZXJ5TGlzdDxTZWxlY3RJdGVtQ29tcG9uZW50PjtcclxuICBjb250ZW50SW5pdCA9IGZhbHNlO1xyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICB0aGlzLmNmZ3IgPSAodGhpcy5oYXNFcnJvcnNNZXNzYWdlKCkgfHwgdGhpcy5mb3JtR3JvdXBDbGFzc2VzID09PSAnYy1mb3JtLWdyb3VwLS1lcnJvcicpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb250ZW50SW5pdCA9IHRydWU7XHJcbiAgICBpZiAoIXRoaXMudmFsdWUpIHtcclxuICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmdldEl0ZW1zKCk7XHJcbiAgICAgIGNvbnN0IGl0ZW1TZWxlY3RlZCA9IGl0ZW1zPy5maW5kKGl0ZW0gPT4gaXRlbS5zZWxlY3RlZCk7XHJcbiAgICAgIGlmIChpdGVtU2VsZWN0ZWQpIHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMud3JpdGVWYWx1ZShpdGVtU2VsZWN0ZWQudmFsdWUpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGdldEl0ZW1zKCk6IFNlbGVjdEl0ZW1EYXRhW10ge1xyXG4gICAgY29uc3QgaXRlbXMgPSAgKHRoaXMuaXRlbUNvbXBvbmVudHMubGVuZ3RoID4gMCkgPyB0aGlzLml0ZW1Db21wb25lbnRzLnRvQXJyYXkoKSA6IHRoaXMuaXRlbXM7XHJcbiAgICByZXR1cm4gaXRlbXM7XHJcbiAgfVxyXG5cclxuICBpc0l0ZW1TZWxlY3RlZChpdGVtOiBTZWxlY3RJdGVtRGF0YSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudmFsdWUgPyB0aGlzLnZhbHVlID09PSBpdGVtLnZhbHVlIDogaXRlbS5zZWxlY3RlZDtcclxuICB9XHJcblxyXG4gIGlzT3B0aW9uR3JvdXAoaXRlbTogU2VsZWN0SXRlbURhdGEpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBpdGVtIGluc3RhbmNlb2YgT3B0aW9uR3JvdXBDb21wb25lbnQ7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -6,21 +6,9 @@ export class TextareaComponent extends FormFieldComponent {
6
6
  super();
7
7
  this.inputTransform = (value) => value;
8
8
  }
9
- ngOnChanges(changes) {
10
- this.checkRequiredParams();
9
+ ngOnChanges() {
11
10
  this.writeValue(this.value);
12
11
  }
13
- checkRequiredParams() {
14
- if (!this.id) {
15
- throw Error('id is required');
16
- }
17
- if (!this.name) {
18
- throw Error('name is required');
19
- }
20
- if (!this.labelRef && !this.labelData && !this.labelText) {
21
- throw Error('label is required');
22
- }
23
- }
24
12
  getRows() {
25
13
  return this.rows ? this.rows : TextareaComponent.DEFAULT_ROWS;
26
14
  }
@@ -42,7 +30,7 @@ TextareaComponent.DEFAULT_ROWS = 5;
42
30
  TextareaComponent.decorators = [
43
31
  { type: Component, args: [{
44
32
  selector: 'desy-textarea',
45
- template: "<div [class]=\"['c-form-group', this.formGroupClasses] | makeHtmlList\" [ngClass]=\"{'c-form-group--error': hasErrorsMessage()}\">\r\n\r\n <ng-container *ngTemplateOutlet=\"labelRef\"></ng-container>\r\n <desy-label *ngIf=\"!labelRef && labelData\"\r\n [text]=\"labelData.text\"\r\n [html]=\"labelData.html\"\r\n [classes]=\"labelData.classes\"\r\n [isPageHeading]=\"labelData.isPageHeading\"\r\n [for]=\"id\"\r\n [role]=\"labelData.role\"\r\n [ariaLabel]=\"labelData.ariaLabel\"\r\n [ariaDescribedBy]=\"labelData.ariaDescribedBy\"\r\n [ariaLabelledBy]=\"labelData.ariaLabelledBy\"\r\n [ariaHidden]=\"labelData.ariaHidden\"\r\n [ariaDisabled]=\"labelData.ariaDisabled\"\r\n [ariaControls]=\"labelData.ariaControls\"\r\n [ariaCurrent]=\"labelData.ariaCurrent\"\r\n [ariaLive]=\"labelData.ariaLive\"\r\n [ariaExpanded]=\"labelData.ariaExpanded\"\r\n [ariaErrorMessage]=\"labelData.ariaErrorMessage\"\r\n [ariaHasPopup]=\"labelData.ariaHasPopup\"\r\n [tabindex]=\"labelData.tabindex\"></desy-label>\r\n <desy-label *ngIf=\"!labelRef && !labelData && labelText\" [text]=\"labelText\" [for]=\"id\"></desy-label>\r\n\r\n <ng-container *ngTemplateOutlet=\"hintRef\"></ng-container>\r\n <desy-hint *ngIf=\"!hintRef && hintData\"\r\n [id]=\"getHintId()\"\r\n [text]=\"hintData.text\"\r\n [html]=\"hintData.html\"\r\n [classes]=\"hintData.classes\"\r\n [role]=\"hintData.role\"\r\n [ariaLabel]=\"hintData.ariaLabel\"\r\n [ariaDescribedBy]=\"hintData.ariaDescribedBy\"\r\n [ariaLabelledBy]=\"hintData.ariaLabelledBy\"\r\n [ariaHidden]=\"hintData.ariaHidden\"\r\n [ariaDisabled]=\"hintData.ariaDisabled\"\r\n [ariaControls]=\"hintData.ariaControls\"\r\n [ariaCurrent]=\"hintData.ariaCurrent\"\r\n [ariaLive]=\"hintData.ariaLive\"\r\n [ariaExpanded]=\"hintData.ariaExpanded\"\r\n [ariaErrorMessage]=\"hintData.ariaErrorMessage\"\r\n [ariaHasPopup]=\"hintData.ariaHasPopup\"\r\n [tabindex]=\"hintData.tabindex\"></desy-hint>\r\n <desy-hint *ngIf=\"!hintRef && !hintData && hintText\" [text]=\"hintText\" [id]=\"getHintId()\"></desy-hint>\r\n\r\n <ng-container *ngTemplateOutlet=\"errorMessageRef\"></ng-container>\r\n <desy-error-message *ngIf=\"!errorMessageRef && errorMessageData\"\r\n [id]=\"getErrorId()\"\r\n [text]=\"errorMessageData.text\"\r\n [html]=\"errorMessageData.html\"\r\n [classes]=\"errorMessageData.classes\"\r\n [visuallyHiddenText]=\"errorMessageData.visuallyHiddenText\"\r\n [role]=\"errorMessageData.role\"\r\n [ariaLabel]=\"errorMessageData.ariaLabel\"\r\n [ariaDescribedBy]=\"errorMessageData.ariaDescribedBy\"\r\n [ariaLabelledBy]=\"errorMessageData.ariaLabelledBy\"\r\n [ariaHidden]=\"errorMessageData.ariaHidden\"\r\n [ariaDisabled]=\"errorMessageData.ariaDisabled\"\r\n [ariaControls]=\"errorMessageData.ariaControls\"\r\n [ariaCurrent]=\"errorMessageData.ariaCurrent\"\r\n [ariaLive]=\"errorMessageData.ariaLive\"\r\n [ariaExpanded]=\"errorMessageData.ariaExpanded\"\r\n [ariaErrorMessage]=\"errorMessageData.ariaErrorMessage\"\r\n [ariaHasPopup]=\"errorMessageData.ariaHasPopup\"\r\n [tabindex]=\"errorMessageData.tabindex\"></desy-error-message>\r\n <desy-error-message *ngIf=\"!errorMessageRef && !errorMessageData && errorMessageText\"\r\n [text]=\"errorMessageText\" [id]=\"getErrorId()\"></desy-error-message>\r\n\r\n\r\n <textarea #textarea\r\n [class]=\"['block mt-sm px-base py-sm border-black rounded font-semibold leading-normal placeholder-neutral-dark focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-warning-base disabled:bg-neutral-light disabled:border-neutral-base', classes] | makeHtmlList\"\r\n [value]=\"value\" (input)=\"onInput($event.target.value)\"\r\n [ngClass]=\"{'border-alert-base ring-2 ring-alert-base' : hasErrorsMessage()}\"\r\n [rows]=\"getRows()\"\r\n [attr.id]=\"id ? id : null\"\r\n [attr.name]=\"name ? name : null\"\r\n [attr.aria-describedby]=\"[describedBy, getHintId(), getErrorId()] | makeHtmlList:null\"\r\n [attr.aria-errormessage]=\"hasErrorsMessage() ? getErrorId() : null\"\r\n [attr.aria-invalid]=\"hasErrorsMessage() ? true : null\"\r\n [attr.placeholder]=\"placeholder ? placeholder : null\"\r\n [attr.autocomplete]=\"autocomplete ? autocomplete : null\"\r\n [attr.disabled]=\"disabled ? true : null\"\r\n [attr.maxlength]=\"maxlength\"\r\n\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\"></textarea>\r\n</div>\r\n",
33
+ template: "<div [class]=\"['c-form-group', this.formGroupClasses] | makeHtmlList\" [ngClass]=\"{'c-form-group--error': hasErrorsMessage()}\">\r\n\r\n <ng-container *ngTemplateOutlet=\"labelRef\"></ng-container>\r\n <desy-label *ngIf=\"!labelRef && labelData\"\r\n [text]=\"labelData.text\"\r\n [html]=\"labelData.html\"\r\n [classes]=\"labelData.classes\"\r\n [isPageHeading]=\"labelData.isPageHeading\"\r\n [for]=\"id\"\r\n [role]=\"labelData.role\"\r\n [ariaLabel]=\"labelData.ariaLabel\"\r\n [ariaDescribedBy]=\"labelData.ariaDescribedBy\"\r\n [ariaLabelledBy]=\"labelData.ariaLabelledBy\"\r\n [ariaHidden]=\"labelData.ariaHidden\"\r\n [ariaDisabled]=\"labelData.ariaDisabled\"\r\n [ariaControls]=\"labelData.ariaControls\"\r\n [ariaCurrent]=\"labelData.ariaCurrent\"\r\n [ariaLive]=\"labelData.ariaLive\"\r\n [ariaExpanded]=\"labelData.ariaExpanded\"\r\n [ariaErrorMessage]=\"labelData.ariaErrorMessage\"\r\n [ariaHasPopup]=\"labelData.ariaHasPopup\"\r\n [tabindex]=\"labelData.tabindex\"></desy-label>\r\n <desy-label *ngIf=\"!labelRef && !labelData && labelText\" [text]=\"labelText\" [for]=\"id\"></desy-label>\r\n\r\n <ng-container *ngTemplateOutlet=\"hintRef\"></ng-container>\r\n <desy-hint *ngIf=\"!hintRef && hintData\"\r\n [id]=\"getHintId()\"\r\n [text]=\"hintData.text\"\r\n [html]=\"hintData.html\"\r\n [classes]=\"hintData.classes\"\r\n [role]=\"hintData.role\"\r\n [ariaLabel]=\"hintData.ariaLabel\"\r\n [ariaDescribedBy]=\"hintData.ariaDescribedBy\"\r\n [ariaLabelledBy]=\"hintData.ariaLabelledBy\"\r\n [ariaHidden]=\"hintData.ariaHidden\"\r\n [ariaDisabled]=\"hintData.ariaDisabled\"\r\n [ariaControls]=\"hintData.ariaControls\"\r\n [ariaCurrent]=\"hintData.ariaCurrent\"\r\n [ariaLive]=\"hintData.ariaLive\"\r\n [ariaExpanded]=\"hintData.ariaExpanded\"\r\n [ariaErrorMessage]=\"hintData.ariaErrorMessage\"\r\n [ariaHasPopup]=\"hintData.ariaHasPopup\"\r\n [tabindex]=\"hintData.tabindex\"></desy-hint>\r\n <desy-hint *ngIf=\"!hintRef && !hintData && hintText\" [text]=\"hintText\" [id]=\"getHintId()\"></desy-hint>\r\n\r\n <ng-container *ngTemplateOutlet=\"errorMessageRef\"></ng-container>\r\n <desy-error-message *ngIf=\"!errorMessageRef && errorMessageData\"\r\n [id]=\"getErrorId()\"\r\n [text]=\"errorMessageData.text\"\r\n [html]=\"errorMessageData.html\"\r\n [classes]=\"errorMessageData.classes\"\r\n [visuallyHiddenText]=\"errorMessageData.visuallyHiddenText\"\r\n [role]=\"errorMessageData.role\"\r\n [ariaLabel]=\"errorMessageData.ariaLabel\"\r\n [ariaDescribedBy]=\"errorMessageData.ariaDescribedBy\"\r\n [ariaLabelledBy]=\"errorMessageData.ariaLabelledBy\"\r\n [ariaHidden]=\"errorMessageData.ariaHidden\"\r\n [ariaDisabled]=\"errorMessageData.ariaDisabled\"\r\n [ariaControls]=\"errorMessageData.ariaControls\"\r\n [ariaCurrent]=\"errorMessageData.ariaCurrent\"\r\n [ariaLive]=\"errorMessageData.ariaLive\"\r\n [ariaExpanded]=\"errorMessageData.ariaExpanded\"\r\n [ariaErrorMessage]=\"errorMessageData.ariaErrorMessage\"\r\n [ariaHasPopup]=\"errorMessageData.ariaHasPopup\"\r\n [tabindex]=\"errorMessageData.tabindex\"></desy-error-message>\r\n <desy-error-message *ngIf=\"!errorMessageRef && !errorMessageData && errorMessageText\"\r\n [text]=\"errorMessageText\" [id]=\"getErrorId()\"></desy-error-message>\r\n\r\n\r\n <textarea #textarea\r\n [class]=\"['block mt-sm px-base py-sm border-black rounded font-semibold leading-normal placeholder-neutral-dark focus:border-black focus:shadow-outline-focus-input focus:ring-4 focus:ring-warning-base disabled:bg-neutral-light disabled:border-neutral-base', classes] | makeHtmlList\"\r\n [value]=\"value ? value : ''\" (input)=\"onInput($event.target.value)\"\r\n [ngClass]=\"{'border-alert-base ring-2 ring-alert-base' : hasErrorsMessage()}\"\r\n [rows]=\"getRows()\"\r\n [attr.id]=\"id ? id : null\"\r\n [attr.name]=\"name ? name : null\"\r\n [attr.aria-describedby]=\"[describedBy, getHintId(), getErrorId()] | makeHtmlList:null\"\r\n [attr.aria-errormessage]=\"hasErrorsMessage() ? getErrorId() : null\"\r\n [attr.aria-invalid]=\"hasErrorsMessage() ? true : null\"\r\n [attr.placeholder]=\"placeholder ? placeholder : null\"\r\n [attr.autocomplete]=\"autocomplete ? autocomplete : null\"\r\n [attr.disabled]=\"disabled ? true : null\"\r\n [attr.maxlength]=\"maxlength\"\r\n\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-label]=\"ariaLabel ? ariaLabel : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\"></textarea>\r\n</div>\r\n",
46
34
  providers: [
47
35
  {
48
36
  provide: NG_VALUE_ACCESSOR,
@@ -64,4 +52,4 @@ TextareaComponent.propDecorators = {
64
52
  autocomplete: [{ type: Input }],
65
53
  maxlength: [{ type: Input }]
66
54
  };
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS1mb3Jtcy9jb21wb25lbnRzL3RleHRhcmVhL3RleHRhcmVhLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFVBQVUsRUFDVixLQUFLLEVBR0wsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBYXhFLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxrQkFBMEI7SUFnQi9EO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFHVixtQkFBYyxHQUFHLENBQUMsS0FBYSxFQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFGbEQsQ0FBQztJQUlELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ1osTUFBTSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUMvQjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2QsTUFBTSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztTQUNqQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDeEQsTUFBTSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztTQUNsQztJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUM7SUFDaEUsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFVO1FBQ2hCLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsc0JBQXNCLENBQUMsRUFBNkI7UUFDbEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVPLFVBQVUsQ0FBQyxLQUFVO1FBQzNCLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDbEMsQ0FBQzs7QUF4RHlCLDhCQUFZLEdBQUcsQ0FBQyxDQUFDOztZQWI1QyxTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLHl3TEFBd0M7Z0JBQ3hDLFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDO3dCQUNoRCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjthQUNGOzs7OzhCQUtFLFNBQVMsU0FBQyxVQUFVO21CQUVwQixLQUFLO21CQUNMLEtBQUs7MEJBQ0wsS0FBSzswQkFDTCxLQUFLOytCQUVMLEtBQUs7c0JBQ0wsS0FBSzsyQkFDTCxLQUFLO3dCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBGb3JtRmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9mb3JtLWZpZWxkL2Zvcm0tZmllbGQuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZGVzeS10ZXh0YXJlYScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RleHRhcmVhLmNvbXBvbmVudC5odG1sJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRleHRhcmVhQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUZXh0YXJlYUNvbXBvbmVudCBleHRlbmRzIEZvcm1GaWVsZENvbXBvbmVudDxzdHJpbmc+IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuXHJcbiAgcHJvdGVjdGVkIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1JPV1MgPSA1O1xyXG5cclxuICBAVmlld0NoaWxkKCd0ZXh0YXJlYScpIHRleHRhcmVhRWxlbWVudDogRWxlbWVudFJlZjtcclxuXHJcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHJvd3M6IG51bWJlcjtcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGRlc2NyaWJlZEJ5OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpIGZvcm1Hcm91cENsYXNzZXM6IHN0cmluZztcclxuICBASW5wdXQoKSBjbGFzc2VzOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgYXV0b2NvbXBsZXRlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbWF4bGVuZ3RoOiBudW1iZXI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIGlucHV0VHJhbnNmb3JtID0gKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgPT4gdmFsdWU7XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHRoaXMuY2hlY2tSZXF1aXJlZFBhcmFtcygpO1xyXG4gICAgdGhpcy53cml0ZVZhbHVlKHRoaXMudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tSZXF1aXJlZFBhcmFtcygpOiB2b2lke1xyXG4gICAgaWYgKCF0aGlzLmlkKSB7XHJcbiAgICAgIHRocm93IEVycm9yKCdpZCBpcyByZXF1aXJlZCcpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLm5hbWUpIHtcclxuICAgICAgdGhyb3cgRXJyb3IoJ25hbWUgaXMgcmVxdWlyZWQnKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5sYWJlbFJlZiAmJiAhdGhpcy5sYWJlbERhdGEgJiYgIXRoaXMubGFiZWxUZXh0KSB7XHJcbiAgICAgIHRocm93IEVycm9yKCdsYWJlbCBpcyByZXF1aXJlZCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Um93cygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMucm93cyA/IHRoaXMucm93cyA6IFRleHRhcmVhQ29tcG9uZW50LkRFRkFVTFRfUk9XUztcclxuICB9XHJcblxyXG4gIG9uSW5wdXQodmFsdWU6IGFueSk6IHZvaWR7XHJcbiAgICBzdXBlci5vbklucHV0KHRoaXMuaW5wdXRUcmFuc2Zvcm0odGhpcy5lbnN1cmVUZXh0KHZhbHVlKSkpO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5pbnB1dFRyYW5zZm9ybSh0aGlzLmVuc3VyZVRleHQodmFsdWUpKTtcclxuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICByZWdpc3RlcklucHV0VHJhbnNmb3JtKGZuOiAodmFsdWU6IHN0cmluZykgPT4gc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmlucHV0VHJhbnNmb3JtID0gZm47XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVuc3VyZVRleHQodmFsdWU6IGFueSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdmFsdWUgPyB2YWx1ZSB8fCAnJyA6ICcnO1xyXG4gIH1cclxufVxyXG4iXX0=
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzeS1hbmd1bGFyL3NyYy9saWIvZGVzeS1mb3Jtcy9jb21wb25lbnRzL3RleHRhcmVhL3RleHRhcmVhLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFVBQVUsRUFDVixLQUFLLEVBRUwsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBYXhFLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxrQkFBMEI7SUFnQi9EO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFHVixtQkFBYyxHQUFHLENBQUMsS0FBYSxFQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFGbEQsQ0FBQztJQUlELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBR0QsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDO0lBQ2hFLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBVTtRQUNoQixLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFVO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELHNCQUFzQixDQUFDLEVBQTZCO1FBQ2xELElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTyxVQUFVLENBQUMsS0FBVTtRQUMzQixPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2xDLENBQUM7O0FBNUN5Qiw4QkFBWSxHQUFHLENBQUMsQ0FBQzs7WUFiNUMsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxlQUFlO2dCQUN6QixzeExBQXdDO2dCQUN4QyxTQUFTLEVBQUU7b0JBQ1Q7d0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjt3QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQzt3QkFDaEQsS0FBSyxFQUFFLElBQUk7cUJBQ1o7aUJBQ0Y7YUFDRjs7Ozs4QkFLRSxTQUFTLFNBQUMsVUFBVTttQkFFcEIsS0FBSzttQkFDTCxLQUFLOzBCQUNMLEtBQUs7MEJBQ0wsS0FBSzsrQkFFTCxLQUFLO3NCQUNMLEtBQUs7MkJBQ0wsS0FBSzt3QkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBmb3J3YXJkUmVmLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZvcm1GaWVsZENvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0tZmllbGQvZm9ybS1maWVsZC5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkZXN5LXRleHRhcmVhJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dGFyZWEuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVGV4dGFyZWFDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFRleHRhcmVhQ29tcG9uZW50IGV4dGVuZHMgRm9ybUZpZWxkQ29tcG9uZW50PHN0cmluZz4gaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG5cclxuICBwcm90ZWN0ZWQgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfUk9XUyA9IDU7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3RleHRhcmVhJykgdGV4dGFyZWFFbGVtZW50OiBFbGVtZW50UmVmO1xyXG5cclxuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcm93czogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZGVzY3JpYmVkQnk6IHN0cmluZztcclxuXHJcbiAgQElucHV0KCkgZm9ybUdyb3VwQ2xhc3Nlczogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGNsYXNzZXM6IHN0cmluZztcclxuICBASW5wdXQoKSBhdXRvY29tcGxldGU6IHN0cmluZztcclxuICBASW5wdXQoKSBtYXhsZW5ndGg6IG51bWJlcjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgaW5wdXRUcmFuc2Zvcm0gPSAodmFsdWU6IHN0cmluZyk6IHN0cmluZyA9PiB2YWx1ZTtcclxuXHJcbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLndyaXRlVmFsdWUodGhpcy52YWx1ZSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0Um93cygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMucm93cyA/IHRoaXMucm93cyA6IFRleHRhcmVhQ29tcG9uZW50LkRFRkFVTFRfUk9XUztcclxuICB9XHJcblxyXG4gIG9uSW5wdXQodmFsdWU6IGFueSk6IHZvaWR7XHJcbiAgICBzdXBlci5vbklucHV0KHRoaXMuaW5wdXRUcmFuc2Zvcm0odGhpcy5lbnN1cmVUZXh0KHZhbHVlKSkpO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5pbnB1dFRyYW5zZm9ybSh0aGlzLmVuc3VyZVRleHQodmFsdWUpKTtcclxuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICByZWdpc3RlcklucHV0VHJhbnNmb3JtKGZuOiAodmFsdWU6IHN0cmluZykgPT4gc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmlucHV0VHJhbnNmb3JtID0gZm47XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVuc3VyZVRleHQodmFsdWU6IGFueSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdmFsdWUgPyB2YWx1ZSB8fCAnJyA6ICcnO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -32,6 +32,7 @@ export class TreeItemComponent extends AccessibilityComponent {
32
32
  this.quitFocus = new EventEmitter();
33
33
  this.isFocus = false;
34
34
  this.isHover = false;
35
+ this._matchesValidText = false; // True si el contenido del item encaja con los criterios de búsqueda y se está filtrando
35
36
  }
36
37
  ngOnChanges(changes) {
37
38
  if (this.sub && this.sub.itemList) {
@@ -275,6 +276,7 @@ export class TreeItemComponent extends AccessibilityComponent {
275
276
  const itemText = this.hiddenWrapper.nativeElement.textContent;
276
277
  matches = SearchUtils.containsAnyWordFrom(itemText, value);
277
278
  }
279
+ this._matchesValidText = value ? matches : false;
278
280
  return matches;
279
281
  }
280
282
  getKey() {
@@ -297,6 +299,9 @@ export class TreeItemComponent extends AccessibilityComponent {
297
299
  }
298
300
  return parentKey;
299
301
  }
302
+ isActive() {
303
+ return this.active || this._matchesValidText;
304
+ }
300
305
  /*
301
306
  * Métodos privados
302
307
  */
@@ -314,7 +319,7 @@ TreeItemComponent._treeItemKeySuffix = 0; // Sufijo estático para generar siemp
314
319
  TreeItemComponent.decorators = [
315
320
  { type: Component, args: [{
316
321
  selector: 'desy-tree-item',
317
- template: "<li *ngIf=\"allParentsExpanded && !isHidden(); else hidden\"\r\n [id]=\"id\"\r\n [class]=\"'c-tree__item focus:outline-none'\"\r\n [ngClass]=\"{\r\n 'ml-4': subLevel === 0,\r\n 'ml-8': subLevel !== 0,\r\n 'c-tree__item--focus': isFocus && !sub,\r\n 'c-tree__item--hover': isHover && !sub,\r\n 'font-bold': active && subLevel === 0\r\n }\"\r\n (focusin)=\"handleItemFocus(true, !sub)\"\r\n (focusout)=\"handleItemFocus(false, !sub)\"\r\n (mouseover)=\"handleItemHover(true, !sub)\"\r\n (mouseout)=\"handleItemHover(false, !sub)\"\r\n (keydown.home)=\"handleHome($event, !sub)\"\r\n (keydown.end)=\"handleEnd($event, !sub)\"\r\n (keydown.arrowup)=\"handleArrowUp($event, !sub)\"\r\n (keydown.arrowdown)=\"handleArrowDown($event, !sub)\"\r\n (keydown.arrowright)=\"handleArrowRight($event, !sub)\"\r\n (keydown.arrowleft)=\"handleArrowLeft($event, !sub)\"\r\n role=\"treeitem\"\r\n [attr.aria-expanded]=\"sub ? (expanded ? 'true' : 'false') : null\"\r\n [attr.aria-current]=\"active && subLevel === 0 ? 'page' : null\"\r\n [attr.disabled]=\"disabled && subLevel === 0 ? 'disabled' : null\"\r\n [attr.aria-disabled]=\"disabled && subLevel === 0 ? 'true' : null\"\r\n [attr.tabIndex]=\"disabled && subLevel === 0 ? '-1' : null\">\r\n <div *ngIf=\"!sub && subLevel !== 0; else childrenTree\"\r\n [id]=\"id\"\r\n [class]=\"['block', classes] | makeHtmlList\"\r\n [ngClass]=\"{'font-bold': active}\"\r\n [attr.title]=\"title ? title : null\"\r\n [attr.disabled]=\"disabled ? 'disabled' : null\"\r\n\r\n [attr.role]=\"role ? role : 'tree'\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : (disabled ? 'true' : null)\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : (active ? 'page' : null)\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.aria-modal]=\"ariaModal ? ariaModal : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : (disabled ? '-1' : null)\">\r\n <div class=\"font-bold\" *ngIf=\"active; else checkbox\">\r\n <ng-container *ngTemplateOutlet=\"checkbox\"></ng-container>\r\n </div>\r\n </div>\r\n</li>\r\n\r\n<ng-template #childrenTree>\r\n <div *ngIf=\"sub; else checkbox\" class=\"w-full h-full\"\r\n [ngClass]=\"{'c-tree__item--focus': isFocus && sub, 'c-tree__item--hover': isHover && sub}\"\r\n (focusin)=\"handleItemFocus(true)\"\r\n (focusout)=\"handleItemFocus(false)\"\r\n (mouseover)=\"handleItemHover(true)\"\r\n (mouseout)=\"handleItemHover(false)\"\r\n (keydown.home)=\"handleHome($event)\"\r\n (keydown.end)=\"handleEnd($event)\"\r\n (keydown.arrowup)=\"handleArrowUp($event)\"\r\n (keydown.arrowdown)=\"handleArrowDown($event)\"\r\n (keydown.arrowright)=\"handleArrowRight($event)\"\r\n (keydown.arrowLeft)=\"handleArrowLeft($event)\">\r\n <div [class]=\"['w-full flex items-center relative focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black text-left', classes] | makeHtmlList\"\r\n\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.aria-modal]=\"ariaModal ? ariaModal : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n <span class=\"absolute top-3 -left-4 flex items-center w-4 h-2.5 text-primary-base font-bold\">\r\n <svg (click)=\"expandSub(false)\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 10 10\" width=\"10\" height=\"10\" aria-hidden=\"true\" class=\"c-tree__minus\"><path fill=\"currentColor\" d=\"M9.286 5.714H.714a.714.714 0 010-1.428h8.572a.714.714 0 010 1.428z\"/></svg>\r\n <svg (click)=\"expandSub(true)\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 10 10\" width=\"10\" height=\"10\" aria-hidden=\"true\" class=\"c-tree__plus\"><path fill=\"currentColor\" d=\"M9.286 4.286H5.893a.179.179 0 01-.179-.179V.714a.714.714 0 00-1.428 0v3.393a.179.179 0 01-.179.179H.714a.714.714 0 000 1.428h3.393a.179.179 0 01.179.179v3.393a.714.714 0 001.428 0V5.893a.179.179 0 01.179-.179h3.393a.714.714 0 000-1.428z\"/></svg>\r\n </span>\r\n <ng-container *ngTemplateOutlet=\"checkbox\"></ng-container>\r\n </div>\r\n </div>\r\n\r\n <ng-container *desyCustomInnerContent=\"{ component: sub }\"></ng-container>\r\n</ng-template>\r\n\r\n<!-- Se incorpora el contenido m\u00EDnimo para funcionar con el objetivo de mejorar el rendimiento -->\r\n<ng-template #hidden>\r\n <li class=\"hidden\">\r\n <div #hiddenWrapper>\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n </div>\r\n <ng-container *desyCustomInnerContent=\"{ component: sub }\"></ng-container>\r\n </li>\r\n</ng-template>\r\n\r\n<ng-template #checkbox>\r\n <desy-tree-checkbox [name]=\"name ? name : parentName\"\r\n [id]=\"getId()\"\r\n [value]=\"value\"\r\n [classes]=\"classes\"\r\n [type]=\"type\"\r\n [(checked)]=\"checked\" (checkedChange)=\"handleCheckboxChange($event)\"\r\n [hasError]=\"inheritedHasError\"\r\n [disabled]=\"disabled\"\r\n [hasDividers]=\"hasDividers\"\r\n [describedBy]=\"[inheritedDescribedBy, hint?.id] | makeHtmlList\"\r\n [isIndeterminate]=\"isIndeterminate\"\r\n [(indeterminateChecked)]=\"indeterminateChecked\"\r\n (indeterminateCheckedChange)=\"handleIndeterminateCheckedChange($event)\"\r\n\r\n [labelComponent]=\"label\"\r\n [hintComponent]=\"hint\"\r\n\r\n [role]=\"role\"\r\n [ariaLabel]=\"ariaLabel\"\r\n [ariaDescribedBy]=\"ariaDescribedBy\"\r\n [ariaLabelledBy]=\"ariaLabelledBy\"\r\n [ariaHidden]=\"ariaHidden\"\r\n [ariaDisabled]=\"ariaDisabled\"\r\n [ariaControls]=\"ariaControls\"\r\n [ariaCurrent]=\"ariaCurrent\"\r\n [ariaLive]=\"ariaLive\"\r\n [ariaExpanded]=\"ariaExpanded\"\r\n [ariaErrorMessage]=\"ariaErrorMessage\"\r\n [ariaHasPopup]=\"ariaHasPopup\"\r\n [ariaModal]=\"ariaModal\"\r\n [tabindex]=\"tabindex\">\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n </desy-tree-checkbox>\r\n</ng-template>\r\n\r\n<ng-template #content>\r\n <ng-content select=\"desy-label\"></ng-content>\r\n <ng-content select=\"desy-hint\"></ng-content>\r\n</ng-template>\r\n",
322
+ template: "<li *ngIf=\"allParentsExpanded && !isHidden(); else hidden\"\r\n [id]=\"id\"\r\n [class]=\"'c-tree__item focus:outline-none'\"\r\n [ngClass]=\"{\r\n 'ml-4': subLevel === 0,\r\n 'ml-8': subLevel !== 0,\r\n 'c-tree__item--focus': isFocus && !sub,\r\n 'c-tree__item--hover': isHover && !sub\r\n }\"\r\n (focusin)=\"handleItemFocus(true, !sub)\"\r\n (focusout)=\"handleItemFocus(false, !sub)\"\r\n (mouseover)=\"handleItemHover(true, !sub)\"\r\n (mouseout)=\"handleItemHover(false, !sub)\"\r\n (keydown.home)=\"handleHome($event, !sub)\"\r\n (keydown.end)=\"handleEnd($event, !sub)\"\r\n (keydown.arrowup)=\"handleArrowUp($event, !sub)\"\r\n (keydown.arrowdown)=\"handleArrowDown($event, !sub)\"\r\n (keydown.arrowright)=\"handleArrowRight($event, !sub)\"\r\n (keydown.arrowleft)=\"handleArrowLeft($event, !sub)\"\r\n role=\"treeitem\"\r\n [attr.aria-expanded]=\"sub ? (expanded ? 'true' : 'false') : null\"\r\n [attr.aria-current]=\"isActive() && subLevel === 0 ? 'page' : null\"\r\n [attr.disabled]=\"disabled && subLevel === 0 ? 'disabled' : null\"\r\n [attr.aria-disabled]=\"disabled && subLevel === 0 ? 'true' : null\"\r\n [attr.tabIndex]=\"disabled && subLevel === 0 ? '-1' : null\">\r\n <div *ngIf=\"!sub && subLevel !== 0; else childrenTree\"\r\n [id]=\"id\"\r\n [class]=\"['block', classes] | makeHtmlList\"\r\n [attr.title]=\"title ? title : null\"\r\n [attr.disabled]=\"disabled ? 'disabled' : null\"\r\n\r\n [attr.role]=\"role ? role : 'tree'\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : (disabled ? 'true' : null)\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : (isActive() ? 'page' : null)\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.aria-modal]=\"ariaModal ? ariaModal : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : (disabled ? '-1' : null)\">\r\n <ng-container *ngTemplateOutlet=\"checkbox\"></ng-container>\r\n </div>\r\n</li>\r\n\r\n<ng-template #childrenTree>\r\n <div *ngIf=\"sub; else checkbox\" class=\"w-full h-full\"\r\n [ngClass]=\"{'c-tree__item--focus': isFocus && sub, 'c-tree__item--hover': isHover && sub}\"\r\n (focusin)=\"handleItemFocus(true)\"\r\n (focusout)=\"handleItemFocus(false)\"\r\n (mouseover)=\"handleItemHover(true)\"\r\n (mouseout)=\"handleItemHover(false)\"\r\n (keydown.home)=\"handleHome($event)\"\r\n (keydown.end)=\"handleEnd($event)\"\r\n (keydown.arrowup)=\"handleArrowUp($event)\"\r\n (keydown.arrowdown)=\"handleArrowDown($event)\"\r\n (keydown.arrowright)=\"handleArrowRight($event)\"\r\n (keydown.arrowLeft)=\"handleArrowLeft($event)\">\r\n <div [class]=\"['w-full flex items-center relative focus:bg-warning-base focus:outline-none focus:shadow-outline-focus focus:text-black text-left', classes] | makeHtmlList\"\r\n\r\n [attr.role]=\"role ? role : null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy ? ariaDescribedBy : null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy ? ariaLabelledBy : null\"\r\n [attr.aria-hidden]=\"ariaHidden ? ariaHidden : null\"\r\n [attr.aria-disabled]=\"ariaDisabled ? ariaDisabled : null\"\r\n [attr.aria-controls]=\"ariaControls ? ariaControls : null\"\r\n [attr.aria-current]=\"ariaCurrent ? ariaCurrent : null\"\r\n [attr.aria-live]=\"ariaLive ? ariaLive : null\"\r\n [attr.aria-expanded]=\"ariaExpanded ? ariaExpanded : null\"\r\n [attr.aria-errormessage]=\"ariaErrorMessage ? ariaErrorMessage : null\"\r\n [attr.aria-haspopup]=\"ariaHasPopup ? ariaHasPopup : null\"\r\n [attr.aria-modal]=\"ariaModal ? ariaModal : null\"\r\n [attr.tabindex]=\"tabindex ? tabindex : null\">\r\n <span class=\"absolute top-3 -left-4 flex items-center w-4 h-2.5 text-primary-base font-bold\">\r\n <svg (click)=\"expandSub(false)\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 10 10\" width=\"10\" height=\"10\" aria-hidden=\"true\" class=\"c-tree__minus\"><path fill=\"currentColor\" d=\"M9.286 5.714H.714a.714.714 0 010-1.428h8.572a.714.714 0 010 1.428z\"/></svg>\r\n <svg (click)=\"expandSub(true)\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 10 10\" width=\"10\" height=\"10\" aria-hidden=\"true\" class=\"c-tree__plus\"><path fill=\"currentColor\" d=\"M9.286 4.286H5.893a.179.179 0 01-.179-.179V.714a.714.714 0 00-1.428 0v3.393a.179.179 0 01-.179.179H.714a.714.714 0 000 1.428h3.393a.179.179 0 01.179.179v3.393a.714.714 0 001.428 0V5.893a.179.179 0 01.179-.179h3.393a.714.714 0 000-1.428z\"/></svg>\r\n </span>\r\n <ng-container *ngTemplateOutlet=\"checkbox\"></ng-container>\r\n </div>\r\n </div>\r\n\r\n <ng-container *desyCustomInnerContent=\"{ component: sub }\"></ng-container>\r\n</ng-template>\r\n\r\n<!-- Se incorpora el contenido m\u00EDnimo para funcionar con el objetivo de mejorar el rendimiento -->\r\n<ng-template #hidden>\r\n <li class=\"hidden\">\r\n <div #hiddenWrapper>\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n </div>\r\n <ng-container *desyCustomInnerContent=\"{ component: sub }\"></ng-container>\r\n </li>\r\n</ng-template>\r\n\r\n<ng-template #checkbox>\r\n <!--\r\n El *ngIf=\"name || parentName\" se realiza para no crear el checkbox hasta que se ha ejecutado el configureAllItems.\r\n Esto puede dar problemas porque, hasta que no se ejecuta esto, el desy-tree-checkbox no cuenta con el type actualizado (por defecto radio).\r\n Un ejemplo en el que esto puede ser problem\u00E1tico es al ser typo checkbox y darle un valor checked=true a varios los items, ya\r\n que el type todav\u00EDa no se ha transmitido aqu\u00ED. Como por defecto el type es radio, s\u00F3lo marcar\u00E1 el \u00FAltimo. Posteriormente,\r\n ya detectar\u00E1 el tipo y permitir\u00E1 seleccionar varios items, pero hasta entonces existe este problema.\r\n -->\r\n <desy-tree-checkbox *ngIf=\"name || parentName\"\r\n [name]=\"name ? name : parentName\"\r\n [id]=\"getId()\"\r\n [value]=\"value\"\r\n [classes]=\"classes\"\r\n [type]=\"type\"\r\n [(checked)]=\"checked\" (checkedChange)=\"handleCheckboxChange($event)\"\r\n [hasError]=\"inheritedHasError\"\r\n [disabled]=\"disabled\"\r\n [hasDividers]=\"hasDividers\"\r\n [describedBy]=\"[inheritedDescribedBy, hint?.id] | makeHtmlList\"\r\n [isIndeterminate]=\"isIndeterminate\"\r\n [(indeterminateChecked)]=\"indeterminateChecked\"\r\n (indeterminateCheckedChange)=\"handleIndeterminateCheckedChange($event)\"\r\n\r\n [labelComponent]=\"label\"\r\n [hintComponent]=\"hint\"\r\n\r\n [role]=\"role\"\r\n [ariaLabel]=\"ariaLabel\"\r\n [ariaDescribedBy]=\"ariaDescribedBy\"\r\n [ariaLabelledBy]=\"ariaLabelledBy\"\r\n [ariaHidden]=\"ariaHidden\"\r\n [ariaDisabled]=\"ariaDisabled\"\r\n [ariaControls]=\"ariaControls\"\r\n [ariaCurrent]=\"ariaCurrent\"\r\n [ariaLive]=\"ariaLive\"\r\n [ariaExpanded]=\"ariaExpanded\"\r\n [ariaErrorMessage]=\"ariaErrorMessage\"\r\n [ariaHasPopup]=\"ariaHasPopup\"\r\n [ariaModal]=\"ariaModal\"\r\n [tabindex]=\"tabindex\">\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n </desy-tree-checkbox>\r\n</ng-template>\r\n\r\n<ng-template #content>\r\n <div class=\"font-bold\" *ngIf=\"isActive(); else contentLabel\">\r\n <ng-container *ngTemplateOutlet=\"contentLabel\"></ng-container>\r\n </div>\r\n <ng-content select=\"desy-hint\"></ng-content>\r\n</ng-template>\r\n\r\n<ng-template #contentLabel>\r\n <ng-content select=\"desy-label\"></ng-content>\r\n</ng-template>\r\n",
318
323
  providers: [
319
324
  {
320
325
  provide: ITreeItem,
@@ -362,4 +367,4 @@ __decorate([
362
367
  __decorate([
363
368
  DesyContentChild()
364
369
  ], TreeItemComponent.prototype, "label", void 0);
365
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktZm9ybXMvY29tcG9uZW50cy90cmVlL3RyZWUtaXRlbS90cmVlLWl0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQUUsVUFBVSxFQUMzQixZQUFZLEVBQ1osVUFBVSxFQUFFLFdBQVcsRUFDdkIsS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNERBQTRELENBQUM7QUFDNUYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFFM0QsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDL0UsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDckUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sOERBQThELENBQUM7QUFDL0YsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBWWxFLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxzQkFBc0I7SUFtRTNELFlBQW9CLGNBQWlDLEVBQVUsT0FBbUI7UUFDaEYsS0FBSyxFQUFFLENBQUM7UUFEVSxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBbER4RSxrQkFBYSxHQUFz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a0JBQWtCLEVBQUUsQ0FBQztRQUN2QyxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7O0FBOVhjLG9DQUFrQixHQUFHLENBQUMsQ0FBQyxDQUFDLHdEQUF3RDs7WUFaaEcsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxnQkFBZ0I7Z0JBQzFCLDZ4UEFBeUM7Z0JBQ3pDLFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsU0FBUzt3QkFDbEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztxQkFDakQ7aUJBQ0Y7YUFDRjs7O1lBOUJDLGlCQUFpQjtZQUVBLFVBQVU7Ozs0QkFnQzFCLFNBQVMsU0FBQyxlQUFlO2lCQUd6QixLQUFLO21CQUNMLEtBQUs7b0JBQ0wsS0FBSztzQkFDTCxLQUFLO3FCQUNMLEtBQUs7dUJBQ0wsS0FBSztvQkFDTCxLQUFLOzBCQUNMLEtBQUs7OEJBQ0wsS0FBSztzQkFFTCxLQUFLOzRCQUNMLE1BQU07dUJBR04sS0FBSzs2QkFDTCxNQUFNO21DQUVOLEtBQUs7eUNBQ0wsTUFBTTtrQkFHTixlQUFlLFNBQUMsZ0JBQWdCO21CQUdoQyxlQUFlLFNBQUMsYUFBYTtvQkFHN0IsZUFBZSxTQUFDLGNBQWM7dUJBRTlCLFNBQVMsU0FBQyxxQkFBcUI7MEJBUy9CLFdBQVcsU0FBQyx5QkFBeUI7O0FBdEM3QjtJQURSLGlCQUFpQixDQUFDLHVCQUF1QixDQUFDOzZDQUN2QjtBQXFCZTtJQURsQyxnQkFBZ0IsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFDLENBQUM7OENBQ0g7QUFHekI7SUFEL0IsZ0JBQWdCLEVBQUU7K0NBQ2lDO0FBR25CO0lBRGhDLGdCQUFnQixFQUFFO2dEQUNvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZHJlbiwgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZiwgSG9zdEJpbmRpbmcsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtEZXN5Q29udGVudENoaWxkfSBmcm9tIFwiLi4vLi4vLi4vLi4vc2hhcmVkL2RlY29yYXRvcnMvZGVzeS1jb250ZW50LWNoaWxkLmRlY29yYXRvclwiO1xyXG5pbXBvcnQge1RyZWVTdWJDb21wb25lbnR9IGZyb20gXCIuLi90cmVlLXN1Yi90cmVlLXN1Yi5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtJVHJlZUl0ZW19IGZyb20gXCIuLi9pbnRlcmZhY2VzL2l0cmVlLWl0ZW1cIjtcclxuaW1wb3J0IHtIaW50Q29tcG9uZW50fSBmcm9tIFwiLi4vLi4vaGludC9oaW50LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0xhYmVsQ29tcG9uZW50fSBmcm9tIFwiLi4vLi4vbGFiZWwvbGFiZWwuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7UXVpdFRyZWVJdGVtRm9jdXNPcHRpb25zfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9xdWl0LXRyZWUtaXRlbS1mb2N1cy1vcHRpb25zXCI7XHJcbmltcG9ydCB7VHJlZUNoZWNrYm94Q29tcG9uZW50fSBmcm9tIFwiLi4vdHJlZS1jaGVja2JveC90cmVlLWNoZWNrYm94LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0FjY2Vzc2liaWxpdHlDb21wb25lbnR9IGZyb20gXCIuLi8uLi8uLi8uLi9zaGFyZWQvY29tcG9uZW50c1wiO1xyXG5pbXBvcnQge0Rlc3lPbklucHV0Q2hhbmdlfSBmcm9tIFwiLi4vLi4vLi4vLi4vc2hhcmVkL2RlY29yYXRvcnMvZGVzeS1vbi1pbnB1dC1jaGFuZ2UuZGVjb3JhdG9yXCI7XHJcbmltcG9ydCB7U2VhcmNoVXRpbHN9IGZyb20gXCIuLi8uLi8uLi8uLi9zaGFyZWQvdXRpbHMvc2VhcmNoLXV0aWxzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2Rlc3ktdHJlZS1pdGVtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHJlZS1pdGVtLmNvbXBvbmVudC5odG1sJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogSVRyZWVJdGVtLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUcmVlSXRlbUNvbXBvbmVudClcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmVlSXRlbUNvbXBvbmVudCBleHRlbmRzIEFjY2Vzc2liaWxpdHlDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIElUcmVlSXRlbSB7XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIF90cmVlSXRlbUtleVN1ZmZpeCA9IDA7IC8vIFN1ZmlqbyBlc3TDoXRpY28gcGFyYSBnZW5lcmFyIHNpZW1wcmUgY2xhdmVzIGRpc3RpbnRhc1xyXG4gIEBWaWV3Q2hpbGQoJ2hpZGRlbldyYXBwZXInKSBoaWRkZW5XcmFwcGVyOiBFbGVtZW50UmVmO1xyXG5cclxuICBARGVzeU9uSW5wdXRDaGFuZ2UoJ3NldERlZmF1bHRJZFJlY3Vyc2l2ZScpXHJcbiAgQElucHV0KCkgaWQ6IHN0cmluZztcclxuICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdmFsdWU6IHN0cmluZztcclxuICBASW5wdXQoKSBjbGFzc2VzOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgYWN0aXZlOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaGFzRGl2aWRlcnM6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgaXNJbmRldGVybWluYXRlOiBib29sZWFuO1xyXG5cclxuICBASW5wdXQoKSBjaGVja2VkOiBib29sZWFuO1xyXG4gIEBPdXRwdXQoKSBjaGVja2VkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIGNoZWNrZWRDaGFuZ2VGb3JUcmVlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBASW5wdXQoKSBleHBhbmRlZDogYm9vbGVhbjtcclxuICBAT3V0cHV0KCkgZXhwYW5kZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBJbnB1dCgpIGluZGV0ZXJtaW5hdGVDaGVja2VkOiBib29sZWFuO1xyXG4gIEBPdXRwdXQoKSBpbmRldGVybWluYXRlQ2hlY2tlZENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQERlc3lDb250ZW50Q2hpbGQoeyBvblNldENhbGxiYWNrTmFtZTogJ292ZXJyaWRlU3ViVmFsdWVzJ30pXHJcbiAgQENvbnRlbnRDaGlsZHJlbihUcmVlU3ViQ29tcG9uZW50KSBzdWI6IFRyZWVTdWJDb21wb25lbnQ7XHJcblxyXG4gIEBEZXN5Q29udGVudENoaWxkKClcclxuICBAQ29udGVudENoaWxkcmVuKEhpbnRDb21wb25lbnQpIGhpbnQ6IEhpbnRDb21wb25lbnQ7XHJcblxyXG4gIEBEZXN5Q29udGVudENoaWxkKClcclxuICBAQ29udGVudENoaWxkcmVuKExhYmVsQ29tcG9uZW50KSBsYWJlbDogTGFiZWxDb21wb25lbnQ7XHJcblxyXG4gIEBWaWV3Q2hpbGQoVHJlZUNoZWNrYm94Q29tcG9uZW50KSBjaGVja2JveDogVHJlZUNoZWNrYm94Q29tcG9uZW50O1xyXG5cclxuICAvKlxyXG4gICAqIElkZW50aWZpY2Fkb3IgZGVsIHdyYXBwZXIgZGVsIGNvbXBvbmVudGUuIFNlIHV0aWxpemEgcGFyYSByZWNvcnJlciBlbCDDoXJib2wgZW4gc2VudGlkbyBpbnZlcnNvIHkgcXVlIGNhZGEgaXRlbVxyXG4gICAqIHNlcGEgY3XDoWwgZXMgc3UgaXRlbS/DoXJib2wgcGFkcmUuXHJcbiAgICogRXN0byBlcyBuZWNlc2FyaW8geWEgcXVlLCBhIGxhIGhvcmEgZGUgY29uc3RydWlyIHVuIMOhcmJvbCBkaW7DoW1pY28gY29uIHRlbXBsYXRlcyxcclxuICAgKiBlbCBkZWNvcmFkb3IgQENvbnRlbnRDaGlsZHJlbiBubyBmdW5jaW9uYSBjb3JyZWN0YW1lbnRlIHkgbm8gbG9zIGRldGVjdGEuXHJcbiAgICogRGVqbyBlbCBlbmxhY2UgZGUgdW4gcHJvYmxlbWEgc2ltaWxhcjogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMjE3NTFcclxuICAgKi9cclxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGVzeS10cmVlLWl0ZW0ta2V5JylcclxuICByZWFkb25seSB0cmVlSXRlbUtleTogc3RyaW5nID0gVHJlZUl0ZW1Db21wb25lbnQuZ2VuZXJhdGVTdGF0aWNJdGVtS2V5KCk7XHJcblxyXG4gIHR5cGU6ICdyYWRpbyd8J2NoZWNrYm94J3xudWxsfHVuZGVmaW5lZDtcclxuICBzdWJMZXZlbDogbnVtYmVyOyAvLyBOaXZlbCBkZW50cm8gZGVsIGFyYm9sLiAwIHNvbiBsb3MgaXRlbXMgYSBuaXZlbCBkZSByYWl6LlxyXG5cclxuICAvLyBQcm9waWVkYWRlcyBkZWZpbmlkYXMgcG9yIGVsIGNvbXBvbmVudGUgw6FyYm9sIHF1ZSBlbCBpdGVtIHB1ZWRlIHV0aWxpemFyLCBzb2JyZXNjcmliaXIgbyBhbXBsaWFyXHJcbiAgcGFyZW50TmFtZTogc3RyaW5nO1xyXG4gIGRlZmF1bHRJZDtcclxuICBpbmhlcml0ZWRFeHBhbmRlZEZpcnN0TGV2ZWw6IGJvb2xlYW47XHJcbiAgaW5oZXJpdGVkRGVjb3VwbGVDaGlsZEZyb21QYXJlbnQ6IGJvb2xlYW47XHJcbiAgaW5oZXJpdGVkRGVzY3JpYmVkQnk6IHN0cmluZztcclxuICBpbmhlcml0ZWRIYXNFcnJvcjogYm9vbGVhbjtcclxuICBhbGxQYXJlbnRzRXhwYW5kZWQgPSB0cnVlOyAvLyBUcnVlIHNpIGVsIGVsZW1lbnRvIGVzIHZpc2libGUgc2Vnw7puIGxvcyBlbGVtZW50b3MgZXhwYW5kaWRvc1xyXG4gIGluaGVyaXRlZE1hdGNoZXNTZWFyY2ggPSB0cnVlOyAvLyBUcnVlIHNpIGVsIGVsZW1lbnRvIGVzIHZpc2libGUgc2Vnw7puIGxvcyBjcml0ZXJpb3MgZGUgYsO6c3F1ZWRhXHJcbiAgb3JkZXJJblRyZWU6IG51bWJlcjtcclxuXHJcbiAgLy8gRXZlbnRvIHBhcmEgZW1pdGlyIGFsIGNvbXBvbmVudGUgYXJib2wgY3VhbmRvIHNlIHByZXRlbmRlIGFiYW5kb25hciBlbCBmb2NvIGRlbCBpdGVtXHJcbiAgcXVpdEZvY3VzOiBFdmVudEVtaXR0ZXI8UXVpdFRyZWVJdGVtRm9jdXNPcHRpb25zPiA9IG5ldyBFdmVudEVtaXR0ZXI8UXVpdFRyZWVJdGVtRm9jdXNPcHRpb25zPigpO1xyXG5cclxuICBpc0ZvY3VzID0gZmFsc2U7XHJcbiAgaXNIb3ZlciA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc3ViICYmIHRoaXMuc3ViLml0ZW1MaXN0KSB7XHJcbiAgICAgIHRoaXMuc3ViLml0ZW1MaXN0LmZvckVhY2goaXRlbSA9PiAoaXRlbSBhcyBUcmVlSXRlbUNvbXBvbmVudCkucmVmcmVzaEFsbFBhcmVudHNFeHBhbmRlZFJlY3Vyc2l2ZSh0aGlzLmFsbFBhcmVudHNFeHBhbmRlZCAmJiB0aGlzLmV4cGFuZGVkKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChjb25zdCBwcm9wTmFtZSBpbiBjaGFuZ2VzKSB7XHJcbiAgICAgIGlmIChjaGFuZ2VzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xyXG4gICAgICAgIHN3aXRjaCAocHJvcE5hbWUpIHtcclxuICAgICAgICAgIGNhc2UgJ2NoZWNrZWQnOiB7XHJcbiAgICAgICAgICAgIC8vIFJlYXNpZ25hbW9zIGVsIHZhbG9yIGRlIGNoZWNrZWQgY3VhbmRvIGRldGVjdGFtb3MgZWwgY2FtYmlvIGVuIGxhIGVudHJhZGFcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRDaGVja2VkKHRoaXMuY2hlY2tlZCwgZmFsc2UsIGZhbHNlKTtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5pbmhlcml0ZWRFeHBhbmRlZEZpcnN0TGV2ZWwgJiYgdGhpcy5jaGVja2VkICYmICF0aGlzLmV4cGFuZGVkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGFuZFN1Yih0cnVlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICogTcOpdG9kb3MgZXhwdWVzdG9zIHF1ZSBwZXJtaXRlbiBjb25maWd1cmFyIGFsIMOtdGVtIGRlIGZvcm1hIGV4dGVybmFcclxuICAgKi9cclxuXHJcbiAgZm9jdXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNoZWNrYm94Py5mb2N1cygpO1xyXG4gICAgdGhpcy5oYW5kbGVJdGVtRm9jdXModHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBzZXRDaGVja2VkQXV0b21hdGljYWxseURlcGVuZGluZ09uQ2hpbGRyZW4oKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zdWIpIHtcclxuICAgICAgdGhpcy5zdWIuaXRlbUxpc3QuZm9yRWFjaChpdGVtID0+IChpdGVtIGFzIFRyZWVJdGVtQ29tcG9uZW50KS5zZXRDaGVja2VkQXV0b21hdGljYWxseURlcGVuZGluZ09uQ2hpbGRyZW4oKSk7XHJcbiAgICAgIGlmICh0aGlzLmFyZUFsbENoaWxkcmVuQ2hlY2tlZCgpKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaW5kZXRlcm1pbmF0ZUNoZWNrZWQpIHtcclxuICAgICAgICAgIHRoaXMuc2V0SW5kZXRlcm1pbmF0ZUNoZWNrZWQoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmNoZWNrZWQpIHtcclxuICAgICAgICAgIHRoaXMuc2V0Q2hlY2tlZCh0cnVlLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5oYXNDaGlsZHJlbkNoZWNrZWRPckluZGV0ZXJtaW5hdGUoKSkge1xyXG4gICAgICAgIGlmICghdGhpcy5pbmRldGVybWluYXRlQ2hlY2tlZCkge1xyXG4gICAgICAgICAgdGhpcy5zZXRJbmRldGVybWluYXRlQ2hlY2tlZCh0cnVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNoZWNrZWQpIHtcclxuICAgICAgICAgIHRoaXMuc2V0Q2hlY2tlZChmYWxzZSwgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLmluZGV0ZXJtaW5hdGVDaGVja2VkKSB7XHJcbiAgICAgICAgICB0aGlzLnNldEluZGV0ZXJtaW5hdGVDaGVja2VkKGZhbHNlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNoZWNrZWQpIHtcclxuICAgICAgICAgIHRoaXMuc2V0Q2hlY2tlZChmYWxzZSwgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWZyZXNoQWxsUGFyZW50c0V4cGFuZGVkUmVjdXJzaXZlKHZhbHVlKTogdm9pZCB7XHJcbiAgICB0aGlzLmFsbFBhcmVudHNFeHBhbmRlZCA9IHZhbHVlO1xyXG4gICAgaWYgKHRoaXMuc3ViKSB7XHJcbiAgICAgIHRoaXMuc3ViLml0ZW1MaXN0LmZvckVhY2goaXRlbSA9PiAoaXRlbSBhcyBUcmVlSXRlbUNvbXBvbmVudCkucmVmcmVzaEFsbFBhcmVudHNFeHBhbmRlZFJlY3Vyc2l2ZSh2YWx1ZSAmJiB0aGlzLmV4cGFuZGVkKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZXRlY3RDaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBleHBhbmRTdWIodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZXhwYW5kZWQgPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLnN1Yikge1xyXG4gICAgICB0aGlzLnN1Yi5pdGVtTGlzdC5mb3JFYWNoKGl0ZW0gPT4gKGl0ZW0gYXMgVHJlZUl0ZW1Db21wb25lbnQpLnJlZnJlc2hBbGxQYXJlbnRzRXhwYW5kZWRSZWN1cnNpdmUodGhpcy5hbGxQYXJlbnRzRXhwYW5kZWQgJiYgdmFsdWUpKTtcclxuICAgIH1cclxuICAgIHRoaXMuZXhwYW5kZWRDaGFuZ2UuZW1pdCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICAqIEdlc3Rpb24gZGUgZXZlbnRvc1xyXG4gICAqL1xyXG5cclxuICBoYW5kbGVDaGVja2JveENoYW5nZShjaGVja2VkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldENoZWNrZWQoY2hlY2tlZCwgZmFsc2UpXHJcbiAgICBpZiAodGhpcy5pbmhlcml0ZWRFeHBhbmRlZEZpcnN0TGV2ZWwgJiYgY2hlY2tlZCAmJiAhdGhpcy5leHBhbmRlZCkge1xyXG4gICAgICB0aGlzLmV4cGFuZFN1Yih0cnVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUluZGV0ZXJtaW5hdGVDaGVja2VkQ2hhbmdlKGluZGV0ZXJtaW5hdGU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuaW5kZXRlcm1pbmF0ZUNoZWNrZWRDaGFuZ2UuZW1pdChpbmRldGVybWluYXRlKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUl0ZW1Gb2N1cyh2YWx1ZSwgY29uZGl0aW9uPXRydWUpOiB2b2lkIHtcclxuICAgIGlmIChjb25kaXRpb24pIHtcclxuICAgICAgdGhpcy5pc0ZvY3VzID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVJdGVtSG92ZXIodmFsdWUsIGNvbmRpdGlvbj10cnVlKTogdm9pZCB7XHJcbiAgICBpZiAoY29uZGl0aW9uKSB7XHJcbiAgICAgIHRoaXMuaXNIb3ZlciA9IHZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlQXJyb3dVcChldmVudDogS2V5Ym9hcmRFdmVudCwgY29uZGl0aW9uPXRydWUpOiB2b2lkIHtcclxuICAgIGlmIChjb25kaXRpb24pIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgdGhpcy5xdWl0Rm9jdXMuZW1pdCh7XHJcbiAgICAgICAgbmV4dEVsZW1lbnQ6ICdwcmV2aW91cycsXHJcbiAgICAgICAgY3VycmVudEl0ZW06IHRoaXNcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVIb21lKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBjb25kaXRpb249dHJ1ZSk6IHZvaWQge1xyXG4gICAgaWYgKGNvbmRpdGlvbikge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB0aGlzLnF1aXRGb2N1cy5lbWl0KHtcclxuICAgICAgICBuZXh0RWxlbWVudDogJ2ZpcnN0JyxcclxuICAgICAgICBjdXJyZW50SXRlbTogdGhpc1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUVuZChldmVudDogS2V5Ym9hcmRFdmVudCwgY29uZGl0aW9uPXRydWUpOiB2b2lkIHtcclxuICAgIGlmIChjb25kaXRpb24pIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgdGhpcy5xdWl0Rm9jdXMuZW1pdCh7XHJcbiAgICAgICAgbmV4dEVsZW1lbnQ6ICdsYXN0JyxcclxuICAgICAgICBjdXJyZW50SXRlbTogdGhpc1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUFycm93RG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgY29uZGl0aW9uPXRydWUpOiB2b2lkIHtcclxuICAgIGlmIChjb25kaXRpb24pIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgdGhpcy5xdWl0Rm9jdXMuZW1pdCh7XHJcbiAgICAgICAgbmV4dEVsZW1lbnQ6ICduZXh0JyxcclxuICAgICAgICBjdXJyZW50SXRlbTogdGhpc1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUFycm93UmlnaHQoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGNvbmRpdGlvbj10cnVlKTogdm9pZCB7XHJcbiAgICBpZiAoY29uZGl0aW9uICYmIHRoaXMuc3ViICYmIHRoaXMuc3ViLml0ZW1MaXN0Py5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIGlmICh0aGlzLmV4cGFuZGVkKSB7XHJcbiAgICAgICAgdGhpcy5xdWl0Rm9jdXMuZW1pdCh7XHJcbiAgICAgICAgICBuZXh0RWxlbWVudDogJ2ZpcnN0Q2hpbGQnLFxyXG4gICAgICAgICAgY3VycmVudEl0ZW06IHRoaXNcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmV4cGFuZFN1Yih0cnVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlQXJyb3dMZWZ0KGV2ZW50OiBLZXlib2FyZEV2ZW50LCBjb25kaXRpb249dHJ1ZSk6IHZvaWQge1xyXG4gICAgaWYgKGNvbmRpdGlvbikge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICBpZiAodGhpcy5leHBhbmRlZCkge1xyXG4gICAgICAgIHRoaXMuZXhwYW5kU3ViKGZhbHNlKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnN1YkxldmVsID4gMCkge1xyXG4gICAgICAgIHRoaXMucXVpdEZvY3VzLmVtaXQoe1xyXG4gICAgICAgICAgbmV4dEVsZW1lbnQ6ICdwYXJlbnQnLFxyXG4gICAgICAgICAgY3VycmVudEl0ZW06IHRoaXNcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogU2V0dGVycyBhbmQgZ2V0dGVyc1xyXG4gICAqL1xyXG5cclxuICBzZXRDaGVja2VkKGNoZWNrZWQ6IGJvb2xlYW4sIGlnbm9yZUluVHJlZTogYm9vbGVhbiwgZW1pdEV2ZW50ID0gdHJ1ZSk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tlZCA9IGNoZWNrZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmluaGVyaXRlZERlY291cGxlQ2hpbGRGcm9tUGFyZW50ICYmIHRoaXMuc3ViICYmIHRoaXMuc3ViLml0ZW1MaXN0ICYmICF0aGlzLmluZGV0ZXJtaW5hdGVDaGVja2VkKSB7XHJcbiAgICAgIHRoaXMuc3ViLml0ZW1MaXN0LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgKGl0ZW0gYXMgVHJlZUl0ZW1Db21wb25lbnQpLnNldEluZGV0ZXJtaW5hdGVDaGVja2VkKGZhbHNlKTtcclxuICAgICAgICAoaXRlbSBhcyBUcmVlSXRlbUNvbXBvbmVudCkuc2V0Q2hlY2tlZChjaGVja2VkLCB0cnVlKVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZW1pdEV2ZW50KSB7XHJcbiAgICAgIHRoaXMuY2hlY2tlZENoYW5nZS5lbWl0KGNoZWNrZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghaWdub3JlSW5UcmVlKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tlZENoYW5nZUZvclRyZWUuZW1pdChjaGVja2VkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEluZGV0ZXJtaW5hdGVDaGVja2VkKGluZGV0ZXJtaW5hdGU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmluZGV0ZXJtaW5hdGVDaGVja2VkID0gaW5kZXRlcm1pbmF0ZTtcclxuICAgICAgdGhpcy5pbmRldGVybWluYXRlQ2hlY2tlZENoYW5nZS5lbWl0KGluZGV0ZXJtaW5hdGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0U3ViTGV2ZWwoc3ViTGV2ZWw6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJMZXZlbCA9IHN1YkxldmVsO1xyXG4gICAgaWYgKHRoaXMuc3ViICYmIHRoaXMuc3ViLml0ZW1MaXN0KSB7XHJcbiAgICAgIHRoaXMuc3ViLml0ZW1MaXN0LmZvckVhY2goaXRlbSA9PiAoaXRlbSBhcyBUcmVlSXRlbUNvbXBvbmVudCkuc2V0U3ViTGV2ZWwoc3ViTGV2ZWwgKyAxKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRPcmRlclJlY3Vyc2l2ZWx5KG9yZGVyOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgdGhpcy5vcmRlckluVHJlZSA9IG9yZGVyO1xyXG4gICAgbGV0IG5ld09yZGVyID0gb3JkZXIgKyAxO1xyXG4gICAgaWYgKHRoaXMuc3ViICYmIHRoaXMuc3ViLml0ZW1MaXN0KSB7XHJcbiAgICAgIHRoaXMuc3ViLml0ZW1MaXN0LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgbmV3T3JkZXIgPSAoaXRlbSBhcyBUcmVlSXRlbUNvbXBvbmVudCkuc2V0T3JkZXJSZWN1cnNpdmVseShuZXdPcmRlcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ld09yZGVyO1xyXG4gIH1cclxuXHJcbiAgc2V0RGVmYXVsdElkKGRlZmF1bHRJZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlZmF1bHRJZCA9IGRlZmF1bHRJZDtcclxuICAgIHRoaXMuc2V0RGVmYXVsdElkUmVjdXJzaXZlKCk7XHJcbiAgfVxyXG5cclxuICBzZXREZWZhdWx0SWRSZWN1cnNpdmUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zdWIgJiYgdGhpcy5zdWIuaXRlbUxpc3QpIHtcclxuICAgICAgdGhpcy5zdWIuaXRlbUxpc3QuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICAoaXRlbSBhcyBUcmVlSXRlbUNvbXBvbmVudCkuc2V0RGVmYXVsdElkKGBzdWItJHt0aGlzLmdldElkKCl9LSR7aW5kZXh9YCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0SWQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmlkID8gdGhpcy5pZCA6IHRoaXMuZGVmYXVsdElkO1xyXG4gIH1cclxuXHJcbiAgaXNIaWRkZW4oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIXRoaXMuaW5oZXJpdGVkTWF0Y2hlc1NlYXJjaCAmJiAoIXRoaXMuc3ViIHx8IHRoaXMuYXJlQWxsQ2hpbGRyZW5IaWRkZW4oKSk7XHJcbiAgfVxyXG5cclxuICBhcmVBbGxDaGlsZHJlbkhpZGRlbigpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5zdWIuaXRlbUxpc3Q7XHJcbiAgICByZXR1cm4gY2hpbGRyZW4uZmluZEluZGV4KGNoaWxkID0+ICEoY2hpbGQgYXMgVHJlZUl0ZW1Db21wb25lbnQpLmlzSGlkZGVuKCkpIDwgMDtcclxuICB9XHJcblxyXG4gIGFyZUFsbENoaWxkcmVuQ2hlY2tlZCgpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5zdWIuaXRlbUxpc3Q7XHJcbiAgICByZXR1cm4gY2hpbGRyZW4uZmluZEluZGV4KGNoaWxkID0+ICEoY2hpbGQgYXMgVHJlZUl0ZW1Db21wb25lbnQpLmNoZWNrZWQpIDwgMDtcclxuICB9XHJcblxyXG4gIGhhc0NoaWxkcmVuQ2hlY2tlZE9ySW5kZXRlcm1pbmF0ZSgpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5zdWIuaXRlbUxpc3Q7XHJcbiAgICByZXR1cm4gY2hpbGRyZW4uZmluZEluZGV4KGNoaWxkID0+IChjaGlsZCBhcyBUcmVlSXRlbUNvbXBvbmVudCkuY2hlY2tlZCB8fCAoY2hpbGQgYXMgVHJlZUl0ZW1Db21wb25lbnQpLmluZGV0ZXJtaW5hdGVDaGVja2VkKSA+PSAwO1xyXG4gIH1cclxuXHJcbiAgbWF0Y2hlc1RleHQodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IG1hdGNoZXM6IGJvb2xlYW47XHJcbiAgICBpZiAodGhpcy5hbGxQYXJlbnRzRXhwYW5kZWQgJiYgIXRoaXMuaXNIaWRkZW4oKSkge1xyXG4gICAgICBtYXRjaGVzID0gdGhpcy5jaGVja2JveD8ubWF0Y2hlc1RleHQodmFsdWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgaXRlbVRleHQgPSB0aGlzLmhpZGRlbldyYXBwZXIubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudFxyXG4gICAgICBtYXRjaGVzID0gU2VhcmNoVXRpbHMuY29udGFpbnNBbnlXb3JkRnJvbShpdGVtVGV4dCwgdmFsdWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1hdGNoZXM7XHJcbiAgfVxyXG5cclxuICBnZXRLZXkoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnRyZWVJdGVtS2V5O1xyXG4gIH1cclxuXHJcbiAgZ2V0UGFyZW50S2V5KCk6IHN0cmluZyB7XHJcbiAgICBsZXQgcGFyZW50S2V5OiBzdHJpbmc7XHJcbiAgICBsZXQgcGFyZW50RWxlbWVudCA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQ7XHJcbiAgICB3aGlsZSAocGFyZW50RWxlbWVudCAmJiBwYXJlbnRFbGVtZW50LnRhZ05hbWUgIT09ICdCT0RZJyAmJiBwYXJlbnRFbGVtZW50LnRhZ05hbWUgIT09ICdERVNZLVRSRUUtSVRFTScgJiYgcGFyZW50RWxlbWVudC50YWdOYW1lICE9PSAnREVTWS1UUkVFJykge1xyXG4gICAgICBwYXJlbnRFbGVtZW50ID0gcGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwYXJlbnRFbGVtZW50LnRhZ05hbWUgPT09ICdCT0RZJykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BhcmVudCBmb3IgdHJlZS1pdGVtIG5vdCBmb3VuZCcpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwYXJlbnRFbGVtZW50LnRhZ05hbWUgPT09ICdERVNZLVRSRUUnKSB7XHJcbiAgICAgIHBhcmVudEtleSA9ICdyb290JztcclxuICAgIH1cclxuXHJcbiAgICBpZiAocGFyZW50RWxlbWVudC50YWdOYW1lID09PSAnREVTWS1UUkVFLUlURU0nKSB7XHJcbiAgICAgIHBhcmVudEtleSA9IHBhcmVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkZXN5LXRyZWUtaXRlbS1rZXknKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcGFyZW50S2V5O1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAgKiBNw6l0b2RvcyBwcml2YWRvc1xyXG4gICAqL1xyXG5cclxuICAvKipcclxuICAgKiBHZW5lcmEgdW5hIGNsYXZlIMO6bmljYSBwYXJhIGVsIGNvbXBvbmVudGVcclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc3RhdGljIGdlbmVyYXRlU3RhdGljSXRlbUtleSgpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qga2V5ID0gJ3RyZWUtaXRlbS1rZXktJyArIFRyZWVJdGVtQ29tcG9uZW50Ll90cmVlSXRlbUtleVN1ZmZpeDtcclxuICAgIFRyZWVJdGVtQ29tcG9uZW50Ll90cmVlSXRlbUtleVN1ZmZpeCsrO1xyXG4gICAgcmV0dXJuIGtleTtcclxuICB9XHJcbn1cclxuIl19
370
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc3ktYW5ndWxhci9zcmMvbGliL2Rlc3ktZm9ybXMvY29tcG9uZW50cy90cmVlL3RyZWUtaXRlbS90cmVlLWl0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQUUsVUFBVSxFQUMzQixZQUFZLEVBQ1osVUFBVSxFQUFFLFdBQVcsRUFDdkIsS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNERBQTRELENBQUM7QUFDNUYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFFM0QsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFDL0UsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDckUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sOERBQThELENBQUM7QUFDL0YsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBWWxFLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxzQkFBc0I7SUFvRTNELFlBQW9CLGNBQWlDLEVBQVUsT0FBbUI7UUFDaEYsS0FBSyxFQUFFLENBQUM7UUFEVSxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBbkR4RSxrQkFBYSxHQUFz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LGdCQUFnQixFQUFFOytDQUNpQztBQUduQjtJQURoQyxnQkFBZ0IsRUFBRTtnREFDb0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBDb250ZW50Q2hpbGRyZW4sIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIGZvcndhcmRSZWYsIEhvc3RCaW5kaW5nLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7RGVzeUNvbnRlbnRDaGlsZH0gZnJvbSBcIi4uLy4uLy4uLy4uL3NoYXJlZC9kZWNvcmF0b3JzL2Rlc3ktY29udGVudC1jaGlsZC5kZWNvcmF0b3JcIjtcclxuaW1wb3J0IHtUcmVlU3ViQ29tcG9uZW50fSBmcm9tIFwiLi4vdHJlZS1zdWIvdHJlZS1zdWIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7SVRyZWVJdGVtfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9pdHJlZS1pdGVtXCI7XHJcbmltcG9ydCB7SGludENvbXBvbmVudH0gZnJvbSBcIi4uLy4uL2hpbnQvaGludC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtMYWJlbENvbXBvbmVudH0gZnJvbSBcIi4uLy4uL2xhYmVsL2xhYmVsLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge1F1aXRUcmVlSXRlbUZvY3VzT3B0aW9uc30gZnJvbSBcIi4uL2ludGVyZmFjZXMvcXVpdC10cmVlLWl0ZW0tZm9jdXMtb3B0aW9uc1wiO1xyXG5pbXBvcnQge1RyZWVDaGVja2JveENvbXBvbmVudH0gZnJvbSBcIi4uL3RyZWUtY2hlY2tib3gvdHJlZS1jaGVja2JveC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtBY2Nlc3NpYmlsaXR5Q29tcG9uZW50fSBmcm9tIFwiLi4vLi4vLi4vLi4vc2hhcmVkL2NvbXBvbmVudHNcIjtcclxuaW1wb3J0IHtEZXN5T25JbnB1dENoYW5nZX0gZnJvbSBcIi4uLy4uLy4uLy4uL3NoYXJlZC9kZWNvcmF0b3JzL2Rlc3ktb24taW5wdXQtY2hhbmdlLmRlY29yYXRvclwiO1xyXG5pbXBvcnQge1NlYXJjaFV0aWxzfSBmcm9tIFwiLi4vLi4vLi4vLi4vc2hhcmVkL3V0aWxzL3NlYXJjaC11dGlsc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkZXN5LXRyZWUtaXRlbScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RyZWUtaXRlbS5jb21wb25lbnQuaHRtbCcsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IElUcmVlSXRlbSxcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVHJlZUl0ZW1Db21wb25lbnQpXHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJlZUl0ZW1Db21wb25lbnQgZXh0ZW5kcyBBY2Nlc3NpYmlsaXR5Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBJVHJlZUl0ZW0ge1xyXG5cclxuICBwcml2YXRlIHN0YXRpYyBfdHJlZUl0ZW1LZXlTdWZmaXggPSAwOyAvLyBTdWZpam8gZXN0w6F0aWNvIHBhcmEgZ2VuZXJhciBzaWVtcHJlIGNsYXZlcyBkaXN0aW50YXNcclxuICBAVmlld0NoaWxkKCdoaWRkZW5XcmFwcGVyJykgaGlkZGVuV3JhcHBlcjogRWxlbWVudFJlZjtcclxuXHJcbiAgQERlc3lPbklucHV0Q2hhbmdlKCdzZXREZWZhdWx0SWRSZWN1cnNpdmUnKVxyXG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHZhbHVlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY2xhc3Nlczogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGFjdGl2ZTogYm9vbGVhbjtcclxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbjtcclxuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGhhc0RpdmlkZXJzOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGlzSW5kZXRlcm1pbmF0ZTogYm9vbGVhbjtcclxuXHJcbiAgQElucHV0KCkgY2hlY2tlZDogYm9vbGVhbjtcclxuICBAT3V0cHV0KCkgY2hlY2tlZENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBjaGVja2VkQ2hhbmdlRm9yVHJlZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQElucHV0KCkgZXhwYW5kZWQ6IGJvb2xlYW47XHJcbiAgQE91dHB1dCgpIGV4cGFuZGVkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBASW5wdXQoKSBpbmRldGVybWluYXRlQ2hlY2tlZDogYm9vbGVhbjtcclxuICBAT3V0cHV0KCkgaW5kZXRlcm1pbmF0ZUNoZWNrZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBEZXN5Q29udGVudENoaWxkKHsgb25TZXRDYWxsYmFja05hbWU6ICdvdmVycmlkZVN1YlZhbHVlcyd9KVxyXG4gIEBDb250ZW50Q2hpbGRyZW4oVHJlZVN1YkNvbXBvbmVudCkgc3ViOiBUcmVlU3ViQ29tcG9uZW50O1xyXG5cclxuICBARGVzeUNvbnRlbnRDaGlsZCgpXHJcbiAgQENvbnRlbnRDaGlsZHJlbihIaW50Q29tcG9uZW50KSBoaW50OiBIaW50Q29tcG9uZW50O1xyXG5cclxuICBARGVzeUNvbnRlbnRDaGlsZCgpXHJcbiAgQENvbnRlbnRDaGlsZHJlbihMYWJlbENvbXBvbmVudCkgbGFiZWw6IExhYmVsQ29tcG9uZW50O1xyXG5cclxuICBAVmlld0NoaWxkKFRyZWVDaGVja2JveENvbXBvbmVudCkgY2hlY2tib3g6IFRyZWVDaGVja2JveENvbXBvbmVudDtcclxuXHJcbiAgLypcclxuICAgKiBJZGVudGlmaWNhZG9yIGRlbCB3cmFwcGVyIGRlbCBjb21wb25lbnRlLiBTZSB1dGlsaXphIHBhcmEgcmVjb3JyZXIgZWwgw6FyYm9sIGVuIHNlbnRpZG8gaW52ZXJzbyB5IHF1ZSBjYWRhIGl0ZW1cclxuICAgKiBzZXBhIGN1w6FsIGVzIHN1IGl0ZW0vw6FyYm9sIHBhZHJlLlxyXG4gICAqIEVzdG8gZXMgbmVjZXNhcmlvIHlhIHF1ZSwgYSBsYSBob3JhIGRlIGNvbnN0cnVpciB1biDDoXJib2wgZGluw6FtaWNvIGNvbiB0ZW1wbGF0ZXMsXHJcbiAgICogZWwgZGVjb3JhZG9yIEBDb250ZW50Q2hpbGRyZW4gbm8gZnVuY2lvbmEgY29ycmVjdGFtZW50ZSB5IG5vIGxvcyBkZXRlY3RhLlxyXG4gICAqIERlam8gZWwgZW5sYWNlIGRlIHVuIHByb2JsZW1hIHNpbWlsYXI6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzIxNzUxXHJcbiAgICovXHJcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRlc3ktdHJlZS1pdGVtLWtleScpXHJcbiAgcmVhZG9ubHkgdHJlZUl0ZW1LZXk6IHN0cmluZyA9IFRyZWVJdGVtQ29tcG9uZW50LmdlbmVyYXRlU3RhdGljSXRlbUtleSgpO1xyXG5cclxuICB0eXBlOiAncmFkaW8nfCdjaGVja2JveCd8bnVsbHx1bmRlZmluZWQ7XHJcbiAgc3ViTGV2ZWw6IG51bWJlcjsgLy8gTml2ZWwgZGVudHJvIGRlbCBhcmJvbC4gMCBzb24gbG9zIGl0ZW1zIGEgbml2ZWwgZGUgcmFpei5cclxuXHJcbiAgLy8gUHJvcGllZGFkZXMgZGVmaW5pZGFzIHBvciBlbCBjb21wb25lbnRlIMOhcmJvbCBxdWUgZWwgaXRlbSBwdWVkZSB1dGlsaXphciwgc29icmVzY3JpYmlyIG8gYW1wbGlhclxyXG4gIHBhcmVudE5hbWU6IHN0cmluZztcclxuICBkZWZhdWx0SWQ7XHJcbiAgaW5oZXJpdGVkRXhwYW5kZWRGaXJzdExldmVsOiBib29sZWFuO1xyXG4gIGluaGVyaXRlZERlY291cGxlQ2hpbGRGcm9tUGFyZW50OiBib29sZWFuO1xyXG4gIGluaGVyaXRlZERlc2NyaWJlZEJ5OiBzdHJpbmc7XHJcbiAgaW5oZXJpdGVkSGFzRXJyb3I6IGJvb2xlYW47XHJcbiAgYWxsUGFyZW50c0V4cGFuZGVkID0gdHJ1ZTsgLy8gVHJ1ZSBzaSBlbCBlbGVtZW50byBlcyB2aXNpYmxlIHNlZ8O6biBsb3MgZWxlbWVudG9zIGV4cGFuZGlkb3NcclxuICBpbmhlcml0ZWRNYXRjaGVzU2VhcmNoID0gdHJ1ZTsgLy8gVHJ1ZSBzaSBlbCBlbGVtZW50byBlcyB2aXNpYmxlIHNlZ8O6biBsb3MgY3JpdGVyaW9zIGRlIGLDunNxdWVkYVxyXG4gIG9yZGVySW5UcmVlOiBudW1iZXI7XHJcblxyXG4gIC8vIEV2ZW50byBwYXJhIGVtaXRpciBhbCBjb21wb25lbnRlIGFyYm9sIGN1YW5kbyBzZSBwcmV0ZW5kZSBhYmFuZG9uYXIgZWwgZm9jbyBkZWwgaXRlbVxyXG4gIHF1aXRGb2N1czogRXZlbnRFbWl0dGVyPFF1aXRUcmVlSXRlbUZvY3VzT3B0aW9ucz4gPSBuZXcgRXZlbnRFbWl0dGVyPFF1aXRUcmVlSXRlbUZvY3VzT3B0aW9ucz4oKTtcclxuXHJcbiAgaXNGb2N1cyA9IGZhbHNlO1xyXG4gIGlzSG92ZXIgPSBmYWxzZTtcclxuICBwcml2YXRlIF9tYXRjaGVzVmFsaWRUZXh0ID0gZmFsc2U7IC8vIFRydWUgc2kgZWwgY29udGVuaWRvIGRlbCBpdGVtIGVuY2FqYSBjb24gbG9zIGNyaXRlcmlvcyBkZSBiw7pzcXVlZGEgeSBzZSBlc3TDoSBmaWx0cmFuZG9cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZikge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnN1YiAmJiB0aGlzLnN1Yi5pdGVtTGlzdCkge1xyXG4gICAgICB0aGlzLnN1Yi5pdGVtTGlzdC5mb3JFYWNoKGl0ZW0gPT4gKGl0ZW0gYXMgVHJlZUl0ZW1Db21wb25lbnQpLnJlZnJlc2hBbGxQYXJlbnRzRXhwYW5kZWRSZWN1cnNpdmUodGhpcy5hbGxQYXJlbnRzRXhwYW5kZWQgJiYgdGhpcy5leHBhbmRlZCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoY29uc3QgcHJvcE5hbWUgaW4gY2hhbmdlcykge1xyXG4gICAgICBpZiAoY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcclxuICAgICAgICBzd2l0Y2ggKHByb3BOYW1lKSB7XHJcbiAgICAgICAgICBjYXNlICdjaGVja2VkJzoge1xyXG4gICAgICAgICAgICAvLyBSZWFzaWduYW1vcyBlbCB2YWxvciBkZSBjaGVja2VkIGN1YW5kbyBkZXRlY3RhbW9zIGVsIGNhbWJpbyBlbiBsYSBlbnRyYWRhXHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0Q2hlY2tlZCh0aGlzLmNoZWNrZWQsIGZhbHNlLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuaW5oZXJpdGVkRXhwYW5kZWRGaXJzdExldmVsICYmIHRoaXMuY2hlY2tlZCAmJiAhdGhpcy5leHBhbmRlZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5leHBhbmRTdWIodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICAqIE3DqXRvZG9zIGV4cHVlc3RvcyBxdWUgcGVybWl0ZW4gY29uZmlndXJhciBhbCDDrXRlbSBkZSBmb3JtYSBleHRlcm5hXHJcbiAgICovXHJcblxyXG4gIGZvY3VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jaGVja2JveD8uZm9jdXMoKTtcclxuICAgIHRoaXMuaGFuZGxlSXRlbUZvY3VzKHRydWUpO1xyXG4gIH1cclxuXHJcbiAgc2V0Q2hlY2tlZEF1dG9tYXRpY2FsbHlEZXBlbmRpbmdPbkNoaWxkcmVuKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc3ViKSB7XHJcbiAgICAgIHRoaXMuc3ViLml0ZW1MaXN0LmZvckVhY2goaXRlbSA9PiAoaXRlbSBhcyBUcmVlSXRlbUNvbXBvbmVudCkuc2V0Q2hlY2tlZEF1dG9tYXRpY2FsbHlEZXBlbmRpbmdPbkNoaWxkcmVuKCkpO1xyXG4gICAgICBpZiAodGhpcy5hcmVBbGxDaGlsZHJlbkNoZWNrZWQoKSkge1xyXG4gICAgICAgIGlmICh0aGlzLmluZGV0ZXJtaW5hdGVDaGVja2VkKSB7XHJcbiAgICAgICAgICB0aGlzLnNldEluZGV0ZXJtaW5hdGVDaGVja2VkKGZhbHNlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5jaGVja2VkKSB7XHJcbiAgICAgICAgICB0aGlzLnNldENoZWNrZWQodHJ1ZSwgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaGFzQ2hpbGRyZW5DaGVja2VkT3JJbmRldGVybWluYXRlKCkpIHtcclxuICAgICAgICBpZiAoIXRoaXMuaW5kZXRlcm1pbmF0ZUNoZWNrZWQpIHtcclxuICAgICAgICAgIHRoaXMuc2V0SW5kZXRlcm1pbmF0ZUNoZWNrZWQodHJ1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5jaGVja2VkKSB7XHJcbiAgICAgICAgICB0aGlzLnNldENoZWNrZWQoZmFsc2UsIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodGhpcy5pbmRldGVybWluYXRlQ2hlY2tlZCkge1xyXG4gICAgICAgICAgdGhpcy5zZXRJbmRldGVybWluYXRlQ2hlY2tlZChmYWxzZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5jaGVja2VkKSB7XHJcbiAgICAgICAgICB0aGlzLnNldENoZWNrZWQoZmFsc2UsIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVmcmVzaEFsbFBhcmVudHNFeHBhbmRlZFJlY3Vyc2l2ZSh2YWx1ZSk6IHZvaWQge1xyXG4gICAgdGhpcy5hbGxQYXJlbnRzRXhwYW5kZWQgPSB2YWx1ZTtcclxuICAgIGlmICh0aGlzLnN1Yikge1xyXG4gICAgICB0aGlzLnN1Yi5pdGVtTGlzdC5mb3JFYWNoKGl0ZW0gPT4gKGl0ZW0gYXMgVHJlZUl0ZW1Db21wb25lbnQpLnJlZnJlc2hBbGxQYXJlbnRzRXhwYW5kZWRSZWN1cnNpdmUodmFsdWUgJiYgdGhpcy5leHBhbmRlZCkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGV0ZWN0Q2hhbmdlcygpOiB2b2lkIHtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgZXhwYW5kU3ViKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmV4cGFuZGVkID0gdmFsdWU7XHJcbiAgICBpZiAodGhpcy5zdWIpIHtcclxuICAgICAgdGhpcy5zdWIuaXRlbUxpc3QuZm9yRWFjaChpdGVtID0+IChpdGVtIGFzIFRyZWVJdGVtQ29tcG9uZW50KS5yZWZyZXNoQWxsUGFyZW50c0V4cGFuZGVkUmVjdXJzaXZlKHRoaXMuYWxsUGFyZW50c0V4cGFuZGVkICYmIHZhbHVlKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmV4cGFuZGVkQ2hhbmdlLmVtaXQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAgKiBHZXN0aW9uIGRlIGV2ZW50b3NcclxuICAgKi9cclxuXHJcbiAgaGFuZGxlQ2hlY2tib3hDaGFuZ2UoY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRDaGVja2VkKGNoZWNrZWQsIGZhbHNlKTtcclxuICAgIGlmICh0aGlzLmluaGVyaXRlZEV4cGFuZGVkRmlyc3RMZXZlbCAmJiBjaGVja2VkICYmICF0aGlzLmV4cGFuZGVkKSB7XHJcbiAgICAgIHRoaXMuZXhwYW5kU3ViKHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlSW5kZXRlcm1pbmF0ZUNoZWNrZWRDaGFuZ2UoaW5kZXRlcm1pbmF0ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5pbmRldGVybWluYXRlQ2hlY2tlZENoYW5nZS5lbWl0KGluZGV0ZXJtaW5hdGUpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlSXRlbUZvY3VzKHZhbHVlLCBjb25kaXRpb249dHJ1ZSk6IHZvaWQge1xyXG4gICAgaWYgKGNvbmRpdGlvbikge1xyXG4gICAgICB0aGlzLmlzRm9jdXMgPSB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUl0ZW1Ib3Zlcih2YWx1ZSwgY29uZGl0aW9uPXRydWUpOiB2b2lkIHtcclxuICAgIGlmIChjb25kaXRpb24pIHtcclxuICAgICAgdGhpcy5pc0hvdmVyID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVBcnJvd1VwKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBjb25kaXRpb249dHJ1ZSk6IHZvaWQge1xyXG4gICAgaWYgKGNvbmRpdGlvbikge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB0aGlzLnF1aXRGb2N1cy5lbWl0KHtcclxuICAgICAgICBuZXh0RWxlbWVudDogJ3ByZXZpb3VzJyxcclxuICAgICAgICBjdXJyZW50SXRlbTogdGhpc1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUhvbWUoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGNvbmRpdGlvbj10cnVlKTogdm9pZCB7XHJcbiAgICBpZiAoY29uZGl0aW9uKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHRoaXMucXVpdEZvY3VzLmVtaXQoe1xyXG4gICAgICAgIG5leHRFbGVtZW50OiAnZmlyc3QnLFxyXG4gICAgICAgIGN1cnJlbnRJdGVtOiB0aGlzXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlRW5kKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBjb25kaXRpb249dHJ1ZSk6IHZvaWQge1xyXG4gICAgaWYgKGNvbmRpdGlvbikge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB0aGlzLnF1aXRGb2N1cy5lbWl0KHtcclxuICAgICAgICBuZXh0RWxlbWVudDogJ2xhc3QnLFxyXG4gICAgICAgIGN1cnJlbnRJdGVtOiB0aGlzXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlQXJyb3dEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBjb25kaXRpb249dHJ1ZSk6IHZvaWQge1xyXG4gICAgaWYgKGNvbmRpdGlvbikge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB0aGlzLnF1aXRGb2N1cy5lbWl0KHtcclxuICAgICAgICBuZXh0RWxlbWVudDogJ25leHQnLFxyXG4gICAgICAgIGN1cnJlbnRJdGVtOiB0aGlzXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlQXJyb3dSaWdodChldmVudDogS2V5Ym9hcmRFdmVudCwgY29uZGl0aW9uPXRydWUpOiB2b2lkIHtcclxuICAgIGlmIChjb25kaXRpb24gJiYgdGhpcy5zdWIgJiYgdGhpcy5zdWIuaXRlbUxpc3Q/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgaWYgKHRoaXMuZXhwYW5kZWQpIHtcclxuICAgICAgICB0aGlzLnF1aXRGb2N1cy5lbWl0KHtcclxuICAgICAgICAgIG5leHRFbGVtZW50OiAnZmlyc3RDaGlsZCcsXHJcbiAgICAgICAgICBjdXJyZW50SXRlbTogdGhpc1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZXhwYW5kU3ViKHRydWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVBcnJvd0xlZnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGNvbmRpdGlvbj10cnVlKTogdm9pZCB7XHJcbiAgICBpZiAoY29uZGl0aW9uKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIGlmICh0aGlzLmV4cGFuZGVkKSB7XHJcbiAgICAgICAgdGhpcy5leHBhbmRTdWIoZmFsc2UpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuc3ViTGV2ZWwgPiAwKSB7XHJcbiAgICAgICAgdGhpcy5xdWl0Rm9jdXMuZW1pdCh7XHJcbiAgICAgICAgICBuZXh0RWxlbWVudDogJ3BhcmVudCcsXHJcbiAgICAgICAgICBjdXJyZW50SXRlbTogdGhpc1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBTZXR0ZXJzIGFuZCBnZXR0ZXJzXHJcbiAgICovXHJcblxyXG4gIHNldENoZWNrZWQoY2hlY2tlZDogYm9vbGVhbiwgaWdub3JlSW5UcmVlOiBib29sZWFuLCBlbWl0RXZlbnQgPSB0cnVlKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5jaGVja2VkID0gY2hlY2tlZDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuaW5oZXJpdGVkRGVjb3VwbGVDaGlsZEZyb21QYXJlbnQgJiYgdGhpcy5zdWIgJiYgdGhpcy5zdWIuaXRlbUxpc3QgJiYgIXRoaXMuaW5kZXRlcm1pbmF0ZUNoZWNrZWQpIHtcclxuICAgICAgdGhpcy5zdWIuaXRlbUxpc3QuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAoaXRlbSBhcyBUcmVlSXRlbUNvbXBvbmVudCkuc2V0SW5kZXRlcm1pbmF0ZUNoZWNrZWQoZmFsc2UpO1xyXG4gICAgICAgIChpdGVtIGFzIFRyZWVJdGVtQ29tcG9uZW50KS5zZXRDaGVja2VkKGNoZWNrZWQsIHRydWUpXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChlbWl0RXZlbnQpIHtcclxuICAgICAgdGhpcy5jaGVja2VkQ2hhbmdlLmVtaXQoY2hlY2tlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFpZ25vcmVJblRyZWUpIHtcclxuICAgICAgdGhpcy5jaGVja2VkQ2hhbmdlRm9yVHJlZS5lbWl0KGNoZWNrZWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0SW5kZXRlcm1pbmF0ZUNoZWNrZWQoaW5kZXRlcm1pbmF0ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZUNoZWNrZWQgPSBpbmRldGVybWluYXRlO1xyXG4gICAgICB0aGlzLmluZGV0ZXJtaW5hdGVDaGVja2VkQ2hhbmdlLmVtaXQoaW5kZXRlcm1pbmF0ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRTdWJMZXZlbChzdWJMZXZlbDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1YkxldmVsID0gc3ViTGV2ZWw7XHJcbiAgICBpZiAodGhpcy5zdWIgJiYgdGhpcy5zdWIuaXRlbUxpc3QpIHtcclxuICAgICAgdGhpcy5zdWIuaXRlbUxpc3QuZm9yRWFjaChpdGVtID0+IChpdGVtIGFzIFRyZWVJdGVtQ29tcG9uZW50KS5zZXRTdWJMZXZlbChzdWJMZXZlbCArIDEpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldE9yZGVyUmVjdXJzaXZlbHkob3JkZXI6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICB0aGlzLm9yZGVySW5UcmVlID0gb3JkZXI7XHJcbiAgICBsZXQgbmV3T3JkZXIgPSBvcmRlciArIDE7XHJcbiAgICBpZiAodGhpcy5zdWIgJiYgdGhpcy5zdWIuaXRlbUxpc3QpIHtcclxuICAgICAgdGhpcy5zdWIuaXRlbUxpc3QuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICBuZXdPcmRlciA9IChpdGVtIGFzIFRyZWVJdGVtQ29tcG9uZW50KS5zZXRPcmRlclJlY3Vyc2l2ZWx5KG5ld09yZGVyKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3T3JkZXI7XHJcbiAgfVxyXG5cclxuICBzZXREZWZhdWx0SWQoZGVmYXVsdElkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVmYXVsdElkID0gZGVmYXVsdElkO1xyXG4gICAgdGhpcy5zZXREZWZhdWx0SWRSZWN1cnNpdmUoKTtcclxuICB9XHJcblxyXG4gIHNldERlZmF1bHRJZFJlY3Vyc2l2ZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnN1YiAmJiB0aGlzLnN1Yi5pdGVtTGlzdCkge1xyXG4gICAgICB0aGlzLnN1Yi5pdGVtTGlzdC5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIChpdGVtIGFzIFRyZWVJdGVtQ29tcG9uZW50KS5zZXREZWZhdWx0SWQoYHN1Yi0ke3RoaXMuZ2V0SWQoKX0tJHtpbmRleH1gKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRJZCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuaWQgPyB0aGlzLmlkIDogdGhpcy5kZWZhdWx0SWQ7XHJcbiAgfVxyXG5cclxuICBpc0hpZGRlbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhdGhpcy5pbmhlcml0ZWRNYXRjaGVzU2VhcmNoICYmICghdGhpcy5zdWIgfHwgdGhpcy5hcmVBbGxDaGlsZHJlbkhpZGRlbigpKTtcclxuICB9XHJcblxyXG4gIGFyZUFsbENoaWxkcmVuSGlkZGVuKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLnN1Yi5pdGVtTGlzdDtcclxuICAgIHJldHVybiBjaGlsZHJlbi5maW5kSW5kZXgoY2hpbGQgPT4gIShjaGlsZCBhcyBUcmVlSXRlbUNvbXBvbmVudCkuaXNIaWRkZW4oKSkgPCAwO1xyXG4gIH1cclxuXHJcbiAgYXJlQWxsQ2hpbGRyZW5DaGVja2VkKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLnN1Yi5pdGVtTGlzdDtcclxuICAgIHJldHVybiBjaGlsZHJlbi5maW5kSW5kZXgoY2hpbGQgPT4gIShjaGlsZCBhcyBUcmVlSXRlbUNvbXBvbmVudCkuY2hlY2tlZCkgPCAwO1xyXG4gIH1cclxuXHJcbiAgaGFzQ2hpbGRyZW5DaGVja2VkT3JJbmRldGVybWluYXRlKCk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLnN1Yi5pdGVtTGlzdDtcclxuICAgIHJldHVybiBjaGlsZHJlbi5maW5kSW5kZXgoY2hpbGQgPT4gKGNoaWxkIGFzIFRyZWVJdGVtQ29tcG9uZW50KS5jaGVja2VkIHx8IChjaGlsZCBhcyBUcmVlSXRlbUNvbXBvbmVudCkuaW5kZXRlcm1pbmF0ZUNoZWNrZWQpID49IDA7XHJcbiAgfVxyXG5cclxuICBtYXRjaGVzVGV4dCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgbWF0Y2hlczogYm9vbGVhbjtcclxuICAgIGlmICh0aGlzLmFsbFBhcmVudHNFeHBhbmRlZCAmJiAhdGhpcy5pc0hpZGRlbigpKSB7XHJcbiAgICAgIG1hdGNoZXMgPSB0aGlzLmNoZWNrYm94Py5tYXRjaGVzVGV4dCh2YWx1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBpdGVtVGV4dCA9IHRoaXMuaGlkZGVuV3JhcHBlci5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50O1xyXG4gICAgICBtYXRjaGVzID0gU2VhcmNoVXRpbHMuY29udGFpbnNBbnlXb3JkRnJvbShpdGVtVGV4dCwgdmFsdWUpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fbWF0Y2hlc1ZhbGlkVGV4dCA9IHZhbHVlID8gbWF0Y2hlcyA6IGZhbHNlO1xyXG4gICAgcmV0dXJuIG1hdGNoZXM7XHJcbiAgfVxyXG5cclxuICBnZXRLZXkoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnRyZWVJdGVtS2V5O1xyXG4gIH1cclxuXHJcbiAgZ2V0UGFyZW50S2V5KCk6IHN0cmluZyB7XHJcbiAgICBsZXQgcGFyZW50S2V5OiBzdHJpbmc7XHJcbiAgICBsZXQgcGFyZW50RWxlbWVudCA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQ7XHJcbiAgICB3aGlsZSAocGFyZW50RWxlbWVudCAmJiBwYXJlbnRFbGVtZW50LnRhZ05hbWUgIT09ICdCT0RZJyAmJiBwYXJlbnRFbGVtZW50LnRhZ05hbWUgIT09ICdERVNZLVRSRUUtSVRFTScgJiYgcGFyZW50RWxlbWVudC50YWdOYW1lICE9PSAnREVTWS1UUkVFJykge1xyXG4gICAgICBwYXJlbnRFbGVtZW50ID0gcGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwYXJlbnRFbGVtZW50LnRhZ05hbWUgPT09ICdCT0RZJykge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BhcmVudCBmb3IgdHJlZS1pdGVtIG5vdCBmb3VuZCcpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChwYXJlbnRFbGVtZW50LnRhZ05hbWUgPT09ICdERVNZLVRSRUUnKSB7XHJcbiAgICAgIHBhcmVudEtleSA9ICdyb290JztcclxuICAgIH1cclxuXHJcbiAgICBpZiAocGFyZW50RWxlbWVudC50YWdOYW1lID09PSAnREVTWS1UUkVFLUlURU0nKSB7XHJcbiAgICAgIHBhcmVudEtleSA9IHBhcmVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkZXN5LXRyZWUtaXRlbS1rZXknKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcGFyZW50S2V5O1xyXG4gIH1cclxuXHJcbiAgaXNBY3RpdmUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5hY3RpdmUgfHwgdGhpcy5fbWF0Y2hlc1ZhbGlkVGV4dDtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICogTcOpdG9kb3MgcHJpdmFkb3NcclxuICAgKi9cclxuXHJcbiAgLyoqXHJcbiAgICogR2VuZXJhIHVuYSBjbGF2ZSDDum5pY2EgcGFyYSBlbCBjb21wb25lbnRlXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcml2YXRlIHN0YXRpYyBnZW5lcmF0ZVN0YXRpY0l0ZW1LZXkoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGtleSA9ICd0cmVlLWl0ZW0ta2V5LScgKyBUcmVlSXRlbUNvbXBvbmVudC5fdHJlZUl0ZW1LZXlTdWZmaXg7XHJcbiAgICBUcmVlSXRlbUNvbXBvbmVudC5fdHJlZUl0ZW1LZXlTdWZmaXgrKztcclxuICAgIHJldHVybiBrZXk7XHJcbiAgfVxyXG59XHJcbiJdfQ==