design-angular-kit 1.3.2 → 1.5.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 (163) hide show
  1. package/fesm2022/design-angular-kit.mjs +621 -418
  2. package/fesm2022/design-angular-kit.mjs.map +1 -1
  3. package/lib/components/core/avatar/avatar-extra-text.directive.d.ts +6 -0
  4. package/lib/components/core/avatar/avatar-group/avatar-group.component.d.ts +5 -0
  5. package/lib/components/core/avatar/avatar-presence.directive.d.ts +17 -0
  6. package/lib/components/core/avatar/avatar-status.directive.d.ts +17 -0
  7. package/lib/components/core/avatar/avatar-wrapper.directive.d.ts +9 -0
  8. package/lib/components/core/avatar/avatar.module.d.ts +5 -1
  9. package/lib/components/core/list/list-item/list-item.component.d.ts +4 -1
  10. package/lib/components/core/video-player/video-player.config.d.ts +18 -18
  11. package/lib/components/form/transfer/store/transfer.reducers.d.ts +35 -35
  12. package/lib/components/navigation/footer/footer.component.d.ts +6 -0
  13. package/lib/design-angular-kit.module.d.ts +13 -12
  14. package/package.json +11 -10
  15. package/public_api.d.ts +7 -2
  16. package/schematics/ng-add/index.js +1 -1
  17. package/schematics/ng-add/index.js.map +1 -1
  18. package/schematics/ng-add/rules/setup-project/add-animations.js +1 -2
  19. package/schematics/ng-add/rules/setup-project/add-animations.js.map +1 -1
  20. package/schematics/ng-add/rules/setup-project/add-assets.js +1 -2
  21. package/schematics/ng-add/rules/setup-project/add-assets.js.map +1 -1
  22. package/schematics/ng-add/rules/setup-project/add-design-angular-kit.js +1 -2
  23. package/schematics/ng-add/rules/setup-project/add-design-angular-kit.js.map +1 -1
  24. package/schematics/ng-add/rules/setup-project/add-http-client.js +1 -2
  25. package/schematics/ng-add/rules/setup-project/add-http-client.js.map +1 -1
  26. package/schematics/ng-add/rules/setup-project/add-import-to-style-file.js +1 -2
  27. package/schematics/ng-add/rules/setup-project/add-import-to-style-file.js.map +1 -1
  28. package/schematics/ng-add/rules/setup-project/add-localisation.js +1 -2
  29. package/schematics/ng-add/rules/setup-project/add-localisation.js.map +1 -1
  30. package/schematics/ng-add/rules/setup-project/angular-json-helper.js +1 -2
  31. package/schematics/ng-add/rules/setup-project/angular-json-helper.js.map +1 -1
  32. package/schematics/ng-add/setup-project.js +2 -2
  33. package/schematics/ng-add/setup-project.js.map +1 -1
  34. package/schematics/ng-add/utils.js +13 -6
  35. package/schematics/ng-add/utils.js.map +1 -1
  36. package/schematics/ng-add/utils.spec.d.ts +1 -0
  37. package/schematics/ng-add/utils.spec.js +48 -0
  38. package/schematics/ng-add/utils.spec.js.map +1 -0
  39. package/schematics/ng-add/versions-helper.js +11 -19
  40. package/schematics/ng-add/versions-helper.js.map +1 -1
  41. package/schematics/ng-add/versions-helper.spec.d.ts +1 -0
  42. package/schematics/ng-add/versions-helper.spec.js +46 -0
  43. package/schematics/ng-add/versions-helper.spec.js.map +1 -0
  44. package/esm2022/design-angular-kit.mjs +0 -5
  45. package/esm2022/lib/abstracts/abstract-form.component.mjs +0 -199
  46. package/esm2022/lib/abstracts/abstract.component.mjs +0 -46
  47. package/esm2022/lib/components/core/accordion/accordion.component.mjs +0 -39
  48. package/esm2022/lib/components/core/alert/alert.component.mjs +0 -71
  49. package/esm2022/lib/components/core/avatar/avatar-dropdown/avatar-dropdown.component.mjs +0 -43
  50. package/esm2022/lib/components/core/avatar/avatar-group/avatar-group.component.mjs +0 -40
  51. package/esm2022/lib/components/core/avatar/avatar.directive.mjs +0 -78
  52. package/esm2022/lib/components/core/avatar/avatar.module.mjs +0 -33
  53. package/esm2022/lib/components/core/badge/badge.directive.mjs +0 -39
  54. package/esm2022/lib/components/core/button/button.directive.mjs +0 -80
  55. package/esm2022/lib/components/core/callout/callout.component.mjs +0 -64
  56. package/esm2022/lib/components/core/card/card.component.mjs +0 -59
  57. package/esm2022/lib/components/core/carousel/carousel/carousel.component.mjs +0 -86
  58. package/esm2022/lib/components/core/carousel/carousel-item/carousel-item.component.mjs +0 -19
  59. package/esm2022/lib/components/core/carousel/carousel.module.mjs +0 -18
  60. package/esm2022/lib/components/core/chip/chip.component.mjs +0 -136
  61. package/esm2022/lib/components/core/collapse/collapse.component.mjs +0 -116
  62. package/esm2022/lib/components/core/dimmer/dimmer-buttons/dimmer-buttons.component.mjs +0 -27
  63. package/esm2022/lib/components/core/dimmer/dimmer-icon/dimmer-icon.component.mjs +0 -11
  64. package/esm2022/lib/components/core/dimmer/dimmer.component.mjs +0 -55
  65. package/esm2022/lib/components/core/dimmer/dimmer.module.mjs +0 -19
  66. package/esm2022/lib/components/core/dropdown/dropdown/dropdown.component.mjs +0 -147
  67. package/esm2022/lib/components/core/dropdown/dropdown-item/dropdown-item.component.mjs +0 -70
  68. package/esm2022/lib/components/core/dropdown/dropdown.module.mjs +0 -18
  69. package/esm2022/lib/components/core/forward/forward.directive.mjs +0 -57
  70. package/esm2022/lib/components/core/link/link.component.mjs +0 -42
  71. package/esm2022/lib/components/core/list/list/list.component.mjs +0 -22
  72. package/esm2022/lib/components/core/list/list-item/list-item.component.mjs +0 -56
  73. package/esm2022/lib/components/core/list/list.module.mjs +0 -18
  74. package/esm2022/lib/components/core/modal/modal.component.mjs +0 -194
  75. package/esm2022/lib/components/core/notifications/notifications.component.mjs +0 -111
  76. package/esm2022/lib/components/core/pagination/pagination.component.mjs +0 -130
  77. package/esm2022/lib/components/core/popover/popover.directive.mjs +0 -176
  78. package/esm2022/lib/components/core/progress-bar/progress-bar.component.mjs +0 -34
  79. package/esm2022/lib/components/core/progress-button/progress-button.component.mjs +0 -25
  80. package/esm2022/lib/components/core/spinner/spinner.component.mjs +0 -30
  81. package/esm2022/lib/components/core/steppers/steppers-container/steppers-container.component.mjs +0 -116
  82. package/esm2022/lib/components/core/steppers/steppers-item/steppers-item.component.mjs +0 -22
  83. package/esm2022/lib/components/core/steppers/steppers.module.mjs +0 -18
  84. package/esm2022/lib/components/core/tab/tab-container/tab-container.component.mjs +0 -97
  85. package/esm2022/lib/components/core/tab/tab-item/tab-item.component.mjs +0 -39
  86. package/esm2022/lib/components/core/tab/tab.module.mjs +0 -18
  87. package/esm2022/lib/components/core/table/sort/sort-header/sort-header.component.mjs +0 -134
  88. package/esm2022/lib/components/core/table/sort/sort.directive.mjs +0 -123
  89. package/esm2022/lib/components/core/table/table.component.mjs +0 -45
  90. package/esm2022/lib/components/core/table/table.module.mjs +0 -19
  91. package/esm2022/lib/components/core/timeline/timeline-item/timeline-item.component.mjs +0 -90
  92. package/esm2022/lib/components/core/timeline/timeline.component.mjs +0 -36
  93. package/esm2022/lib/components/core/timeline/timeline.module.mjs +0 -18
  94. package/esm2022/lib/components/core/tooltip/tooltip.directive.mjs +0 -143
  95. package/esm2022/lib/components/core/video-player/video-player-i18n.model.mjs +0 -2
  96. package/esm2022/lib/components/core/video-player/video-player-i18n.service.mjs +0 -130
  97. package/esm2022/lib/components/core/video-player/video-player.component.mjs +0 -301
  98. package/esm2022/lib/components/core/video-player/video-player.config.mjs +0 -43
  99. package/esm2022/lib/components/core/video-player/video-player.cookie.mjs +0 -25
  100. package/esm2022/lib/components/core/video-player/video-player.model.mjs +0 -3
  101. package/esm2022/lib/components/core/video-player/video-player.module.mjs +0 -16
  102. package/esm2022/lib/components/form/autocomplete/autocomplete.component.mjs +0 -178
  103. package/esm2022/lib/components/form/checkbox/checkbox.component.mjs +0 -48
  104. package/esm2022/lib/components/form/form.module.mjs +0 -67
  105. package/esm2022/lib/components/form/input/input.component.mjs +0 -190
  106. package/esm2022/lib/components/form/password-input/password-input.component.mjs +0 -149
  107. package/esm2022/lib/components/form/radio-button/radio-button.component.mjs +0 -60
  108. package/esm2022/lib/components/form/range/range.component.mjs +0 -64
  109. package/esm2022/lib/components/form/rating/rating.component.mjs +0 -50
  110. package/esm2022/lib/components/form/search/search.component.mjs +0 -112
  111. package/esm2022/lib/components/form/select/select.component.mjs +0 -70
  112. package/esm2022/lib/components/form/textarea/textarea.component.mjs +0 -55
  113. package/esm2022/lib/components/form/transfer/store/transfer.reducers.mjs +0 -191
  114. package/esm2022/lib/components/form/transfer/store/transfer.state.mjs +0 -2
  115. package/esm2022/lib/components/form/transfer/store/transfer.store.mjs +0 -70
  116. package/esm2022/lib/components/form/transfer/transfer-list/transfer-list.component.mjs +0 -72
  117. package/esm2022/lib/components/form/transfer/transfer.component.mjs +0 -149
  118. package/esm2022/lib/components/form/transfer/transfer.model.mjs +0 -6
  119. package/esm2022/lib/components/form/upload-drag-drop/upload-drag-drop.component.mjs +0 -142
  120. package/esm2022/lib/components/form/upload-file-list/upload-file-list.component.mjs +0 -107
  121. package/esm2022/lib/components/navigation/back-button/back-button.component.mjs +0 -67
  122. package/esm2022/lib/components/navigation/back-to-top/back-to-top.component.mjs +0 -68
  123. package/esm2022/lib/components/navigation/breadcrumbs/breadcrumb/breadcrumb.component.mjs +0 -51
  124. package/esm2022/lib/components/navigation/breadcrumbs/breadcrumb-item/breadcrumb-item.component.mjs +0 -21
  125. package/esm2022/lib/components/navigation/breadcrumbs/breadcrumbs.module.mjs +0 -18
  126. package/esm2022/lib/components/navigation/header/header.component.mjs +0 -103
  127. package/esm2022/lib/components/navigation/megamenu/megamenu.component.mjs +0 -27
  128. package/esm2022/lib/components/navigation/navbar/navbar/navbar.component.mjs +0 -49
  129. package/esm2022/lib/components/navigation/navbar/navbar-item/navbar-item.component.mjs +0 -11
  130. package/esm2022/lib/components/navigation/navbar/navbar.module.mjs +0 -18
  131. package/esm2022/lib/components/navigation/navscroll/navscroll-list-item.component.mjs +0 -97
  132. package/esm2022/lib/components/navigation/navscroll/navscroll-list-items.component.mjs +0 -44
  133. package/esm2022/lib/components/navigation/navscroll/navscroll.component.mjs +0 -116
  134. package/esm2022/lib/components/navigation/navscroll/navscroll.model.mjs +0 -2
  135. package/esm2022/lib/components/navigation/navscroll/navscroll.store.mjs +0 -68
  136. package/esm2022/lib/components/navigation/navscroll/navscroll.utils.mjs +0 -23
  137. package/esm2022/lib/components/navigation/sidebar/sidebar.component.mjs +0 -50
  138. package/esm2022/lib/components/navigation/skiplink/skiplink/skiplink.component.mjs +0 -27
  139. package/esm2022/lib/components/navigation/skiplink/skiplink-item/skiplink-item.component.mjs +0 -26
  140. package/esm2022/lib/components/navigation/skiplink/skiplink.module.mjs +0 -18
  141. package/esm2022/lib/components/utils/error-page/error-page.component.mjs +0 -74
  142. package/esm2022/lib/components/utils/icon/icon.component.mjs +0 -63
  143. package/esm2022/lib/components/utils/language-switcher/language-switcher.component.mjs +0 -50
  144. package/esm2022/lib/design-angular-kit.module.mjs +0 -237
  145. package/esm2022/lib/enums/colors.enums.mjs +0 -12
  146. package/esm2022/lib/enums/sizes.enum.mjs +0 -9
  147. package/esm2022/lib/interfaces/core.mjs +0 -16
  148. package/esm2022/lib/interfaces/design-angular-kit-config.mjs +0 -7
  149. package/esm2022/lib/interfaces/form.mjs +0 -2
  150. package/esm2022/lib/interfaces/icon.mjs +0 -181
  151. package/esm2022/lib/interfaces/sortable-table.mjs +0 -6
  152. package/esm2022/lib/interfaces/utils.mjs +0 -2
  153. package/esm2022/lib/pipes/date-ago.pipe.mjs +0 -56
  154. package/esm2022/lib/pipes/duration.pipe.mjs +0 -115
  155. package/esm2022/lib/pipes/mark-matching-text.pipe.mjs +0 -48
  156. package/esm2022/lib/provide-design-angular-kit.mjs +0 -64
  157. package/esm2022/lib/services/notification/notification.service.mjs +0 -120
  158. package/esm2022/lib/utils/coercion.mjs +0 -18
  159. package/esm2022/lib/utils/date-utils.mjs +0 -162
  160. package/esm2022/lib/utils/file-utils.mjs +0 -73
  161. package/esm2022/lib/utils/regex.mjs +0 -35
  162. package/esm2022/lib/validators/it-validators.mjs +0 -161
  163. package/esm2022/public_api.mjs +0 -114
