@energinet/watt 3.0.33 → 3.0.34
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/esm2022/picker/__shared/watt-picker-base.js +11 -110
- package/esm2022/picker/datepicker/watt-datepicker.component.js +45 -151
- package/esm2022/picker/timepicker/watt-timepicker.component.js +19 -91
- package/package.json +1 -1
- package/picker/__shared/watt-picker-base.d.ts +5 -129
- package/picker/datepicker/watt-datepicker.component.d.ts +9 -93
- package/picker/timepicker/watt-timepicker.component.d.ts +6 -69
|
@@ -25,52 +25,20 @@ export class WattPickerBase {
|
|
|
25
25
|
elementRef = inject(ElementRef);
|
|
26
26
|
changeDetectionRef = inject(ChangeDetectorRef);
|
|
27
27
|
ngControl = inject(NgControl, { optional: true });
|
|
28
|
-
/**
|
|
29
|
-
* @ignore
|
|
30
|
-
*/
|
|
31
28
|
static nextId = 0;
|
|
32
|
-
/**
|
|
33
|
-
* @ignore
|
|
34
|
-
*/
|
|
35
29
|
id;
|
|
36
|
-
/**
|
|
37
|
-
* @ignore
|
|
38
|
-
*/
|
|
39
30
|
initialValue = null;
|
|
40
|
-
/**
|
|
41
|
-
* @ignore
|
|
42
|
-
*/
|
|
43
31
|
focused = false;
|
|
44
|
-
/**
|
|
45
|
-
* @ignore
|
|
46
|
-
*/
|
|
47
32
|
controlType = 'mat-date-range-input'; // We keep the controlType of Material Date Range Input as is, to keep some styling.
|
|
48
|
-
/**
|
|
49
|
-
* @ignore
|
|
50
|
-
*/
|
|
51
33
|
stateChanges = new Subject();
|
|
52
|
-
/**
|
|
53
|
-
* @ignore
|
|
54
|
-
*/
|
|
55
34
|
_destroyRef = inject(DestroyRef);
|
|
56
|
-
// eslint-disable-next-line @angular-eslint/no-input-rename
|
|
57
|
-
userAriaDescribedBy;
|
|
58
|
-
/**
|
|
59
|
-
* @ignore
|
|
60
|
-
*/
|
|
61
35
|
get placeholder() {
|
|
62
36
|
return this._placeholder;
|
|
63
37
|
}
|
|
64
|
-
/**
|
|
65
|
-
* @ignore
|
|
66
|
-
*/
|
|
67
38
|
set placeholder(value) {
|
|
68
39
|
this._placeholder = value;
|
|
69
40
|
this.stateChanges.next();
|
|
70
41
|
}
|
|
71
|
-
/**
|
|
72
|
-
* @ignore
|
|
73
|
-
*/
|
|
74
42
|
get value() {
|
|
75
43
|
if (this.ngControl?.valid) {
|
|
76
44
|
const { value: { start, end }, } = this.ngControl;
|
|
@@ -78,20 +46,22 @@ export class WattPickerBase {
|
|
|
78
46
|
}
|
|
79
47
|
return null;
|
|
80
48
|
}
|
|
81
|
-
/**
|
|
82
|
-
* @ignore
|
|
83
|
-
*/
|
|
84
49
|
set value(value) {
|
|
85
|
-
const inputNotToBeInTheDocument = !this.range ? !this.input : !this.startInput;
|
|
50
|
+
const inputNotToBeInTheDocument = !this.range ? !this.input() : !this.startInput();
|
|
86
51
|
if (inputNotToBeInTheDocument) {
|
|
87
52
|
this.initialValue = value;
|
|
88
53
|
return;
|
|
89
54
|
}
|
|
55
|
+
const startInput = this.startInput();
|
|
56
|
+
const endInput = this.endInput();
|
|
57
|
+
const input = this.input();
|
|
58
|
+
if (!startInput || !endInput || !input)
|
|
59
|
+
return;
|
|
90
60
|
if (this.range) {
|
|
91
|
-
this.setRangeValue(value,
|
|
61
|
+
this.setRangeValue(value, startInput.nativeElement, endInput.nativeElement);
|
|
92
62
|
}
|
|
93
63
|
else {
|
|
94
|
-
this.setSingleValue(value,
|
|
64
|
+
this.setSingleValue(value, input.nativeElement);
|
|
95
65
|
}
|
|
96
66
|
this.stateChanges.next();
|
|
97
67
|
}
|
|
@@ -101,47 +71,23 @@ export class WattPickerBase {
|
|
|
101
71
|
get range() {
|
|
102
72
|
return this._range;
|
|
103
73
|
}
|
|
104
|
-
/**
|
|
105
|
-
* @ignore
|
|
106
|
-
*/
|
|
107
74
|
_range = false;
|
|
108
|
-
/**
|
|
109
|
-
* @ignore
|
|
110
|
-
*/
|
|
111
75
|
get required() {
|
|
112
76
|
return this._required;
|
|
113
77
|
}
|
|
114
|
-
/**
|
|
115
|
-
* @ignore
|
|
116
|
-
*/
|
|
117
78
|
set required(value) {
|
|
118
79
|
this._required = coerceBooleanProperty(value);
|
|
119
80
|
this.stateChanges.next();
|
|
120
81
|
}
|
|
121
|
-
/**
|
|
122
|
-
* @ignore
|
|
123
|
-
*/
|
|
124
82
|
_required = false;
|
|
125
|
-
/**
|
|
126
|
-
* @ignore
|
|
127
|
-
*/
|
|
128
83
|
get disabled() {
|
|
129
84
|
return this._disabled;
|
|
130
85
|
}
|
|
131
|
-
/**
|
|
132
|
-
* @ignore
|
|
133
|
-
*/
|
|
134
86
|
set disabled(value) {
|
|
135
87
|
this._disabled = coerceBooleanProperty(value);
|
|
136
88
|
this.stateChanges.next();
|
|
137
89
|
}
|
|
138
|
-
/**
|
|
139
|
-
* @ignore
|
|
140
|
-
*/
|
|
141
90
|
_disabled = false;
|
|
142
|
-
/**
|
|
143
|
-
* @ignore
|
|
144
|
-
*/
|
|
145
91
|
get empty() {
|
|
146
92
|
if (this.range) {
|
|
147
93
|
return !this.ngControl?.value?.start && !this.ngControl?.value?.end;
|
|
@@ -150,15 +96,9 @@ export class WattPickerBase {
|
|
|
150
96
|
return this.ngControl?.value?.length === 0;
|
|
151
97
|
}
|
|
152
98
|
}
|
|
153
|
-
/**
|
|
154
|
-
* @ignore
|
|
155
|
-
*/
|
|
156
99
|
get errorState() {
|
|
157
100
|
return !!this.ngControl?.invalid && !!this.ngControl?.touched;
|
|
158
101
|
}
|
|
159
|
-
/**
|
|
160
|
-
* @ignore
|
|
161
|
-
*/
|
|
162
102
|
get shouldLabelFloat() {
|
|
163
103
|
return this.focused || !this.empty;
|
|
164
104
|
}
|
|
@@ -177,9 +117,6 @@ export class WattPickerBase {
|
|
|
177
117
|
ngOnInit() {
|
|
178
118
|
this.control = this.ngControl?.control;
|
|
179
119
|
}
|
|
180
|
-
/**
|
|
181
|
-
* @ignore
|
|
182
|
-
*/
|
|
183
120
|
ngAfterViewInit() {
|
|
184
121
|
if (this.initialValue) {
|
|
185
122
|
this.writeValue(this.initialValue);
|
|
@@ -191,61 +128,34 @@ export class WattPickerBase {
|
|
|
191
128
|
this.initSingleInput();
|
|
192
129
|
}
|
|
193
130
|
}
|
|
194
|
-
/**
|
|
195
|
-
* @ignore
|
|
196
|
-
*/
|
|
197
131
|
ngOnDestroy() {
|
|
198
132
|
this.stateChanges.complete();
|
|
199
133
|
}
|
|
200
|
-
/**
|
|
201
|
-
* @ignore
|
|
202
|
-
*/
|
|
203
134
|
setDescribedByIds(ids) {
|
|
204
135
|
this.elementRef.nativeElement.setAttribute('aria-describedby', ids.join(' '));
|
|
205
136
|
}
|
|
206
|
-
/**
|
|
207
|
-
* @ignore
|
|
208
|
-
*/
|
|
209
137
|
onContainerClick() {
|
|
210
138
|
// Intentionally left empty
|
|
211
139
|
}
|
|
212
|
-
/**
|
|
213
|
-
* @ignore
|
|
214
|
-
*/
|
|
215
140
|
writeValue(value) {
|
|
216
141
|
this.value = value;
|
|
217
142
|
}
|
|
218
|
-
/**
|
|
219
|
-
* @ignore
|
|
220
|
-
*/
|
|
221
143
|
registerOnChange(onChangeFn) {
|
|
222
144
|
this.changeParentValue = onChangeFn;
|
|
223
145
|
}
|
|
224
|
-
/**
|
|
225
|
-
* @ignore
|
|
226
|
-
*/
|
|
227
146
|
registerOnTouched(onTouchFn) {
|
|
228
147
|
this.markParentControlAsTouched = onTouchFn;
|
|
229
148
|
}
|
|
230
|
-
/**
|
|
231
|
-
* @ignore
|
|
232
|
-
*/
|
|
233
149
|
setDisabledState(isDisabled) {
|
|
234
150
|
this.disabled = isDisabled;
|
|
235
151
|
this.changeDetectionRef.detectChanges();
|
|
236
152
|
}
|
|
237
|
-
/**
|
|
238
|
-
* @ignore
|
|
239
|
-
*/
|
|
240
153
|
onFocusIn() {
|
|
241
154
|
if (!this.focused) {
|
|
242
155
|
this.focused = true;
|
|
243
156
|
this.stateChanges.next();
|
|
244
157
|
}
|
|
245
158
|
}
|
|
246
|
-
/**
|
|
247
|
-
* @ignore
|
|
248
|
-
*/
|
|
249
159
|
onFocusOut(event) {
|
|
250
160
|
const id = this.elementRef.nativeElement.attributes.getNamedItem('aria-owns');
|
|
251
161
|
const overlay = id ? document.getElementById(id.value) : null;
|
|
@@ -256,28 +166,19 @@ export class WattPickerBase {
|
|
|
256
166
|
this.stateChanges.next();
|
|
257
167
|
}
|
|
258
168
|
}
|
|
259
|
-
/**
|
|
260
|
-
* @ignore
|
|
261
|
-
*/
|
|
262
169
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
263
170
|
changeParentValue = (value) => {
|
|
264
171
|
// Intentionally left empty
|
|
265
172
|
};
|
|
266
|
-
/**
|
|
267
|
-
* @ignore
|
|
268
|
-
*/
|
|
269
173
|
markParentControlAsTouched = () => {
|
|
270
174
|
// Intentionally left empty
|
|
271
175
|
};
|
|
272
176
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattPickerBase, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
|
|
273
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.3", type: WattPickerBase, isStandalone: true, inputs: {
|
|
177
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.3", type: WattPickerBase, isStandalone: true, inputs: { value: "value", range: "range", required: "required", disabled: "disabled" }, host: { properties: { "attr.watt-field-disabled": "this.disabled" } }, ngImport: i0 });
|
|
274
178
|
}
|
|
275
179
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: WattPickerBase, decorators: [{
|
|
276
180
|
type: Directive
|
|
277
|
-
}], ctorParameters: () => [{ type: undefined }], propDecorators: {
|
|
278
|
-
type: Input,
|
|
279
|
-
args: ['aria-describedby']
|
|
280
|
-
}], value: [{
|
|
181
|
+
}], ctorParameters: () => [{ type: undefined }], propDecorators: { value: [{
|
|
281
182
|
type: Input
|
|
282
183
|
}], range: [{
|
|
283
184
|
type: Input
|
|
@@ -289,4 +190,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
289
190
|
}, {
|
|
290
191
|
type: Input
|
|
291
192
|
}] } });
|
|
292
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC1waWNrZXItYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL3BpY2tlci9fX3NoYXJlZC93YXR0LXBpY2tlci1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQjtBQUNqQjs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxZQUFZO0FBQ1osT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsVUFBVSxFQUNWLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFHTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFxQyxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU0vQixNQUFNLE9BQWdCLGNBQWM7SUFHeEIsVUFBVSxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUM7SUFDekQsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDL0MsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQWlCNUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUVsQjs7T0FFRztJQUNILEVBQUUsQ0FBUztJQUVYOztPQUVHO0lBQ0gsWUFBWSxHQUFvQixJQUFJLENBQUM7SUFFckM7O09BRUc7SUFDSCxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBRWhCOztPQUVHO0lBQ0gsV0FBVyxHQUFHLHNCQUFzQixDQUFDLENBQUMsb0ZBQW9GO0lBRTFIOztPQUVHO0lBQ0gsWUFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFbkM7O09BRUc7SUFDTyxXQUFXLEdBQUcs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KipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgMjAyMCBFbmVyZ2luZXQgRGF0YUh1YiBBL1NcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlMlwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vLyNlbmRyZWdpb25cbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEZXN0cm95UmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgV2F0dERhdGVSYW5nZSB9IGZyb20gJ0BlbmVyZ2luZXQvd2F0dC9jb3JlL2RhdGUnO1xuaW1wb3J0IHsgV2F0dFBpY2tlclZhbHVlIH0gZnJvbSAnLi93YXR0LXBpY2tlci12YWx1ZSc7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFdhdHRQaWNrZXJCYXNlXG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG57XG4gIHByb3RlY3RlZCBlbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcbiAgcHJvdGVjdGVkIGNoYW5nZURldGVjdGlvblJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByb3RlY3RlZCBuZ0NvbnRyb2wgPSBpbmplY3QoTmdDb250cm9sLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBhYnN0cmFjdCBpbnB1dDogRWxlbWVudFJlZjtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgYWJzdHJhY3Qgc3RhcnRJbnB1dDogRWxlbWVudFJlZjtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgYWJzdHJhY3QgZW5kSW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHN0YXRpYyBuZXh0SWQgPSAwO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBpbml0aWFsVmFsdWU6IFdhdHRQaWNrZXJWYWx1ZSA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGZvY3VzZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY29udHJvbFR5cGUgPSAnbWF0LWRhdGUtcmFuZ2UtaW5wdXQnOyAvLyBXZSBrZWVwIHRoZSBjb250cm9sVHlwZSBvZiBNYXRlcmlhbCBEYXRlIFJhbmdlIElucHV0IGFzIGlzLCB0byBrZWVwIHNvbWUgc3R5bGluZy5cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgc3RhdGVDaGFuZ2VzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gIEBJbnB1dCgnYXJpYS1kZXNjcmliZWRieScpIHVzZXJBcmlhRGVzY3JpYmVkQnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGdldCBwbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9wbGFjZWhvbGRlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gdmFsdWU7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBfcGxhY2Vob2xkZXI6IHN0cmluZztcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IHZhbHVlKCk6IFdhdHREYXRlUmFuZ2UgfCBudWxsIHtcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2w/LnZhbGlkKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHZhbHVlOiB7IHN0YXJ0LCBlbmQgfSxcbiAgICAgIH0gPSB0aGlzLm5nQ29udHJvbDtcblxuICAgICAgcmV0dXJuIHsgc3RhcnQsIGVuZCB9O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHNldCB2YWx1ZSh2YWx1ZTogV2F0dFBpY2tlclZhbHVlKSB7XG4gICAgY29uc3QgaW5wdXROb3RUb0JlSW5UaGVEb2N1bWVudCA9ICF0aGlzLnJhbmdlID8gIXRoaXMuaW5wdXQgOiAhdGhpcy5zdGFydElucHV0O1xuXG4gICAgaWYgKGlucHV0Tm90VG9CZUluVGhlRG9jdW1lbnQpIHtcbiAgICAgIHRoaXMuaW5pdGlhbFZhbHVlID0gdmFsdWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmFuZ2UpIHtcbiAgICAgIHRoaXMuc2V0UmFuZ2VWYWx1ZShcbiAgICAgICAgdmFsdWUgYXMgV2F0dERhdGVSYW5nZSxcbiAgICAgICAgdGhpcy5zdGFydElucHV0Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgIHRoaXMuZW5kSW5wdXQubmF0aXZlRWxlbWVudFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRTaW5nbGVWYWx1ZShcbiAgICAgICAgdmFsdWUgYXMgRXhjbHVkZTxXYXR0UGlja2VyVmFsdWUsIFdhdHREYXRlUmFuZ2U+LFxuICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnRcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHJhbmdlKHJhbmdlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmFuZ2UgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkocmFuZ2UpO1xuICB9XG4gIGdldCByYW5nZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2U7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBfcmFuZ2UgPSBmYWxzZTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBzZXQgcmVxdWlyZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBfcmVxdWlyZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLndhdHQtZmllbGQtZGlzYWJsZWQnKVxuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBnZXQgZW1wdHkoKSB7XG4gICAgaWYgKHRoaXMucmFuZ2UpIHtcbiAgICAgIHJldHVybiAhdGhpcy5uZ0NvbnRyb2w/LnZhbHVlPy5zdGFydCAmJiAhdGhpcy5uZ0NvbnRyb2w/LnZhbHVlPy5lbmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm5nQ29udHJvbD8udmFsdWU/Lmxlbmd0aCA9PT0gMDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgZ2V0IGVycm9yU3RhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5uZ0NvbnRyb2w/LmludmFsaWQgJiYgISF0aGlzLm5nQ29udHJvbD8udG91Y2hlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBnZXQgc2hvdWxkTGFiZWxGbG9hdCgpIHtcbiAgICByZXR1cm4gdGhpcy5mb2N1c2VkIHx8ICF0aGlzLmVtcHR5O1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNvbnRyb2w6IEZvcm1Db250cm9sIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoaWQ6IHN0cmluZykge1xuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2lkJywgaWQpO1xuXG4gICAgaWYgKHRoaXMubmdDb250cm9sICE9IG51bGwpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbCA9IHRoaXMubmdDb250cm9sPy5jb250cm9sIGFzIEZvcm1Db250cm9sO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5pbml0aWFsVmFsdWUpIHtcbiAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLmluaXRpYWxWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmFuZ2UpIHtcbiAgICAgIHRoaXMuaW5pdFJhbmdlSW5wdXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0U2luZ2xlSW5wdXQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgaW5pdFJhbmdlSW5wdXQoKTogdm9pZDtcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGluaXRTaW5nbGVJbnB1dCgpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2V0U2luZ2xlVmFsdWUoXG4gICAgdmFsdWU6IEV4Y2x1ZGU8V2F0dFBpY2tlclZhbHVlLCBXYXR0RGF0ZVJhbmdlPixcbiAgICBpbnB1dDogSFRNTElucHV0RWxlbWVudFxuICApOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2V0UmFuZ2VWYWx1ZShcbiAgICB2YWx1ZTogV2F0dERhdGVSYW5nZSxcbiAgICBzdGFydElucHV0OiBIVE1MSW5wdXRFbGVtZW50LFxuICAgIGVuZElucHV0OiBIVE1MSW5wdXRFbGVtZW50XG4gICk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHNldERlc2NyaWJlZEJ5SWRzKGlkczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknLCBpZHMuam9pbignICcpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkNvbnRhaW5lckNsaWNrKCkge1xuICAgIC8vIEludGVudGlvbmFsbHkgbGVmdCBlbXB0eVxuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHdyaXRlVmFsdWUodmFsdWU6IFdhdHRQaWNrZXJWYWx1ZSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICByZWdpc3Rlck9uQ2hhbmdlKG9uQ2hhbmdlRm46ICh2YWx1ZTogc3RyaW5nIHwgV2F0dERhdGVSYW5nZSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlUGFyZW50VmFsdWUgPSBvbkNoYW5nZUZuO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKG9uVG91Y2hGbjogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMubWFya1BhcmVudENvbnRyb2xBc1RvdWNoZWQgPSBvblRvdWNoRm47XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rpb25SZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uRm9jdXNJbigpIHtcbiAgICBpZiAoIXRoaXMuZm9jdXNlZCkge1xuICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25Gb2N1c091dChldmVudDogRm9jdXNFdmVudCkge1xuICAgIGNvbnN0IGlkID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oJ2FyaWEtb3ducycpO1xuICAgIGNvbnN0IG92ZXJsYXkgPSBpZCA/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkLnZhbHVlKSA6IG51bGw7XG4gICAgY29uc3QgaXNDaGlsZCA9IG92ZXJsYXk/LmNvbnRhaW5zKGV2ZW50LnJlbGF0ZWRUYXJnZXQgYXMgRWxlbWVudCk7XG5cbiAgICBpZiAoIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnJlbGF0ZWRUYXJnZXQgYXMgRWxlbWVudCkgJiYgIWlzQ2hpbGQpIHtcbiAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5tYXJrUGFyZW50Q29udHJvbEFzVG91Y2hlZCgpO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIHByb3RlY3RlZCBjaGFuZ2VQYXJlbnRWYWx1ZSA9ICh2YWx1ZTogc3RyaW5nIHwgV2F0dERhdGVSYW5nZSk6IHZvaWQgPT4ge1xuICAgIC8vIEludGVudGlvbmFsbHkgbGVmdCBlbXB0eVxuICB9O1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgbWFya1BhcmVudENvbnRyb2xBc1RvdWNoZWQgPSAoKTogdm9pZCA9PiB7XG4gICAgLy8gSW50ZW50aW9uYWxseSBsZWZ0IGVtcHR5XG4gIH07XG59XG4iXX0=
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0dC1waWNrZXItYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvd2F0dC9wYWNrYWdlL3BpY2tlci9fX3NoYXJlZC93YXR0LXBpY2tlci1iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGlCQUFpQjtBQUNqQjs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxZQUFZO0FBQ1osT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsVUFBVSxFQUNWLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFJTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFxQyxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU0vQixNQUFNLE9BQWdCLGNBQWM7SUFHeEIsVUFBVSxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUM7SUFDekQsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDL0MsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQVE1RCxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUVsQixFQUFFLENBQVM7SUFFWCxZQUFZLEdBQW9CLElBQUksQ0FBQztJQUVyQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBRWhCLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQyxDQUFDLG9GQUFvRjtJQUUxSCxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUV6QixXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRTNDLElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixD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RCxNQUFNLE9BQU8sR0FBRyxPQUFPLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxhQUF3QixDQUFDLENBQUM7UUFFbEUsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsYUFBd0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEYsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDckIsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVELDZEQUE2RDtJQUNuRCxpQkFBaUIsR0FBRyxDQUFDLEtBQTZCLEVBQVEsRUFBRTtRQUNwRSwyQkFBMkI7SUFDN0IsQ0FBQyxDQUFDO0lBRVEsMEJBQTBCLEdBQUcsR0FBUyxFQUFFO1FBQ2hELDJCQUEyQjtJQUM3QixDQUFDLENBQUM7dUdBbE9rQixjQUFjOzJGQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBRG5DLFNBQVM7MkVBd0NKLEtBQUs7c0JBRFIsS0FBSztnQkFxQ0YsS0FBSztzQkFEUixLQUFLO2dCQVdGLFFBQVE7c0JBRFgsS0FBSztnQkFjRixRQUFRO3NCQUZYLFdBQVc7dUJBQUMsMEJBQTBCOztzQkFDdEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vI3JlZ2lvbiBMaWNlbnNlXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgMjAyMCBFbmVyZ2luZXQgRGF0YUh1YiBBL1NcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlMlwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG4vLyNlbmRyZWdpb25cbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEZXN0cm95UmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFNpZ25hbCxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtQ29udHJvbCwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBXYXR0RGF0ZVJhbmdlIH0gZnJvbSAnQGVuZXJnaW5ldC93YXR0L2NvcmUvZGF0ZSc7XG5pbXBvcnQgeyBXYXR0UGlja2VyVmFsdWUgfSBmcm9tICcuL3dhdHQtcGlja2VyLXZhbHVlJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgV2F0dFBpY2tlckJhc2VcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3JcbntcbiAgcHJvdGVjdGVkIGVsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuICBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0aW9uUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJvdGVjdGVkIG5nQ29udHJvbCA9IGluamVjdChOZ0NvbnRyb2wsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGlucHV0OiBTaWduYWw8RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PiB8IHVuZGVmaW5lZD47XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHN0YXJ0SW5wdXQ6IFNpZ25hbDxFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+IHwgdW5kZWZpbmVkPjtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZW5kSW5wdXQ6IFNpZ25hbDxFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+IHwgdW5kZWZpbmVkPjtcblxuICBzdGF0aWMgbmV4dElkID0gMDtcblxuICBpZDogc3RyaW5nO1xuXG4gIGluaXRpYWxWYWx1ZTogV2F0dFBpY2tlclZhbHVlID0gbnVsbDtcblxuICBmb2N1c2VkID0gZmFsc2U7XG5cbiAgY29udHJvbFR5cGUgPSAnbWF0LWRhdGUtcmFuZ2UtaW5wdXQnOyAvLyBXZSBrZWVwIHRoZSBjb250cm9sVHlwZSBvZiBNYXRlcmlhbCBEYXRlIFJhbmdlIElucHV0IGFzIGlzLCB0byBrZWVwIHNvbWUgc3R5bGluZy5cblxuICBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByb3RlY3RlZCBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICBnZXQgcGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcGxhY2Vob2xkZXI7XG4gIH1cblxuICBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gdmFsdWU7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IF9wbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpOiBXYXR0RGF0ZVJhbmdlIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMubmdDb250cm9sPy52YWxpZCkge1xuICAgICAgY29uc3Qge1xuICAgICAgICB2YWx1ZTogeyBzdGFydCwgZW5kIH0sXG4gICAgICB9ID0gdGhpcy5uZ0NvbnRyb2w7XG5cbiAgICAgIHJldHVybiB7IHN0YXJ0LCBlbmQgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHNldCB2YWx1ZSh2YWx1ZTogV2F0dFBpY2tlclZhbHVlKSB7XG4gICAgY29uc3QgaW5wdXROb3RUb0JlSW5UaGVEb2N1bWVudCA9ICF0aGlzLnJhbmdlID8gIXRoaXMuaW5wdXQoKSA6ICF0aGlzLnN0YXJ0SW5wdXQoKTtcblxuICAgIGlmIChpbnB1dE5vdFRvQmVJblRoZURvY3VtZW50KSB7XG4gICAgICB0aGlzLmluaXRpYWxWYWx1ZSA9IHZhbHVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0SW5wdXQgPSB0aGlzLnN0YXJ0SW5wdXQoKTtcbiAgICBjb25zdCBlbmRJbnB1dCA9IHRoaXMuZW5kSW5wdXQoKTtcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuaW5wdXQoKTtcblxuICAgIGlmICghc3RhcnRJbnB1dCB8fCAhZW5kSW5wdXQgfHwgIWlucHV0KSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5yYW5nZSkge1xuICAgICAgdGhpcy5zZXRSYW5nZVZhbHVlKHZhbHVlIGFzIFdhdHREYXRlUmFuZ2UsIHN0YXJ0SW5wdXQubmF0aXZlRWxlbWVudCwgZW5kSW5wdXQubmF0aXZlRWxlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0U2luZ2xlVmFsdWUodmFsdWUgYXMgRXhjbHVkZTxXYXR0UGlja2VyVmFsdWUsIFdhdHREYXRlUmFuZ2U+LCBpbnB1dC5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgcmFuZ2UocmFuZ2U6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yYW5nZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShyYW5nZSk7XG4gIH1cbiAgZ2V0IHJhbmdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yYW5nZTtcbiAgfVxuXG4gIHByaXZhdGUgX3JhbmdlID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcbiAgfVxuXG4gIHNldCByZXF1aXJlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlcXVpcmVkID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLndhdHQtZmllbGQtZGlzYWJsZWQnKVxuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG5cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICBnZXQgZW1wdHkoKSB7XG4gICAgaWYgKHRoaXMucmFuZ2UpIHtcbiAgICAgIHJldHVybiAhdGhpcy5uZ0NvbnRyb2w/LnZhbHVlPy5zdGFydCAmJiAhdGhpcy5uZ0NvbnRyb2w/LnZhbHVlPy5lbmQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm5nQ29udHJvbD8udmFsdWU/Lmxlbmd0aCA9PT0gMDtcbiAgICB9XG4gIH1cblxuICBnZXQgZXJyb3JTdGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLm5nQ29udHJvbD8uaW52YWxpZCAmJiAhIXRoaXMubmdDb250cm9sPy50b3VjaGVkO1xuICB9XG5cbiAgZ2V0IHNob3VsZExhYmVsRmxvYXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9jdXNlZCB8fCAhdGhpcy5lbXB0eTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjb250cm9sOiBGb3JtQ29udHJvbCB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdpZCcsIGlkKTtcblxuICAgIGlmICh0aGlzLm5nQ29udHJvbCAhPSBudWxsKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRyb2wgPSB0aGlzLm5nQ29udHJvbD8uY29udHJvbCBhcyBGb3JtQ29udHJvbDtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5pbml0aWFsVmFsdWUpIHtcbiAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLmluaXRpYWxWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmFuZ2UpIHtcbiAgICAgIHRoaXMuaW5pdFJhbmdlSW5wdXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0U2luZ2xlSW5wdXQoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGluaXRSYW5nZUlucHV0KCk6IHZvaWQ7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGluaXRTaW5nbGVJbnB1dCgpOiB2b2lkO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzZXRTaW5nbGVWYWx1ZShcbiAgICB2YWx1ZTogRXhjbHVkZTxXYXR0UGlja2VyVmFsdWUsIFdhdHREYXRlUmFuZ2U+LFxuICAgIGlucHV0OiBIVE1MSW5wdXRFbGVtZW50XG4gICk6IHZvaWQ7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNldFJhbmdlVmFsdWUoXG4gICAgdmFsdWU6IFdhdHREYXRlUmFuZ2UsXG4gICAgc3RhcnRJbnB1dDogSFRNTElucHV0RWxlbWVudCxcbiAgICBlbmRJbnB1dDogSFRNTElucHV0RWxlbWVudFxuICApOiB2b2lkO1xuXG4gIHNldERlc2NyaWJlZEJ5SWRzKGlkczogc3RyaW5nW10pIHtcbiAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknLCBpZHMuam9pbignICcpKTtcbiAgfVxuXG4gIG9uQ29udGFpbmVyQ2xpY2soKSB7XG4gICAgLy8gSW50ZW50aW9uYWxseSBsZWZ0IGVtcHR5XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBXYXR0UGlja2VyVmFsdWUpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKG9uQ2hhbmdlRm46ICh2YWx1ZTogc3RyaW5nIHwgV2F0dERhdGVSYW5nZSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlUGFyZW50VmFsdWUgPSBvbkNoYW5nZUZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaEZuOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5tYXJrUGFyZW50Q29udHJvbEFzVG91Y2hlZCA9IG9uVG91Y2hGbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG9uRm9jdXNJbigpIHtcbiAgICBpZiAoIXRoaXMuZm9jdXNlZCkge1xuICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBvbkZvY3VzT3V0KGV2ZW50OiBGb2N1c0V2ZW50KSB7XG4gICAgY29uc3QgaWQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hdHRyaWJ1dGVzLmdldE5hbWVkSXRlbSgnYXJpYS1vd25zJyk7XG4gICAgY29uc3Qgb3ZlcmxheSA9IGlkID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQudmFsdWUpIDogbnVsbDtcbiAgICBjb25zdCBpc0NoaWxkID0gb3ZlcmxheT8uY29udGFpbnMoZXZlbnQucmVsYXRlZFRhcmdldCBhcyBFbGVtZW50KTtcblxuICAgIGlmICghdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQucmVsYXRlZFRhcmdldCBhcyBFbGVtZW50KSAmJiAhaXNDaGlsZCkge1xuICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XG4gICAgICB0aGlzLm1hcmtQYXJlbnRDb250cm9sQXNUb3VjaGVkKCk7XG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBwcm90ZWN0ZWQgY2hhbmdlUGFyZW50VmFsdWUgPSAodmFsdWU6IHN0cmluZyB8IFdhdHREYXRlUmFuZ2UpOiB2b2lkID0+IHtcbiAgICAvLyBJbnRlbnRpb25hbGx5IGxlZnQgZW1wdHlcbiAgfTtcblxuICBwcm90ZWN0ZWQgbWFya1BhcmVudENvbnRyb2xBc1RvdWNoZWQgPSAoKTogdm9pZCA9PiB7XG4gICAgLy8gSW50ZW50aW9uYWxseSBsZWZ0IGVtcHR5XG4gIH07XG59XG4iXX0=
|