@po-ui/ng-components 5.14.0 → 5.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/po-ui-ng-components.umd.js +1017 -561
- package/bundles/po-ui-ng-components.umd.js.map +1 -1
- package/esm2015/lib/components/po-avatar/po-avatar-base.component.js +16 -1
- package/esm2015/lib/components/po-avatar/po-avatar.component.js +2 -2
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-field.interface.js +1 -1
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields-base.component.js +2 -2
- package/esm2015/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields.component.js +2 -2
- package/esm2015/lib/components/po-field/po-datepicker/po-datepicker.component.js +2 -1
- package/esm2015/lib/components/po-field/po-datepicker-range/interfaces/po-datepicker-range-literals.interface.js +1 -1
- package/esm2015/lib/components/po-field/po-datepicker-range/po-datepicker-range-base.component.js +103 -6
- package/esm2015/lib/components/po-field/po-datepicker-range/po-datepicker-range.component.js +8 -3
- package/esm2015/lib/components/po-field/po-datepicker-range/po-datepicker-range.literals.js +13 -5
- package/esm2015/lib/components/po-field/po-email/po-email.component.js +7 -5
- package/esm2015/lib/components/po-field/po-field.model.js +75 -0
- package/esm2015/lib/components/po-field/po-login/po-login.component.js +7 -5
- package/esm2015/lib/components/po-field/po-lookup/interfaces/po-lookup-filter.interface.js +1 -1
- package/esm2015/lib/components/po-field/po-lookup/po-lookup-base.component.js +89 -26
- package/esm2015/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal-base.component.js +40 -10
- package/esm2015/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.js +45 -7
- package/esm2015/lib/components/po-field/po-lookup/po-lookup.component.js +136 -13
- package/esm2015/lib/components/po-field/po-lookup/services/po-lookup-filter.service.js +19 -4
- package/esm2015/lib/components/po-field/po-lookup/services/po-lookup-modal.service.js +9 -2
- package/esm2015/lib/components/po-field/po-password/po-password.component.js +7 -5
- package/esm2015/lib/components/po-field/po-switch/po-switch.component.js +85 -9
- package/esm2015/lib/components/po-field/po-url/po-url.component.js +7 -5
- package/esm2015/lib/components/po-page/po-page-header/po-page-header.component.js +2 -2
- package/esm2015/lib/components/po-stepper/po-stepper-circle/po-stepper-circle.component.js +2 -2
- package/esm2015/lib/components/po-stepper/po-stepper-step/po-stepper-step.component.js +5 -4
- package/esm2015/lib/components/po-stepper/po-stepper.component.js +15 -14
- package/esm2015/lib/components/po-table/po-table-base.component.js +2 -2
- package/esm2015/lib/components/po-table/po-table-column-label/po-table-column-label.interface.js +1 -1
- package/esm2015/lib/components/po-table/po-table.component.js +41 -1
- package/esm2015/po-ui-ng-components.js +2 -2
- package/fesm2015/po-ui-ng-components.js +955 -512
- package/fesm2015/po-ui-ng-components.js.map +1 -1
- package/lib/components/po-avatar/po-avatar-base.component.d.ts +14 -0
- package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-field.interface.d.ts +6 -0
- package/lib/components/po-field/po-datepicker-range/interfaces/po-datepicker-range-literals.interface.d.ts +4 -0
- package/lib/components/po-field/po-datepicker-range/po-datepicker-range-base.component.d.ts +26 -3
- package/lib/components/po-field/po-datepicker-range/po-datepicker-range.component.d.ts +3 -2
- package/lib/components/po-field/po-email/po-email.component.d.ts +2 -2
- package/lib/components/po-field/po-field.model.d.ts +50 -0
- package/lib/components/po-field/po-login/po-login.component.d.ts +2 -2
- package/lib/components/po-field/po-lookup/interfaces/po-lookup-filter.interface.d.ts +5 -2
- package/lib/components/po-field/po-lookup/po-lookup-base.component.d.ts +53 -7
- package/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal-base.component.d.ts +22 -2
- package/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.d.ts +10 -3
- package/lib/components/po-field/po-lookup/po-lookup.component.d.ts +25 -2
- package/lib/components/po-field/po-lookup/services/po-lookup-filter.service.d.ts +6 -2
- package/lib/components/po-field/po-lookup/services/po-lookup-modal.service.d.ts +7 -0
- package/lib/components/po-field/po-password/po-password.component.d.ts +2 -2
- package/lib/components/po-field/po-switch/po-switch.component.d.ts +49 -3
- package/lib/components/po-field/po-url/po-url.component.d.ts +2 -2
- package/lib/components/po-stepper/po-stepper-step/po-stepper-step.component.d.ts +1 -0
- package/lib/components/po-stepper/po-stepper.component.d.ts +6 -2
- package/lib/components/po-table/po-table-column-label/po-table-column-label.interface.d.ts +1 -1
- package/lib/components/po-table/po-table.component.d.ts +13 -0
- package/package.json +4 -4
- package/po-ui-ng-components-5.18.0.tgz +0 -0
- package/po-ui-ng-components.d.ts +1 -1
- package/po-ui-ng-components.metadata.json +1 -1
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-update/v2/index.js +1 -1
- package/schematics/ng-update/v3/index.js +1 -1
- package/schematics/ng-update/v4/index.js +1 -1
- package/schematics/ng-update/v5/index.js +1 -1
- package/esm2015/lib/components/po-field/po-switch/po-switch-base.component.js +0 -158
- package/lib/components/po-field/po-switch/po-switch-base.component.d.ts +0 -100
- package/po-ui-ng-components-5.14.0.tgz +0 -0
package/esm2015/lib/components/po-field/po-datepicker-range/po-datepicker-range-base.component.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
-
import { EventEmitter, Input, Output
|
|
3
|
-
import { convertToBoolean } from './../../../utils/util';
|
|
4
|
-
import { requiredFailed } from '../validators';
|
|
2
|
+
import { Directive, EventEmitter, Input, Output } from '@angular/core';
|
|
5
3
|
import { InputBoolean } from '../../../decorators';
|
|
6
|
-
import { PoDateService } from './../../../services/po-date/po-date.service';
|
|
7
|
-
import { PoLanguageService } from '../../../services/po-language/po-language.service';
|
|
8
4
|
import { poLocaleDefault } from '../../../services/po-language/po-language.constant';
|
|
5
|
+
import { PoLanguageService } from '../../../services/po-language/po-language.service';
|
|
6
|
+
import { requiredFailed } from '../validators';
|
|
7
|
+
import { PoDateService } from './../../../services/po-date/po-date.service';
|
|
8
|
+
import { convertIsoToDate, convertToBoolean, setYearFrom0To100, validateDateRange } from './../../../utils/util';
|
|
9
9
|
import { poDatepickerRangeLiteralsDefault } from './po-datepicker-range.literals';
|
|
10
10
|
/**
|
|
11
11
|
* @description
|
|
@@ -178,6 +178,48 @@ export class PoDatepickerRangeBaseComponent {
|
|
|
178
178
|
get literals() {
|
|
179
179
|
return this._literals || poDatepickerRangeLiteralsDefault[this.language];
|
|
180
180
|
}
|
|
181
|
+
/**
|
|
182
|
+
* @optional
|
|
183
|
+
*
|
|
184
|
+
* @description
|
|
185
|
+
*
|
|
186
|
+
* Define uma data mínima para o `po-datepicker-range`.
|
|
187
|
+
*/
|
|
188
|
+
set minDate(value) {
|
|
189
|
+
if (value instanceof Date) {
|
|
190
|
+
const year = value.getFullYear();
|
|
191
|
+
const date = new Date(year, value.getMonth(), value.getDate(), 0, 0, 0);
|
|
192
|
+
setYearFrom0To100(date, year);
|
|
193
|
+
this._minDate = date;
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
this._minDate = convertIsoToDate(value, true, false);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
get minDate() {
|
|
200
|
+
return this._minDate;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* @optional
|
|
204
|
+
*
|
|
205
|
+
* @description
|
|
206
|
+
*
|
|
207
|
+
* Define uma data máxima para o `po-datepicker-range`.
|
|
208
|
+
*/
|
|
209
|
+
set maxDate(value) {
|
|
210
|
+
if (value instanceof Date) {
|
|
211
|
+
const year = value.getFullYear();
|
|
212
|
+
const date = new Date(year, value.getMonth(), value.getDate(), 23, 59, 59);
|
|
213
|
+
setYearFrom0To100(date, year);
|
|
214
|
+
this._maxDate = date;
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
this._maxDate = convertIsoToDate(value, false, true);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
get maxDate() {
|
|
221
|
+
return this._maxDate;
|
|
222
|
+
}
|
|
181
223
|
/**
|
|
182
224
|
* @optional
|
|
183
225
|
*
|
|
@@ -271,6 +313,14 @@ export class PoDatepickerRangeBaseComponent {
|
|
|
271
313
|
}
|
|
272
314
|
};
|
|
273
315
|
}
|
|
316
|
+
if (!this.verifyValidDate(startDate, endDate)) {
|
|
317
|
+
this.errorMessage = this.literals.invalidDate;
|
|
318
|
+
return {
|
|
319
|
+
date: {
|
|
320
|
+
valid: false
|
|
321
|
+
}
|
|
322
|
+
};
|
|
323
|
+
}
|
|
274
324
|
if (this.dateRangeObjectFailed(control.value) || this.dateRangeFormatFailed(startDate, endDate)) {
|
|
275
325
|
this.errorMessage = this.literals.invalidFormat;
|
|
276
326
|
return {
|
|
@@ -287,8 +337,19 @@ export class PoDatepickerRangeBaseComponent {
|
|
|
287
337
|
}
|
|
288
338
|
};
|
|
289
339
|
}
|
|
340
|
+
if ((startDate && !this.validateDateInRange(startDate)) || (endDate && !this.validateDateInRange(endDate))) {
|
|
341
|
+
this.errorMessage = this.literals.dateOutOfPeriod;
|
|
342
|
+
return {
|
|
343
|
+
date: {
|
|
344
|
+
valid: false
|
|
345
|
+
}
|
|
346
|
+
};
|
|
347
|
+
}
|
|
290
348
|
return null;
|
|
291
349
|
}
|
|
350
|
+
validateDateInRange(startDate) {
|
|
351
|
+
return validateDateRange(convertIsoToDate(startDate, false, false), this._minDate, this._maxDate);
|
|
352
|
+
}
|
|
292
353
|
writeValue(dateRange) {
|
|
293
354
|
this.resetDateRangeInputValidation();
|
|
294
355
|
if (!dateRange || this.dateRangeObjectFailed(dateRange)) {
|
|
@@ -326,6 +387,17 @@ export class PoDatepickerRangeBaseComponent {
|
|
|
326
387
|
this.validatorChange(model);
|
|
327
388
|
}
|
|
328
389
|
}
|
|
390
|
+
verifyValidDate(startDate, endDate) {
|
|
391
|
+
if (startDate !== '' && endDate !== '') {
|
|
392
|
+
return this.dateIsValid(startDate) && this.dateIsValid(endDate);
|
|
393
|
+
}
|
|
394
|
+
else if (startDate !== '') {
|
|
395
|
+
return this.dateIsValid(startDate);
|
|
396
|
+
}
|
|
397
|
+
else {
|
|
398
|
+
return this.dateIsValid(endDate);
|
|
399
|
+
}
|
|
400
|
+
}
|
|
329
401
|
convertPatternDateFormat(value) {
|
|
330
402
|
if (value instanceof Date) {
|
|
331
403
|
return this.poDateService.convertDateToISO(value);
|
|
@@ -349,6 +421,29 @@ export class PoDatepickerRangeBaseComponent {
|
|
|
349
421
|
requiredFailed(this.required, this.disabled, startDate) &&
|
|
350
422
|
requiredFailed(this.required, this.disabled, endDate));
|
|
351
423
|
}
|
|
424
|
+
dateIsValid(date) {
|
|
425
|
+
const [strYear, strMonth, strDay] = date.split('-');
|
|
426
|
+
const year = Number(strYear);
|
|
427
|
+
const month = Number(strMonth);
|
|
428
|
+
const day = Number(strDay);
|
|
429
|
+
//verificação dos meses com 31 dias
|
|
430
|
+
if (month === 1 || month === 3 || month === 5 || month === 7 || month === 8 || month === 10 || month === 12) {
|
|
431
|
+
return day < 1 || day > 31 ? false : true;
|
|
432
|
+
}
|
|
433
|
+
else if (month === 4 || month === 6 || month === 9 || month === 11) {
|
|
434
|
+
//verificação dos meses com 30 dias
|
|
435
|
+
return day < 1 || day > 30 ? false : true;
|
|
436
|
+
}
|
|
437
|
+
else {
|
|
438
|
+
//verificacao de ano bissexto para verificar até qual dia irá o mês de fevereiro
|
|
439
|
+
if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {
|
|
440
|
+
return day < 1 || day > 29 ? false : true;
|
|
441
|
+
}
|
|
442
|
+
else {
|
|
443
|
+
return day < 1 || day > 28 ? false : true;
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
}
|
|
352
447
|
}
|
|
353
448
|
PoDatepickerRangeBaseComponent.decorators = [
|
|
354
449
|
{ type: Directive }
|
|
@@ -367,6 +462,8 @@ PoDatepickerRangeBaseComponent.propDecorators = {
|
|
|
367
462
|
disabled: [{ type: Input, args: ['p-disabled',] }],
|
|
368
463
|
endDate: [{ type: Input, args: ['p-end-date',] }],
|
|
369
464
|
literals: [{ type: Input, args: ['p-literals',] }],
|
|
465
|
+
minDate: [{ type: Input, args: ['p-min-date',] }],
|
|
466
|
+
maxDate: [{ type: Input, args: ['p-max-date',] }],
|
|
370
467
|
noAutocomplete: [{ type: Input, args: ['p-no-autocomplete',] }],
|
|
371
468
|
readonly: [{ type: Input, args: ['p-readonly',] }],
|
|
372
469
|
required: [{ type: Input, args: ['p-required',] }],
|
|
@@ -375,4 +472,4 @@ PoDatepickerRangeBaseComponent.propDecorators = {
|
|
|
375
472
|
__decorate([
|
|
376
473
|
InputBoolean()
|
|
377
474
|
], PoDatepickerRangeBaseComponent.prototype, "autoFocus", void 0);
|
|
378
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZGF0ZXBpY2tlci1yYW5nZS1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1kYXRlcGlja2VyLXJhbmdlL3BvLWRhdGVwaWNrZXItcmFuZ2UtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUlyRixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVsRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdDRztBQUVILE1BQU0sT0FBZ0IsOEJBQThCO0lBcVFsRCxZQUFzQixhQUE0QixFQUFFLGVBQWtDO1FBQWhFLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBcFFsRDs7Ozs7Ozs7OztXQVVHO1FBQ29DLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFtQ2xFOzs7Ozs7V0FNRztRQUNpQixhQUFRLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFFMUUsaUJBQVksR0FBVyxFQUFFLENBQUM7UUFDMUIsY0FBUyxHQUFzQixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBRTVDLFdBQU0sR0FBUSxZQUFZLENBQUM7UUFDM0IsZ0NBQTJCLEdBQVksSUFBSSxDQUFDO1FBQzVDLCtCQUEwQixHQUFZLElBQUksQ0FBQztRQUc3QyxXQUFNLEdBQWEsS0FBSyxDQUFDO1FBSXpCLG9CQUFlLEdBQWEsS0FBSyxDQUFDO1FBQ2xDLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IsY0FBUyxHQUFhLEtBQUssQ0FBQztRQWdNbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUNyRCxDQUFDO0lBMUxELElBQUkscUJBQXFCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixJQUFJLElBQUksQ0FBQywwQkFBMEIsQ0FBQztJQUM3RSxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxJQUFzQixLQUFLLENBQUMsS0FBYztRQUN4QyxJQUFJLENBQUMsTUFBTSxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsSUFBeUIsUUFBUSxDQUFDLEtBQWM7UUFDOUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV6QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUF5QixPQUFPLENBQUMsSUFBbUI7UUFDbEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUVsQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Ba0NHO0lBQ0gsSUFBeUIsUUFBUSxDQUFDLEtBQWdDO1FBQ2hFLElBQUksS0FBSyxZQUFZLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxZQUFZLEtBQUssQ0FBQyxFQUFFO1lBQ3hELElBQUksQ0FBQyxTQUFTLGlEQUNULGdDQUFnQyxDQUFDLGVBQWUsQ0FBQyxHQUNqRCxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQy9DLEtBQUssQ0FDVCxDQUFDO1NBQ0g7YUFBTTtZQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsZ0NBQWdDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2xFO0lBQ0gsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsSUFBSSxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsSUFBZ0MsY0FBYyxDQUFDLEtBQWM7UUFDM0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxJQUF5QixRQUFRLENBQUMsS0FBYztRQUM5QyxJQUFJLENBQUMsU0FBUyxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXpDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsSUFBeUIsUUFBUSxDQUFDLFFBQWlCO1FBQ2pELElBQUksQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFNUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsSUFBMkIsU0FBUyxDQUFDLElBQW1CO1FBQ3RELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFFdEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFNRCw4Q0FBOEM7SUFDOUMsZ0VBQWdFO0lBQ2hFLGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQzdCLENBQUM7SUFFRCw4Q0FBOEM7SUFDOUMsNkVBQTZFO0lBQzdFLGdCQUFnQixDQUFDLElBQVM7UUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUVELDhDQUE4QztJQUM5Qyw2RUFBNkU7SUFDN0UsaUJBQWlCLENBQUMsSUFBUztRQUN6QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztJQUM3QixDQUFDO0lBRUQseUJBQXlCLENBQUUsRUFBYztRQUN2QyxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQXdCO1FBQy9CLE1BQU0sS0FBSyxHQUFzQixPQUFPLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNyRCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDaEYsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRTFFLElBQUksSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsRUFBRTtZQUNwRCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUV2QixPQUFPO2dCQUNMLFFBQVEsRUFBRTtvQkFDUixLQUFLLEVBQUUsS0FBSztpQkFDYjthQUNGLENBQUM7U0FDSDtRQUVELElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxFQUFFO1lBQy9GLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7WUFFaEQsT0FBTztnQkFDTCxJQUFJLEVBQUU7b0JBQ0osS0FBSyxFQUFFLEtBQUs7aUJBQ2I7YUFDRixDQUFDO1NBQ0g7UUFFRCxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxFQUFFO1lBQzVDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQztZQUU5RCxPQUFPO2dCQUNMLElBQUksRUFBRTtvQkFDSixLQUFLLEVBQUUsS0FBSztpQkFDYjthQUNGLENBQUM7U0FDSDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFVBQVUsQ0FBQyxTQUE0QjtRQUNyQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztRQUVyQyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUN2RCxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUM7U0FDekM7UUFFRCxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDcEM7UUFFRCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUN6QyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzdCO1FBRUQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDckMsSUFBSSxDQUFDLFNBQVMsR0FBRztnQkFDZixLQUFLLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7Z0JBQ3JELEdBQUcsRUFBRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQzthQUNsRCxDQUFDO1lBRUYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDbEM7UUFFRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFUyxnQkFBZ0IsQ0FBQyxLQUFhO1FBQ3RDLE9BQU8sS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELDRCQUE0QjtJQUNsQixXQUFXLENBQUMsS0FBVTtRQUM5QixNQUFNLEtBQUssR0FBRyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxtQkFBTSxLQUFLLEVBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMvRCw4RUFBOEU7UUFDOUUsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRVMsYUFBYSxDQUFDLEtBQVU7UUFDaEMsTUFBTSxLQUFLLHFCQUFRLEtBQUssQ0FBRSxDQUFDO1FBQzNCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzdCO0lBQ0gsQ0FBQztJQUVPLHdCQUF3QixDQUFDLEtBQVU7UUFDekMsSUFBSSxLQUFLLFlBQVksSUFBSSxFQUFFO1lBQ3pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNuRDtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLGVBQWUsQ0FBQyxTQUFpQixFQUFFLE9BQWU7UUFDeEQsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDO0lBQ3RHLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxTQUFpQixFQUFFLE9BQWU7UUFDOUQsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDO0lBQ2pILENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxLQUFLO1FBQ2pDLE9BQU8sS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxLQUFLO1FBQzdCLE9BQU8sS0FBSyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRU8sdUJBQXVCLENBQUMsU0FBaUIsRUFBRSxPQUFlO1FBQ2hFLE9BQU8sQ0FDTCxJQUFJLENBQUMscUJBQXFCO1lBQzFCLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDO1lBQ3ZELGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQ3RELENBQUM7SUFDSixDQUFDOzs7WUFuWkYsU0FBUzs7O1lBakRELGFBQWE7WUFDYixpQkFBaUI7Ozt3QkE2RHZCLEtBQUssU0FBQyxjQUFjO21CQVNwQixLQUFLLFNBQUMsUUFBUTtvQkFTZCxLQUFLLFNBQUMsU0FBUzt1QkFlZixLQUFLLFNBQUMsWUFBWTt1QkFTbEIsTUFBTSxTQUFDLFVBQVU7b0JBb0NqQixLQUFLLFNBQUMsU0FBUzt1QkFpQmYsS0FBSyxTQUFDLFlBQVk7c0JBaUJsQixLQUFLLFNBQUMsWUFBWTt1QkErQ2xCLEtBQUssU0FBQyxZQUFZOzZCQXlCbEIsS0FBSyxTQUFDLG1CQUFtQjt1QkFpQnpCLEtBQUssU0FBQyxZQUFZO3VCQW1CbEIsS0FBSyxTQUFDLFlBQVk7d0JBaUJsQixLQUFLLFNBQUMsY0FBYzs7QUE3T2tCO0lBQWYsWUFBWSxFQUFFO2lFQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IGNvbnZlcnRUb0Jvb2xlYW4gfSBmcm9tICcuLy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgcmVxdWlyZWRGYWlsZWQgfSBmcm9tICcuLi92YWxpZGF0b3JzJztcbmltcG9ydCB7IElucHV0Qm9vbGVhbiB9IGZyb20gJy4uLy4uLy4uL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgUG9EYXRlU2VydmljZSB9IGZyb20gJy4vLi4vLi4vLi4vc2VydmljZXMvcG8tZGF0ZS9wby1kYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IHBvTG9jYWxlRGVmYXVsdCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLmNvbnN0YW50JztcblxuaW1wb3J0IHsgUG9EYXRlcGlja2VyUmFuZ2UgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tZGF0ZXBpY2tlci1yYW5nZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9EYXRlcGlja2VyUmFuZ2VMaXRlcmFscyB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1kYXRlcGlja2VyLXJhbmdlLWxpdGVyYWxzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBwb0RhdGVwaWNrZXJSYW5nZUxpdGVyYWxzRGVmYXVsdCB9IGZyb20gJy4vcG8tZGF0ZXBpY2tlci1yYW5nZS5saXRlcmFscyc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogTyBgcG8tZGF0ZXBpY2tlci1yYW5nZWAgw6kgdW0gY29tcG9uZW50ZSBwYXJhIHNlbGXDp8OjbyBkZSB1bSBwZXLDrW9kbyBlbnRyZSBkdWFzIGRhdGFzLCBvbmRlIMOpIHBvc3PDrXZlbCBpbmZvcm1hciBhcGVuYXNcbiAqIGEgZGF0YSBpbmljaWFsIG91IGEgZGF0YSBmaW5hbC5cbiAqXG4gKiBPIGNvbXBvbmVudGUgYFsobmdNb2RlbCldYCBkbyBgcG8tZGF0ZXBpY2tlci1yYW5nZWAgdHJhYmFsaGEgY29tIHVtIG9iamV0byBxdWUgaW1wbGVtZW50YSBhIGludGVyZmFjZVxuICogYFBvRGF0ZXBpY2tlclJhbmdlYCwgY29udGVuZG8gYXMgc2VndWludGVzIHByb3ByaWVkYWRlczpcbiAqIGBgYFxuICogeyBcInN0YXJ0XCI6ICcyMDE3LTExLTI4JywgXCJlbmRcIjogJzIwMTctMTEtMzAnIH1cbiAqIGBgYFxuICpcbiAqIDxhIGlkPVwiYWNjZXB0ZWQtZm9ybWF0c1wiPjwvYT5cbiAqIEVzdGUgY29tcG9uZW50ZSBwb2RlIHJlY2ViZXIgb3Mgc2VndWludGVzIGZvcm1hdG9zIGRlIGRhdGE6XG4gKlxuICogLSAqKkRhdGEgZSBob3JhIGNvbWJpbmFkb3MgKEU4NjAxRFp3KTogeXl5eS1tbS1kZFRoaDptbTpzcyt8LWhoOm1tKipcbiAqIGBgYFxuICogJzIwMTctMTEtMjhUMDA6MDA6MDAtMDI6MDAnO1xuICogYGBgXG4gKlxuICogLSAqKkRhdGEgKEU4NjAxREF3Lik6IHl5eXktbW0tZGQqKlxuICogYGBgXG4gKiAnMjAxNy0xMS0yOCc7XG4gKiBgYGBcbiAqXG4gKiAtICoqSmF2YVNjcmlwdCBEYXRlIE9iamVjdDoqKlxuICogYGBgXG4gKiBuZXcgRGF0ZSgyMDE3LCAxMCwgMjgpO1xuICogYGBgXG4gKlxuICogPiBPIGNvbXBvbmVudGUgcmVzcGVpdGFyw6EgbyBmb3JtYXRvIHBhc3NhZG8gcGFyYSBvICptb2RlbCogdmlhIGNvZGlmaWNhw6fDo28uIFBvcsOpbSwgY2FzbyBzZWphIGZlaXRhIGFsdGVyYcOnw6NvIGVtIGFsZ3VtXG4gKiBkb3MgdmFsb3JlcyBkZSBkYXRhIGVtIHRlbGEsIG8gY29tcG9uZW50ZSBhdHJpYnVpcsOhIG8gZm9ybWF0byAqKkRhdGEgKEU4NjAxREF3Lik6IHl5eXktbW0tZGQqKiBhbyBtb2RlbC5cbiAqXG4gKiBJbXBvcnRhbnRlOlxuICpcbiAqIC0gUXVhbmRvIHByZWVuY2hpZGFzIGEgZGF0YSBpbmljaWFsIGUgZmluYWwsIGEgZGF0YSBpbmljaWFsIGRldmUgc2VyIHNlbXByZSBtZW5vciBvdSBpZ3VhbCBhIGRhdGEgZmluYWw7XG4gKiAtIEFvIHBhc3NhciB1bWEgZGF0YSBpbnbDoWxpZGEgdmlhIGNvZGlmaWNhw6fDo28sIG8gdmFsb3Igc2Vyw6EgbWFudGlkbyBubyAqbW9kZWwqIGUgbyBgaW5wdXRgIGRhIHRlbGEgYXBhcmVjZXLDoSB2YXppbztcbiAqIC0gUGVybWl0ZSB0cmFiYWxoYXIgY29tIGFzIGR1YXMgZGF0YXMgc2VwYXJhZGFtZW50ZSBhdHJhdsOpcyBkYXMgcHJvcHJpZWRhZGVzIGBwLXN0YXJ0LWRhdGVgIGUgYHAtZW5kLWRhdGVgIG5vIGx1Z2FyIGRvXG4gKiBgWyhuZ01vZGVsKV1gLCBubyBlbnRhbnRvIHNlbSBhIHZhbGlkYcOnw6NvIGRvIGZvcm11bMOhcmlvO1xuICogLSBQYXJhIGEgdmFsaWRhw6fDo28gZG8gZm9ybXVsw6FyaW8sIHV0aWxpemUgbyBgWyhuZ01vZGVsKV1gLlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQb0RhdGVwaWNrZXJSYW5nZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQXBsaWNhIGZvY28gbm8gZWxlbWVudG8gYW8gc2VyIGluaWNpYWRvLlxuICAgKlxuICAgKiA+IENhc28gbWFpcyBkZSB1bSBlbGVtZW50byBzZWphIGNvbmZpZ3VyYWRvIGNvbSBlc3NhIHByb3ByaWVkYWRlLCBhcGVuYXMgbyDDumx0aW1vIGVsZW1lbnRvIGRlY2xhcmFkbyBjb20gZWxhIHRlcsOhIG8gZm9jby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWF1dG8tZm9jdXMnKSBASW5wdXRCb29sZWFuKCkgYXV0b0ZvY3VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogVGV4dG8gZGUgYXBvaW8gZG8gY2FtcG8uXG4gICAqL1xuICBASW5wdXQoJ3AtaGVscCcpIGhlbHA/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUsOzdHVsbyBkbyBjYW1wby5cbiAgICovXG4gIEBJbnB1dCgncC1sYWJlbCcpIGxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBzZSBhIGluZGljYcOnw6NvIGRlIGNhbXBvIG9wY2lvbmFsIHNlcsOhIGV4aWJpZGEuXG4gICAqXG4gICAqID4gTsOjbyBzZXLDoSBleGliaWRhIGEgaW5kaWNhw6fDo28gc2U6XG4gICAqIC0gTyBjYW1wbyBjb250ZXIgYHAtcmVxdWlyZWRgO1xuICAgKiAtIE7Do28gcG9zc3VpciBgcC1oZWxwYCBlL291IGBwLWxhYmVsYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLW9wdGlvbmFsJykgb3B0aW9uYWw6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXZlbnRvIGRpc3BhcmFkbyBhbyBhbHRlcmFyIHZhbG9yIGRvIGNhbXBvLlxuICAgKi9cbiAgQE91dHB1dCgncC1jaGFuZ2UnKSBvbkNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBlcnJvck1lc3NhZ2U6IHN0cmluZyA9ICcnO1xuICBkYXRlUmFuZ2U6IFBvRGF0ZXBpY2tlclJhbmdlID0geyBzdGFydDogJycsIGVuZDogJycgfTtcblxuICBwcm90ZWN0ZWQgZm9ybWF0OiBhbnkgPSAnZGQvbW0veXl5eSc7XG4gIHByb3RlY3RlZCBpc0RhdGVSYW5nZUlucHV0Rm9ybWF0VmFsaWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBwcm90ZWN0ZWQgaXNTdGFydERhdGVSYW5nZUlucHV0VmFsaWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBwcm90ZWN0ZWQgb25Ub3VjaGVkTW9kZWw6IGFueTtcblxuICBwcml2YXRlIF9jbGVhbj86IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZGlzYWJsZWQ/O1xuICBwcml2YXRlIF9lbmREYXRlPztcbiAgcHJpdmF0ZSBfbGl0ZXJhbHM/OiBhbnk7XG4gIHByaXZhdGUgX25vQXV0b2NvbXBsZXRlPzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9yZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9yZXF1aXJlZD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc3RhcnREYXRlPztcblxuICBwcml2YXRlIGxhbmd1YWdlO1xuICBwcml2YXRlIG9uQ2hhbmdlTW9kZWw6IGFueTtcbiAgcHJpdmF0ZSB2YWxpZGF0b3JDaGFuZ2U6IGFueTtcblxuICBnZXQgaXNEYXRlUmFuZ2VJbnB1dFZhbGlkKCkge1xuICAgIHJldHVybiB0aGlzLmlzRGF0ZVJhbmdlSW5wdXRGb3JtYXRWYWxpZCAmJiB0aGlzLmlzU3RhcnREYXRlUmFuZ2VJbnB1dFZhbGlkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSGFiaWxpdGEgYcOnw6NvIHBhcmEgbGltcGFyIG8gY2FtcG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1jbGVhbicpIHNldCBjbGVhbihjbGVhbjogYm9vbGVhbikge1xuICAgIHRoaXMuX2NsZWFuID0gY29udmVydFRvQm9vbGVhbihjbGVhbik7XG4gIH1cblxuICBnZXQgY2xlYW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NsZWFuO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVzYWJpbGl0YSBvIGNhbXBvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtZGlzYWJsZWQnKSBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xuXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKHRoaXMuZGF0ZVJhbmdlKTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEYXRhIGZpbmFsLlxuICAgKi9cbiAgQElucHV0KCdwLWVuZC1kYXRlJykgc2V0IGVuZERhdGUoZGF0ZTogc3RyaW5nIHwgRGF0ZSkge1xuICAgIHRoaXMuX2VuZERhdGUgPSB0aGlzLmNvbnZlcnRQYXR0ZXJuRGF0ZUZvcm1hdChkYXRlKTtcbiAgICB0aGlzLmRhdGVSYW5nZS5lbmQgPSB0aGlzLmVuZERhdGU7XG5cbiAgICB0aGlzLnVwZGF0ZVNjcmVlbkJ5TW9kZWwodGhpcy5kYXRlUmFuZ2UpO1xuICAgIHRoaXMudXBkYXRlTW9kZWwodGhpcy5kYXRlUmFuZ2UpO1xuICB9XG5cbiAgZ2V0IGVuZERhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VuZERhdGU7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBPYmpldG8gY29tIGFzIGxpdGVyYWlzIHVzYWRhcyBubyBgcG8tZGF0ZXBpY2tlci1yYW5nZWAuXG4gICAqXG4gICAqIEV4aXN0ZW0gZHVhcyBtYW5laXJhcyBkZSBjdXN0b21pemFyIG8gY29tcG9uZW50ZSwgcGFzc2FuZG8gdW0gb2JqZXRvIGNvbSB0b2RhcyBhcyBsaXRlcmFpcyBkaXNwb27DrXZlaXM6XG4gICAqXG4gICAqIGBgYFxuICAgKiAgY29uc3QgY3VzdG9tTGl0ZXJhbHM6IFBvRGF0ZXBpY2tlclJhbmdlTGl0ZXJhbHMgPSB7XG4gICAqICAgIGludmFsaWRGb3JtYXQ6ICdEYXRlIGluIGluY29uc2lzdGVudCBmb3JtYXQnLFxuICAgKiAgICBzdGFydERhdGVHcmVhdGVyVGhhbkVuZERhdGU6ICdFbmQgZGF0ZSBsZXNzIHRoYW4gc3RhcnQgZGF0ZSdcbiAgICogIH07XG4gICAqIGBgYFxuICAgKlxuICAgKiBPdSBwYXNzYW5kbyBhcGVuYXMgYXMgbGl0ZXJhaXMgcXVlIGRlc2VqYSBjdXN0b21pemFyOlxuICAgKlxuICAgKiBgYGBcbiAgICogIGNvbnN0IGN1c3RvbUxpdGVyYWxzOiBQb0RhdGVwaWNrZXJSYW5nZUxpdGVyYWxzID0ge1xuICAgKiAgICBpbnZhbGlkRm9ybWF0OiAnRGF0ZSBpbiBpbmNvbnNpc3RlbnQgZm9ybWF0J1xuICAgKiAgfTtcbiAgICogYGBgXG4gICAqXG4gICAqIEUgcGFyYSBjYXJyZWdhciBhcyBsaXRlcmFpcyBjdXN0b21pemFkYXMsIGJhc3RhIGFwZW5hcyBwYXNzYXIgbyBvYmpldG8gcGFyYSBvIGNvbXBvbmVudGUuXG4gICAqXG4gICAqIGBgYFxuICAgKiA8cG8tZGF0ZXBpY2tlci1yYW5nZVxuICAgKiAgIFtwLWxpdGVyYWxzXT1cImN1c3RvbUxpdGVyYWxzXCI+XG4gICAqIDwvcG8tZGF0ZXBpY2tlci1yYW5nZT5cbiAgICogYGBgXG4gICAqXG4gICAqID4gTyBvYmpldG8gcGFkcsOjbyBkZSBsaXRlcmFpcyBzZXLDoSB0cmFkdXppZG8gZGUgYWNvcmRvIGNvbSBvIGlkaW9tYSBkb1xuICAgKiBbYFBvSTE4blNlcnZpY2VgXSgvZG9jdW1lbnRhdGlvbi9wby1pMThuKSBvdSBkbyBicm93c2VyLlxuICAgKi9cbiAgQElucHV0KCdwLWxpdGVyYWxzJykgc2V0IGxpdGVyYWxzKHZhbHVlOiBQb0RhdGVwaWNrZXJSYW5nZUxpdGVyYWxzKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0ICYmICEodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkpIHtcbiAgICAgIHRoaXMuX2xpdGVyYWxzID0ge1xuICAgICAgICAuLi5wb0RhdGVwaWNrZXJSYW5nZUxpdGVyYWxzRGVmYXVsdFtwb0xvY2FsZURlZmF1bHRdLFxuICAgICAgICAuLi5wb0RhdGVwaWNrZXJSYW5nZUxpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlXSxcbiAgICAgICAgLi4udmFsdWVcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2xpdGVyYWxzID0gcG9EYXRlcGlja2VyUmFuZ2VMaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV07XG4gICAgfVxuICB9XG5cbiAgZ2V0IGxpdGVyYWxzKCkge1xuICAgIHJldHVybiB0aGlzLl9saXRlcmFscyB8fCBwb0RhdGVwaWNrZXJSYW5nZUxpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBhIHByb3ByaWVkYWRlIG5hdGl2YSBgYXV0b2NvbXBsZXRlYCBkbyBjYW1wbyBjb21vIGBvZmZgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3Atbm8tYXV0b2NvbXBsZXRlJykgc2V0IG5vQXV0b2NvbXBsZXRlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fbm9BdXRvY29tcGxldGUgPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcbiAgfVxuXG4gIGdldCBub0F1dG9jb21wbGV0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbm9BdXRvY29tcGxldGU7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgcXVlIG8gY2FtcG8gc2Vyw6Egc29tZW50ZSBsZWl0dXJhLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtcmVhZG9ubHknKSBzZXQgcmVhZG9ubHkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yZWFkb25seSA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xuXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKHRoaXMuZGF0ZVJhbmdlKTtcbiAgfVxuXG4gIGdldCByZWFkb25seSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZG9ubHk7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgcXVlIG8gY2FtcG8gc2Vyw6Egb2JyaWdhdMOzcmlvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtcmVxdWlyZWQnKSBzZXQgcmVxdWlyZWQocmVxdWlyZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yZXF1aXJlZCA9IGNvbnZlcnRUb0Jvb2xlYW4ocmVxdWlyZWQpO1xuXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKHRoaXMuZGF0ZVJhbmdlKTtcbiAgfVxuXG4gIGdldCByZXF1aXJlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEYXRhIGluaWNpYWwuXG4gICAqL1xuICBASW5wdXQoJ3Atc3RhcnQtZGF0ZScpIHNldCBzdGFydERhdGUoZGF0ZTogc3RyaW5nIHwgRGF0ZSkge1xuICAgIHRoaXMuX3N0YXJ0RGF0ZSA9IHRoaXMuY29udmVydFBhdHRlcm5EYXRlRm9ybWF0KGRhdGUpO1xuICAgIHRoaXMuZGF0ZVJhbmdlLnN0YXJ0ID0gdGhpcy5zdGFydERhdGU7XG5cbiAgICB0aGlzLnVwZGF0ZVNjcmVlbkJ5TW9kZWwodGhpcy5kYXRlUmFuZ2UpO1xuICAgIHRoaXMudXBkYXRlTW9kZWwodGhpcy5kYXRlUmFuZ2UpO1xuICB9XG5cbiAgZ2V0IHN0YXJ0RGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhcnREYXRlO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHBvRGF0ZVNlcnZpY2U6IFBvRGF0ZVNlcnZpY2UsIGxhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2UpIHtcbiAgICB0aGlzLmxhbmd1YWdlID0gbGFuZ3VhZ2VTZXJ2aWNlLmdldFNob3J0TGFuZ3VhZ2UoKTtcbiAgfVxuXG4gIC8vIEZ1bsOnw6NvIGltcGxlbWVudGFkYSBkbyBDb250cm9sVmFsdWVBY2Nlc3NvclxuICAvLyBVc2FkYSBwYXJhIGludGVyY2VwdGFyIG9zIGVzdGFkb3MgZGUgaGFiaWxpdGFkbyB2aWEgZm9ybXMgYXBpXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIC8vIFVzYWRhIHBhcmEgaW50ZXJjZXB0YXIgYXMgbXVkYW7Dp2FzIGUgbsOjbyBhdHVhbGl6YXIgYXV0b21hdGljYW1lbnRlIG8gTW9kZWxcbiAgcmVnaXN0ZXJPbkNoYW5nZShmdW5jOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlTW9kZWwgPSBmdW5jO1xuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIC8vIFVzYWRhIHBhcmEgaW50ZXJjZXB0YXIgYXMgbXVkYW7Dp2FzIGUgbsOjbyBhdHVhbGl6YXIgYXV0b21hdGljYW1lbnRlIG8gTW9kZWxcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZnVuYzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWRNb2RlbCA9IGZ1bmM7XG4gIH1cblxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlPyhmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdG9yQ2hhbmdlID0gZm47XG4gIH1cblxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHtcbiAgICBjb25zdCB2YWx1ZTogUG9EYXRlcGlja2VyUmFuZ2UgPSBjb250cm9sLnZhbHVlIHx8IHt9O1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHZhbHVlLnN0YXJ0ID8gdGhpcy5jb252ZXJ0UGF0dGVybkRhdGVGb3JtYXQodmFsdWUuc3RhcnQpIDogJyc7XG4gICAgY29uc3QgZW5kRGF0ZSA9IHZhbHVlLmVuZCA/IHRoaXMuY29udmVydFBhdHRlcm5EYXRlRm9ybWF0KHZhbHVlLmVuZCkgOiAnJztcblxuICAgIGlmICh0aGlzLnJlcXVpcmVkRGF0ZVJhbmdlRmFpbGVkKHN0YXJ0RGF0ZSwgZW5kRGF0ZSkpIHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJyc7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlcXVpcmVkOiB7XG4gICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0ZVJhbmdlT2JqZWN0RmFpbGVkKGNvbnRyb2wudmFsdWUpIHx8IHRoaXMuZGF0ZVJhbmdlRm9ybWF0RmFpbGVkKHN0YXJ0RGF0ZSwgZW5kRGF0ZSkpIHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5saXRlcmFscy5pbnZhbGlkRm9ybWF0O1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRlOiB7XG4gICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0ZVJhbmdlRmFpbGVkKHN0YXJ0RGF0ZSwgZW5kRGF0ZSkpIHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5saXRlcmFscy5zdGFydERhdGVHcmVhdGVyVGhhbkVuZERhdGU7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGU6IHtcbiAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHdyaXRlVmFsdWUoZGF0ZVJhbmdlOiBQb0RhdGVwaWNrZXJSYW5nZSk6IHZvaWQge1xuICAgIHRoaXMucmVzZXREYXRlUmFuZ2VJbnB1dFZhbGlkYXRpb24oKTtcblxuICAgIGlmICghZGF0ZVJhbmdlIHx8IHRoaXMuZGF0ZVJhbmdlT2JqZWN0RmFpbGVkKGRhdGVSYW5nZSkpIHtcbiAgICAgIHRoaXMuZGF0ZVJhbmdlID0geyBzdGFydDogJycsIGVuZDogJycgfTtcbiAgICB9XG5cbiAgICBpZiAoIWRhdGVSYW5nZSkge1xuICAgICAgdGhpcy52YWxpZGF0ZU1vZGVsKHRoaXMuZGF0ZVJhbmdlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRlUmFuZ2VPYmplY3RGYWlsZWQoZGF0ZVJhbmdlKSkge1xuICAgICAgdGhpcy51cGRhdGVNb2RlbChkYXRlUmFuZ2UpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzRGF0ZVJhbmdlT2JqZWN0KGRhdGVSYW5nZSkpIHtcbiAgICAgIHRoaXMuZGF0ZVJhbmdlID0ge1xuICAgICAgICBzdGFydDogdGhpcy5jb252ZXJ0UGF0dGVybkRhdGVGb3JtYXQoZGF0ZVJhbmdlLnN0YXJ0KSxcbiAgICAgICAgZW5kOiB0aGlzLmNvbnZlcnRQYXR0ZXJuRGF0ZUZvcm1hdChkYXRlUmFuZ2UuZW5kKVxuICAgICAgfTtcblxuICAgICAgdGhpcy51cGRhdGVNb2RlbCh0aGlzLmRhdGVSYW5nZSk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVTY3JlZW5CeU1vZGVsKHRoaXMuZGF0ZVJhbmdlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBkYXRlRm9ybWF0RmFpbGVkKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsdWUgJiYgIXRoaXMucG9EYXRlU2VydmljZS5pc1ZhbGlkSXNvKHZhbHVlKTtcbiAgfVxuXG4gIC8vIEV4ZWN1dGEgYSBmdW7Dp8OjbyBvbkNoYW5nZVxuICBwcm90ZWN0ZWQgdXBkYXRlTW9kZWwodmFsdWU6IGFueSkge1xuICAgIGNvbnN0IG1vZGVsID0gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyA/IHsgLi4udmFsdWUgfSA6IHZhbHVlO1xuICAgIC8vIFF1YW5kbyBvIGlucHV0IG7Do28gcG9zc3VpIHVtIGZvcm11bMOhcmlvLCBlbnTDo28gZXN0YSBmdW7Dp8OjbyBuw6NvIMOpIHJlZ2lzdHJhZGFcbiAgICBpZiAodGhpcy5vbkNoYW5nZU1vZGVsKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlTW9kZWwobW9kZWwpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZU1vZGVsKHZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCBtb2RlbCA9IHsgLi4udmFsdWUgfTtcbiAgICBpZiAodGhpcy52YWxpZGF0b3JDaGFuZ2UpIHtcbiAgICAgIHRoaXMudmFsaWRhdG9yQ2hhbmdlKG1vZGVsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRQYXR0ZXJuRGF0ZUZvcm1hdCh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMucG9EYXRlU2VydmljZS5jb252ZXJ0RGF0ZVRvSVNPKHZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGRhdGVSYW5nZUZhaWxlZChzdGFydERhdGU6IHN0cmluZywgZW5kRGF0ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnBvRGF0ZVNlcnZpY2UuaXNEYXRlUmFuZ2VWYWxpZChlbmREYXRlLCBzdGFydERhdGUpIHx8ICF0aGlzLmlzU3RhcnREYXRlUmFuZ2VJbnB1dFZhbGlkO1xuICB9XG5cbiAgcHJpdmF0ZSBkYXRlUmFuZ2VGb3JtYXRGYWlsZWQoc3RhcnREYXRlOiBzdHJpbmcsIGVuZERhdGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRhdGVGb3JtYXRGYWlsZWQoZW5kRGF0ZSkgfHwgdGhpcy5kYXRlRm9ybWF0RmFpbGVkKHN0YXJ0RGF0ZSkgfHwgIXRoaXMuaXNEYXRlUmFuZ2VJbnB1dEZvcm1hdFZhbGlkO1xuICB9XG5cbiAgcHJpdmF0ZSBkYXRlUmFuZ2VPYmplY3RGYWlsZWQodmFsdWUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsdWUgJiYgIXRoaXMuaXNEYXRlUmFuZ2VPYmplY3QodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0RhdGVSYW5nZU9iamVjdCh2YWx1ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB2YWx1ZSAmJiB2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnc3RhcnQnKSAmJiB2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnZW5kJyk7XG4gIH1cblxuICBwcml2YXRlIHJlcXVpcmVkRGF0ZVJhbmdlRmFpbGVkKHN0YXJ0RGF0ZTogc3RyaW5nLCBlbmREYXRlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5pc0RhdGVSYW5nZUlucHV0VmFsaWQgJiZcbiAgICAgIHJlcXVpcmVkRmFpbGVkKHRoaXMucmVxdWlyZWQsIHRoaXMuZGlzYWJsZWQsIHN0YXJ0RGF0ZSkgJiZcbiAgICAgIHJlcXVpcmVkRmFpbGVkKHRoaXMucmVxdWlyZWQsIHRoaXMuZGlzYWJsZWQsIGVuZERhdGUpXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCByZXNldERhdGVSYW5nZUlucHV0VmFsaWRhdGlvbigpOiB2b2lkO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCB1cGRhdGVTY3JlZW5CeU1vZGVsKGRhdGVSYW5nZTogUG9EYXRlcGlja2VyUmFuZ2UpO1xufVxuIl19
|
|
475
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZGF0ZXBpY2tlci1yYW5nZS1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1kYXRlcGlja2VyLXJhbmdlL3BvLWRhdGVwaWNrZXItcmFuZ2UtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUdqSCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVsRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdDRztBQUVILE1BQU0sT0FBZ0IsOEJBQThCO0lBdVRsRCxZQUFzQixhQUE0QixFQUFFLGVBQWtDO1FBQWhFLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBdFRsRDs7Ozs7Ozs7OztXQVVHO1FBQ29DLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFtQ2xFOzs7Ozs7V0FNRztRQUNpQixhQUFRLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFFMUUsaUJBQVksR0FBVyxFQUFFLENB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QixLQUFLLFNBQUMsbUJBQW1CO3VCQWlCekIsS0FBSyxTQUFDLFlBQVk7dUJBbUJsQixLQUFLLFNBQUMsWUFBWTt3QkFpQmxCLEtBQUssU0FBQyxjQUFjOztBQS9Sa0I7SUFBZixZQUFZLEVBQUU7aUVBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElucHV0Qm9vbGVhbiB9IGZyb20gJy4uLy4uLy4uL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgcG9Mb2NhbGVEZWZhdWx0IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcG8tbGFuZ3VhZ2UvcG8tbGFuZ3VhZ2UuY29uc3RhbnQnO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IHJlcXVpcmVkRmFpbGVkIH0gZnJvbSAnLi4vdmFsaWRhdG9ycyc7XG5pbXBvcnQgeyBQb0RhdGVTZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi8uLi9zZXJ2aWNlcy9wby1kYXRlL3BvLWRhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBjb252ZXJ0SXNvVG9EYXRlLCBjb252ZXJ0VG9Cb29sZWFuLCBzZXRZZWFyRnJvbTBUbzEwMCwgdmFsaWRhdGVEYXRlUmFuZ2UgfSBmcm9tICcuLy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgUG9EYXRlcGlja2VyUmFuZ2VMaXRlcmFscyB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1kYXRlcGlja2VyLXJhbmdlLWxpdGVyYWxzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0RhdGVwaWNrZXJSYW5nZSB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1kYXRlcGlja2VyLXJhbmdlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBwb0RhdGVwaWNrZXJSYW5nZUxpdGVyYWxzRGVmYXVsdCB9IGZyb20gJy4vcG8tZGF0ZXBpY2tlci1yYW5nZS5saXRlcmFscyc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogTyBgcG8tZGF0ZXBpY2tlci1yYW5nZWAgw6kgdW0gY29tcG9uZW50ZSBwYXJhIHNlbGXDp8OjbyBkZSB1bSBwZXLDrW9kbyBlbnRyZSBkdWFzIGRhdGFzLCBvbmRlIMOpIHBvc3PDrXZlbCBpbmZvcm1hciBhcGVuYXNcbiAqIGEgZGF0YSBpbmljaWFsIG91IGEgZGF0YSBmaW5hbC5cbiAqXG4gKiBPIGNvbXBvbmVudGUgYFsobmdNb2RlbCldYCBkbyBgcG8tZGF0ZXBpY2tlci1yYW5nZWAgdHJhYmFsaGEgY29tIHVtIG9iamV0byBxdWUgaW1wbGVtZW50YSBhIGludGVyZmFjZVxuICogYFBvRGF0ZXBpY2tlclJhbmdlYCwgY29udGVuZG8gYXMgc2VndWludGVzIHByb3ByaWVkYWRlczpcbiAqIGBgYFxuICogeyBcInN0YXJ0XCI6ICcyMDE3LTExLTI4JywgXCJlbmRcIjogJzIwMTctMTEtMzAnIH1cbiAqIGBgYFxuICpcbiAqIDxhIGlkPVwiYWNjZXB0ZWQtZm9ybWF0c1wiPjwvYT5cbiAqIEVzdGUgY29tcG9uZW50ZSBwb2RlIHJlY2ViZXIgb3Mgc2VndWludGVzIGZvcm1hdG9zIGRlIGRhdGE6XG4gKlxuICogLSAqKkRhdGEgZSBob3JhIGNvbWJpbmFkb3MgKEU4NjAxRFp3KTogeXl5eS1tbS1kZFRoaDptbTpzcyt8LWhoOm1tKipcbiAqIGBgYFxuICogJzIwMTctMTEtMjhUMDA6MDA6MDAtMDI6MDAnO1xuICogYGBgXG4gKlxuICogLSAqKkRhdGEgKEU4NjAxREF3Lik6IHl5eXktbW0tZGQqKlxuICogYGBgXG4gKiAnMjAxNy0xMS0yOCc7XG4gKiBgYGBcbiAqXG4gKiAtICoqSmF2YVNjcmlwdCBEYXRlIE9iamVjdDoqKlxuICogYGBgXG4gKiBuZXcgRGF0ZSgyMDE3LCAxMCwgMjgpO1xuICogYGBgXG4gKlxuICogPiBPIGNvbXBvbmVudGUgcmVzcGVpdGFyw6EgbyBmb3JtYXRvIHBhc3NhZG8gcGFyYSBvICptb2RlbCogdmlhIGNvZGlmaWNhw6fDo28uIFBvcsOpbSwgY2FzbyBzZWphIGZlaXRhIGFsdGVyYcOnw6NvIGVtIGFsZ3VtXG4gKiBkb3MgdmFsb3JlcyBkZSBkYXRhIGVtIHRlbGEsIG8gY29tcG9uZW50ZSBhdHJpYnVpcsOhIG8gZm9ybWF0byAqKkRhdGEgKEU4NjAxREF3Lik6IHl5eXktbW0tZGQqKiBhbyBtb2RlbC5cbiAqXG4gKiBJbXBvcnRhbnRlOlxuICpcbiAqIC0gUXVhbmRvIHByZWVuY2hpZGFzIGEgZGF0YSBpbmljaWFsIGUgZmluYWwsIGEgZGF0YSBpbmljaWFsIGRldmUgc2VyIHNlbXByZSBtZW5vciBvdSBpZ3VhbCBhIGRhdGEgZmluYWw7XG4gKiAtIEFvIHBhc3NhciB1bWEgZGF0YSBpbnbDoWxpZGEgdmlhIGNvZGlmaWNhw6fDo28sIG8gdmFsb3Igc2Vyw6EgbWFudGlkbyBubyAqbW9kZWwqIGUgbyBgaW5wdXRgIGRhIHRlbGEgYXBhcmVjZXLDoSB2YXppbztcbiAqIC0gUGVybWl0ZSB0cmFiYWxoYXIgY29tIGFzIGR1YXMgZGF0YXMgc2VwYXJhZGFtZW50ZSBhdHJhdsOpcyBkYXMgcHJvcHJpZWRhZGVzIGBwLXN0YXJ0LWRhdGVgIGUgYHAtZW5kLWRhdGVgIG5vIGx1Z2FyIGRvXG4gKiBgWyhuZ01vZGVsKV1gLCBubyBlbnRhbnRvIHNlbSBhIHZhbGlkYcOnw6NvIGRvIGZvcm11bMOhcmlvO1xuICogLSBQYXJhIGEgdmFsaWRhw6fDo28gZG8gZm9ybXVsw6FyaW8sIHV0aWxpemUgbyBgWyhuZ01vZGVsKV1gLlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQb0RhdGVwaWNrZXJSYW5nZUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQXBsaWNhIGZvY28gbm8gZWxlbWVudG8gYW8gc2VyIGluaWNpYWRvLlxuICAgKlxuICAgKiA+IENhc28gbWFpcyBkZSB1bSBlbGVtZW50byBzZWphIGNvbmZpZ3VyYWRvIGNvbSBlc3NhIHByb3ByaWVkYWRlLCBhcGVuYXMgbyDDumx0aW1vIGVsZW1lbnRvIGRlY2xhcmFkbyBjb20gZWxhIHRlcsOhIG8gZm9jby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWF1dG8tZm9jdXMnKSBASW5wdXRCb29sZWFuKCkgYXV0b0ZvY3VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogVGV4dG8gZGUgYXBvaW8gZG8gY2FtcG8uXG4gICAqL1xuICBASW5wdXQoJ3AtaGVscCcpIGhlbHA/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUsOzdHVsbyBkbyBjYW1wby5cbiAgICovXG4gIEBJbnB1dCgncC1sYWJlbCcpIGxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBzZSBhIGluZGljYcOnw6NvIGRlIGNhbXBvIG9wY2lvbmFsIHNlcsOhIGV4aWJpZGEuXG4gICAqXG4gICAqID4gTsOjbyBzZXLDoSBleGliaWRhIGEgaW5kaWNhw6fDo28gc2U6XG4gICAqIC0gTyBjYW1wbyBjb250ZXIgYHAtcmVxdWlyZWRgO1xuICAgKiAtIE7Do28gcG9zc3VpciBgcC1oZWxwYCBlL291IGBwLWxhYmVsYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLW9wdGlvbmFsJykgb3B0aW9uYWw6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXZlbnRvIGRpc3BhcmFkbyBhbyBhbHRlcmFyIHZhbG9yIGRvIGNhbXBvLlxuICAgKi9cbiAgQE91dHB1dCgncC1jaGFuZ2UnKSBvbkNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBlcnJvck1lc3NhZ2U6IHN0cmluZyA9ICcnO1xuICBkYXRlUmFuZ2U6IFBvRGF0ZXBpY2tlclJhbmdlID0geyBzdGFydDogJycsIGVuZDogJycgfTtcblxuICBwcm90ZWN0ZWQgZm9ybWF0OiBhbnkgPSAnZGQvbW0veXl5eSc7XG4gIHByb3RlY3RlZCBpc0RhdGVSYW5nZUlucHV0Rm9ybWF0VmFsaWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBwcm90ZWN0ZWQgaXNTdGFydERhdGVSYW5nZUlucHV0VmFsaWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBwcm90ZWN0ZWQgb25Ub3VjaGVkTW9kZWw6IGFueTtcblxuICBwcml2YXRlIF9jbGVhbj86IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZGlzYWJsZWQ/O1xuICBwcml2YXRlIF9lbmREYXRlPztcbiAgcHJpdmF0ZSBfbGl0ZXJhbHM/OiBhbnk7XG4gIHByaXZhdGUgX21heERhdGU6IERhdGU7XG4gIHByaXZhdGUgX21pbkRhdGU6IERhdGU7XG4gIHByaXZhdGUgX25vQXV0b2NvbXBsZXRlPzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9yZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9yZXF1aXJlZD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc3RhcnREYXRlPztcblxuICBwcml2YXRlIGxhbmd1YWdlO1xuICBwcml2YXRlIG9uQ2hhbmdlTW9kZWw6IGFueTtcbiAgcHJpdmF0ZSB2YWxpZGF0b3JDaGFuZ2U6IGFueTtcblxuICBnZXQgaXNEYXRlUmFuZ2VJbnB1dFZhbGlkKCkge1xuICAgIHJldHVybiB0aGlzLmlzRGF0ZVJhbmdlSW5wdXRGb3JtYXRWYWxpZCAmJiB0aGlzLmlzU3RhcnREYXRlUmFuZ2VJbnB1dFZhbGlkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSGFiaWxpdGEgYcOnw6NvIHBhcmEgbGltcGFyIG8gY2FtcG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1jbGVhbicpIHNldCBjbGVhbihjbGVhbjogYm9vbGVhbikge1xuICAgIHRoaXMuX2NsZWFuID0gY29udmVydFRvQm9vbGVhbihjbGVhbik7XG4gIH1cblxuICBnZXQgY2xlYW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NsZWFuO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVzYWJpbGl0YSBvIGNhbXBvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtZGlzYWJsZWQnKSBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xuXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKHRoaXMuZGF0ZVJhbmdlKTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEYXRhIGZpbmFsLlxuICAgKi9cbiAgQElucHV0KCdwLWVuZC1kYXRlJykgc2V0IGVuZERhdGUoZGF0ZTogc3RyaW5nIHwgRGF0ZSkge1xuICAgIHRoaXMuX2VuZERhdGUgPSB0aGlzLmNvbnZlcnRQYXR0ZXJuRGF0ZUZvcm1hdChkYXRlKTtcbiAgICB0aGlzLmRhdGVSYW5nZS5lbmQgPSB0aGlzLmVuZERhdGU7XG5cbiAgICB0aGlzLnVwZGF0ZVNjcmVlbkJ5TW9kZWwodGhpcy5kYXRlUmFuZ2UpO1xuICAgIHRoaXMudXBkYXRlTW9kZWwodGhpcy5kYXRlUmFuZ2UpO1xuICB9XG5cbiAgZ2V0IGVuZERhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VuZERhdGU7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBPYmpldG8gY29tIGFzIGxpdGVyYWlzIHVzYWRhcyBubyBgcG8tZGF0ZXBpY2tlci1yYW5nZWAuXG4gICAqXG4gICAqIEV4aXN0ZW0gZHVhcyBtYW5laXJhcyBkZSBjdXN0b21pemFyIG8gY29tcG9uZW50ZSwgcGFzc2FuZG8gdW0gb2JqZXRvIGNvbSB0b2RhcyBhcyBsaXRlcmFpcyBkaXNwb27DrXZlaXM6XG4gICAqXG4gICAqIGBgYFxuICAgKiAgY29uc3QgY3VzdG9tTGl0ZXJhbHM6IFBvRGF0ZXBpY2tlclJhbmdlTGl0ZXJhbHMgPSB7XG4gICAqICAgIGludmFsaWRGb3JtYXQ6ICdEYXRlIGluIGluY29uc2lzdGVudCBmb3JtYXQnLFxuICAgKiAgICBzdGFydERhdGVHcmVhdGVyVGhhbkVuZERhdGU6ICdFbmQgZGF0ZSBsZXNzIHRoYW4gc3RhcnQgZGF0ZSdcbiAgICogIH07XG4gICAqIGBgYFxuICAgKlxuICAgKiBPdSBwYXNzYW5kbyBhcGVuYXMgYXMgbGl0ZXJhaXMgcXVlIGRlc2VqYSBjdXN0b21pemFyOlxuICAgKlxuICAgKiBgYGBcbiAgICogIGNvbnN0IGN1c3RvbUxpdGVyYWxzOiBQb0RhdGVwaWNrZXJSYW5nZUxpdGVyYWxzID0ge1xuICAgKiAgICBpbnZhbGlkRm9ybWF0OiAnRGF0ZSBpbiBpbmNvbnNpc3RlbnQgZm9ybWF0J1xuICAgKiAgfTtcbiAgICogYGBgXG4gICAqXG4gICAqIEUgcGFyYSBjYXJyZWdhciBhcyBsaXRlcmFpcyBjdXN0b21pemFkYXMsIGJhc3RhIGFwZW5hcyBwYXNzYXIgbyBvYmpldG8gcGFyYSBvIGNvbXBvbmVudGUuXG4gICAqXG4gICAqIGBgYFxuICAgKiA8cG8tZGF0ZXBpY2tlci1yYW5nZVxuICAgKiAgIFtwLWxpdGVyYWxzXT1cImN1c3RvbUxpdGVyYWxzXCI+XG4gICAqIDwvcG8tZGF0ZXBpY2tlci1yYW5nZT5cbiAgICogYGBgXG4gICAqXG4gICAqID4gTyBvYmpldG8gcGFkcsOjbyBkZSBsaXRlcmFpcyBzZXLDoSB0cmFkdXppZG8gZGUgYWNvcmRvIGNvbSBvIGlkaW9tYSBkb1xuICAgKiBbYFBvSTE4blNlcnZpY2VgXSgvZG9jdW1lbnRhdGlvbi9wby1pMThuKSBvdSBkbyBicm93c2VyLlxuICAgKi9cbiAgQElucHV0KCdwLWxpdGVyYWxzJykgc2V0IGxpdGVyYWxzKHZhbHVlOiBQb0RhdGVwaWNrZXJSYW5nZUxpdGVyYWxzKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0ICYmICEodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkpIHtcbiAgICAgIHRoaXMuX2xpdGVyYWxzID0ge1xuICAgICAgICAuLi5wb0RhdGVwaWNrZXJSYW5nZUxpdGVyYWxzRGVmYXVsdFtwb0xvY2FsZURlZmF1bHRdLFxuICAgICAgICAuLi5wb0RhdGVwaWNrZXJSYW5nZUxpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlXSxcbiAgICAgICAgLi4udmFsdWVcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2xpdGVyYWxzID0gcG9EYXRlcGlja2VyUmFuZ2VMaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV07XG4gICAgfVxuICB9XG5cbiAgZ2V0IGxpdGVyYWxzKCkge1xuICAgIHJldHVybiB0aGlzLl9saXRlcmFscyB8fCBwb0RhdGVwaWNrZXJSYW5nZUxpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSB1bWEgZGF0YSBtw61uaW1hIHBhcmEgbyBgcG8tZGF0ZXBpY2tlci1yYW5nZWAuXG4gICAqL1xuICBASW5wdXQoJ3AtbWluLWRhdGUnKSBzZXQgbWluRGF0ZSh2YWx1ZTogc3RyaW5nIHwgRGF0ZSkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIGNvbnN0IHllYXIgPSB2YWx1ZS5nZXRGdWxsWWVhcigpO1xuXG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoeWVhciwgdmFsdWUuZ2V0TW9udGgoKSwgdmFsdWUuZ2V0RGF0ZSgpLCAwLCAwLCAwKTtcbiAgICAgIHNldFllYXJGcm9tMFRvMTAwKGRhdGUsIHllYXIpO1xuXG4gICAgICB0aGlzLl9taW5EYXRlID0gZGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbWluRGF0ZSA9IGNvbnZlcnRJc29Ub0RhdGUodmFsdWUsIHRydWUsIGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBnZXQgbWluRGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbWluRGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSB1bWEgZGF0YSBtw6F4aW1hIHBhcmEgbyBgcG8tZGF0ZXBpY2tlci1yYW5nZWAuXG4gICAqL1xuICBASW5wdXQoJ3AtbWF4LWRhdGUnKSBzZXQgbWF4RGF0ZSh2YWx1ZTogc3RyaW5nIHwgRGF0ZSkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIGNvbnN0IHllYXIgPSB2YWx1ZS5nZXRGdWxsWWVhcigpO1xuXG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoeWVhciwgdmFsdWUuZ2V0TW9udGgoKSwgdmFsdWUuZ2V0RGF0ZSgpLCAyMywgNTksIDU5KTtcbiAgICAgIHNldFllYXJGcm9tMFRvMTAwKGRhdGUsIHllYXIpO1xuXG4gICAgICB0aGlzLl9tYXhEYXRlID0gZGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbWF4RGF0ZSA9IGNvbnZlcnRJc29Ub0RhdGUodmFsdWUsIGZhbHNlLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBnZXQgbWF4RGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4RGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBhIHByb3ByaWVkYWRlIG5hdGl2YSBgYXV0b2NvbXBsZXRlYCBkbyBjYW1wbyBjb21vIGBvZmZgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3Atbm8tYXV0b2NvbXBsZXRlJykgc2V0IG5vQXV0b2NvbXBsZXRlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fbm9BdXRvY29tcGxldGUgPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcbiAgfVxuXG4gIGdldCBub0F1dG9jb21wbGV0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbm9BdXRvY29tcGxldGU7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgcXVlIG8gY2FtcG8gc2Vyw6Egc29tZW50ZSBsZWl0dXJhLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtcmVhZG9ubHknKSBzZXQgcmVhZG9ubHkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yZWFkb25seSA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xuXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKHRoaXMuZGF0ZVJhbmdlKTtcbiAgfVxuXG4gIGdldCByZWFkb25seSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZG9ubHk7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgcXVlIG8gY2FtcG8gc2Vyw6Egb2JyaWdhdMOzcmlvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtcmVxdWlyZWQnKSBzZXQgcmVxdWlyZWQocmVxdWlyZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9yZXF1aXJlZCA9IGNvbnZlcnRUb0Jvb2xlYW4ocmVxdWlyZWQpO1xuXG4gICAgdGhpcy52YWxpZGF0ZU1vZGVsKHRoaXMuZGF0ZVJhbmdlKTtcbiAgfVxuXG4gIGdldCByZXF1aXJlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEYXRhIGluaWNpYWwuXG4gICAqL1xuICBASW5wdXQoJ3Atc3RhcnQtZGF0ZScpIHNldCBzdGFydERhdGUoZGF0ZTogc3RyaW5nIHwgRGF0ZSkge1xuICAgIHRoaXMuX3N0YXJ0RGF0ZSA9IHRoaXMuY29udmVydFBhdHRlcm5EYXRlRm9ybWF0KGRhdGUpO1xuICAgIHRoaXMuZGF0ZVJhbmdlLnN0YXJ0ID0gdGhpcy5zdGFydERhdGU7XG5cbiAgICB0aGlzLnVwZGF0ZVNjcmVlbkJ5TW9kZWwodGhpcy5kYXRlUmFuZ2UpO1xuICAgIHRoaXMudXBkYXRlTW9kZWwodGhpcy5kYXRlUmFuZ2UpO1xuICB9XG5cbiAgZ2V0IHN0YXJ0RGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhcnREYXRlO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHBvRGF0ZVNlcnZpY2U6IFBvRGF0ZVNlcnZpY2UsIGxhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2UpIHtcbiAgICB0aGlzLmxhbmd1YWdlID0gbGFuZ3VhZ2VTZXJ2aWNlLmdldFNob3J0TGFuZ3VhZ2UoKTtcbiAgfVxuXG4gIC8vIEZ1bsOnw6NvIGltcGxlbWVudGFkYSBkbyBDb250cm9sVmFsdWVBY2Nlc3NvclxuICAvLyBVc2FkYSBwYXJhIGludGVyY2VwdGFyIG9zIGVzdGFkb3MgZGUgaGFiaWxpdGFkbyB2aWEgZm9ybXMgYXBpXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIC8vIFVzYWRhIHBhcmEgaW50ZXJjZXB0YXIgYXMgbXVkYW7Dp2FzIGUgbsOjbyBhdHVhbGl6YXIgYXV0b21hdGljYW1lbnRlIG8gTW9kZWxcbiAgcmVnaXN0ZXJPbkNoYW5nZShmdW5jOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlTW9kZWwgPSBmdW5jO1xuICB9XG5cbiAgLy8gRnVuw6fDo28gaW1wbGVtZW50YWRhIGRvIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gIC8vIFVzYWRhIHBhcmEgaW50ZXJjZXB0YXIgYXMgbXVkYW7Dp2FzIGUgbsOjbyBhdHVhbGl6YXIgYXV0b21hdGljYW1lbnRlIG8gTW9kZWxcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZnVuYzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWRNb2RlbCA9IGZ1bmM7XG4gIH1cblxuICByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlPyhmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMudmFsaWRhdG9yQ2hhbmdlID0gZm47XG4gIH1cblxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHtcbiAgICBjb25zdCB2YWx1ZTogUG9EYXRlcGlja2VyUmFuZ2UgPSBjb250cm9sLnZhbHVlIHx8IHt9O1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHZhbHVlLnN0YXJ0ID8gdGhpcy5jb252ZXJ0UGF0dGVybkRhdGVGb3JtYXQodmFsdWUuc3RhcnQpIDogJyc7XG4gICAgY29uc3QgZW5kRGF0ZSA9IHZhbHVlLmVuZCA/IHRoaXMuY29udmVydFBhdHRlcm5EYXRlRm9ybWF0KHZhbHVlLmVuZCkgOiAnJztcblxuICAgIGlmICh0aGlzLnJlcXVpcmVkRGF0ZVJhbmdlRmFpbGVkKHN0YXJ0RGF0ZSwgZW5kRGF0ZSkpIHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJyc7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlcXVpcmVkOiB7XG4gICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnZlcmlmeVZhbGlkRGF0ZShzdGFydERhdGUsIGVuZERhdGUpKSB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMubGl0ZXJhbHMuaW52YWxpZERhdGU7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRlOiB7XG4gICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0ZVJhbmdlT2JqZWN0RmFpbGVkKGNvbnRyb2wudmFsdWUpIHx8IHRoaXMuZGF0ZVJhbmdlRm9ybWF0RmFpbGVkKHN0YXJ0RGF0ZSwgZW5kRGF0ZSkpIHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5saXRlcmFscy5pbnZhbGlkRm9ybWF0O1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRlOiB7XG4gICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0ZVJhbmdlRmFpbGVkKHN0YXJ0RGF0ZSwgZW5kRGF0ZSkpIHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gdGhpcy5saXRlcmFscy5zdGFydERhdGVHcmVhdGVyVGhhbkVuZERhdGU7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGU6IHtcbiAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoKHN0YXJ0RGF0ZSAmJiAhdGhpcy52YWxpZGF0ZURhdGVJblJhbmdlKHN0YXJ0RGF0ZSkpIHx8IChlbmREYXRlICYmICF0aGlzLnZhbGlkYXRlRGF0ZUluUmFuZ2UoZW5kRGF0ZSkpKSB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHRoaXMubGl0ZXJhbHMuZGF0ZU91dE9mUGVyaW9kO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRlOiB7XG4gICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB2YWxpZGF0ZURhdGVJblJhbmdlKHN0YXJ0RGF0ZTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHZhbGlkYXRlRGF0ZVJhbmdlKGNvbnZlcnRJc29Ub0RhdGUoc3RhcnREYXRlLCBmYWxzZSwgZmFsc2UpLCB0aGlzLl9taW5EYXRlLCB0aGlzLl9tYXhEYXRlKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUoZGF0ZVJhbmdlOiBQb0RhdGVwaWNrZXJSYW5nZSk6IHZvaWQge1xuICAgIHRoaXMucmVzZXREYXRlUmFuZ2VJbnB1dFZhbGlkYXRpb24oKTtcblxuICAgIGlmICghZGF0ZVJhbmdlIHx8IHRoaXMuZGF0ZVJhbmdlT2JqZWN0RmFpbGVkKGRhdGVSYW5nZSkpIHtcbiAgICAgIHRoaXMuZGF0ZVJhbmdlID0geyBzdGFydDogJycsIGVuZDogJycgfTtcbiAgICB9XG5cbiAgICBpZiAoIWRhdGVSYW5nZSkge1xuICAgICAgdGhpcy52YWxpZGF0ZU1vZGVsKHRoaXMuZGF0ZVJhbmdlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRlUmFuZ2VPYmplY3RGYWlsZWQoZGF0ZVJhbmdlKSkge1xuICAgICAgdGhpcy51cGRhdGVNb2RlbChkYXRlUmFuZ2UpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzRGF0ZVJhbmdlT2JqZWN0KGRhdGVSYW5nZSkpIHtcbiAgICAgIHRoaXMuZGF0ZVJhbmdlID0ge1xuICAgICAgICBzdGFydDogdGhpcy5jb252ZXJ0UGF0dGVybkRhdGVGb3JtYXQoZGF0ZVJhbmdlLnN0YXJ0KSxcbiAgICAgICAgZW5kOiB0aGlzLmNvbnZlcnRQYXR0ZXJuRGF0ZUZvcm1hdChkYXRlUmFuZ2UuZW5kKVxuICAgICAgfTtcblxuICAgICAgdGhpcy51cGRhdGVNb2RlbCh0aGlzLmRhdGVSYW5nZSk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVTY3JlZW5CeU1vZGVsKHRoaXMuZGF0ZVJhbmdlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBkYXRlRm9ybWF0RmFpbGVkKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsdWUgJiYgIXRoaXMucG9EYXRlU2VydmljZS5pc1ZhbGlkSXNvKHZhbHVlKTtcbiAgfVxuXG4gIC8vIEV4ZWN1dGEgYSBmdW7Dp8OjbyBvbkNoYW5nZVxuICBwcm90ZWN0ZWQgdXBkYXRlTW9kZWwodmFsdWU6IGFueSkge1xuICAgIGNvbnN0IG1vZGVsID0gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyA/IHsgLi4udmFsdWUgfSA6IHZhbHVlO1xuICAgIC8vIFF1YW5kbyBvIGlucHV0IG7Do28gcG9zc3VpIHVtIGZvcm11bMOhcmlvLCBlbnTDo28gZXN0YSBmdW7Dp8OjbyBuw6NvIMOpIHJlZ2lzdHJhZGFcbiAgICBpZiAodGhpcy5vbkNoYW5nZU1vZGVsKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlTW9kZWwobW9kZWwpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZU1vZGVsKHZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCBtb2RlbCA9IHsgLi4udmFsdWUgfTtcbiAgICBpZiAodGhpcy52YWxpZGF0b3JDaGFuZ2UpIHtcbiAgICAgIHRoaXMudmFsaWRhdG9yQ2hhbmdlKG1vZGVsKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgdmVyaWZ5VmFsaWREYXRlKHN0YXJ0RGF0ZTogc3RyaW5nLCBlbmREYXRlOiBzdHJpbmcpIHtcbiAgICBpZiAoc3RhcnREYXRlICE9PSAnJyAmJiBlbmREYXRlICE9PSAnJykge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0ZUlzVmFsaWQoc3RhcnREYXRlKSAmJiB0aGlzLmRhdGVJc1ZhbGlkKGVuZERhdGUpO1xuICAgIH0gZWxzZSBpZiAoc3RhcnREYXRlICE9PSAnJykge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0ZUlzVmFsaWQoc3RhcnREYXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0ZUlzVmFsaWQoZW5kRGF0ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0UGF0dGVybkRhdGVGb3JtYXQodmFsdWU6IGFueSkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnBvRGF0ZVNlcnZpY2UuY29udmVydERhdGVUb0lTTyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBkYXRlUmFuZ2VGYWlsZWQoc3RhcnREYXRlOiBzdHJpbmcsIGVuZERhdGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5wb0RhdGVTZXJ2aWNlLmlzRGF0ZVJhbmdlVmFsaWQoZW5kRGF0ZSwgc3RhcnREYXRlKSB8fCAhdGhpcy5pc1N0YXJ0RGF0ZVJhbmdlSW5wdXRWYWxpZDtcbiAgfVxuXG4gIHByaXZhdGUgZGF0ZVJhbmdlRm9ybWF0RmFpbGVkKHN0YXJ0RGF0ZTogc3RyaW5nLCBlbmREYXRlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kYXRlRm9ybWF0RmFpbGVkKGVuZERhdGUpIHx8IHRoaXMuZGF0ZUZvcm1hdEZhaWxlZChzdGFydERhdGUpIHx8ICF0aGlzLmlzRGF0ZVJhbmdlSW5wdXRGb3JtYXRWYWxpZDtcbiAgfVxuXG4gIHByaXZhdGUgZGF0ZVJhbmdlT2JqZWN0RmFpbGVkKHZhbHVlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHZhbHVlICYmICF0aGlzLmlzRGF0ZVJhbmdlT2JqZWN0KHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNEYXRlUmFuZ2VPYmplY3QodmFsdWUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsdWUgJiYgdmFsdWUuaGFzT3duUHJvcGVydHkoJ3N0YXJ0JykgJiYgdmFsdWUuaGFzT3duUHJvcGVydHkoJ2VuZCcpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXF1aXJlZERhdGVSYW5nZUZhaWxlZChzdGFydERhdGU6IHN0cmluZywgZW5kRGF0ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuaXNEYXRlUmFuZ2VJbnB1dFZhbGlkICYmXG4gICAgICByZXF1aXJlZEZhaWxlZCh0aGlzLnJlcXVpcmVkLCB0aGlzLmRpc2FibGVkLCBzdGFydERhdGUpICYmXG4gICAgICByZXF1aXJlZEZhaWxlZCh0aGlzLnJlcXVpcmVkLCB0aGlzLmRpc2FibGVkLCBlbmREYXRlKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGRhdGVJc1ZhbGlkKGRhdGU6IHN0cmluZykge1xuICAgIGNvbnN0IFtzdHJZZWFyLCBzdHJNb250aCwgc3RyRGF5XSA9IGRhdGUuc3BsaXQoJy0nKTtcbiAgICBjb25zdCB5ZWFyID0gTnVtYmVyKHN0clllYXIpO1xuICAgIGNvbnN0IG1vbnRoID0gTnVtYmVyKHN0ck1vbnRoKTtcbiAgICBjb25zdCBkYXkgPSBOdW1iZXIoc3RyRGF5KTtcblxuICAgIC8vdmVyaWZpY2HDp8OjbyBkb3MgbWVzZXMgY29tIDMxIGRpYXNcbiAgICBpZiAobW9udGggPT09IDEgfHwgbW9udGggPT09IDMgfHwgbW9udGggPT09IDUgfHwgbW9udGggPT09IDcgfHwgbW9udGggPT09IDggfHwgbW9udGggPT09IDEwIHx8IG1vbnRoID09PSAxMikge1xuICAgICAgcmV0dXJuIGRheSA8IDEgfHwgZGF5ID4gMzEgPyBmYWxzZSA6IHRydWU7XG4gICAgfSBlbHNlIGlmIChtb250aCA9PT0gNCB8fCBtb250aCA9PT0gNiB8fCBtb250aCA9PT0gOSB8fCBtb250aCA9PT0gMTEpIHtcbiAgICAgIC8vdmVyaWZpY2HDp8OjbyBkb3MgbWVzZXMgY29tIDMwIGRpYXNcbiAgICAgIHJldHVybiBkYXkgPCAxIHx8IGRheSA+IDMwID8gZmFsc2UgOiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvL3ZlcmlmaWNhY2FvIGRlIGFubyBiaXNzZXh0byBwYXJhIHZlcmlmaWNhciBhdMOpIHF1YWwgZGlhIGlyw6EgbyBtw6pzIGRlIGZldmVyZWlyb1xuICAgICAgaWYgKCh5ZWFyICUgNCA9PT0gMCAmJiB5ZWFyICUgMTAwICE9PSAwKSB8fCB5ZWFyICUgNDAwID09PSAwKSB7XG4gICAgICAgIHJldHVybiBkYXkgPCAxIHx8IGRheSA+IDI5ID8gZmFsc2UgOiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGRheSA8IDEgfHwgZGF5ID4gMjggPyBmYWxzZSA6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHJlc2V0RGF0ZVJhbmdlSW5wdXRWYWxpZGF0aW9uKCk6IHZvaWQ7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHVwZGF0ZVNjcmVlbkJ5TW9kZWwoZGF0ZVJhbmdlOiBQb0RhdGVwaWNrZXJSYW5nZSk7XG59XG4iXX0=
|
package/esm2015/lib/components/po-field/po-datepicker-range/po-datepicker-range.component.js
CHANGED
|
@@ -116,6 +116,11 @@ export class PoDatepickerRangeComponent extends PoDatepickerRangeBaseComponent {
|
|
|
116
116
|
// Classe de máscara
|
|
117
117
|
this.poMaskObject = this.buildMask();
|
|
118
118
|
}
|
|
119
|
+
ngOnChanges(changes) {
|
|
120
|
+
if (changes.minDate || changes.maxDate) {
|
|
121
|
+
this.validateModel(this.dateRange);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
119
124
|
ngOnDestroy() {
|
|
120
125
|
this.removeListeners();
|
|
121
126
|
}
|
|
@@ -248,7 +253,7 @@ export class PoDatepickerRangeComponent extends PoDatepickerRangeBaseComponent {
|
|
|
248
253
|
getDateRangeFormatValidation(startDate, endDate, isStartDateTargetEvent) {
|
|
249
254
|
this.setDateRangeInputValidation(startDate, endDate);
|
|
250
255
|
return {
|
|
251
|
-
isValid: this.isDateRangeInputFormatValid && this.isStartDateRangeInputValid,
|
|
256
|
+
isValid: this.isDateRangeInputFormatValid && this.isStartDateRangeInputValid && this.verifyValidDate(startDate, endDate),
|
|
252
257
|
dateRangeModel: this.getValidatedModel(startDate, endDate, isStartDateTargetEvent)
|
|
253
258
|
};
|
|
254
259
|
}
|
|
@@ -409,7 +414,7 @@ export class PoDatepickerRangeComponent extends PoDatepickerRangeBaseComponent {
|
|
|
409
414
|
PoDatepickerRangeComponent.decorators = [
|
|
410
415
|
{ type: Component, args: [{
|
|
411
416
|
selector: 'po-datepicker-range',
|
|
412
|
-
template: "<po-field-container [p-help]=\"help\" [p-label]=\"label\" [p-optional]=\"!required && optional\">\n <div #dateRangeField class=\"po-datepicker-range-field po-input\" [class.po-datepicker-range-field-disabled]=\"disabled\">\n <div class=\"po-datepicker-range-start-date\">\n <input\n #startDateInput\n class=\"po-datepicker-range-input\"\n maxlength=\"10\"\n type=\"text\"\n [autocomplete]=\"autocomplete\"\n [disabled]=\"disabled\"\n [name]=\"startDateInputName\"\n [readonly]=\"readonly\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n (keydown)=\"onKeydown($event)\"\n (keyup)=\"onKeyup($event)\"\n (click)=\"eventOnClick($event)\"\n />\n </div>\n\n <div class=\"po-datepicker-range-separator\">-</div>\n\n <div class=\"po-datepicker-range-end-date\">\n <input\n #endDateInput\n class=\"po-datepicker-range-input\"\n maxlength=\"10\"\n type=\"text\"\n [autocomplete]=\"autocomplete\"\n [disabled]=\"disabled\"\n [name]=\"endDateInputName\"\n [readonly]=\"readonly\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n (keydown)=\"onKeydown($event)\"\n (keyup)=\"onKeyup($event)\"\n (click)=\"eventOnClick($event)\"\n />\n </div>\n\n <div class=\"po-datepicker-range-icon\">\n <po-clean *ngIf=\"enableCleaner\" (p-change-event)=\"clear()\"></po-clean>\n </div>\n\n <div class=\"po-datepicker-range-icon\">\n <span\n #iconCalendar\n class=\"po-icon po-field-icon po-icon-calendar\"\n [class.po-clickable]=\"!disabled && !readonly\"\n [class.po-field-icon-disabled]=\"disabled || readonly\"\n (click)=\"toggleCalendar()\"\n >\n </span>\n </div>\n </div>\n\n <po-field-container-bottom [p-error-pattern]=\"getErrorMessage\"></po-field-container-bottom>\n</po-field-container>\n\n<ng-container *ngIf=\"isCalendarVisible\">\n <div #calendarPicker class=\"po-calendar-range-picker\">\n <po-calendar
|
|
417
|
+
template: "<po-field-container [p-help]=\"help\" [p-label]=\"label\" [p-optional]=\"!required && optional\">\n <div #dateRangeField class=\"po-datepicker-range-field po-input\" [class.po-datepicker-range-field-disabled]=\"disabled\">\n <div class=\"po-datepicker-range-start-date\">\n <input\n #startDateInput\n class=\"po-datepicker-range-input\"\n maxlength=\"10\"\n type=\"text\"\n [autocomplete]=\"autocomplete\"\n [disabled]=\"disabled\"\n [name]=\"startDateInputName\"\n [readonly]=\"readonly\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n (keydown)=\"onKeydown($event)\"\n (keyup)=\"onKeyup($event)\"\n (click)=\"eventOnClick($event)\"\n />\n </div>\n\n <div class=\"po-datepicker-range-separator\">-</div>\n\n <div class=\"po-datepicker-range-end-date\">\n <input\n #endDateInput\n class=\"po-datepicker-range-input\"\n maxlength=\"10\"\n type=\"text\"\n [autocomplete]=\"autocomplete\"\n [disabled]=\"disabled\"\n [name]=\"endDateInputName\"\n [readonly]=\"readonly\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n (keydown)=\"onKeydown($event)\"\n (keyup)=\"onKeyup($event)\"\n (click)=\"eventOnClick($event)\"\n />\n </div>\n\n <div class=\"po-datepicker-range-icon\">\n <po-clean *ngIf=\"enableCleaner\" (p-change-event)=\"clear()\"></po-clean>\n </div>\n\n <div class=\"po-datepicker-range-icon\">\n <span\n #iconCalendar\n class=\"po-icon po-field-icon po-icon-calendar\"\n [class.po-clickable]=\"!disabled && !readonly\"\n [class.po-field-icon-disabled]=\"disabled || readonly\"\n (click)=\"toggleCalendar()\"\n >\n </span>\n </div>\n </div>\n\n <po-field-container-bottom [p-error-pattern]=\"getErrorMessage\"></po-field-container-bottom>\n</po-field-container>\n\n<ng-container *ngIf=\"isCalendarVisible\">\n <div #calendarPicker class=\"po-calendar-range-picker\">\n <po-calendar\n p-mode=\"range\"\n [ngModel]=\"dateRange\"\n [p-max-date]=\"maxDate\"\n [p-min-date]=\"minDate\"\n (ngModelChange)=\"onCalendarChange($event)\"\n ></po-calendar>\n </div>\n</ng-container>\n",
|
|
413
418
|
providers
|
|
414
419
|
},] }
|
|
415
420
|
];
|
|
@@ -428,4 +433,4 @@ PoDatepickerRangeComponent.propDecorators = {
|
|
|
428
433
|
iconCalendar: [{ type: ViewChild, args: ['iconCalendar', { read: ElementRef, static: true },] }],
|
|
429
434
|
calendarPicker: [{ type: ViewChild, args: ['calendarPicker', { read: ElementRef },] }]
|
|
430
435
|
};
|
|
431
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZGF0ZXBpY2tlci1yYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tZGF0ZXBpY2tlci1yYW5nZS9wby1kYXRlcGlja2VyLXJhbmdlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUVWLFNBQVMsRUFFVCxTQUFTLEVBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFFQUFxRSxDQUFDO0FBRy9HLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFFdEYsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDO0FBQ3hCLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQztBQUN6QixNQUFNLFlBQVksR0FBRyxDQUFDLENBQUM7QUFDdkIsTUFBTSxrQ0FBa0MsR0FBRyxFQUFFLENBQUM7QUFFOUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLENBQUM7QUFDbEMsTUFBTSx5QkFBeUIsR0FBRyxhQUFhLENBQUM7QUFFaEQsMEJBQTBCO0FBQzFCLE1BQU0sU0FBUyxHQUFHO0lBQ2hCO1FBQ0UsT0FBTyxFQUFFLGlCQUFpQjtRQUMxQiwyQkFBMkI7UUFDM0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyww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Q2hDO0lBQ0gsQ0FBQzs7O1lBL2VGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQix1c0VBQW1EO2dCQUNuRCxTQUFTO2FBQ1Y7OztZQTNFQyxpQkFBaUI7WUFZVix3QkFBd0I7WUFML0IsU0FBUztZQVNGLGFBQWE7WUFkcEIsVUFBVTtZQWdCSCxpQkFBaUI7Ozs2QkE2RHZCLFNBQVMsU0FBQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTsyQkFDOUQsU0FBUyxTQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTs2QkFDNUQsU0FBUyxTQUFDLGdCQUFnQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOzJCQUM5RCxTQUFTLFNBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOzZCQUM1RCxTQUFTLFNBQUMsZ0JBQWdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgZm9yd2FyZFJlZixcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG4gIEFmdGVyVmlld0luaXQsXG4gIFJlbmRlcmVyMixcbiAgT25EZXN0cm95XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFBvQ29udHJvbFBvc2l0aW9uU2VydmljZSB9IGZyb20gJy4vLi4vLi4vLi4vc2VydmljZXMvcG8tY29udHJvbC1wb3NpdGlvbi9wby1jb250cm9sLXBvc2l0aW9uLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBQb0RhdGVwaWNrZXJSYW5nZSB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1kYXRlcGlja2VyLXJhbmdlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb0RhdGVwaWNrZXJSYW5nZUJhc2VDb21wb25lbnQgfSBmcm9tICcuL3BvLWRhdGVwaWNrZXItcmFuZ2UtYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9EYXRlU2VydmljZSB9IGZyb20gJy4vLi4vLi4vLi4vc2VydmljZXMvcG8tZGF0ZS9wby1kYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9NYXNrIH0gZnJvbSAnLi4vcG8taW5wdXQvcG8tbWFzayc7XG5pbXBvcnQgeyBQb0xhbmd1YWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLnNlcnZpY2UnO1xuXG5jb25zdCBhcnJvd0xlZnRLZXkgPSAzNztcbmNvbnN0IGFycm93UmlnaHRLZXkgPSAzOTtcbmNvbnN0IGJhY2tzcGFjZUtleSA9IDg7XG5jb25zdCBwb0RhdGVwaWNrZXJSYW5nZURhdGVMZW5ndGhEZWZhdWx0ID0gMTA7XG5cbmNvbnN0IHBvQ2FsZW5kYXJDb250ZW50T2Zmc2V0ID0gODtcbmNvbnN0IHBvQ2FsZW5kYXJQb3NpdGlvbkRlZmF1bHQgPSAnYm90dG9tLWxlZnQnO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuY29uc3QgcHJvdmlkZXJzID0gW1xuICB7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUG9EYXRlcGlja2VyUmFuZ2VDb21wb25lbnQpLFxuICAgIG11bHRpOiB0cnVlXG4gIH0sXG4gIHtcbiAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBvRGF0ZXBpY2tlclJhbmdlQ29tcG9uZW50KSxcbiAgICBtdWx0aTogdHJ1ZVxuICB9LFxuICBQb0NvbnRyb2xQb3NpdGlvblNlcnZpY2Vcbl07XG4vKipcbiAqIEBkb2NzRXh0ZW5kcyBQb0RhdGVwaWNrZXJSYW5nZUJhc2VDb21wb25lbnRcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1kYXRlcGlja2VyLXJhbmdlLWJhc2ljXCIgdGl0bGU9XCJQTyBEYXRlcGlja2VyIFJhbmdlIEJhc2ljXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kYXRlcGlja2VyLXJhbmdlLWJhc2ljL3NhbXBsZS1wby1kYXRlcGlja2VyLXJhbmdlLWJhc2ljLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWRhdGVwaWNrZXItcmFuZ2UtYmFzaWMvc2FtcGxlLXBvLWRhdGVwaWNrZXItcmFuZ2UtYmFzaWMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tZGF0ZXBpY2tlci1yYW5nZS1sYWJzXCIgdGl0bGU9XCJQTyBEYXRlcGlja2VyIFJhbmdlIExhYnNcIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWRhdGVwaWNrZXItcmFuZ2UtbGFicy9zYW1wbGUtcG8tZGF0ZXBpY2tlci1yYW5nZS1sYWJzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWRhdGVwaWNrZXItcmFuZ2UtbGFicy9zYW1wbGUtcG8tZGF0ZXBpY2tlci1yYW5nZS1sYWJzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWRhdGVwaWNrZXItcmFuZ2UtdmFjYXRpb25zXCIgdGl0bGU9XCJQTyBEYXRlcGlja2VyIFJhbmdlIC0gVmFjYXRpb25zIFN1Z2dlc3Rpb25cIj5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWRhdGVwaWNrZXItcmFuZ2UtdmFjYXRpb25zL3NhbXBsZS1wby1kYXRlcGlja2VyLXJhbmdlLXZhY2F0aW9ucy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kYXRlcGlja2VyLXJhbmdlLXZhY2F0aW9ucy9zYW1wbGUtcG8tZGF0ZXBpY2tlci1yYW5nZS12YWNhdGlvbnMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tZGF0ZXBpY2tlci1yYW5nZS12YWNhdGlvbnMtcmVhY3RpdmUtZm9ybVwiIHRpdGxlPVwiUE8gRGF0ZXBpY2tlciBSYW5nZSAtIFZhY2F0aW9ucyBSZWFjdGl2ZSBGb3JtXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kYXRlcGlja2VyLXJhbmdlLXZhY2F0aW9ucy1yZWFjdGl2ZS1mb3JtL3NhbXBsZS1wby1kYXRlcGlja2VyLXJhbmdlLXZhY2F0aW9ucy1yZWFjdGl2ZS1mb3JtLmNvbXBvbmVudC5odG1sXCI+XG4gKiAgPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZGF0ZXBpY2tlci1yYW5nZS12YWNhdGlvbnMtcmVhY3RpdmUtZm9ybS9zYW1wbGUtcG8tZGF0ZXBpY2tlci1yYW5nZS12YWNhdGlvbnMtcmVhY3RpdmUtZm9ybS5jb21wb25lbnQudHNcIj5cbiAqICA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BvLWRhdGVwaWNrZXItcmFuZ2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tZGF0ZXBpY2tlci1yYW5nZS5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyc1xufSlcbmV4cG9ydCBjbGFzcyBQb0RhdGVwaWNrZXJSYW5nZUNvbXBvbmVudFxuICBleHRlbmRzIFBvRGF0ZXBpY2tlclJhbmdlQmFzZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgnZGF0ZVJhbmdlRmllbGQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBkYXRlUmFuZ2VGaWVsZDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnZW5kRGF0ZUlucHV0JywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgZW5kRGF0ZUlucHV0OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdzdGFydERhdGVJbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIHN0YXJ0RGF0ZUlucHV0OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdpY29uQ2FsZW5kYXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBpY29uQ2FsZW5kYXI6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2NhbGVuZGFyUGlja2VyJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGNhbGVuZGFyUGlja2VyOiBFbGVtZW50UmVmO1xuXG4gIGlzQ2FsZW5kYXJWaXNpYmxlID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBjbGlja0xpc3RlbmVyO1xuICBwcml2YXRlIGV2ZW50UmVzaXplTGlzdGVuZXI7XG4gIHByaXZhdGUgcG9EYXRlcGlja2VyUmFuZ2VFbGVtZW50OiBFbGVtZW50UmVmPGFueT47XG4gIHByaXZhdGUgcG9NYXNrT2JqZWN0OiBQb01hc2s7XG5cbiAgZ2V0IGF1dG9jb21wbGV0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ub0F1dG9jb21wbGV0ZSA/ICdvZmYnIDogJ29uJztcbiAgfVxuXG4gIGdldCBlbmFibGVDbGVhbmVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNsZWFuICYmICh0aGlzLnN0YXJ0RGF0ZUlucHV0VmFsdWUgfHwgdGhpcy5lbmREYXRlSW5wdXRWYWx1ZSkgJiYgIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMucmVhZG9ubHk7XG4gIH1cblxuICBnZXQgZW5kRGF0ZUlucHV0TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnZW5kLWRhdGUnO1xuICB9XG5cbiAgZ2V0IGVuZERhdGVJbnB1dFZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZW5kRGF0ZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gIH1cblxuICBnZXQgZ2V0RXJyb3JNZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JNZXNzYWdlICE9PSAnJyAmJiB0aGlzLmhhc0ludmFsaWRDbGFzcygpID8gdGhpcy5lcnJvck1lc3NhZ2UgOiAnJztcbiAgfVxuXG4gIGdldCBpc0RhdGVSYW5nZUlucHV0VW5jb21wbGV0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuZW5kRGF0ZUlucHV0VmFsdWUubGVuZ3RoIDwgcG9EYXRlcGlja2VyUmFuZ2VEYXRlTGVuZ3RoRGVmYXVsdCAmJlxuICAgICAgdGhpcy5zdGFydERhdGVJbnB1dFZhbHVlLmxlbmd0aCA8IHBvRGF0ZXBpY2tlclJhbmdlRGF0ZUxlbmd0aERlZmF1bHRcbiAgICApO1xuICB9XG5cbiAgZ2V0IGlzRGlydHlEYXRlUmFuZ2VJbnB1dCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lbmREYXRlSW5wdXRWYWx1ZS5sZW5ndGggPiAwIHx8IHRoaXMuc3RhcnREYXRlSW5wdXRWYWx1ZS5sZW5ndGggPiAwO1xuICB9XG5cbiAgZ2V0IHN0YXJ0RGF0ZUlucHV0TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnc3RhcnQtZGF0ZSc7XG4gIH1cblxuICBnZXQgc3RhcnREYXRlSW5wdXRWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN0YXJ0RGF0ZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGNvbnRyb2xQb3NpdGlvbjogUG9Db250cm9sUG9zaXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwb0RhdGVTZXJ2aWNlOiBQb0RhdGVTZXJ2aWNlLFxuICAgIHBvRGF0ZXBpY2tlclJhbmdlRWxlbWVudDogRWxlbWVudFJlZixcbiAgICBwb0xhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIocG9EYXRlU2VydmljZSwgcG9MYW5ndWFnZVNlcnZpY2UpO1xuICAgIHRoaXMucG9EYXRlcGlja2VyUmFuZ2VFbGVtZW50ID0gcG9EYXRlcGlja2VyUmFuZ2VFbGVtZW50O1xuICB9XG5cbiAgc3RhdGljIGdldEtleUNvZGUoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICByZXR1cm4gZXZlbnQua2V5Q29kZSB8fCBldmVudC53aGljaDtcbiAgfVxuXG4gIHN0YXRpYyBnZXRUYXJnZXRFbGVtZW50KGV2ZW50OiBhbnkpIHtcbiAgICByZXR1cm4gZXZlbnQudGFyZ2V0IHx8IGV2ZW50LnNyY0VsZW1lbnQ7XG4gIH1cblxuICBzdGF0aWMgaXNWYWxpZEtleShrZXlDb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBpc051bWVyaWNLZXkgPSBrZXlDb2RlID49IDQ4ICYmIGtleUNvZGUgPD0gNTc7XG4gICAgY29uc3QgaXNOdW1lcmljTnVtcGFkS2V5ID0ga2V5Q29kZSA+PSA5NiAmJiBrZXlDb2RlIDw9IDEwNTtcblxuICAgIHJldHVybiBpc051bWVyaWNLZXkgfHwgaXNOdW1lcmljTnVtcGFkS2V5O1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmF1dG9Gb2N1cykge1xuICAgICAgdGhpcy5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIENsYXNzZSBkZSBtw6FzY2FyYVxuICAgIHRoaXMucG9NYXNrT2JqZWN0ID0gdGhpcy5idWlsZE1hc2soKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucmVtb3ZlTGlzdGVuZXJzKCk7XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICB0aGlzLnJlc2V0RGF0ZVJhbmdlSW5wdXRWYWxpZGF0aW9uKCk7XG4gICAgdGhpcy5kYXRlUmFuZ2UgPSB7IHN0YXJ0OiAnJywgZW5kOiAnJyB9O1xuXG4gICAgdGhpcy51cGRhdGVTY3JlZW5CeU1vZGVsKHRoaXMuZGF0ZVJhbmdlKTtcbiAgICB0aGlzLnVwZGF0ZU1vZGVsKHRoaXMuZGF0ZVJhbmdlKTtcbiAgfVxuXG4gIGV2ZW50T25DbGljaygkZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucG9NYXNrT2JqZWN0LmNsaWNrKCRldmVudCk7XG4gIH1cblxuICAvKipcbiAgICogRnVuw6fDo28gcXVlIGF0cmlidWkgZm9jbyBhbyBjb21wb25lbnRlLlxuICAgKlxuICAgKiBQYXJhIHV0aWxpesOhLWxhIMOpIG5lY2Vzc8OhcmlvIHRlciBhIGluc3TDom5jaWEgZG8gY29tcG9uZW50ZSBubyBET00sIHBvZGVuZG8gc2VyIHV0aWxpemFkbyBvIFZpZXdDaGlsZCBkYSBzZWd1aW50ZSBmb3JtYTpcbiAgICpcbiAgICogYGBgXG4gICAqIGltcG9ydCB7IFBvRGF0ZXBpY2tlclJhbmdlQ29tcG9uZW50IH0gZnJvbSAnQHBvLXVpL25nLWNvbXBvbmVudHMnO1xuICAgKlxuICAgKiAuLi5cbiAgICpcbiAgICogQFZpZXdDaGlsZChQb0RhdGVwaWNrZXJSYW5nZUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSkgZGF0ZXBpY2tlclJhbmdlOiBQb0RhdGVwaWNrZXJSYW5nZUNvbXBvbmVudDtcbiAgICpcbiAgICogZm9jdXNEYXRlcGlja2VyUmFuZ2UoKSB7XG4gICAqICAgdGhpcy5kYXRlcGlja2VyUmFuZ2UuZm9jdXMoKTtcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGZvY3VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5zdGFydERhdGVJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgb25CbHVyKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLm9uVG91Y2hlZE1vZGVsPy4oKTtcbiAgICBjb25zdCBpc1N0YXJ0RGF0ZVRhcmdldEV2ZW50ID0gZXZlbnQudGFyZ2V0Lm5hbWUgPT09IHRoaXMuc3RhcnREYXRlSW5wdXROYW1lO1xuXG4gICAgdGhpcy51cGRhdGVNb2RlbEJ5U2NyZWVuKGlzU3RhcnREYXRlVGFyZ2V0RXZlbnQpO1xuXG4gICAgdGhpcy5yZW1vdmVGb2N1c0Zyb21EYXRlUGlja2VyUmFuZ2VGaWVsZCgpO1xuICB9XG5cbiAgb25DYWxlbmRhckNoYW5nZSh7IHN0YXJ0LCBlbmQgfSkge1xuICAgIGNvbnN0IGlzU3RhcnREYXRlVGFyZ2V0RXZlbnQgPSBzdGFydCAmJiAhZW5kO1xuXG4gICAgdGhpcy51cGRhdGVTY3JlZW5CeU1vZGVsKHsgc3RhcnQ6IHN0YXJ0IHx8ICcnLCBlbmQ6IGVuZCB8fCAnJyB9KTtcbiAgICB0aGlzLnVwZGF0ZU1vZGVsQnlTY3JlZW4oaXNTdGFydERhdGVUYXJnZXRFdmVudCwgc3RhcnQgfHwgJycsIGVuZCB8fCAnJyk7XG5cbiAgICBpZiAoc3RhcnQgJiYgZW5kKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+ICh0aGlzLmlzQ2FsZW5kYXJWaXNpYmxlID0gZmFsc2UpLCAzMDApO1xuICAgIH1cbiAgfVxuXG4gIG9uRm9jdXMoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuYXBwbHlGb2N1c09uRGF0ZVBpY2tlclJhbmdlRmllbGQoKTtcbiAgICB0aGlzLnBvTWFza09iamVjdC5yZXNldFBvc2l0aW9ucyhldmVudCk7XG4gIH1cblxuICBvbktleWRvd24oZXZlbnQ/OiBhbnkpIHtcbiAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzU2V0Rm9jdXNPbkJhY2tzcGFjZShldmVudCkpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLnNldEZvY3VzT25CYWNrc3BhY2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wb01hc2tPYmplY3Qua2V5ZG93bihldmVudCk7XG4gICAgfVxuICB9XG5cbiAgb25LZXl1cChldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpc1N0YXJ0RGF0ZVRhcmdldEV2ZW50ID0gZXZlbnQudGFyZ2V0Lm5hbWUgPT09IHRoaXMuc3RhcnREYXRlSW5wdXROYW1lO1xuXG4gICAgdGhpcy5zZXRGb2N1cyhldmVudCk7XG4gICAgdGhpcy5wb01hc2tPYmplY3Qua2V5dXAoZXZlbnQpO1xuICAgIHRoaXMudXBkYXRlTW9kZWxXaGVuQ29tcGxldGUoaXNTdGFydERhdGVUYXJnZXRFdmVudCwgdGhpcy5zdGFydERhdGVJbnB1dFZhbHVlLCB0aGlzLmVuZERhdGVJbnB1dFZhbHVlKTtcbiAgfVxuXG4gIHJlc2V0RGF0ZVJhbmdlSW5wdXRWYWxpZGF0aW9uKCkge1xuICAgIHRoaXMuaXNTdGFydERhdGVSYW5nZUlucHV0VmFsaWQgPSB0cnVlO1xuICAgIHRoaXMuaXNEYXRlUmFuZ2VJbnB1dEZvcm1hdFZhbGlkID0gdHJ1ZTtcbiAgfVxuXG4gIHRvZ2dsZUNhbGVuZGFyKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlzQ2FsZW5kYXJWaXNpYmxlID0gIXRoaXMuaXNDYWxlbmRhclZpc2libGU7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICBpZiAodGhpcy5pc0NhbGVuZGFyVmlzaWJsZSkge1xuICAgICAgdGhpcy5zZXRDYWxlbmRhclBvc2l0aW9uKCk7XG4gICAgICB0aGlzLmluaXRpYWxpemVMaXN0ZW5lcnMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZW1vdmVMaXN0ZW5lcnMoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVTY3JlZW5CeU1vZGVsKG1vZGVsOiBQb0RhdGVwaWNrZXJSYW5nZSkge1xuICAgIGNvbnN0IGRhdGVSYW5nZSA9IHsgc3RhcnQ6IG1vZGVsLnN0YXJ0IGFzIHN0cmluZywgZW5kOiBtb2RlbC5lbmQgYXMgc3RyaW5nIH07XG4gICAgY29uc3QgaXNTdGFydERhdGVWYWxpZCA9IHRoaXMucG9EYXRlU2VydmljZS5pc0RhdGVSYW5nZVZhbGlkKGRhdGVSYW5nZS5lbmQsIGRhdGVSYW5nZS5zdGFydCk7XG4gICAgY29uc3QgaXNEYXRlVmFsaWQgPSBkYXRlID0+ICF0aGlzLmRhdGVGb3JtYXRGYWlsZWQoZGF0ZSkgJiYgaXNTdGFydERhdGVWYWxpZDtcblxuICAgIGNvbnN0IGVuZERhdGVGb3JtYXRlZCA9IGlzRGF0ZVZhbGlkKGRhdGVSYW5nZS5lbmQpID8gdGhpcy5mb3JtYXRNb2RlbFRvU2NyZWVuKGRhdGVSYW5nZS5lbmQpIDogJyc7XG4gICAgY29uc3Qgc3RhcnREYXRlRm9ybWF0ZWQgPSBpc0RhdGVWYWxpZChkYXRlUmFuZ2Uuc3RhcnQpID8gdGhpcy5mb3JtYXRNb2RlbFRvU2NyZWVuKGRhdGVSYW5nZS5zdGFydCkgOiAnJztcblxuICAgIHRoaXMuZW5kRGF0ZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSBlbmREYXRlRm9ybWF0ZWQ7XG4gICAgdGhpcy5zdGFydERhdGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gc3RhcnREYXRlRm9ybWF0ZWQ7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5Rm9jdXNPbkRhdGVQaWNrZXJSYW5nZUZpZWxkKCkge1xuICAgIHRoaXMuZGF0ZVJhbmdlRmllbGQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdwby1kYXRlcGlja2VyLXJhbmdlLWZpZWxkLWZvY3VzZWQnKTtcbiAgfVxuXG4gIC8vIFJldG9ybmEgdW0gb2JqZXRvIGRvIHRpcG8gUG9NYXNrIGNvbSBhIG1hc2NhcmEgY29uZmlndXJhZGEuXG4gIHByaXZhdGUgYnVpbGRNYXNrKCk6IFBvTWFzayB7XG4gICAgbGV0IG1hc2sgPSB0aGlzLmZvcm1hdC50b1VwcGVyQ2FzZSgpO1xuXG4gICAgbWFzayA9IG1hc2sucmVwbGFjZSgvREQvZywgJzk5Jyk7XG4gICAgbWFzayA9IG1hc2sucmVwbGFjZSgvTU0vZywgJzk5Jyk7XG4gICAgbWFzayA9IG1hc2sucmVwbGFjZSgvWVlZWS9nLCAnOTk5OScpO1xuXG4gICAgcmV0dXJuIG5ldyBQb01hc2sobWFzaywgdHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdERhdGUoZm9ybWF0OiBzdHJpbmcsIGRheTogc3RyaW5nID0gJycsIG1vbnRoOiBzdHJpbmcgPSAnJywgeWVhcjogc3RyaW5nID0gJycpOiBzdHJpbmcge1xuICAgIGxldCBkYXRlRm9ybWF0dGVkID0gZm9ybWF0O1xuXG4gICAgZGF5ID0gZGF5ICYmIGRheS5pbmNsdWRlcygnVCcpID8gZGF5LnNsaWNlKDAsIDIpIDogZGF5O1xuXG4gICAgZGF0ZUZvcm1hdHRlZCA9IGRhdGVGb3JtYXR0ZWQucmVwbGFjZSgnZGQnLCAoJzAnICsgZGF5KS5zbGljZSgtMikpO1xuICAgIGRhdGVGb3JtYXR0ZWQgPSBkYXRlRm9ybWF0dGVkLnJlcGxhY2UoJ21tJywgKCcwJyArIG1vbnRoKS5zbGljZSgtMikpO1xuICAgIGRhdGVGb3JtYXR0ZWQgPSBkYXRlRm9ybWF0dGVkLnJlcGxhY2UoJ3l5eXknLCBTdHJpbmcoeWVhcikpO1xuXG4gICAgcmV0dXJuIGRhdGVGb3JtYXR0ZWQ7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFNjcmVlblRvTW9kZWwodmFsdWU6IHN0cmluZyA9ICcnKTogc3RyaW5nIHtcbiAgICBjb25zdCBbZGF5LCBtb250aCwgeWVhcl0gPSB2YWx1ZS5zcGxpdCgnLycpO1xuXG4gICAgcmV0dXJuIHZhbHVlID8gdGhpcy5mb3JtYXREYXRlKCd5eXl5LW1tLWRkJywgZGF5LCBtb250aCwgeWVhcikgOiAnJztcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0TW9kZWxUb1NjcmVlbih2YWx1ZTogc3RyaW5nID0gJycpOiBzdHJpbmcge1xuICAgIGNvbnN0IFt5ZWFyLCBtb250aCwgZGF5XSA9IHZhbHVlLnNwbGl0KCctJyk7XG5cbiAgICByZXR1cm4gdmFsdWUgPyB0aGlzLmZvcm1hdERhdGUodGhpcy5mb3JtYXQsIGRheSwgbW9udGgsIHllYXIpIDogJyc7XG4gIH1cblxuICBwcml2YXRlIGdldERhdGVSYW5nZUZvcm1hdFZhbGlkYXRpb24oXG4gICAgc3RhcnREYXRlOiBzdHJpbmcsXG4gICAgZW5kRGF0ZTogc3RyaW5nLFxuICAgIGlzU3RhcnREYXRlVGFyZ2V0RXZlbnQ6IGJvb2xlYW5cbiAgKTogeyBpc1ZhbGlkOiBib29sZWFuOyBkYXRlUmFuZ2VNb2RlbDogUG9EYXRlcGlja2VyUmFuZ2UgfSB7XG4gICAgdGhpcy5zZXREYXRlUmFuZ2VJbnB1dFZhbGlkYXRpb24oc3RhcnREYXRlLCBlbmREYXRlKTtcblxuICAgIHJldHVybiB7XG4gICAgICBpc1ZhbGlkOiB0aGlzLmlzRGF0ZVJhbmdlSW5wdXRGb3JtYXRWYWxpZCAmJiB0aGlzLmlzU3RhcnREYXRlUmFuZ2VJbnB1dFZhbGlkLFxuICAgICAgZGF0ZVJhbmdlTW9kZWw6IHRoaXMuZ2V0VmFsaWRhdGVkTW9kZWwoc3RhcnREYXRlLCBlbmREYXRlLCBpc1N0YXJ0RGF0ZVRhcmdldEV2ZW50KVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldFZhbGlkYXRlZE1vZGVsKHN0YXJ0RGF0ZTogc3RyaW5nLCBlbmREYXRlOiBzdHJpbmcsIGlzU3RhcnREYXRlVGFyZ2V0RXZlbnQ6IGJvb2xlYW4pOiBQb0RhdGVwaWNrZXJSYW5nZSB7XG4gICAgY29uc3QgZGF0ZVJhbmdlTW9kZWwgPSB7IHN0YXJ0OiAnJywgZW5kOiAnJyB9O1xuXG4gICAgZGF0ZVJhbmdlTW9kZWwuZW5kID1cbiAgICAgIChpc1N0YXJ0RGF0ZVRhcmdldEV2ZW50IHx8IHRoaXMuaXNTdGFydERhdGVSYW5nZUlucHV0VmFsaWQpICYmICF0aGlzLmRhdGVGb3JtYXRGYWlsZWQoZW5kRGF0ZSkgPyBlbmREYXRlIDogJyc7XG5cbiAgICBkYXRlUmFuZ2VNb2RlbC5zdGFydCA9XG4gICAgICAoIWlzU3RhcnREYXRlVGFyZ2V0RXZlbnQgfHwgdGhpcy5pc1N0YXJ0RGF0ZVJhbmdlSW5wdXRWYWxpZCkgJiYgIXRoaXMuZGF0ZUZvcm1hdEZhaWxlZChzdGFydERhdGUpXG4gICAgICAgID8gc3RhcnREYXRlXG4gICAgICAgIDogJyc7XG5cbiAgICByZXR1cm4gZGF0ZVJhbmdlTW9kZWw7XG4gIH1cblxuICBwcml2YXRlIGhhc0F0dHJDYWxlbmRhcihlbGVtZW50KSB7XG4gICAgY29uc3QgYXR0ckNhbGVuZGFyID0gJ2F0dHItY2FsZW5kYXInO1xuXG4gICAgcmV0dXJuIGVsZW1lbnQ/Lmhhc0F0dHJpYnV0ZShhdHRyQ2FsZW5kYXIpIHx8IGVsZW1lbnQ/LnBhcmVudEVsZW1lbnQ/Lmhhc0F0dHJpYnV0ZShhdHRyQ2FsZW5kYXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNJbnZhbGlkQ2xhc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMucG9EYXRlcGlja2VyUmFuZ2VFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCduZy1pbnZhbGlkJykgJiZcbiAgICAgIHRoaXMucG9EYXRlcGlja2VyUmFuZ2VFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCduZy1kaXJ0eScpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUxpc3RlbmVycygpIHtcbiAgICB0aGlzLmNsaWNrTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnY2xpY2snLCAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIHRoaXMud2FzQ2xpY2tlZE9uUGlja2VyKGV2ZW50KTtcbiAgICB9KTtcblxuICAgIHRoaXMuZXZlbnRSZXNpemVMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKCd3aW5kb3cnLCAncmVzaXplJywgKCkgPT4ge1xuICAgICAgdGhpcy5pc0NhbGVuZGFyVmlzaWJsZSA9IGZhbHNlO1xuICAgIH0pO1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwsIHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0VxdWFsQmVmb3JlVmFsdWUoc3RhcnREYXRlOiBzdHJpbmcsIGVuZERhdGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRGF0ZVJhbmdlSW5wdXRGb3JtYXRWYWxpZCAmJiBlbmREYXRlID09PSB0aGlzLmRhdGVSYW5nZS5lbmQgJiYgc3RhcnREYXRlID09PSB0aGlzLmRhdGVSYW5nZS5zdGFydDtcbiAgfVxuXG4gIHByaXZhdGUgaXNTZXRGb2N1c09uQmFja3NwYWNlKGV2ZW50OiBhbnkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgZXZlbnQudGFyZ2V0Lm5hbWUgPT09IHRoaXMuZW5kRGF0ZUlucHV0TmFtZSAmJlxuICAgICAgdGhpcy5lbmREYXRlSW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9PT0gMCAmJlxuICAgICAgdGhpcy5lbmREYXRlSW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQgPT09IDAgJiZcbiAgICAgIGV2ZW50LmtleUNvZGUgPT09IGJhY2tzcGFjZUtleVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9uU2Nyb2xsID0gKCk6IHZvaWQgPT4ge1xuICAgIGlmICh0aGlzLmlzQ2FsZW5kYXJWaXNpYmxlKSB7XG4gICAgICB0aGlzLmNvbnRyb2xQb3NpdGlvbi5hZGp1c3RQb3NpdGlvbihwb0NhbGVuZGFyUG9zaXRpb25EZWZhdWx0KTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSByZW1vdmVGb2N1c0Zyb21EYXRlUGlja2VyUmFuZ2VGaWVsZCgpIHtcbiAgICB0aGlzLmRhdGVSYW5nZUZpZWxkLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgncG8tZGF0ZXBpY2tlci1yYW5nZS1maWVsZC1mb2N1c2VkJyk7XG4gIH1cblxuICBwcml2YXRlIHNldERhdGVSYW5nZUlucHV0VmFsaWRhdGlvbihzdGFydERhdGU6IHN0cmluZywgZW5kRGF0ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5pc1N0YXJ0RGF0ZVJhbmdlSW5wdXRWYWxpZCA9IHRoaXMucG9EYXRlU2VydmljZS5pc0RhdGVSYW5nZVZhbGlkKGVuZERhdGUsIHN0YXJ0RGF0ZSk7XG5cbiAgICB0aGlzLmlzRGF0ZVJhbmdlSW5wdXRGb3JtYXRWYWxpZCA9ICF0aGlzLmRhdGVGb3JtYXRGYWlsZWQoc3RhcnREYXRlKSAmJiAhdGhpcy5kYXRlRm9ybWF0RmFpbGVkKGVuZERhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRGb2N1cyhldmVudDogYW55KSB7XG4gICAgY29uc3QgaW5wdXRFbGVtZW50ID0gUG9EYXRlcGlja2VyUmFuZ2VDb21wb25lbnQuZ2V0VGFyZ2V0RWxlbWVudChldmVudCk7XG4gICAgY29uc3Qga2V5Q29kZSA9IFBvRGF0ZXBpY2tlclJhbmdlQ29tcG9uZW50LmdldEtleUNvZGUoZXZlbnQpO1xuICAgIGNvbnN0IGlucHV0TmFtZSA9IGlucHV0RWxlbWVudFsnbmFtZSddO1xuXG4gICAgdGhpcy5zZXRGb2N1c09uQXJyb3dMZWZ0KGtleUNvZGUsIGlucHV0TmFtZSk7XG4gICAgdGhpcy5zZXRGb2N1c09uQXJyb3dSaWdodChrZXlDb2RlLCBpbnB1dE5hbWUsIGlucHV0RWxlbWVudCk7XG4gICAgdGhpcy5zZXRGb2N1c09uU3RhcnREYXRlQ29tcGxldGVkKGtleUNvZGUsIGlucHV0TmFtZSk7XG4gIH1cblxuICBwcml2YXRlIHNldEZvY3VzQW5kUG9zaXRpb24ocG9zaXRpb246IG51bWJlciwgaW5wdXRFbGVtZW50OiBFbGVtZW50UmVmLCBzZWxlY3Rpb25SYW5nZTogbnVtYmVyKSB7XG4gICAgdGhpcy5mb2N1c09uRWxlbWVudChpbnB1dEVsZW1lbnQpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShzZWxlY3Rpb25SYW5nZSwgc2VsZWN0aW9uUmFuZ2UpO1xuICAgICAgdGhpcy5wb01hc2tPYmplY3QuaW5pdGlhbFBvc2l0aW9uID0gcG9zaXRpb247XG4gICAgICB0aGlzLnBvTWFza09iamVjdC5maW5hbFBvc2l0aW9uID0gcG9zaXRpb247XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGZvY3VzT25FbGVtZW50KGlucHV0RWxlbWVudDogRWxlbWVudFJlZikge1xuICAgIGlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUxpc3RlbmVycygpIHtcbiAgICBpZiAodGhpcy5jbGlja0xpc3RlbmVyKSB7XG4gICAgICB0aGlzLmNsaWNrTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5ldmVudFJlc2l6ZUxpc3RlbmVyKSB7XG4gICAgICB0aGlzLmV2ZW50UmVzaXplTGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vblNjcm9sbCwgdHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIHNldENhbGVuZGFyUG9zaXRpb24oKSB7XG4gICAgdGhpcy5jb250cm9sUG9zaXRpb24uc2V0RWxlbWVudHMoXG4gICAgICB0aGlzLmNhbGVuZGFyUGlja2VyLm5hdGl2ZUVsZW1lbnQsXG4gICAgICBwb0NhbGVuZGFyQ29udGVudE9mZnNldCxcbiAgICAgIHRoaXMuZGF0ZVJhbmdlRmllbGQsXG4gICAgICBbJ2JvdHRvbS1sZWZ0JywgJ2JvdHRvbS1yaWdodCcsICd0b3AtbGVmdCcsICd0b3AtcmlnaHQnXSxcbiAgICAgIGZhbHNlLFxuICAgICAgdHJ1ZVxuICAgICk7XG5cbiAgICB0aGlzLmNvbnRyb2xQb3NpdGlvbi5hZGp1c3RQb3NpdGlvbihwb0NhbGVuZGFyUG9zaXRpb25EZWZhdWx0KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Rm9jdXNPbkFycm93TGVmdChrZXlDb2RlOiBudW1iZXIsIGlucHV0TmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgaXNDdXJzb3JBdFN0YXJ0T2ZJbnB1dCA9IHRoaXMuZW5kRGF0ZUlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT09IDA7XG5cbiAgICBpZiAoaW5wdXROYW1lID09PSB0aGlzLmVuZERhdGVJbnB1dE5hbWUgJiYgaXNDdXJzb3JBdFN0YXJ0T2ZJbnB1dCAmJiBrZXlDb2RlID09PSBhcnJvd0xlZnRLZXkpIHtcbiAgICAgIGNvbnN0IGlucHV0TGVuZ3RoID0gdGhpcy5zdGFydERhdGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlLmxlbmd0aDtcbiAgICAgIHRoaXMuc2V0Rm9jdXNBbmRQb3NpdGlvbihpbnB1dExlbmd0aCwgdGhpcy5zdGFydERhdGVJbnB1dCwgaW5wdXRMZW5ndGgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0Rm9jdXNPbkFycm93UmlnaHQoa2V5Q29kZTogbnVtYmVyLCBpbnB1dE5hbWU6IHN0cmluZywgaW5wdXRFbGVtZW50OiBhbnkpIHtcbiAgICBjb25zdCBpc0N1cnNvckF0RW5kT2ZJbnB1dCA9IHRoaXMuc3RhcnREYXRlSW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9PT0gaW5wdXRFbGVtZW50LnZhbHVlLmxlbmd0aDtcblxuICAgIGlmIChpbnB1dE5hbWUgPT09IHRoaXMuc3RhcnREYXRlSW5wdXROYW1lICYmIGlzQ3Vyc29yQXRFbmRPZklucHV0ICYmIGtleUNvZGUgPT09IGFycm93UmlnaHRLZXkpIHtcbiAgICAgIHRoaXMuc2V0Rm9jdXNBbmRQb3NpdGlvbigwLCB0aGlzLmVuZERhdGVJbnB1dCwgMCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRGb2N1c09uQmFja3NwYWNlKCkge1xuICAgIGNvbnN0IGlucHV0TGVuZ3RoID0gdGhpcy5zdGFydERhdGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlLmxlbmd0aDtcblxuICAgIHRoaXMuc3RhcnREYXRlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuc3RhcnREYXRlSW5wdXRWYWx1ZS5zbGljZSgwLCAtMSk7XG4gICAgdGhpcy5zZXRGb2N1c0FuZFBvc2l0aW9uKGlucHV0TGVuZ3RoLCB0aGlzLnN0YXJ0RGF0ZUlucHV0LCBpbnB1dExlbmd0aCk7XG4gIH1cblxuICBwcml2YXRlIHNldEZvY3VzT25TdGFydERhdGVDb21wbGV0ZWQoa2V5Q29kZTogbnVtYmVyLCBpbnB1dE5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGlzTGFzdEtleVByZXNzZWQgPSB0aGlzLnN0YXJ0RGF0ZUlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT09IHBvRGF0ZXBpY2tlclJhbmdlRGF0ZUxlbmd0aERlZmF1bHQ7XG4gICAgY29uc3QgaXNOZXdEYXRlQ29tcGxldGVkID1cbiAgICAgIHRoaXMuc3RhcnREYXRlSW5wdXRWYWx1ZS5sZW5ndGggPT09IHBvRGF0ZXBpY2tlclJhbmdlRGF0ZUxlbmd0aERlZmF1bHQgJiYgaXNMYXN0S2V5UHJlc3NlZDtcbiAgICBjb25zdCBpc1ZhbGlkS2V5ID0gUG9EYXRlcGlja2VyUmFuZ2VDb21wb25lbnQuaXNWYWxpZEtleShrZXlDb2RlKTtcblxuICAgIGlmIChpbnB1dE5hbWUgPT09IHRoaXMuc3RhcnREYXRlSW5wdXROYW1lICYmIGlzTmV3RGF0ZUNvbXBsZXRlZCAmJiBpc1ZhbGlkS2V5KSB7XG4gICAgICB0aGlzLnNldEZvY3VzQW5kUG9zaXRpb24oMCwgdGhpcy5lbmREYXRlSW5wdXQsIDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTW9kZWxXaGVuQ29tcGxldGUoaXNTdGFydERhdGVUYXJnZXRFdmVudDogYm9vbGVhbiwgc3RhcnREYXRlLCBlbmREYXRlKSB7XG4gICAgY29uc3QgZW5kRGF0ZUZvcm1hdHRlZCA9IHRoaXMuZm9ybWF0U2NyZWVuVG9Nb2RlbChlbmREYXRlKTtcbiAgICBjb25zdCBzdGFydERhdGVGb3JtYXR0ZWQgPSB0aGlzLmZvcm1hdFNjcmVlblRvTW9kZWwoc3RhcnREYXRlKTtcbiAgICBjb25zdCBkYXRlRm9ybWF0VmFsaWRhdGlvbiA9IHRoaXMuZ2V0RGF0ZVJhbmdlRm9ybWF0VmFsaWRhdGlvbihcbiAgICAgIHN0YXJ0RGF0ZUZvcm1hdHRlZCxcbiAgICAgIGVuZERhdGVGb3JtYXR0ZWQsXG4gICAgICBpc1N0YXJ0RGF0ZVRhcmdldEV2ZW50XG4gICAgKTtcblxuICAgIGlmICh0aGlzLmlzRXF1YWxCZWZvcmVWYWx1ZShzdGFydERhdGVGb3JtYXR0ZWQsIGVuZERhdGVGb3JtYXR0ZWQpKSB7XG4gICAgICB0aGlzLnJlc2V0RGF0ZVJhbmdlSW5wdXRWYWxpZGF0aW9uKCk7XG4gICAgICB0aGlzLnZhbGlkYXRlTW9kZWwodGhpcy5kYXRlUmFuZ2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChkYXRlRm9ybWF0VmFsaWRhdGlvbi5pc1ZhbGlkKSB7XG4gICAgICB0aGlzLmRhdGVSYW5nZSA9IHsgc3RhcnQ6IHN0YXJ0RGF0ZUZvcm1hdHRlZCwgZW5kOiBlbmREYXRlRm9ybWF0dGVkIH07XG4gICAgICB0aGlzLnVwZGF0ZU1vZGVsKHRoaXMuZGF0ZVJhbmdlKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IC4uLnRoaXMuZGF0ZVJhbmdlIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTW9kZWxCeVNjcmVlbihpc1N0YXJ0RGF0ZVRhcmdldEV2ZW50OiBib29sZWFuLCBzdGFydERhdGU/LCBlbmREYXRlPykge1xuICAgIGNvbnN0IGVuZERhdGVGb3JtYXR0ZWQgPSBlbmREYXRlIHx8IHRoaXMuZm9ybWF0U2NyZWVuVG9Nb2RlbCh0aGlzLmVuZERhdGVJbnB1dFZhbHVlKTtcbiAgICBjb25zdCBzdGFydERhdGVGb3JtYXR0ZWQgPSBzdGFydERhdGUgfHwgdGhpcy5mb3JtYXRTY3JlZW5Ub01vZGVsKHRoaXMuc3RhcnREYXRlSW5wdXRWYWx1ZSk7XG4gICAgaWYgKHRoaXMuaXNEYXRlUmFuZ2VJbnB1dFVuY29tcGxldGVkICYmIHRoaXMuaXNEaXJ0eURhdGVSYW5nZUlucHV0KSB7XG4gICAgICB0aGlzLnVwZGF0ZU1vZGVsKHRoaXMuZGF0ZVJhbmdlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0VxdWFsQmVmb3JlVmFsdWUoc3RhcnREYXRlRm9ybWF0dGVkLCBlbmREYXRlRm9ybWF0dGVkKSkge1xuICAgICAgdGhpcy5yZXNldERhdGVSYW5nZUlucHV0VmFsaWRhdGlvbigpO1xuICAgICAgdGhpcy52YWxpZGF0ZU1vZGVsKHRoaXMuZGF0ZVJhbmdlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRlRm9ybWF0VmFsaWRhdGlvbiA9IHRoaXMuZ2V0RGF0ZVJhbmdlRm9ybWF0VmFsaWRhdGlvbihcbiAgICAgIHN0YXJ0RGF0ZUZvcm1hdHRlZCxcbiAgICAgIGVuZERhdGVGb3JtYXR0ZWQsXG4gICAgICBpc1N0YXJ0RGF0ZVRhcmdldEV2ZW50XG4gICAgKTtcblxuICAgIGlmIChkYXRlRm9ybWF0VmFsaWRhdGlvbi5pc1ZhbGlkKSB7XG4gICAgICB0aGlzLmRhdGVSYW5nZSA9IHsgc3RhcnQ6IHN0YXJ0RGF0ZUZvcm1hdHRlZCwgZW5kOiBlbmREYXRlRm9ybWF0dGVkIH07XG4gICAgICB0aGlzLnVwZGF0ZU1vZGVsKHRoaXMuZGF0ZVJhbmdlKTtcbiAgICAgIHRoaXMub25DaGFuZ2UuZW1pdCh7IC4uLnRoaXMuZGF0ZVJhbmdlIH0pO1xuICAgIH1cblxuICAgIGlmICghZGF0ZUZvcm1hdFZhbGlkYXRpb24uaXNWYWxpZCAmJiB0aGlzLnZlcmlmeUZvcm1hdHRlZERhdGVzKHN0YXJ0RGF0ZUZvcm1hdHRlZCwgZW5kRGF0ZUZvcm1hdHRlZCkpIHtcbiAgICAgIHRoaXMuZGF0ZVJhbmdlID0geyAuLi5kYXRlRm9ybWF0VmFsaWRhdGlvbi5kYXRlUmFuZ2VNb2RlbCB9O1xuICAgICAgdGhpcy51cGRhdGVNb2RlbChkYXRlRm9ybWF0VmFsaWRhdGlvbi5kYXRlUmFuZ2VNb2RlbCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2ZXJpZnlGb3JtYXR0ZWREYXRlcyhzdGFydDogc3RyaW5nLCBlbmQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXN0YXJ0IHx8ICEhZW5kO1xuICB9XG5cbiAgcHJpdmF0ZSB3YXNDbGlja2VkT25QaWNrZXIoZXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNDYWxlbmRhclZpc2libGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICAhdGhpcy5jYWxlbmRhclBpY2tlci5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiZcbiAgICAgICF0aGlzLmljb25DYWxlbmRhci5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiZcbiAgICAgICF0aGlzLmhhc0F0dHJDYWxlbmRhcihldmVudC50YXJnZXQpXG4gICAgKSB7XG4gICAgICB0aGlzLmlzQ2FsZW5kYXJWaXNpYmxlID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
436
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZGF0ZXBpY2tlci1yYW5nZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tZGF0ZXBpY2tlci1yYW5nZS9wby1kYXRlcGlja2VyLXJhbmdlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUVWLFNBQVMsRUFFVCxTQUFTLEVBSVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFFQUFxRSxDQUFDO0FBRy9HLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFFdEYsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDO0FBQ3hCLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQztBQUN6QixNQUFNLFlBQVksR0FBRyxDQUFDLENBQUM7QUFDdkIsTUFBTSxrQ0FBa0MsR0FBRyxFQUFFLENBQUM7QUFFOUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLENBQUM7QUFDbEMsTUFBTSx5QkFBeUIsR0FBRyxhQUFhLENBQUM7QUFFaEQsMEJBQTBCO0FBQzFCLE1BQU0sU0FBUyxHQUFHO0lBQ2hCO1FBQ0UsT0FBTyxFQUFFLGlCQUFpQjtRQUMxQiwyQkFBMkI7UUFDM0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztRQUN6RCxLQUFLLEVBQUUsSUFBSTtLQUNaO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsYUFBYTtRQUN0QiwyQkFBMkI7UUFDM0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztRQUN6RCxLQUFLLEVBQUUsSUFBSTtLQUNaO0lBQ0Qsd0JBQXdCO0NBQ3pCLENBQUM7QUFDRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQkc7QUFNSCxNQUFNLE9BQU8sMEJBQ1gsU0FBUSw4QkFBOEI7SUFzRHRDLFlBQ1UsY0FBaUMsRUFDakMsZUFBeUMsRUFDekMsUUFBbUIsRUFDM0IsYUFBNEIsRUFDNUIsd0JBQW9DLEVBQ3BDLGlCQUFvQztRQUVwQyxLQUFLLENBQUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFQaEMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLG9CQUFlLEdBQWYsZUFBZSxDQUEwQjtRQUN6QyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBakQ3QixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUE2VGxCLGFBQVEsR0FBRyxHQUFTLEVBQUU7WUFDNUIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLHlCQUF5QixDQUFDLENBQUM7YUFDaEU7UUFDSCxDQUFDLENBQUM7UUExUUEsSUFBSSxDQUFDLHdCQUF3QixHQUFHLHdCQUF3QixDQUFDO0lBQzNELENBQUM7SUFqREQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM1QyxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDaEgsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFlBQVksS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDckYsQ0FBQztJQUVELElBQUksMkJBQTJCO1FBQzdCLE9BQU8sQ0FDTCxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFHLGtDQUFrQztZQUNsRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxHQUFHLGtDQUFrQyxDQUNyRSxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUkscUJBQXFCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLG1CQUFtQjtRQUNyQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztJQUNqRCxDQUFDO0lBY0QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFvQjtRQUNwQyxPQUFPLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQztJQUN0QyxDQUFDO0lBRUQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQVU7UUFDaEMsT0FBTyxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUM7SUFDMUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBZTtRQUMvQixNQUFNLFlBQVksR0FBRyxPQUFPLElBQUksRUFBRSxJQUFJLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDcEQsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLElBQUksRUFBRSxJQUFJLE9BQU8sSUFBSSxHQUFHLENBQUM7UUFFM0QsT0FBTyxZQUFZLElBQUksa0JBQWtCLENBQUM7SUFDNUMsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLG9CQUFvQjtRQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFFeEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQVc7UUFDdEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7O09BZ0JHO0lBQ0gsS0FBSztRQUNILElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzNDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFVOztRQUNmLE1BQUEsSUFBSSxDQUFDLGNBQWMsK0NBQW5CLElBQUksQ0FBbUIsQ0FBQztRQUN4QixNQUFNLHNCQUFzQixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUU3RSxJQUFJLENBQUMsbUJBQW1CLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUVqRCxJQUFJLENBQUMsbUNBQW1DLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO1FBQzdCLE1BQU0sc0JBQXNCLEdBQUcsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBRTdDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUM7UUFFekUsSUFBSSxLQUFLLElBQUksR0FBRyxFQUFFO1lBQ2hCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUN6RDtJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsS0FBVTtRQUNoQixJQUFJLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQVc7UUFDbkIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLE9BQU87U0FDUjtRQUVELElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3JDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztTQUM1QjthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbEM7SUFDSCxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQVU7UUFDaEIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLE9BQU87U0FDUjtRQUVELE1BQU0sc0JBQXNCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBRTdFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLHVCQUF1QixDQUFDLHNCQUFzQixFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN6RyxDQUFDO0lBRUQsNkJBQTZCO1FBQzNCLElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUM7UUFDdkMsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQztJQUMxQyxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xDLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUNqRCxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXBDLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1NBQzVCO2FBQU07WUFDTCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDeEI7SUFDSCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBd0I7UUFDMUMsTUFBTSxTQUFTLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQWUsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQWEsRUFBRSxDQUFDO1FBQzdFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3RixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLGdCQUFnQixDQUFDO1FBRTdFLE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNsRyxNQUFNLGlCQUFpQixHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUV4RyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsZUFBZSxDQUFDO1FBQ3hELElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxpQkFBaUIsQ0FBQztRQUM1RCxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFTyxnQ0FBZ0M7UUFDdEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRCw4REFBOEQ7SUFDdEQsU0FBUztRQUNmLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFckMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNqQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFckMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVPLFVBQVUsQ0FBQyxNQUFjLEVBQUUsTUFBYyxFQUFFLEVBQUUsUUFBZ0IsRUFBRSxFQUFFLE9BQWUsRUFBRTtRQUN4RixJQUFJLGFBQWEsR0FBRyxNQUFNLENBQUM7UUFFM0IsR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBRXZELGFBQWEsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25FLGFBQWEsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLGFBQWEsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUU1RCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRU8sbUJBQW1CLENBQUMsUUFBZ0IsRUFBRTtRQUM1QyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTVDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDdEUsQ0FBQztJQUVPLG1CQUFtQixDQUFDLFFBQWdCLEVBQUU7UUFDNUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU1QyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNyRSxDQUFDO0lBRU8sNEJBQTRCLENBQ2xDLFNBQWlCLEVBQ2pCLE9BQWUsRUFDZixzQkFBK0I7UUFFL0IsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNyRCxPQUFPO1lBQ0wsT0FBTyxFQUNMLElBQUksQ0FBQywyQkFBMkIsSUFBSSxJQUFJLENBQUMsMEJBQTBCLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDO1lBQ2pILGNBQWMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsQ0FBQztTQUNuRixDQUFDO0lBQ0osQ0FBQztJQUVPLGlCQUFpQixDQUFDLFNBQWlCLEVBQUUsT0FBZSxFQUFFLHNCQUErQjtRQUMzRixNQUFNLGNBQWMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBRTlDLGNBQWMsQ0FBQyxHQUFHO1lBQ2hCLENBQUMsc0JBQXNCLElBQUksSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRWhILGNBQWMsQ0FBQyxLQUFLO1lBQ2xCLENBQUMsQ0FBQyxzQkFBc0IsSUFBSSxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7Z0JBQy9GLENBQUMsQ0FBQyxTQUFTO2dCQUNYLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFVCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRU8sZUFBZSxDQUFDLE9BQU87O1FBQzdCLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQztRQUVyQyxPQUFPLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBSSxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxhQUFhLDBDQUFFLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQSxDQUFDO0lBQ25HLENBQUM7SUFFTyxlQUFlO1FBQ3JCLE9BQU8sQ0FDTCxJQUFJLENBQUMsd0JBQXdCLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO1lBQzVFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FDM0UsQ0FBQztJQUNKLENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUMsS0FBaUIsRUFBRSxFQUFFO1lBQ25GLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRTtZQUN2RSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxTQUFpQixFQUFFLE9BQWU7UUFDM0QsT0FBTyxJQUFJLENBQUMsMkJBQTJCLElBQUksT0FBTyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLFNBQVMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztJQUNsSCxDQUFDO0lBRU8scUJBQXFCLENBQUMsS0FBVTtRQUN0QyxPQUFPLENBQ0wsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLGdCQUFnQjtZQUMzQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxjQUFjLEtBQUssQ0FBQztZQUNwRCxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEtBQUssQ0FBQztZQUNsRCxLQUFLLENBQUMsT0FBTyxLQUFLLFlBQVksQ0FDL0IsQ0FBQztJQUNKLENBQUM7SUFRTyxtQ0FBbUM7UUFDekMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFTywyQkFBMkIsQ0FBQyxTQUFpQixFQUFFLE9BQWU7UUFDcEUsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRTFGLElBQUksQ0FBQywyQkFBMkIsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxRyxDQUFDO0lBRU8sUUFBUSxDQUFDLEtBQVU7UUFDekIsTUFBTSxZQUFZLEdBQUcsMEJBQTBCLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEUsTUFBTSxPQUFPLEdBQUcsMEJBQTBCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdELE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV2QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVPLG1CQUFtQixDQUFDLFFBQWdCLEVBQUUsWUFBd0IsRUFBRSxjQUFzQjtRQUM1RixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRWxDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxZQUFZLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQztZQUM3RSxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsR0FBRyxRQUFRLENBQUM7WUFDN0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDO1FBQzdDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGNBQWMsQ0FBQyxZQUF3QjtRQUM3QyxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDdEI7UUFFRCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtZQUM1QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztTQUM1QjtRQUVELE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUM5QixJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFDakMsdUJBQXVCLEVBQ3ZCLElBQUksQ0FBQyxjQUFjLEVBQ25CLENBQUMsYUFBYSxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLEVBQ3hELEtBQUssRUFDTCxJQUFJLENBQ0wsQ0FBQztRQUVGLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVPLG1CQUFtQixDQUFDLE9BQWUsRUFBRSxTQUFpQjtRQUM1RCxNQUFNLHNCQUFzQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLGNBQWMsS0FBSyxDQUFDLENBQUM7UUFFcEYsSUFBSSxTQUFTLEtBQUssSUFBSSxDQUFDLGdCQUFnQixJQUFJLHNCQUFzQixJQUFJLE9BQU8sS0FBSyxZQUFZLEVBQUU7WUFDN0YsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNuRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsV0FBVyxDQUFDLENBQUM7U0FDekU7SUFDSCxDQUFDO0lBRU8sb0JBQW9CLENBQUMsT0FBZSxFQUFFLFNBQWlCLEVBQUUsWUFBaUI7UUFDaEYsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxjQUFjLEtBQUssWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFFNUcsSUFBSSxTQUFTLEtBQUssSUFBSSxDQUFDLGtCQUFrQixJQUFJLG9CQUFvQixJQUFJLE9BQU8sS0FBSyxhQUFhLEVBQUU7WUFDOUYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ25EO0lBQ0gsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBRW5FLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRU8sNEJBQTRCLENBQUMsT0FBZSxFQUFFLFNBQWlCO1FBQ3JFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsY0FBYyxLQUFLLGtDQUFrQyxDQUFDO1FBQ2pILE1BQU0sa0JBQWtCLEdBQ3RCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEtBQUssa0NBQWtDLElBQUksZ0JBQWdCLENBQUM7UUFDN0YsTUFBTSxVQUFVLEdBQUcsMEJBQTBCLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWxFLElBQUksU0FBUyxLQUFLLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxrQkFBa0IsSUFBSSxVQUFVLEVBQUU7WUFDN0UsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ25EO0lBQ0gsQ0FBQztJQUVPLHVCQUF1QixDQUFDLHNCQUErQixFQUFFLFNBQVMsRUFBRSxPQUFPO1FBQ2pGLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUM1RCxrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLHNCQUFzQixDQUN2QixDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLEVBQUUsZ0JBQWdCLENBQUMsRUFBRTtZQUNqRSxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNuQyxPQUFPO1NBQ1I7UUFFRCxJQUFJLG9CQUFvQixDQUFDLE9BQU8sRUFBRTtZQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3RFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxtQkFBTSxJQUFJLENBQUMsU0FBUyxFQUFHLENBQUM7U0FDM0M7SUFDSCxDQUFDO0lBRU8sbUJBQW1CLENBQUMsc0JBQStCLEVBQUUsU0FBVSxFQUFFLE9BQVE7UUFDL0UsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3JGLE1BQU0sa0JBQWtCLEdBQUcsU0FBUyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMzRixJQUFJLElBQUksQ0FBQywyQkFBMkIsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDbEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDakMsT0FBTztTQUNSO1FBRUQsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLEVBQUUsZ0JBQWdCLENBQUMsRUFBRTtZQUNqRSxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNuQyxPQUFPO1NBQ1I7UUFFRCxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FDNUQsa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQixzQkFBc0IsQ0FDdkIsQ0FBQztRQUVGLElBQUksb0JBQW9CLENBQUMsT0FBTyxFQUFFO1lBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLGdCQUFnQixFQUFFLENBQUM7WUFDdEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLG1CQUFNLElBQUksQ0FBQyxTQUFTLEVBQUcsQ0FBQztTQUMzQztRQUVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDLGtCQUFrQixFQUFFLGdCQUFnQixDQUFDLEVBQUU7WUFDcEcsSUFBSSxDQUFDLFNBQVMscUJBQVEsb0JBQW9CLENBQUMsY0FBYyxDQUFFLENBQUM7WUFDNUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUN2RDtJQUNILENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxLQUFhLEVBQUUsR0FBVztRQUNyRCxPQUFPLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUMxQixDQUFDO0lBRU8sa0JBQWtCLENBQUMsS0FBSztRQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzNCLE9BQU87U0FDUjtRQUVELElBQ0UsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUN6RCxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ3ZELENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQ25DO1lBQ0EsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztTQUNoQztJQUNILENBQUM7OztZQXJmRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtnQkFDL0Isa3lFQUFtRDtnQkFDbkQsU0FBUzthQUNWOzs7WUE3RUMsaUJBQWlCO1lBY1Ysd0JBQXdCO1lBUC9CLFNBQVM7WUFXRixhQUFhO1lBaEJwQixVQUFVO1lBa0JILGlCQUFpQjs7OzZCQTZEdkIsU0FBUyxTQUFDLGdCQUFnQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOzJCQUM5RCxTQUFTLFNBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOzZCQUM1RCxTQUFTLFNBQUMsZ0JBQWdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7MkJBQzlELFNBQVMsU0FBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7NkJBQzVELFNBQVMsU0FBQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgUmVuZGVyZXIyLFxuICBPbkRlc3Ryb3ksXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE9uQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBQb0NvbnRyb2xQb3NpdGlvblNlcnZpY2UgfSBmcm9tICcuLy4uLy4uLy4uL3NlcnZpY2VzL3BvLWNvbnRyb2wtcG9zaXRpb24vcG8tY29udHJvbC1wb3NpdGlvbi5zZXJ2aWNlJztcblxuaW1wb3J0IHsgUG9EYXRlcGlja2VyUmFuZ2UgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tZGF0ZXBpY2tlci1yYW5nZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9EYXRlcGlja2VyUmFuZ2VCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9wby1kYXRlcGlja2VyLXJhbmdlLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBvRGF0ZVNlcnZpY2UgfSBmcm9tICcuLy4uLy4uLy4uL3NlcnZpY2VzL3BvLWRhdGUvcG8tZGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFBvTWFzayB9IGZyb20gJy4uL3BvLWlucHV0L3BvLW1hc2snO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcblxuY29uc3QgYXJyb3dMZWZ0S2V5ID0gMzc7XG5jb25zdCBhcnJvd1JpZ2h0S2V5ID0gMzk7XG5jb25zdCBiYWNrc3BhY2VLZXkgPSA4O1xuY29uc3QgcG9EYXRlcGlja2VyUmFuZ2VEYXRlTGVuZ3RoRGVmYXVsdCA9IDEwO1xuXG5jb25zdCBwb0NhbGVuZGFyQ29udGVudE9mZnNldCA9IDg7XG5jb25zdCBwb0NhbGVuZGFyUG9zaXRpb25EZWZhdWx0ID0gJ2JvdHRvbS1sZWZ0JztcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmNvbnN0IHByb3ZpZGVycyA9IFtcbiAge1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBvRGF0ZXBpY2tlclJhbmdlQ29tcG9uZW50KSxcbiAgICBtdWx0aTogdHJ1ZVxuICB9LFxuICB7XG4gICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQb0RhdGVwaWNrZXJSYW5nZUNvbXBvbmVudCksXG4gICAgbXVsdGk6IHRydWVcbiAgfSxcbiAgUG9Db250cm9sUG9zaXRpb25TZXJ2aWNlXG5dO1xuLyoqXG4gKiBAZG9jc0V4dGVuZHMgUG9EYXRlcGlja2VyUmFuZ2VCYXNlQ29tcG9uZW50XG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tZGF0ZXBpY2tlci1yYW5nZS1iYXNpY1wiIHRpdGxlPVwiUE8gRGF0ZXBpY2tlciBSYW5nZSBCYXNpY1wiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZGF0ZXBpY2tlci1yYW5nZS1iYXNpYy9zYW1wbGUtcG8tZGF0ZXBpY2tlci1yYW5nZS1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kYXRlcGlja2VyLXJhbmdlLWJhc2ljL3NhbXBsZS1wby1kYXRlcGlja2VyLXJhbmdlLWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWRhdGVwaWNrZXItcmFuZ2UtbGFic1wiIHRpdGxlPVwiUE8gRGF0ZXBpY2tlciBSYW5nZSBMYWJzXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kYXRlcGlja2VyLXJhbmdlLWxhYnMvc2FtcGxlLXBvLWRhdGVwaWNrZXItcmFuZ2UtbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kYXRlcGlja2VyLXJhbmdlLWxhYnMvc2FtcGxlLXBvLWRhdGVwaWNrZXItcmFuZ2UtbGFicy5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1kYXRlcGlja2VyLXJhbmdlLXZhY2F0aW9uc1wiIHRpdGxlPVwiUE8gRGF0ZXBpY2tlciBSYW5nZSAtIFZhY2F0aW9ucyBTdWdnZXN0aW9uXCI+XG4gKiAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1kYXRlcGlja2VyLXJhbmdlLXZhY2F0aW9ucy9zYW1wbGUtcG8tZGF0ZXBpY2tlci1yYW5nZS12YWNhdGlvbnMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZGF0ZXBpY2tlci1yYW5nZS12YWNhdGlvbnMvc2FtcGxlLXBvLWRhdGVwaWNrZXItcmFuZ2UtdmFjYXRpb25zLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLWRhdGVwaWNrZXItcmFuZ2UtdmFjYXRpb25zLXJlYWN0aXZlLWZvcm1cIiB0aXRsZT1cIlBPIERhdGVwaWNrZXIgUmFuZ2UgLSBWYWNhdGlvbnMgUmVhY3RpdmUgRm9ybVwiPlxuICogIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tZGF0ZXBpY2tlci1yYW5nZS12YWNhdGlvbnMtcmVhY3RpdmUtZm9ybS9zYW1wbGUtcG8tZGF0ZXBpY2tlci1yYW5nZS12YWNhdGlvbnMtcmVhY3RpdmUtZm9ybS5jb21wb25lbnQuaHRtbFwiPlxuICogIDwvZmlsZT5cbiAqICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLWRhdGVwaWNrZXItcmFuZ2UtdmFjYXRpb25zLXJlYWN0aXZlLWZvcm0vc2FtcGxlLXBvLWRhdGVwaWNrZXItcmFuZ2UtdmFjYXRpb25zLXJlYWN0aXZlLWZvcm0uY29tcG9uZW50LnRzXCI+XG4gKiAgPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1kYXRlcGlja2VyLXJhbmdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvLWRhdGVwaWNrZXItcmFuZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnNcbn0pXG5leHBvcnQgY2xhc3MgUG9EYXRlcGlja2VyUmFuZ2VDb21wb25lbnRcbiAgZXh0ZW5kcyBQb0RhdGVwaWNrZXJSYW5nZUJhc2VDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgQFZpZXdDaGlsZCgnZGF0ZVJhbmdlRmllbGQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBkYXRlUmFuZ2VGaWVsZDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnZW5kRGF0ZUlucHV0JywgeyByZWFkOiBFbGVtZW50UmVmLCBzdGF0aWM6IHRydWUgfSkgZW5kRGF0ZUlucHV0OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdzdGFydERhdGVJbnB1dCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIHN0YXJ0RGF0ZUlucHV0OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdpY29uQ2FsZW5kYXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBpY29uQ2FsZW5kYXI6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2NhbGVuZGFyUGlja2VyJywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGNhbGVuZGFyUGlja2VyOiBFbGVtZW50UmVmO1xuXG4gIGlzQ2FsZW5kYXJWaXNpYmxlID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBjbGlja0xpc3RlbmVyO1xuICBwcml2YXRlIGV2ZW50UmVzaXplTGlzdGVuZXI7XG4gIHByaXZhdGUgcG9EYXRlcGlja2VyUmFuZ2VFbGVtZW50OiBFbGVtZW50UmVmPGFueT47XG4gIHByaXZhdGUgcG9NYXNrT2JqZWN0OiBQb01hc2s7XG5cbiAgZ2V0IGF1dG9jb21wbGV0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ub0F1dG9jb21wbGV0ZSA/ICdvZmYnIDogJ29uJztcbiAgfVxuXG4gIGdldCBlbmFibGVDbGVhbmVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNsZWFuICYmICh0aGlzLnN0YXJ0RGF0ZUlucHV0VmFsdWUgfHwgdGhpcy5lbmREYXRlSW5wdXRWYWx1ZSkgJiYgIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMucmVhZG9ubHk7XG4gIH1cblxuICBnZXQgZW5kRGF0ZUlucHV0TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnZW5kLWRhdGUnO1xuICB9XG5cbiAgZ2V0IGVuZERhdGVJbnB1dFZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZW5kRGF0ZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gIH1cblxuICBnZXQgZ2V0RXJyb3JNZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JNZXNzYWdlICE9PSAnJyAmJiB0aGlzLmhhc0ludmFsaWRDbGFzcygpID8gdGhpcy5lcnJvck1lc3NhZ2UgOiAnJztcbiAgfVxuXG4gIGdldCBpc0RhdGVSYW5nZUlucHV0VW5jb21wbGV0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuZW5kRGF0ZUlucHV0VmFsdWUubGVuZ3RoIDwgcG9EYXRlcGlja2VyUmFuZ2VEYXRlTGVuZ3RoRGVmYXVsdCAmJlxuICAgICAgdGhpcy5zdGFydERhdGVJbnB1dFZhbHVlLmxlbmd0aCA8IHBvRGF0ZXBpY2tlclJhbmdlRGF0ZUxlbmd0aERlZmF1bHRcbiAgICApO1xuICB9XG5cbiAgZ2V0IGlzRGlydHlEYXRlUmFuZ2VJbnB1dCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lbmREYXRlSW5wdXRWYWx1ZS5sZW5ndGggPiAwIHx8IHRoaXMuc3RhcnREYXRlSW5wdXRWYWx1ZS5sZW5ndGggPiAwO1xuICB9XG5cbiAgZ2V0IHN0YXJ0RGF0ZUlucHV0TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnc3RhcnQtZGF0ZSc7XG4gIH1cblxuICBnZXQgc3RhcnREYXRlSW5wdXRWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN0YXJ0RGF0ZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGNvbnRyb2xQb3NpdGlvbjogUG9Db250cm9sUG9zaXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwb0RhdGVTZXJ2aWNlOiBQb0RhdGVTZXJ2aWNlLFxuICAgIHBvRGF0ZXBpY2tlclJhbmdlRWxlbWVudDogRWxlbWVudFJlZixcbiAgICBwb0xhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIocG9EYXRlU2VydmljZSwgcG9MYW5ndWFnZVNlcnZpY2UpO1xuICAgIHRoaXMucG9EYXRlcGlja2VyUmFuZ2VFbGVtZW50ID0gcG9EYXRlcGlja2VyUmFuZ2VFbGVtZW50O1xuICB9XG5cbiAgc3RhdGljIGdldEtleUNvZGUoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICByZXR1cm4gZXZlbnQua2V5Q29kZSB8fCBldmVudC53aGljaDtcbiAgfVxuXG4gIHN0YXRpYyBnZXRUYXJnZXRFbGVtZW50KGV2ZW50OiBhbnkpIHtcbiAgICByZXR1cm4gZXZlbnQudGFyZ2V0IHx8IGV2ZW50LnNyY0VsZW1lbnQ7XG4gIH1cblxuICBzdGF0aWMgaXNWYWxpZEtleShrZXlDb2RlOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBpc051bWVyaWNLZXkgPSBrZXlDb2RlID49IDQ4ICYmIGtleUNvZGUgPD0gNTc7XG4gICAgY29uc3QgaXNOdW1lcmljTnVtcGFkS2V5ID0ga2V5Q29kZSA+PSA5NiAmJiBrZXlDb2RlIDw9IDEwNTtcblxuICAgIHJldHVybiBpc051bWVyaWNLZXkgfHwgaXNOdW1lcmljTnVtcGFkS2V5O1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmF1dG9Gb2N1cykge1xuICAgICAgdGhpcy5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIENsYXNzZSBkZSBtw6FzY2FyYVxuICAgIHRoaXMucG9NYXNrT2JqZWN0ID0gdGhpcy5idWlsZE1hc2soKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5taW5EYXRlIHx8IGNoYW5nZXMubWF4RGF0ZSkge1xuICAgICAgdGhpcy52YWxpZGF0ZU1vZGVsKHRoaXMuZGF0ZVJhbmdlKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnJlbW92ZUxpc3RlbmVycygpO1xuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5yZXNldERhdGVSYW5nZUlucHV0VmFsaWRhdGlvbigpO1xuICAgIHRoaXMuZGF0ZVJhbmdlID0geyBzdGFydDogJycsIGVuZDogJycgfTtcblxuICAgIHRoaXMudXBkYXRlU2NyZWVuQnlNb2RlbCh0aGlzLmRhdGVSYW5nZSk7XG4gICAgdGhpcy51cGRhdGVNb2RlbCh0aGlzLmRhdGVSYW5nZSk7XG4gIH1cblxuICBldmVudE9uQ2xpY2soJGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnBvTWFza09iamVjdC5jbGljaygkZXZlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZ1bsOnw6NvIHF1ZSBhdHJpYnVpIGZvY28gYW8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogUGFyYSB1dGlsaXrDoS1sYSDDqSBuZWNlc3PDoXJpbyB0ZXIgYSBpbnN0w6JuY2lhIGRvIGNvbXBvbmVudGUgbm8gRE9NLCBwb2RlbmRvIHNlciB1dGlsaXphZG8gbyBWaWV3Q2hpbGQgZGEgc2VndWludGUgZm9ybWE6XG4gICAqXG4gICAqIGBgYFxuICAgKiBpbXBvcnQgeyBQb0RhdGVwaWNrZXJSYW5nZUNvbXBvbmVudCB9IGZyb20gJ0Bwby11aS9uZy1jb21wb25lbnRzJztcbiAgICpcbiAgICogLi4uXG4gICAqXG4gICAqIEBWaWV3Q2hpbGQoUG9EYXRlcGlja2VyUmFuZ2VDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIGRhdGVwaWNrZXJSYW5nZTogUG9EYXRlcGlja2VyUmFuZ2VDb21wb25lbnQ7XG4gICAqXG4gICAqIGZvY3VzRGF0ZXBpY2tlclJhbmdlKCkge1xuICAgKiAgIHRoaXMuZGF0ZXBpY2tlclJhbmdlLmZvY3VzKCk7XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBmb2N1cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc3RhcnREYXRlSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIG9uQmx1cihldmVudDogYW55KSB7XG4gICAgdGhpcy5vblRvdWNoZWRNb2RlbD8uKCk7XG4gICAgY29uc3QgaXNTdGFydERhdGVUYXJnZXRFdmVudCA9IGV2ZW50LnRhcmdldC5uYW1lID09PSB0aGlzLnN0YXJ0RGF0ZUlucHV0TmFtZTtcblxuICAgIHRoaXMudXBkYXRlTW9kZWxCeVNjcmVlbihpc1N0YXJ0RGF0ZVRhcmdldEV2ZW50KTtcblxuICAgIHRoaXMucmVtb3ZlRm9jdXNGcm9tRGF0ZVBpY2tlclJhbmdlRmllbGQoKTtcbiAgfVxuXG4gIG9uQ2FsZW5kYXJDaGFuZ2UoeyBzdGFydCwgZW5kIH0pIHtcbiAgICBjb25zdCBpc1N0YXJ0RGF0ZVRhcmdldEV2ZW50ID0gc3RhcnQgJiYgIWVuZDtcblxuICAgIHRoaXMudXBkYXRlU2NyZWVuQnlNb2RlbCh7IHN0YXJ0OiBzdGFydCB8fCAnJywgZW5kOiBlbmQgfHwgJycgfSk7XG4gICAgdGhpcy51cGRhdGVNb2RlbEJ5U2NyZWVuKGlzU3RhcnREYXRlVGFyZ2V0RXZlbnQsIHN0YXJ0IHx8ICcnLCBlbmQgfHwgJycpO1xuXG4gICAgaWYgKHN0YXJ0ICYmIGVuZCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiAodGhpcy5pc0NhbGVuZGFyVmlzaWJsZSA9IGZhbHNlKSwgMzAwKTtcbiAgICB9XG4gIH1cblxuICBvbkZvY3VzKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmFwcGx5Rm9jdXNPbkRhdGVQaWNrZXJSYW5nZUZpZWxkKCk7XG4gICAgdGhpcy5wb01hc2tPYmplY3QucmVzZXRQb3NpdGlvbnMoZXZlbnQpO1xuICB9XG5cbiAgb25LZXlkb3duKGV2ZW50PzogYW55KSB7XG4gICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc1NldEZvY3VzT25CYWNrc3BhY2UoZXZlbnQpKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5zZXRGb2N1c09uQmFja3NwYWNlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucG9NYXNrT2JqZWN0LmtleWRvd24oZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIG9uS2V5dXAoZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLnJlYWRvbmx5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaXNTdGFydERhdGVUYXJnZXRFdmVudCA9IGV2ZW50LnRhcmdldC5uYW1lID09PSB0aGlzLnN0YXJ0RGF0ZUlucHV0TmFtZTtcblxuICAgIHRoaXMuc2V0Rm9jdXMoZXZlbnQpO1xuICAgIHRoaXMucG9NYXNrT2JqZWN0LmtleXVwKGV2ZW50KTtcbiAgICB0aGlzLnVwZGF0ZU1vZGVsV2hlbkNvbXBsZXRlKGlzU3RhcnREYXRlVGFyZ2V0RXZlbnQsIHRoaXMuc3RhcnREYXRlSW5wdXRWYWx1ZSwgdGhpcy5lbmREYXRlSW5wdXRWYWx1ZSk7XG4gIH1cblxuICByZXNldERhdGVSYW5nZUlucHV0VmFsaWRhdGlvbigpIHtcbiAgICB0aGlzLmlzU3RhcnREYXRlUmFuZ2VJbnB1dFZhbGlkID0gdHJ1ZTtcbiAgICB0aGlzLmlzRGF0ZVJhbmdlSW5wdXRGb3JtYXRWYWxpZCA9IHRydWU7XG4gIH1cblxuICB0b2dnbGVDYWxlbmRhcigpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLnJlYWRvbmx5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc0NhbGVuZGFyVmlzaWJsZSA9ICF0aGlzLmlzQ2FsZW5kYXJWaXNpYmxlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgaWYgKHRoaXMuaXNDYWxlbmRhclZpc2libGUpIHtcbiAgICAgIHRoaXMuc2V0Q2FsZW5kYXJQb3NpdGlvbigpO1xuICAgICAgdGhpcy5pbml0aWFsaXplTGlzdGVuZXJzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlU2NyZWVuQnlNb2RlbChtb2RlbDogUG9EYXRlcGlja2VyUmFuZ2UpIHtcbiAgICBjb25zdCBkYXRlUmFuZ2UgPSB7IHN0YXJ0OiBtb2RlbC5zdGFydCBhcyBzdHJpbmcsIGVuZDogbW9kZWwuZW5kIGFzIHN0cmluZyB9O1xuICAgIGNvbnN0IGlzU3RhcnREYXRlVmFsaWQgPSB0aGlzLnBvRGF0ZVNlcnZpY2UuaXNEYXRlUmFuZ2VWYWxpZChkYXRlUmFuZ2UuZW5kLCBkYXRlUmFuZ2Uuc3RhcnQpO1xuICAgIGNvbnN0IGlzRGF0ZVZhbGlkID0gZGF0ZSA9PiAhdGhpcy5kYXRlRm9ybWF0RmFpbGVkKGRhdGUpICYmIGlzU3RhcnREYXRlVmFsaWQ7XG5cbiAgICBjb25zdCBlbmREYXRlRm9ybWF0ZWQgPSBpc0RhdGVWYWxpZChkYXRlUmFuZ2UuZW5kKSA/IHRoaXMuZm9ybWF0TW9kZWxUb1NjcmVlbihkYXRlUmFuZ2UuZW5kKSA6ICcnO1xuICAgIGNvbnN0IHN0YXJ0RGF0ZUZvcm1hdGVkID0gaXNEYXRlVmFsaWQoZGF0ZVJhbmdlLnN0YXJ0KSA/IHRoaXMuZm9ybWF0TW9kZWxUb1NjcmVlbihkYXRlUmFuZ2Uuc3RhcnQpIDogJyc7XG5cbiAgICB0aGlzLmVuZERhdGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gZW5kRGF0ZUZvcm1hdGVkO1xuICAgIHRoaXMuc3RhcnREYXRlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHN0YXJ0RGF0ZUZvcm1hdGVkO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUZvY3VzT25EYXRlUGlja2VyUmFuZ2VGaWVsZCgpIHtcbiAgICB0aGlzLmRhdGVSYW5nZUZpZWxkLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgncG8tZGF0ZXBpY2tlci1yYW5nZS1maWVsZC1mb2N1c2VkJyk7XG4gIH1cblxuICAvLyBSZXRvcm5hIHVtIG9iamV0byBkbyB0aXBvIFBvTWFzayBjb20gYSBtYXNjYXJhIGNvbmZpZ3VyYWRhLlxuICBwcml2YXRlIGJ1aWxkTWFzaygpOiBQb01hc2sge1xuICAgIGxldCBtYXNrID0gdGhpcy5mb3JtYXQudG9VcHBlckNhc2UoKTtcblxuICAgIG1hc2sgPSBtYXNrLnJlcGxhY2UoL0REL2csICc5OScpO1xuICAgIG1hc2sgPSBtYXNrLnJlcGxhY2UoL01NL2csICc5OScpO1xuICAgIG1hc2sgPSBtYXNrLnJlcGxhY2UoL1lZWVkvZywgJzk5OTknKTtcblxuICAgIHJldHVybiBuZXcgUG9NYXNrKG1hc2ssIHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXREYXRlKGZvcm1hdDogc3RyaW5nLCBkYXk6IHN0cmluZyA9ICcnLCBtb250aDogc3RyaW5nID0gJycsIHllYXI6IHN0cmluZyA9ICcnKTogc3RyaW5nIHtcbiAgICBsZXQgZGF0ZUZvcm1hdHRlZCA9IGZvcm1hdDtcblxuICAgIGRheSA9IGRheSAmJiBkYXkuaW5jbHVkZXMoJ1QnKSA/IGRheS5zbGljZSgwLCAyKSA6IGRheTtcblxuICAgIGRhdGVGb3JtYXR0ZWQgPSBkYXRlRm9ybWF0dGVkLnJlcGxhY2UoJ2RkJywgKCcwJyArIGRheSkuc2xpY2UoLTIpKTtcbiAgICBkYXRlRm9ybWF0dGVkID0gZGF0ZUZvcm1hdHRlZC5yZXBsYWNlKCdtbScsICgnMCcgKyBtb250aCkuc2xpY2UoLTIpKTtcbiAgICBkYXRlRm9ybWF0dGVkID0gZGF0ZUZvcm1hdHRlZC5yZXBsYWNlKCd5eXl5JywgU3RyaW5nKHllYXIpKTtcblxuICAgIHJldHVybiBkYXRlRm9ybWF0dGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRTY3JlZW5Ub01vZGVsKHZhbHVlOiBzdHJpbmcgPSAnJyk6IHN0cmluZyB7XG4gICAgY29uc3QgW2RheSwgbW9udGgsIHllYXJdID0gdmFsdWUuc3BsaXQoJy8nKTtcblxuICAgIHJldHVybiB2YWx1ZSA/IHRoaXMuZm9ybWF0RGF0ZSgneXl5eS1tbS1kZCcsIGRheSwgbW9udGgsIHllYXIpIDogJyc7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdE1vZGVsVG9TY3JlZW4odmFsdWU6IHN0cmluZyA9ICcnKTogc3RyaW5nIHtcbiAgICBjb25zdCBbeWVhciwgbW9udGgsIGRheV0gPSB2YWx1ZS5zcGxpdCgnLScpO1xuXG4gICAgcmV0dXJuIHZhbHVlID8gdGhpcy5mb3JtYXREYXRlKHRoaXMuZm9ybWF0LCBkYXksIG1vbnRoLCB5ZWFyKSA6ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREYXRlUmFuZ2VGb3JtYXRWYWxpZGF0aW9uKFxuICAgIHN0YXJ0RGF0ZTogc3RyaW5nLFxuICAgIGVuZERhdGU6IHN0cmluZyxcbiAgICBpc1N0YXJ0RGF0ZVRhcmdldEV2ZW50OiBib29sZWFuXG4gICk6IHsgaXNWYWxpZDogYm9vbGVhbjsgZGF0ZVJhbmdlTW9kZWw6IFBvRGF0ZXBpY2tlclJhbmdlIH0ge1xuICAgIHRoaXMuc2V0RGF0ZVJhbmdlSW5wdXRWYWxpZGF0aW9uKHN0YXJ0RGF0ZSwgZW5kRGF0ZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlzVmFsaWQ6XG4gICAgICAgIHRoaXMuaXNEYXRlUmFuZ2VJbnB1dEZvcm1hdFZhbGlkICYmIHRoaXMuaXNTdGFydERhdGVSYW5nZUlucHV0VmFsaWQgJiYgdGhpcy52ZXJpZnlWYWxpZERhdGUoc3RhcnREYXRlLCBlbmREYXRlKSxcbiAgICAgIGRhdGVSYW5nZU1vZGVsOiB0aGlzLmdldFZhbGlkYXRlZE1vZGVsKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgaXNTdGFydERhdGVUYXJnZXRFdmVudClcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRWYWxpZGF0ZWRNb2RlbChzdGFydERhdGU6IHN0cmluZywgZW5kRGF0ZTogc3RyaW5nLCBpc1N0YXJ0RGF0ZVRhcmdldEV2ZW50OiBib29sZWFuKTogUG9EYXRlcGlja2VyUmFuZ2Uge1xuICAgIGNvbnN0IGRhdGVSYW5nZU1vZGVsID0geyBzdGFydDogJycsIGVuZDogJycgfTtcblxuICAgIGRhdGVSYW5nZU1vZGVsLmVuZCA9XG4gICAgICAoaXNTdGFydERhdGVUYXJnZXRFdmVudCB8fCB0aGlzLmlzU3RhcnREYXRlUmFuZ2VJbnB1dFZhbGlkKSAmJiAhdGhpcy5kYXRlRm9ybWF0RmFpbGVkKGVuZERhdGUpID8gZW5kRGF0ZSA6ICcnO1xuXG4gICAgZGF0ZVJhbmdlTW9kZWwuc3RhcnQgPVxuICAgICAgKCFpc1N0YXJ0RGF0ZVRhcmdldEV2ZW50IHx8IHRoaXMuaXNTdGFydERhdGVSYW5nZUlucHV0VmFsaWQpICYmICF0aGlzLmRhdGVGb3JtYXRGYWlsZWQoc3RhcnREYXRlKVxuICAgICAgICA/IHN0YXJ0RGF0ZVxuICAgICAgICA6ICcnO1xuXG4gICAgcmV0dXJuIGRhdGVSYW5nZU1vZGVsO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNBdHRyQ2FsZW5kYXIoZWxlbWVudCkge1xuICAgIGNvbnN0IGF0dHJDYWxlbmRhciA9ICdhdHRyLWNhbGVuZGFyJztcblxuICAgIHJldHVybiBlbGVtZW50Py5oYXNBdHRyaWJ1dGUoYXR0ckNhbGVuZGFyKSB8fCBlbGVtZW50Py5wYXJlbnRFbGVtZW50Py5oYXNBdHRyaWJ1dGUoYXR0ckNhbGVuZGFyKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzSW52YWxpZENsYXNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnBvRGF0ZXBpY2tlclJhbmdlRWxlbWVudC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbmctaW52YWxpZCcpICYmXG4gICAgICB0aGlzLnBvRGF0ZXBpY2tlclJhbmdlRWxlbWVudC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbmctZGlydHknKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVMaXN0ZW5lcnMoKSB7XG4gICAgdGhpcy5jbGlja0xpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4oJ2RvY3VtZW50JywgJ2NsaWNrJywgKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICB0aGlzLndhc0NsaWNrZWRPblBpY2tlcihldmVudCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmV2ZW50UmVzaXplTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3Rlbignd2luZG93JywgJ3Jlc2l6ZScsICgpID0+IHtcbiAgICAgIHRoaXMuaXNDYWxlbmRhclZpc2libGUgPSBmYWxzZTtcbiAgICB9KTtcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uU2Nyb2xsLCB0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNFcXVhbEJlZm9yZVZhbHVlKHN0YXJ0RGF0ZTogc3RyaW5nLCBlbmREYXRlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0RhdGVSYW5nZUlucHV0Rm9ybWF0VmFsaWQgJiYgZW5kRGF0ZSA9PT0gdGhpcy5kYXRlUmFuZ2UuZW5kICYmIHN0YXJ0RGF0ZSA9PT0gdGhpcy5kYXRlUmFuZ2Uuc3RhcnQ7XG4gIH1cblxuICBwcml2YXRlIGlzU2V0Rm9jdXNPbkJhY2tzcGFjZShldmVudDogYW55KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGV2ZW50LnRhcmdldC5uYW1lID09PSB0aGlzLmVuZERhdGVJbnB1dE5hbWUgJiZcbiAgICAgIHRoaXMuZW5kRGF0ZUlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT09IDAgJiZcbiAgICAgIHRoaXMuZW5kRGF0ZUlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kID09PSAwICYmXG4gICAgICBldmVudC5rZXlDb2RlID09PSBiYWNrc3BhY2VLZXlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvblNjcm9sbCA9ICgpOiB2b2lkID0+IHtcbiAgICBpZiAodGhpcy5pc0NhbGVuZGFyVmlzaWJsZSkge1xuICAgICAgdGhpcy5jb250cm9sUG9zaXRpb24uYWRqdXN0UG9zaXRpb24ocG9DYWxlbmRhclBvc2l0aW9uRGVmYXVsdCk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgcmVtb3ZlRm9jdXNGcm9tRGF0ZVBpY2tlclJhbmdlRmllbGQoKSB7XG4gICAgdGhpcy5kYXRlUmFuZ2VGaWVsZC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3BvLWRhdGVwaWNrZXItcmFuZ2UtZmllbGQtZm9jdXNlZCcpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREYXRlUmFuZ2VJbnB1dFZhbGlkYXRpb24oc3RhcnREYXRlOiBzdHJpbmcsIGVuZERhdGU6IHN0cmluZykge1xuICAgIHRoaXMuaXNTdGFydERhdGVSYW5nZUlucHV0VmFsaWQgPSB0aGlzLnBvRGF0ZVNlcnZpY2UuaXNEYXRlUmFuZ2VWYWxpZChlbmREYXRlLCBzdGFydERhdGUpO1xuXG4gICAgdGhpcy5pc0RhdGVSYW5nZUlucHV0Rm9ybWF0VmFsaWQgPSAhdGhpcy5kYXRlRm9ybWF0RmFpbGVkKHN0YXJ0RGF0ZSkgJiYgIXRoaXMuZGF0ZUZvcm1hdEZhaWxlZChlbmREYXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Rm9jdXMoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IFBvRGF0ZXBpY2tlclJhbmdlQ29tcG9uZW50LmdldFRhcmdldEVsZW1lbnQoZXZlbnQpO1xuICAgIGNvbnN0IGtleUNvZGUgPSBQb0RhdGVwaWNrZXJSYW5nZUNvbXBvbmVudC5nZXRLZXlDb2RlKGV2ZW50KTtcbiAgICBjb25zdCBpbnB1dE5hbWUgPSBpbnB1dEVsZW1lbnRbJ25hbWUnXTtcblxuICAgIHRoaXMuc2V0Rm9jdXNPbkFycm93TGVmdChrZXlDb2RlLCBpbnB1dE5hbWUpO1xuICAgIHRoaXMuc2V0Rm9jdXNPbkFycm93UmlnaHQoa2V5Q29kZSwgaW5wdXROYW1lLCBpbnB1dEVsZW1lbnQpO1xuICAgIHRoaXMuc2V0Rm9jdXNPblN0YXJ0RGF0ZUNvbXBsZXRlZChrZXlDb2RlLCBpbnB1dE5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRGb2N1c0FuZFBvc2l0aW9uKHBvc2l0aW9uOiBudW1iZXIsIGlucHV0RWxlbWVudDogRWxlbWVudFJlZiwgc2VsZWN0aW9uUmFuZ2U6IG51bWJlcikge1xuICAgIHRoaXMuZm9jdXNPbkVsZW1lbnQoaW5wdXRFbGVtZW50KTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2Uoc2VsZWN0aW9uUmFuZ2UsIHNlbGVjdGlvblJhbmdlKTtcbiAgICAgIHRoaXMucG9NYXNrT2JqZWN0LmluaXRpYWxQb3NpdGlvbiA9IHBvc2l0aW9uO1xuICAgICAgdGhpcy5wb01hc2tPYmplY3QuZmluYWxQb3NpdGlvbiA9IHBvc2l0aW9uO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c09uRWxlbWVudChpbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWYpIHtcbiAgICBpbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVMaXN0ZW5lcnMoKSB7XG4gICAgaWYgKHRoaXMuY2xpY2tMaXN0ZW5lcikge1xuICAgICAgdGhpcy5jbGlja0xpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZXZlbnRSZXNpemVMaXN0ZW5lcikge1xuICAgICAgdGhpcy5ldmVudFJlc2l6ZUxpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwsIHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDYWxlbmRhclBvc2l0aW9uKCkge1xuICAgIHRoaXMuY29udHJvbFBvc2l0aW9uLnNldEVsZW1lbnRzKFxuICAgICAgdGhpcy5jYWxlbmRhclBpY2tlci5uYXRpdmVFbGVtZW50LFxuICAgICAgcG9DYWxlbmRhckNvbnRlbnRPZmZzZXQsXG4gICAgICB0aGlzLmRhdGVSYW5nZUZpZWxkLFxuICAgICAgWydib3R0b20tbGVmdCcsICdib3R0b20tcmlnaHQnLCAndG9wLWxlZnQnLCAndG9wLXJpZ2h0J10sXG4gICAgICBmYWxzZSxcbiAgICAgIHRydWVcbiAgICApO1xuXG4gICAgdGhpcy5jb250cm9sUG9zaXRpb24uYWRqdXN0UG9zaXRpb24ocG9DYWxlbmRhclBvc2l0aW9uRGVmYXVsdCk7XG4gIH1cblxuICBwcml2YXRlIHNldEZvY3VzT25BcnJvd0xlZnQoa2V5Q29kZTogbnVtYmVyLCBpbnB1dE5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGlzQ3Vyc29yQXRTdGFydE9mSW5wdXQgPSB0aGlzLmVuZERhdGVJbnB1dC5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID09PSAwO1xuXG4gICAgaWYgKGlucHV0TmFtZSA9PT0gdGhpcy5lbmREYXRlSW5wdXROYW1lICYmIGlzQ3Vyc29yQXRTdGFydE9mSW5wdXQgJiYga2V5Q29kZSA9PT0gYXJyb3dMZWZ0S2V5KSB7XG4gICAgICBjb25zdCBpbnB1dExlbmd0aCA9IHRoaXMuc3RhcnREYXRlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZS5sZW5ndGg7XG4gICAgICB0aGlzLnNldEZvY3VzQW5kUG9zaXRpb24oaW5wdXRMZW5ndGgsIHRoaXMuc3RhcnREYXRlSW5wdXQsIGlucHV0TGVuZ3RoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEZvY3VzT25BcnJvd1JpZ2h0KGtleUNvZGU6IG51bWJlciwgaW5wdXROYW1lOiBzdHJpbmcsIGlucHV0RWxlbWVudDogYW55KSB7XG4gICAgY29uc3QgaXNDdXJzb3JBdEVuZE9mSW5wdXQgPSB0aGlzLnN0YXJ0RGF0ZUlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT09IGlucHV0RWxlbWVudC52YWx1ZS5sZW5ndGg7XG5cbiAgICBpZiAoaW5wdXROYW1lID09PSB0aGlzLnN0YXJ0RGF0ZUlucHV0TmFtZSAmJiBpc0N1cnNvckF0RW5kT2ZJbnB1dCAmJiBrZXlDb2RlID09PSBhcnJvd1JpZ2h0S2V5KSB7XG4gICAgICB0aGlzLnNldEZvY3VzQW5kUG9zaXRpb24oMCwgdGhpcy5lbmREYXRlSW5wdXQsIDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0Rm9jdXNPbkJhY2tzcGFjZSgpIHtcbiAgICBjb25zdCBpbnB1dExlbmd0aCA9IHRoaXMuc3RhcnREYXRlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZS5sZW5ndGg7XG5cbiAgICB0aGlzLnN0YXJ0RGF0ZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLnN0YXJ0RGF0ZUlucHV0VmFsdWUuc2xpY2UoMCwgLTEpO1xuICAgIHRoaXMuc2V0Rm9jdXNBbmRQb3NpdGlvbihpbnB1dExlbmd0aCwgdGhpcy5zdGFydERhdGVJbnB1dCwgaW5wdXRMZW5ndGgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRGb2N1c09uU3RhcnREYXRlQ29tcGxldGVkKGtleUNvZGU6IG51bWJlciwgaW5wdXROYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpc0xhc3RLZXlQcmVzc2VkID0gdGhpcy5zdGFydERhdGVJbnB1dC5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID09PSBwb0RhdGVwaWNrZXJSYW5nZURhdGVMZW5ndGhEZWZhdWx0O1xuICAgIGNvbnN0IGlzTmV3RGF0ZUNvbXBsZXRlZCA9XG4gICAgICB0aGlzLnN0YXJ0RGF0ZUlucHV0VmFsdWUubGVuZ3RoID09PSBwb0RhdGVwaWNrZXJSYW5nZURhdGVMZW5ndGhEZWZhdWx0ICYmIGlzTGFzdEtleVByZXNzZWQ7XG4gICAgY29uc3QgaXNWYWxpZEtleSA9IFBvRGF0ZXBpY2tlclJhbmdlQ29tcG9uZW50LmlzVmFsaWRLZXkoa2V5Q29kZSk7XG5cbiAgICBpZiAoaW5wdXROYW1lID09PSB0aGlzLnN0YXJ0RGF0ZUlucHV0TmFtZSAmJiBpc05ld0RhdGVDb21wbGV0ZWQgJiYgaXNWYWxpZEtleSkge1xuICAgICAgdGhpcy5zZXRGb2N1c0FuZFBvc2l0aW9uKDAsIHRoaXMuZW5kRGF0ZUlucHV0LCAwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU1vZGVsV2hlbkNvbXBsZXRlKGlzU3RhcnREYXRlVGFyZ2V0RXZlbnQ6IGJvb2xlYW4sIHN0YXJ0RGF0ZSwgZW5kRGF0ZSkge1xuICAgIGNvbnN0IGVuZERhdGVGb3JtYXR0ZWQgPSB0aGlzLmZvcm1hdFNjcmVlblRvTW9kZWwoZW5kRGF0ZSk7XG4gICAgY29uc3Qgc3RhcnREYXRlRm9ybWF0dGVkID0gdGhpcy5mb3JtYXRTY3JlZW5Ub01vZGVsKHN0YXJ0RGF0ZSk7XG4gICAgY29uc3QgZGF0ZUZvcm1hdFZhbGlkYXRpb24gPSB0aGlzLmdldERhdGVSYW5nZUZvcm1hdFZhbGlkYXRpb24oXG4gICAgICBzdGFydERhdGVGb3JtYXR0ZWQsXG4gICAgICBlbmREYXRlRm9ybWF0dGVkLFxuICAgICAgaXNTdGFydERhdGVUYXJnZXRFdmVudFxuICAgICk7XG5cbiAgICBpZiAodGhpcy5pc0VxdWFsQmVmb3JlVmFsdWUoc3RhcnREYXRlRm9ybWF0dGVkLCBlbmREYXRlRm9ybWF0dGVkKSkge1xuICAgICAgdGhpcy5yZXNldERhdGVSYW5nZUlucHV0VmFsaWRhdGlvbigpO1xuICAgICAgdGhpcy52YWxpZGF0ZU1vZGVsKHRoaXMuZGF0ZVJhbmdlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZGF0ZUZvcm1hdFZhbGlkYXRpb24uaXNWYWxpZCkge1xuICAgICAgdGhpcy5kYXRlUmFuZ2UgPSB7IHN0YXJ0OiBzdGFydERhdGVGb3JtYXR0ZWQsIGVuZDogZW5kRGF0ZUZvcm1hdHRlZCB9O1xuICAgICAgdGhpcy51cGRhdGVNb2RlbCh0aGlzLmRhdGVSYW5nZSk7XG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoeyAuLi50aGlzLmRhdGVSYW5nZSB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU1vZGVsQnlTY3JlZW4oaXNTdGFydERhdGVUYXJnZXRFdmVudDogYm9vbGVhbiwgc3RhcnREYXRlPywgZW5kRGF0ZT8pIHtcbiAgICBjb25zdCBlbmREYXRlRm9ybWF0dGVkID0gZW5kRGF0ZSB8fCB0aGlzLmZvcm1hdFNjcmVlblRvTW9kZWwodGhpcy5lbmREYXRlSW5wdXRWYWx1ZSk7XG4gICAgY29uc3Qgc3RhcnREYXRlRm9ybWF0dGVkID0gc3RhcnREYXRlIHx8IHRoaXMuZm9ybWF0U2NyZWVuVG9Nb2RlbCh0aGlzLnN0YXJ0RGF0ZUlucHV0VmFsdWUpO1xuICAgIGlmICh0aGlzLmlzRGF0ZVJhbmdlSW5wdXRVbmNvbXBsZXRlZCAmJiB0aGlzLmlzRGlydHlEYXRlUmFuZ2VJbnB1dCkge1xuICAgICAgdGhpcy51cGRhdGVNb2RlbCh0aGlzLmRhdGVSYW5nZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNFcXVhbEJlZm9yZVZhbHVlKHN0YXJ0RGF0ZUZvcm1hdHRlZCwgZW5kRGF0ZUZvcm1hdHRlZCkpIHtcbiAgICAgIHRoaXMucmVzZXREYXRlUmFuZ2VJbnB1dFZhbGlkYXRpb24oKTtcbiAgICAgIHRoaXMudmFsaWRhdGVNb2RlbCh0aGlzLmRhdGVSYW5nZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGF0ZUZvcm1hdFZhbGlkYXRpb24gPSB0aGlzLmdldERhdGVSYW5nZUZvcm1hdFZhbGlkYXRpb24oXG4gICAgICBzdGFydERhdGVGb3JtYXR0ZWQsXG4gICAgICBlbmREYXRlRm9ybWF0dGVkLFxuICAgICAgaXNTdGFydERhdGVUYXJnZXRFdmVudFxuICAgICk7XG5cbiAgICBpZiAoZGF0ZUZvcm1hdFZhbGlkYXRpb24uaXNWYWxpZCkge1xuICAgICAgdGhpcy5kYXRlUmFuZ2UgPSB7IHN0YXJ0OiBzdGFydERhdGVGb3JtYXR0ZWQsIGVuZDogZW5kRGF0ZUZvcm1hdHRlZCB9O1xuICAgICAgdGhpcy51cGRhdGVNb2RlbCh0aGlzLmRhdGVSYW5nZSk7XG4gICAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoeyAuLi50aGlzLmRhdGVSYW5nZSB9KTtcbiAgICB9XG5cbiAgICBpZiAoIWRhdGVGb3JtYXRWYWxpZGF0aW9uLmlzVmFsaWQgJiYgdGhpcy52ZXJpZnlGb3JtYXR0ZWREYXRlcyhzdGFydERhdGVGb3JtYXR0ZWQsIGVuZERhdGVGb3JtYXR0ZWQpKSB7XG4gICAgICB0aGlzLmRhdGVSYW5nZSA9IHsgLi4uZGF0ZUZvcm1hdFZhbGlkYXRpb24uZGF0ZVJhbmdlTW9kZWwgfTtcbiAgICAgIHRoaXMudXBkYXRlTW9kZWwoZGF0ZUZvcm1hdFZhbGlkYXRpb24uZGF0ZVJhbmdlTW9kZWwpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmVyaWZ5Rm9ybWF0dGVkRGF0ZXMoc3RhcnQ6IHN0cmluZywgZW5kOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFzdGFydCB8fCAhIWVuZDtcbiAgfVxuXG4gIHByaXZhdGUgd2FzQ2xpY2tlZE9uUGlja2VyKGV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzQ2FsZW5kYXJWaXNpYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgIXRoaXMuY2FsZW5kYXJQaWNrZXIubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpICYmXG4gICAgICAhdGhpcy5pY29uQ2FsZW5kYXIubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpICYmXG4gICAgICAhdGhpcy5oYXNBdHRyQ2FsZW5kYXIoZXZlbnQudGFyZ2V0KVxuICAgICkge1xuICAgICAgdGhpcy5pc0NhbGVuZGFyVmlzaWJsZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,19 +1,27 @@
|
|
|
1
1
|
export const poDatepickerRangeLiteralsDefault = {
|
|
2
2
|
en: {
|
|
3
3
|
invalidFormat: 'Date in invalid format',
|
|
4
|
-
startDateGreaterThanEndDate: 'Start date greater than end date'
|
|
4
|
+
startDateGreaterThanEndDate: 'Start date greater than end date',
|
|
5
|
+
invalidDate: 'Invalid date',
|
|
6
|
+
dateOutOfPeriod: 'Date out of period'
|
|
5
7
|
},
|
|
6
8
|
es: {
|
|
7
9
|
invalidFormat: 'Fecha en formato no válido',
|
|
8
|
-
startDateGreaterThanEndDate: 'Fecha de inicio mayor que fecha final'
|
|
10
|
+
startDateGreaterThanEndDate: 'Fecha de inicio mayor que fecha final',
|
|
11
|
+
invalidDate: 'Fecha invalida',
|
|
12
|
+
dateOutOfPeriod: 'Fecha fuera de período'
|
|
9
13
|
},
|
|
10
14
|
pt: {
|
|
11
15
|
invalidFormat: 'Data no formato inválido',
|
|
12
|
-
startDateGreaterThanEndDate: 'Data inicial maior que data final'
|
|
16
|
+
startDateGreaterThanEndDate: 'Data inicial maior que data final',
|
|
17
|
+
invalidDate: 'Data inválida',
|
|
18
|
+
dateOutOfPeriod: 'Data fora do período'
|
|
13
19
|
},
|
|
14
20
|
ru: {
|
|
15
21
|
invalidFormat: 'Дата в неверном формате',
|
|
16
|
-
startDateGreaterThanEndDate: 'Дата начала больше даты окончания'
|
|
22
|
+
startDateGreaterThanEndDate: 'Дата начала больше даты окончания',
|
|
23
|
+
invalidDate: 'Недействительная дата',
|
|
24
|
+
dateOutOfPeriod: 'дата вне периода'
|
|
17
25
|
}
|
|
18
26
|
};
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZGF0ZXBpY2tlci1yYW5nZS5saXRlcmFscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1kYXRlcGlja2VyLXJhbmdlL3BvLWRhdGVwaWNrZXItcmFuZ2UubGl0ZXJhbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUc7SUFDOUMsRUFBRSxFQUE2QjtRQUM3QixhQUFhLEVBQUUsd0JBQXdCO1FBQ3ZDLDJCQUEyQixFQUFFLGtDQUFrQztRQUMvRCxXQUFXLEVBQUUsY0FBYztRQUMzQixlQUFlLEVBQUUsb0JBQW9CO0tBQ3RDO0lBQ0QsRUFBRSxFQUE2QjtRQUM3QixhQUFhLEVBQUUsNEJBQTRCO1FBQzNDLDJCQUEyQixFQUFFLHVDQUF1QztRQUNwRSxXQUFXLEVBQUUsZ0JBQWdCO1FBQzdCLGVBQWUsRUFBRSx3QkFBd0I7S0FDMUM7SUFDRCxFQUFFLEVBQTZCO1FBQzdCLGFBQWEsRUFBRSwwQkFBMEI7UUFDekMsMkJBQTJCLEVBQUUsbUNBQW1DO1FBQ2hFLFdBQVcsRUFBRSxlQUFlO1FBQzVCLGVBQWUsRUFBRSxzQkFBc0I7S0FDeEM7SUFDRCxFQUFFLEVBQTZCO1FBQzdCLGFBQWEsRUFBRSx5QkFBeUI7UUFDeEMsMkJBQTJCLEVBQUUsbUNBQW1DO1FBQ2hFLFdBQVcsRUFBRSx1QkFBdUI7UUFDcEMsZUFBZSxFQUFFLGtCQUFrQjtLQUNwQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb0RhdGVwaWNrZXJSYW5nZUxpdGVyYWxzIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLWRhdGVwaWNrZXItcmFuZ2UtbGl0ZXJhbHMuaW50ZXJmYWNlJztcblxuZXhwb3J0IGNvbnN0IHBvRGF0ZXBpY2tlclJhbmdlTGl0ZXJhbHNEZWZhdWx0ID0ge1xuICBlbjogPFBvRGF0ZXBpY2tlclJhbmdlTGl0ZXJhbHM+e1xuICAgIGludmFsaWRGb3JtYXQ6ICdEYXRlIGluIGludmFsaWQgZm9ybWF0JyxcbiAgICBzdGFydERhdGVHcmVhdGVyVGhhbkVuZERhdGU6ICdTdGFydCBkYXRlIGdyZWF0ZXIgdGhhbiBlbmQgZGF0ZScsXG4gICAgaW52YWxpZERhdGU6ICdJbnZhbGlkIGRhdGUnLFxuICAgIGRhdGVPdXRPZlBlcmlvZDogJ0RhdGUgb3V0IG9mIHBlcmlvZCdcbiAgfSxcbiAgZXM6IDxQb0RhdGVwaWNrZXJSYW5nZUxpdGVyYWxzPntcbiAgICBpbnZhbGlkRm9ybWF0OiAnRmVjaGEgZW4gZm9ybWF0byBubyB2w6FsaWRvJyxcbiAgICBzdGFydERhdGVHcmVhdGVyVGhhbkVuZERhdGU6ICdGZWNoYSBkZSBpbmljaW8gbWF5b3IgcXVlIGZlY2hhIGZpbmFsJyxcbiAgICBpbnZhbGlkRGF0ZTogJ0ZlY2hhIGludmFsaWRhJyxcbiAgICBkYXRlT3V0T2ZQZXJpb2Q6ICdGZWNoYSBmdWVyYSBkZSBwZXLDrW9kbydcbiAgfSxcbiAgcHQ6IDxQb0RhdGVwaWNrZXJSYW5nZUxpdGVyYWxzPntcbiAgICBpbnZhbGlkRm9ybWF0OiAnRGF0YSBubyBmb3JtYXRvIGludsOhbGlkbycsXG4gICAgc3RhcnREYXRlR3JlYXRlclRoYW5FbmREYXRlOiAnRGF0YSBpbmljaWFsIG1haW9yIHF1ZSBkYXRhIGZpbmFsJyxcbiAgICBpbnZhbGlkRGF0ZTogJ0RhdGEgaW52w6FsaWRhJyxcbiAgICBkYXRlT3V0T2ZQZXJpb2Q6ICdEYXRhIGZvcmEgZG8gcGVyw61vZG8nXG4gIH0sXG4gIHJ1OiA8UG9EYXRlcGlja2VyUmFuZ2VMaXRlcmFscz57XG4gICAgaW52YWxpZEZvcm1hdDogJ9CU0LDRgtCwINCyINC90LXQstC10YDQvdC+0Lwg0YTQvtGA0LzQsNGC0LUnLFxuICAgIHN0YXJ0RGF0ZUdyZWF0ZXJUaGFuRW5kRGF0ZTogJ9CU0LDRgtCwINC90LDRh9Cw0LvQsCDQsdC+0LvRjNGI0LUg0LTQsNGC0Ysg0L7QutC+0L3Rh9Cw0L3QuNGPJyxcbiAgICBpbnZhbGlkRGF0ZTogJ9Cd0LXQtNC10LnRgdGC0LLQuNGC0LXQu9GM0L3QsNGPINC00LDRgtCwJyxcbiAgICBkYXRlT3V0T2ZQZXJpb2Q6ICfQtNCw0YLQsCDQstC90LUg0L/QtdGA0LjQvtC00LAnXG4gIH1cbn07XG4iXX0=
|