@@ -1,178 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
- import { ItAbstractFormComponent } from '../../../abstracts/abstract-form.component';
3
- import { AsyncPipe } from '@angular/common';
4
- import { ReactiveFormsModule } from '@angular/forms';
5
- import { SelectAutocomplete } from 'bootstrap-italia';
6
- import * as i0 from "@angular/core";
7
- export class ItAutocompleteComponent extends ItAbstractFormComponent {
8
- constructor() {
9
- super(...arguments);
10
- /**
11
- * Autocomplete elements.
12
- * @default []
13
- */
14
- this.source = [];
15
- /**
16
- * Autocomplete if required.
17
- * @default false
18
- */
19
- this.required = false;
20
- /**
21
- * Prevents suggestions from appearing if fewer than N characters are typed
22
- * @default 0
23
- */
24
- this.minLength = 0;
25
- /**
26
- * Default value
27
- */
28
- this.defaultValue = '';
29
- /**
30
- * Function to set assistive hint label. For more information https://github.com/alphagov/accessible-autocomplete?tab=readme-ov-file#internationalization
31
- */
32
- this.assistiveHintLabel = () => 'Quando i risultati del completamento automatico sono disponibili, usa le frecce su e giù per rivedere e Invio per selezionare. Utenti di dispositivi touch, esplora tramite tocco o con gesti di scorrimento';
33
- /**
34
- * Function to set label in case of no result. For more information https://github.com/alphagov/accessible-autocomplete?tab=readme-ov-file#internationalization
35
- */
36
- this.noResultsLabel = () => 'Nessun risultato trovato';
37
- /**
38
- * Function to set label that alerts you that query's too short. For more information https://github.com/alphagov/accessible-autocomplete?tab=readme-ov-file#internationalization
39
- */
40
- this.statusQueryTooShortLabel = minQueryLength => `Digita ${minQueryLength} o più caratteri per mostrare le opzioni di ricerca`;
41
- /**
42
- * Function to set no results label. For more information https://github.com/alphagov/accessible-autocomplete?tab=readme-ov-file#internationalization
43
- */
44
- this.statusNoResultsLabel = () => 'Nessun risultato di ricerca';
45
- /**
46
- * Function to set selected option label. For more information https://github.com/alphagov/accessible-autocomplete?tab=readme-ov-file#internationalization
47
- */
48
- this.statusSelectedOptionLabel = (selectedOption, length, index) => `${selectedOption} ${index + 1} di ${length} è sottolineato`;
49
- /**
50
- * Function to set status results label. For more information https://github.com/alphagov/accessible-autocomplete?tab=readme-ov-file#internationalization
51
- */
52
- this.statusResultsLabel = (length, contentSelectedOption) => {
53
- const words = {
54
- result: length === 1 ? 'risultato' : 'risultati',
55
- is: length === 1 ? 'è' : 'sono',
56
- available: length === 1 ? 'disponibile' : 'disponibili',
57
- };
58
- return `${length} ${words.result} ${words.is} ${words.available}. ${contentSelectedOption}`;
59
- };
60
- /**
61
- * Fired when value changes
62
- */
63
- this.selected = new EventEmitter();
64
- this.value = '';
65
- this._interval = 0;
66
- this._inputEl = null;
67
- }
68
- ngOnInit() {
69
- super.ngOnInit();
70
- if (!this.control.value && !!this.value) {
71
- this.writeValue(this.value);
72
- this.onChange(this.value);
73
- }
74
- }
75
- clear() {
76
- this._inputEl.value = '';
77
- }
78
- _findInput() {
79
- this._interval = setInterval(() => {
80
- this._inputEl = document.getElementById(this.id);
81
- if (this._inputEl) {
82
- clearInterval(this._interval);
83
- this._initInputEl();
84
- }
85
- }, 500);
86
- }
87
- _setAndCheck(value) {
88
- this.value = value == '' ? undefined : value;
89
- if (this.control.touched) {
90
- this.writeValue(this.value);
91
- this.onChange(this.value);
92
- }
93
- if (this.isValid == false && this.isInvalid == false) {
94
- this._inputEl?.classList.remove('just-validate-success-field');
95
- this._inputEl?.classList.remove('is-invalid');
96
- }
97
- else if (this.isValid == true) {
98
- this._inputEl?.classList.add('just-validate-success-field');
99
- this._inputEl?.classList.remove('is-invalid');
100
- }
101
- else if (this.isInvalid == true) {
102
- this._inputEl?.classList.add('is-invalid');
103
- this._inputEl?.classList.remove('just-validate-success-field');
104
- }
105
- }
106
- _initInputEl() {
107
- if (this._inputEl) {
108
- this._inputEl.onfocus = (ev) => this._setAndCheck(ev.target.value);
109
- this._inputEl.onblur = (ev) => this._setAndCheck(ev.target.value);
110
- this._inputEl.oninput = (ev) => {
111
- this.markAsTouched();
112
- this._setAndCheck(ev.target.value);
113
- };
114
- }
115
- }
116
- ngAfterViewInit() {
117
- if (this.selectAutocompleteEl) {
118
- super.ngAfterViewInit();
119
- const element = this.selectAutocompleteEl.nativeElement;
120
- this.selectAutocomplete = new SelectAutocomplete(element, {
121
- id: this.id,
122
- name: this.name || this.id,
123
- source: this.source,
124
- required: this.required,
125
- minLength: this.minLength,
126
- defaultValue: this.defaultValue,
127
- tAssistiveHint: this.assistiveHintLabel,
128
- tNoResults: this.noResultsLabel,
129
- tStatusQueryTooShort: this.statusQueryTooShortLabel,
130
- tStatusNoResults: this.statusNoResultsLabel,
131
- tStatusSelectedOption: this.statusSelectedOptionLabel,
132
- tStatusResults: this.statusResultsLabel,
133
- onConfirm: (selectedElement) => {
134
- this.markAsTouched();
135
- this._setAndCheck(selectedElement);
136
- this.selected.emit(selectedElement);
137
- },
138
- });
139
- this._findInput();
140
- }
141
- }
142
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItAutocompleteComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
143
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: ItAutocompleteComponent, isStandalone: true, selector: "it-autocomplete", inputs: { source: "source", required: "required", name: "name", description: "description", minLength: "minLength", defaultValue: "defaultValue", assistiveHintLabel: "assistiveHintLabel", noResultsLabel: "noResultsLabel", statusQueryTooShortLabel: "statusQueryTooShortLabel", statusNoResultsLabel: "statusNoResultsLabel", statusSelectedOptionLabel: "statusSelectedOptionLabel", statusResultsLabel: "statusResultsLabel" }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "selectAutocompleteEl", first: true, predicate: ["selectAutocomplete"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"form-group\">\n @if (label) {\n <label [for]=\"id\" [class.active]=\"!!control.value\">{{ label }}</label>\n }\n <div #selectAutocomplete name=\"region\" [id]=\"id + 'Wrapper'\" class=\"autocomplete-wrapper\"></div>\n\n @if (description) {\n <small [id]=\"id + '-description'\" class=\"form-text\">{{ description }}</small>\n }\n @if (isInvalid) {\n <div class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n <div #customError><ng-content select=\"[error]\"></ng-content></div>\n @if (!customError.hasChildNodes()) {\n {{ invalidMessage | async }}\n }\n </div>\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
144
- }
145
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItAutocompleteComponent, decorators: [{
146
- type: Component,
147
- args: [{ standalone: true, selector: 'it-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, imports: [ReactiveFormsModule, AsyncPipe], template: "<div class=\"form-group\">\n @if (label) {\n <label [for]=\"id\" [class.active]=\"!!control.value\">{{ label }}</label>\n }\n <div #selectAutocomplete name=\"region\" [id]=\"id + 'Wrapper'\" class=\"autocomplete-wrapper\"></div>\n\n @if (description) {\n <small [id]=\"id + '-description'\" class=\"form-text\">{{ description }}</small>\n }\n @if (isInvalid) {\n <div class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n <div #customError><ng-content select=\"[error]\"></ng-content></div>\n @if (!customError.hasChildNodes()) {\n {{ invalidMessage | async }}\n }\n </div>\n }\n</div>\n" }]
148
- }], propDecorators: { source: [{
149
- type: Input
150
- }], required: [{
151
- type: Input
152
- }], name: [{
153
- type: Input
154
- }], description: [{
155
- type: Input
156
- }], minLength: [{
157
- type: Input
158
- }], defaultValue: [{
159
- type: Input
160
- }], assistiveHintLabel: [{
161
- type: Input
162
- }], noResultsLabel: [{
163
- type: Input
164
- }], statusQueryTooShortLabel: [{
165
- type: Input
166
- }], statusNoResultsLabel: [{
167
- type: Input
168
- }], statusSelectedOptionLabel: [{
169
- type: Input
170
- }], statusResultsLabel: [{
171
- type: Input
172
- }], selected: [{
173
- type: Output
174
- }], selectAutocompleteEl: [{
175
- type: ViewChild,
176
- args: ['selectAutocomplete']
177
- }] } });
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFXdEQsTUFBTSxPQUFPLHVCQUF3QixTQUFRLHVCQUFrRDtJQVAvRjs7UUFRRTs7O1dBR0c7UUFDTSxXQUFNLEdBQThCLEVBQUUsQ0FBQztRQUVoRDs7O1dBR0c7UUFDTSxhQUFRLEdBQVksS0FBSyxDQUFDO1FBWW5DOzs7V0FHRztRQUNNLGNBQVMsR0FBVyxDQUFDLENBQUM7UUFFL0I7O1dBRUc7UUFDTSxpQkFBWSxHQUFrQixFQUFFLENBQUM7UUFFMUM7O1dBRUc7UUFDTSx1QkFBa0IsR0FBaUIsR0FBRyxFQUFFLENBQy9DLDhNQUE4TSxDQUFDO1FBRWpOOztXQUVHO1FBQ00sbUJBQWMsR0FBaUIsR0FBRyxFQUFFLENBQUMsMEJBQTBCLENBQUM7UUFFekU7O1dBRUc7UUFDTSw2QkFBd0IsR0FBdUMsY0FBYyxDQUFDLEVBQUUsQ0FDdkYsVUFBVSxjQUFjLHFEQUFxRCxDQUFDO1FBRWhGOztXQUVHO1FBQ00seUJBQW9CLEdBQWlCLEdBQUcsRUFBRSxDQUFDLDZCQUE2QixDQUFDO1FBRWxGOztXQUVHO1FBQ00sOEJBQXlCLEdBQXNFLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUN4SSxHQUFHLGNBQWMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxPQUFPLE1BQU0saUJBQWlCLENBQUM7UUFFL0Q7O1dBRUc7UUFDTSx1QkFBa0IsR0FBOEQsQ0FBQyxNQUFNLEVBQUUscUJBQXFCLEVBQUUsRUFBRTtZQUN6SCxNQUFNLEtBQUssR0FBRztnQkFDWixNQUFNLEVBQUUsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXO2dCQUNoRCxFQUFFLEVBQUUsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNO2dCQUMvQixTQUFTLEVBQUUsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxhQUFhO2FBQ3hELENBQUM7WUFFRixPQUFPLEdBQUcsTUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsU0FBUyxLQUFLLHFCQUFxQixFQUFFLENBQUM7UUFDOUYsQ0FBQyxDQUFDO1FBRUY7O1dBRUc7UUFDTyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQU1oQyxVQUFLLEdBQXVCLEVBQUUsQ0FBQztRQUMvQixjQUFTLEdBQVEsQ0FBQyxDQUFDO1FBQ25CLGFBQVEsR0FBdUIsSUFBSSxDQUFDO0tBK0U3QztJQTdFVSxRQUFRO1FBQ2YsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSztRQUNGLElBQUksQ0FBQyxRQUE2QixDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDakQsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNqRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbEIsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLENBQUM7UUFDSCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDO0lBRU8sWUFBWSxDQUFDLEtBQWE7UUFDaEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM3QyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNyRCxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEQsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUM1RCxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDaEQsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDakUsQ0FBQztJQUNILENBQUM7SUFFTyxZQUFZO1FBQ2xCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFFLEVBQUUsQ0FBQyxNQUEyQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFFLEVBQUUsQ0FBQyxNQUEyQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9GLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBUyxFQUFFLEVBQUU7Z0JBQ3BDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLFlBQVksQ0FBRSxFQUFFLENBQUMsTUFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzRCxDQUFDLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVRLGVBQWU7UUFDdEIsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUM5QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDeEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQztZQUN4RCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxPQUFPLEVBQUU7Z0JBQ3hELEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtnQkFDWCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsRUFBRTtnQkFDMUIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNuQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3ZCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztnQkFDekIsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO2dCQUMvQixjQUFjLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtnQkFDdkMsVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFjO2dCQUMvQixvQkFBb0IsRUFBRSxJQUFJLENBQUMsd0JBQXdCO2dCQUNuRCxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsb0JBQW9CO2dCQUMzQyxxQkFBcUIsRUFBRSxJQUFJLENBQUMseUJBQXlCO2dCQUNyRCxjQUFjLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtnQkFDdkMsU0FBUyxFQUFFLENBQUMsZUFBdUIsRUFBRSxFQUFFO29CQUNyQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7b0JBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUN0QyxDQUFDO2FBQ0YsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BCLENBQUM7SUFDSCxDQUFDOzhHQXBLVSx1QkFBdUI7a0dBQXZCLHVCQUF1Qix1cUJDZnBDLDRvQkFrQkEsMkNETFksbUJBQW1CLDBCQUFFLFNBQVM7OzJGQUU3Qix1QkFBdUI7a0JBUG5DLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLGlCQUFpQixtQkFFVix1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsbUJBQW1CLEVBQUUsU0FBUyxDQUFDOzhCQU9oQyxNQUFNO3NCQUFkLEtBQUs7Z0JBTUcsUUFBUTtzQkFBaEIsS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBS0csV0FBVztzQkFBbkIsS0FBSztnQkFNRyxTQUFTO3NCQUFqQixLQUFLO2dCQUtHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBS0csa0JBQWtCO3NCQUExQixLQUFLO2dCQU1HLGNBQWM7c0JBQXRCLEtBQUs7Z0JBS0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQU1HLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFLRyx5QkFBeUI7c0JBQWpDLEtBQUs7Z0JBTUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQWFJLFFBQVE7c0JBQWpCLE1BQU07Z0JBRWtDLG9CQUFvQjtzQkFBNUQsU0FBUzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSXRBYnN0cmFjdEZvcm1Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9hYnN0cmFjdHMvYWJzdHJhY3QtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTZWxlY3RBdXRvY29tcGxldGUgfSBmcm9tICdib290c3RyYXAtaXRhbGlhJztcblxudHlwZSBmdW5jdGlvblNvdXJjZSA9IChxdWVyeTogc3RyaW5nLCBwb3B1bGF0ZVJlc3VsdHM6IChyZXN1bHRzOiBzdHJpbmdbXSkgPT4gdm9pZCkgPT4gdm9pZDtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnaXQtYXV0b2NvbXBsZXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbUmVhY3RpdmVGb3Jtc01vZHVsZSwgQXN5bmNQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgSXRBdXRvY29tcGxldGVDb21wb25lbnQgZXh0ZW5kcyBJdEFic3RyYWN0Rm9ybUNvbXBvbmVudDxzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkPiB7XG4gIC8qKlxuICAgKiBBdXRvY29tcGxldGUgZWxlbWVudHMuXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICBASW5wdXQoKSBzb3VyY2U6IHN0cmluZ1tdIHwgZnVuY3Rpb25Tb3VyY2UgPSBbXTtcblxuICAvKipcbiAgICogQXV0b2NvbXBsZXRlIGlmIHJlcXVpcmVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KCkgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogSW5wdXQgZmllbGQgbmFtZVxuICAgKi9cbiAgQElucHV0KCkgbmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5wdXQgZGVzY3JpcHRpb25cbiAgICovXG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFByZXZlbnRzIHN1Z2dlc3Rpb25zIGZyb20gYXBwZWFyaW5nIGlmIGZld2VyIHRoYW4gTiBjaGFyYWN0ZXJzIGFyZSB0eXBlZFxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBASW5wdXQoKSBtaW5MZW5ndGg6IG51bWJlciA9IDA7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgdmFsdWVcbiAgICovXG4gIEBJbnB1dCgpIGRlZmF1bHRWYWx1ZTogc3RyaW5nIHwgbnVsbCA9ICcnO1xuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0byBzZXQgYXNzaXN0aXZlIGhpbnQgbGFiZWwuIEZvciBtb3JlIGluZm9ybWF0aW9uIGh0dHBzOi8vZ2l0aHViLmNvbS9hbHBoYWdvdi9hY2Nlc3NpYmxlLWF1dG9jb21wbGV0ZT90YWI9cmVhZG1lLW92LWZpbGUjaW50ZXJuYXRpb25hbGl6YXRpb25cbiAgICovXG4gIEBJbnB1dCgpIGFzc2lzdGl2ZUhpbnRMYWJlbDogKCkgPT4gc3RyaW5nID0gKCkgPT5cbiAgICAnUXVhbmRvIGkgcmlzdWx0YXRpIGRlbCBjb21wbGV0YW1lbnRvIGF1dG9tYXRpY28gc29ubyBkaXNwb25pYmlsaSwgdXNhIGxlIGZyZWNjZSBzdSBlIGdpw7kgcGVyIHJpdmVkZXJlIGUgSW52aW8gcGVyIHNlbGV6aW9uYXJlLiBVdGVudGkgZGkgZGlzcG9zaXRpdmkgdG91Y2gsIGVzcGxvcmEgdHJhbWl0ZSB0b2NjbyBvIGNvbiBnZXN0aSBkaSBzY29ycmltZW50byc7XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHRvIHNldCBsYWJlbCBpbiBjYXNlIG9mIG5vIHJlc3VsdC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gaHR0cHM6Ly9naXRodWIuY29tL2FscGhhZ292L2FjY2Vzc2libGUtYXV0b2NvbXBsZXRlP3RhYj1yZWFkbWUtb3YtZmlsZSNpbnRlcm5hdGlvbmFsaXphdGlvblxuICAgKi9cbiAgQElucHV0KCkgbm9SZXN1bHRzTGFiZWw6ICgpID0+IHN0cmluZyA9ICgpID0+ICdOZXNzdW4gcmlzdWx0YXRvIHRyb3ZhdG8nO1xuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0byBzZXQgbGFiZWwgdGhhdCBhbGVydHMgeW91IHRoYXQgcXVlcnkncyB0b28gc2hvcnQuIEZvciBtb3JlIGluZm9ybWF0aW9uIGh0dHBzOi8vZ2l0aHViLmNvbS9hbHBoYWdvdi9hY2Nlc3NpYmxlLWF1dG9jb21wbGV0ZT90YWI9cmVhZG1lLW92LWZpbGUjaW50ZXJuYXRpb25hbGl6YXRpb25cbiAgICovXG4gIEBJbnB1dCgpIHN0YXR1c1F1ZXJ5VG9vU2hvcnRMYWJlbDogKG1pblF1ZXJ5TGVuZ3RoOiBudW1iZXIpID0+IHN0cmluZyA9IG1pblF1ZXJ5TGVuZ3RoID0+XG4gICAgYERpZ2l0YSAke21pblF1ZXJ5TGVuZ3RofSBvIHBpw7kgY2FyYXR0ZXJpIHBlciBtb3N0cmFyZSBsZSBvcHppb25pIGRpIHJpY2VyY2FgO1xuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0byBzZXQgbm8gcmVzdWx0cyBsYWJlbC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gaHR0cHM6Ly9naXRodWIuY29tL2FscGhhZ292L2FjY2Vzc2libGUtYXV0b2NvbXBsZXRlP3RhYj1yZWFkbWUtb3YtZmlsZSNpbnRlcm5hdGlvbmFsaXphdGlvblxuICAgKi9cbiAgQElucHV0KCkgc3RhdHVzTm9SZXN1bHRzTGFiZWw6ICgpID0+IHN0cmluZyA9ICgpID0+ICdOZXNzdW4gcmlzdWx0YXRvIGRpIHJpY2VyY2EnO1xuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0byBzZXQgc2VsZWN0ZWQgb3B0aW9uIGxhYmVsLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBodHRwczovL2dpdGh1Yi5jb20vYWxwaGFnb3YvYWNjZXNzaWJsZS1hdXRvY29tcGxldGU/dGFiPXJlYWRtZS1vdi1maWxlI2ludGVybmF0aW9uYWxpemF0aW9uXG4gICAqL1xuICBASW5wdXQoKSBzdGF0dXNTZWxlY3RlZE9wdGlvbkxhYmVsOiAoc2VsZWN0ZWRPcHRpb246IHN0cmluZywgbGVuZ3RoOiBudW1iZXIsIGluZGV4OiBudW1iZXIpID0+IHN0cmluZyA9IChzZWxlY3RlZE9wdGlvbiwgbGVuZ3RoLCBpbmRleCkgPT5cbiAgICBgJHtzZWxlY3RlZE9wdGlvbn0gJHtpbmRleCArIDF9IGRpICR7bGVuZ3RofSDDqCBzb3R0b2xpbmVhdG9gO1xuXG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0byBzZXQgc3RhdHVzIHJlc3VsdHMgbGFiZWwuIEZvciBtb3JlIGluZm9ybWF0aW9uIGh0dHBzOi8vZ2l0aHViLmNvbS9hbHBoYWdvdi9hY2Nlc3NpYmxlLWF1dG9jb21wbGV0ZT90YWI9cmVhZG1lLW92LWZpbGUjaW50ZXJuYXRpb25hbGl6YXRpb25cbiAgICovXG4gIEBJbnB1dCgpIHN0YXR1c1Jlc3VsdHNMYWJlbDogKGxlbmd0aDogbnVtYmVyLCBjb250ZW50U2VsZWN0ZWRPcHRpb246IHN0cmluZykgPT4gc3RyaW5nID0gKGxlbmd0aCwgY29udGVudFNlbGVjdGVkT3B0aW9uKSA9PiB7XG4gICAgY29uc3Qgd29yZHMgPSB7XG4gICAgICByZXN1bHQ6IGxlbmd0aCA9PT0gMSA/ICdyaXN1bHRhdG8nIDogJ3Jpc3VsdGF0aScsXG4gICAgICBpczogbGVuZ3RoID09PSAxID8gJ8OoJyA6ICdzb25vJyxcbiAgICAgIGF2YWlsYWJsZTogbGVuZ3RoID09PSAxID8gJ2Rpc3BvbmliaWxlJyA6ICdkaXNwb25pYmlsaScsXG4gICAgfTtcblxuICAgIHJldHVybiBgJHtsZW5ndGh9ICR7d29yZHMucmVzdWx0fSAke3dvcmRzLmlzfSAke3dvcmRzLmF2YWlsYWJsZX0uICR7Y29udGVudFNlbGVjdGVkT3B0aW9ufWA7XG4gIH07XG5cbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gdmFsdWUgY2hhbmdlc1xuICAgKi9cbiAgQE91dHB1dCgpIHNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdEF1dG9jb21wbGV0ZScpIHByaXZhdGUgc2VsZWN0QXV0b2NvbXBsZXRlRWw/OiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcblxuICBwcml2YXRlIHNlbGVjdEF1dG9jb21wbGV0ZT86IFNlbGVjdEF1dG9jb21wbGV0ZTtcblxuICBwcml2YXRlIHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcbiAgcHJpdmF0ZSBfaW50ZXJ2YWw6IGFueSA9IDA7XG4gIHByaXZhdGUgX2lucHV0RWw6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICBpZiAoIXRoaXMuY29udHJvbC52YWx1ZSAmJiAhIXRoaXMudmFsdWUpIHtcbiAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgKHRoaXMuX2lucHV0RWwgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUgPSAnJztcbiAgfVxuXG4gIF9maW5kSW5wdXQoKSB7XG4gICAgdGhpcy5faW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICB0aGlzLl9pbnB1dEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5pZCk7XG4gICAgICBpZiAodGhpcy5faW5wdXRFbCkge1xuICAgICAgICBjbGVhckludGVydmFsKHRoaXMuX2ludGVydmFsKTtcbiAgICAgICAgdGhpcy5faW5pdElucHV0RWwoKTtcbiAgICAgIH1cbiAgICB9LCA1MDApO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0QW5kQ2hlY2sodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZSA9PSAnJyA/IHVuZGVmaW5lZCA6IHZhbHVlO1xuICAgIGlmICh0aGlzLmNvbnRyb2wudG91Y2hlZCkge1xuICAgICAgdGhpcy53cml0ZVZhbHVlKHRoaXMudmFsdWUpO1xuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNWYWxpZCA9PSBmYWxzZSAmJiB0aGlzLmlzSW52YWxpZCA9PSBmYWxzZSkge1xuICAgICAgdGhpcy5faW5wdXRFbD8uY2xhc3NMaXN0LnJlbW92ZSgnanVzdC12YWxpZGF0ZS1zdWNjZXNzLWZpZWxkJyk7XG4gICAgICB0aGlzLl9pbnB1dEVsPy5jbGFzc0xpc3QucmVtb3ZlKCdpcy1pbnZhbGlkJyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzVmFsaWQgPT0gdHJ1ZSkge1xuICAgICAgdGhpcy5faW5wdXRFbD8uY2xhc3NMaXN0LmFkZCgnanVzdC12YWxpZGF0ZS1zdWNjZXNzLWZpZWxkJyk7XG4gICAgICB0aGlzLl9pbnB1dEVsPy5jbGFzc0xpc3QucmVtb3ZlKCdpcy1pbnZhbGlkJyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzSW52YWxpZCA9PSB0cnVlKSB7XG4gICAgICB0aGlzLl9pbnB1dEVsPy5jbGFzc0xpc3QuYWRkKCdpcy1pbnZhbGlkJyk7XG4gICAgICB0aGlzLl9pbnB1dEVsPy5jbGFzc0xpc3QucmVtb3ZlKCdqdXN0LXZhbGlkYXRlLXN1Y2Nlc3MtZmllbGQnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pbml0SW5wdXRFbCgpIHtcbiAgICBpZiAodGhpcy5faW5wdXRFbCkge1xuICAgICAgdGhpcy5faW5wdXRFbC5vbmZvY3VzID0gKGV2OiBFdmVudCkgPT4gdGhpcy5fc2V0QW5kQ2hlY2soKGV2LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSk7XG4gICAgICB0aGlzLl9pbnB1dEVsLm9uYmx1ciA9IChldjogRXZlbnQpID0+IHRoaXMuX3NldEFuZENoZWNrKChldi50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUpO1xuICAgICAgdGhpcy5faW5wdXRFbC5vbmlucHV0ID0gKGV2OiBFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5fc2V0QW5kQ2hlY2soKGV2LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSk7XG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RBdXRvY29tcGxldGVFbCkge1xuICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5zZWxlY3RBdXRvY29tcGxldGVFbC5uYXRpdmVFbGVtZW50O1xuICAgICAgdGhpcy5zZWxlY3RBdXRvY29tcGxldGUgPSBuZXcgU2VsZWN0QXV0b2NvbXBsZXRlKGVsZW1lbnQsIHtcbiAgICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICAgIG5hbWU6IHRoaXMubmFtZSB8fCB0aGlzLmlkLFxuICAgICAgICBzb3VyY2U6IHRoaXMuc291cmNlLFxuICAgICAgICByZXF1aXJlZDogdGhpcy5yZXF1aXJlZCxcbiAgICAgICAgbWluTGVuZ3RoOiB0aGlzLm1pbkxlbmd0aCxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiB0aGlzLmRlZmF1bHRWYWx1ZSxcbiAgICAgICAgdEFzc2lzdGl2ZUhpbnQ6IHRoaXMuYXNzaXN0aXZlSGludExhYmVsLFxuICAgICAgICB0Tm9SZXN1bHRzOiB0aGlzLm5vUmVzdWx0c0xhYmVsLFxuICAgICAgICB0U3RhdHVzUXVlcnlUb29TaG9ydDogdGhpcy5zdGF0dXNRdWVyeVRvb1Nob3J0TGFiZWwsXG4gICAgICAgIHRTdGF0dXNOb1Jlc3VsdHM6IHRoaXMuc3RhdHVzTm9SZXN1bHRzTGFiZWwsXG4gICAgICAgIHRTdGF0dXNTZWxlY3RlZE9wdGlvbjogdGhpcy5zdGF0dXNTZWxlY3RlZE9wdGlvbkxhYmVsLFxuICAgICAgICB0U3RhdHVzUmVzdWx0czogdGhpcy5zdGF0dXNSZXN1bHRzTGFiZWwsXG4gICAgICAgIG9uQ29uZmlybTogKHNlbGVjdGVkRWxlbWVudDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICAgICAgdGhpcy5fc2V0QW5kQ2hlY2soc2VsZWN0ZWRFbGVtZW50KTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkLmVtaXQoc2VsZWN0ZWRFbGVtZW50KTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5fZmluZElucHV0KCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICBAaWYgKGxhYmVsKSB7XG4gICAgPGxhYmVsIFtmb3JdPVwiaWRcIiBbY2xhc3MuYWN0aXZlXT1cIiEhY29udHJvbC52YWx1ZVwiPnt7IGxhYmVsIH19PC9sYWJlbD5cbiAgfVxuICA8ZGl2ICNzZWxlY3RBdXRvY29tcGxldGUgbmFtZT1cInJlZ2lvblwiIFtpZF09XCJpZCArICdXcmFwcGVyJ1wiIGNsYXNzPVwiYXV0b2NvbXBsZXRlLXdyYXBwZXJcIj48L2Rpdj5cblxuICBAaWYgKGRlc2NyaXB0aW9uKSB7XG4gICAgPHNtYWxsIFtpZF09XCJpZCArICctZGVzY3JpcHRpb24nXCIgY2xhc3M9XCJmb3JtLXRleHRcIj57eyBkZXNjcmlwdGlvbiB9fTwvc21hbGw+XG4gIH1cbiAgQGlmIChpc0ludmFsaWQpIHtcbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1mZWVkYmFjayBqdXN0LXZhbGlkYXRlLWVycm9yLWxhYmVsXCIgW2lkXT1cImlkICsgJy1lcnJvcidcIj5cbiAgICAgIDxkaXYgI2N1c3RvbUVycm9yPjxuZy1jb250ZW50IHNlbGVjdD1cIltlcnJvcl1cIj48L25nLWNvbnRlbnQ+PC9kaXY+XG4gICAgICBAaWYgKCFjdXN0b21FcnJvci5oYXNDaGlsZE5vZGVzKCkpIHtcbiAgICAgICAge3sgaW52YWxpZE1lc3NhZ2UgfCBhc3luYyB9fVxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cbiJdfQ==
@@ -1,48 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
- import { ItAbstractFormComponent } from '../../../abstracts/abstract-form.component';
3
- import { AsyncPipe, NgTemplateOutlet } from '@angular/common';
4
- import { ReactiveFormsModule } from '@angular/forms';
5
- import { inputToBoolean } from '../../../utils/coercion';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/forms";
8
- export class ItCheckboxComponent extends ItAbstractFormComponent {
9
- ngOnInit() {
10
- super.ngOnInit();
11
- this.markAsChecked();
12
- }
13
- ngOnChanges(changes) {
14
- if (changes['checked']) {
15
- this.markAsChecked();
16
- }
17
- }
18
- markAsChecked() {
19
- if (this.control.value || this.checked === undefined) {
20
- return;
21
- }
22
- const value = this.checked;
23
- this.writeValue(value);
24
- return this.onChange(value);
25
- }
26
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItCheckboxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
27
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: ItCheckboxComponent, isStandalone: true, selector: "it-checkbox", inputs: { toggle: ["toggle", "toggle", inputToBoolean], inline: ["inline", "inline", inputToBoolean], group: ["group", "group", inputToBoolean], checked: ["checked", "checked", inputToBoolean], indeterminate: ["indeterminate", "indeterminate", inputToBoolean] }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container>\n <div class=\"form-check\" [class.form-check-group]=\"group\" [class.form-check-inline]=\"inline\">\n @if (toggle) {\n <div class=\"toggles\">\n <label [for]=\"id\">\n <ng-container *ngTemplateOutlet=\"htmlLabel\"></ng-container>\n <input\n [id]=\"id\"\n type=\"checkbox\"\n [formControl]=\"control\"\n [attr.aria-describedby]=\"id + '-help'\"\n (click)=\"$event.stopPropagation()\" />\n <span class=\"lever\"></span>\n </label>\n </div>\n } @else {\n <input\n [id]=\"id\"\n type=\"checkbox\"\n [class.is-invalid]=\"isInvalid\"\n [class.is-valid]=\"isValid\"\n [class.semi-checked]=\"indeterminate\"\n [formControl]=\"control\"\n [attr.aria-describedby]=\"id + '-help'\"\n (click)=\"$event.stopPropagation()\" />\n <label class=\"form-check-label\" [for]=\"id\">\n <ng-container *ngTemplateOutlet=\"htmlLabel\"></ng-container>\n </label>\n }\n\n @if (group) {\n <small [id]=\"id + '-help'\" class=\"form-text\">\n <ng-content></ng-content>\n </small>\n }\n\n @if (isInvalid && group) {\n <div class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n <ng-container *ngTemplateOutlet=\"error\"></ng-container>\n </div>\n }\n </div>\n\n @if (isInvalid && !group) {\n <div class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n <ng-container *ngTemplateOutlet=\"error\"></ng-container>\n </div>\n }\n</ng-container>\n\n<ng-template #error>\n <div #customError>\n <ng-content select=\"[error]\"></ng-content>\n </div>\n @if (!customError.hasChildNodes()) {\n {{ invalidMessage | async }}\n }\n</ng-template>\n\n<ng-template #htmlLabel>\n <div #customLabel>\n <ng-content select=\"[label]\"></ng-content>\n </div>\n @if (!customLabel.hasChildNodes()) {\n {{ label }}\n }\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
28
- }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItCheckboxComponent, decorators: [{
30
- type: Component,
31
- args: [{ standalone: true, selector: 'it-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgTemplateOutlet, ReactiveFormsModule, AsyncPipe], template: "<ng-container>\n <div class=\"form-check\" [class.form-check-group]=\"group\" [class.form-check-inline]=\"inline\">\n @if (toggle) {\n <div class=\"toggles\">\n <label [for]=\"id\">\n <ng-container *ngTemplateOutlet=\"htmlLabel\"></ng-container>\n <input\n [id]=\"id\"\n type=\"checkbox\"\n [formControl]=\"control\"\n [attr.aria-describedby]=\"id + '-help'\"\n (click)=\"$event.stopPropagation()\" />\n <span class=\"lever\"></span>\n </label>\n </div>\n } @else {\n <input\n [id]=\"id\"\n type=\"checkbox\"\n [class.is-invalid]=\"isInvalid\"\n [class.is-valid]=\"isValid\"\n [class.semi-checked]=\"indeterminate\"\n [formControl]=\"control\"\n [attr.aria-describedby]=\"id + '-help'\"\n (click)=\"$event.stopPropagation()\" />\n <label class=\"form-check-label\" [for]=\"id\">\n <ng-container *ngTemplateOutlet=\"htmlLabel\"></ng-container>\n </label>\n }\n\n @if (group) {\n <small [id]=\"id + '-help'\" class=\"form-text\">\n <ng-content></ng-content>\n </small>\n }\n\n @if (isInvalid && group) {\n <div class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n <ng-container *ngTemplateOutlet=\"error\"></ng-container>\n </div>\n }\n </div>\n\n @if (isInvalid && !group) {\n <div class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n <ng-container *ngTemplateOutlet=\"error\"></ng-container>\n </div>\n }\n</ng-container>\n\n<ng-template #error>\n <div #customError>\n <ng-content select=\"[error]\"></ng-content>\n </div>\n @if (!customError.hasChildNodes()) {\n {{ invalidMessage | async }}\n }\n</ng-template>\n\n<ng-template #htmlLabel>\n <div #customLabel>\n <ng-content select=\"[label]\"></ng-content>\n </div>\n @if (!customLabel.hasChildNodes()) {\n {{ label }}\n }\n</ng-template>\n" }]
32
- }], propDecorators: { toggle: [{
33
- type: Input,
34
- args: [{ transform: inputToBoolean }]
35
- }], inline: [{
36
- type: Input,
37
- args: [{ transform: inputToBoolean }]
38
- }], group: [{
39
- type: Input,
40
- args: [{ transform: inputToBoolean }]
41
- }], checked: [{
42
- type: Input,
43
- args: [{ transform: inputToBoolean }]
44
- }], indeterminate: [{
45
- type: Input,
46
- args: [{ transform: inputToBoolean }]
47
- }] } });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDckYsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBU3pELE1BQU0sT0FBTyxtQkFBb0IsU0FBUSx1QkFBbUQ7SUErQmpGLFFBQVE7UUFDZixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFUSxXQUFXLENBQUMsT0FBc0I7UUFDekMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNyRCxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQzs4R0FsRFUsbUJBQW1CO2tHQUFuQixtQkFBbUIsc0ZBS1YsY0FBYyxnQ0FNZCxjQUFjLDZCQU1kLGNBQWMsbUNBTWQsY0FBYyxxREFNZCxjQUFjLHlFQzFDcEMsODlEQW1FQSw0Q0R4RFksZ0JBQWdCLG1KQUFFLG1CQUFtQixzZUFBRSxTQUFTOzsyRkFFL0MsbUJBQW1CO2tCQVAvQixTQUFTO2lDQUNJLElBQUksWUFDTixhQUFhLG1CQUVOLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSxTQUFTLENBQUM7OEJBT3JCLE1BQU07c0JBQTNDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFO2dCQU1FLE1BQU07c0JBQTNDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFO2dCQU1FLEtBQUs7c0JBQTFDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFO2dCQU1FLE9BQU87c0JBQTVDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFO2dCQU1FLGFBQWE7c0JBQWxELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJdEFic3RyYWN0Rm9ybUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2Fic3RyYWN0cy9hYnN0cmFjdC1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGlucHV0VG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY29lcmNpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdpdC1jaGVja2JveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGVja2JveC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbTmdUZW1wbGF0ZU91dGxldCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgQXN5bmNQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgSXRDaGVja2JveENvbXBvbmVudCBleHRlbmRzIEl0QWJzdHJhY3RGb3JtQ29tcG9uZW50PGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgLyoqXG4gICAqIElmIHNob3cgY2hlY2tib3ggYXMgdG9nZ2xlXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIHRvZ2dsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIHNob3cgY2hlY2tib3ggaW5saW5lXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIGlubGluZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGlzIGNoZWNrYm94IGdyb3VwXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIGdyb3VwPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgY2hlY2tib3ggaXMgY2hlY2tlZFxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBpbnB1dFRvQm9vbGVhbiB9KSBjaGVja2VkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgY2hlY2tib3ggaXMgaW5kZXRlcm1pbmF0ZVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBpbnB1dFRvQm9vbGVhbiB9KSBpbmRldGVybWluYXRlPzogYm9vbGVhbjtcblxuICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMubWFya0FzQ2hlY2tlZCgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydjaGVja2VkJ10pIHtcbiAgICAgIHRoaXMubWFya0FzQ2hlY2tlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFya0FzQ2hlY2tlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb250cm9sLnZhbHVlIHx8IHRoaXMuY2hlY2tlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmNoZWNrZWQ7XG4gICAgdGhpcy53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXI+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCIgW2NsYXNzLmZvcm0tY2hlY2stZ3JvdXBdPVwiZ3JvdXBcIiBbY2xhc3MuZm9ybS1jaGVjay1pbmxpbmVdPVwiaW5saW5lXCI+XG4gICAgQGlmICh0b2dnbGUpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJ0b2dnbGVzXCI+XG4gICAgICAgIDxsYWJlbCBbZm9yXT1cImlkXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImh0bWxMYWJlbFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImlkICsgJy1oZWxwJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgLz5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImxldmVyXCI+PC9zcGFuPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9kaXY+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8aW5wdXRcbiAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgW2NsYXNzLmlzLWludmFsaWRdPVwiaXNJbnZhbGlkXCJcbiAgICAgICAgW2NsYXNzLmlzLXZhbGlkXT1cImlzVmFsaWRcIlxuICAgICAgICBbY2xhc3Muc2VtaS1jaGVja2VkXT1cImluZGV0ZXJtaW5hdGVcIlxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaWQgKyAnLWhlbHAnXCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIC8+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgW2Zvcl09XCJpZFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaHRtbExhYmVsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2xhYmVsPlxuICAgIH1cblxuICAgIEBpZiAoZ3JvdXApIHtcbiAgICAgIDxzbWFsbCBbaWRdPVwiaWQgKyAnLWhlbHAnXCIgY2xhc3M9XCJmb3JtLXRleHRcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9zbWFsbD5cbiAgICB9XG5cbiAgICBAaWYgKGlzSW52YWxpZCAmJiBncm91cCkge1xuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZmVlZGJhY2sganVzdC12YWxpZGF0ZS1lcnJvci1sYWJlbFwiIFtpZF09XCJpZCArICctZXJyb3InXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlcnJvclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cblxuICBAaWYgKGlzSW52YWxpZCAmJiAhZ3JvdXApIHtcbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1mZWVkYmFjayBqdXN0LXZhbGlkYXRlLWVycm9yLWxhYmVsXCIgW2lkXT1cImlkICsgJy1lcnJvcidcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlcnJvclwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICB9XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNlcnJvcj5cbiAgPGRpdiAjY3VzdG9tRXJyb3I+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2Vycm9yXVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG4gIEBpZiAoIWN1c3RvbUVycm9yLmhhc0NoaWxkTm9kZXMoKSkge1xuICAgIHt7IGludmFsaWRNZXNzYWdlIHwgYXN5bmMgfX1cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNodG1sTGFiZWw+XG4gIDxkaXYgI2N1c3RvbUxhYmVsPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltsYWJlbF1cIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuICBAaWYgKCFjdXN0b21MYWJlbC5oYXNDaGlsZE5vZGVzKCkpIHtcbiAgICB7eyBsYWJlbCB9fVxuICB9XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,67 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { ItCheckboxComponent } from './checkbox/checkbox.component';
3
- import { ItInputComponent } from './input/input.component';
4
- import { ItPasswordInputComponent } from './password-input/password-input.component';
5
- import { ItRadioButtonComponent } from './radio-button/radio-button.component';
6
- import { ItRangeComponent } from './range/range.component';
7
- import { ItRatingComponent } from './rating/rating.component';
8
- import { ItSelectComponent } from './select/select.component';
9
- import { ItTextareaComponent } from './textarea/textarea.component';
10
- import { ItUploadDragDropComponent } from './upload-drag-drop/upload-drag-drop.component';
11
- import { ItUploadFileListComponent } from './upload-file-list/upload-file-list.component';
12
- import { ItSearchComponent } from './search/search.component';
13
- import { ItTransferComponent } from './transfer/transfer.component';
14
- import { ItAutocompleteComponent } from './autocomplete/autocomplete.component';
15
- import * as i0 from "@angular/core";
16
- const formComponents = [
17
- ItAutocompleteComponent,
18
- ItSearchComponent,
19
- ItCheckboxComponent,
20
- ItInputComponent,
21
- ItPasswordInputComponent,
22
- ItRadioButtonComponent,
23
- ItRangeComponent,
24
- ItRatingComponent,
25
- ItSelectComponent,
26
- ItTextareaComponent,
27
- ItTransferComponent,
28
- ItUploadDragDropComponent,
29
- ItUploadFileListComponent,
30
- ];
31
- export class ItFormModule {
32
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
33
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.6", ngImport: i0, type: ItFormModule, imports: [ItAutocompleteComponent,
34
- ItSearchComponent,
35
- ItCheckboxComponent,
36
- ItInputComponent,
37
- ItPasswordInputComponent,
38
- ItRadioButtonComponent,
39
- ItRangeComponent,
40
- ItRatingComponent,
41
- ItSelectComponent,
42
- ItTextareaComponent,
43
- ItTransferComponent,
44
- ItUploadDragDropComponent,
45
- ItUploadFileListComponent], exports: [ItAutocompleteComponent,
46
- ItSearchComponent,
47
- ItCheckboxComponent,
48
- ItInputComponent,
49
- ItPasswordInputComponent,
50
- ItRadioButtonComponent,
51
- ItRangeComponent,
52
- ItRatingComponent,
53
- ItSelectComponent,
54
- ItTextareaComponent,
55
- ItTransferComponent,
56
- ItUploadDragDropComponent,
57
- ItUploadFileListComponent] }); }
58
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItFormModule, imports: [formComponents] }); }
59
- }
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItFormModule, decorators: [{
61
- type: NgModule,
62
- args: [{
63
- imports: formComponents,
64
- exports: formComponents,
65
- }]
66
- }] });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZm9ybS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNyRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMxRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMxRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7QUFFaEYsTUFBTSxjQUFjLEdBQUc7SUFDckIsdUJBQXVCO0lBQ3ZCLGlCQUFpQjtJQUNqQixtQkFBbUI7SUFDbkIsZ0JBQWdCO0lBQ2hCLHdCQUF3QjtJQUN4QixzQkFBc0I7SUFDdEIsZ0JBQWdCO0lBQ2hCLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsbUJBQW1CO0lBQ25CLG1CQUFtQjtJQUNuQix5QkFBeUI7SUFDekIseUJBQXlCO0NBQzFCLENBQUM7QUFNRixNQUFNLE9BQU8sWUFBWTs4R0FBWixZQUFZOytHQUFaLFlBQVksWUFuQnZCLHVCQUF1QjtZQUN2QixpQkFBaUI7WUFDakIsbUJBQW1CO1lBQ25CLGdCQUFnQjtZQUNoQix3QkFBd0I7WUFDeEIsc0JBQXNCO1lBQ3RCLGdCQUFnQjtZQUNoQixpQkFBaUI7WUFDakIsaUJBQWlCO1lBQ2pCLG1CQUFtQjtZQUNuQixtQkFBbUI7WUFDbkIseUJBQXlCO1lBQ3pCLHlCQUF5QixhQVp6Qix1QkFBdUI7WUFDdkIsaUJBQWlCO1lBQ2pCLG1CQUFtQjtZQUNuQixnQkFBZ0I7WUFDaEIsd0JBQXdCO1lBQ3hCLHNCQUFzQjtZQUN0QixnQkFBZ0I7WUFDaEIsaUJBQWlCO1lBQ2pCLGlCQUFpQjtZQUNqQixtQkFBbUI7WUFDbkIsbUJBQW1CO1lBQ25CLHlCQUF5QjtZQUN6Qix5QkFBeUI7K0dBT2QsWUFBWSxZQUhkLGNBQWM7OzJGQUdaLFlBQVk7a0JBSnhCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLGNBQWM7b0JBQ3ZCLE9BQU8sRUFBRSxjQUFjO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJdENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSXRJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQvaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEl0UGFzc3dvcmRJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vcGFzc3dvcmQtaW5wdXQvcGFzc3dvcmQtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEl0UmFkaW9CdXR0b25Db21wb25lbnQgfSBmcm9tICcuL3JhZGlvLWJ1dHRvbi9yYWRpby1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IEl0UmFuZ2VDb21wb25lbnQgfSBmcm9tICcuL3JhbmdlL3JhbmdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJdFJhdGluZ0NvbXBvbmVudCB9IGZyb20gJy4vcmF0aW5nL3JhdGluZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgSXRTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50JztcbmltcG9ydCB7IEl0VGV4dGFyZWFDb21wb25lbnQgfSBmcm9tICcuL3RleHRhcmVhL3RleHRhcmVhLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJdFVwbG9hZERyYWdEcm9wQ29tcG9uZW50IH0gZnJvbSAnLi91cGxvYWQtZHJhZy1kcm9wL3VwbG9hZC1kcmFnLWRyb3AuY29tcG9uZW50JztcbmltcG9ydCB7IEl0VXBsb2FkRmlsZUxpc3RDb21wb25lbnQgfSBmcm9tICcuL3VwbG9hZC1maWxlLWxpc3QvdXBsb2FkLWZpbGUtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSXRTZWFyY2hDb21wb25lbnQgfSBmcm9tICcuL3NlYXJjaC9zZWFyY2guY29tcG9uZW50JztcbmltcG9ydCB7IEl0VHJhbnNmZXJDb21wb25lbnQgfSBmcm9tICcuL3RyYW5zZmVyL3RyYW5zZmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJdEF1dG9jb21wbGV0ZUNvbXBvbmVudCB9IGZyb20gJy4vYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuXG5jb25zdCBmb3JtQ29tcG9uZW50cyA9IFtcbiAgSXRBdXRvY29tcGxldGVDb21wb25lbnQsXG4gIEl0U2VhcmNoQ29tcG9uZW50LFxuICBJdENoZWNrYm94Q29tcG9uZW50LFxuICBJdElucHV0Q29tcG9uZW50LFxuICBJdFBhc3N3b3JkSW5wdXRDb21wb25lbnQsXG4gIEl0UmFkaW9CdXR0b25Db21wb25lbnQsXG4gIEl0UmFuZ2VDb21wb25lbnQsXG4gIEl0UmF0aW5nQ29tcG9uZW50LFxuICBJdFNlbGVjdENvbXBvbmVudCxcbiAgSXRUZXh0YXJlYUNvbXBvbmVudCxcbiAgSXRUcmFuc2ZlckNvbXBvbmVudCxcbiAgSXRVcGxvYWREcmFnRHJvcENvbXBvbmVudCxcbiAgSXRVcGxvYWRGaWxlTGlzdENvbXBvbmVudCxcbl07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IGZvcm1Db21wb25lbnRzLFxuICBleHBvcnRzOiBmb3JtQ29tcG9uZW50cyxcbn0pXG5leHBvcnQgY2xhc3MgSXRGb3JtTW9kdWxlIHt9XG4iXX0=
@@ -1,190 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
- import { ItAbstractFormComponent } from '../../../abstracts/abstract-form.component';
3
- import { ReactiveFormsModule, Validators } from '@angular/forms';
4
- import { ItValidators } from '../../../validators/it-validators';
5
- import { AsyncPipe } from '@angular/common';
6
- import { TranslateModule } from '@ngx-translate/core';
7
- import { inputToBoolean } from '../../../utils/coercion';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@angular/forms";
10
- import * as i2 from "@ngx-translate/core";
11
- export class ItInputComponent extends ItAbstractFormComponent {
12
- constructor() {
13
- super(...arguments);
14
- /**
15
- * The input type
16
- * @default text
17
- */
18
- this.type = 'text';
19
- /**
20
- * The input placeholder
21
- */
22
- this.placeholder = '';
23
- /**
24
- * The max date value [Used only in type = 'date']
25
- * @default '9999-12-31'
26
- * @example 'yyyy-mm-dd'
27
- */
28
- this.maxDate = '9999-12-31';
29
- }
30
- get isActiveLabel() {
31
- const value = this.control.value;
32
- if ((!!value && value !== 0) || value === 0 || !!this.placeholder) {
33
- return true;
34
- }
35
- // if (this.type === 'number' && (!!this.currency || !!this.percentage)) {
36
- // return true;
37
- // }
38
- return this.type === 'date' || this.type === 'time' || this.type === 'color';
39
- }
40
- /**
41
- * Check is readonly field
42
- */
43
- get isReadonly() {
44
- return this.readonly === 'plaintext' || !!this.readonly;
45
- }
46
- /**
47
- * Return the invalid message string from TranslateService
48
- */
49
- get invalidMessage() {
50
- if (this.hasError('min') && this.min) {
51
- return this._translateService.get('it.errors.min-invalid', {
52
- min: this.min,
53
- });
54
- }
55
- if (this.hasError('max') && this.max) {
56
- return this._translateService.get('it.errors.max-invalid', {
57
- max: this.max,
58
- });
59
- }
60
- if (this.hasError('minlength')) {
61
- const error = this.getError('minlength');
62
- return this._translateService.get('it.errors.min-length-invalid', {
63
- min: error.requiredLength,
64
- });
65
- }
66
- if (this.hasError('maxlength')) {
67
- const error = this.getError('maxlength');
68
- return this._translateService.get('it.errors.max-length-invalid', {
69
- max: error.requiredLength,
70
- });
71
- }
72
- if (this.hasError('email') || this.hasError('invalidEmail')) {
73
- return this._translateService.get('it.errors.email-invalid');
74
- }
75
- if (this.hasError('invalidTel')) {
76
- return this._translateService.get('it.errors.tel-invalid');
77
- }
78
- if (this.hasError('invalidUrl')) {
79
- return this._translateService.get('it.errors.url-invalid');
80
- }
81
- if (this.hasError('invalidTaxCode')) {
82
- return this._translateService.get('it.errors.tax-code-invalid');
83
- }
84
- if (this.hasError('invalidVatNumber')) {
85
- return this._translateService.get('it.errors.vat-number-invalid');
86
- }
87
- if (this.hasError('invalidCap')) {
88
- return this._translateService.get('it.errors.cap-invalid');
89
- }
90
- if (this.hasError('invalidIban')) {
91
- return this._translateService.get('it.errors.iban-invalid');
92
- }
93
- if (this.hasError('invalidPlate')) {
94
- return this._translateService.get('it.errors.plate-invalid');
95
- }
96
- if (this.hasError('invalidRegex')) {
97
- return this._translateService.get('it.errors.regex-invalid');
98
- }
99
- if (this.hasError('pattern')) {
100
- const error = this.getError('pattern');
101
- return this._translateService.get('it.errors.pattern-invalid', {
102
- pattern: error.requiredPattern,
103
- });
104
- }
105
- return super.invalidMessage;
106
- }
107
- ngOnInit() {
108
- super.ngOnInit();
109
- const validators = [];
110
- switch (this.type) {
111
- case 'number':
112
- if (this.percentage) {
113
- this.min = this.min || 0;
114
- this.max = this.max || 100;
115
- }
116
- // Dynamic min/max validators
117
- validators.push((control) => (this.min ? Validators.min(this.min)(control) : null));
118
- validators.push((control) => (this.max ? Validators.max(this.max)(control) : null));
119
- break;
120
- case 'email':
121
- validators.push(ItValidators.email);
122
- break;
123
- case 'tel':
124
- validators.push(ItValidators.tel);
125
- break;
126
- case 'url':
127
- validators.push(ItValidators.url);
128
- break;
129
- }
130
- this.addValidators(validators);
131
- }
132
- /**
133
- * Increment or decrease the input number value of step
134
- * @param decrease true to decrease value
135
- */
136
- incrementNumber(decrease = false) {
137
- if (this.type !== 'number') {
138
- return;
139
- }
140
- const step = this.step === 'any' ? 1 : this.step ?? 1;
141
- let value = Number(this.control.value);
142
- value = (isNaN(value) ? 0 : value) + (decrease ? -step : step);
143
- value = Math.round(value * 1e12) / 1e12; // prevent js decimal error
144
- if (this.min !== undefined && value < this.min) {
145
- value = this.min;
146
- }
147
- else if (this.max !== undefined && value > this.max) {
148
- value = this.max;
149
- }
150
- this.control.setValue(value);
151
- }
152
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
153
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.6", type: ItInputComponent, isStandalone: true, selector: "it-input", inputs: { type: "type", placeholder: "placeholder", description: "description", readonly: "readonly", maxDate: "maxDate", minDate: "minDate", max: "max", min: "min", step: "step", currency: ["currency", "currency", inputToBoolean], percentage: ["percentage", "percentage", inputToBoolean], symbol: "symbol", adaptive: ["adaptive", "adaptive", inputToBoolean], autocomplete: "autocomplete" }, usesInheritance: true, ngImport: i0, template: "<div class=\"form-group\">\n <div\n class=\"input-group\"\n [class.disabled]=\"!control.enabled\"\n [class.input-number]=\"type === 'number'\"\n [class.input-number-currency]=\"currency\"\n [class.input-number-percentage]=\"percentage\"\n [class.input-number-adaptive]=\"adaptive\">\n <span class=\"input-group-text\" #prependText>\n <ng-content select=\"[prependText]\"></ng-content>\n </span>\n @if (label) {\n <label\n [for]=\"id\"\n [class.active]=\"isActiveLabel\"\n [class.input-symbol-label]=\"percentage || currency\"\n [class.input-number-label]=\"type === 'number'\"\n [class.empty-prepend-label]=\"!(percentage || currency) && !prependText.clientWidth\">\n {{ label }}\n </label>\n }\n\n @if (type === 'number') {\n @if (currency || percentage) {\n <span class=\"input-group-text fw-semibold\">{{ symbol }}</span>\n }\n <input\n type=\"number\"\n [id]=\"id\"\n [step]=\"step ?? null\"\n [min]=\"min ?? ''\"\n [max]=\"max ?? ''\"\n [class.form-control]=\"readonly !== 'plaintext'\"\n [class.form-control-plaintext]=\"readonly === 'plaintext'\"\n [class.is-invalid]=\"isInvalid\"\n [class.just-validate-success-field]=\"isValid\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [readonly]=\"isReadonly\"\n [autocomplete]=\"autocomplete\"\n [attr.aria-describedby]=\"id + '-description'\"\n (blur)=\"markAsTouched()\" />\n <span class=\"input-group-text align-buttons flex-column\">\n <button type=\"button\" class=\"input-number-add\" [disabled]=\"!control.enabled\" (click)=\"incrementNumber()\">\n <span class=\"visually-hidden\">{{ 'it.form.increase-value' | translate }}</span>\n </button>\n <button type=\"button\" class=\"input-number-sub\" [disabled]=\"!control.enabled\" (click)=\"incrementNumber(true)\">\n <span class=\"visually-hidden\">{{ 'it.form.decrease-value' | translate }}</span>\n </button>\n </span>\n } @else {\n <input\n [id]=\"id\"\n [type]=\"type\"\n [max]=\"type === 'date' ? maxDate : undefined\"\n [min]=\"type === 'date' ? minDate : undefined\"\n [class.form-control]=\"readonly !== 'plaintext'\"\n [class.form-control-plaintext]=\"readonly === 'plaintext'\"\n [class.is-invalid]=\"isInvalid\"\n [class.just-validate-success-field]=\"isValid\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [readonly]=\"isReadonly\"\n [autocomplete]=\"autocomplete\"\n [attr.aria-describedby]=\"id + '-description'\"\n (blur)=\"markAsTouched()\" />\n }\n\n <div class=\"input-group-append\">\n <ng-content select=\"[append]\"></ng-content>\n\n <div class=\"input-group-text\">\n <ng-content select=\"[appendText]\"></ng-content>\n </div>\n </div>\n </div>\n\n @if (description) {\n <small [id]=\"id + '-description'\" class=\"form-text\">{{ description }}</small>\n }\n\n @if (isInvalid) {\n <div class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n <div #customError>\n <ng-content select=\"[error]\"></ng-content>\n </div>\n @if (!customError.hasChildNodes()) {\n {{ invalidMessage | async }}\n }\n </div>\n }\n</div>\n", styles: [".form-group label{z-index:1000}.form-group .input-number .align-buttons{height:100%}.form-group .input-group-text:empty{display:none}.form-group label.empty-prepend-label{left:auto!important;max-width:100%!important}.form-group label:not(.active):has(+input:-webkit-autofill){transform:translateY(-75%)}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
154
- }
155
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ItInputComponent, decorators: [{
156
- type: Component,
157
- args: [{ standalone: true, selector: 'it-input', changeDetection: ChangeDetectionStrategy.OnPush, imports: [ReactiveFormsModule, TranslateModule, AsyncPipe], template: "<div class=\"form-group\">\n <div\n class=\"input-group\"\n [class.disabled]=\"!control.enabled\"\n [class.input-number]=\"type === 'number'\"\n [class.input-number-currency]=\"currency\"\n [class.input-number-percentage]=\"percentage\"\n [class.input-number-adaptive]=\"adaptive\">\n <span class=\"input-group-text\" #prependText>\n <ng-content select=\"[prependText]\"></ng-content>\n </span>\n @if (label) {\n <label\n [for]=\"id\"\n [class.active]=\"isActiveLabel\"\n [class.input-symbol-label]=\"percentage || currency\"\n [class.input-number-label]=\"type === 'number'\"\n [class.empty-prepend-label]=\"!(percentage || currency) && !prependText.clientWidth\">\n {{ label }}\n </label>\n }\n\n @if (type === 'number') {\n @if (currency || percentage) {\n <span class=\"input-group-text fw-semibold\">{{ symbol }}</span>\n }\n <input\n type=\"number\"\n [id]=\"id\"\n [step]=\"step ?? null\"\n [min]=\"min ?? ''\"\n [max]=\"max ?? ''\"\n [class.form-control]=\"readonly !== 'plaintext'\"\n [class.form-control-plaintext]=\"readonly === 'plaintext'\"\n [class.is-invalid]=\"isInvalid\"\n [class.just-validate-success-field]=\"isValid\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [readonly]=\"isReadonly\"\n [autocomplete]=\"autocomplete\"\n [attr.aria-describedby]=\"id + '-description'\"\n (blur)=\"markAsTouched()\" />\n <span class=\"input-group-text align-buttons flex-column\">\n <button type=\"button\" class=\"input-number-add\" [disabled]=\"!control.enabled\" (click)=\"incrementNumber()\">\n <span class=\"visually-hidden\">{{ 'it.form.increase-value' | translate }}</span>\n </button>\n <button type=\"button\" class=\"input-number-sub\" [disabled]=\"!control.enabled\" (click)=\"incrementNumber(true)\">\n <span class=\"visually-hidden\">{{ 'it.form.decrease-value' | translate }}</span>\n </button>\n </span>\n } @else {\n <input\n [id]=\"id\"\n [type]=\"type\"\n [max]=\"type === 'date' ? maxDate : undefined\"\n [min]=\"type === 'date' ? minDate : undefined\"\n [class.form-control]=\"readonly !== 'plaintext'\"\n [class.form-control-plaintext]=\"readonly === 'plaintext'\"\n [class.is-invalid]=\"isInvalid\"\n [class.just-validate-success-field]=\"isValid\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n [readonly]=\"isReadonly\"\n [autocomplete]=\"autocomplete\"\n [attr.aria-describedby]=\"id + '-description'\"\n (blur)=\"markAsTouched()\" />\n }\n\n <div class=\"input-group-append\">\n <ng-content select=\"[append]\"></ng-content>\n\n <div class=\"input-group-text\">\n <ng-content select=\"[appendText]\"></ng-content>\n </div>\n </div>\n </div>\n\n @if (description) {\n <small [id]=\"id + '-description'\" class=\"form-text\">{{ description }}</small>\n }\n\n @if (isInvalid) {\n <div class=\"form-feedback just-validate-error-label\" [id]=\"id + '-error'\">\n <div #customError>\n <ng-content select=\"[error]\"></ng-content>\n </div>\n @if (!customError.hasChildNodes()) {\n {{ invalidMessage | async }}\n }\n </div>\n }\n</div>\n", styles: [".form-group label{z-index:1000}.form-group .input-number .align-buttons{height:100%}.form-group .input-group-text:empty{display:none}.form-group label.empty-prepend-label{left:auto!important;max-width:100%!important}.form-group label:not(.active):has(+input:-webkit-autofill){transform:translateY(-75%)}\n"] }]
158
- }], propDecorators: { type: [{
159
- type: Input
160
- }], placeholder: [{
161
- type: Input
162
- }], description: [{
163
- type: Input
164
- }], readonly: [{
165
- type: Input
166
- }], maxDate: [{
167
- type: Input
168
- }], minDate: [{
169
- type: Input
170
- }], max: [{
171
- type: Input
172
- }], min: [{
173
- type: Input
174
- }], step: [{
175
- type: Input
176
- }], currency: [{
177
- type: Input,
178
- args: [{ transform: inputToBoolean }]
179
- }], percentage: [{
180
- type: Input,
181
- args: [{ transform: inputToBoolean }]
182
- }], symbol: [{
183
- type: Input
184
- }], adaptive: [{
185
- type: Input,
186
- args: [{ transform: inputToBoolean }]
187
- }], autocomplete: [{
188
- type: Input
189
- }] } });
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWFuZ3VsYXIta2l0L3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0L2lucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1hbmd1bGFyLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9pbnB1dC9pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUVyRixPQUFPLEVBQW1CLG1CQUFtQixFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7OztBQVV6RCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsdUJBQTJEO0lBUmpHOztRQVNFOzs7V0FHRztRQUNNLFNBQUksR0FBcUIsTUFBTSxDQUFDO1FBRXpDOztXQUVHO1FBQ00sZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFjMUI7Ozs7V0FJRztRQUNNLFlBQU8sR0FBWSxZQUFZLENBQUM7S0EwTDFDO0lBcklDLElBQUksYUFBYTtRQUNmLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEtB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Z0I7a0JBUjVCLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLFVBQVUsbUJBR0gsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxTQUFTLENBQUM7OEJBT2pELElBQUk7c0JBQVosS0FBSztnQkFLRyxXQUFXO3NCQUFuQixLQUFLO2dCQUtHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBT0csUUFBUTtzQkFBaEIsS0FBSztnQkFPRyxPQUFPO3NCQUFmLEtBQUs7Z0JBTUcsT0FBTztzQkFBZixLQUFLO2dCQUtHLEdBQUc7c0JBQVgsS0FBSztnQkFLRyxHQUFHO3NCQUFYLEtBQUs7Z0JBS0csSUFBSTtzQkFBWixLQUFLO2dCQU1nQyxRQUFRO3NCQUE3QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRTtnQkFNRSxVQUFVO3NCQUEvQyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRTtnQkFNM0IsTUFBTTtzQkFBZCxLQUFLO2dCQU1nQyxRQUFRO3NCQUE3QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRTtnQkFNM0IsWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEl0QWJzdHJhY3RGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vYWJzdHJhY3RzL2Fic3RyYWN0LWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IElucHV0Q29udHJvbFR5cGUgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL2Zvcm0nO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEl0VmFsaWRhdG9ycyB9IGZyb20gJy4uLy4uLy4uL3ZhbGlkYXRvcnMvaXQtdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBpbnB1dFRvQm9vbGVhbiB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NvZXJjaW9uJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnaXQtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1JlYWN0aXZlRm9ybXNNb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZSwgQXN5bmNQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgSXRJbnB1dENvbXBvbmVudCBleHRlbmRzIEl0QWJzdHJhY3RGb3JtQ29tcG9uZW50PHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQ+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqXG4gICAqIFRoZSBpbnB1dCB0eXBlXG4gICAqIEBkZWZhdWx0IHRleHRcbiAgICovXG4gIEBJbnB1dCgpIHR5cGU6IElucHV0Q29udHJvbFR5cGUgPSAndGV4dCc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbnB1dCBwbGFjZWhvbGRlclxuICAgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcblxuICAvKipcbiAgICogVGhlIGlucHV0IGRlc2NyaXB0aW9uXG4gICAqL1xuICBASW5wdXQoKSBkZXNjcmlwdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUbyBwcmV2ZW50IG1vZGlmaWNhdGlvbiBvZiB0aGUgY29udGFpbmVkIHZhbHVlLlxuICAgKiAtIDxiPnBsYWludGV4dDwvYj46IFJlYWRvbmx5IGZpZWxkIGluIHRoZSBmb3JtIHN0eWxpemVkIGFzIHBsYWluIHRleHRcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiB8ICdwbGFpbnRleHQnIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4IGRhdGUgdmFsdWUgW1VzZWQgb25seSBpbiB0eXBlID0gJ2RhdGUnXVxuICAgKiBAZGVmYXVsdCAnOTk5OS0xMi0zMSdcbiAgICogQGV4YW1wbGUgJ3l5eXktbW0tZGQnXG4gICAqL1xuICBASW5wdXQoKSBtYXhEYXRlPzogc3RyaW5nID0gJzk5OTktMTItMzEnO1xuXG4gIC8qKlxuICAgKiBUaGUgbWluIGRhdGUgdmFsdWUgW1VzZWQgb25seSBpbiB0eXBlID0gJ2RhdGUnXVxuICAgKiBAZXhhbXBsZSAneXl5eS1tbS1kZCdcbiAgICovXG4gIEBJbnB1dCgpIG1pbkRhdGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIG1heCB2YWx1ZSBbVXNlZCBvbmx5IGluIHR5cGUgPSAnbnVtYmVyJ11cbiAgICovXG4gIEBJbnB1dCgpIG1heDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgbWluIHZhbHVlIFtVc2VkIG9ubHkgaW4gdHlwZSA9ICdudW1iZXInXVxuICAgKi9cbiAgQElucHV0KCkgbWluOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGVwIHZhbHVlIFtVc2VkIG9ubHkgaW4gdHlwZSA9ICdudW1iZXInXVxuICAgKi9cbiAgQElucHV0KCkgc3RlcDogbnVtYmVyIHwgJ2FueScgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIElmIGlzIGEgY3VycmVuY3kgbnVtYmVyIFtVc2VkIG9ubHkgaW4gdHlwZSA9ICdudW1iZXInXVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBpbnB1dFRvQm9vbGVhbiB9KSBjdXJyZW5jeT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGlzIGEgcGVyY2VudGFnZSBudW1iZXIgW1VzZWQgb25seSBpbiB0eXBlID0gJ251bWJlciddXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGlucHV0VG9Cb29sZWFuIH0pIHBlcmNlbnRhZ2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVuY3kgb3IgcGVyY2VudGFnZSBzeW1ib2wgW1VzZWQgb25seSBpZiBwZXJjZW50YWdlIG9yIGN1cnJlbmN5XVxuICAgKiBAZXhhbXBsZSAnJCdcbiAgICovXG4gIEBJbnB1dCgpIHN5bWJvbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUbyBtYWtlIHRoZSBudW1lcmljIGZpZWxkIGF1dG9tYXRpY2FsbHkgcmVzaXplIGFjY29yZGluZyB0byB0aGUgdmFsdWUgY29udGFpbmVkIGluIGl0LiBbVXNlZCBvbmx5IGluIHR5cGUgPSAnbnVtYmVyJ11cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogaW5wdXRUb0Jvb2xlYW4gfSkgYWRhcHRpdmU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbnB1dCBhdXRvY29tcGxldGUgYXR0cmlidXRlIChCcm93c2VyIGF1dG9jb21wbGV0ZSlcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICBASW5wdXQoKSBhdXRvY29tcGxldGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBnZXQgaXNBY3RpdmVMYWJlbCgpOiBib29sZWFuIHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuY29udHJvbC52YWx1ZTtcbiAgICBpZiAoKCEhdmFsdWUgJiYgdmFsdWUgIT09IDApIHx8IHZhbHVlID09PSAwIHx8ICEhdGhpcy5wbGFjZWhvbGRlcikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gaWYgKHRoaXMudHlwZSA9PT0gJ251bWJlcicgJiYgKCEhdGhpcy5jdXJyZW5jeSB8fCAhIXRoaXMucGVyY2VudGFnZSkpIHtcbiAgICAvLyAgIHJldHVybiB0cnVlO1xuICAgIC8vIH1cblxuICAgIHJldHVybiB0aGlzLnR5cGUgPT09ICdkYXRlJyB8fCB0aGlzLnR5cGUgPT09ICd0aW1lJyB8fCB0aGlzLnR5cGUgPT09ICdjb2xvcic7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaXMgcmVhZG9ubHkgZmllbGRcbiAgICovXG4gIHByb3RlY3RlZCBnZXQgaXNSZWFkb25seSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yZWFkb25seSA9PT0gJ3BsYWludGV4dCcgfHwgISF0aGlzLnJlYWRvbmx5O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgaW52YWxpZCBtZXNzYWdlIHN0cmluZyBmcm9tIFRyYW5zbGF0ZVNlcnZpY2VcbiAgICovXG4gIG92ZXJyaWRlIGdldCBpbnZhbGlkTWVzc2FnZSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIGlmICh0aGlzLmhhc0Vycm9yKCdtaW4nKSAmJiB0aGlzLm1pbikge1xuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuZ2V0KCdpdC5lcnJvcnMubWluLWludmFsaWQnLCB7XG4gICAgICAgIG1pbjogdGhpcy5taW4sXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaGFzRXJyb3IoJ21heCcpICYmIHRoaXMubWF4KSB7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlU2VydmljZS5nZXQoJ2l0LmVycm9ycy5tYXgtaW52YWxpZCcsIHtcbiAgICAgICAgbWF4OiB0aGlzLm1heCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5oYXNFcnJvcignbWlubGVuZ3RoJykpIHtcbiAgICAgIGNvbnN0IGVycm9yID0gdGhpcy5nZXRFcnJvcignbWlubGVuZ3RoJyk7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlU2VydmljZS5nZXQoJ2l0LmVycm9ycy5taW4tbGVuZ3RoLWludmFsaWQnLCB7XG4gICAgICAgIG1pbjogZXJyb3IucmVxdWlyZWRMZW5ndGgsXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaGFzRXJyb3IoJ21heGxlbmd0aCcpKSB7XG4gICAgICBjb25zdCBlcnJvciA9IHRoaXMuZ2V0RXJyb3IoJ21heGxlbmd0aCcpO1xuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuZ2V0KCdpdC5lcnJvcnMubWF4LWxlbmd0aC1pbnZhbGlkJywge1xuICAgICAgICBtYXg6IGVycm9yLnJlcXVpcmVkTGVuZ3RoLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhhc0Vycm9yKCdlbWFpbCcpIHx8IHRoaXMuaGFzRXJyb3IoJ2ludmFsaWRFbWFpbCcpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlU2VydmljZS5nZXQoJ2l0LmVycm9ycy5lbWFpbC1pbnZhbGlkJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhhc0Vycm9yKCdpbnZhbGlkVGVsJykpIHtcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmdldCgnaXQuZXJyb3JzLnRlbC1pbnZhbGlkJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhhc0Vycm9yKCdpbnZhbGlkVXJsJykpIHtcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmdldCgnaXQuZXJyb3JzLnVybC1pbnZhbGlkJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhhc0Vycm9yKCdpbnZhbGlkVGF4Q29kZScpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlU2VydmljZS5nZXQoJ2l0LmVycm9ycy50YXgtY29kZS1pbnZhbGlkJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhhc0Vycm9yKCdpbnZhbGlkVmF0TnVtYmVyJykpIHtcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmdldCgnaXQuZXJyb3JzLnZhdC1udW1iZXItaW52YWxpZCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5oYXNFcnJvcignaW52YWxpZENhcCcpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlU2VydmljZS5nZXQoJ2l0LmVycm9ycy5jYXAtaW52YWxpZCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5oYXNFcnJvcignaW52YWxpZEliYW4nKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuZ2V0KCdpdC5lcnJvcnMuaWJhbi1pbnZhbGlkJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhhc0Vycm9yKCdpbnZhbGlkUGxhdGUnKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuZ2V0KCdpdC5lcnJvcnMucGxhdGUtaW52YWxpZCcpO1xuICAgIH1cbiAgICBpZiAodGhpcy5oYXNFcnJvcignaW52YWxpZFJlZ2V4JykpIHtcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmdldCgnaXQuZXJyb3JzLnJlZ2V4LWludmFsaWQnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaGFzRXJyb3IoJ3BhdHRlcm4nKSkge1xuICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLmdldEVycm9yKCdwYXR0ZXJuJyk7XG4gICAgICByZXR1cm4gdGhpcy5fdHJhbnNsYXRlU2VydmljZS5nZXQoJ2l0LmVycm9ycy5wYXR0ZXJuLWludmFsaWQnLCB7XG4gICAgICAgIHBhdHRlcm46IGVycm9yLnJlcXVpcmVkUGF0dGVybixcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBlci5pbnZhbGlkTWVzc2FnZTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICBjb25zdCB2YWxpZGF0b3JzOiBBcnJheTxWYWxpZGF0b3JGbj4gPSBbXTtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgaWYgKHRoaXMucGVyY2VudGFnZSkge1xuICAgICAgICAgIHRoaXMubWluID0gdGhpcy5taW4gfHwgMDtcbiAgICAgICAgICB0aGlzLm1heCA9IHRoaXMubWF4IHx8IDEwMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIER5bmFtaWMgbWluL21heCB2YWxpZGF0b3JzXG4gICAgICAgIHZhbGlkYXRvcnMucHVzaCgoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiAodGhpcy5taW4gPyBWYWxpZGF0b3JzLm1pbih0aGlzLm1pbikoY29udHJvbCkgOiBudWxsKSk7XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaCgoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiAodGhpcy5tYXggPyBWYWxpZGF0b3JzLm1heCh0aGlzLm1heCkoY29udHJvbCkgOiBudWxsKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZW1haWwnOlxuICAgICAgICB2YWxpZGF0b3JzLnB1c2goSXRWYWxpZGF0b3JzLmVtYWlsKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0ZWwnOlxuICAgICAgICB2YWxpZGF0b3JzLnB1c2goSXRWYWxpZGF0b3JzLnRlbCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndXJsJzpcbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKEl0VmFsaWRhdG9ycy51cmwpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLmFkZFZhbGlkYXRvcnModmFsaWRhdG9ycyk7XG4gIH1cblxuICAvKipcbiAgICogSW5jcmVtZW50IG9yIGRlY3JlYXNlIHRoZSBpbnB1dCBudW1iZXIgdmFsdWUgb2Ygc3RlcFxuICAgKiBAcGFyYW0gZGVjcmVhc2UgdHJ1ZSB0byBkZWNyZWFzZSB2YWx1ZVxuICAgKi9cbiAgcHJvdGVjdGVkIGluY3JlbWVudE51bWJlcihkZWNyZWFzZSA9IGZhbHNlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHlwZSAhPT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc3RlcCA9IHRoaXMuc3RlcCA9PT0gJ2FueScgPyAxIDogdGhpcy5zdGVwID8/IDE7XG4gICAgbGV0IHZhbHVlID0gTnVtYmVyKHRoaXMuY29udHJvbC52YWx1ZSk7XG4gICAgdmFsdWUgPSAoaXNOYU4odmFsdWUpID8gMCA6IHZhbHVlKSArIChkZWNyZWFzZSA/IC1zdGVwIDogc3RlcCk7XG4gICAgdmFsdWUgPSBNYXRoLnJvdW5kKHZhbHVlICogMWUxMikgLyAxZTEyOyAvLyBwcmV2ZW50IGpzIGRlY2ltYWwgZXJyb3JcblxuICAgIGlmICh0aGlzLm1pbiAhPT0gdW5kZWZpbmVkICYmIHZhbHVlIDwgdGhpcy5taW4pIHtcbiAgICAgIHZhbHVlID0gdGhpcy5taW47XG4gICAgfSBlbHNlIGlmICh0aGlzLm1heCAhPT0gdW5kZWZpbmVkICYmIHZhbHVlID4gdGhpcy5tYXgpIHtcbiAgICAgIHZhbHVlID0gdGhpcy5tYXg7XG4gICAgfVxuXG4gICAgdGhpcy5jb250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiaW5wdXQtZ3JvdXBcIlxuICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhY29udHJvbC5lbmFibGVkXCJcbiAgICBbY2xhc3MuaW5wdXQtbnVtYmVyXT1cInR5cGUgPT09ICdudW1iZXInXCJcbiAgICBbY2xhc3MuaW5wdXQtbnVtYmVyLWN1cnJlbmN5XT1cImN1cnJlbmN5XCJcbiAgICBbY2xhc3MuaW5wdXQtbnVtYmVyLXBlcmNlbnRhZ2VdPVwicGVyY2VudGFnZVwiXG4gICAgW2NsYXNzLmlucHV0LW51bWJlci1hZGFwdGl2ZV09XCJhZGFwdGl2ZVwiPlxuICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtdGV4dFwiICNwcmVwZW5kVGV4dD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltwcmVwZW5kVGV4dF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9zcGFuPlxuICAgIEBpZiAobGFiZWwpIHtcbiAgICAgIDxsYWJlbFxuICAgICAgICBbZm9yXT1cImlkXCJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJpc0FjdGl2ZUxhYmVsXCJcbiAgICAgICAgW2NsYXNzLmlucHV0LXN5bWJvbC1sYWJlbF09XCJwZXJjZW50YWdlIHx8IGN1cnJlbmN5XCJcbiAgICAgICAgW2NsYXNzLmlucHV0LW51bWJlci1sYWJlbF09XCJ0eXBlID09PSAnbnVtYmVyJ1wiXG4gICAgICAgIFtjbGFzcy5lbXB0eS1wcmVwZW5kLWxhYmVsXT1cIiEocGVyY2VudGFnZSB8fCBjdXJyZW5jeSkgJiYgIXByZXBlbmRUZXh0LmNsaWVudFdpZHRoXCI+XG4gICAgICAgIHt7IGxhYmVsIH19XG4gICAgICA8L2xhYmVsPlxuICAgIH1cblxuICAgIEBpZiAodHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgIEBpZiAoY3VycmVuY3kgfHwgcGVyY2VudGFnZSkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLXRleHQgZnctc2VtaWJvbGRcIj57eyBzeW1ib2wgfX08L3NwYW4+XG4gICAgICB9XG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgIFtpZF09XCJpZFwiXG4gICAgICAgIFtzdGVwXT1cInN0ZXAgPz8gbnVsbFwiXG4gICAgICAgIFttaW5dPVwibWluID8/ICcnXCJcbiAgICAgICAgW21heF09XCJtYXggPz8gJydcIlxuICAgICAgICBbY2xhc3MuZm9ybS1jb250cm9sXT1cInJlYWRvbmx5ICE9PSAncGxhaW50ZXh0J1wiXG4gICAgICAgIFtjbGFzcy5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0XT1cInJlYWRvbmx5ID09PSAncGxhaW50ZXh0J1wiXG4gICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImlzSW52YWxpZFwiXG4gICAgICAgIFtjbGFzcy5qdXN0LXZhbGlkYXRlLXN1Y2Nlc3MtZmllbGRdPVwiaXNWYWxpZFwiXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cImlzUmVhZG9ubHlcIlxuICAgICAgICBbYXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZVwiXG4gICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaWQgKyAnLWRlc2NyaXB0aW9uJ1wiXG4gICAgICAgIChibHVyKT1cIm1hcmtBc1RvdWNoZWQoKVwiIC8+XG4gICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLXRleHQgYWxpZ24tYnV0dG9ucyBmbGV4LWNvbHVtblwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImlucHV0LW51bWJlci1hZGRcIiBbZGlzYWJsZWRdPVwiIWNvbnRyb2wuZW5hYmxlZFwiIChjbGljayk9XCJpbmNyZW1lbnROdW1iZXIoKVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+e3sgJ2l0LmZvcm0uaW5jcmVhc2UtdmFsdWUnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJpbnB1dC1udW1iZXItc3ViXCIgW2Rpc2FibGVkXT1cIiFjb250cm9sLmVuYWJsZWRcIiAoY2xpY2spPVwiaW5jcmVtZW50TnVtYmVyKHRydWUpXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj57eyAnaXQuZm9ybS5kZWNyZWFzZS12YWx1ZScgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9zcGFuPlxuICAgIH0gQGVsc2Uge1xuICAgICAgPGlucHV0XG4gICAgICAgIFtpZF09XCJpZFwiXG4gICAgICAgIFt0eXBlXT1cInR5cGVcIlxuICAgICAgICBbbWF4XT1cInR5cGUgPT09ICdkYXRlJyA/IG1heERhdGUgOiB1bmRlZmluZWRcIlxuICAgICAgICBbbWluXT1cInR5cGUgPT09ICdkYXRlJyA/IG1pbkRhdGUgOiB1bmRlZmluZWRcIlxuICAgICAgICBbY2xhc3MuZm9ybS1jb250cm9sXT1cInJlYWRvbmx5ICE9PSAncGxhaW50ZXh0J1wiXG4gICAgICAgIFtjbGFzcy5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0XT1cInJlYWRvbmx5ID09PSAncGxhaW50ZXh0J1wiXG4gICAgICAgIFtjbGFzcy5pcy1pbnZhbGlkXT1cImlzSW52YWxpZFwiXG4gICAgICAgIFtjbGFzcy5qdXN0LXZhbGlkYXRlLXN1Y2Nlc3MtZmllbGRdPVwiaXNWYWxpZFwiXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cImlzUmVhZG9ubHlcIlxuICAgICAgICBbYXV0b2NvbXBsZXRlXT1cImF1dG9jb21wbGV0ZVwiXG4gICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiaWQgKyAnLWRlc2NyaXB0aW9uJ1wiXG4gICAgICAgIChibHVyKT1cIm1hcmtBc1RvdWNoZWQoKVwiIC8+XG4gICAgfVxuXG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2FwcGVuZF1cIj48L25nLWNvbnRlbnQ+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC10ZXh0XCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlthcHBlbmRUZXh0XVwiPjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICBAaWYgKGRlc2NyaXB0aW9uKSB7XG4gICAgPHNtYWxsIFtpZF09XCJpZCArICctZGVzY3JpcHRpb24nXCIgY2xhc3M9XCJmb3JtLXRleHRcIj57eyBkZXNjcmlwdGlvbiB9fTwvc21hbGw+XG4gIH1cblxuICBAaWYgKGlzSW52YWxpZCkge1xuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWZlZWRiYWNrIGp1c3QtdmFsaWRhdGUtZXJyb3ItbGFiZWxcIiBbaWRdPVwiaWQgKyAnLWVycm9yJ1wiPlxuICAgICAgPGRpdiAjY3VzdG9tRXJyb3I+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltlcnJvcl1cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIEBpZiAoIWN1c3RvbUVycm9yLmhhc0NoaWxkTm9kZXMoKSkge1xuICAgICAgICB7eyBpbnZhbGlkTWVzc2FnZSB8IGFzeW5jIH19XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuIl19