valtech-components 4.0.548 → 4.0.550

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.
@@ -0,0 +1,229 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
3
+ import { IonButton, IonIcon, IonInput, IonTextarea } from '@ionic/angular/standalone';
4
+ import { addIcons } from 'ionicons';
5
+ import { addOutline, trashOutline } from 'ionicons/icons';
6
+ import { ComponentStates } from '../../types';
7
+ import * as i0 from "@angular/core";
8
+ export class FieldOptionsEditorComponent {
9
+ constructor() {
10
+ this.props = {};
11
+ this.optionsChange = new EventEmitter();
12
+ this.fallback = {
13
+ title: 'Options',
14
+ hint: '',
15
+ addLabel: 'Add options',
16
+ optionsLabel: 'Options',
17
+ placeholder: 'One option per line',
18
+ emptyText: 'No options yet.',
19
+ removeOptionLabel: 'Remove option',
20
+ state: ComponentStates.ENABLED,
21
+ };
22
+ this.resolved = this.fallback;
23
+ this.options = [];
24
+ this.draft = '';
25
+ addIcons({ addOutline, trashOutline });
26
+ }
27
+ ngOnChanges(changes) {
28
+ if (changes['props']) {
29
+ this.resolved = { ...this.fallback, ...this.props };
30
+ this.options = this.normalizeOptions(this.props.options ?? []);
31
+ }
32
+ }
33
+ get disabled() {
34
+ return this.resolved.state !== ComponentStates.ENABLED;
35
+ }
36
+ stringValue(event) {
37
+ return String(event.detail?.value ?? '');
38
+ }
39
+ addDraft() {
40
+ const names = this.draft
41
+ .split(/\r?\n|,/)
42
+ .map(value => value.trim())
43
+ .filter(Boolean);
44
+ if (names.length === 0)
45
+ return;
46
+ const next = [...this.options, ...names.map(name => this.createOption(name))];
47
+ this.draft = '';
48
+ this.setOptions(next);
49
+ }
50
+ updateOption(id, name) {
51
+ this.setOptions(this.options.map(option => option.id === id
52
+ ? {
53
+ ...option,
54
+ name: name.trimStart(),
55
+ }
56
+ : option));
57
+ }
58
+ removeOption(id) {
59
+ this.setOptions(this.options.filter(option => option.id !== id));
60
+ }
61
+ createOption(name) {
62
+ return {
63
+ id: this.uniqueID(this.optionID(name) || `option-${this.options.length + 1}`),
64
+ name,
65
+ order: this.options.length,
66
+ };
67
+ }
68
+ setOptions(options) {
69
+ this.options = this.normalizeOptions(options).filter(option => option.name.trim());
70
+ this.optionsChange.emit(this.options);
71
+ }
72
+ normalizeOptions(options) {
73
+ const seen = new Set();
74
+ return [...options]
75
+ .sort((a, b) => (a.order ?? 0) - (b.order ?? 0))
76
+ .map((option, index) => {
77
+ const name = option.name.trim();
78
+ const id = this.uniqueID(option.id || this.optionID(name) || `option-${index + 1}`, seen);
79
+ seen.add(id);
80
+ return { id, name, order: index };
81
+ });
82
+ }
83
+ uniqueID(value, used = new Set(this.options.map(option => option.id))) {
84
+ const base = value || 'option';
85
+ if (!used.has(base))
86
+ return base;
87
+ let suffix = 2;
88
+ while (used.has(`${base}-${suffix}`))
89
+ suffix += 1;
90
+ return `${base}-${suffix}`;
91
+ }
92
+ optionID(value) {
93
+ return value
94
+ .normalize('NFD')
95
+ .replace(/[\u0300-\u036f]/g, '')
96
+ .replace(/[^a-zA-Z0-9]+/g, '-')
97
+ .replace(/^-+|-+$/g, '')
98
+ .toLowerCase();
99
+ }
100
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FieldOptionsEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
101
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FieldOptionsEditorComponent, isStandalone: true, selector: "val-field-options-editor", inputs: { props: "props" }, outputs: { optionsChange: "optionsChange" }, usesOnChanges: true, ngImport: i0, template: `
102
+ <section class="options-editor">
103
+ @if (resolved.title) {
104
+ <h3>{{ resolved.title }}</h3>
105
+ }
106
+ @if (resolved.hint) {
107
+ <p class="options-editor__hint">{{ resolved.hint }}</p>
108
+ }
109
+
110
+ <div class="options-editor__add">
111
+ <ion-textarea
112
+ autoGrow="true"
113
+ fill="outline"
114
+ [placeholder]="resolved.placeholder"
115
+ [value]="draft"
116
+ [disabled]="disabled"
117
+ (ionInput)="draft = stringValue($event)"
118
+ />
119
+ <ion-button
120
+ type="button"
121
+ fill="outline"
122
+ shape="round"
123
+ color="dark"
124
+ [disabled]="disabled || !draft.trim()"
125
+ (click)="addDraft()"
126
+ >
127
+ <ion-icon name="add-outline" slot="start" aria-hidden="true" />
128
+ {{ resolved.addLabel }}
129
+ </ion-button>
130
+ </div>
131
+
132
+ @if (options.length === 0) {
133
+ <p class="options-editor__empty">{{ resolved.emptyText }}</p>
134
+ } @else {
135
+ <div class="options-editor__list" [attr.aria-label]="resolved.optionsLabel">
136
+ @for (option of options; track option.id) {
137
+ <div class="options-editor__row">
138
+ <ion-input
139
+ fill="outline"
140
+ [value]="option.name"
141
+ [disabled]="disabled"
142
+ [attr.aria-label]="resolved.optionsLabel"
143
+ (ionInput)="updateOption(option.id, stringValue($event))"
144
+ />
145
+ <ion-button
146
+ type="button"
147
+ fill="clear"
148
+ color="medium"
149
+ [disabled]="disabled"
150
+ [attr.aria-label]="resolved.removeOptionLabel"
151
+ (click)="removeOption(option.id)"
152
+ >
153
+ <ion-icon name="trash-outline" slot="icon-only" />
154
+ </ion-button>
155
+ </div>
156
+ }
157
+ </div>
158
+ }
159
+ </section>
160
+ `, isInline: true, styles: [".options-editor{margin-top:16px}.options-editor h3{margin:0 0 6px;color:var(--ion-color-dark);font-size:1rem}.options-editor__hint,.options-editor__empty{margin:0;color:var(--ion-color-medium);font-size:.875rem;line-height:1.35}.options-editor__add{display:grid;gap:10px;margin-top:12px}.options-editor__list{display:grid;gap:8px;margin-top:12px}.options-editor__row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonTextarea, selector: "ion-textarea", inputs: ["autoGrow", "autocapitalize", "autofocus", "clearOnEdit", "color", "cols", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "maxlength", "minlength", "mode", "name", "placeholder", "readonly", "required", "rows", "shape", "spellcheck", "value", "wrap"] }] }); }
161
+ }
162
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FieldOptionsEditorComponent, decorators: [{
163
+ type: Component,
164
+ args: [{ selector: 'val-field-options-editor', standalone: true, imports: [CommonModule, IonButton, IonIcon, IonInput, IonTextarea], template: `
165
+ <section class="options-editor">
166
+ @if (resolved.title) {
167
+ <h3>{{ resolved.title }}</h3>
168
+ }
169
+ @if (resolved.hint) {
170
+ <p class="options-editor__hint">{{ resolved.hint }}</p>
171
+ }
172
+
173
+ <div class="options-editor__add">
174
+ <ion-textarea
175
+ autoGrow="true"
176
+ fill="outline"
177
+ [placeholder]="resolved.placeholder"
178
+ [value]="draft"
179
+ [disabled]="disabled"
180
+ (ionInput)="draft = stringValue($event)"
181
+ />
182
+ <ion-button
183
+ type="button"
184
+ fill="outline"
185
+ shape="round"
186
+ color="dark"
187
+ [disabled]="disabled || !draft.trim()"
188
+ (click)="addDraft()"
189
+ >
190
+ <ion-icon name="add-outline" slot="start" aria-hidden="true" />
191
+ {{ resolved.addLabel }}
192
+ </ion-button>
193
+ </div>
194
+
195
+ @if (options.length === 0) {
196
+ <p class="options-editor__empty">{{ resolved.emptyText }}</p>
197
+ } @else {
198
+ <div class="options-editor__list" [attr.aria-label]="resolved.optionsLabel">
199
+ @for (option of options; track option.id) {
200
+ <div class="options-editor__row">
201
+ <ion-input
202
+ fill="outline"
203
+ [value]="option.name"
204
+ [disabled]="disabled"
205
+ [attr.aria-label]="resolved.optionsLabel"
206
+ (ionInput)="updateOption(option.id, stringValue($event))"
207
+ />
208
+ <ion-button
209
+ type="button"
210
+ fill="clear"
211
+ color="medium"
212
+ [disabled]="disabled"
213
+ [attr.aria-label]="resolved.removeOptionLabel"
214
+ (click)="removeOption(option.id)"
215
+ >
216
+ <ion-icon name="trash-outline" slot="icon-only" />
217
+ </ion-button>
218
+ </div>
219
+ }
220
+ </div>
221
+ }
222
+ </section>
223
+ `, styles: [".options-editor{margin-top:16px}.options-editor h3{margin:0 0 6px;color:var(--ion-color-dark);font-size:1rem}.options-editor__hint,.options-editor__empty{margin:0;color:var(--ion-color-medium);font-size:.875rem;line-height:1.35}.options-editor__add{display:grid;gap:10px;margin-top:12px}.options-editor__list{display:grid;gap:8px;margin-top:12px}.options-editor__row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px}\n"] }]
224
+ }], ctorParameters: () => [], propDecorators: { props: [{
225
+ type: Input
226
+ }], optionsChange: [{
227
+ type: Output
228
+ }] } });
229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtb3B0aW9ucy1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9maWVsZC1vcHRpb25zLWVkaXRvci9maWVsZC1vcHRpb25zLWVkaXRvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUE0RzlDLE1BQU0sT0FBTywyQkFBMkI7SUFtQnRDO1FBbEJTLFVBQUssR0FBK0IsRUFBRSxDQUFDO1FBQ3RDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQTZCLENBQUM7UUFFL0QsYUFBUSxHQUEwRDtZQUN6RSxLQUFLLEVBQUUsU0FBUztZQUNoQixJQUFJLEVBQUUsRUFBRTtZQUNSLFFBQVEsRUFBRSxhQUFhO1lBQ3ZCLFlBQVksRUFBRSxTQUFTO1lBQ3ZCLFdBQVcsRUFBRSxxQkFBcUI7WUFDbEMsU0FBUyxFQUFFLGlCQUFpQjtZQUM1QixpQkFBaUIsRUFBRSxlQUFlO1lBQ2xDLEtBQUssRUFBRSxlQUFlLENBQUMsT0FBTztTQUMvQixDQUFDO1FBRUYsYUFBUSxHQUEwRCxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ2hGLFlBQU8sR0FBOEIsRUFB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QUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLElBQUksTUFBTSxFQUFFLENBQUM7WUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDO1FBQ2xELE9BQU8sR0FBRyxJQUFJLElBQUksTUFBTSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVPLFFBQVEsQ0FBQyxLQUFhO1FBQzVCLE9BQU8sS0FBSzthQUNULFNBQVMsQ0FBQyxLQUFLLENBQUM7YUFDaEIsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQzthQUMvQixPQUFPLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDO2FBQzlCLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO2FBQ3ZCLFdBQVcsRUFBRSxDQUFDO0lBQ25CLENBQUM7K0dBMUdVLDJCQUEyQjttR0FBM0IsMkJBQTJCLGtMQXJHNUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkRULDJnQkE1RFMsWUFBWSwrQkFBRSxTQUFTLG9QQUFFLE9BQU8sMkpBQUUsUUFBUSw4ZUFBRSxXQUFXOzs0RkFzR3RELDJCQUEyQjtrQkF6R3ZDLFNBQVM7K0JBQ0UsMEJBQTBCLGNBQ3hCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLENBQUMsWUFDeEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkRUO3dEQTJDUSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0ksYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJb25CdXR0b24sIElvbkljb24sIElvbklucHV0LCBJb25UZXh0YXJlYSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyBhZGRPdXRsaW5lLCB0cmFzaE91dGxpbmUgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBDb21wb25lbnRTdGF0ZXMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBGaWVsZE9wdGlvbkVkaXRvck9wdGlvbiwgRmllbGRPcHRpb25zRWRpdG9yTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWZpZWxkLW9wdGlvbnMtZWRpdG9yJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uQnV0dG9uLCBJb25JY29uLCBJb25JbnB1dCwgSW9uVGV4dGFyZWFdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxzZWN0aW9uIGNsYXNzPVwib3B0aW9ucy1lZGl0b3JcIj5cbiAgICAgIEBpZiAocmVzb2x2ZWQudGl0bGUpIHtcbiAgICAgICAgPGgzPnt7IHJlc29sdmVkLnRpdGxlIH19PC9oMz5cbiAgICAgIH1cbiAgICAgIEBpZiAocmVzb2x2ZWQuaGludCkge1xuICAgICAgICA8cCBjbGFzcz1cIm9wdGlvbnMtZWRpdG9yX19oaW50XCI+e3sgcmVzb2x2ZWQuaGludCB9fTwvcD5cbiAgICAgIH1cblxuICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvbnMtZWRpdG9yX19hZGRcIj5cbiAgICAgICAgPGlvbi10ZXh0YXJlYVxuICAgICAgICAgIGF1dG9Hcm93PVwidHJ1ZVwiXG4gICAgICAgICAgZmlsbD1cIm91dGxpbmVcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJyZXNvbHZlZC5wbGFjZWhvbGRlclwiXG4gICAgICAgICAgW3ZhbHVlXT1cImRyYWZ0XCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgIChpb25JbnB1dCk9XCJkcmFmdCA9IHN0cmluZ1ZhbHVlKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGZpbGw9XCJvdXRsaW5lXCJcbiAgICAgICAgICBzaGFwZT1cInJvdW5kXCJcbiAgICAgICAgICBjb2xvcj1cImRhcmtcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCAhZHJhZnQudHJpbSgpXCJcbiAgICAgICAgICAoY2xpY2spPVwiYWRkRHJhZnQoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImFkZC1vdXRsaW5lXCIgc2xvdD1cInN0YXJ0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cbiAgICAgICAgICB7eyByZXNvbHZlZC5hZGRMYWJlbCB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgQGlmIChvcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICA8cCBjbGFzcz1cIm9wdGlvbnMtZWRpdG9yX19lbXB0eVwiPnt7IHJlc29sdmVkLmVtcHR5VGV4dCB9fTwvcD5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8ZGl2IGNsYXNzPVwib3B0aW9ucy1lZGl0b3JfX2xpc3RcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInJlc29sdmVkLm9wdGlvbnNMYWJlbFwiPlxuICAgICAgICAgIEBmb3IgKG9wdGlvbiBvZiBvcHRpb25zOyB0cmFjayBvcHRpb24uaWQpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb25zLWVkaXRvcl9fcm93XCI+XG4gICAgICAgICAgICAgIDxpb24taW5wdXRcbiAgICAgICAgICAgICAgICBmaWxsPVwib3V0bGluZVwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbi5uYW1lXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicmVzb2x2ZWQub3B0aW9uc0xhYmVsXCJcbiAgICAgICAgICAgICAgICAoaW9uSW5wdXQpPVwidXBkYXRlT3B0aW9uKG9wdGlvbi5pZCwgc3RyaW5nVmFsdWUoJGV2ZW50KSlcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgICAgICAgICAgY29sb3I9XCJtZWRpdW1cIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJyZXNvbHZlZC5yZW1vdmVPcHRpb25MYWJlbFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZU9wdGlvbihvcHRpb24uaWQpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwidHJhc2gtb3V0bGluZVwiIHNsb3Q9XCJpY29uLW9ubHlcIiAvPlxuICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvc2VjdGlvbj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLm9wdGlvbnMtZWRpdG9yIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMTZweDtcbiAgICAgIH1cblxuICAgICAgLm9wdGlvbnMtZWRpdG9yIGgzIHtcbiAgICAgICAgbWFyZ2luOiAwIDAgNnB4O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICB9XG5cbiAgICAgIC5vcHRpb25zLWVkaXRvcl9faGludCxcbiAgICAgIC5vcHRpb25zLWVkaXRvcl9fZW1wdHkge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzU7XG4gICAgICB9XG5cbiAgICAgIC5vcHRpb25zLWVkaXRvcl9fYWRkIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAxMnB4O1xuICAgICAgfVxuXG4gICAgICAub3B0aW9ucy1lZGl0b3JfX2xpc3Qge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgbWFyZ2luLXRvcDogMTJweDtcbiAgICAgIH1cblxuICAgICAgLm9wdGlvbnMtZWRpdG9yX19yb3cge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpIGF1dG87XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZpZWxkT3B0aW9uc0VkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHByb3BzOiBGaWVsZE9wdGlvbnNFZGl0b3JNZXRhZGF0YSA9IHt9O1xuICBAT3V0cHV0KCkgb3B0aW9uc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmllbGRPcHRpb25FZGl0b3JPcHRpb25bXT4oKTtcblxuICByZWFkb25seSBmYWxsYmFjazogUmVxdWlyZWQ8T21pdDxGaWVsZE9wdGlvbnNFZGl0b3JNZXRhZGF0YSwgJ29wdGlvbnMnPj4gPSB7XG4gICAgdGl0bGU6ICdPcHRpb25zJyxcbiAgICBoaW50OiAnJyxcbiAgICBhZGRMYWJlbDogJ0FkZCBvcHRpb25zJyxcbiAgICBvcHRpb25zTGFiZWw6ICdPcHRpb25zJyxcbiAgICBwbGFjZWhvbGRlcjogJ09uZSBvcHRpb24gcGVyIGxpbmUnLFxuICAgIGVtcHR5VGV4dDogJ05vIG9wdGlvbnMgeWV0LicsXG4gICAgcmVtb3ZlT3B0aW9uTGFiZWw6ICdSZW1vdmUgb3B0aW9uJyxcbiAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gIH07XG5cbiAgcmVzb2x2ZWQ6IFJlcXVpcmVkPE9taXQ8RmllbGRPcHRpb25zRWRpdG9yTWV0YWRhdGEsICdvcHRpb25zJz4+ID0gdGhpcy5mYWxsYmFjaztcbiAgb3B0aW9uczogRmllbGRPcHRpb25FZGl0b3JPcHRpb25bXSA9IFtdO1xuICBkcmFmdCA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGFkZEljb25zKHsgYWRkT3V0bGluZSwgdHJhc2hPdXRsaW5lIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydwcm9wcyddKSB7XG4gICAgICB0aGlzLnJlc29sdmVkID0geyAuLi50aGlzLmZhbGxiYWNrLCAuLi50aGlzLnByb3BzIH07XG4gICAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLm5vcm1hbGl6ZU9wdGlvbnModGhpcy5wcm9wcy5vcHRpb25zID8/IFtdKTtcbiAgICB9XG4gIH1cblxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWQuc3RhdGUgIT09IENvbXBvbmVudFN0YXRlcy5FTkFCTEVEO1xuICB9XG5cbiAgc3RyaW5nVmFsdWUoZXZlbnQ6IEV2ZW50KTogc3RyaW5nIHtcbiAgICByZXR1cm4gU3RyaW5nKChldmVudCBhcyBDdXN0b21FdmVudDx7IHZhbHVlPzogdW5rbm93biB9PikuZGV0YWlsPy52YWx1ZSA/PyAnJyk7XG4gIH1cblxuICBhZGREcmFmdCgpOiB2b2lkIHtcbiAgICBjb25zdCBuYW1lcyA9IHRoaXMuZHJhZnRcbiAgICAgIC5zcGxpdCgvXFxyP1xcbnwsLylcbiAgICAgIC5tYXAodmFsdWUgPT4gdmFsdWUudHJpbSgpKVxuICAgICAgLmZpbHRlcihCb29sZWFuKTtcbiAgICBpZiAobmFtZXMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgbmV4dCA9IFsuLi50aGlzLm9wdGlvbnMsIC4uLm5hbWVzLm1hcChuYW1lID0+IHRoaXMuY3JlYXRlT3B0aW9uKG5hbWUpKV07XG4gICAgdGhpcy5kcmFmdCA9ICcnO1xuICAgIHRoaXMuc2V0T3B0aW9ucyhuZXh0KTtcbiAgfVxuXG4gIHVwZGF0ZU9wdGlvbihpZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNldE9wdGlvbnMoXG4gICAgICB0aGlzLm9wdGlvbnMubWFwKG9wdGlvbiA9PlxuICAgICAgICBvcHRpb24uaWQgPT09IGlkXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIC4uLm9wdGlvbixcbiAgICAgICAgICAgICAgbmFtZTogbmFtZS50cmltU3RhcnQoKSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IG9wdGlvblxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICByZW1vdmVPcHRpb24oaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2V0T3B0aW9ucyh0aGlzLm9wdGlvbnMuZmlsdGVyKG9wdGlvbiA9PiBvcHRpb24uaWQgIT09IGlkKSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU9wdGlvbihuYW1lOiBzdHJpbmcpOiBGaWVsZE9wdGlvbkVkaXRvck9wdGlvbiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiB0aGlzLnVuaXF1ZUlEKHRoaXMub3B0aW9uSUQobmFtZSkgfHwgYG9wdGlvbi0ke3RoaXMub3B0aW9ucy5sZW5ndGggKyAxfWApLFxuICAgICAgbmFtZSxcbiAgICAgIG9yZGVyOiB0aGlzLm9wdGlvbnMubGVuZ3RoLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHNldE9wdGlvbnMob3B0aW9uczogRmllbGRPcHRpb25FZGl0b3JPcHRpb25bXSk6IHZvaWQge1xuICAgIHRoaXMub3B0aW9ucyA9IHRoaXMubm9ybWFsaXplT3B0aW9ucyhvcHRpb25zKS5maWx0ZXIob3B0aW9uID0+IG9wdGlvbi5uYW1lLnRyaW0oKSk7XG4gICAgdGhpcy5vcHRpb25zQ2hhbmdlLmVtaXQodGhpcy5vcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplT3B0aW9ucyhvcHRpb25zOiBGaWVsZE9wdGlvbkVkaXRvck9wdGlvbltdKTogRmllbGRPcHRpb25FZGl0b3JPcHRpb25bXSB7XG4gICAgY29uc3Qgc2VlbiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIHJldHVybiBbLi4ub3B0aW9uc11cbiAgICAgIC5zb3J0KChhLCBiKSA9PiAoYS5vcmRlciA/PyAwKSAtIChiLm9yZGVyID8/IDApKVxuICAgICAgLm1hcCgob3B0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBuYW1lID0gb3B0aW9uLm5hbWUudHJpbSgpO1xuICAgICAgICBjb25zdCBpZCA9IHRoaXMudW5pcXVlSUQob3B0aW9uLmlkIHx8IHRoaXMub3B0aW9uSUQobmFtZSkgfHwgYG9wdGlvbi0ke2luZGV4ICsgMX1gLCBzZWVuKTtcbiAgICAgICAgc2Vlbi5hZGQoaWQpO1xuICAgICAgICByZXR1cm4geyBpZCwgbmFtZSwgb3JkZXI6IGluZGV4IH07XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdW5pcXVlSUQodmFsdWU6IHN0cmluZywgdXNlZCA9IG5ldyBTZXQodGhpcy5vcHRpb25zLm1hcChvcHRpb24gPT4gb3B0aW9uLmlkKSkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJhc2UgPSB2YWx1ZSB8fCAnb3B0aW9uJztcbiAgICBpZiAoIXVzZWQuaGFzKGJhc2UpKSByZXR1cm4gYmFzZTtcbiAgICBsZXQgc3VmZml4ID0gMjtcbiAgICB3aGlsZSAodXNlZC5oYXMoYCR7YmFzZX0tJHtzdWZmaXh9YCkpIHN1ZmZpeCArPSAxO1xuICAgIHJldHVybiBgJHtiYXNlfS0ke3N1ZmZpeH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBvcHRpb25JRCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWVcbiAgICAgIC5ub3JtYWxpemUoJ05GRCcpXG4gICAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZywgJycpXG4gICAgICAucmVwbGFjZSgvW15hLXpBLVowLTldKy9nLCAnLScpXG4gICAgICAucmVwbGFjZSgvXi0rfC0rJC9nLCAnJylcbiAgICAgIC50b0xvd2VyQ2FzZSgpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2ZpZWxkLW9wdGlvbnMtZWRpdG9yL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRTdGF0ZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBGaWVsZE9wdGlvbkVkaXRvck9wdGlvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgb3JkZXI6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWVsZE9wdGlvbnNFZGl0b3JNZXRhZGF0YSB7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBoaW50Pzogc3RyaW5nO1xuICBhZGRMYWJlbD86IHN0cmluZztcbiAgb3B0aW9uc0xhYmVsPzogc3RyaW5nO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgZW1wdHlUZXh0Pzogc3RyaW5nO1xuICByZW1vdmVPcHRpb25MYWJlbD86IHN0cmluZztcbiAgc3RhdGU/OiBDb21wb25lbnRTdGF0ZTtcbiAgb3B0aW9ucz86IEZpZWxkT3B0aW9uRWRpdG9yT3B0aW9uW107XG59XG4iXX0=
@@ -22,7 +22,7 @@ export class FontSizeSelectorComponent {
22
22
  this.props = {};
23
23
  this.fontSizeService = inject(FontSizeService);
24
24
  this.i18n = inject(I18nService);
25
- this.popoverId = `font-size-selector-${Math.random().toString(36).slice(2, 8)}`;
25
+ this.isOpen = false;
26
26
  this.currentSize = this.fontSizeService.size;
27
27
  this.i18n.registerDefaults('FontSizeSelector', FONT_SIZE_SELECTOR_I18N);
28
28
  }
@@ -36,13 +36,20 @@ export class FontSizeSelectorComponent {
36
36
  setSize(size) {
37
37
  this.fontSizeService.setSize(size);
38
38
  }
39
+ openPopover(event) {
40
+ event.stopPropagation();
41
+ this.popoverEvent = event;
42
+ this.isOpen = true;
43
+ }
44
+ closePopover() {
45
+ this.isOpen = false;
46
+ }
39
47
  t(key) {
40
48
  return this.i18n.t(key, 'FontSizeSelector');
41
49
  }
42
50
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FontSizeSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
43
51
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FontSizeSelectorComponent, isStandalone: true, selector: "val-font-size-selector", inputs: { props: "props" }, ngImport: i0, template: `
44
52
  <ion-button
45
- [id]="popoverId"
46
53
  [color]="props.color || 'medium'"
47
54
  [fill]="props.fill || 'clear'"
48
55
  [size]="props.size || 'default'"
@@ -50,11 +57,17 @@ export class FontSizeSelectorComponent {
50
57
  [attr.aria-label]="t('ariaLabel')"
51
58
  class="icon-mode-button"
52
59
  style="min-width: 44px; width: 44px; height: 44px; margin: 0; --padding-start: 0; --padding-end: 0;"
60
+ (click)="openPopover($event)"
53
61
  >
54
62
  <ion-icon slot="icon-only" name="text-outline" aria-hidden="true"></ion-icon>
55
63
  </ion-button>
56
64
 
57
- <ion-popover [trigger]="popoverId" [dismissOnSelect]="true">
65
+ <ion-popover
66
+ [isOpen]="isOpen"
67
+ [event]="popoverEvent"
68
+ [dismissOnSelect]="true"
69
+ (didDismiss)="closePopover()"
70
+ >
58
71
  <ng-template>
59
72
  <ion-list>
60
73
  @for (option of options; track option.value) {
@@ -80,7 +93,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
80
93
  type: Component,
81
94
  args: [{ selector: 'val-font-size-selector', standalone: true, imports: [IonButton, IonIcon, IonPopover, IonList, IonItem, IonLabel], template: `
82
95
  <ion-button
83
- [id]="popoverId"
84
96
  [color]="props.color || 'medium'"
85
97
  [fill]="props.fill || 'clear'"
86
98
  [size]="props.size || 'default'"
@@ -88,11 +100,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
88
100
  [attr.aria-label]="t('ariaLabel')"
89
101
  class="icon-mode-button"
90
102
  style="min-width: 44px; width: 44px; height: 44px; margin: 0; --padding-start: 0; --padding-end: 0;"
103
+ (click)="openPopover($event)"
91
104
  >
92
105
  <ion-icon slot="icon-only" name="text-outline" aria-hidden="true"></ion-icon>
93
106
  </ion-button>
94
107
 
95
- <ion-popover [trigger]="popoverId" [dismissOnSelect]="true">
108
+ <ion-popover
109
+ [isOpen]="isOpen"
110
+ [event]="popoverEvent"
111
+ [dismissOnSelect]="true"
112
+ (didDismiss)="closePopover()"
113
+ >
96
114
  <ng-template>
97
115
  <ion-list>
98
116
  @for (option of options; track option.value) {
@@ -116,4 +134,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
116
134
  }], ctorParameters: () => [], propDecorators: { props: [{
117
135
  type: Input
118
136
  }] } });
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9udC1zaXplLXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvZm9udC1zaXplLXNlbGVjdG9yL2ZvbnQtc2l6ZS1zZWxlY3Rvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDaEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUdyRCxNQUFNLHVCQUF1QixHQUFHO0lBQzlCLEVBQUUsRUFBRTtRQUNGLFNBQVMsRUFBRSxpQkFBaUI7UUFDNUIsS0FBSyxFQUFFLFNBQVM7UUFDaEIsTUFBTSxFQUFFLFNBQVM7UUFDakIsS0FBSyxFQUFFLFFBQVE7S0FDaEI7SUFDRCxFQUFFLEVBQUU7UUFDRixTQUFTLEVBQUUsV0FBVztRQUN0QixLQUFLLEVBQUUsT0FBTztRQUNkLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLEtBQUssRUFBRSxPQUFPO0tBQ2Y7Q0FDRixDQUFDO0FBMkNGLE1BQU0sT0FBTyx5QkFBeUI7SUFTcEM7UUFSUyxVQUFLLEdBQTZCLEVBQUUsQ0FBQztRQUV0QyxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMxQyxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTFCLGNBQVMsR0FBRyxzQkFBc0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDM0UsZ0JBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQztRQUcvQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLHVCQUF1QixDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU87WUFDTCxFQUFFLEtBQUssRUFBRSxjQUFjLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3ZELEVBQUUsS0FBSyxFQUFFLGNBQWMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDekQsRUFBRSxLQUFLLEVBQUUsY0FBYyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRTtTQUN4RCxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFvQjtRQUMxQixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsQ0FBQyxDQUFDLEdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQzlDLENBQUM7K0dBM0JVLHlCQUF5QjttR0FBekIseUJBQXlCLDhHQXJDMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQ1QsaVNBbkNTLFNBQVMsb1BBQUUsT0FBTywySkFBRSxVQUFVLHdEQUFFLE9BQU8seUZBQUUsT0FBTywwTkFBRSxRQUFROzs0RkFzQ3pELHlCQUF5QjtrQkF6Q3JDLFNBQVM7K0JBQ0Usd0JBQXdCLGNBQ3RCLElBQUksV0FDUCxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLFlBQzNEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0NUO3dEQUlRLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uQnV0dG9uLCBJb25JY29uLCBJb25JdGVtLCBJb25MYWJlbCwgSW9uTGlzdCwgSW9uUG9wb3ZlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgRm9udFNpemVPcHRpb24sIEZvbnRTaXplU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZvbnQtc2l6ZS9mb250LXNpemUuc2VydmljZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgRm9udFNpemVTZWxlY3Rvck1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IEZPTlRfU0laRV9TRUxFQ1RPUl9JMThOID0ge1xuICBlczoge1xuICAgIGFyaWFMYWJlbDogJ1RhbWHDsW8gZGUgdGV4dG8nLFxuICAgIHNtYWxsOiAnUGVxdWXDsW8nLFxuICAgIG1lZGl1bTogJ01lZGlhbm8nLFxuICAgIGxhcmdlOiAnR3JhbmRlJyxcbiAgfSxcbiAgZW46IHtcbiAgICBhcmlhTGFiZWw6ICdUZXh0IHNpemUnLFxuICAgIHNtYWxsOiAnU21hbGwnLFxuICAgIG1lZGl1bTogJ01lZGl1bScsXG4gICAgbGFyZ2U6ICdMYXJnZScsXG4gIH0sXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtZm9udC1zaXplLXNlbGVjdG9yJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0lvbkJ1dHRvbiwgSW9uSWNvbiwgSW9uUG9wb3ZlciwgSW9uTGlzdCwgSW9uSXRlbSwgSW9uTGFiZWxdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24tYnV0dG9uXG4gICAgICBbaWRdPVwicG9wb3ZlcklkXCJcbiAgICAgIFtjb2xvcl09XCJwcm9wcy5jb2xvciB8fCAnbWVkaXVtJ1wiXG4gICAgICBbZmlsbF09XCJwcm9wcy5maWxsIHx8ICdjbGVhcidcIlxuICAgICAgW3NpemVdPVwicHJvcHMuc2l6ZSB8fCAnZGVmYXVsdCdcIlxuICAgICAgW2Rpc2FibGVkXT1cInByb3BzLmRpc2FibGVkXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidCgnYXJpYUxhYmVsJylcIlxuICAgICAgY2xhc3M9XCJpY29uLW1vZGUtYnV0dG9uXCJcbiAgICAgIHN0eWxlPVwibWluLXdpZHRoOiA0NHB4OyB3aWR0aDogNDRweDsgaGVpZ2h0OiA0NHB4OyBtYXJnaW46IDA7IC0tcGFkZGluZy1zdGFydDogMDsgLS1wYWRkaW5nLWVuZDogMDtcIlxuICAgID5cbiAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cInRleHQtb3V0bGluZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaW9uLWljb24+XG4gICAgPC9pb24tYnV0dG9uPlxuXG4gICAgPGlvbi1wb3BvdmVyIFt0cmlnZ2VyXT1cInBvcG92ZXJJZFwiIFtkaXNtaXNzT25TZWxlY3RdPVwidHJ1ZVwiPlxuICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICA8aW9uLWxpc3Q+XG4gICAgICAgICAgQGZvciAob3B0aW9uIG9mIG9wdGlvbnM7IHRyYWNrIG9wdGlvbi52YWx1ZSkge1xuICAgICAgICAgICAgPGlvbi1pdGVtXG4gICAgICAgICAgICAgIGNsYXNzPVwic2l6ZS1vcHRpb25cIlxuICAgICAgICAgICAgICBbYnV0dG9uXT1cInRydWVcIlxuICAgICAgICAgICAgICBbZGV0YWlsXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNldFNpemUob3B0aW9uLnZhbHVlKVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJvcHRpb24udmFsdWUgPT09IGN1cnJlbnRTaXplKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW9uLWxhYmVsPnt7IG9wdGlvbi5sYWJlbCB9fTwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICBAaWYgKG9wdGlvbi52YWx1ZSA9PT0gY3VycmVudFNpemUoKSkge1xuICAgICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiZW5kXCIgbmFtZT1cImNoZWNrbWFya1wiIGNvbG9yPVwicHJpbWFyeVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICAgICAgfVxuICAgICAgICA8L2lvbi1saXN0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2lvbi1wb3BvdmVyPlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9mb250LXNpemUtc2VsZWN0b3IuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9udFNpemVTZWxlY3RvckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHByb3BzOiBGb250U2l6ZVNlbGVjdG9yTWV0YWRhdGEgPSB7fTtcblxuICBwcml2YXRlIGZvbnRTaXplU2VydmljZSA9IGluamVjdChGb250U2l6ZVNlcnZpY2UpO1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuXG4gIHJlYWRvbmx5IHBvcG92ZXJJZCA9IGBmb250LXNpemUtc2VsZWN0b3ItJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCA4KX1gO1xuICByZWFkb25seSBjdXJyZW50U2l6ZSA9IHRoaXMuZm9udFNpemVTZXJ2aWNlLnNpemU7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pMThuLnJlZ2lzdGVyRGVmYXVsdHMoJ0ZvbnRTaXplU2VsZWN0b3InLCBGT05UX1NJWkVfU0VMRUNUT1JfSTE4Tik7XG4gIH1cblxuICBnZXQgb3B0aW9ucygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgeyB2YWx1ZTogRm9udFNpemVPcHRpb24uU01BTEwsIGxhYmVsOiB0aGlzLnQoJ3NtYWxsJykgfSxcbiAgICAgIHsgdmFsdWU6IEZvbnRTaXplT3B0aW9uLk1FRElVTSwgbGFiZWw6IHRoaXMudCgnbWVkaXVtJykgfSxcbiAgICAgIHsgdmFsdWU6IEZvbnRTaXplT3B0aW9uLkxBUkdFLCBsYWJlbDogdGhpcy50KCdsYXJnZScpIH0sXG4gICAgXTtcbiAgfVxuXG4gIHNldFNpemUoc2l6ZTogRm9udFNpemVPcHRpb24pOiB2b2lkIHtcbiAgICB0aGlzLmZvbnRTaXplU2VydmljZS5zZXRTaXplKHNpemUpO1xuICB9XG5cbiAgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgJ0ZvbnRTaXplU2VsZWN0b3InKTtcbiAgfVxufVxuIl19
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9udC1zaXplLXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvZm9udC1zaXplLXNlbGVjdG9yL2ZvbnQtc2l6ZS1zZWxlY3Rvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDaEcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUdyRCxNQUFNLHVCQUF1QixHQUFHO0lBQzlCLEVBQUUsRUFBRTtRQUNGLFNBQVMsRUFBRSxpQkFBaUI7UUFDNUIsS0FBSyxFQUFFLFNBQVM7UUFDaEIsTUFBTSxFQUFFLFNBQVM7UUFDakIsS0FBSyxFQUFFLFFBQVE7S0FDaEI7SUFDRCxFQUFFLEVBQUU7UUFDRixTQUFTLEVBQUUsV0FBVztRQUN0QixLQUFLLEVBQUUsT0FBTztRQUNkLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLEtBQUssRUFBRSxPQUFPO0tBQ2Y7Q0FDRixDQUFDO0FBZ0RGLE1BQU0sT0FBTyx5QkFBeUI7SUFVcEM7UUFUUyxVQUFLLEdBQTZCLEVBQUUsQ0FBQztRQUV0QyxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMxQyxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRW5DLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFTixnQkFBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO1FBRy9DLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTztZQUNMLEVBQUUsS0FBSyxFQUFFLGNBQWMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDdkQsRUFBRSxLQUFLLEVBQUUsY0FBYyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN6RCxFQUFFLEtBQUssRUFBRSxjQUFjLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1NBQ3hELENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxDQUFDLElBQW9CO1FBQzFCLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBWTtRQUN0QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsQ0FBQyxDQUFDLEdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQzlDLENBQUM7K0dBdENVLHlCQUF5QjttR0FBekIseUJBQXlCLDhHQTFDMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVDVCxpU0F4Q1MsU0FBUyxvUEFBRSxPQUFPLDJKQUFFLFVBQVUsd0RBQUUsT0FBTyx5RkFBRSxPQUFPLDBOQUFFLFFBQVE7OzRGQTJDekQseUJBQXlCO2tCQTlDckMsU0FBUzsrQkFDRSx3QkFBd0IsY0FDdEIsSUFBSSxXQUNQLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsWUFDM0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVDVDt3REFJUSxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkJ1dHRvbiwgSW9uSWNvbiwgSW9uSXRlbSwgSW9uTGFiZWwsIElvbkxpc3QsIElvblBvcG92ZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IEZvbnRTaXplT3B0aW9uLCBGb250U2l6ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mb250LXNpemUvZm9udC1zaXplLnNlcnZpY2UnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IEZvbnRTaXplU2VsZWN0b3JNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBGT05UX1NJWkVfU0VMRUNUT1JfSTE4TiA9IHtcbiAgZXM6IHtcbiAgICBhcmlhTGFiZWw6ICdUYW1hw7FvIGRlIHRleHRvJyxcbiAgICBzbWFsbDogJ1BlcXVlw7FvJyxcbiAgICBtZWRpdW06ICdNZWRpYW5vJyxcbiAgICBsYXJnZTogJ0dyYW5kZScsXG4gIH0sXG4gIGVuOiB7XG4gICAgYXJpYUxhYmVsOiAnVGV4dCBzaXplJyxcbiAgICBzbWFsbDogJ1NtYWxsJyxcbiAgICBtZWRpdW06ICdNZWRpdW0nLFxuICAgIGxhcmdlOiAnTGFyZ2UnLFxuICB9LFxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWZvbnQtc2l6ZS1zZWxlY3RvcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtJb25CdXR0b24sIElvbkljb24sIElvblBvcG92ZXIsIElvbkxpc3QsIElvbkl0ZW0sIElvbkxhYmVsXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8aW9uLWJ1dHRvblxuICAgICAgW2NvbG9yXT1cInByb3BzLmNvbG9yIHx8ICdtZWRpdW0nXCJcbiAgICAgIFtmaWxsXT1cInByb3BzLmZpbGwgfHwgJ2NsZWFyJ1wiXG4gICAgICBbc2l6ZV09XCJwcm9wcy5zaXplIHx8ICdkZWZhdWx0J1wiXG4gICAgICBbZGlzYWJsZWRdPVwicHJvcHMuZGlzYWJsZWRcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0KCdhcmlhTGFiZWwnKVwiXG4gICAgICBjbGFzcz1cImljb24tbW9kZS1idXR0b25cIlxuICAgICAgc3R5bGU9XCJtaW4td2lkdGg6IDQ0cHg7IHdpZHRoOiA0NHB4OyBoZWlnaHQ6IDQ0cHg7IG1hcmdpbjogMDsgLS1wYWRkaW5nLXN0YXJ0OiAwOyAtLXBhZGRpbmctZW5kOiAwO1wiXG4gICAgICAoY2xpY2spPVwib3BlblBvcG92ZXIoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwidGV4dC1vdXRsaW5lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pb24taWNvbj5cbiAgICA8L2lvbi1idXR0b24+XG5cbiAgICA8aW9uLXBvcG92ZXJcbiAgICAgIFtpc09wZW5dPVwiaXNPcGVuXCJcbiAgICAgIFtldmVudF09XCJwb3BvdmVyRXZlbnRcIlxuICAgICAgW2Rpc21pc3NPblNlbGVjdF09XCJ0cnVlXCJcbiAgICAgIChkaWREaXNtaXNzKT1cImNsb3NlUG9wb3ZlcigpXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDxpb24tbGlzdD5cbiAgICAgICAgICBAZm9yIChvcHRpb24gb2Ygb3B0aW9uczsgdHJhY2sgb3B0aW9uLnZhbHVlKSB7XG4gICAgICAgICAgICA8aW9uLWl0ZW1cbiAgICAgICAgICAgICAgY2xhc3M9XCJzaXplLW9wdGlvblwiXG4gICAgICAgICAgICAgIFtidXR0b25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtkZXRhaWxdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2V0U2l6ZShvcHRpb24udmFsdWUpXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cIm9wdGlvbi52YWx1ZSA9PT0gY3VycmVudFNpemUoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpb24tbGFiZWw+e3sgb3B0aW9uLmxhYmVsIH19PC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgIEBpZiAob3B0aW9uLnZhbHVlID09PSBjdXJyZW50U2l6ZSgpKSB7XG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJlbmRcIiBuYW1lPVwiY2hlY2ttYXJrXCIgY29sb3I9XCJwcmltYXJ5XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvaW9uLWxpc3Q+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLXBvcG92ZXI+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2ZvbnQtc2l6ZS1zZWxlY3Rvci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGb250U2l6ZVNlbGVjdG9yQ29tcG9uZW50IHtcbiAgQElucHV0KCkgcHJvcHM6IEZvbnRTaXplU2VsZWN0b3JNZXRhZGF0YSA9IHt9O1xuXG4gIHByaXZhdGUgZm9udFNpemVTZXJ2aWNlID0gaW5qZWN0KEZvbnRTaXplU2VydmljZSk7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG5cbiAgaXNPcGVuID0gZmFsc2U7XG4gIHBvcG92ZXJFdmVudD86IEV2ZW50O1xuICByZWFkb25seSBjdXJyZW50U2l6ZSA9IHRoaXMuZm9udFNpemVTZXJ2aWNlLnNpemU7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pMThuLnJlZ2lzdGVyRGVmYXVsdHMoJ0ZvbnRTaXplU2VsZWN0b3InLCBGT05UX1NJWkVfU0VMRUNUT1JfSTE4Tik7XG4gIH1cblxuICBnZXQgb3B0aW9ucygpIHtcbiAgICByZXR1cm4gW1xuICAgICAgeyB2YWx1ZTogRm9udFNpemVPcHRpb24uU01BTEwsIGxhYmVsOiB0aGlzLnQoJ3NtYWxsJykgfSxcbiAgICAgIHsgdmFsdWU6IEZvbnRTaXplT3B0aW9uLk1FRElVTSwgbGFiZWw6IHRoaXMudCgnbWVkaXVtJykgfSxcbiAgICAgIHsgdmFsdWU6IEZvbnRTaXplT3B0aW9uLkxBUkdFLCBsYWJlbDogdGhpcy50KCdsYXJnZScpIH0sXG4gICAgXTtcbiAgfVxuXG4gIHNldFNpemUoc2l6ZTogRm9udFNpemVPcHRpb24pOiB2b2lkIHtcbiAgICB0aGlzLmZvbnRTaXplU2VydmljZS5zZXRTaXplKHNpemUpO1xuICB9XG5cbiAgb3BlblBvcG92ZXIoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5wb3BvdmVyRXZlbnQgPSBldmVudDtcbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gIH1cblxuICBjbG9zZVBvcG92ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksICdGb250U2l6ZVNlbGVjdG9yJyk7XG4gIH1cbn1cbiJdfQ==
@@ -39,8 +39,7 @@ export class LanguageSelectorComponent {
39
39
  * Emits the selected language code.
40
40
  */
41
41
  this.languageChange = new EventEmitter();
42
- /** Unique ID for the icon mode popover trigger */
43
- this.popoverId = `lang-selector-${Math.random().toString(36).substring(2, 9)}`;
42
+ this.iconPopoverOpen = false;
44
43
  /** Available languages (exposed for icon mode template) */
45
44
  this.availableLanguages = [];
46
45
  /** Current language (exposed for icon mode template) */
@@ -130,6 +129,14 @@ export class LanguageSelectorComponent {
130
129
  }
131
130
  }
132
131
  }
132
+ openIconPopover(event) {
133
+ event.stopPropagation();
134
+ this.iconPopoverEvent = event;
135
+ this.iconPopoverOpen = true;
136
+ }
137
+ closeIconPopover() {
138
+ this.iconPopoverOpen = false;
139
+ }
133
140
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LanguageSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
134
141
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LanguageSelectorComponent, isStandalone: true, selector: "val-language-selector", inputs: { props: "props" }, outputs: { languageChange: "languageChange" }, ngImport: i0, template: `
135
142
  <!-- Default mode: use popover-selector -->
@@ -140,7 +147,6 @@ export class LanguageSelectorComponent {
140
147
  <!-- Icon mode: compact globe button with popover -->
141
148
  @if (props.mode === 'icon') {
142
149
  <ion-button
143
- [id]="popoverId"
144
150
  [color]="props.color || 'medium'"
145
151
  [fill]="props.fill || 'clear'"
146
152
  [size]="props.size || 'default'"
@@ -148,11 +154,17 @@ export class LanguageSelectorComponent {
148
154
  [attr.aria-label]="'Cambiar idioma'"
149
155
  class="icon-mode-button"
150
156
  style="min-width: 44px; width: 44px; height: 44px; margin: 0; --padding-start: 0; --padding-end: 0;"
157
+ (click)="openIconPopover($event)"
151
158
  >
152
159
  <ion-icon slot="icon-only" [name]="props.icon || 'globe-outline'" aria-hidden="true"></ion-icon>
153
160
  </ion-button>
154
161
 
155
- <ion-popover [trigger]="popoverId" [dismissOnSelect]="true">
162
+ <ion-popover
163
+ [isOpen]="iconPopoverOpen"
164
+ [event]="iconPopoverEvent"
165
+ [dismissOnSelect]="true"
166
+ (didDismiss)="closeIconPopover()"
167
+ >
156
168
  <ng-template>
157
169
  <ion-list>
158
170
  @for (lang of availableLanguages; track lang) {
@@ -185,7 +197,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
185
197
  <!-- Icon mode: compact globe button with popover -->
186
198
  @if (props.mode === 'icon') {
187
199
  <ion-button
188
- [id]="popoverId"
189
200
  [color]="props.color || 'medium'"
190
201
  [fill]="props.fill || 'clear'"
191
202
  [size]="props.size || 'default'"
@@ -193,11 +204,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
193
204
  [attr.aria-label]="'Cambiar idioma'"
194
205
  class="icon-mode-button"
195
206
  style="min-width: 44px; width: 44px; height: 44px; margin: 0; --padding-start: 0; --padding-end: 0;"
207
+ (click)="openIconPopover($event)"
196
208
  >
197
209
  <ion-icon slot="icon-only" [name]="props.icon || 'globe-outline'" aria-hidden="true"></ion-icon>
198
210
  </ion-button>
199
211
 
200
- <ion-popover [trigger]="popoverId" [dismissOnSelect]="true">
212
+ <ion-popover
213
+ [isOpen]="iconPopoverOpen"
214
+ [event]="iconPopoverEvent"
215
+ [dismissOnSelect]="true"
216
+ (didDismiss)="closeIconPopover()"
217
+ >
201
218
  <ng-template>
202
219
  <ion-list>
203
220
  @for (lang of availableLanguages; track lang) {
@@ -223,4 +240,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
223
240
  }], languageChange: [{
224
241
  type: Output
225
242
  }] } });
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2Utc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZS1zZWxlY3Rvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFdBQVcsRUFBWSxNQUFNLHdCQUF3QixDQUFDO0FBQy9ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOztBQW9EMUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUNILE1BQU0sT0FBTyx5QkFBeUI7SUE0Q3BDO1FBM0NBOztXQUVHO1FBRUgsVUFBSyxHQUE2QixFQUFFLENBQUM7UUFFckM7OztXQUdHO1FBRUgsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBSzVDLGtEQUFrRDtRQUNsRCxjQUFTLEdBQUcsaUJBQWlCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRTFFLDJEQUEy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QUMsZ0JBQWdCLENBQUMsQ0FBQztZQUUzQyw0RUFBNEU7WUFDNUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFdkQsK0RBQStEO1lBQy9ELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUN2RSxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7K0dBN0hVLHlCQUF5QjttR0FBekIseUJBQXlCLDRKQWxFMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUNULDB6REExQ1MsWUFBWSwrQkFBRSx3QkFBd0Isa0hBQUUsU0FBUyxvUEFBRSxPQUFPLDJKQUFFLFVBQVUsd0RBQUUsT0FBTyx5RkFBRSxPQUFPLDBOQUFFLFFBQVE7OzRGQW1FakcseUJBQXlCO2tCQXRFckMsU0FBUzsrQkFDRSx1QkFBdUIsY0FDckIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLHdCQUF3QixFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLFlBQ25HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlDVDt3REE4QkQsS0FBSztzQkFESixLQUFLO2dCQVFOLGNBQWM7c0JBRGIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkJ1dHRvbiwgSW9uSWNvbiwgSW9uUG9wb3ZlciwgSW9uTGlzdCwgSW9uSXRlbSwgSW9uTGFiZWwgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgbGFuZ3VhZ2UsIGdsb2JlT3V0bGluZSwgY2hlY2ttYXJrIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UsIEkxOG5MYW5nIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBQb3BvdmVyU2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuLi9wb3BvdmVyLXNlbGVjdG9yL3BvcG92ZXItc2VsZWN0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IFBvcG92ZXJPcHRpb24sIFBvcG92ZXJTZWxlY3Rvck1ldGFkYXRhIH0gZnJvbSAnLi4vcG9wb3Zlci1zZWxlY3Rvci90eXBlcyc7XG5pbXBvcnQgeyBMYW5ndWFnZVNlbGVjdG9yTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWxhbmd1YWdlLXNlbGVjdG9yJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUG9wb3ZlclNlbGVjdG9yQ29tcG9uZW50LCBJb25CdXR0b24sIElvbkljb24sIElvblBvcG92ZXIsIElvbkxpc3QsIElvbkl0ZW0sIElvbkxhYmVsXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8IS0tIERlZmF1bHQgbW9kZTogdXNlIHBvcG92ZXItc2VsZWN0b3IgLS0+XG4gICAgQGlmIChwcm9wcy5tb2RlICE9PSAnaWNvbicpIHtcbiAgICAgIDx2YWwtcG9wb3Zlci1zZWxlY3RvciBbcHJvcHNdPVwicG9wb3ZlclByb3BzXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbkxhbmd1YWdlQ2hhbmdlKCRldmVudClcIj4gPC92YWwtcG9wb3Zlci1zZWxlY3Rvcj5cbiAgICB9XG5cbiAgICA8IS0tIEljb24gbW9kZTogY29tcGFjdCBnbG9iZSBidXR0b24gd2l0aCBwb3BvdmVyIC0tPlxuICAgIEBpZiAocHJvcHMubW9kZSA9PT0gJ2ljb24nKSB7XG4gICAgICA8aW9uLWJ1dHRvblxuICAgICAgICBbaWRdPVwicG9wb3ZlcklkXCJcbiAgICAgICAgW2NvbG9yXT1cInByb3BzLmNvbG9yIHx8ICdtZWRpdW0nXCJcbiAgICAgICAgW2ZpbGxdPVwicHJvcHMuZmlsbCB8fCAnY2xlYXInXCJcbiAgICAgICAgW3NpemVdPVwicHJvcHMuc2l6ZSB8fCAnZGVmYXVsdCdcIlxuICAgICAgICBbZGlzYWJsZWRdPVwicHJvcHMuZGlzYWJsZWRcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidDYW1iaWFyIGlkaW9tYSdcIlxuICAgICAgICBjbGFzcz1cImljb24tbW9kZS1idXR0b25cIlxuICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogNDRweDsgd2lkdGg6IDQ0cHg7IGhlaWdodDogNDRweDsgbWFyZ2luOiAwOyAtLXBhZGRpbmctc3RhcnQ6IDA7IC0tcGFkZGluZy1lbmQ6IDA7XCJcbiAgICAgID5cbiAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBbbmFtZV09XCJwcm9wcy5pY29uIHx8ICdnbG9iZS1vdXRsaW5lJ1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaW9uLWljb24+XG4gICAgICA8L2lvbi1idXR0b24+XG5cbiAgICAgIDxpb24tcG9wb3ZlciBbdHJpZ2dlcl09XCJwb3BvdmVySWRcIiBbZGlzbWlzc09uU2VsZWN0XT1cInRydWVcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICAgIDxpb24tbGlzdD5cbiAgICAgICAgICAgIEBmb3IgKGxhbmcgb2YgYXZhaWxhYmxlTGFuZ3VhZ2VzOyB0cmFjayBsYW5nKSB7XG4gICAgICAgICAgICAgIDxpb24taXRlbVxuICAgICAgICAgICAgICAgIFtidXR0b25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2RldGFpbF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTGFuZ3VhZ2VDaGFuZ2UobGFuZylcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJsYW5nID09PSBjdXJyZW50TGFuZ3VhZ2VcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlvbi1sYWJlbD57eyBnZXRMYW5ndWFnZURpc3BsYXlOYW1lKGxhbmcpIH19PC9pb24tbGFiZWw+XG4gICAgICAgICAgICAgICAgQGlmIChsYW5nID09PSBjdXJyZW50TGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiZW5kXCIgbmFtZT1cImNoZWNrbWFya1wiIGNvbG9yPVwicHJpbWFyeVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvaW9uLWxpc3Q+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2lvbi1wb3BvdmVyPlxuICAgIH1cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vbGFuZ3VhZ2Utc2VsZWN0b3IuY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC1sYW5ndWFnZS1zZWxlY3RvclxuICpcbiAqIEEgbGFuZ3VhZ2Ugc2VsZWN0b3IgY29tcG9uZW50IHRoYXQgdXNlcyBJMThuU2VydmljZS5cbiAqIEJ5IGRlZmF1bHQsIGxhbmd1YWdlIGNoYW5nZXMgYXJlIHJlYWN0aXZlIChubyBwYWdlIHJlbG9hZCkuXG4gKiBTZXQgZm9yY2VSZWxvYWQ6IHRydWUgaW4gcHJvcHMgdG8gcmVsb2FkIG9uIGNoYW5nZS5cbiAqXG4gKiBAZXhhbXBsZSBEZWZhdWx0IG1vZGUgKGRyb3Bkb3duLCBubyBsYWJlbCk6XG4gKiA8dmFsLWxhbmd1YWdlLXNlbGVjdG9yIFtwcm9wc109XCJ7IHNob3dGbGFnczogdHJ1ZSB9XCI+XG4gKiA8L3ZhbC1sYW5ndWFnZS1zZWxlY3Rvcj5cbiAqXG4gKiBAZXhhbXBsZSBXaXRoIGxhYmVsIChpZiBuZWVkZWQpOlxuICogPHZhbC1sYW5ndWFnZS1zZWxlY3RvciBbcHJvcHNdPVwieyBzaG93TGFiZWw6IHRydWUgfVwiPlxuICogPC92YWwtbGFuZ3VhZ2Utc2VsZWN0b3I+XG4gKlxuICogQGV4YW1wbGUgSWNvbiBtb2RlIChjb21wYWN0IGZvciBoZWFkZXJzL3Rvb2xiYXJzKTpcbiAqIDx2YWwtbGFuZ3VhZ2Utc2VsZWN0b3IgW3Byb3BzXT1cInsgbW9kZTogJ2ljb24nLCBjb2xvcjogJ3ByaW1hcnknIH1cIj5cbiAqIDwvdmFsLWxhbmd1YWdlLXNlbGVjdG9yPlxuICpcbiAqIEBpbnB1dCBwcm9wczogTGFuZ3VhZ2VTZWxlY3Rvck1ldGFkYXRhIC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIGxhbmd1YWdlIHNlbGVjdG9yXG4gKiBAb3V0cHV0IGxhbmd1YWdlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiAtIEVtaXR0ZWQgd2hlbiBsYW5ndWFnZSBjaGFuZ2VzXG4gKi9cbmV4cG9ydCBjbGFzcyBMYW5ndWFnZVNlbGVjdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqXG4gICAqIExhbmd1YWdlIHNlbGVjdG9yIGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHJvcHM6IExhbmd1YWdlU2VsZWN0b3JNZXRhZGF0YSA9IHt9O1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGxhbmd1YWdlIHNlbGVjdGlvbiBjaGFuZ2VzLlxuICAgKiBFbWl0cyB0aGUgc2VsZWN0ZWQgbGFuZ3VhZ2UgY29kZS5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBsYW5ndWFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8qKiBQb3BvdmVyIHNlbGVjdG9yIGNvbmZpZ3VyYXRpb24gKGZvciBkZWZhdWx0IG1vZGUpICovXG4gIHBvcG92ZXJQcm9wczogUG9wb3ZlclNlbGVjdG9yTWV0YWRhdGE7XG5cbiAgLyoqIFVuaXF1ZSBJRCBmb3IgdGhlIGljb24gbW9kZSBwb3BvdmVyIHRyaWdnZXIgKi9cbiAgcG9wb3ZlcklkID0gYGxhbmctc2VsZWN0b3ItJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiwgOSl9YDtcblxuICAvKiogQXZhaWxhYmxlIGxhbmd1YWdlcyAoZXhwb3NlZCBmb3IgaWNvbiBtb2RlIHRlbXBsYXRlKSAqL1xuICBhdmFpbGFibGVMYW5ndWFnZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqIEN1cnJlbnQgbGFuZ3VhZ2UgKGV4cG9zZWQgZm9yIGljb24gbW9kZSB0ZW1wbGF0ZSkgKi9cbiAgY3VycmVudExhbmd1YWdlOiBzdHJpbmcgPSAnJztcblxuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuXG4gIC8qKiBEZWZhdWx0IGxhbmd1YWdlIGRpc3BsYXkgbmFtZXMgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdExhbmd1YWdlTmFtZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgZXM6ICdFc3Bhw7FvbCcsXG4gICAgZW46ICdFbmdsaXNoJyxcbiAgICBmcjogJ0ZyYW7Dp2FpcycsXG4gICAgZGU6ICdEZXV0c2NoJyxcbiAgfTtcblxuICAvKiogRGVmYXVsdCBmbGFnIGljb25zIGZvciBsYW5ndWFnZXMgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdExhbmd1YWdlRmxhZ3M6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgZXM6ICfwn4eq8J+HuCcsXG4gICAgZW46ICfwn4e68J+HuCcsXG4gICAgZnI6ICfwn4er8J+HtycsXG4gICAgZGU6ICfwn4ep8J+HqicsXG4gIH07XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgYWRkSWNvbnMoeyBsYW5ndWFnZSwgZ2xvYmVPdXRsaW5lLCBjaGVja21hcmsgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmN1cnJlbnRMYW5ndWFnZSA9IHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgdGhpcy5hdmFpbGFibGVMYW5ndWFnZXMgPSB0aGlzLnByb3BzLmF2YWlsYWJsZUxhbmd1YWdlcyB8fCB0aGlzLmkxOG4uc3VwcG9ydGVkTGFuZ3VhZ2VzKCk7XG4gICAgdGhpcy5pbml0aWFsaXplUG9wb3ZlclByb3BzKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVQb3BvdmVyUHJvcHMoKSB7XG4gICAgY29uc3QgY3VycmVudExhbmd1YWdlID0gdGhpcy5pMThuLmxhbmcoKTtcbiAgICBjb25zdCBhdmFpbGFibGVMYW5ndWFnZXMgPSB0aGlzLnByb3BzLmF2YWlsYWJsZUxhbmd1YWdlcyB8fCB0aGlzLmkxOG4uc3VwcG9ydGVkTGFuZ3VhZ2VzKCk7XG5cbiAgICAvLyBDb252ZXJ0IGxhbmd1YWdlIGNvZGVzIHRvIHBvcG92ZXIgb3B0aW9uc1xuICAgIGNvbnN0IG9wdGlvbnM6IFBvcG92ZXJPcHRpb25bXSA9IGF2YWlsYWJsZUxhbmd1YWdlcy5tYXAobGFuZyA9PiAoe1xuICAgICAgdmFsdWU6IGxhbmcsXG4gICAgICBsYWJlbDogdGhpcy5nZXRMYW5ndWFnZURpc3BsYXlOYW1lKGxhbmcpLFxuICAgIH0pKTtcblxuICAgIC8vIENyZWF0ZSBwb3BvdmVyIGNvbmZpZ3VyYXRpb25cbiAgICB0aGlzLnBvcG92ZXJQcm9wcyA9IHtcbiAgICAgIG9wdGlvbnMsXG4gICAgICBzZWxlY3RlZFZhbHVlOiBjdXJyZW50TGFuZ3VhZ2UsXG4gICAgICBsYWJlbDogdGhpcy5wcm9wcy5zaG93TGFiZWwgPT09IHRydWUgPyB0aGlzLnByb3BzLmxhYmVsIHx8IHRoaXMuaTE4bi50KCdsYW5ndWFnZScpIDogdW5kZWZpbmVkLFxuICAgICAgaWNvbjogJ2xhbmd1YWdlJyxcbiAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLmkxOG4udCgnc2VsZWN0TGFuZ3VhZ2UnKSxcbiAgICAgIGNvbG9yOiB0aGlzLnByb3BzLmNvbG9yIHx8ICdtZWRpdW0nLFxuICAgICAgc2l6ZTogdGhpcy5wcm9wcy5zaXplIHx8ICdkZWZhdWx0JyxcbiAgICAgIC8vIEVsIGJvcmRlIGFob3JhIGxvIGRpYnVqYSBlbCBwb3BvdmVyLXNlbGVjdG9yIGVuIDo6cGFydChuYXRpdmUpIChkYXJrXG4gICAgICAvLyBjdWFkcmFkbywgcHJpbWFyeSBhbCBhYnJpciksIGluZGVwZW5kaWVudGUgZGVsIGZpbGwuICdvdXRsaW5lJyBkZWphIGVsXG4gICAgICAvLyBmb25kbyB0cmFuc3BhcmVudGUsIGNvbnNpc3RlbnRlIGNvbiBsb3Mgc2VsZWN0b3JlcyBkZSB0ZW1hIHkgdGFtYcOxby5cbiAgICAgIGZpbGw6IHRoaXMucHJvcHMuZmlsbCB8fCAnb3V0bGluZScsXG4gICAgICBzaGFwZTogdGhpcy5wcm9wcy5zaGFwZSxcbiAgICAgIGV4cGFuZDogdGhpcy5wcm9wcy5leHBhbmQsXG4gICAgICBkaXNhYmxlZDogdGhpcy5wcm9wcy5kaXNhYmxlZCB8fCBmYWxzZSxcbiAgICAgIGludGVyZmFjZTogJ3BvcG92ZXInLFxuICAgICAgc2hvd0NoZWNrbWFyazogdHJ1ZSxcbiAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgIGNhbmNlbFRleHQ6IHRoaXMuaTE4bi50KCdjYW5jZWwnKSxcbiAgICAgIG9rVGV4dDogdGhpcy5pMThuLnQoJ29rJyksXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBHZXQgZGlzcGxheSBuYW1lIGZvciBhIGxhbmd1YWdlIGNvZGUgKHB1YmxpYyBmb3IgdGVtcGxhdGUgYWNjZXNzKSAqL1xuICBnZXRMYW5ndWFnZURpc3BsYXlOYW1lKGxhbmd1YWdlQ29kZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBVc2UgY3VzdG9tIG5hbWVzIGlmIHByb3ZpZGVkXG4gICAgaWYgKHRoaXMucHJvcHMuY3VzdG9tTGFuZ3VhZ2VOYW1lcz8uW2xhbmd1YWdlQ29kZV0pIHtcbiAgICAgIGNvbnN0IGN1c3RvbU5hbWUgPSB0aGlzLnByb3BzLmN1c3RvbUxhbmd1YWdlTmFtZXNbbGFuZ3VhZ2VDb2RlXTtcbiAgICAgIGNvbnN0IGZsYWcgPSB0aGlzLnByb3BzLnNob3dGbGFncyA/IHRoaXMuZGVmYXVsdExhbmd1YWdlRmxhZ3NbbGFuZ3VhZ2VDb2RlXSA6ICcnO1xuICAgICAgcmV0dXJuIGZsYWcgPyBgJHtmbGFnfSAke2N1c3RvbU5hbWV9YCA6IGN1c3RvbU5hbWU7XG4gICAgfVxuXG4gICAgLy8gVXNlIGRlZmF1bHQgbmFtZXNcbiAgICBjb25zdCBkZWZhdWx0TmFtZSA9IHRoaXMuZGVmYXVsdExhbmd1YWdlTmFtZXNbbGFuZ3VhZ2VDb2RlXSB8fCBsYW5ndWFnZUNvZGUudG9VcHBlckNhc2UoKTtcbiAgICBjb25zdCBmbGFnID0gdGhpcy5wcm9wcy5zaG93RmxhZ3MgPyB0aGlzLmRlZmF1bHRMYW5ndWFnZUZsYWdzW2xhbmd1YWdlQ29kZV0gOiAnJztcbiAgICByZXR1cm4gZmxhZyA/IGAke2ZsYWd9ICR7ZGVmYXVsdE5hbWV9YCA6IGRlZmF1bHROYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBsYW5ndWFnZSBzZWxlY3Rpb24gY2hhbmdlLlxuICAgKiBAcGFyYW0gc2VsZWN0ZWRMYW5ndWFnZSAtIFRoZSBzZWxlY3RlZCBsYW5ndWFnZSBjb2RlKHMpXG4gICAqL1xuICBvbkxhbmd1YWdlQ2hhbmdlKHNlbGVjdGVkTGFuZ3VhZ2U6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgaWYgKHR5cGVvZiBzZWxlY3RlZExhbmd1YWdlID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgbmV3TGFuZyA9IHNlbGVjdGVkTGFuZ3VhZ2UgYXMgSTE4bkxhbmc7XG5cbiAgICAgIC8vIFVwZGF0ZSBjdXJyZW50IGxhbmd1YWdlIGZvciBpY29uIG1vZGVcbiAgICAgIHRoaXMuY3VycmVudExhbmd1YWdlID0gbmV3TGFuZztcblxuICAgICAgLy8gRW1pdCB0aGUgY2hhbmdlIGV2ZW50XG4gICAgICB0aGlzLmxhbmd1YWdlQ2hhbmdlLmVtaXQoc2VsZWN0ZWRMYW5ndWFnZSk7XG5cbiAgICAgIC8vIFNldCB0aGUgbmV3IGxhbmd1YWdlIChyZWFjdGl2ZSBieSBkZWZhdWx0LCByZWxvYWQgaWYgZm9yY2VSZWxvYWQgaXMgdHJ1ZSlcbiAgICAgIHRoaXMuaTE4bi5zZXRMYW5ndWFnZShuZXdMYW5nLCB0aGlzLnByb3BzLmZvcmNlUmVsb2FkKTtcblxuICAgICAgLy8gVXBkYXRlIHBvcG92ZXIgc2VsZWN0ZWQgdmFsdWUgZm9yIHJlYWN0aXZlIFVJIChkZWZhdWx0IG1vZGUpXG4gICAgICBpZiAodGhpcy5wb3BvdmVyUHJvcHMpIHtcbiAgICAgICAgdGhpcy5wb3BvdmVyUHJvcHMgPSB7IC4uLnRoaXMucG9wb3ZlclByb3BzLCBzZWxlY3RlZFZhbHVlOiBuZXdMYW5nIH07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
243
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2Utc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9sYW5ndWFnZS1zZWxlY3Rvci9sYW5ndWFnZS1zZWxlY3Rvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFdBQVcsRUFBWSxNQUFNLHdCQUF3QixDQUFDO0FBQy9ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOztBQXlEMUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUNILE1BQU0sT0FBTyx5QkFBeUI7SUE0Q3BDO1FBM0NBOztXQUVHO1FBRUgsVUFBSyxHQUE2QixFQUFFLENBQUM7UUFFckM7OztXQUdHO1FBRUgsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBSzVDLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBR3hCLDJEQUEyRDtRQUMzRCx1QkFBa0IsR0FBYSxFQUFFLENBQUM7UUFFbEMsd0RBQXdEO1FBQ3hELG9CQUFlLEdBQVcsRUFBRSxDQUFDO1FBRXJCLFNBQUksR0FBRyxNQUFNLENBQUMsV0FB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V0FBVyxDQUFDLENBQUM7WUFFdkQsK0RBQStEO1lBQy9ELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUN2RSxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlLENBQUMsS0FBWTtRQUMxQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQzsrR0F2SVUseUJBQXlCO21HQUF6Qix5QkFBeUIsNEpBdkUxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThDVCwwekRBL0NTLFlBQVksK0JBQUUsd0JBQXdCLGtIQUFFLFNBQVMsb1BBQUUsT0FBTywySkFBRSxVQUFVLHdEQUFFLE9BQU8seUZBQUUsT0FBTywwTkFBRSxRQUFROzs0RkF3RWpHLHlCQUF5QjtrQkEzRXJDLFNBQVM7K0JBQ0UsdUJBQXVCLGNBQ3JCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSx3QkFBd0IsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxZQUNuRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThDVDt3REE4QkQsS0FBSztzQkFESixLQUFLO2dCQVFOLGNBQWM7c0JBRGIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkJ1dHRvbiwgSW9uSWNvbiwgSW9uUG9wb3ZlciwgSW9uTGlzdCwgSW9uSXRlbSwgSW9uTGFiZWwgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgbGFuZ3VhZ2UsIGdsb2JlT3V0bGluZSwgY2hlY2ttYXJrIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UsIEkxOG5MYW5nIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBQb3BvdmVyU2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuLi9wb3BvdmVyLXNlbGVjdG9yL3BvcG92ZXItc2VsZWN0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IFBvcG92ZXJPcHRpb24sIFBvcG92ZXJTZWxlY3Rvck1ldGFkYXRhIH0gZnJvbSAnLi4vcG9wb3Zlci1zZWxlY3Rvci90eXBlcyc7XG5pbXBvcnQgeyBMYW5ndWFnZVNlbGVjdG9yTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWxhbmd1YWdlLXNlbGVjdG9yJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUG9wb3ZlclNlbGVjdG9yQ29tcG9uZW50LCBJb25CdXR0b24sIElvbkljb24sIElvblBvcG92ZXIsIElvbkxpc3QsIElvbkl0ZW0sIElvbkxhYmVsXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8IS0tIERlZmF1bHQgbW9kZTogdXNlIHBvcG92ZXItc2VsZWN0b3IgLS0+XG4gICAgQGlmIChwcm9wcy5tb2RlICE9PSAnaWNvbicpIHtcbiAgICAgIDx2YWwtcG9wb3Zlci1zZWxlY3RvciBbcHJvcHNdPVwicG9wb3ZlclByb3BzXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbkxhbmd1YWdlQ2hhbmdlKCRldmVudClcIj4gPC92YWwtcG9wb3Zlci1zZWxlY3Rvcj5cbiAgICB9XG5cbiAgICA8IS0tIEljb24gbW9kZTogY29tcGFjdCBnbG9iZSBidXR0b24gd2l0aCBwb3BvdmVyIC0tPlxuICAgIEBpZiAocHJvcHMubW9kZSA9PT0gJ2ljb24nKSB7XG4gICAgICA8aW9uLWJ1dHRvblxuICAgICAgICBbY29sb3JdPVwicHJvcHMuY29sb3IgfHwgJ21lZGl1bSdcIlxuICAgICAgICBbZmlsbF09XCJwcm9wcy5maWxsIHx8ICdjbGVhcidcIlxuICAgICAgICBbc2l6ZV09XCJwcm9wcy5zaXplIHx8ICdkZWZhdWx0J1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCJwcm9wcy5kaXNhYmxlZFwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0NhbWJpYXIgaWRpb21hJ1wiXG4gICAgICAgIGNsYXNzPVwiaWNvbi1tb2RlLWJ1dHRvblwiXG4gICAgICAgIHN0eWxlPVwibWluLXdpZHRoOiA0NHB4OyB3aWR0aDogNDRweDsgaGVpZ2h0OiA0NHB4OyBtYXJnaW46IDA7IC0tcGFkZGluZy1zdGFydDogMDsgLS1wYWRkaW5nLWVuZDogMDtcIlxuICAgICAgICAoY2xpY2spPVwib3Blbkljb25Qb3BvdmVyKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIFtuYW1lXT1cInByb3BzLmljb24gfHwgJ2dsb2JlLW91dGxpbmUnXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pb24taWNvbj5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cblxuICAgICAgPGlvbi1wb3BvdmVyXG4gICAgICAgIFtpc09wZW5dPVwiaWNvblBvcG92ZXJPcGVuXCJcbiAgICAgICAgW2V2ZW50XT1cImljb25Qb3BvdmVyRXZlbnRcIlxuICAgICAgICBbZGlzbWlzc09uU2VsZWN0XT1cInRydWVcIlxuICAgICAgICAoZGlkRGlzbWlzcyk9XCJjbG9zZUljb25Qb3BvdmVyKClcIlxuICAgICAgPlxuICAgICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgICAgPGlvbi1saXN0PlxuICAgICAgICAgICAgQGZvciAobGFuZyBvZiBhdmFpbGFibGVMYW5ndWFnZXM7IHRyYWNrIGxhbmcpIHtcbiAgICAgICAgICAgICAgPGlvbi1pdGVtXG4gICAgICAgICAgICAgICAgW2J1dHRvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbZGV0YWlsXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25MYW5ndWFnZUNoYW5nZShsYW5nKVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImxhbmcgPT09IGN1cnJlbnRMYW5ndWFnZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aW9uLWxhYmVsPnt7IGdldExhbmd1YWdlRGlzcGxheU5hbWUobGFuZykgfX08L2lvbi1sYWJlbD5cbiAgICAgICAgICAgICAgICBAaWYgKGxhbmcgPT09IGN1cnJlbnRMYW5ndWFnZSkge1xuICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJlbmRcIiBuYW1lPVwiY2hlY2ttYXJrXCIgY29sb3I9XCJwcmltYXJ5XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9pb24tbGlzdD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvaW9uLXBvcG92ZXI+XG4gICAgfVxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9sYW5ndWFnZS1zZWxlY3Rvci5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLWxhbmd1YWdlLXNlbGVjdG9yXG4gKlxuICogQSBsYW5ndWFnZSBzZWxlY3RvciBjb21wb25lbnQgdGhhdCB1c2VzIEkxOG5TZXJ2aWNlLlxuICogQnkgZGVmYXVsdCwgbGFuZ3VhZ2UgY2hhbmdlcyBhcmUgcmVhY3RpdmUgKG5vIHBhZ2UgcmVsb2FkKS5cbiAqIFNldCBmb3JjZVJlbG9hZDogdHJ1ZSBpbiBwcm9wcyB0byByZWxvYWQgb24gY2hhbmdlLlxuICpcbiAqIEBleGFtcGxlIERlZmF1bHQgbW9kZSAoZHJvcGRvd24sIG5vIGxhYmVsKTpcbiAqIDx2YWwtbGFuZ3VhZ2Utc2VsZWN0b3IgW3Byb3BzXT1cInsgc2hvd0ZsYWdzOiB0cnVlIH1cIj5cbiAqIDwvdmFsLWxhbmd1YWdlLXNlbGVjdG9yPlxuICpcbiAqIEBleGFtcGxlIFdpdGggbGFiZWwgKGlmIG5lZWRlZCk6XG4gKiA8dmFsLWxhbmd1YWdlLXNlbGVjdG9yIFtwcm9wc109XCJ7IHNob3dMYWJlbDogdHJ1ZSB9XCI+XG4gKiA8L3ZhbC1sYW5ndWFnZS1zZWxlY3Rvcj5cbiAqXG4gKiBAZXhhbXBsZSBJY29uIG1vZGUgKGNvbXBhY3QgZm9yIGhlYWRlcnMvdG9vbGJhcnMpOlxuICogPHZhbC1sYW5ndWFnZS1zZWxlY3RvciBbcHJvcHNdPVwieyBtb2RlOiAnaWNvbicsIGNvbG9yOiAncHJpbWFyeScgfVwiPlxuICogPC92YWwtbGFuZ3VhZ2Utc2VsZWN0b3I+XG4gKlxuICogQGlucHV0IHByb3BzOiBMYW5ndWFnZVNlbGVjdG9yTWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgbGFuZ3VhZ2Ugc2VsZWN0b3JcbiAqIEBvdXRwdXQgbGFuZ3VhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+IC0gRW1pdHRlZCB3aGVuIGxhbmd1YWdlIGNoYW5nZXNcbiAqL1xuZXhwb3J0IGNsYXNzIExhbmd1YWdlU2VsZWN0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICogTGFuZ3VhZ2Ugc2VsZWN0b3IgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAqL1xuICBASW5wdXQoKVxuICBwcm9wczogTGFuZ3VhZ2VTZWxlY3Rvck1ldGFkYXRhID0ge307XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgbGFuZ3VhZ2Ugc2VsZWN0aW9uIGNoYW5nZXMuXG4gICAqIEVtaXRzIHRoZSBzZWxlY3RlZCBsYW5ndWFnZSBjb2RlLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIGxhbmd1YWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLyoqIFBvcG92ZXIgc2VsZWN0b3IgY29uZmlndXJhdGlvbiAoZm9yIGRlZmF1bHQgbW9kZSkgKi9cbiAgcG9wb3ZlclByb3BzOiBQb3BvdmVyU2VsZWN0b3JNZXRhZGF0YTtcblxuICBpY29uUG9wb3Zlck9wZW4gPSBmYWxzZTtcbiAgaWNvblBvcG92ZXJFdmVudD86IEV2ZW50O1xuXG4gIC8qKiBBdmFpbGFibGUgbGFuZ3VhZ2VzIChleHBvc2VkIGZvciBpY29uIG1vZGUgdGVtcGxhdGUpICovXG4gIGF2YWlsYWJsZUxhbmd1YWdlczogc3RyaW5nW10gPSBbXTtcblxuICAvKiogQ3VycmVudCBsYW5ndWFnZSAoZXhwb3NlZCBmb3IgaWNvbiBtb2RlIHRlbXBsYXRlKSAqL1xuICBjdXJyZW50TGFuZ3VhZ2U6IHN0cmluZyA9ICcnO1xuXG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG5cbiAgLyoqIERlZmF1bHQgbGFuZ3VhZ2UgZGlzcGxheSBuYW1lcyAqL1xuICByZWFkb25seSBkZWZhdWx0TGFuZ3VhZ2VOYW1lczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICBlczogJ0VzcGHDsW9sJyxcbiAgICBlbjogJ0VuZ2xpc2gnLFxuICAgIGZyOiAnRnJhbsOnYWlzJyxcbiAgICBkZTogJ0RldXRzY2gnLFxuICB9O1xuXG4gIC8qKiBEZWZhdWx0IGZsYWcgaWNvbnMgZm9yIGxhbmd1YWdlcyAqL1xuICByZWFkb25seSBkZWZhdWx0TGFuZ3VhZ2VGbGFnczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICBlczogJ/Cfh6rwn4e4JyxcbiAgICBlbjogJ/Cfh7rwn4e4JyxcbiAgICBmcjogJ/Cfh6vwn4e3JyxcbiAgICBkZTogJ/Cfh6nwn4eqJyxcbiAgfTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBhZGRJY29ucyh7IGxhbmd1YWdlLCBnbG9iZU91dGxpbmUsIGNoZWNrbWFyayB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY3VycmVudExhbmd1YWdlID0gdGhpcy5pMThuLmxhbmcoKTtcbiAgICB0aGlzLmF2YWlsYWJsZUxhbmd1YWdlcyA9IHRoaXMucHJvcHMuYXZhaWxhYmxlTGFuZ3VhZ2VzIHx8IHRoaXMuaTE4bi5zdXBwb3J0ZWRMYW5ndWFnZXMoKTtcbiAgICB0aGlzLmluaXRpYWxpemVQb3BvdmVyUHJvcHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVBvcG92ZXJQcm9wcygpIHtcbiAgICBjb25zdCBjdXJyZW50TGFuZ3VhZ2UgPSB0aGlzLmkxOG4ubGFuZygpO1xuICAgIGNvbnN0IGF2YWlsYWJsZUxhbmd1YWdlcyA9IHRoaXMucHJvcHMuYXZhaWxhYmxlTGFuZ3VhZ2VzIHx8IHRoaXMuaTE4bi5zdXBwb3J0ZWRMYW5ndWFnZXMoKTtcblxuICAgIC8vIENvbnZlcnQgbGFuZ3VhZ2UgY29kZXMgdG8gcG9wb3ZlciBvcHRpb25zXG4gICAgY29uc3Qgb3B0aW9uczogUG9wb3Zlck9wdGlvbltdID0gYXZhaWxhYmxlTGFuZ3VhZ2VzLm1hcChsYW5nID0+ICh7XG4gICAgICB2YWx1ZTogbGFuZyxcbiAgICAgIGxhYmVsOiB0aGlzLmdldExhbmd1YWdlRGlzcGxheU5hbWUobGFuZyksXG4gICAgfSkpO1xuXG4gICAgLy8gQ3JlYXRlIHBvcG92ZXIgY29uZmlndXJhdGlvblxuICAgIHRoaXMucG9wb3ZlclByb3BzID0ge1xuICAgICAgb3B0aW9ucyxcbiAgICAgIHNlbGVjdGVkVmFsdWU6IGN1cnJlbnRMYW5ndWFnZSxcbiAgICAgIGxhYmVsOiB0aGlzLnByb3BzLnNob3dMYWJlbCA9PT0gdHJ1ZSA/IHRoaXMucHJvcHMubGFiZWwgfHwgdGhpcy5pMThuLnQoJ2xhbmd1YWdlJykgOiB1bmRlZmluZWQsXG4gICAgICBpY29uOiAnbGFuZ3VhZ2UnLFxuICAgICAgcGxhY2Vob2xkZXI6IHRoaXMuaTE4bi50KCdzZWxlY3RMYW5ndWFnZScpLFxuICAgICAgY29sb3I6IHRoaXMucHJvcHMuY29sb3IgfHwgJ21lZGl1bScsXG4gICAgICBzaXplOiB0aGlzLnByb3BzLnNpemUgfHwgJ2RlZmF1bHQnLFxuICAgICAgLy8gRWwgYm9yZGUgYWhvcmEgbG8gZGlidWphIGVsIHBvcG92ZXItc2VsZWN0b3IgZW4gOjpwYXJ0KG5hdGl2ZSkgKGRhcmtcbiAgICAgIC8vIGN1YWRyYWRvLCBwcmltYXJ5IGFsIGFicmlyKSwgaW5kZXBlbmRpZW50ZSBkZWwgZmlsbC4gJ291dGxpbmUnIGRlamEgZWxcbiAgICAgIC8vIGZvbmRvIHRyYW5zcGFyZW50ZSwgY29uc2lzdGVudGUgY29uIGxvcyBzZWxlY3RvcmVzIGRlIHRlbWEgeSB0YW1hw7FvLlxuICAgICAgZmlsbDogdGhpcy5wcm9wcy5maWxsIHx8ICdvdXRsaW5lJyxcbiAgICAgIHNoYXBlOiB0aGlzLnByb3BzLnNoYXBlLFxuICAgICAgZXhwYW5kOiB0aGlzLnByb3BzLmV4cGFuZCxcbiAgICAgIGRpc2FibGVkOiB0aGlzLnByb3BzLmRpc2FibGVkIHx8IGZhbHNlLFxuICAgICAgaW50ZXJmYWNlOiAncG9wb3ZlcicsXG4gICAgICBzaG93Q2hlY2ttYXJrOiB0cnVlLFxuICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgY2FuY2VsVGV4dDogdGhpcy5pMThuLnQoJ2NhbmNlbCcpLFxuICAgICAgb2tUZXh0OiB0aGlzLmkxOG4udCgnb2snKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqIEdldCBkaXNwbGF5IG5hbWUgZm9yIGEgbGFuZ3VhZ2UgY29kZSAocHVibGljIGZvciB0ZW1wbGF0ZSBhY2Nlc3MpICovXG4gIGdldExhbmd1YWdlRGlzcGxheU5hbWUobGFuZ3VhZ2VDb2RlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIFVzZSBjdXN0b20gbmFtZXMgaWYgcHJvdmlkZWRcbiAgICBpZiAodGhpcy5wcm9wcy5jdXN0b21MYW5ndWFnZU5hbWVzPy5bbGFuZ3VhZ2VDb2RlXSkge1xuICAgICAgY29uc3QgY3VzdG9tTmFtZSA9IHRoaXMucHJvcHMuY3VzdG9tTGFuZ3VhZ2VOYW1lc1tsYW5ndWFnZUNvZGVdO1xuICAgICAgY29uc3QgZmxhZyA9IHRoaXMucHJvcHMuc2hvd0ZsYWdzID8gdGhpcy5kZWZhdWx0TGFuZ3VhZ2VGbGFnc1tsYW5ndWFnZUNvZGVdIDogJyc7XG4gICAgICByZXR1cm4gZmxhZyA/IGAke2ZsYWd9ICR7Y3VzdG9tTmFtZX1gIDogY3VzdG9tTmFtZTtcbiAgICB9XG5cbiAgICAvLyBVc2UgZGVmYXVsdCBuYW1lc1xuICAgIGNvbnN0IGRlZmF1bHROYW1lID0gdGhpcy5kZWZhdWx0TGFuZ3VhZ2VOYW1lc1tsYW5ndWFnZUNvZGVdIHx8IGxhbmd1YWdlQ29kZS50b1VwcGVyQ2FzZSgpO1xuICAgIGNvbnN0IGZsYWcgPSB0aGlzLnByb3BzLnNob3dGbGFncyA/IHRoaXMuZGVmYXVsdExhbmd1YWdlRmxhZ3NbbGFuZ3VhZ2VDb2RlXSA6ICcnO1xuICAgIHJldHVybiBmbGFnID8gYCR7ZmxhZ30gJHtkZWZhdWx0TmFtZX1gIDogZGVmYXVsdE5hbWU7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGxhbmd1YWdlIHNlbGVjdGlvbiBjaGFuZ2UuXG4gICAqIEBwYXJhbSBzZWxlY3RlZExhbmd1YWdlIC0gVGhlIHNlbGVjdGVkIGxhbmd1YWdlIGNvZGUocylcbiAgICovXG4gIG9uTGFuZ3VhZ2VDaGFuZ2Uoc2VsZWN0ZWRMYW5ndWFnZTogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICBpZiAodHlwZW9mIHNlbGVjdGVkTGFuZ3VhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCBuZXdMYW5nID0gc2VsZWN0ZWRMYW5ndWFnZSBhcyBJMThuTGFuZztcblxuICAgICAgLy8gVXBkYXRlIGN1cnJlbnQgbGFuZ3VhZ2UgZm9yIGljb24gbW9kZVxuICAgICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2UgPSBuZXdMYW5nO1xuXG4gICAgICAvLyBFbWl0IHRoZSBjaGFuZ2UgZXZlbnRcbiAgICAgIHRoaXMubGFuZ3VhZ2VDaGFuZ2UuZW1pdChzZWxlY3RlZExhbmd1YWdlKTtcblxuICAgICAgLy8gU2V0IHRoZSBuZXcgbGFuZ3VhZ2UgKHJlYWN0aXZlIGJ5IGRlZmF1bHQsIHJlbG9hZCBpZiBmb3JjZVJlbG9hZCBpcyB0cnVlKVxuICAgICAgdGhpcy5pMThuLnNldExhbmd1YWdlKG5ld0xhbmcsIHRoaXMucHJvcHMuZm9yY2VSZWxvYWQpO1xuXG4gICAgICAvLyBVcGRhdGUgcG9wb3ZlciBzZWxlY3RlZCB2YWx1ZSBmb3IgcmVhY3RpdmUgVUkgKGRlZmF1bHQgbW9kZSlcbiAgICAgIGlmICh0aGlzLnBvcG92ZXJQcm9wcykge1xuICAgICAgICB0aGlzLnBvcG92ZXJQcm9wcyA9IHsgLi4udGhpcy5wb3BvdmVyUHJvcHMsIHNlbGVjdGVkVmFsdWU6IG5ld0xhbmcgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvcGVuSWNvblBvcG92ZXIoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5pY29uUG9wb3ZlckV2ZW50ID0gZXZlbnQ7XG4gICAgdGhpcy5pY29uUG9wb3Zlck9wZW4gPSB0cnVlO1xuICB9XG5cbiAgY2xvc2VJY29uUG9wb3ZlcigpOiB2b2lkIHtcbiAgICB0aGlzLmljb25Qb3BvdmVyT3BlbiA9IGZhbHNlO1xuICB9XG59XG4iXX0=