carbon-components-angular 5.72.0 → 5.72.1
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.
- package/docs/documentation/components/TextInputLabelComponent.html +171 -65
- package/docs/documentation/components/TextareaLabelComponent.html +142 -74
- package/docs/documentation/coverage.html +12 -12
- package/docs/documentation/directives/TextArea.html +106 -11
- package/docs/documentation/directives/TextInput.html +118 -24
- package/docs/documentation/js/search/search_index.js +2 -2
- package/docs/documentation/modules/CheckboxModule/dependencies.svg +42 -42
- package/docs/documentation/modules/CheckboxModule.html +42 -42
- package/docs/documentation/modules/CodeSnippetModule/dependencies.svg +4 -4
- package/docs/documentation/modules/CodeSnippetModule.html +4 -4
- package/docs/documentation/modules/ComboBoxModule/dependencies.svg +6 -6
- package/docs/documentation/modules/ComboBoxModule.html +6 -6
- package/docs/documentation/modules/ContentSwitcherModule/dependencies.svg +4 -4
- package/docs/documentation/modules/ContentSwitcherModule.html +4 -4
- package/docs/documentation/modules/ContextMenuModule/dependencies.svg +67 -67
- package/docs/documentation/modules/ContextMenuModule.html +67 -67
- package/docs/documentation/modules/DatePickerInputModule/dependencies.svg +4 -4
- package/docs/documentation/modules/DatePickerInputModule.html +4 -4
- package/docs/documentation/modules/DatePickerModule/dependencies.svg +6 -6
- package/docs/documentation/modules/DatePickerModule.html +6 -6
- package/docs/documentation/modules/DialogModule/dependencies.svg +4 -4
- package/docs/documentation/modules/DialogModule.html +4 -4
- package/docs/documentation/modules/DropdownModule/dependencies.svg +53 -53
- package/docs/documentation/modules/DropdownModule.html +53 -53
- package/docs/documentation/modules/FileUploaderModule/dependencies.svg +58 -58
- package/docs/documentation/modules/FileUploaderModule.html +58 -58
- package/docs/documentation/modules/GridModule/dependencies.svg +29 -29
- package/docs/documentation/modules/GridModule.html +29 -29
- package/docs/documentation/modules/I18nModule/dependencies.svg +4 -4
- package/docs/documentation/modules/I18nModule.html +4 -4
- package/docs/documentation/modules/IconModule/dependencies.svg +4 -4
- package/docs/documentation/modules/IconModule.html +4 -4
- package/docs/documentation/modules/InputModule/dependencies.svg +76 -76
- package/docs/documentation/modules/InputModule.html +76 -76
- package/docs/documentation/modules/LayerModule/dependencies.svg +4 -4
- package/docs/documentation/modules/LayerModule.html +4 -4
- package/docs/documentation/modules/ListModule/dependencies.svg +4 -4
- package/docs/documentation/modules/ListModule.html +4 -4
- package/docs/documentation/modules/LoadingModule/dependencies.svg +4 -4
- package/docs/documentation/modules/LoadingModule.html +4 -4
- package/docs/documentation/modules/MenuButtonModule/dependencies.svg +29 -29
- package/docs/documentation/modules/MenuButtonModule.html +29 -29
- package/docs/documentation/modules/ModalModule/dependencies.svg +37 -37
- package/docs/documentation/modules/ModalModule.html +37 -37
- package/docs/documentation/modules/NumberModule/dependencies.svg +4 -4
- package/docs/documentation/modules/NumberModule.html +4 -4
- package/docs/documentation/modules/PaginationModule/dependencies.svg +56 -56
- package/docs/documentation/modules/PaginationModule.html +56 -56
- package/docs/documentation/modules/PanelModule/dependencies.svg +36 -36
- package/docs/documentation/modules/PanelModule.html +36 -36
- package/docs/documentation/modules/PopoverModule/dependencies.svg +4 -4
- package/docs/documentation/modules/PopoverModule.html +4 -4
- package/docs/documentation/modules/ProgressBarModule/dependencies.svg +4 -4
- package/docs/documentation/modules/ProgressBarModule.html +4 -4
- package/docs/documentation/modules/ProgressIndicatorModule/dependencies.svg +4 -4
- package/docs/documentation/modules/ProgressIndicatorModule.html +4 -4
- package/docs/documentation/modules/RadioModule/dependencies.svg +55 -59
- package/docs/documentation/modules/RadioModule.html +55 -59
- package/docs/documentation/modules/SelectModule/dependencies.svg +61 -61
- package/docs/documentation/modules/SelectModule.html +61 -61
- package/docs/documentation/modules/SideNavModule/dependencies.svg +41 -41
- package/docs/documentation/modules/SideNavModule.html +41 -41
- package/docs/documentation/modules/SkeletonModule/dependencies.svg +4 -4
- package/docs/documentation/modules/SkeletonModule.html +4 -4
- package/docs/documentation/modules/SliderModule/dependencies.svg +40 -36
- package/docs/documentation/modules/SliderModule.html +40 -36
- package/docs/documentation/modules/StructuredListModule/dependencies.svg +43 -43
- package/docs/documentation/modules/StructuredListModule.html +43 -43
- package/docs/documentation/modules/TableModule/dependencies.svg +225 -225
- package/docs/documentation/modules/TableModule.html +225 -225
- package/docs/documentation/modules/TabsModule/dependencies.svg +137 -137
- package/docs/documentation/modules/TabsModule.html +137 -137
- package/docs/documentation/modules/TagModule/dependencies.svg +38 -38
- package/docs/documentation/modules/TagModule.html +38 -38
- package/docs/documentation/modules/ThemeModule/dependencies.svg +13 -13
- package/docs/documentation/modules/ThemeModule.html +13 -13
- package/docs/documentation/modules/TilesModule/dependencies.svg +4 -4
- package/docs/documentation/modules/TilesModule.html +4 -4
- package/docs/documentation/modules/TimePickerModule/dependencies.svg +7 -7
- package/docs/documentation/modules/TimePickerModule.html +7 -7
- package/docs/documentation/modules/ToggleModule/dependencies.svg +18 -18
- package/docs/documentation/modules/ToggleModule.html +18 -18
- package/docs/documentation/modules/ToggletipModule/dependencies.svg +4 -4
- package/docs/documentation/modules/ToggletipModule.html +4 -4
- package/docs/documentation/modules/TooltipModule/dependencies.svg +4 -4
- package/docs/documentation/modules/TooltipModule.html +4 -4
- package/docs/documentation/modules/TreeviewModule/dependencies.svg +28 -28
- package/docs/documentation/modules/TreeviewModule.html +28 -28
- package/docs/documentation/modules/UIShellModule/dependencies.svg +4 -4
- package/docs/documentation/modules/UIShellModule.html +4 -4
- package/docs/documentation.json +249 -131
- package/docs/storybook/1345.da6e3dec.iframe.bundle.js +1 -0
- package/docs/storybook/7019.75ad5817.iframe.bundle.js +2 -0
- package/docs/storybook/iframe.html +2 -2
- package/docs/storybook/{input-input-stories.85a9e65e.iframe.bundle.js → input-input-stories.8bf34960.iframe.bundle.js} +1 -1
- package/docs/storybook/{input-textarea-stories.77240fb3.iframe.bundle.js → input-textarea-stories.ad775432.iframe.bundle.js} +1 -1
- package/docs/storybook/main.d2b9abb3.iframe.bundle.js +1 -0
- package/docs/storybook/project.json +1 -1
- package/docs/storybook/{runtime~main.e32f2dfb.iframe.bundle.js → runtime~main.86875b86.iframe.bundle.js} +1 -1
- package/esm2020/input/input.directive.mjs +11 -5
- package/esm2020/input/text-area.directive.mjs +11 -5
- package/esm2020/input/text-input-label.component.mjs +38 -15
- package/esm2020/input/textarea-label.component.mjs +46 -21
- package/fesm2015/carbon-components-angular-input.mjs +112 -46
- package/fesm2015/carbon-components-angular-input.mjs.map +1 -1
- package/fesm2020/carbon-components-angular-input.mjs +102 -45
- package/fesm2020/carbon-components-angular-input.mjs.map +1 -1
- package/input/input.directive.d.ts +4 -1
- package/input/text-area.directive.d.ts +4 -1
- package/input/text-input-label.component.d.ts +9 -5
- package/input/textarea-label.component.d.ts +5 -3
- package/package.json +1 -1
- package/docs/storybook/1345.9ccf4f3f.iframe.bundle.js +0 -1
- package/docs/storybook/7019.b8944046.iframe.bundle.js +0 -2
- package/docs/storybook/main.cdbf1814.iframe.bundle.js +0 -1
- /package/docs/storybook/{7019.b8944046.iframe.bundle.js.LICENSE.txt → 7019.75ad5817.iframe.bundle.js.LICENSE.txt} +0 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Component, Input, HostBinding, TemplateRef, ViewChild, ContentChild } from "@angular/core";
|
|
2
|
+
import { startWith } from "rxjs/operators";
|
|
2
3
|
import { TextArea } from "./text-area.directive";
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
import * as i1 from "@angular/common";
|
|
@@ -66,12 +67,14 @@ export class TextareaLabelComponent {
|
|
|
66
67
|
* on each change. Excess words are trimmed from the end of the value.
|
|
67
68
|
*/
|
|
68
69
|
this.counterMode = "character";
|
|
69
|
-
//
|
|
70
|
+
// Tracks current character / word count for the counter display.
|
|
70
71
|
this.textCount = 0;
|
|
71
72
|
this.labelClass = true;
|
|
72
73
|
// Cached reference to the textarea element, set once in ngAfterViewInit.
|
|
73
74
|
this._textareaElement = null;
|
|
74
|
-
//
|
|
75
|
+
// RxJS subscription used when NgControl is available (template-driven & reactive forms).
|
|
76
|
+
this._subscription = null;
|
|
77
|
+
// Fallback DOM listener used only when no NgControl is present (plain textarea).
|
|
75
78
|
this._inputListener = null;
|
|
76
79
|
}
|
|
77
80
|
get isReadonly() {
|
|
@@ -118,7 +121,6 @@ export class TextareaLabelComponent {
|
|
|
118
121
|
}
|
|
119
122
|
/**
|
|
120
123
|
* Attach/remove listener and seed `textCount` from the textarea's current value.
|
|
121
|
-
* @param changes
|
|
122
124
|
*/
|
|
123
125
|
ngOnChanges(changes) {
|
|
124
126
|
if (changes.enableCounter && !changes.enableCounter.firstChange) {
|
|
@@ -162,27 +164,47 @@ export class TextareaLabelComponent {
|
|
|
162
164
|
}
|
|
163
165
|
}
|
|
164
166
|
/**
|
|
165
|
-
* Attaches the
|
|
167
|
+
* Attaches the counter listener, listen for either ngControl or native DOM input
|
|
168
|
+
* event listener
|
|
166
169
|
*/
|
|
167
170
|
_attachCounterListener() {
|
|
168
171
|
this._detachCounterListener();
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
172
|
+
const control = this.textArea?.ngControl;
|
|
173
|
+
if (control?.valueChanges) {
|
|
174
|
+
// NgControl listener
|
|
175
|
+
this._subscription = control.valueChanges
|
|
176
|
+
.pipe(startWith(control.value))
|
|
177
|
+
.subscribe((value) => {
|
|
178
|
+
const raw = value || "";
|
|
179
|
+
if (this.counterMode === "word" && this.maxCount != null) {
|
|
180
|
+
const clamped = this._truncateToWordLimit(raw, this.maxCount);
|
|
181
|
+
if (clamped !== raw) {
|
|
182
|
+
// Write back through the control so the form model stays in sync.
|
|
183
|
+
// emitEvent false to avoid infinite loop
|
|
184
|
+
control?.control?.setValue(clamped, { emitEvent: false });
|
|
185
|
+
}
|
|
181
186
|
}
|
|
187
|
+
this.textCount = this._countValue(raw);
|
|
188
|
+
this.changeDetectorRef.markForCheck();
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
// Fallback DOM path
|
|
193
|
+
if (!this._textareaElement) {
|
|
194
|
+
return;
|
|
182
195
|
}
|
|
183
|
-
this.
|
|
184
|
-
|
|
185
|
-
|
|
196
|
+
this._inputListener = (e) => {
|
|
197
|
+
const el = e.target;
|
|
198
|
+
if (this.counterMode === "word" && this.maxCount != null) {
|
|
199
|
+
const clamped = this._truncateToWordLimit(el.value || "", this.maxCount);
|
|
200
|
+
if (clamped !== el.value) {
|
|
201
|
+
el.value = clamped;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
this.textCount = this._countValue(el.value || "");
|
|
205
|
+
};
|
|
206
|
+
this._textareaElement.addEventListener("input", this._inputListener);
|
|
207
|
+
}
|
|
186
208
|
}
|
|
187
209
|
/**
|
|
188
210
|
* Truncates `value` so it contains at most `limit` Unicode words.
|
|
@@ -206,9 +228,12 @@ export class TextareaLabelComponent {
|
|
|
206
228
|
return wordsSeen < limit ? value : value.slice(0, cutIndex);
|
|
207
229
|
}
|
|
208
230
|
/**
|
|
209
|
-
* Removes the
|
|
231
|
+
* Removes the subscription (NgControl path) and removes the DOM listener
|
|
232
|
+
* (fallback path). Safe to call when neither is active.
|
|
210
233
|
*/
|
|
211
234
|
_detachCounterListener() {
|
|
235
|
+
this._subscription?.unsubscribe();
|
|
236
|
+
this._subscription = null;
|
|
212
237
|
if (this._inputListener && this._textareaElement) {
|
|
213
238
|
this._textareaElement.removeEventListener("input", this._inputListener);
|
|
214
239
|
this._inputListener = null;
|
|
@@ -482,4 +507,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
482
507
|
type: HostBinding,
|
|
483
508
|
args: ["class.cds--form-item"]
|
|
484
509
|
}] } });
|
|
485
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEtbGFiZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2lucHV0L3RleHRhcmVhLWxhYmVsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUNULEtBQUssRUFLTCxXQUFXLEVBQ1gsV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBR1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7O0FBRWpEOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQXVHSCxNQUFNLE9BQU8sc0JBQXNCO0lBa0hsQzs7T0FFRztJQUNILFlBQXNCLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBcEcxRDs7O1VBR0U7UUFDTyxpQkFBWSxHQUFHLGVBQWUsR0FBRyxzQkFBc0IsQ0FBQyxZQUFZLENBQUM7UUFFOUU7O1dBRUc7UUFDTSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQzFCOztXQUVHO1FBQ00sYUFBUSxHQUFHLEtBQUssQ0FBQztRQWdCMUI7O1dBRUc7UUFDTSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3pCOztZQUVJO1FBQ0ssU0FBSSxHQUFHLEtBQUssQ0FBQztRQVV0Qjs7V0FFRztRQUNNLFVBQUssR0FBRyxLQUFLLENBQUM7UUFFdkI7OztXQUdHO1FBQ00sY0FBUyxHQUFHLEtBQUssQ0FBQztRQUUzQjs7O1dBR0c7UUFDTSxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQVEvQjs7OztXQUlHO1FBQ00sZ0JBQVcsR0FBeUIsV0FBVyxDQUFDO1FBT3pELGtFQUFrRTtRQUNsRSxjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBUXVCLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFFdkQseUVBQXlFO1FBQ2pFLHFCQUFnQixHQUErQixJQUFJLENBQUM7UUFDNUQsa0ZBQWtGO1FBQzFFLG1CQUFjLEdBQWdD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RyxJQUFJO3NCQUFaLEtBQUs7Z0JBSUcsUUFBUTtzQkFBaEIsS0FBSztnQkFJRyxTQUFTO3NCQUFqQixLQUFLO2dCQUtHLEtBQUs7c0JBQWIsS0FBSztnQkFNRyxTQUFTO3NCQUFqQixLQUFLO2dCQU1HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBTUcsUUFBUTtzQkFBaEIsS0FBSztnQkFPRyxXQUFXO3NCQUFuQixLQUFLO2dCQUtHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBTW1DLE9BQU87c0JBQS9DLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFHSSxRQUFRO3NCQUFsRCxZQUFZO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBRUosVUFBVTtzQkFBOUMsV0FBVzt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDb21wb25lbnQsXG5cdElucHV0LFxuXHRBZnRlclZpZXdJbml0LFxuXHRPbkNoYW5nZXMsXG5cdE9uRGVzdHJveSxcblx0RWxlbWVudFJlZixcblx0SG9zdEJpbmRpbmcsXG5cdFRlbXBsYXRlUmVmLFxuXHRWaWV3Q2hpbGQsXG5cdENvbnRlbnRDaGlsZCxcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXG5cdFNpbXBsZUNoYW5nZXNcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuaW1wb3J0IHsgVGV4dEFyZWEgfSBmcm9tIFwiLi90ZXh0LWFyZWEuZGlyZWN0aXZlXCI7XG5cbi8qKlxuICogR2V0IHN0YXJ0ZWQgd2l0aCBpbXBvcnRpbmcgdGhlIG1vZHVsZTpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBJbnB1dE1vZHVsZSB9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuICogYGBgXG4gKlxuICogYGBgaHRtbFxuICogPGNkcy10ZXh0YXJlYS1sYWJlbD5cbiAqIFx0TGFiZWxcbiAqIFx0PHRleHRhcmVhIGNkc1RleHRBcmVhIGNsYXNzPVwidGV4dGFyZWEtZmllbGRcIj5cbiAqIDwvY2RzLXRleHRhcmVhLWxhYmVsPlxuICogYGBgXG4gKlxuICogW1NlZSBkZW1vXSguLi8uLi8/cGF0aD0vc3RvcnkvY29tcG9uZW50cy1pbnB1dC10ZXh0LWFyZWEtLWJhc2ljKVxuICovXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6IFwiY2RzLXRleHRhcmVhLWxhYmVsLCBpYm0tdGV4dGFyZWEtbGFiZWxcIixcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwic2tlbGV0b25cIj5cblx0XHRcdDxzcGFuIGNsYXNzPVwiY2RzLS1sYWJlbCBjZHMtLXNrZWxldG9uXCI+PC9zcGFuPlxuXHRcdFx0PGRpdiBjbGFzcz1cImNkcy0tdGV4dC1hcmVhIGNkcy0tc2tlbGV0b25cIj48L2Rpdj5cblx0XHQ8L25nLWNvbnRhaW5lcj5cblx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiIXNrZWxldG9uXCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiY2RzLS10ZXh0LWFyZWFfX2xhYmVsLXdyYXBwZXJcIj5cblx0XHRcdFx0PGxhYmVsXG5cdFx0XHRcdFx0W2Zvcl09XCJsYWJlbElucHV0SURcIlxuXHRcdFx0XHRcdFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcblx0XHRcdFx0XHRjbGFzcz1cImNkcy0tbGFiZWxcIlxuXHRcdFx0XHRcdFtuZ0NsYXNzXT1cIntcblx0XHRcdFx0XHRcdCdjZHMtLWxhYmVsLS1kaXNhYmxlZCc6IGRpc2FibGVkLFxuXHRcdFx0XHRcdFx0J2Nkcy0tdmlzdWFsbHktaGlkZGVuJzogaGlkZUxhYmVsXG5cdFx0XHRcdFx0fVwiPlxuXHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSAqbmdJZj1cImxhYmVsVGVtcGxhdGU7IGVsc2UgbGFiZWxDb250ZW50XCIgW25nVGVtcGxhdGVPdXRsZXRdPVwibGFiZWxUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG5cdFx0XHRcdFx0PG5nLXRlbXBsYXRlICNsYWJlbENvbnRlbnQ+XG5cdFx0XHRcdFx0XHQ8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHRcdFx0PC9sYWJlbD5cblx0XHRcdFx0PHNwYW5cblx0XHRcdFx0XHQqbmdJZj1cImVuYWJsZUNvdW50ZXIgJiYgbWF4Q291bnRcIlxuXHRcdFx0XHRcdGNsYXNzPVwiY2RzLS1sYWJlbFwiXG5cdFx0XHRcdFx0W25nQ2xhc3NdPVwieydjZHMtLWxhYmVsLS1kaXNhYmxlZCc6IGRpc2FibGVkfVwiXG5cdFx0XHRcdFx0YXJpYS1oaWRkZW49XCJ0cnVlXCI+XG5cdFx0XHRcdFx0e3t0ZXh0Q291bnR9fS97e21heENvdW50fX1cblx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2XG5cdFx0XHRcdGNsYXNzPVwiY2RzLS10ZXh0LWFyZWFfX3dyYXBwZXJcIlxuXHRcdFx0XHRbbmdDbGFzc109XCJ7XG5cdFx0XHRcdFx0J2Nkcy0tdGV4dC1hcmVhX193cmFwcGVyLS13YXJuJzogd2Fybixcblx0XHRcdFx0XHQnY2RzLS10ZXh0LWFyZWFfX3dyYXBwZXItLWRlY29yYXRvcic6ICEhZGVjb3JhdG9yXG5cdFx0XHRcdH1cIlxuXHRcdFx0XHRbYXR0ci5kYXRhLWludmFsaWRdPVwiKGludmFsaWQgPyB0cnVlIDogbnVsbClcIlxuXHRcdFx0XHQjd3JhcHBlcj5cblx0XHRcdFx0PHN2Z1xuXHRcdFx0XHRcdCpuZ0lmPVwiIWZsdWlkICYmIGludmFsaWRcIlxuXHRcdFx0XHRcdGNkc0ljb249XCJ3YXJuaW5nLS1maWxsZWRcIlxuXHRcdFx0XHRcdHNpemU9XCIxNlwiXG5cdFx0XHRcdFx0Y2xhc3M9XCJjZHMtLXRleHQtYXJlYV9faW52YWxpZC1pY29uXCI+XG5cdFx0XHRcdDwvc3ZnPlxuXHRcdFx0XHQ8c3ZnXG5cdFx0XHRcdFx0Km5nSWY9XCIhZmx1aWQgJiYgIWludmFsaWQgJiYgd2FyblwiXG5cdFx0XHRcdFx0Y2RzSWNvbj1cIndhcm5pbmctLWFsdC0tZmlsbGVkXCJcblx0XHRcdFx0XHRzaXplPVwiMTZcIlxuXHRcdFx0XHRcdGNsYXNzPVwiY2RzLS10ZXh0LWFyZWFfX2ludmFsaWQtaWNvbiBjZHMtLXRleHQtYXJlYV9faW52YWxpZC1pY29uLS13YXJuaW5nXCI+XG5cdFx0XHRcdDwvc3ZnPlxuXHRcdFx0XHQ8bmctdGVtcGxhdGUgKm5nSWY9XCJ0ZXh0QXJlYVRlbXBsYXRlOyBlbHNlIHRleHRBcmVhQ29udGVudFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRleHRBcmVhVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuXHRcdFx0XHQ8bmctdGVtcGxhdGUgI3RleHRBcmVhQ29udGVudD5cblx0XHRcdFx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJbY2RzVGV4dEFyZWFdLFtpYm1UZXh0QXJlYV0sdGV4dGFyZWFcIj48L25nLWNvbnRlbnQ+XG5cdFx0XHRcdDwvbmctdGVtcGxhdGU+XG5cdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJkZWNvcmF0b3JcIj5cblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY2RzLS10ZXh0LWFyZWFfX2lubmVyLXdyYXBwZXItLWRlY29yYXRvclwiPlxuXHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRlY29yYXRvclwiPjwvbmctdGVtcGxhdGU+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDwvbmctY29udGFpbmVyPlxuXG5cdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJmbHVpZFwiPlxuXHRcdFx0XHRcdDxociBjbGFzcz1cImNkcy0tdGV4dC1hcmVhX19kaXZpZGVyXCIgLz5cblx0XHRcdFx0XHQ8ZGl2ICpuZ0lmPVwiaW52YWxpZFwiIGNsYXNzPVwiY2RzLS1mb3JtLXJlcXVpcmVtZW50XCI+XG5cdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzVGVtcGxhdGUoaW52YWxpZFRleHQpXCI+e3tpbnZhbGlkVGV4dH19PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgKm5nSWY9XCJpc1RlbXBsYXRlKGludmFsaWRUZXh0KVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImludmFsaWRUZXh0XCI+PC9uZy10ZW1wbGF0ZT5cblx0XHRcdFx0XHRcdDxzdmdcblx0XHRcdFx0XHRcdFx0Y2RzSWNvbj1cIndhcm5pbmctLWZpbGxlZFwiXG5cdFx0XHRcdFx0XHRcdHNpemU9XCIxNlwiXG5cdFx0XHRcdFx0XHRcdGNsYXNzPVwiY2RzLS10ZXh0LWFyZWFfX2ludmFsaWQtaWNvblwiPlxuXHRcdFx0XHRcdFx0PC9zdmc+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PGRpdiAqbmdJZj1cIiFpbnZhbGlkICYmIHdhcm5cIiBjbGFzcz1cImNkcy0tZm9ybS1yZXF1aXJlbWVudFwiPlxuXHRcdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlKHdhcm5UZXh0KVwiPnt7d2FyblRleHR9fTwvbmctY29udGFpbmVyPlxuXHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlICpuZ0lmPVwiaXNUZW1wbGF0ZSh3YXJuVGV4dClcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJ3YXJuVGV4dFwiPjwvbmctdGVtcGxhdGU+XG5cdFx0XHRcdFx0XHQ8c3ZnXG5cdFx0XHRcdFx0XHRcdGNkc0ljb249XCJ3YXJuaW5nLS1hbHQtLWZpbGxlZFwiXG5cdFx0XHRcdFx0XHRcdHNpemU9XCIxNlwiXG5cdFx0XHRcdFx0XHRcdGNsYXNzPVwiY2RzLS10ZXh0LWFyZWFfX2ludmFsaWQtaWNvbiBjZHMtLXRleHQtYXJlYV9faW52YWxpZC1pY29uLS13YXJuaW5nXCI+XG5cdFx0XHRcdFx0XHQ8L3N2Zz5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PC9uZy1jb250YWluZXI+XG5cdFx0XHQ8L2Rpdj5cblx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCIhZmx1aWRcIj5cblx0XHRcdFx0PGRpdlxuXHRcdFx0XHRcdCpuZ0lmPVwiaGVscGVyVGV4dCAmJiAhaW52YWxpZCAmJiAhd2FyblwiXG5cdFx0XHRcdFx0Y2xhc3M9XCJjZHMtLWZvcm1fX2hlbHBlci10ZXh0XCJcblx0XHRcdFx0XHRbbmdDbGFzc109XCJ7J2Nkcy0tZm9ybV9faGVscGVyLXRleHQtLWRpc2FibGVkJzogZGlzYWJsZWR9XCI+XG5cdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlKGhlbHBlclRleHQpXCI+e3toZWxwZXJUZXh0fX08L25nLWNvbnRhaW5lcj5cblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgKm5nSWY9XCJpc1RlbXBsYXRlKGhlbHBlclRleHQpXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVscGVyVGV4dFwiPjwvbmctdGVtcGxhdGU+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8ZGl2ICpuZ0lmPVwiaW52YWxpZFwiIGNsYXNzPVwiY2RzLS1mb3JtLXJlcXVpcmVtZW50XCI+XG5cdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlKGludmFsaWRUZXh0KVwiPnt7aW52YWxpZFRleHR9fTwvbmctY29udGFpbmVyPlxuXHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSAqbmdJZj1cImlzVGVtcGxhdGUoaW52YWxpZFRleHQpXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaW52YWxpZFRleHRcIj48L25nLXRlbXBsYXRlPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PGRpdiAqbmdJZj1cIiFpbnZhbGlkICYmIHdhcm5cIiBjbGFzcz1cImNkcy0tZm9ybS1yZXF1aXJlbWVudFwiPlxuXHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNUZW1wbGF0ZSh3YXJuVGV4dClcIj57e3dhcm5UZXh0fX08L25nLWNvbnRhaW5lcj5cblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgKm5nSWY9XCJpc1RlbXBsYXRlKHdhcm5UZXh0KVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIndhcm5UZXh0XCI+PC9uZy10ZW1wbGF0ZT5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L25nLWNvbnRhaW5lcj5cblx0XHQ8L25nLWNvbnRhaW5lcj5cblx0YFxufSlcbmV4cG9ydCBjbGFzcyBUZXh0YXJlYUxhYmVsQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuXG5cdEBIb3N0QmluZGluZyhcImNsYXNzLmNkcy0tdGV4dC1hcmVhX193cmFwcGVyLS1yZWFkb25seVwiKSBnZXQgaXNSZWFkb25seSgpIHtcblx0XHRyZXR1cm4gdGhpcy53cmFwcGVyPy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJ0ZXh0YXJlYVwiKT8ucmVhZE9ubHkgPz8gZmFsc2U7XG5cdH1cblxuXHRASG9zdEJpbmRpbmcoXCJjbGFzcy5jZHMtLXRleHQtYXJlYS0tZmx1aWRcIikgZ2V0IGZsdWlkQ2xhc3MoKSB7XG5cdFx0cmV0dXJuIHRoaXMuZmx1aWQgJiYgIXRoaXMuc2tlbGV0b247XG5cdH1cblxuXHRASG9zdEJpbmRpbmcoXCJjbGFzcy5jZHMtLXRleHQtYXJlYS0tZmx1aWRfX3NrZWxldG9uXCIpIGdldCBmbHVpZFNrZWxldG9uQ2xhc3MoKSB7XG5cdFx0cmV0dXJuIHRoaXMuZmx1aWQgJiYgdGhpcy5za2VsZXRvbjtcblx0fVxuXHQvKipcblx0ICogVXNlZCB0byBidWlsZCB0aGUgaWQgb2YgdGhlIGlucHV0IGl0ZW0gYXNzb2NpYXRlZCB3aXRoIHRoZSBgTGFiZWxgLlxuXHQgKi9cblx0c3RhdGljIGxhYmVsQ291bnRlciA9IDA7XG5cdC8qKlxuXHQgKiBUaGUgaWQgb2YgdGhlIGlucHV0IGl0ZW0gYXNzb2NpYXRlZCB3aXRoIHRoZSBgTGFiZWxgLiBUaGlzIHZhbHVlIGlzIGFsc28gdXNlZCB0byBhc3NvY2lhdGUgdGhlIGBMYWJlbGAgd2l0aFxuXHQgKiBpdHMgaW5wdXQgY291bnRlcnBhcnQgdGhyb3VnaCB0aGUgJ2ZvcicgYXR0cmlidXRlLlxuXHQqL1xuXHRASW5wdXQoKSBsYWJlbElucHV0SUQgPSBcImlibS10ZXh0YXJlYS1cIiArIFRleHRhcmVhTGFiZWxDb21wb25lbnQubGFiZWxDb3VudGVyO1xuXG5cdC8qKlxuXHQgKiBTZXQgdG8gYHRydWVgIGZvciBhIGRpc2FibGVkIGxhYmVsLlxuXHQgKi9cblx0QElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblx0LyoqXG5cdCAqIFNldCB0byBgdHJ1ZWAgZm9yIGEgbG9hZGluZyBsYWJlbC5cblx0ICovXG5cdEBJbnB1dCgpIHNrZWxldG9uID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIEhlbHBlciBpbnB1dCBwcm9wZXJ0eSBmb3IgZWFzZSBvZiBtaWdyYXRpb25cblx0ICogU2luY2Ugd2UgY2Fubm90IHBhc3MgbmctY29udGVudCBkb3duIGVhc2lseSBmcm9tIGxhYmVsIGNvbXBvbmVudCwgd2Ugd2lsbCBhY2NlcHQgdGhlIHRlbXBsYXRlc1xuXHQgKi9cblx0QElucHV0KCkgbGFiZWxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pjtcblx0QElucHV0KCkgdGV4dEFyZWFUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pjtcblx0LyoqXG5cdCAqIE9wdGlvbmFsIGhlbHBlciB0ZXh0IHRoYXQgYXBwZWFycyB1bmRlciB0aGUgbGFiZWwuXG5cdCAqL1xuXHRASW5wdXQoKSBoZWxwZXJUZXh0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXHQvKipcblx0ICogU2V0cyB0aGUgaW52YWxpZCB0ZXh0LlxuXHQgKi9cblx0QElucHV0KCkgaW52YWxpZFRleHQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG5cdC8qKlxuXHQgKiBTZXQgdG8gYHRydWVgIGZvciBhbiBpbnZhbGlkIGxhYmVsIGNvbXBvbmVudC5cblx0ICovXG5cdEBJbnB1dCgpIGludmFsaWQgPSBmYWxzZTtcblx0LyoqXG5cdCAgKiBTZXQgdG8gYHRydWVgIHRvIHNob3cgYSB3YXJuaW5nIChjb250ZW50cyBzZXQgYnkgd2FybmluZ1RleHQpXG5cdCAgKi9cblx0QElucHV0KCkgd2FybiA9IGZhbHNlO1xuXHQvKipcblx0ICogU2V0cyB0aGUgd2FybmluZyB0ZXh0XG5cdCAqL1xuXHRASW5wdXQoKSB3YXJuVGV4dDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pjtcblx0LyoqXG5cdCAqIFNldCB0aGUgYXJpYWxhYmVsIGZvciBsYWJlbFxuXHQgKi9cblx0QElucHV0KCkgYXJpYUxhYmVsOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIEV4cGVyaW1lbnRhbDogZW5hYmxlIGZsdWlkIHN0YXRlXG5cdCAqL1xuXHRASW5wdXQoKSBmbHVpZCA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBTZXQgdG8gYHRydWVgIHRvIGhpZGUgdGhlIGxhYmVsIHZpc3VhbGx5LCBidXQga2VlcCBhY2Nlc3NpYmxlIHRvXG5cdCAqIHNjcmVlbiByZWFkZXJzLlxuXHQgKi9cblx0QElucHV0KCkgaGlkZUxhYmVsID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIFNldCB0byBgdHJ1ZWAgKGBtYXhDb3VudGAgbXVzdCBiZSBzZXQpIHRvIGRpc3BsYXlzIGEgbGl2ZSBjaGFyYWN0ZXIvd29yZFxuXHQgKiBjb3VudGVyIGFsb25nc2lkZSB0aGUgbGFiZWwuXG5cdCAqL1xuXHRASW5wdXQoKSBlbmFibGVDb3VudGVyID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIE1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgKG9yIHdvcmRzKSBhbGxvd2VkLiBSZXF1aXJlZCBmb3IgdGhlXG5cdCAqIGNvdW50ZXIgdG8gZGlzcGxheS5cblx0ICovXG5cdEBJbnB1dCgpIG1heENvdW50OiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIERldGVybWluZXMgd2hldGhlciB0aGUgY291bnRlciBjb3VudHMgY2hhcmFjdGVycyBvciB3b3Jkcy5cblx0ICogV2hlbiBgXCJ3b3JkXCJgIGFuZCBgbWF4Q291bnRgIGlzIHNldCwgaW5wdXQgaXMgY2xhbXBlZCB0byBgbWF4Q291bnRgIHdvcmRzXG5cdCAqIG9uIGVhY2ggY2hhbmdlLiBFeGNlc3Mgd29yZHMgYXJlIHRyaW1tZWQgZnJvbSB0aGUgZW5kIG9mIHRoZSB2YWx1ZS5cblx0ICovXG5cdEBJbnB1dCgpIGNvdW50ZXJNb2RlOiBcImNoYXJhY3RlclwiIHwgXCJ3b3JkXCIgPSBcImNoYXJhY3RlclwiO1xuXG5cdC8qKlxuXHQgKiAqKkV4cGVyaW1lbnRhbCoqOiBPcHRpb25hbCBkZWNvcmF0b3IgKGUuZy4gQUkgbGFiZWwpLlxuXHQgKi9cblx0QElucHV0KCkgZGVjb3JhdG9yOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG5cdC8vICBUcmFja3MgY3VycmVudCBjaGFyYWN0ZXIgLyB3b3JkIGNvdW50IGZvciB0aGUgY291bnRlciBkaXNwbGF5LlxuXHR0ZXh0Q291bnQgPSAwO1xuXG5cdC8vIEB0cy1pZ25vcmVcblx0QFZpZXdDaGlsZChcIndyYXBwZXJcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIHdyYXBwZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG5cdC8vIEB0cy1pZ25vcmVcblx0QENvbnRlbnRDaGlsZChUZXh0QXJlYSwgeyBzdGF0aWM6IGZhbHNlIH0pIHRleHRBcmVhOiBUZXh0QXJlYTtcblxuXHRASG9zdEJpbmRpbmcoXCJjbGFzcy5jZHMtLWZvcm0taXRlbVwiKSBsYWJlbENsYXNzID0gdHJ1ZTtcblxuXHQvLyBDYWNoZWQgcmVmZXJlbmNlIHRvIHRoZSB0ZXh0YXJlYSBlbGVtZW50LCBzZXQgb25jZSBpbiBuZ0FmdGVyVmlld0luaXQuXG5cdHByaXZhdGUgX3RleHRhcmVhRWxlbWVudDogSFRNTFRleHRBcmVhRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXHQvLyBDYWNoZWQgbGlzdGVuZXIgc28gaXQgY2FuIGJlIHJlbW92ZWQgcHJlY2lzZWx5IChhdm9pZHMgYW5vbnltb3VzLWZ1bmN0aW9uIGxlYWspXG5cdHByaXZhdGUgX2lucHV0TGlzdGVuZXI6ICgoZTogRXZlbnQpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgTGFiZWwuXG5cdCAqL1xuXHRjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBpZCBvbiB0aGUgaW5wdXQgaXRlbSBhc3NvY2lhdGVkIHdpdGggdGhlIGBMYWJlbGAgYW5kIGF0dGFjaGVzIHRoZVxuXHQgKiBjb3VudGVyIGxpc3RlbmVyIHdoZW4gYGVuYWJsZUNvdW50ZXJgIGlzIGFscmVhZHkgYHRydWVgIG9uIGZpcnN0IHJlbmRlci5cblx0ICovXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpIHtcblx0XHRpZiAodGhpcy53cmFwcGVyKSB7XG5cdFx0XHQvLyBQcmlvcml0aXplIHNldHRpbmcgaWQgdG8gYHRleHRhcmVhYCBvdmVyIGRpdlxuXHRcdFx0Y29uc3QgaW5wdXRFbGVtZW50ID0gdGhpcy53cmFwcGVyLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcInRleHRhcmVhXCIpO1xuXHRcdFx0aWYgKGlucHV0RWxlbWVudCkge1xuXHRcdFx0XHQvLyBhdm9pZCBvdmVycmlkaW5nIGlkcyBhbHJlYWR5IHNldCBieSB0aGUgdXNlciDigJQgcmV1c2UgaXQgaW5zdGVhZFxuXHRcdFx0XHRpZiAoaW5wdXRFbGVtZW50LmlkKSB7XG5cdFx0XHRcdFx0dGhpcy5sYWJlbElucHV0SUQgPSBpbnB1dEVsZW1lbnQuaWQ7XG5cdFx0XHRcdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aW5wdXRFbGVtZW50LnNldEF0dHJpYnV0ZShcImlkXCIsIHRoaXMubGFiZWxJbnB1dElEKTtcblxuXHRcdFx0XHR0aGlzLl90ZXh0YXJlYUVsZW1lbnQgPSBpbnB1dEVsZW1lbnQ7XG5cdFx0XHRcdHRoaXMuX3N5bmNNYXhMZW5ndGgoKTtcblxuXHRcdFx0XHRpZiAodGhpcy5lbmFibGVDb3VudGVyKSB7XG5cdFx0XHRcdFx0dGhpcy50ZXh0Q291bnQgPSB0aGlzLl9jb3VudFZhbHVlKGlucHV0RWxlbWVudC52YWx1ZSB8fCBcIlwiKTtcblx0XHRcdFx0XHR0aGlzLl9hdHRhY2hDb3VudGVyTGlzdGVuZXIoKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgZGl2RWxlbWVudCA9IHRoaXMud3JhcHBlci5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJkaXZcIik7XG5cdFx0XHRpZiAoZGl2RWxlbWVudCkge1xuXHRcdFx0XHRpZiAoZGl2RWxlbWVudC5pZCkge1xuXHRcdFx0XHRcdHRoaXMubGFiZWxJbnB1dElEID0gZGl2RWxlbWVudC5pZDtcblx0XHRcdFx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRkaXZFbGVtZW50LnNldEF0dHJpYnV0ZShcImlkXCIsIHRoaXMubGFiZWxJbnB1dElEKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQXR0YWNoL3JlbW92ZSBsaXN0ZW5lciBhbmQgc2VlZCBgdGV4dENvdW50YCBmcm9tIHRoZSB0ZXh0YXJlYSdzIGN1cnJlbnQgdmFsdWUuXG5cdCAqIEBwYXJhbSBjaGFuZ2VzXG5cdCAqL1xuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG5cdFx0aWYgKGNoYW5nZXMuZW5hYmxlQ291bnRlciAmJiAhY2hhbmdlcy5lbmFibGVDb3VudGVyLmZpcnN0Q2hhbmdlKSB7XG5cdFx0XHRpZiAoY2hhbmdlcy5lbmFibGVDb3VudGVyLmN1cnJlbnRWYWx1ZSkge1xuXHRcdFx0XHRpZiAodGhpcy5fdGV4dGFyZWFFbGVtZW50KSB7XG5cdFx0XHRcdFx0dGhpcy50ZXh0Q291bnQgPSB0aGlzLl9jb3VudFZhbHVlKHRoaXMuX3RleHRhcmVhRWxlbWVudC52YWx1ZSB8fCBcIlwiKTtcblx0XHRcdFx0XHR0aGlzLl9hdHRhY2hDb3VudGVyTGlzdGVuZXIoKTtcblx0XHRcdFx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5fZGV0YWNoQ291bnRlckxpc3RlbmVyKCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKFxuXHRcdFx0KGNoYW5nZXMubWF4Q291bnQgfHwgY2hhbmdlcy5jb3VudGVyTW9kZSkgJiZcblx0XHRcdCEoY2hhbmdlcy5tYXhDb3VudD8uZmlyc3RDaGFuZ2UgJiYgY2hhbmdlcy5jb3VudGVyTW9kZT8uZmlyc3RDaGFuZ2UpXG5cdFx0KSB7XG5cdFx0XHR0aGlzLl9zeW5jTWF4TGVuZ3RoKCk7XG5cdFx0fVxuXHR9XG5cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0dGhpcy5fZGV0YWNoQ291bnRlckxpc3RlbmVyKCk7XG5cdH1cblxuXHRwdWJsaWMgaXNUZW1wbGF0ZSh2YWx1ZSkge1xuXHRcdHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFRlbXBsYXRlUmVmO1xuXHR9XG5cblx0LyoqXG5cdCAqIEtlZXBzIHRoZSB0ZXh0YXJlYSdzIGBtYXhsZW5ndGhgIGF0dHJpYnV0ZSBpbiBzeW5jIHdpdGggYG1heENvdW50YC4gVGhpcyBpcyBvbmx5IHNldFxuXHQgKiB3aGVuIGNvdW50ZXJNb2RlIGlzIHNldCB0byBgY2hhcmFjdGVyYC4gV2hlbiBjb3VudGVyTW9kZSBpcyBzZXQgdG8gYHdvcmRgLCB3ZSBlbmZvcmNlIGxpbWl0IHZpYSBKUy5cblx0ICogSWYgYG1heENvdW50YCBpcyB1bnNldCBvciB0aGUgbW9kZSBpcyBgXCJ3b3JkXCJgLCBhbnkgcHJldmlvdXNseSBhcHBsaWVkXG5cdCAqIGBtYXhsZW5ndGhgIGlzIHJlbW92ZWQgc28gdGhlIHRleHRhcmVhIGlzIHVucmVzdHJpY3RlZCBieSB0aGUgYXR0cmlidXRlLlxuXHQgKi9cblx0cHJpdmF0ZSBfc3luY01heExlbmd0aCgpOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuX3RleHRhcmVhRWxlbWVudCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRpZiAodGhpcy5jb3VudGVyTW9kZSA9PT0gXCJjaGFyYWN0ZXJcIiAmJiB0aGlzLm1heENvdW50ICE9IG51bGwpIHtcblx0XHRcdHRoaXMuX3RleHRhcmVhRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJtYXhsZW5ndGhcIiwgU3RyaW5nKHRoaXMubWF4Q291bnQpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5fdGV4dGFyZWFFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShcIm1heGxlbmd0aFwiKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQXR0YWNoZXMgdGhlIGlucHV0IGV2ZW50IGxpc3RlbmVyLCBlbnN1cmluZyBpdCBpcyBuZXZlciBhZGRlZCB0d2ljZS5cblx0ICovXG5cdHByaXZhdGUgX2F0dGFjaENvdW50ZXJMaXN0ZW5lcigpOiB2b2lkIHtcblx0XHR0aGlzLl9kZXRhY2hDb3VudGVyTGlzdGVuZXIoKTtcblx0XHRpZiAoIXRoaXMuX3RleHRhcmVhRWxlbWVudCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLl9pbnB1dExpc3RlbmVyID0gKGU6IEV2ZW50KSA9PiB7XG5cdFx0XHRjb25zdCBlbCA9IGUudGFyZ2V0IGFzIEhUTUxUZXh0QXJlYUVsZW1lbnQ7XG5cdFx0XHQvLyBXb3JkLW1vZGUgZW5mb3JjZW1lbnQ6IGNsYW1wIHZhbHVlIHRvIG1heENvdW50IHdvcmRzIG9uIGVhY2ggaW5wdXQgc29cblx0XHRcdC8vIHRoZSB0ZXh0YXJlYSBuZXZlciBob2xkcyBtb3JlIHdvcmRzIHRoYW4gYWxsb3dlZC4gIENoYXJhY3RlciBtb2RlIHJlbGllc1xuXHRcdFx0Ly8gb24gdGhlIG5hdGl2ZSBgbWF4bGVuZ3RoYCBhdHRyaWJ1dGUgc2V0IGJ5IHRoZSBkZXZlbG9wZXIuXG5cdFx0XHRpZiAodGhpcy5jb3VudGVyTW9kZSA9PT0gXCJ3b3JkXCIgJiYgdGhpcy5tYXhDb3VudCAhPSBudWxsKSB7XG5cdFx0XHRcdGNvbnN0IGNsYW1wZWQgPSB0aGlzLl90cnVuY2F0ZVRvV29yZExpbWl0KGVsLnZhbHVlIHx8IFwiXCIsIHRoaXMubWF4Q291bnQpO1xuXHRcdFx0XHRpZiAoY2xhbXBlZCAhPT0gZWwudmFsdWUpIHtcblx0XHRcdFx0XHRlbC52YWx1ZSA9IGNsYW1wZWQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHRoaXMudGV4dENvdW50ID0gdGhpcy5fY291bnRWYWx1ZShlbC52YWx1ZSB8fCBcIlwiKTtcblx0XHR9O1xuXHRcdHRoaXMuX3RleHRhcmVhRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwiaW5wdXRcIiwgdGhpcy5faW5wdXRMaXN0ZW5lcik7XG5cdH1cblxuXHQvKipcblx0ICogVHJ1bmNhdGVzIGB2YWx1ZWAgc28gaXQgY29udGFpbnMgYXQgbW9zdCBgbGltaXRgIFVuaWNvZGUgd29yZHMuXG5cdCAqIFdoaXRlc3BhY2UgYmV0d2VlbiBhbmQgYXJvdW5kIHdvcmRzIGlzIHByZXNlcnZlZCB1cCB0byB0aGUgbGFzdCBhbGxvd2VkIHdvcmQ7XG5cdCAqIGFueSB0cmFpbGluZyBjb250ZW50IChwYXJ0aWFsIHdvcmQgb3Igc3BhY2UpIGJleW9uZCB0aGUgbGltaXQgaXMgZHJvcHBlZC5cblx0ICovXG5cdHByaXZhdGUgX3RydW5jYXRlVG9Xb3JkTGltaXQodmFsdWU6IHN0cmluZywgbGltaXQ6IG51bWJlcik6IHN0cmluZyB7XG5cdFx0bGV0IHdvcmRzU2VlbiA9IDA7XG5cdFx0Ly8gV2FsayB0aHJvdWdoIHRoZSBzdHJpbmcgY2FwdHVyaW5nIHdvcmQgYm91bmRhcmllc1xuXHRcdGNvbnN0IHdvcmRQYXR0ZXJuID0gL1xccHtMfSsvZ3U7XG5cdFx0bGV0IG1hdGNoOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsO1xuXHRcdGxldCBjdXRJbmRleCA9IHZhbHVlLmxlbmd0aDtcblx0XHR3aGlsZSAoKG1hdGNoID0gd29yZFBhdHRlcm4uZXhlYyh2YWx1ZSkpICE9PSBudWxsKSB7XG5cdFx0XHR3b3Jkc1NlZW4rKztcblx0XHRcdGlmICh3b3Jkc1NlZW4gPT09IGxpbWl0KSB7XG5cdFx0XHRcdC8vIEFsbG93IHRoZSBzdHJpbmcgdG8gY29udGludWUgdXAgdG8gKGJ1dCBub3QgcGFzdCkgdGhlIGVuZCBvZiB0aGlzIHdvcmRcblx0XHRcdFx0Y3V0SW5kZXggPSBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB3b3Jkc1NlZW4gPCBsaW1pdCA/IHZhbHVlIDogdmFsdWUuc2xpY2UoMCwgY3V0SW5kZXgpO1xuXHR9XG5cblxuXHQvKipcblx0ICogUmVtb3ZlcyB0aGUgaW5wdXQgZXZlbnQgbGlzdGVuZXIgYW5kIGNsZWFycyB0aGUgY2FjaGVkIHJlZmVyZW5jZS5cblx0ICovXG5cdHByaXZhdGUgX2RldGFjaENvdW50ZXJMaXN0ZW5lcigpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5faW5wdXRMaXN0ZW5lciAmJiB0aGlzLl90ZXh0YXJlYUVsZW1lbnQpIHtcblx0XHRcdHRoaXMuX3RleHRhcmVhRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiaW5wdXRcIiwgdGhpcy5faW5wdXRMaXN0ZW5lcik7XG5cdFx0XHR0aGlzLl9pbnB1dExpc3RlbmVyID0gbnVsbDtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIF9jb3VudFZhbHVlKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIge1xuXHRcdGlmICh0aGlzLmNvdW50ZXJNb2RlID09PSBcIndvcmRcIikge1xuXHRcdFx0cmV0dXJuIHZhbHVlLm1hdGNoKC9cXHB7TH0rL2d1KT8ubGVuZ3RoIHx8IDA7XG5cdFx0fVxuXHRcdHJldHVybiB2YWx1ZS5sZW5ndGg7XG5cdH1cbn1cbiJdfQ==
|
|
510
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEtbGFiZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2lucHV0L3RleHRhcmVhLWxhYmVsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUNULEtBQUssRUFLTCxXQUFXLEVBQ1gsV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEVBR1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7OztBQUVqRDs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUF1R0gsTUFBTSxPQUFPLHNCQUFzQjtJQXNIbEM7O09BRUc7SUFDSCxZQUFzQixpQkFBb0M7UUFBcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQXhHMUQ7OztVQUdFO1FBQ08saUJBQVksR0FBRyxlQUFlLEdBQUcsc0JBQXNCLENBQUMsWUFBWSxDQUFDO1FBRTlFOztXQUVHO1FBQ00sYUFBUSxHQUFHLEtBQUssQ0FBQztRQUMxQjs7V0FFRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFnQjFCOztXQUVHO1FBQ00sWUFBTyxHQUFHLEtBQUssQ0FBQztRQUN6Qjs7WUFFSTtRQUNLLFNBQUksR0FBRyxLQUFLLENBQUM7UUFVdEI7O1dBRUc7UUFDTSxVQUFLLEdBQUcsS0FBSyxDQUFDO1FBRXZCOzs7V0FHRztRQUNNLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFM0I7OztXQUdHO1FBQ00sa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFRL0I7Ozs7V0FJRztRQUNNLGdCQUFXLEdBQXlCLFdBQVcsQ0FBQztRQU96RCxpRUFBaUU7UUFDakUsY0FBUyxHQUFHLENBQUMsQ0FBQztRQVF1QixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBRXZELHlFQUF5RTtRQUNqRSxxQkFBZ0IsR0FB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LFNBQVM7c0JBQWpCLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLO2dCQU1HLFNBQVM7c0JBQWpCLEtBQUs7Z0JBTUcsYUFBYTtzQkFBckIsS0FBSztnQkFNRyxRQUFRO3NCQUFoQixLQUFLO2dCQU9HLFdBQVc7c0JBQW5CLEtBQUs7Z0JBS0csU0FBUztzQkFBakIsS0FBSztnQkFNbUMsT0FBTztzQkFBL0MsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUdJLFFBQVE7c0JBQWxELFlBQVk7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFSixVQUFVO3NCQUE5QyxXQUFXO3VCQUFDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENvbXBvbmVudCxcblx0SW5wdXQsXG5cdEFmdGVyVmlld0luaXQsXG5cdE9uQ2hhbmdlcyxcblx0T25EZXN0cm95LFxuXHRFbGVtZW50UmVmLFxuXHRIb3N0QmluZGluZyxcblx0VGVtcGxhdGVSZWYsXG5cdFZpZXdDaGlsZCxcblx0Q29udGVudENoaWxkLFxuXHRDaGFuZ2VEZXRlY3RvclJlZixcblx0U2ltcGxlQ2hhbmdlc1xufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IHN0YXJ0V2l0aCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuXG5pbXBvcnQgeyBUZXh0QXJlYSB9IGZyb20gXCIuL3RleHQtYXJlYS5kaXJlY3RpdmVcIjtcblxuLyoqXG4gKiBHZXQgc3RhcnRlZCB3aXRoIGltcG9ydGluZyB0aGUgbW9kdWxlOlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IElucHV0TW9kdWxlIH0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG4gKiBgYGBcbiAqXG4gKiBgYGBodG1sXG4gKiA8Y2RzLXRleHRhcmVhLWxhYmVsPlxuICogXHRMYWJlbFxuICogXHQ8dGV4dGFyZWEgY2RzVGV4dEFyZWEgY2xhc3M9XCJ0ZXh0YXJlYS1maWVsZFwiPlxuICogPC9jZHMtdGV4dGFyZWEtbGFiZWw+XG4gKiBgYGBcbiAqXG4gKiBbU2VlIGRlbW9dKC4uLy4uLz9wYXRoPS9zdG9yeS9jb21wb25lbnRzLWlucHV0LXRleHQtYXJlYS0tYmFzaWMpXG4gKi9cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogXCJjZHMtdGV4dGFyZWEtbGFiZWwsIGlibS10ZXh0YXJlYS1sYWJlbFwiLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCJza2VsZXRvblwiPlxuXHRcdFx0PHNwYW4gY2xhc3M9XCJjZHMtLWxhYmVsIGNkcy0tc2tlbGV0b25cIj48L3NwYW4+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiY2RzLS10ZXh0LWFyZWEgY2RzLS1za2VsZXRvblwiPjwvZGl2PlxuXHRcdDwvbmctY29udGFpbmVyPlxuXHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2tlbGV0b25cIj5cblx0XHRcdDxkaXYgY2xhc3M9XCJjZHMtLXRleHQtYXJlYV9fbGFiZWwtd3JhcHBlclwiPlxuXHRcdFx0XHQ8bGFiZWxcblx0XHRcdFx0XHRbZm9yXT1cImxhYmVsSW5wdXRJRFwiXG5cdFx0XHRcdFx0W2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuXHRcdFx0XHRcdGNsYXNzPVwiY2RzLS1sYWJlbFwiXG5cdFx0XHRcdFx0W25nQ2xhc3NdPVwie1xuXHRcdFx0XHRcdFx0J2Nkcy0tbGFiZWwtLWRpc2FibGVkJzogZGlzYWJsZWQsXG5cdFx0XHRcdFx0XHQnY2RzLS12aXN1YWxseS1oaWRkZW4nOiBoaWRlTGFiZWxcblx0XHRcdFx0XHR9XCI+XG5cdFx0XHRcdFx0PG5nLXRlbXBsYXRlICpuZ0lmPVwibGFiZWxUZW1wbGF0ZTsgZWxzZSBsYWJlbENvbnRlbnRcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJsYWJlbFRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgI2xhYmVsQ29udGVudD5cblx0XHRcdFx0XHRcdDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblx0XHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxuXHRcdFx0XHQ8L2xhYmVsPlxuXHRcdFx0XHQ8c3BhblxuXHRcdFx0XHRcdCpuZ0lmPVwiZW5hYmxlQ291bnRlciAmJiBtYXhDb3VudFwiXG5cdFx0XHRcdFx0Y2xhc3M9XCJjZHMtLWxhYmVsXCJcblx0XHRcdFx0XHRbbmdDbGFzc109XCJ7J2Nkcy0tbGFiZWwtLWRpc2FibGVkJzogZGlzYWJsZWR9XCJcblx0XHRcdFx0XHRhcmlhLWhpZGRlbj1cInRydWVcIj5cblx0XHRcdFx0XHR7e3RleHRDb3VudH19L3t7bWF4Q291bnR9fVxuXHRcdFx0XHQ8L3NwYW4+XG5cdFx0XHQ8L2Rpdj5cblx0XHRcdDxkaXZcblx0XHRcdFx0Y2xhc3M9XCJjZHMtLXRleHQtYXJlYV9fd3JhcHBlclwiXG5cdFx0XHRcdFtuZ0NsYXNzXT1cIntcblx0XHRcdFx0XHQnY2RzLS10ZXh0LWFyZWFfX3dyYXBwZXItLXdhcm4nOiB3YXJuLFxuXHRcdFx0XHRcdCdjZHMtLXRleHQtYXJlYV9fd3JhcHBlci0tZGVjb3JhdG9yJzogISFkZWNvcmF0b3Jcblx0XHRcdFx0fVwiXG5cdFx0XHRcdFthdHRyLmRhdGEtaW52YWxpZF09XCIoaW52YWxpZCA/IHRydWUgOiBudWxsKVwiXG5cdFx0XHRcdCN3cmFwcGVyPlxuXHRcdFx0XHQ8c3ZnXG5cdFx0XHRcdFx0Km5nSWY9XCIhZmx1aWQgJiYgaW52YWxpZFwiXG5cdFx0XHRcdFx0Y2RzSWNvbj1cIndhcm5pbmctLWZpbGxlZFwiXG5cdFx0XHRcdFx0c2l6ZT1cIjE2XCJcblx0XHRcdFx0XHRjbGFzcz1cImNkcy0tdGV4dC1hcmVhX19pbnZhbGlkLWljb25cIj5cblx0XHRcdFx0PC9zdmc+XG5cdFx0XHRcdDxzdmdcblx0XHRcdFx0XHQqbmdJZj1cIiFmbHVpZCAmJiAhaW52YWxpZCAmJiB3YXJuXCJcblx0XHRcdFx0XHRjZHNJY29uPVwid2FybmluZy0tYWx0LS1maWxsZWRcIlxuXHRcdFx0XHRcdHNpemU9XCIxNlwiXG5cdFx0XHRcdFx0Y2xhc3M9XCJjZHMtLXRleHQtYXJlYV9faW52YWxpZC1pY29uIGNkcy0tdGV4dC1hcmVhX19pbnZhbGlkLWljb24tLXdhcm5pbmdcIj5cblx0XHRcdFx0PC9zdmc+XG5cdFx0XHRcdDxuZy10ZW1wbGF0ZSAqbmdJZj1cInRleHRBcmVhVGVtcGxhdGU7IGVsc2UgdGV4dEFyZWFDb250ZW50XCIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGV4dEFyZWFUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG5cdFx0XHRcdDxuZy10ZW1wbGF0ZSAjdGV4dEFyZWFDb250ZW50PlxuXHRcdFx0XHRcdDxuZy1jb250ZW50IHNlbGVjdD1cIltjZHNUZXh0QXJlYV0sW2libVRleHRBcmVhXSx0ZXh0YXJlYVwiPjwvbmctY29udGVudD5cblx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImRlY29yYXRvclwiPlxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJjZHMtLXRleHQtYXJlYV9faW5uZXItd3JhcHBlci0tZGVjb3JhdG9yXCI+XG5cdFx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGVjb3JhdG9yXCI+PC9uZy10ZW1wbGF0ZT5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PC9uZy1jb250YWluZXI+XG5cblx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cImZsdWlkXCI+XG5cdFx0XHRcdFx0PGhyIGNsYXNzPVwiY2RzLS10ZXh0LWFyZWFfX2RpdmlkZXJcIiAvPlxuXHRcdFx0XHRcdDxkaXYgKm5nSWY9XCJpbnZhbGlkXCIgY2xhc3M9XCJjZHMtLWZvcm0tcmVxdWlyZW1lbnRcIj5cblx0XHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNUZW1wbGF0ZShpbnZhbGlkVGV4dClcIj57e2ludmFsaWRUZXh0fX08L25nLWNvbnRhaW5lcj5cblx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSAqbmdJZj1cImlzVGVtcGxhdGUoaW52YWxpZFRleHQpXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaW52YWxpZFRleHRcIj48L25nLXRlbXBsYXRlPlxuXHRcdFx0XHRcdFx0PHN2Z1xuXHRcdFx0XHRcdFx0XHRjZHNJY29uPVwid2FybmluZy0tZmlsbGVkXCJcblx0XHRcdFx0XHRcdFx0c2l6ZT1cIjE2XCJcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJjZHMtLXRleHQtYXJlYV9faW52YWxpZC1pY29uXCI+XG5cdFx0XHRcdFx0XHQ8L3N2Zz5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQ8ZGl2ICpuZ0lmPVwiIWludmFsaWQgJiYgd2FyblwiIGNsYXNzPVwiY2RzLS1mb3JtLXJlcXVpcmVtZW50XCI+XG5cdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzVGVtcGxhdGUod2FyblRleHQpXCI+e3t3YXJuVGV4dH19PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgKm5nSWY9XCJpc1RlbXBsYXRlKHdhcm5UZXh0KVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIndhcm5UZXh0XCI+PC9uZy10ZW1wbGF0ZT5cblx0XHRcdFx0XHRcdDxzdmdcblx0XHRcdFx0XHRcdFx0Y2RzSWNvbj1cIndhcm5pbmctLWFsdC0tZmlsbGVkXCJcblx0XHRcdFx0XHRcdFx0c2l6ZT1cIjE2XCJcblx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJjZHMtLXRleHQtYXJlYV9faW52YWxpZC1pY29uIGNkcy0tdGV4dC1hcmVhX19pbnZhbGlkLWljb24tLXdhcm5pbmdcIj5cblx0XHRcdFx0XHRcdDwvc3ZnPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L25nLWNvbnRhaW5lcj5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmbHVpZFwiPlxuXHRcdFx0XHQ8ZGl2XG5cdFx0XHRcdFx0Km5nSWY9XCJoZWxwZXJUZXh0ICYmICFpbnZhbGlkICYmICF3YXJuXCJcblx0XHRcdFx0XHRjbGFzcz1cImNkcy0tZm9ybV9faGVscGVyLXRleHRcIlxuXHRcdFx0XHRcdFtuZ0NsYXNzXT1cInsnY2RzLS1mb3JtX19oZWxwZXItdGV4dC0tZGlzYWJsZWQnOiBkaXNhYmxlZH1cIj5cblx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzVGVtcGxhdGUoaGVscGVyVGV4dClcIj57e2hlbHBlclRleHR9fTwvbmctY29udGFpbmVyPlxuXHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSAqbmdJZj1cImlzVGVtcGxhdGUoaGVscGVyVGV4dClcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWxwZXJUZXh0XCI+PC9uZy10ZW1wbGF0ZT5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDxkaXYgKm5nSWY9XCJpbnZhbGlkXCIgY2xhc3M9XCJjZHMtLWZvcm0tcmVxdWlyZW1lbnRcIj5cblx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzVGVtcGxhdGUoaW52YWxpZFRleHQpXCI+e3tpbnZhbGlkVGV4dH19PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdFx0PG5nLXRlbXBsYXRlICpuZ0lmPVwiaXNUZW1wbGF0ZShpbnZhbGlkVGV4dClcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJpbnZhbGlkVGV4dFwiPjwvbmctdGVtcGxhdGU+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8ZGl2ICpuZ0lmPVwiIWludmFsaWQgJiYgd2FyblwiIGNsYXNzPVwiY2RzLS1mb3JtLXJlcXVpcmVtZW50XCI+XG5cdFx0XHRcdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlKHdhcm5UZXh0KVwiPnt7d2FyblRleHR9fTwvbmctY29udGFpbmVyPlxuXHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSAqbmdJZj1cImlzVGVtcGxhdGUod2FyblRleHQpXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwid2FyblRleHRcIj48L25nLXRlbXBsYXRlPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvbmctY29udGFpbmVyPlxuXHRcdDwvbmctY29udGFpbmVyPlxuXHRgXG59KVxuZXhwb3J0IGNsYXNzIFRleHRhcmVhTGFiZWxDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG5cblx0QEhvc3RCaW5kaW5nKFwiY2xhc3MuY2RzLS10ZXh0LWFyZWFfX3dyYXBwZXItLXJlYWRvbmx5XCIpIGdldCBpc1JlYWRvbmx5KCkge1xuXHRcdHJldHVybiB0aGlzLndyYXBwZXI/Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcInRleHRhcmVhXCIpPy5yZWFkT25seSA/PyBmYWxzZTtcblx0fVxuXG5cdEBIb3N0QmluZGluZyhcImNsYXNzLmNkcy0tdGV4dC1hcmVhLS1mbHVpZFwiKSBnZXQgZmx1aWRDbGFzcygpIHtcblx0XHRyZXR1cm4gdGhpcy5mbHVpZCAmJiAhdGhpcy5za2VsZXRvbjtcblx0fVxuXG5cdEBIb3N0QmluZGluZyhcImNsYXNzLmNkcy0tdGV4dC1hcmVhLS1mbHVpZF9fc2tlbGV0b25cIikgZ2V0IGZsdWlkU2tlbGV0b25DbGFzcygpIHtcblx0XHRyZXR1cm4gdGhpcy5mbHVpZCAmJiB0aGlzLnNrZWxldG9uO1xuXHR9XG5cdC8qKlxuXHQgKiBVc2VkIHRvIGJ1aWxkIHRoZSBpZCBvZiB0aGUgaW5wdXQgaXRlbSBhc3NvY2lhdGVkIHdpdGggdGhlIGBMYWJlbGAuXG5cdCAqL1xuXHRzdGF0aWMgbGFiZWxDb3VudGVyID0gMDtcblx0LyoqXG5cdCAqIFRoZSBpZCBvZiB0aGUgaW5wdXQgaXRlbSBhc3NvY2lhdGVkIHdpdGggdGhlIGBMYWJlbGAuIFRoaXMgdmFsdWUgaXMgYWxzbyB1c2VkIHRvIGFzc29jaWF0ZSB0aGUgYExhYmVsYCB3aXRoXG5cdCAqIGl0cyBpbnB1dCBjb3VudGVycGFydCB0aHJvdWdoIHRoZSAnZm9yJyBhdHRyaWJ1dGUuXG5cdCovXG5cdEBJbnB1dCgpIGxhYmVsSW5wdXRJRCA9IFwiaWJtLXRleHRhcmVhLVwiICsgVGV4dGFyZWFMYWJlbENvbXBvbmVudC5sYWJlbENvdW50ZXI7XG5cblx0LyoqXG5cdCAqIFNldCB0byBgdHJ1ZWAgZm9yIGEgZGlzYWJsZWQgbGFiZWwuXG5cdCAqL1xuXHRASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXHQvKipcblx0ICogU2V0IHRvIGB0cnVlYCBmb3IgYSBsb2FkaW5nIGxhYmVsLlxuXHQgKi9cblx0QElucHV0KCkgc2tlbGV0b24gPSBmYWxzZTtcblxuXHQvKipcblx0ICogSGVscGVyIGlucHV0IHByb3BlcnR5IGZvciBlYXNlIG9mIG1pZ3JhdGlvblxuXHQgKiBTaW5jZSB3ZSBjYW5ub3QgcGFzcyBuZy1jb250ZW50IGRvd24gZWFzaWx5IGZyb20gbGFiZWwgY29tcG9uZW50LCB3ZSB3aWxsIGFjY2VwdCB0aGUgdGVtcGxhdGVzXG5cdCAqL1xuXHRASW5wdXQoKSBsYWJlbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXHRASW5wdXQoKSB0ZXh0QXJlYVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXHQvKipcblx0ICogT3B0aW9uYWwgaGVscGVyIHRleHQgdGhhdCBhcHBlYXJzIHVuZGVyIHRoZSBsYWJlbC5cblx0ICovXG5cdEBJbnB1dCgpIGhlbHBlclRleHQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBpbnZhbGlkIHRleHQuXG5cdCAqL1xuXHRASW5wdXQoKSBpbnZhbGlkVGV4dDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pjtcblx0LyoqXG5cdCAqIFNldCB0byBgdHJ1ZWAgZm9yIGFuIGludmFsaWQgbGFiZWwgY29tcG9uZW50LlxuXHQgKi9cblx0QElucHV0KCkgaW52YWxpZCA9IGZhbHNlO1xuXHQvKipcblx0ICAqIFNldCB0byBgdHJ1ZWAgdG8gc2hvdyBhIHdhcm5pbmcgKGNvbnRlbnRzIHNldCBieSB3YXJuaW5nVGV4dClcblx0ICAqL1xuXHRASW5wdXQoKSB3YXJuID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBTZXRzIHRoZSB3YXJuaW5nIHRleHRcblx0ICovXG5cdEBJbnB1dCgpIHdhcm5UZXh0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXHQvKipcblx0ICogU2V0IHRoZSBhcmlhbGFiZWwgZm9yIGxhYmVsXG5cdCAqL1xuXHRASW5wdXQoKSBhcmlhTGFiZWw6IHN0cmluZztcblxuXHQvKipcblx0ICogRXhwZXJpbWVudGFsOiBlbmFibGUgZmx1aWQgc3RhdGVcblx0ICovXG5cdEBJbnB1dCgpIGZsdWlkID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIFNldCB0byBgdHJ1ZWAgdG8gaGlkZSB0aGUgbGFiZWwgdmlzdWFsbHksIGJ1dCBrZWVwIGFjY2Vzc2libGUgdG9cblx0ICogc2NyZWVuIHJlYWRlcnMuXG5cdCAqL1xuXHRASW5wdXQoKSBoaWRlTGFiZWwgPSBmYWxzZTtcblxuXHQvKipcblx0ICogU2V0IHRvIGB0cnVlYCAoYG1heENvdW50YCBtdXN0IGJlIHNldCkgdG8gZGlzcGxheXMgYSBsaXZlIGNoYXJhY3Rlci93b3JkXG5cdCAqIGNvdW50ZXIgYWxvbmdzaWRlIHRoZSBsYWJlbC5cblx0ICovXG5cdEBJbnB1dCgpIGVuYWJsZUNvdW50ZXIgPSBmYWxzZTtcblxuXHQvKipcblx0ICogTWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyAob3Igd29yZHMpIGFsbG93ZWQuIFJlcXVpcmVkIGZvciB0aGVcblx0ICogY291bnRlciB0byBkaXNwbGF5LlxuXHQgKi9cblx0QElucHV0KCkgbWF4Q291bnQ6IG51bWJlcjtcblxuXHQvKipcblx0ICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBjb3VudGVyIGNvdW50cyBjaGFyYWN0ZXJzIG9yIHdvcmRzLlxuXHQgKiBXaGVuIGBcIndvcmRcImAgYW5kIGBtYXhDb3VudGAgaXMgc2V0LCBpbnB1dCBpcyBjbGFtcGVkIHRvIGBtYXhDb3VudGAgd29yZHNcblx0ICogb24gZWFjaCBjaGFuZ2UuIEV4Y2VzcyB3b3JkcyBhcmUgdHJpbW1lZCBmcm9tIHRoZSBlbmQgb2YgdGhlIHZhbHVlLlxuXHQgKi9cblx0QElucHV0KCkgY291bnRlck1vZGU6IFwiY2hhcmFjdGVyXCIgfCBcIndvcmRcIiA9IFwiY2hhcmFjdGVyXCI7XG5cblx0LyoqXG5cdCAqICoqRXhwZXJpbWVudGFsKio6IE9wdGlvbmFsIGRlY29yYXRvciAoZS5nLiBBSSBsYWJlbCkuXG5cdCAqL1xuXHRASW5wdXQoKSBkZWNvcmF0b3I6IFRlbXBsYXRlUmVmPGFueT47XG5cblx0Ly8gVHJhY2tzIGN1cnJlbnQgY2hhcmFjdGVyIC8gd29yZCBjb3VudCBmb3IgdGhlIGNvdW50ZXIgZGlzcGxheS5cblx0dGV4dENvdW50ID0gMDtcblxuXHQvLyBAdHMtaWdub3JlXG5cdEBWaWV3Q2hpbGQoXCJ3cmFwcGVyXCIsIHsgc3RhdGljOiBmYWxzZSB9KSB3cmFwcGVyOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuXHQvLyBAdHMtaWdub3JlXG5cdEBDb250ZW50Q2hpbGQoVGV4dEFyZWEsIHsgc3RhdGljOiBmYWxzZSB9KSB0ZXh0QXJlYTogVGV4dEFyZWE7XG5cblx0QEhvc3RCaW5kaW5nKFwiY2xhc3MuY2RzLS1mb3JtLWl0ZW1cIikgbGFiZWxDbGFzcyA9IHRydWU7XG5cblx0Ly8gQ2FjaGVkIHJlZmVyZW5jZSB0byB0aGUgdGV4dGFyZWEgZWxlbWVudCwgc2V0IG9uY2UgaW4gbmdBZnRlclZpZXdJbml0LlxuXHRwcml2YXRlIF90ZXh0YXJlYUVsZW1lbnQ6IEhUTUxUZXh0QXJlYUVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuXHQvLyBSeEpTIHN1YnNjcmlwdGlvbiB1c2VkIHdoZW4gTmdDb250cm9sIGlzIGF2YWlsYWJsZSAodGVtcGxhdGUtZHJpdmVuICYgcmVhY3RpdmUgZm9ybXMpLlxuXHRwcml2YXRlIF9zdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuXG5cdC8vIEZhbGxiYWNrIERPTSBsaXN0ZW5lciB1c2VkIG9ubHkgd2hlbiBubyBOZ0NvbnRyb2wgaXMgcHJlc2VudCAocGxhaW4gdGV4dGFyZWEpLlxuXHRwcml2YXRlIF9pbnB1dExpc3RlbmVyOiAoKGU6IEV2ZW50KSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIExhYmVsLlxuXHQgKi9cblx0Y29uc3RydWN0b3IocHJvdGVjdGVkIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuXHQvKipcblx0ICogU2V0cyB0aGUgaWQgb24gdGhlIGlucHV0IGl0ZW0gYXNzb2NpYXRlZCB3aXRoIHRoZSBgTGFiZWxgIGFuZCBhdHRhY2hlcyB0aGVcblx0ICogY291bnRlciBsaXN0ZW5lciB3aGVuIGBlbmFibGVDb3VudGVyYCBpcyBhbHJlYWR5IGB0cnVlYCBvbiBmaXJzdCByZW5kZXIuXG5cdCAqL1xuXHRuZ0FmdGVyVmlld0luaXQoKSB7XG5cdFx0aWYgKHRoaXMud3JhcHBlcikge1xuXHRcdFx0Ly8gUHJpb3JpdGl6ZSBzZXR0aW5nIGlkIHRvIGB0ZXh0YXJlYWAgb3ZlciBkaXZcblx0XHRcdGNvbnN0IGlucHV0RWxlbWVudCA9IHRoaXMud3JhcHBlci5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJ0ZXh0YXJlYVwiKTtcblx0XHRcdGlmIChpbnB1dEVsZW1lbnQpIHtcblx0XHRcdFx0Ly8gYXZvaWQgb3ZlcnJpZGluZyBpZHMgYWxyZWFkeSBzZXQgYnkgdGhlIHVzZXIg4oCUIHJldXNlIGl0IGluc3RlYWRcblx0XHRcdFx0aWYgKGlucHV0RWxlbWVudC5pZCkge1xuXHRcdFx0XHRcdHRoaXMubGFiZWxJbnB1dElEID0gaW5wdXRFbGVtZW50LmlkO1xuXHRcdFx0XHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlucHV0RWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJpZFwiLCB0aGlzLmxhYmVsSW5wdXRJRCk7XG5cblx0XHRcdFx0dGhpcy5fdGV4dGFyZWFFbGVtZW50ID0gaW5wdXRFbGVtZW50O1xuXHRcdFx0XHR0aGlzLl9zeW5jTWF4TGVuZ3RoKCk7XG5cblx0XHRcdFx0aWYgKHRoaXMuZW5hYmxlQ291bnRlcikge1xuXHRcdFx0XHRcdHRoaXMudGV4dENvdW50ID0gdGhpcy5fY291bnRWYWx1ZShpbnB1dEVsZW1lbnQudmFsdWUgfHwgXCJcIik7XG5cdFx0XHRcdFx0dGhpcy5fYXR0YWNoQ291bnRlckxpc3RlbmVyKCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGRpdkVsZW1lbnQgPSB0aGlzLndyYXBwZXIubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiZGl2XCIpO1xuXHRcdFx0aWYgKGRpdkVsZW1lbnQpIHtcblx0XHRcdFx0aWYgKGRpdkVsZW1lbnQuaWQpIHtcblx0XHRcdFx0XHR0aGlzLmxhYmVsSW5wdXRJRCA9IGRpdkVsZW1lbnQuaWQ7XG5cdFx0XHRcdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZGl2RWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJpZFwiLCB0aGlzLmxhYmVsSW5wdXRJRCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEF0dGFjaC9yZW1vdmUgbGlzdGVuZXIgYW5kIHNlZWQgYHRleHRDb3VudGAgZnJvbSB0aGUgdGV4dGFyZWEncyBjdXJyZW50IHZhbHVlLlxuXHQgKi9cblx0bmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuXHRcdGlmIChjaGFuZ2VzLmVuYWJsZUNvdW50ZXIgJiYgIWNoYW5nZXMuZW5hYmxlQ291bnRlci5maXJzdENoYW5nZSkge1xuXHRcdFx0aWYgKGNoYW5nZXMuZW5hYmxlQ291bnRlci5jdXJyZW50VmFsdWUpIHtcblx0XHRcdFx0aWYgKHRoaXMuX3RleHRhcmVhRWxlbWVudCkge1xuXHRcdFx0XHRcdHRoaXMudGV4dENvdW50ID0gdGhpcy5fY291bnRWYWx1ZSh0aGlzLl90ZXh0YXJlYUVsZW1lbnQudmFsdWUgfHwgXCJcIik7XG5cdFx0XHRcdFx0dGhpcy5fYXR0YWNoQ291bnRlckxpc3RlbmVyKCk7XG5cdFx0XHRcdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuX2RldGFjaENvdW50ZXJMaXN0ZW5lcigpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChcblx0XHRcdChjaGFuZ2VzLm1heENvdW50IHx8IGNoYW5nZXMuY291bnRlck1vZGUpICYmXG5cdFx0XHQhKGNoYW5nZXMubWF4Q291bnQ/LmZpcnN0Q2hhbmdlICYmIGNoYW5nZXMuY291bnRlck1vZGU/LmZpcnN0Q2hhbmdlKVxuXHRcdCkge1xuXHRcdFx0dGhpcy5fc3luY01heExlbmd0aCgpO1xuXHRcdH1cblx0fVxuXG5cdG5nT25EZXN0cm95KCkge1xuXHRcdHRoaXMuX2RldGFjaENvdW50ZXJMaXN0ZW5lcigpO1xuXHR9XG5cblx0cHVibGljIGlzVGVtcGxhdGUodmFsdWUpIHtcblx0XHRyZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZjtcblx0fVxuXG5cdC8qKlxuXHQgKiBLZWVwcyB0aGUgdGV4dGFyZWEncyBgbWF4bGVuZ3RoYCBhdHRyaWJ1dGUgaW4gc3luYyB3aXRoIGBtYXhDb3VudGAuIFRoaXMgaXMgb25seSBzZXRcblx0ICogd2hlbiBjb3VudGVyTW9kZSBpcyBzZXQgdG8gYGNoYXJhY3RlcmAuIFdoZW4gY291bnRlck1vZGUgaXMgc2V0IHRvIGB3b3JkYCwgd2UgZW5mb3JjZSBsaW1pdCB2aWEgSlMuXG5cdCAqIElmIGBtYXhDb3VudGAgaXMgdW5zZXQgb3IgdGhlIG1vZGUgaXMgYFwid29yZFwiYCwgYW55IHByZXZpb3VzbHkgYXBwbGllZFxuXHQgKiBgbWF4bGVuZ3RoYCBpcyByZW1vdmVkIHNvIHRoZSB0ZXh0YXJlYSBpcyB1bnJlc3RyaWN0ZWQgYnkgdGhlIGF0dHJpYnV0ZS5cblx0ICovXG5cdHByaXZhdGUgX3N5bmNNYXhMZW5ndGgoKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLl90ZXh0YXJlYUVsZW1lbnQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKHRoaXMuY291bnRlck1vZGUgPT09IFwiY2hhcmFjdGVyXCIgJiYgdGhpcy5tYXhDb3VudCAhPSBudWxsKSB7XG5cdFx0XHR0aGlzLl90ZXh0YXJlYUVsZW1lbnQuc2V0QXR0cmlidXRlKFwibWF4bGVuZ3RoXCIsIFN0cmluZyh0aGlzLm1heENvdW50KSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuX3RleHRhcmVhRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoXCJtYXhsZW5ndGhcIik7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEF0dGFjaGVzIHRoZSBjb3VudGVyIGxpc3RlbmVyLCBsaXN0ZW4gZm9yIGVpdGhlciBuZ0NvbnRyb2wgb3IgbmF0aXZlIERPTSBpbnB1dFxuXHQgKiBldmVudCBsaXN0ZW5lclxuXHQgKi9cblx0cHJpdmF0ZSBfYXR0YWNoQ291bnRlckxpc3RlbmVyKCk6IHZvaWQge1xuXHRcdHRoaXMuX2RldGFjaENvdW50ZXJMaXN0ZW5lcigpO1xuXG5cdFx0Y29uc3QgY29udHJvbCA9IHRoaXMudGV4dEFyZWE/Lm5nQ29udHJvbDtcblx0XHRpZiAoY29udHJvbD8udmFsdWVDaGFuZ2VzKSB7XG5cdFx0XHQvLyBOZ0NvbnRyb2wgbGlzdGVuZXJcblx0XHRcdHRoaXMuX3N1YnNjcmlwdGlvbiA9IGNvbnRyb2wudmFsdWVDaGFuZ2VzXG5cdFx0XHRcdC5waXBlKHN0YXJ0V2l0aChjb250cm9sLnZhbHVlKSlcblx0XHRcdFx0LnN1YnNjcmliZSgodmFsdWU6IHN0cmluZykgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IHJhdyA9IHZhbHVlIHx8IFwiXCI7XG5cblx0XHRcdFx0XHRpZiAodGhpcy5jb3VudGVyTW9kZSA9PT0gXCJ3b3JkXCIgJiYgdGhpcy5tYXhDb3VudCAhPSBudWxsKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBjbGFtcGVkID0gdGhpcy5fdHJ1bmNhdGVUb1dvcmRMaW1pdChyYXcsIHRoaXMubWF4Q291bnQpO1xuXHRcdFx0XHRcdFx0aWYgKGNsYW1wZWQgIT09IHJhdykge1xuXHRcdFx0XHRcdFx0XHQvLyBXcml0ZSBiYWNrIHRocm91Z2ggdGhlIGNvbnRyb2wgc28gdGhlIGZvcm0gbW9kZWwgc3RheXMgaW4gc3luYy5cblx0XHRcdFx0XHRcdFx0Ly8gZW1pdEV2ZW50IGZhbHNlIHRvIGF2b2lkIGluZmluaXRlIGxvb3Bcblx0XHRcdFx0XHRcdFx0Y29udHJvbD8uY29udHJvbD8uc2V0VmFsdWUoY2xhbXBlZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHRoaXMudGV4dENvdW50ID0gdGhpcy5fY291bnRWYWx1ZShyYXcpO1xuXHRcdFx0XHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG5cdFx0XHRcdH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBGYWxsYmFjayBET00gcGF0aFxuXHRcdFx0aWYgKCF0aGlzLl90ZXh0YXJlYUVsZW1lbnQpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5faW5wdXRMaXN0ZW5lciA9IChlOiBFdmVudCkgPT4ge1xuXHRcdFx0XHRjb25zdCBlbCA9IGUudGFyZ2V0IGFzIEhUTUxUZXh0QXJlYUVsZW1lbnQ7XG5cdFx0XHRcdGlmICh0aGlzLmNvdW50ZXJNb2RlID09PSBcIndvcmRcIiAmJiB0aGlzLm1heENvdW50ICE9IG51bGwpIHtcblx0XHRcdFx0XHRjb25zdCBjbGFtcGVkID0gdGhpcy5fdHJ1bmNhdGVUb1dvcmRMaW1pdChlbC52YWx1ZSB8fCBcIlwiLCB0aGlzLm1heENvdW50KTtcblx0XHRcdFx0XHRpZiAoY2xhbXBlZCAhPT0gZWwudmFsdWUpIHtcblx0XHRcdFx0XHRcdGVsLnZhbHVlID0gY2xhbXBlZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy50ZXh0Q291bnQgPSB0aGlzLl9jb3VudFZhbHVlKGVsLnZhbHVlIHx8IFwiXCIpO1xuXHRcdFx0fTtcblx0XHRcdHRoaXMuX3RleHRhcmVhRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFwiaW5wdXRcIiwgdGhpcy5faW5wdXRMaXN0ZW5lcik7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFRydW5jYXRlcyBgdmFsdWVgIHNvIGl0IGNvbnRhaW5zIGF0IG1vc3QgYGxpbWl0YCBVbmljb2RlIHdvcmRzLlxuXHQgKiBXaGl0ZXNwYWNlIGJldHdlZW4gYW5kIGFyb3VuZCB3b3JkcyBpcyBwcmVzZXJ2ZWQgdXAgdG8gdGhlIGxhc3QgYWxsb3dlZCB3b3JkO1xuXHQgKiBhbnkgdHJhaWxpbmcgY29udGVudCAocGFydGlhbCB3b3JkIG9yIHNwYWNlKSBiZXlvbmQgdGhlIGxpbWl0IGlzIGRyb3BwZWQuXG5cdCAqL1xuXHRwcml2YXRlIF90cnVuY2F0ZVRvV29yZExpbWl0KHZhbHVlOiBzdHJpbmcsIGxpbWl0OiBudW1iZXIpOiBzdHJpbmcge1xuXHRcdGxldCB3b3Jkc1NlZW4gPSAwO1xuXHRcdC8vIFdhbGsgdGhyb3VnaCB0aGUgc3RyaW5nIGNhcHR1cmluZyB3b3JkIGJvdW5kYXJpZXNcblx0XHRjb25zdCB3b3JkUGF0dGVybiA9IC9cXHB7TH0rL2d1O1xuXHRcdGxldCBtYXRjaDogUmVnRXhwRXhlY0FycmF5IHwgbnVsbDtcblx0XHRsZXQgY3V0SW5kZXggPSB2YWx1ZS5sZW5ndGg7XG5cdFx0d2hpbGUgKChtYXRjaCA9IHdvcmRQYXR0ZXJuLmV4ZWModmFsdWUpKSAhPT0gbnVsbCkge1xuXHRcdFx0d29yZHNTZWVuKys7XG5cdFx0XHRpZiAod29yZHNTZWVuID09PSBsaW1pdCkge1xuXHRcdFx0XHQvLyBBbGxvdyB0aGUgc3RyaW5nIHRvIGNvbnRpbnVlIHVwIHRvIChidXQgbm90IHBhc3QpIHRoZSBlbmQgb2YgdGhpcyB3b3JkXG5cdFx0XHRcdGN1dEluZGV4ID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGg7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gd29yZHNTZWVuIDwgbGltaXQgPyB2YWx1ZSA6IHZhbHVlLnNsaWNlKDAsIGN1dEluZGV4KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmVzIHRoZSBzdWJzY3JpcHRpb24gKE5nQ29udHJvbCBwYXRoKSBhbmQgcmVtb3ZlcyB0aGUgRE9NIGxpc3RlbmVyXG5cdCAqIChmYWxsYmFjayBwYXRoKS4gU2FmZSB0byBjYWxsIHdoZW4gbmVpdGhlciBpcyBhY3RpdmUuXG5cdCAqL1xuXHRwcml2YXRlIF9kZXRhY2hDb3VudGVyTGlzdGVuZXIoKTogdm9pZCB7XG5cdFx0dGhpcy5fc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuXHRcdHRoaXMuX3N1YnNjcmlwdGlvbiA9IG51bGw7XG5cblx0XHRpZiAodGhpcy5faW5wdXRMaXN0ZW5lciAmJiB0aGlzLl90ZXh0YXJlYUVsZW1lbnQpIHtcblx0XHRcdHRoaXMuX3RleHRhcmVhRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiaW5wdXRcIiwgdGhpcy5faW5wdXRMaXN0ZW5lcik7XG5cdFx0XHR0aGlzLl9pbnB1dExpc3RlbmVyID0gbnVsbDtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIF9jb3VudFZhbHVlKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIge1xuXHRcdGlmICh0aGlzLmNvdW50ZXJNb2RlID09PSBcIndvcmRcIikge1xuXHRcdFx0cmV0dXJuIHZhbHVlLm1hdGNoKC9cXHB7TH0rL2d1KT8ubGVuZ3RoIHx8IDA7XG5cdFx0fVxuXHRcdHJldHVybiB2YWx1ZS5sZW5ndGg7XG5cdH1cbn1cbiJdfQ==
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Directive, Input, HostBinding, TemplateRef, Component, ViewChild, ContentChild, EventEmitter, Output, NgModule } from '@angular/core';
|
|
2
|
+
import { Directive, Self, Optional, Input, HostBinding, TemplateRef, Component, ViewChild, ContentChild, EventEmitter, Output, NgModule } from '@angular/core';
|
|
3
|
+
import * as i1 from '@angular/forms';
|
|
3
4
|
import { FormsModule } from '@angular/forms';
|
|
4
|
-
import * as i1 from '@angular/common';
|
|
5
|
+
import * as i1$1 from '@angular/common';
|
|
5
6
|
import { CommonModule } from '@angular/common';
|
|
6
7
|
import * as i2 from 'carbon-components-angular/icon';
|
|
7
8
|
import { IconModule } from 'carbon-components-angular/icon';
|
|
9
|
+
import { startWith } from 'rxjs/operators';
|
|
8
10
|
import { BaseIconButton, ButtonModule } from 'carbon-components-angular/button';
|
|
9
11
|
import * as i3 from 'carbon-components-angular/tooltip';
|
|
10
12
|
import { TooltipModule } from 'carbon-components-angular/tooltip';
|
|
@@ -21,7 +23,8 @@ import { TooltipModule } from 'carbon-components-angular/tooltip';
|
|
|
21
23
|
* See the [vanilla carbon docs](http://www.carbondesignsystem.com/components/text-input/code) for more detail.
|
|
22
24
|
*/
|
|
23
25
|
class TextInput {
|
|
24
|
-
constructor() {
|
|
26
|
+
constructor(ngControl) {
|
|
27
|
+
this.ngControl = ngControl;
|
|
25
28
|
/**
|
|
26
29
|
* @deprecated since v5 - Use `cdsLayer` directive instead
|
|
27
30
|
* `light` or `dark` input theme
|
|
@@ -65,14 +68,20 @@ class TextInput {
|
|
|
65
68
|
return this.invalid ? true : undefined;
|
|
66
69
|
}
|
|
67
70
|
}
|
|
68
|
-
TextInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TextInput, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
71
|
+
TextInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TextInput, deps: [{ token: i1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
69
72
|
TextInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: TextInput, selector: "[cdsText], [ibmText]", inputs: { theme: "theme", size: "size", invalid: "invalid", warn: "warn", skeleton: "skeleton" }, host: { properties: { "class.cds--text-input": "this.inputClass", "class.cds--text-input--sm": "this.isSizeSm", "class.cds--text-input--md": "this.isSizeMd", "class.cds--text-input--lg": "this.isSizelg", "class.cds--layout--size-sm": "this.sizeSm", "class.cds--layout--size-md": "this.sizeMd", "class.cds--layout--size-lg": "this.sizelg", "class.cds--text-input--invalid": "this.invalid", "class.cds--text-input--warning": "this.warn", "class.cds--skeleton": "this.skeleton", "class.cds--text-input--light": "this.isLightTheme", "attr.data-invalid": "this.getInvalidAttribute" } }, ngImport: i0 });
|
|
70
73
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TextInput, decorators: [{
|
|
71
74
|
type: Directive,
|
|
72
75
|
args: [{
|
|
73
76
|
selector: "[cdsText], [ibmText]"
|
|
74
77
|
}]
|
|
75
|
-
}],
|
|
78
|
+
}], ctorParameters: function () {
|
|
79
|
+
return [{ type: i1.NgControl, decorators: [{
|
|
80
|
+
type: Self
|
|
81
|
+
}, {
|
|
82
|
+
type: Optional
|
|
83
|
+
}] }];
|
|
84
|
+
}, propDecorators: { theme: [{
|
|
76
85
|
type: Input
|
|
77
86
|
}], size: [{
|
|
78
87
|
type: Input
|
|
@@ -132,7 +141,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
132
141
|
* See the [vanilla carbon docs](http://www.carbondesignsystem.com/components/text-input/code) for more detail.
|
|
133
142
|
*/
|
|
134
143
|
class TextArea {
|
|
135
|
-
constructor() {
|
|
144
|
+
constructor(ngControl) {
|
|
145
|
+
this.ngControl = ngControl;
|
|
136
146
|
/**
|
|
137
147
|
* @deprecated since v5 - Use `cdsLayer` directive instead
|
|
138
148
|
* `light` or `dark` input theme
|
|
@@ -153,14 +163,20 @@ class TextArea {
|
|
|
153
163
|
return this.invalid ? true : undefined;
|
|
154
164
|
}
|
|
155
165
|
}
|
|
156
|
-
TextArea.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TextArea, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
166
|
+
TextArea.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TextArea, deps: [{ token: i1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
157
167
|
TextArea.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: TextArea, selector: "[cdsTextArea], [ibmTextArea]", inputs: { theme: "theme", invalid: "invalid", warn: "warn", skeleton: "skeleton" }, host: { properties: { "class.cds--text-area": "this.baseClass", "class.cds--text-area--invalid": "this.invalid", "class.cds--text-area--warn": "this.warn", "class.cds--skeleton": "this.skeleton", "class.cds--text-area--light": "this.isLightTheme", "attr.data-invalid": "this.getInvalidAttr" } }, ngImport: i0 });
|
|
158
168
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TextArea, decorators: [{
|
|
159
169
|
type: Directive,
|
|
160
170
|
args: [{
|
|
161
171
|
selector: "[cdsTextArea], [ibmTextArea]"
|
|
162
172
|
}]
|
|
163
|
-
}],
|
|
173
|
+
}], ctorParameters: function () {
|
|
174
|
+
return [{ type: i1.NgControl, decorators: [{
|
|
175
|
+
type: Self
|
|
176
|
+
}, {
|
|
177
|
+
type: Optional
|
|
178
|
+
}] }];
|
|
179
|
+
}, propDecorators: { theme: [{
|
|
164
180
|
type: Input
|
|
165
181
|
}], baseClass: [{
|
|
166
182
|
type: HostBinding,
|
|
@@ -371,12 +387,14 @@ class TextareaLabelComponent {
|
|
|
371
387
|
* on each change. Excess words are trimmed from the end of the value.
|
|
372
388
|
*/
|
|
373
389
|
this.counterMode = "character";
|
|
374
|
-
//
|
|
390
|
+
// Tracks current character / word count for the counter display.
|
|
375
391
|
this.textCount = 0;
|
|
376
392
|
this.labelClass = true;
|
|
377
393
|
// Cached reference to the textarea element, set once in ngAfterViewInit.
|
|
378
394
|
this._textareaElement = null;
|
|
379
|
-
//
|
|
395
|
+
// RxJS subscription used when NgControl is available (template-driven & reactive forms).
|
|
396
|
+
this._subscription = null;
|
|
397
|
+
// Fallback DOM listener used only when no NgControl is present (plain textarea).
|
|
380
398
|
this._inputListener = null;
|
|
381
399
|
}
|
|
382
400
|
get isReadonly() {
|
|
@@ -424,7 +442,6 @@ class TextareaLabelComponent {
|
|
|
424
442
|
}
|
|
425
443
|
/**
|
|
426
444
|
* Attach/remove listener and seed `textCount` from the textarea's current value.
|
|
427
|
-
* @param changes
|
|
428
445
|
*/
|
|
429
446
|
ngOnChanges(changes) {
|
|
430
447
|
var _a, _b;
|
|
@@ -469,27 +486,49 @@ class TextareaLabelComponent {
|
|
|
469
486
|
}
|
|
470
487
|
}
|
|
471
488
|
/**
|
|
472
|
-
* Attaches the
|
|
489
|
+
* Attaches the counter listener, listen for either ngControl or native DOM input
|
|
490
|
+
* event listener
|
|
473
491
|
*/
|
|
474
492
|
_attachCounterListener() {
|
|
493
|
+
var _a;
|
|
475
494
|
this._detachCounterListener();
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
495
|
+
const control = (_a = this.textArea) === null || _a === void 0 ? void 0 : _a.ngControl;
|
|
496
|
+
if (control === null || control === void 0 ? void 0 : control.valueChanges) {
|
|
497
|
+
// NgControl listener
|
|
498
|
+
this._subscription = control.valueChanges
|
|
499
|
+
.pipe(startWith(control.value))
|
|
500
|
+
.subscribe((value) => {
|
|
501
|
+
var _a;
|
|
502
|
+
const raw = value || "";
|
|
503
|
+
if (this.counterMode === "word" && this.maxCount != null) {
|
|
504
|
+
const clamped = this._truncateToWordLimit(raw, this.maxCount);
|
|
505
|
+
if (clamped !== raw) {
|
|
506
|
+
// Write back through the control so the form model stays in sync.
|
|
507
|
+
// emitEvent false to avoid infinite loop
|
|
508
|
+
(_a = control === null || control === void 0 ? void 0 : control.control) === null || _a === void 0 ? void 0 : _a.setValue(clamped, { emitEvent: false });
|
|
509
|
+
}
|
|
488
510
|
}
|
|
511
|
+
this.textCount = this._countValue(raw);
|
|
512
|
+
this.changeDetectorRef.markForCheck();
|
|
513
|
+
});
|
|
514
|
+
}
|
|
515
|
+
else {
|
|
516
|
+
// Fallback DOM path
|
|
517
|
+
if (!this._textareaElement) {
|
|
518
|
+
return;
|
|
489
519
|
}
|
|
490
|
-
this.
|
|
491
|
-
|
|
492
|
-
|
|
520
|
+
this._inputListener = (e) => {
|
|
521
|
+
const el = e.target;
|
|
522
|
+
if (this.counterMode === "word" && this.maxCount != null) {
|
|
523
|
+
const clamped = this._truncateToWordLimit(el.value || "", this.maxCount);
|
|
524
|
+
if (clamped !== el.value) {
|
|
525
|
+
el.value = clamped;
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
this.textCount = this._countValue(el.value || "");
|
|
529
|
+
};
|
|
530
|
+
this._textareaElement.addEventListener("input", this._inputListener);
|
|
531
|
+
}
|
|
493
532
|
}
|
|
494
533
|
/**
|
|
495
534
|
* Truncates `value` so it contains at most `limit` Unicode words.
|
|
@@ -513,9 +552,13 @@ class TextareaLabelComponent {
|
|
|
513
552
|
return wordsSeen < limit ? value : value.slice(0, cutIndex);
|
|
514
553
|
}
|
|
515
554
|
/**
|
|
516
|
-
* Removes the
|
|
555
|
+
* Removes the subscription (NgControl path) and removes the DOM listener
|
|
556
|
+
* (fallback path). Safe to call when neither is active.
|
|
517
557
|
*/
|
|
518
558
|
_detachCounterListener() {
|
|
559
|
+
var _a;
|
|
560
|
+
(_a = this._subscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
561
|
+
this._subscription = null;
|
|
519
562
|
if (this._inputListener && this._textareaElement) {
|
|
520
563
|
this._textareaElement.removeEventListener("input", this._inputListener);
|
|
521
564
|
this._inputListener = null;
|
|
@@ -632,7 +675,7 @@ TextareaLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
|
|
|
632
675
|
</div>
|
|
633
676
|
</ng-container>
|
|
634
677
|
</ng-container>
|
|
635
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }] });
|
|
678
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }] });
|
|
636
679
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TextareaLabelComponent, decorators: [{
|
|
637
680
|
type: Component,
|
|
638
681
|
args: [{
|
|
@@ -863,7 +906,9 @@ class TextInputLabelComponent {
|
|
|
863
906
|
this.textInputWrapper = true;
|
|
864
907
|
// Cached reference to the input element, set once in ngAfterViewInit.
|
|
865
908
|
this._inputElement = null;
|
|
866
|
-
//
|
|
909
|
+
// RxJS subscription used when NgControl is available (template-driven & reactive forms).
|
|
910
|
+
this._subscription = null;
|
|
911
|
+
// Fallback cached DOM listener so it can be removed precisely (avoids anonymous-function leak).
|
|
867
912
|
this._inputListener = null;
|
|
868
913
|
}
|
|
869
914
|
get isInlineWrapper() {
|
|
@@ -913,8 +958,7 @@ class TextInputLabelComponent {
|
|
|
913
958
|
}
|
|
914
959
|
}
|
|
915
960
|
/**
|
|
916
|
-
* Attach/remove listener and seed `textCount` from the
|
|
917
|
-
* @param changes
|
|
961
|
+
* Attach/remove listener and seed `textCount` from the input's current value.
|
|
918
962
|
*/
|
|
919
963
|
ngOnChanges(changes) {
|
|
920
964
|
var _a;
|
|
@@ -941,24 +985,43 @@ class TextInputLabelComponent {
|
|
|
941
985
|
return value instanceof TemplateRef;
|
|
942
986
|
}
|
|
943
987
|
/**
|
|
944
|
-
* Attaches the
|
|
988
|
+
* Attaches the counter listener, listen for either ngControl or native DOM input
|
|
989
|
+
* event listener
|
|
945
990
|
*/
|
|
946
991
|
_attachCounterListener() {
|
|
992
|
+
var _a;
|
|
947
993
|
this._detachCounterListener();
|
|
948
|
-
|
|
949
|
-
|
|
994
|
+
const control = (_a = this.textInput) === null || _a === void 0 ? void 0 : _a.ngControl;
|
|
995
|
+
if (control === null || control === void 0 ? void 0 : control.valueChanges) {
|
|
996
|
+
// NgControl listener
|
|
997
|
+
this._subscription = control.valueChanges
|
|
998
|
+
.pipe(startWith(control.value))
|
|
999
|
+
.subscribe((value) => {
|
|
1000
|
+
this.textCount = (value === null || value === void 0 ? void 0 : value.length) || 0;
|
|
1001
|
+
this.changeDetectorRef.markForCheck();
|
|
1002
|
+
});
|
|
1003
|
+
}
|
|
1004
|
+
else {
|
|
1005
|
+
// Fallback DOM path
|
|
1006
|
+
if (!this._inputElement) {
|
|
1007
|
+
return;
|
|
1008
|
+
}
|
|
1009
|
+
this._inputListener = (e) => {
|
|
1010
|
+
var _a;
|
|
1011
|
+
this.textCount = ((_a = e.target.value) === null || _a === void 0 ? void 0 : _a.length) || 0;
|
|
1012
|
+
this.changeDetectorRef.detectChanges();
|
|
1013
|
+
};
|
|
1014
|
+
this._inputElement.addEventListener("input", this._inputListener);
|
|
950
1015
|
}
|
|
951
|
-
this._inputListener = (e) => {
|
|
952
|
-
var _a;
|
|
953
|
-
this.textCount = ((_a = e.target.value) === null || _a === void 0 ? void 0 : _a.length) || 0;
|
|
954
|
-
this.changeDetectorRef.detectChanges();
|
|
955
|
-
};
|
|
956
|
-
this._inputElement.addEventListener("input", this._inputListener);
|
|
957
1016
|
}
|
|
958
1017
|
/**
|
|
959
|
-
* Removes the
|
|
1018
|
+
* Removes the subscription (NgControl path) or removes the DOM listener.
|
|
1019
|
+
* Safe to call when neither is active.
|
|
960
1020
|
*/
|
|
961
1021
|
_detachCounterListener() {
|
|
1022
|
+
var _a;
|
|
1023
|
+
(_a = this._subscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
1024
|
+
this._subscription = null;
|
|
962
1025
|
if (this._inputListener && this._inputElement) {
|
|
963
1026
|
this._inputElement.removeEventListener("input", this._inputListener);
|
|
964
1027
|
this._inputListener = null;
|
|
@@ -970,7 +1033,7 @@ class TextInputLabelComponent {
|
|
|
970
1033
|
*/
|
|
971
1034
|
TextInputLabelComponent.labelCounter = 0;
|
|
972
1035
|
TextInputLabelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TextInputLabelComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
973
|
-
TextInputLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TextInputLabelComponent, selector: "cds-text-label, ibm-text-label", inputs: { labelInputID: "labelInputID", disabled: "disabled", skeleton: "skeleton", labelTemplate: "labelTemplate", textInputTemplate: "textInputTemplate", helperText: "helperText", invalidText: "invalidText", invalid: "invalid", warn: "warn", warnText: "warnText", ariaLabel: "ariaLabel", fluid: "fluid", decorator: "decorator", hideLabel: "hideLabel", inline: "inline", size: "size", enableCounter: "enableCounter", maxCount: "maxCount" }, host: { properties: { "class.cds--text-input-wrapper--inline": "this.isInlineWrapper", "class.cds--text-input-wrapper--readonly": "this.isReadonly", "class.cds--text-input--fluid": "this.fluidClass", "class.cds--text-input--fluid__skeleton": "this.fluidSkeletonClass", "class.cds--form-item": "this.labelClass", "class.cds--text-input-wrapper": "this.textInputWrapper" } }, viewQueries: [{ propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
1036
|
+
TextInputLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TextInputLabelComponent, selector: "cds-text-label, ibm-text-label", inputs: { labelInputID: "labelInputID", disabled: "disabled", skeleton: "skeleton", labelTemplate: "labelTemplate", textInputTemplate: "textInputTemplate", helperText: "helperText", invalidText: "invalidText", invalid: "invalid", warn: "warn", warnText: "warnText", ariaLabel: "ariaLabel", fluid: "fluid", decorator: "decorator", hideLabel: "hideLabel", inline: "inline", size: "size", enableCounter: "enableCounter", maxCount: "maxCount" }, host: { properties: { "class.cds--text-input-wrapper--inline": "this.isInlineWrapper", "class.cds--text-input-wrapper--readonly": "this.isReadonly", "class.cds--text-input--fluid": "this.fluidClass", "class.cds--text-input--fluid__skeleton": "this.fluidSkeletonClass", "class.cds--form-item": "this.labelClass", "class.cds--text-input-wrapper": "this.textInputWrapper" } }, queries: [{ propertyName: "textInput", first: true, predicate: TextInput, descendants: true }], viewQueries: [{ propertyName: "wrapper", first: true, predicate: ["wrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
974
1037
|
<ng-container *ngIf="skeleton">
|
|
975
1038
|
<span class="cds--label cds--skeleton"></span>
|
|
976
1039
|
<div class="cds--text-input cds--skeleton"></div>
|
|
@@ -1094,7 +1157,7 @@ TextInputLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
|
|
|
1094
1157
|
<ng-template *ngIf="isTemplate(warnText)" [ngTemplateOutlet]="warnText"></ng-template>
|
|
1095
1158
|
</div>
|
|
1096
1159
|
</ng-template>
|
|
1097
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }] });
|
|
1160
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }] });
|
|
1098
1161
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TextInputLabelComponent, decorators: [{
|
|
1099
1162
|
type: Component,
|
|
1100
1163
|
args: [{
|
|
@@ -1276,6 +1339,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
1276
1339
|
}], wrapper: [{
|
|
1277
1340
|
type: ViewChild,
|
|
1278
1341
|
args: ["wrapper", { static: false }]
|
|
1342
|
+
}], textInput: [{
|
|
1343
|
+
type: ContentChild,
|
|
1344
|
+
args: [TextInput, { static: false }]
|
|
1279
1345
|
}], labelClass: [{
|
|
1280
1346
|
type: HostBinding,
|
|
1281
1347
|
args: ["class.cds--form-item"]
|
|
@@ -1524,7 +1590,7 @@ PasswordInputLabelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.
|
|
|
1524
1590
|
</div>
|
|
1525
1591
|
</ng-container>
|
|
1526
1592
|
</div>
|
|
1527
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i3.Tooltip, selector: "cds-tooltip, ibm-tooltip", inputs: ["id", "enterDelayMs", "leaveDelayMs", "disabled", "description", "templateContext"] }] });
|
|
1593
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i3.Tooltip, selector: "cds-tooltip, ibm-tooltip", inputs: ["id", "enterDelayMs", "leaveDelayMs", "disabled", "description", "templateContext"] }] });
|
|
1528
1594
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PasswordInputLabelComponent, decorators: [{
|
|
1529
1595
|
type: Component,
|
|
1530
1596
|
args: [{
|
|
@@ -1937,7 +2003,7 @@ Label.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0
|
|
|
1937
2003
|
<ng-template *ngIf="isTemplate(warnText)" [ngTemplateOutlet]="warnText"></ng-template>
|
|
1938
2004
|
</div>
|
|
1939
2005
|
</ng-template>
|
|
1940
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i2.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: TextareaLabelComponent, selector: "cds-textarea-label, ibm-textarea-label", inputs: ["labelInputID", "disabled", "skeleton", "labelTemplate", "textAreaTemplate", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel", "fluid", "hideLabel", "enableCounter", "maxCount", "counterMode", "decorator"] }, { kind: "component", type: TextInputLabelComponent, selector: "cds-text-label, ibm-text-label", inputs: ["labelInputID", "disabled", "skeleton", "labelTemplate", "textInputTemplate", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel", "fluid", "decorator", "hideLabel", "inline", "size", "enableCounter", "maxCount"] }, { kind: "component", type: PasswordInputLabelComponent, selector: "cds-password-label, ibm-password-label", inputs: ["labelInputID", "disabled", "skeleton", "labelTemplate", "passwordInputTemplate", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel", "hidePasswordLabel", "showPasswordLabel", "fluid", "hideLabel", "inline"], outputs: ["togglePasswordVisibility"] }] });
|
|
2006
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i2.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: TextareaLabelComponent, selector: "cds-textarea-label, ibm-textarea-label", inputs: ["labelInputID", "disabled", "skeleton", "labelTemplate", "textAreaTemplate", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel", "fluid", "hideLabel", "enableCounter", "maxCount", "counterMode", "decorator"] }, { kind: "component", type: TextInputLabelComponent, selector: "cds-text-label, ibm-text-label", inputs: ["labelInputID", "disabled", "skeleton", "labelTemplate", "textInputTemplate", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel", "fluid", "decorator", "hideLabel", "inline", "size", "enableCounter", "maxCount"] }, { kind: "component", type: PasswordInputLabelComponent, selector: "cds-password-label, ibm-password-label", inputs: ["labelInputID", "disabled", "skeleton", "labelTemplate", "passwordInputTemplate", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel", "hidePasswordLabel", "showPasswordLabel", "fluid", "hideLabel", "inline"], outputs: ["togglePasswordVisibility"] }] });
|
|
1941
2007
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: Label, decorators: [{
|
|
1942
2008
|
type: Component,
|
|
1943
2009
|
args: [{
|